/* ================================================================
   TOUR TANGO INTERACTIVE PROPOSAL — Brand Style Guide v2026
   Palette: White (75%) + Dark #091413 (75%) + Red #F50000 (50%)
   + accents (sky/lavender/yellow/mint/steel)
   Typography: Plus Jakarta Sans (Title Bold, Body Medium, Action Semibold)
   ================================================================ */

:root {
    /* Phase 73 G3 — declare which colour schemes the page
       supports so browsers adjust native form controls,
       scrollbars, and form-submit colour. We're light-only
       intentionally (the brand is light-surface heavy). */
    color-scheme: light;

    /* Primary surfaces (Bold default) */
    --tvq-bg: #ffffff;
    --tvq-bg-soft: #fafafa;
    --tvq-bg-tint: #FFEBEB;

    /* Ink (Tour Tango near-black + grey ramp) */
    --tvq-ink: #091413;
    --tvq-ink-soft: #3d4a49;
    --tvq-ink-mute: #6e7878;
    --tvq-line: rgba(9, 20, 19, 0.08);
    --tvq-line-strong: rgba(9, 20, 19, 0.16);

    /* Brand accent — Tour Tango red */
    --tvq-accent: #F50000;
    --tvq-accent-dark: #B90000;
    --tvq-accent-deep: #990002;
    --tvq-accent-soft: #FFEBEB;

    /* Phase UX v36 — font tokens. Themes override via body.tvq-theme-X */
    --tvq-font-display: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, sans-serif;
    --tvq-font-body: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, sans-serif;
    --tvq-display-weight: 800;
    --tvq-display-italic-color: var(--tvq-accent-deep);

    /* Secondary accents (Color Palette 2.0) */
    --tvq-sky: #31C5FF;
    --tvq-lavender: #DBBBF5;
    --tvq-yellow: #FFF05A;
    --tvq-mint: #8EF9F3;
    --tvq-steel: #ADCAD6;

    /* Semantic */
    --tvq-success: #10b981;
    --tvq-danger: #F50000;
    --tvq-warning: #f59e0b;
    --tvq-card: #ffffff;

    /* Shadows tuned to neutral ink */
    --tvq-shadow-sm: 0 1px 2px rgba(9, 20, 19, 0.04), 0 1px 1px rgba(9, 20, 19, 0.06);
    --tvq-shadow-md: 0 4px 16px rgba(9, 20, 19, 0.06), 0 2px 6px rgba(9, 20, 19, 0.04);
    --tvq-shadow-lg: 0 20px 50px rgba(9, 20, 19, 0.10), 0 8px 16px rgba(9, 20, 19, 0.05);
    --tvq-shadow-red: 0 8px 24px rgba(245, 0, 0, 0.18), 0 2px 6px rgba(245, 0, 0, 0.10);

    --tvq-radius: 16px;
    --tvq-radius-sm: 10px;
    --tvq-radius-pill: 999px;
    --tvq-ease: cubic-bezier(0.22, 1, 0.36, 1);
}

* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html {
    scroll-behavior: smooth;
    -webkit-text-size-adjust: 100%;
}

body {
    font-family: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    font-size: 16px;
    line-height: 1.6;
    color: var(--tvq-ink);
    background: var(--tvq-bg);
    overflow-x: hidden;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    font-feature-settings: "ss01", "cv11";
}

h1, h2, h3, h4 {
    font-family: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    font-weight: 800;
    letter-spacing: -0.025em;
    color: var(--tvq-ink);
    line-height: 1.1;
}

a {
    color: inherit;
    text-decoration: none;
    transition: color 0.2s var(--tvq-ease);
}

img {
    max-width: 100%;
    display: block;
}

button {
    font-family: inherit;
    cursor: pointer;
    border: none;
    background: none;
    color: inherit;
}

/* ============ SCROLL REVEAL (intersection observer) ============ */
.reveal {
    opacity: 0;
    transform: translateY(32px);
    transition: opacity 0.9s var(--tvq-ease), transform 0.9s var(--tvq-ease);
}
.reveal.is-visible {
    opacity: 1;
    transform: translateY(0);
}

/* ================================================================
   NAV
   ================================================================ */
.tvq-nav {
    position: fixed;
    top: 18px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 100;
    display: flex;
    align-items: center;
    gap: 24px;
    padding: 10px 18px;
    background: rgba(255, 255, 255, 0.72);
    backdrop-filter: saturate(180%) blur(18px);
    -webkit-backdrop-filter: saturate(180%) blur(18px);
    border: 1px solid var(--tvq-line);
    border-radius: 999px;
    box-shadow: var(--tvq-shadow-md);
    max-width: calc(100vw - 28px);
}

.tvq-nav__brand {
    display: flex;
    align-items: center;
    gap: 8px;
    font-weight: 700;
    font-size: 0.92rem;
    white-space: nowrap;
    padding-right: 16px;
    border-right: 1px solid var(--tvq-line);
}
.tvq-nav__logo {
    color: var(--tvq-accent);
    font-size: 1.1rem;
}

.tvq-nav__links {
    display: flex;
    align-items: center;
    gap: 4px;
}
.tvq-nav__links a {
    padding: 8px 14px;
    font-size: 0.88rem;
    font-weight: 500;
    color: var(--tvq-ink-soft);
    border-radius: 999px;
    transition: all 0.2s var(--tvq-ease);
}
.tvq-nav__links a:hover {
    color: var(--tvq-ink);
    background: rgba(0, 0, 0, 0.04);
}
.tvq-nav__cta {
    background: var(--tvq-ink) !important;
    color: var(--tvq-bg) !important;
}
.tvq-nav__cta:hover {
    background: var(--tvq-accent-dark) !important;
}

@media (max-width: 820px) {
    .tvq-nav__brand { display: none; }
    .tvq-nav__links a { padding: 6px 10px; font-size: 0.8rem; }
    .tvq-nav { padding: 8px 10px; gap: 0; }
}

/* ================================================================
   HERO
   ================================================================ */
.tvq-hero {
    position: relative;
    min-height: 100vh;
    display: flex;
    align-items: center;
    padding: 120px 32px 80px;
    overflow: hidden;
    isolation: isolate;
}

.tvq-hero__bg {
    position: absolute;
    inset: 0;
    z-index: -2;
    background:
        radial-gradient(ellipse 80% 50% at 20% 10%, rgba(245, 0, 0, 0.06), transparent 60%),
        radial-gradient(ellipse 60% 40% at 85% 80%, rgba(49, 197, 255, 0.08), transparent 60%),
        linear-gradient(180deg, #ffffff 0%, #fafafa 50%, #ffffff 100%);
}

.tvq-hero__grain {
    position: absolute;
    inset: 0;
    z-index: -1;
    opacity: 0.4;
    mix-blend-mode: multiply;
    pointer-events: none;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/></filter><rect width='100%25' height='100%25' filter='url(%23n)' opacity='0.4'/></svg>");
}

.tvq-hero__content {
    max-width: 920px;
    width: 100%;
    margin: 0 auto;
}

.tvq-hero__eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 8px 16px;
    background: rgba(255, 255, 255, 0.7);
    border: 1px solid var(--tvq-line);
    border-radius: 999px;
    font-size: 0.85rem;
    font-weight: 500;
    color: var(--tvq-ink-soft);
    margin-bottom: 28px;
    backdrop-filter: blur(8px);
}

.tvq-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--tvq-accent);
    box-shadow: 0 0 0 4px rgba(245, 0, 0, 0.18);
    animation: tvq-pulse 2s ease-in-out infinite;
}
@keyframes tvq-pulse {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.4; }
}

.tvq-hero__title {
    font-size: clamp(2.5rem, 7vw, 5.5rem);
    line-height: 1.05;
    margin-bottom: 20px;
    background: linear-gradient(180deg, var(--tvq-ink) 0%, var(--tvq-ink-soft) 100%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    font-weight: 800;
}

.tvq-hero__sub {
    font-size: clamp(1rem, 2vw, 1.25rem);
    color: var(--tvq-ink-soft);
    font-weight: 400;
    margin-bottom: 40px;
    max-width: 620px;
}

.tvq-hero__meta {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
}

.tvq-meta-chip {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 14px 22px;
    background: var(--tvq-card);
    border: 1px solid var(--tvq-line);
    border-radius: 14px;
    box-shadow: var(--tvq-shadow-sm);
    min-width: 140px;
    transition: transform 0.3s var(--tvq-ease), box-shadow 0.3s var(--tvq-ease);
}
.tvq-meta-chip:hover {
    transform: translateY(-2px);
    box-shadow: var(--tvq-shadow-md);
}
.tvq-meta-chip__label {
    font-size: 0.72rem;
    color: var(--tvq-ink-mute);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-weight: 500;
}
.tvq-meta-chip__value {
    font-size: 1.05rem;
    font-weight: 600;
    color: var(--tvq-ink);
}
.tvq-meta-chip__value small {
    font-size: 0.75rem;
    color: var(--tvq-ink-mute);
    font-weight: 400;
    margin-left: 2px;
}

.tvq-hero__arrow {
    position: absolute;
    bottom: 40px;
    left: 50%;
    transform: translateX(-50%);
    color: var(--tvq-ink-mute);
    animation: tvq-bounce 2.4s ease-in-out infinite;
}
.tvq-hero__arrow a {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.8);
    border: 1px solid var(--tvq-line);
    backdrop-filter: blur(8px);
    transition: all 0.3s var(--tvq-ease);
}
.tvq-hero__arrow a:hover {
    color: var(--tvq-accent);
    transform: scale(1.1);
}
@keyframes tvq-bounce {
    0%, 100% { transform: translateX(-50%) translateY(0); }
    50% { transform: translateX(-50%) translateY(6px); }
}

/* ================================================================
   STATUS BANNER (for decided states)
   ================================================================ */
.tvq-status-banner {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 18px 32px;
    background: linear-gradient(90deg, var(--tvq-accent-soft), #fff, var(--tvq-accent-soft));
    color: var(--tvq-ink);
    font-size: 0.95rem;
    border-top: 1px solid var(--tvq-line);
    border-bottom: 1px solid var(--tvq-line);
}
.tvq-status-banner__icon {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--tvq-accent);
    color: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
}

/* ================================================================
   SECTION SHELL
   ================================================================ */
.tvq-section {
    padding: 100px 32px;
    max-width: 1180px;
    margin: 0 auto;
}

.tvq-section__head {
    text-align: center;
    max-width: 680px;
    margin: 0 auto 60px;
}

.tvq-section__kicker {
    display: inline-block;
    padding: 6px 14px;
    background: var(--tvq-accent-soft);
    color: var(--tvq-accent-dark);
    border-radius: 999px;
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    margin-bottom: 16px;
}

.tvq-section__title {
    font-size: clamp(2rem, 4vw, 3.2rem);
    margin-bottom: 14px;
}

.tvq-section__lead {
    color: var(--tvq-ink-soft);
    font-size: 1.05rem;
}

/* ================================================================
   JOURNEY TIMELINE
   ================================================================ */
.tvq-timeline {
    position: relative;
    padding-left: 0;
    /* v22 magazine layout: the timeline owns more horizontal space
       so day cards have room to breathe. Container size was capped
       at 920px upstream which made photos feel cramped. */
    max-width: 1180px;
    margin: 0 auto;
}
/* v22: vertical rail removed. With the new magazine alternating
   layout (image left/right) the rail no longer aligns to anything
   visually -- the day badges are now full-bleed on the photos.
   Kept the selector around as a no-op so old screenshots referencing
   the rule still have something to bind to. */
.tvq-timeline::before {
    content: none;
}

/* -- Day card layout v23 (magazine) ------------------------------------
   Past iterations stacked the carousel above body in a single column.
   v23 goes editorial: an alternating 2-column grid where odd-numbered
   days place the photo on the LEFT with text on the RIGHT, and even
   days swap (text left, photo right). On mobile it collapses to a
   single column so the layout never breaks below 780px.

   Photos are no longer constrained to 16/9 -- they breathe to their
   natural aspect, capped so portraits (Siq, Treasury) don't get
   letterbox-cropped. Each card sits in a generous chunk of vertical
   space (54px padding) for that magazine-feature feel.
*/
.tvq-day {
    display: grid;
    grid-template-columns: 1fr;       /* mobile: stacked */
    gap: 20px;
    padding: 32px 0;
    position: relative;
    transition: transform 0.35s var(--tvq-ease);
}
@media (min-width: 780px) {
    .tvq-day {
        grid-template-columns: 1.05fr 1fr;   /* tablet+: side-by-side */
        column-gap: 56px;
        row-gap: 0;
        padding: 54px 0;
        align-items: center;
    }
    /* Magazine: every OTHER day flips photo/text so the eye snakes
       down the page instead of locking on one side. nth-of-type(even)
       on the <article> reliably alternates regardless of XML order. */
    .tvq-day:nth-of-type(even) .tvq-day__carousel {
        grid-column: 2;
        grid-row: 1;
    }
    .tvq-day:nth-of-type(even) .tvq-day__body {
        grid-column: 1;
        grid-row: 1;
    }
}

/* Subtle lift on the whole day card when hovered. Picks up the
   existing :hover image-scale from .tvq-day__photo. */
.tvq-day:hover {
    transform: translateY(-3px);
}

.tvq-day__marker {
    flex-shrink: 0;
    width: 56px;
    height: 56px;
    background: var(--tvq-card);
    border: 2px solid var(--tvq-accent);
    border-radius: 50%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    color: var(--tvq-accent-dark);
    box-shadow: var(--tvq-shadow-sm);
    position: relative;
    z-index: 1;
}
@media (min-width: 780px) {
    .tvq-day__marker {
        width: 120px;
        height: auto;
        padding: 12px;
        border-radius: 16px;
    }
}
.tvq-day__num {
    font-size: 1.4rem;
    font-family: 'Fraunces', serif;
    line-height: 1;
}
.tvq-day__num::before {
    content: 'Day ';
    font-size: 0.55rem;
    font-family: 'Plus Jakarta Sans', 'Inter',  sans-serif;
    font-weight: 500;
    color: var(--tvq-ink-mute);
    text-transform: uppercase;
    letter-spacing: 0.1em;
    display: block;
}
.tvq-day__date {
    font-size: 0.7rem;
    color: var(--tvq-ink-mute);
    font-weight: 500;
    margin-top: 4px;
    display: none;
}
@media (min-width: 780px) {
    .tvq-day__date { display: block; }
}

.tvq-day__body {
    flex: 1;
    padding: 8px 0;
}

.tvq-day__title {
    /* v23 magazine: larger, with serif feel from Fraunces -- matches
       hotel-card titles upstream. Tracking tightens slightly at
       desktop sizes for that editorial feel. */
    font-size: 1.5rem;
    margin-bottom: 14px;
    color: var(--tvq-ink);
    font-family: 'Fraunces', 'Cormorant Garamond', Georgia, serif;
    font-weight: 600;
    letter-spacing: -0.005em;
    line-height: 1.18;
}
@media (min-width: 780px) {
    .tvq-day__title {
        font-size: 2rem;
        letter-spacing: -0.012em;
        margin-bottom: 16px;
    }
}

.tvq-day__desc {
    color: var(--tvq-ink-soft);
    line-height: 1.75;
    font-size: 0.98rem;
}
.tvq-day__desc p {
    margin-bottom: 0.8em;
}

.tvq-day__tags {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 16px;
}
.tvq-tag {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 12px;
    background: var(--tvq-bg-soft);
    border-radius: 999px;
    font-size: 0.8rem;
    font-weight: 500;
    color: var(--tvq-ink-soft);
}

/* ================================================================
   HOTELS GRID
   ================================================================ */
.tvq-hotel-group {
    margin-bottom: 60px;
}
.tvq-hotel-group__head {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 24px;
}
.tvq-hotel-group__head h3 {
    font-size: 1.6rem;
}

.tvq-badge {
    display: inline-block;
    padding: 4px 10px;
    font-size: 0.72rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    border-radius: 999px;
}
.tvq-badge--gold {
    background: var(--tvq-accent);
    color: #fff;
}

.tvq-hotel-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 24px;
}

.tvq-hotel {
    background: var(--tvq-card);
    border-radius: var(--tvq-radius);
    overflow: hidden;
    border: 1px solid var(--tvq-line);
    box-shadow: var(--tvq-shadow-sm);
    transition: transform 0.4s var(--tvq-ease), box-shadow 0.4s var(--tvq-ease);
    display: flex;
    flex-direction: column;
}
.tvq-hotel:hover {
    transform: translateY(-6px);
    box-shadow: var(--tvq-shadow-lg);
}

.tvq-hotel__image {
    position: relative;
    aspect-ratio: 16 / 10;
    background: linear-gradient(135deg, var(--tvq-accent-soft), var(--tvq-bg-soft));
    overflow: hidden;
}
.tvq-hotel__image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.6s var(--tvq-ease);
}
.tvq-hotel:hover .tvq-hotel__image img {
    transform: scale(1.05);
}
.tvq-hotel__placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    color: var(--tvq-accent-dark);
    opacity: 0.4;
}
.tvq-hotel__stars {
    position: absolute;
    top: 12px;
    right: 12px;
    padding: 6px 12px;
    background: rgba(255, 255, 255, 0.95);
    backdrop-filter: blur(4px);
    border-radius: 999px;
    font-size: 0.85rem;
    color: var(--tvq-accent);
    letter-spacing: 1px;
    box-shadow: var(--tvq-shadow-sm);
}

.tvq-hotel__body {
    padding: 20px 22px 24px;
    display: flex;
    flex-direction: column;
    flex: 1;
}

.tvq-hotel__name {
    font-size: 1.2rem;
    margin-bottom: 4px;
    font-family: 'Fraunces', serif;
    font-weight: 600;
}

.tvq-hotel__city {
    font-size: 0.85rem;
    color: var(--tvq-ink-mute);
    margin-bottom: 14px;
}

.tvq-hotel__meta {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: auto;
    margin-bottom: 12px;
}
.tvq-hotel__meta span {
    padding: 4px 10px;
    background: var(--tvq-bg-soft);
    border-radius: 6px;
    font-size: 0.75rem;
    font-weight: 500;
    color: var(--tvq-ink-soft);
}

.tvq-hotel__dates {
    font-size: 0.8rem;
    color: var(--tvq-ink-mute);
    padding-top: 12px;
    border-top: 1px dashed var(--tvq-line);
}

/* ================================================================
   MAP
   ================================================================ */
.tvq-map {
    border-radius: var(--tvq-radius);
    overflow: hidden;
    box-shadow: var(--tvq-shadow-lg);
    border: 1px solid var(--tvq-line);
    background: var(--tvq-bg-soft);
}
#tvq-map-canvas {
    height: 460px;
    width: 100%;
}
.leaflet-container {
    font-family: 'Plus Jakarta Sans', 'Inter',  sans-serif;
}
.tvq-pin {
    background: var(--tvq-accent);
    color: #fff;
    width: 32px;
    height: 32px;
    border-radius: 50% 50% 50% 0;
    transform: rotate(-45deg);
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25);
    border: 2px solid #fff;
}
.tvq-pin span {
    transform: rotate(45deg);
    font-size: 0.75rem;
}

/* ================================================================
   DETAILS (inclusions/exclusions)
   ================================================================ */
.tvq-details__grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 32px;
}
@media (min-width: 820px) {
    .tvq-details__grid { grid-template-columns: 1fr 1fr; }
}

.tvq-details__col {
    background: var(--tvq-card);
    border: 1px solid var(--tvq-line);
    border-radius: var(--tvq-radius);
    padding: 32px;
    box-shadow: var(--tvq-shadow-sm);
}

.tvq-details__title {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 1.2rem;
    margin-bottom: 18px;
    padding-bottom: 14px;
    border-bottom: 1px solid var(--tvq-line);
}
.tvq-details__icon {
    width: 26px;
    height: 26px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.85rem;
    font-weight: 700;
    color: #fff;
}
.tvq-details__title--inc .tvq-details__icon { background: var(--tvq-success); }
.tvq-details__title--exc .tvq-details__icon { background: var(--tvq-danger); }

.tvq-details__list {
    list-style: none;
}
.tvq-details__list li {
    padding: 10px 0 10px 24px;
    position: relative;
    color: var(--tvq-ink-soft);
    font-size: 0.95rem;
    line-height: 1.6;
    border-bottom: 1px dashed var(--tvq-line);
}
.tvq-details__list li:last-child { border-bottom: none; }
.tvq-details__list li::before {
    content: '';
    position: absolute;
    left: 0;
    top: 18px;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: var(--tvq-accent-soft);
    border: 2px solid var(--tvq-accent);
}
/* Per-column markers: green check for included, red cross for excluded —
   so the two lists read at a glance instead of identical dots. */
.tvq-details__list--inc li::before,
.tvq-details__list--exc li::before {
    content: '✓';
    top: 9px;
    left: 0;
    width: auto;
    height: auto;
    border: none;
    background: transparent;
    border-radius: 0;
    color: var(--tvq-success);
    font-weight: 700;
    font-size: 1rem;
    line-height: 1;
}
.tvq-details__list--exc li::before {
    content: '✕';
    color: var(--tvq-danger);
}
.tvq-details__list li p { margin: 0; }

/* ================================================================
   DECIDE (price + CTA)
   ================================================================ */
.tvq-decide {
    padding-bottom: 120px;
}

.tvq-decide__card {
    max-width: 680px;
    margin: 0 auto;
    background: linear-gradient(145deg, var(--tvq-ink) 0%, #1a2625 100%);
    color: #ffffff;
    border-radius: calc(var(--tvq-radius) + 8px);
    padding: 56px 48px;
    box-shadow: var(--tvq-shadow-lg);
    text-align: center;
    position: relative;
    overflow: hidden;
}
.tvq-decide__card::before {
    content: '';
    position: absolute;
    inset: 0;
    background: radial-gradient(ellipse 70% 50% at 50% 0%, rgba(245, 0, 0, 0.35), transparent 70%);
    pointer-events: none;
}
.tvq-decide__card > * { position: relative; }

.tvq-decide__price-label {
    display: block;
    font-size: 0.78rem;
    color: rgba(255, 255, 255, 0.55);
    text-transform: uppercase;
    letter-spacing: 0.12em;
    margin-bottom: 10px;
}
.tvq-decide__price-value {
    display: block;
    font-family: 'Fraunces', serif;
    font-size: clamp(2.8rem, 6vw, 4.2rem);
    font-weight: 700;
    line-height: 1;
    margin-bottom: 10px;
    background: linear-gradient(180deg, #fff 0%, var(--tvq-accent-soft) 100%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}
.tvq-decide__price-sub {
    display: block;
    font-size: 0.9rem;
    color: rgba(255, 255, 255, 0.6);
    margin-bottom: 40px;
}

.tvq-decide__actions {
    display: flex;
    flex-direction: column;
    gap: 12px;
    max-width: 420px;
    margin: 0 auto;
}

.tvq-btn {
    padding: 18px 32px;
    border-radius: 999px;
    font-size: 1rem;
    font-weight: 600;
    transition: transform 0.2s var(--tvq-ease), box-shadow 0.2s var(--tvq-ease), background 0.2s var(--tvq-ease);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    white-space: nowrap;
}
.tvq-btn--accept {
    background: var(--tvq-accent);
    color: #fff;
    box-shadow: 0 10px 30px rgba(245, 0, 0, 0.4);
}
.tvq-btn--accept:hover {
    background: var(--tvq-accent-dark);
    transform: translateY(-2px);
    box-shadow: 0 14px 40px rgba(245, 0, 0, 0.5);
}
.tvq-btn--accept:disabled {
    opacity: 0.6;
    cursor: wait;
}
.tvq-btn--decline {
    background: rgba(255, 255, 255, 0.08);
    color: #fff;
    border: 1px solid rgba(255, 255, 255, 0.2);
}
.tvq-btn--decline:hover {
    background: rgba(255, 255, 255, 0.14);
}
.tvq-btn--ghost {
    background: transparent;
    color: var(--tvq-ink-soft);
    border: 1px solid var(--tvq-line);
}
.tvq-btn--ghost:hover {
    background: var(--tvq-bg-soft);
}

.tvq-decide__hint {
    font-size: 0.78rem;
    color: rgba(255, 255, 255, 0.5);
    margin-top: 18px;
}

.tvq-decided {
    padding: 20px;
    background: rgba(255, 255, 255, 0.08);
    border-radius: var(--tvq-radius);
    color: #fff;
}
.tvq-decided strong {
    display: block;
    font-size: 1.2rem;
    margin-bottom: 6px;
}
.tvq-decided p {
    font-size: 0.88rem;
    opacity: 0.75;
}

/* ================================================================
   FOOTER
   ================================================================ */
.tvq-footer {
    padding: 56px 32px 24px;
    border-top: 1px solid var(--tvq-line);
    background: var(--tvq-bg-soft);
    color: var(--tvq-ink-soft);
}
.tvq-footer__inner {
    max-width: 1180px;
    margin: 0 auto;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 20px;
    flex-wrap: wrap;
    font-size: 0.85rem;
    color: var(--tvq-ink-soft);
}
.tvq-footer__ref {
    font-family: 'Fraunces', serif;
    font-size: 0.9rem;
    color: var(--tvq-ink-mute);
}

/* Phase UX v32 — pro multi-column footer */
.tvq-footer__grid {
    max-width: 1180px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: 1.4fr 1fr 1fr;
    gap: 40px 56px;
    padding-bottom: 36px;
    border-bottom: 1px solid #ebe7e0;
}
@media (max-width: 760px) {
    .tvq-footer { padding: 40px 22px 20px; }
    .tvq-footer__grid {
        grid-template-columns: 1fr;
        gap: 28px;
    }
}
.tvq-footer__col-head {
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: #091413;
    font-weight: 700;
    margin: 0 0 14px;
}
.tvq-footer__company-name {
    display: block;
    color: #091413;
    font-size: 1.05rem;
    font-weight: 800;
    letter-spacing: -0.01em;
    margin-bottom: 10px;
}
.tvq-footer__address {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    margin: 0 0 16px;
    font-size: 0.86rem;
    line-height: 1.5;
    color: var(--tvq-ink-soft);
}
.tvq-footer__address svg {
    flex-shrink: 0;
    margin-top: 3px;
    color: #94a3b8;
}
.tvq-footer__trust {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-top: 6px;
    padding-top: 16px;
    border-top: 1px solid #ebe7e0;
}
.tvq-footer__trust-img {
    height: 24px;
    max-width: 70px;
    object-fit: contain;
    opacity: 0.7;
    transition: opacity 0.15s;
}
.tvq-footer__trust-img:hover { opacity: 1; }

.tvq-footer__list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.tvq-footer__list a {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: var(--tvq-ink-soft);
    text-decoration: none;
    font-size: 0.88rem;
    font-weight: 500;
    line-height: 1.4;
    transition: color 0.15s, gap 0.15s;
}
.tvq-footer__list a:hover {
    color: var(--tvq-accent-deep);
    gap: 10px;
}
.tvq-footer__list svg {
    flex-shrink: 0;
    color: #94a3b8;
    transition: color 0.15s;
}
.tvq-footer__list a:hover svg { color: var(--tvq-accent-deep); }
.tvq-footer__wa {
    color: #128c7e !important;
    font-weight: 600 !important;
}
.tvq-footer__wa svg { color: #25d366 !important; }
.tvq-footer__wa:hover { color: #075e54 !important; }

/* Bottom bar */
.tvq-footer__bottom {
    max-width: 1180px;
    margin: 0 auto;
    padding-top: 24px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 12px;
    font-size: 0.78rem;
    color: #94a3b8;
}
.tvq-footer__copy { font-weight: 500; }

/* ================================================================
   MODAL
   ================================================================ */
.tvq-modal {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    animation: tvq-fade-in 0.3s var(--tvq-ease);
}
/* Browser's [hidden] { display: none } has lower specificity than
   our .tvq-modal { display: flex }, so the `hidden` attribute on
   the modal root would otherwise have no effect. Override here. */
.tvq-modal[hidden] { display: none !important; }
@keyframes tvq-fade-in {
    from { opacity: 0; }
    to { opacity: 1; }
}

.tvq-modal__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(9, 20, 19, 0.6);
    backdrop-filter: blur(6px);
}

.tvq-modal__dialog {
    position: relative;
    background: var(--tvq-card);
    border-radius: var(--tvq-radius);
    padding: 36px 36px 32px;
    max-width: 480px;
    width: 100%;
    box-shadow: var(--tvq-shadow-lg);
    animation: tvq-slide-up 0.4s var(--tvq-ease);
}
@keyframes tvq-slide-up {
    from { opacity: 0; transform: translateY(20px); }
    to { opacity: 1; transform: translateY(0); }
}

.tvq-modal__dialog h3 {
    font-size: 1.5rem;
    margin-bottom: 10px;
}
.tvq-modal__dialog p {
    color: var(--tvq-ink-soft);
    font-size: 0.92rem;
    margin-bottom: 20px;
}

#tvq-modal-note {
    width: 100%;
    padding: 14px 16px;
    border: 1px solid var(--tvq-line);
    border-radius: var(--tvq-radius-sm);
    font-family: inherit;
    font-size: 0.95rem;
    color: var(--tvq-ink);
    resize: vertical;
    background: var(--tvq-bg);
    transition: border-color 0.2s var(--tvq-ease), background 0.2s var(--tvq-ease);
}
#tvq-modal-note:focus {
    outline: none;
    border-color: var(--tvq-accent);
    background: #fff;
}

.tvq-modal__actions {
    display: flex;
    gap: 12px;
    margin-top: 24px;
    justify-content: flex-end;
}
.tvq-modal__actions .tvq-btn {
    padding: 12px 24px;
    font-size: 0.9rem;
}
/* The `.tvq-btn--decline` base style is white-on-dark (designed for
   the dark decision card). Inside the modal's white dialog it would
   be invisible (white text on white bg), so override it here to
   render as a solid dark button instead. */
.tvq-modal .tvq-btn--decline {
    background: var(--tvq-ink);
    color: #fff;
    border: none;
    box-shadow: 0 8px 24px rgba(9, 20, 19, 0.18);
}
.tvq-modal .tvq-btn--decline:hover {
    background: #000;
    transform: translateY(-1px);
}

.tvq-modal__msg {
    margin-top: 16px;
    padding: 12px 16px;
    border-radius: var(--tvq-radius-sm);
    font-size: 0.88rem;
    text-align: center;
}
.tvq-modal__msg.ok {
    background: #e8f5ee;
    color: var(--tvq-success);
}
.tvq-modal__msg.err {
    background: #fbeae7;
    color: var(--tvq-danger);
}

/* ================================================================
   404 PAGE
   ================================================================ */
.tvq-404-body {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 100vh;
    padding: 32px;
    background:
        radial-gradient(ellipse 60% 40% at 50% 20%, var(--tvq-accent-soft), transparent 60%),
        var(--tvq-bg);
    text-align: center;
}
.tvq-404 {
    max-width: 480px;
}
.tvq-404__num {
    font-family: 'Fraunces', serif;
    font-size: clamp(6rem, 20vw, 10rem);
    font-weight: 700;
    line-height: 1;
    color: var(--tvq-accent);
    opacity: 0.4;
    margin-bottom: 20px;
}
.tvq-404 h1 {
    font-size: 1.8rem;
    margin-bottom: 12px;
}
.tvq-404 p {
    color: var(--tvq-ink-soft);
    line-height: 1.6;
}

/* ================================================================
   MOBILE TUNING
   ================================================================ */
@media (max-width: 640px) {
    .tvq-section { padding: 60px 20px; }
    .tvq-hero { padding: 100px 20px 60px; }
    .tvq-hero__meta { flex-direction: column; align-items: stretch; }
    .tvq-meta-chip { min-width: 0; }
    .tvq-decide__card { padding: 40px 24px; }
    .tvq-day { padding: 20px 0; }
    .tvq-day__marker { width: 48px; height: 48px; }
    .tvq-day__num { font-size: 1.1rem; }
    .tvq-details__col { padding: 24px; }
}

/* ============================================================
   HERO ACTIONS (Download PDF button on dark hero background)
   ============================================================ */
.tvq-hero__actions {
    margin-top: 28px;
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    justify-content: center;
}
.tvq-btn--ghost-light {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 12px 22px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.12);
    color: #fff;
    border: 1px solid rgba(255, 255, 255, 0.28);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    text-decoration: none;
    font-weight: 600;
    font-size: 0.95rem;
    letter-spacing: 0.01em;
    cursor: pointer;
    transition: background 0.25s ease, border-color 0.25s ease, transform 0.2s ease;
}
.tvq-btn--ghost-light:hover {
    background: rgba(255, 255, 255, 0.22);
    border-color: rgba(255, 255, 255, 0.5);
    transform: translateY(-1px);
    color: #fff;
    text-decoration: none;
}
.tvq-btn--ghost-light svg { flex-shrink: 0; }

/* ================================================================
   OPTION TABS (multi-option selector)
   ================================================================ */
.tvq-option-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 36px;
    padding: 6px;
    background: var(--tvq-card);
    border: 1px solid var(--tvq-line);
    border-radius: 16px;
    box-shadow: var(--tvq-shadow-sm);
}

.tvq-option-tab {
    flex: 1;
    min-width: 160px;
    padding: 16px 20px;
    border-radius: 12px;
    background: transparent;
    border: 2px solid transparent;
    text-align: left;
    transition: all 0.3s var(--tvq-ease);
    display: flex;
    flex-direction: column;
    gap: 4px;
    position: relative;
}
.tvq-option-tab:hover {
    background: var(--tvq-bg-soft);
}
.tvq-option-tab--active {
    background: var(--tvq-accent-soft);
    border-color: var(--tvq-accent);
    box-shadow: var(--tvq-shadow-sm);
}
.tvq-option-tab__name {
    font-family: 'Fraunces', serif;
    font-size: 1.05rem;
    font-weight: 600;
    color: var(--tvq-ink);
}
.tvq-option-tab__meta {
    font-size: 0.78rem;
    color: var(--tvq-ink-mute);
}
.tvq-option-tab .tvq-badge {
    position: absolute;
    top: 8px;
    right: 8px;
    font-size: 0.6rem;
    padding: 2px 8px;
}
.tvq-badge--green {
    background: var(--tvq-success);
    color: #fff;
}

@media (max-width: 640px) {
    .tvq-option-tabs { flex-direction: column; }
    .tvq-option-tab { min-width: 0; }
}

/* ================================================================
   OPTION SUMMARY BAR (per-option header)
   ================================================================ */
.tvq-option-summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 20px 24px;
    background: var(--tvq-card);
    border: 1px solid var(--tvq-line);
    border-radius: var(--tvq-radius);
    margin-bottom: 24px;
    box-shadow: var(--tvq-shadow-sm);
}
.tvq-option-summary__info {
    display: flex;
    align-items: center;
    gap: 12px;
}
.tvq-option-summary__info h3 {
    font-size: 1.3rem;
    margin: 0;
}
.tvq-option-summary__price {
    text-align: right;
}
.tvq-option-summary__amount {
    font-family: 'Fraunces', serif;
    font-size: 1.4rem;
    font-weight: 700;
    color: var(--tvq-accent-dark);
}
.tvq-option-summary__label {
    display: block;
    font-size: 0.75rem;
    color: var(--tvq-ink-mute);
    text-transform: uppercase;
    letter-spacing: 0.06em;
}

@media (max-width: 640px) {
    .tvq-option-summary {
        flex-direction: column;
        gap: 12px;
        align-items: flex-start;
    }
    .tvq-option-summary__price { text-align: left; }
}

/* ================================================================
   OPTION PANEL VISIBILITY
   ================================================================ */
.tvq-hotel-group--hidden {
    display: none;
}

/* ============================================================
   HOTEL CARD — clickable state + zoom overlay
   ============================================================ */
.tvq-hotel--clickable { cursor: zoom-in; }
.tvq-hotel--clickable:hover { transform: translateY(-4px); }
.tvq-hotel--clickable:hover .tvq-hotel__image img { transform: scale(1.06); }
.tvq-hotel--clickable:hover .tvq-hotel__zoom {
    opacity: 1;
    transform: scale(1);
}
.tvq-hotel__zoom {
    position: absolute;
    top: 12px;
    left: 12px;
    width: 36px;
    height: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: rgba(20, 20, 25, 0.7);
    color: #fff;
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    opacity: 0;
    transform: scale(0.85);
    transition: opacity 0.25s ease, transform 0.25s ease;
    pointer-events: none;
    z-index: 2;
}

/* ============================================================
   LIGHTBOX (fullscreen hotel gallery)
   ============================================================ */
.tvq-lightbox {
    position: fixed;
    inset: 0;
    z-index: 2000;
    display: flex;
    align-items: center;
    justify-content: center;
    animation: tvqLightboxIn 0.25s ease-out;
}
.tvq-lightbox[hidden] { display: none; }
@keyframes tvqLightboxIn {
    from { opacity: 0; }
    to { opacity: 1; }
}
.tvq-lightbox__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(8, 10, 15, 0.92);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    cursor: zoom-out;
}
.tvq-lightbox__stage {
    position: relative;
    width: min(92vw, 1400px);
    height: min(92vh, 900px);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    z-index: 1;
}
.tvq-lightbox__frame {
    flex: 1;
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 0;
    padding: 20px 64px;
}
.tvq-lightbox__img {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
    border-radius: 12px;
    box-shadow: 0 30px 90px rgba(0, 0, 0, 0.55);
    animation: tvqLightboxImgIn 0.35s ease-out;
}
@keyframes tvqLightboxImgIn {
    from { opacity: 0; transform: scale(0.97); }
    to { opacity: 1; transform: scale(1); }
}
.tvq-lightbox__close {
    position: absolute;
    top: 16px;
    right: 16px;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    border: 1px solid rgba(255, 255, 255, 0.25);
    background: rgba(255, 255, 255, 0.1);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: background 0.2s ease, transform 0.2s ease;
    z-index: 3;
}
.tvq-lightbox__close:hover {
    background: rgba(255, 255, 255, 0.2);
    transform: rotate(90deg);
}
.tvq-lightbox__nav {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 52px;
    height: 52px;
    border-radius: 50%;
    border: 1px solid rgba(255, 255, 255, 0.22);
    background: rgba(255, 255, 255, 0.08);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: background 0.2s ease, transform 0.2s ease;
    z-index: 3;
}
.tvq-lightbox__nav:hover {
    background: rgba(255, 255, 255, 0.2);
}
.tvq-lightbox__nav--prev { left: 8px; }
.tvq-lightbox__nav--next { right: 8px; }
.tvq-lightbox__nav--prev:hover { transform: translateY(-50%) translateX(-2px); }
.tvq-lightbox__nav--next:hover { transform: translateY(-50%) translateX(2px); }
.tvq-lightbox__nav[disabled] {
    opacity: 0.3;
    cursor: not-allowed;
    pointer-events: none;
}
.tvq-lightbox__caption {
    width: 100%;
    padding: 14px 24px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    color: #fff;
}
.tvq-lightbox__info h3 {
    margin: 0 0 4px;
    font-family: 'Fraunces', Georgia, serif;
    font-size: 1.4rem;
    font-weight: 600;
    letter-spacing: -0.01em;
}
.tvq-lightbox__info p {
    margin: 0;
    font-size: 0.9rem;
    color: rgba(255, 255, 255, 0.7);
}
.tvq-lightbox__counter {
    font-size: 0.85rem;
    color: rgba(255, 255, 255, 0.55);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

@media (max-width: 720px) {
    .tvq-lightbox__frame { padding: 16px 12px; }
    .tvq-lightbox__nav {
        width: 40px;
        height: 40px;
    }
    .tvq-lightbox__nav--prev { left: 4px; }
    .tvq-lightbox__nav--next { right: 4px; }
    .tvq-lightbox__caption {
        flex-direction: column;
        align-items: flex-start;
        gap: 4px;
        padding: 12px 16px;
    }
    .tvq-lightbox__info h3 { font-size: 1.15rem; }
}

/* Respect reduced motion */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: 0.01ms !important;
        transition-duration: 0.01ms !important;
    }
    .reveal { opacity: 1; transform: none; }
}

/* ================================================================
   TOUR TANGO v2 — additions: day stops, price breakdown, trust strip,
   footer rebrand. All new components follow the brand guide palette.
   ================================================================ */

/* ---- Day cards: subtitle + route + per-day stops ---- */
.tvq-day__subtitle {
    color: var(--tvq-ink-soft);
    font-size: 0.95rem;
    font-weight: 500;
    margin-top: 4px;
}
.tvq-day__route {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-top: 8px;
    padding: 4px 12px;
    background: var(--tvq-bg-tint);
    color: var(--tvq-accent-deep);
    border-radius: var(--tvq-radius-pill);
    font-size: 0.8rem;
    font-weight: 600;
    letter-spacing: 0.02em;
}
.tvq-day__stops {
    list-style: none;
    margin: 16px 0 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 6px;
    border-left: 2px solid var(--tvq-line-strong);
    padding-left: 16px;
}
.tvq-day__stop {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 6px 0;
    font-size: 0.92rem;
    color: var(--tvq-ink-soft);
    position: relative;
}
.tvq-day__stop::before {
    content: '';
    position: absolute;
    left: -22px;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--tvq-accent);
    border: 2px solid var(--tvq-bg);
    box-shadow: 0 0 0 1px var(--tvq-line-strong);
}
.tvq-day__stop--restaurant::before { background: var(--tvq-yellow); }
.tvq-day__stop--entrance::before { background: var(--tvq-sky); }
.tvq-day__stop--other::before { background: var(--tvq-lavender); }
.tvq-day__stop-icon {
    display: inline-flex;
    width: 24px;
    height: 24px;
    align-items: center;
    justify-content: center;
    border-radius: 6px;
    background: var(--tvq-bg-soft);
    color: var(--tvq-ink);
    flex-shrink: 0;
}
.tvq-day__stop-name {
    font-weight: 500;
    color: var(--tvq-ink);
}
.tvq-day__stop-meta {
    color: var(--tvq-ink-mute);
    font-size: 0.85rem;
}

/* ---- Pricing breakdown ---- */
.tvq-price {
    background: linear-gradient(180deg, var(--tvq-bg) 0%, var(--tvq-bg-soft) 100%);
}
.tvq-breakdown {
    max-width: 720px;
    margin: 0 auto;
    background: var(--tvq-card);
    border: 1px solid var(--tvq-line);
    border-radius: var(--tvq-radius);
    padding: 32px;
    box-shadow: var(--tvq-shadow-md);
}
.tvq-breakdown__row {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 8px 0;
    padding: 16px 0;
    border-bottom: 1px dashed var(--tvq-line);
}
.tvq-breakdown__row:last-child { border-bottom: none; }
.tvq-breakdown__head {
    grid-column: 1 / -1;
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin-bottom: 8px;
}
.tvq-breakdown__label {
    font-weight: 600;
    color: var(--tvq-ink);
    font-size: 0.95rem;
}
.tvq-breakdown__amount {
    font-weight: 700;
    font-size: 1rem;
    color: var(--tvq-ink);
    font-variant-numeric: tabular-nums;
}
.tvq-breakdown__bar {
    grid-column: 1;
    height: 8px;
    background: var(--tvq-bg-tint);
    border-radius: var(--tvq-radius-pill);
    overflow: hidden;
}
.tvq-breakdown__fill {
    height: 100%;
    background: linear-gradient(90deg, var(--tvq-accent) 0%, var(--tvq-accent-dark) 100%);
    border-radius: var(--tvq-radius-pill);
    transition: width 0.6s var(--tvq-ease);
}
.tvq-breakdown__row--hotel .tvq-breakdown__fill {
    background: linear-gradient(90deg, var(--tvq-sky) 0%, #1a9ed4 100%);
}
.tvq-breakdown__row--transport .tvq-breakdown__fill {
    background: linear-gradient(90deg, var(--tvq-lavender) 0%, #b88be0 100%);
}
.tvq-breakdown__row--restaurant .tvq-breakdown__fill {
    background: linear-gradient(90deg, var(--tvq-yellow) 0%, #e6c700 100%);
}
.tvq-breakdown__row--entrance .tvq-breakdown__fill {
    background: linear-gradient(90deg, var(--tvq-mint) 0%, #5dd4cd 100%);
}
.tvq-breakdown__row--guide .tvq-breakdown__fill {
    background: linear-gradient(90deg, var(--tvq-steel) 0%, #7a9ba8 100%);
}
.tvq-breakdown__pct {
    grid-column: 2;
    padding-left: 12px;
    align-self: center;
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--tvq-ink-mute);
    font-variant-numeric: tabular-nums;
    min-width: 40px;
    text-align: right;
}

/* ---- Trust strip ---- */
.tvq-trust {
    background: var(--tvq-ink);
    color: #fff;
    padding: 32px 16px;
}
.tvq-trust__inner {
    max-width: 980px;
    margin: 0 auto;
    display: flex;
    justify-content: space-around;
    align-items: center;
    gap: 24px;
    flex-wrap: wrap;
}
.tvq-trust__item {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    text-align: center;
}
.tvq-trust__num {
    font-size: 1.5rem;
    font-weight: 700;
    letter-spacing: -0.02em;
    color: #fff;
}
/* Phase UX v19 — explicit color modifiers on the claim headline.
   Replaces the old :nth-child(2) yellow rule which broke as soon as
   operators reordered or added claim items. */
.tvq-trust__num--default { color: #fff; }
.tvq-trust__num--yellow  { color: var(--tvq-yellow); letter-spacing: 0.1em; }
.tvq-trust__num--red     { color: var(--tt-red, #f50000); letter-spacing: 0.05em; }
.tvq-trust__num--green   { color: #4ade80; letter-spacing: 0.05em; }
.tvq-trust__num--cyan    { color: #22d3ee; letter-spacing: 0.05em; }
.tvq-trust__label {
    font-size: 0.78rem;
    color: rgba(255, 255, 255, 0.65);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-weight: 500;
}

/* ---- Footer rebrand: Tour Tango "Powered by" ---- */
.tvq-footer__company {
    display: flex;
    flex-direction: column;
    gap: 4px;
}
/* Phase UX v33 — polished platform attribution pill */
.tvq-footer__powered {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 6px 14px 6px 12px;
    background: #fff;
    border: 1px solid #ebe7e0;
    border-radius: 999px;
    text-decoration: none;
    transition: border-color 0.18s ease, transform 0.18s ease, box-shadow 0.18s ease;
}
.tvq-footer__powered:hover {
    border-color: var(--tvq-accent-deep);
    transform: translateY(-1px);
    box-shadow: 0 6px 14px rgba(153, 0, 2, 0.10);
}
.tvq-footer__powered-label {
    font-size: 0.66rem;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: #94a3b8;
    font-weight: 600;
    transition: color 0.18s ease;
}
.tvq-footer__powered:hover .tvq-footer__powered-label { color: #475569; }

.tvq-footer__brand {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 1rem;
    color: var(--tvq-accent-deep);
    line-height: 1;
}
.tvq-footer__brand-mark {
    color: var(--tvq-accent-deep);
    transition: transform 0.25s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.tvq-footer__powered:hover .tvq-footer__brand-mark {
    transform: rotate(-8deg) scale(1.08);
}
.tvq-footer__brand-word {
    font-weight: 800;
    letter-spacing: -0.04em;
    color: var(--tvq-accent-deep);
}
.tvq-footer__brand-arrow {
    opacity: 0.45;
    transition: opacity 0.18s ease, transform 0.18s ease;
}
.tvq-footer__powered:hover .tvq-footer__brand-arrow {
    opacity: 1;
    transform: translate(2px, -2px);
}
.tvq-footer__tagline {
    font-style: italic;
    color: var(--tvq-ink-mute);
    font-size: 0.82rem;
    max-width: 280px;
}
@media (max-width: 640px) {
    .tvq-footer__powered { align-items: flex-start; text-align: left; }
}

/* ================================================================
   TOUR TANGO v3 — hero photo, sticky consultant, custom CTAs,
   tax summary line. Trendy treatment: subtle motion, glassmorphism,
   gradient borders, pulse cues.
   ================================================================ */

/* ---- Hero with photo ---- */
.tvq-hero--with-photo {
    color: #ffffff;
}
.tvq-hero--with-photo .tvq-hero__bg {
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    filter: saturate(110%);
}
.tvq-hero__scrim {
    position: absolute;
    inset: 0;
    /* Tour Tango v23 — sit ABOVE the video/iframe (z=0) so it masks
       any YouTube/Vimeo player chrome (title overlays, watermark)
       that ignore modestbranding params. Hero content (relative-
       positioned by default within the flex parent) layers on top. */
    z-index: 1;
    background:
        linear-gradient(180deg,
            rgba(9, 20, 19, 0.45) 0%,
            rgba(9, 20, 19, 0.30) 30%,
            rgba(9, 20, 19, 0.55) 70%,
            rgba(9, 20, 19, 0.85) 100%),
        radial-gradient(ellipse 80% 50% at 20% 10%,
            rgba(245, 0, 0, 0.18), transparent 70%);
    pointer-events: none;
}
/* Lift the hero text above the scrim. */
.tvq-hero__content {
    position: relative;
    z-index: 2;
}
.tvq-hero--with-photo .tvq-hero__title {
    background: linear-gradient(180deg, #ffffff 0%, rgba(255, 255, 255, 0.85) 100%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    text-shadow: 0 4px 28px rgba(9, 20, 19, 0.4);
}
.tvq-hero--with-photo .tvq-hero__sub {
    color: rgba(255, 255, 255, 0.92);
}
.tvq-hero--with-photo .tvq-hero__eyebrow {
    background: rgba(255, 255, 255, 0.18);
    border-color: rgba(255, 255, 255, 0.28);
    color: #ffffff;
    backdrop-filter: blur(14px);
}
.tvq-hero--with-photo .tvq-meta-chip {
    background: rgba(255, 255, 255, 0.92);
    backdrop-filter: blur(14px);
}
.tvq-hero--with-photo .tvq-hero__arrow a {
    color: #ffffff;
    border-color: rgba(255, 255, 255, 0.4);
}
.tvq-hero--with-photo .tvq-btn--ghost-light {
    background: rgba(255, 255, 255, 0.18);
    border-color: rgba(255, 255, 255, 0.32);
    color: #ffffff;
    backdrop-filter: blur(14px);
}
.tvq-hero--with-photo .tvq-btn--ghost-light:hover {
    background: rgba(255, 255, 255, 0.28);
    border-color: rgba(255, 255, 255, 0.5);
}

/* ---- Custom CTA strip ---- */
.tvq-cta-strip {
    background: linear-gradient(180deg, var(--tvq-bg) 0%, var(--tvq-bg-soft) 100%);
}
.tvq-cta-grid {
    max-width: 920px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 14px;
}
.tvq-cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 16px 22px;
    border-radius: var(--tvq-radius);
    font-weight: 700;
    font-size: 0.98rem;
    letter-spacing: -0.01em;
    transition: transform 0.18s var(--tvq-ease),
                box-shadow 0.18s var(--tvq-ease),
                background 0.18s var(--tvq-ease);
    border: 1.5px solid transparent;
    position: relative;
    overflow: hidden;
}
.tvq-cta::before {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(120deg,
        transparent 0%,
        rgba(255, 255, 255, 0.18) 50%,
        transparent 100%);
    transform: translateX(-100%);
    transition: transform 0.6s var(--tvq-ease);
}
.tvq-cta:hover::before { transform: translateX(100%); }
.tvq-cta:hover { transform: translateY(-2px); }
.tvq-cta__icon {
    display: inline-flex;
    align-items: center;
    flex-shrink: 0;
}
.tvq-cta__label { position: relative; z-index: 1; }

.tvq-cta--primary {
    background: linear-gradient(135deg, var(--tvq-accent) 0%, var(--tvq-accent-dark) 100%);
    color: #ffffff;
    box-shadow: var(--tvq-shadow-red);
}
.tvq-cta--primary:hover {
    box-shadow: 0 14px 36px rgba(245, 0, 0, 0.32);
}
.tvq-cta--secondary {
    background: var(--tvq-card);
    color: var(--tvq-ink);
    border-color: var(--tvq-line-strong);
    box-shadow: var(--tvq-shadow-sm);
}
.tvq-cta--secondary:hover {
    border-color: var(--tvq-accent);
    color: var(--tvq-accent);
}
.tvq-cta--accent {
    background: linear-gradient(135deg, var(--tvq-sky) 0%, #1a9ed4 100%);
    color: #ffffff;
    box-shadow: 0 8px 24px rgba(49, 197, 255, 0.32);
}
.tvq-cta--lavender {
    background: linear-gradient(135deg, var(--tvq-lavender) 0%, #b88be0 100%);
    color: var(--tvq-ink);
    box-shadow: 0 8px 24px rgba(219, 187, 245, 0.4);
}
.tvq-cta--dark {
    background: linear-gradient(135deg, var(--tvq-ink) 0%, #1a2625 100%);
    color: #ffffff;
    box-shadow: var(--tvq-shadow-lg);
}

/* ---- VAT / tax summary line ---- */
.tvq-breakdown__tax {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: 12px;
    padding: 14px 16px;
    background: var(--tvq-bg-tint);
    border-radius: var(--tvq-radius-sm);
    font-size: 0.88rem;
    color: var(--tvq-accent-deep);
    font-weight: 600;
}
.tvq-breakdown__tax-label {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}
.tvq-breakdown__tax-amount {
    font-variant-numeric: tabular-nums;
    font-weight: 700;
    font-size: 0.95rem;
}

/* ---- Sticky My Consultant card ---- */
.tvq-consultant {
    position: fixed;
    bottom: 24px;
    right: 24px;
    z-index: 95;
    font-family: 'Plus Jakarta Sans', sans-serif;
}
.tvq-consultant__toggle {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    padding: 8px 16px 8px 8px;
    background: var(--tvq-card);
    border: 1px solid var(--tvq-line);
    border-radius: var(--tvq-radius-pill);
    box-shadow: var(--tvq-shadow-lg);
    color: var(--tvq-ink);
    font-family: inherit;
    font-weight: 600;
    cursor: pointer;
    transition: transform 0.18s var(--tvq-ease),
                box-shadow 0.18s var(--tvq-ease);
    position: relative;
}
.tvq-consultant__toggle::before {
    content: '';
    position: absolute;
    inset: -2px;
    border-radius: inherit;
    padding: 2px;
    background: linear-gradient(135deg, var(--tvq-accent) 0%, var(--tvq-sky) 100%);
    -webkit-mask:
        linear-gradient(#fff 0 0) content-box,
        linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
            mask-composite: exclude;
    opacity: 0;
    transition: opacity 0.25s var(--tvq-ease);
}
.tvq-consultant__toggle:hover {
    transform: translateY(-2px);
    box-shadow: 0 24px 48px rgba(9, 20, 19, 0.18);
}
.tvq-consultant__toggle:hover::before { opacity: 1; }
.tvq-consultant--open .tvq-consultant__toggle::before { opacity: 1; }

.tvq-consultant__avatar {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: var(--tvq-accent-soft);
    color: var(--tvq-accent);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    flex-shrink: 0;
    position: relative;
}
.tvq-consultant__avatar img {
    width: 100%; height: 100%; object-fit: cover;
}
.tvq-consultant__avatar--lg {
    width: 56px; height: 56px;
}
.tvq-consultant__pulse {
    position: absolute;
    bottom: 0; right: 0;
    width: 10px; height: 10px;
    border-radius: 50%;
    background: var(--tvq-success);
    border: 2px solid var(--tvq-card);
    box-shadow: 0 0 0 2px rgba(16, 185, 129, 0.32);
    animation: tvq-online-pulse 2.4s ease-in-out infinite;
}
@keyframes tvq-online-pulse {
    0%, 100% { box-shadow: 0 0 0 2px rgba(16, 185, 129, 0.32); }
    50% { box-shadow: 0 0 0 8px rgba(16, 185, 129, 0); }
}

.tvq-consultant__teaser {
    display: flex;
    flex-direction: column;
    line-height: 1.2;
    text-align: left;
}
.tvq-consultant__teaser-label {
    font-size: 0.7rem;
    color: var(--tvq-ink-mute);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-weight: 600;
}
.tvq-consultant__teaser-name {
    font-size: 0.92rem;
    color: var(--tvq-ink);
    font-weight: 700;
}
.tvq-consultant__chev {
    color: var(--tvq-ink-mute);
    transition: transform 0.25s var(--tvq-ease);
}
.tvq-consultant--open .tvq-consultant__chev {
    transform: rotate(180deg);
}

.tvq-consultant__menu {
    position: absolute;
    bottom: calc(100% + 12px);
    right: 0;
    min-width: 280px;
    background: var(--tvq-card);
    border: 1px solid var(--tvq-line);
    border-radius: var(--tvq-radius);
    box-shadow: 0 32px 60px rgba(9, 20, 19, 0.16);
    padding: 18px;
    transform-origin: bottom right;
    animation: tvq-pop 0.22s var(--tvq-ease);
}
@keyframes tvq-pop {
    from { opacity: 0; transform: translateY(8px) scale(0.96); }
    to { opacity: 1; transform: translateY(0) scale(1); }
}
.tvq-consultant__menu[hidden] { display: none; }

.tvq-consultant__head {
    display: flex;
    align-items: center;
    gap: 12px;
    padding-bottom: 14px;
    margin-bottom: 14px;
    border-bottom: 1px solid var(--tvq-line);
}
.tvq-consultant__info {
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.tvq-consultant__name {
    font-size: 1rem;
    color: var(--tvq-ink);
    letter-spacing: -0.01em;
}
.tvq-consultant__role {
    font-size: 0.78rem;
    color: var(--tvq-ink-mute);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-weight: 600;
}

.tvq-consultant__actions {
    display: grid;
    gap: 8px;
}
.tvq-consultant__btn {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 11px 14px;
    border-radius: var(--tvq-radius-sm);
    font-weight: 600;
    font-size: 0.9rem;
    transition: transform 0.15s var(--tvq-ease),
                background 0.15s var(--tvq-ease);
}
.tvq-consultant__btn:hover { transform: translateX(2px); }
.tvq-consultant__btn--whatsapp {
    background: #25D366;
    color: #ffffff;
}
.tvq-consultant__btn--whatsapp:hover { background: #1ebe5a; }
.tvq-consultant__btn--email {
    background: var(--tvq-bg-tint);
    color: var(--tvq-accent-deep);
}
.tvq-consultant__btn--email:hover { background: var(--tvq-accent-soft); }
.tvq-consultant__btn--phone {
    background: var(--tvq-bg-soft);
    color: var(--tvq-ink);
}
.tvq-consultant__btn--phone:hover { background: rgba(9, 20, 19, 0.06); }

@media (max-width: 640px) {
    .tvq-consultant {
        bottom: 14px;
        right: 14px;
        left: 14px;
    }
    .tvq-consultant__toggle {
        width: 100%;
        justify-content: flex-start;
    }
    .tvq-consultant__menu {
        right: 0;
        left: 0;
        min-width: 0;
    }
    .tvq-consultant__teaser-label {
        font-size: 0.66rem;
    }
}

/* ---- Mini mode: triggered when the footer is in viewport ---- */
.tvq-consultant--mini .tvq-consultant__toggle {
    padding: 6px;
    border-radius: 50%;
    gap: 0;
    width: 56px;
    height: 56px;
    justify-content: center;
}
.tvq-consultant--mini .tvq-consultant__teaser,
.tvq-consultant--mini .tvq-consultant__chev {
    width: 0;
    opacity: 0;
    overflow: hidden;
    transform: scale(0.8);
    transition: width 0.28s var(--tvq-ease),
                opacity 0.18s var(--tvq-ease),
                transform 0.28s var(--tvq-ease);
    pointer-events: none;
}
/* Default expanded state — animate FROM mini to full smoothly */
.tvq-consultant__teaser,
.tvq-consultant__chev {
    transition: width 0.28s var(--tvq-ease),
                opacity 0.28s var(--tvq-ease) 0.05s,
                transform 0.28s var(--tvq-ease);
    transform: scale(1);
}
.tvq-consultant__toggle {
    transition: padding 0.28s var(--tvq-ease),
                border-radius 0.28s var(--tvq-ease),
                width 0.28s var(--tvq-ease),
                height 0.28s var(--tvq-ease),
                box-shadow 0.18s var(--tvq-ease),
                transform 0.18s var(--tvq-ease);
}
@media (max-width: 640px) {
    .tvq-consultant--mini {
        left: auto;
    }
    .tvq-consultant--mini .tvq-consultant__toggle {
        width: 56px;
    }
}

/* ---- Footer safe-zone — keep clearance even if mini collide  */
.tvq-footer {
    padding-bottom: max(32px, env(safe-area-inset-bottom));
}
.tvq-footer__inner {
    padding-right: 88px;
}
@media (max-width: 640px) {
    .tvq-footer__inner { padding-right: 0; }
    .tvq-footer { padding-bottom: 96px; }
}

/* ================================================================
   TOUR TANGO v4 — reading progress, nav active state, weather chip,
   driving chip, video greeting button + modal.
   ================================================================ */

/* ---- Reading progress bar (top of viewport) ---- */
.tvq-progress {
    position: fixed;
    top: 0; left: 0; right: 0;
    height: 3px;
    background: rgba(245, 0, 0, 0.06);
    z-index: 200;
    pointer-events: none;
}
.tvq-progress__fill {
    height: 100%;
    background: linear-gradient(90deg,
        var(--tvq-accent) 0%,
        var(--tvq-accent-dark) 60%,
        var(--tvq-sky) 100%);
    transform-origin: 0 0;
    transform: scaleX(0);
    transition: transform 0.08s linear;
    box-shadow: 0 0 12px rgba(245, 0, 0, 0.4);
}

/* ---- Nav active-section indicator ---- */
.tvq-nav__links a {
    position: relative;
}
.tvq-nav__links a.tvq-nav__link--active {
    color: var(--tvq-ink);
    background: var(--tvq-bg-tint);
}
.tvq-nav__links a.tvq-nav__link--active::after {
    content: '';
    position: absolute;
    bottom: 2px;
    left: 50%;
    transform: translateX(-50%);
    width: 4px;
    height: 4px;
    border-radius: 50%;
    background: var(--tvq-accent);
}

/* ---- Per-day weather chip ---- */
.tvq-day__weather {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-top: 8px;
    padding: 4px 10px;
    background: linear-gradient(135deg,
        var(--tvq-sky) 0%, #5dd4ff 100%);
    color: #ffffff;
    border-radius: var(--tvq-radius-pill);
    font-size: 0.78rem;
    font-weight: 700;
    box-shadow: 0 4px 10px rgba(49, 197, 255, 0.32);
    opacity: 0;
    transform: scale(0.8);
    transition: opacity 0.32s var(--tvq-ease),
                transform 0.32s var(--tvq-ease);
    min-height: 24px;
    white-space: nowrap;
}
.tvq-day__weather.tvq-weather--loaded {
    opacity: 1;
    transform: scale(1);
}
.tvq-weather__icon {
    font-size: 0.95rem;
    line-height: 1;
}
.tvq-weather__low {
    opacity: 0.7;
    font-weight: 500;
}

/* ---- Inter-day driving chip ---- */
.tvq-drive-chip {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin: -4px 0 -4px 38px;
    padding: 6px 14px;
    background: var(--tvq-card);
    border: 1px dashed var(--tvq-line-strong);
    border-radius: var(--tvq-radius-pill);
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--tvq-ink-soft);
    position: relative;
    z-index: 1;
}
.tvq-drive-chip svg { color: var(--tvq-accent); }
.tvq-drive-chip__sep { color: var(--tvq-ink-mute); }
@media (max-width: 600px) {
    .tvq-drive-chip { margin-left: 24px; font-size: 0.74rem; }
}

/* ---- Video greeting button (in hero) ---- */
.tvq-btn--video {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 12px 18px 12px 12px;
    background: rgba(255, 255, 255, 0.18);
    border: 1px solid rgba(255, 255, 255, 0.28);
    color: var(--tvq-ink);
    border-radius: var(--tvq-radius-pill);
    font-weight: 700;
    font-size: 0.92rem;
    backdrop-filter: blur(14px);
    cursor: pointer;
    transition: transform 0.18s var(--tvq-ease),
                background 0.18s var(--tvq-ease);
    position: relative;
}
.tvq-btn--video:hover {
    transform: translateY(-1px);
    background: rgba(255, 255, 255, 0.28);
}
.tvq-hero--with-photo .tvq-btn--video {
    color: #ffffff;
}
.tvq-btn--video__play {
    width: 34px; height: 34px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--tvq-accent) 0%, var(--tvq-accent-dark) 100%);
    color: #ffffff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 12px rgba(245, 0, 0, 0.4);
    flex-shrink: 0;
    position: relative;
}
.tvq-btn--video__play::before {
    content: '';
    position: absolute;
    inset: -4px;
    border-radius: 50%;
    background: var(--tvq-accent);
    opacity: 0;
    animation: tvq-video-pulse 2.4s ease-in-out infinite;
}
@keyframes tvq-video-pulse {
    0%, 100% { transform: scale(1); opacity: 0; }
    50% { transform: scale(1.4); opacity: 0.18; }
}
.tvq-btn--video__play svg { margin-left: 2px; /* visual centering */ }

/* ---- Video modal ---- */
.tvq-video-modal {
    position: fixed;
    inset: 0;
    z-index: 300;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    transition: opacity 0.25s var(--tvq-ease);
}
.tvq-video-modal--open {
    opacity: 1;
}
.tvq-video-modal[hidden] { display: none !important; }

.tvq-video-modal__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(9, 20, 19, 0.85);
    backdrop-filter: blur(8px);
}
.tvq-video-modal__stage {
    position: relative;
    width: min(960px, 92vw);
    aspect-ratio: 16 / 9;
    background: #000;
    border-radius: var(--tvq-radius);
    box-shadow: 0 40px 80px rgba(0, 0, 0, 0.5);
    overflow: hidden;
    transform: scale(0.92);
    transition: transform 0.25s var(--tvq-ease);
}
.tvq-video-modal--open .tvq-video-modal__stage {
    transform: scale(1);
}
.tvq-video-modal__close {
    position: absolute;
    top: 12px; right: 12px;
    z-index: 2;
    width: 40px; height: 40px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.12);
    border: 1px solid rgba(255, 255, 255, 0.2);
    color: #ffffff;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    backdrop-filter: blur(8px);
    transition: background 0.15s var(--tvq-ease);
}
.tvq-video-modal__close:hover {
    background: rgba(255, 255, 255, 0.2);
}
.tvq-video-modal__frame,
.tvq-video-modal__frame iframe,
.tvq-video-modal__frame video {
    width: 100%; height: 100%;
    border: 0;
}
.tvq-video-modal__frame video {
    background: #000;
    object-fit: contain;
}

/* ================================================================
   TOUR TANGO v5 — countdown banner, day photo strip,
   hotel description+amenities, currency/lang toggles, carbon strip,
   Spotify embed, PWA install pill, RTL support.
   ================================================================ */

.tvq-countdown {
    position: sticky; top: 0; z-index: 90;
    display: flex; align-items: center; justify-content: center; gap: 10px;
    padding: 10px 16px;
    background: linear-gradient(90deg, var(--tvq-accent) 0%, var(--tvq-accent-dark) 100%);
    color: #ffffff; font-weight: 700; font-size: 0.88rem;
    box-shadow: 0 4px 14px rgba(245, 0, 0, 0.22);
    animation: tvq-countdown-slide 0.45s var(--tvq-ease);
}
.tvq-countdown[hidden] { display: none !important; }
@keyframes tvq-countdown-slide {
    from { transform: translateY(-100%); opacity: 0; }
    to { transform: translateY(0); opacity: 1; }
}
.tvq-countdown__label { opacity: 0.92; }
.tvq-countdown__time {
    font-variant-numeric: tabular-nums; font-weight: 800; letter-spacing: 0.02em;
    padding: 2px 10px; background: rgba(255, 255, 255, 0.16);
    border-radius: var(--tvq-radius-pill); backdrop-filter: blur(6px);
}
.tvq-countdown--urgent { animation: tvq-countdown-pulse 1.6s ease-in-out infinite; }
@keyframes tvq-countdown-pulse {
    0%, 100% { background: linear-gradient(90deg, var(--tvq-accent) 0%, var(--tvq-accent-dark) 100%); }
    50% { background: linear-gradient(90deg, var(--tvq-accent-dark) 0%, var(--tvq-accent-deep) 100%); }
}
.tvq-countdown--expired { background: var(--tvq-ink); }

.tvq-day { overflow: hidden; }
.tvq-day__photo {
    margin: -24px -24px 16px;
    aspect-ratio: 16 / 6;
    background: var(--tvq-bg-soft);
    overflow: hidden;
    border-radius: var(--tvq-radius) var(--tvq-radius) 0 0;
    position: relative;
}
.tvq-day__photo img {
    width: 100%; height: 100%;
    object-fit: cover;
    transition: transform 0.6s var(--tvq-ease);
}
.tvq-day:hover .tvq-day__photo img { transform: scale(1.04); }
.tvq-day__photo::after {
    content: ''; position: absolute; inset: 0;
    background: linear-gradient(180deg, transparent 60%, rgba(9, 20, 19, 0.18) 100%);
    pointer-events: none;
}

.tvq-hotel__desc {
    margin-top: 8px; font-size: 0.85rem;
    color: var(--tvq-ink-soft); line-height: 1.55;
}
.tvq-hotel__amenities {
    list-style: none; margin: 12px 0 0; padding: 0;
    display: flex; flex-wrap: wrap; gap: 6px;
}
.tvq-hotel__amenity {
    display: inline-flex; align-items: center; gap: 5px;
    padding: 4px 10px;
    background: var(--tvq-bg-soft);
    border-radius: var(--tvq-radius-pill);
    font-size: 0.74rem; font-weight: 600;
    color: var(--tvq-ink-soft);
    border: 1px solid var(--tvq-line);
    transition: background 0.18s var(--tvq-ease),
                color 0.18s var(--tvq-ease),
                border-color 0.18s var(--tvq-ease);
}
.tvq-hotel__amenity:hover {
    background: var(--tvq-bg-tint); color: var(--tvq-accent-deep);
    border-color: var(--tvq-accent);
}
.tvq-hotel__amenity-icon { display: inline-flex; align-items: center; }
.tvq-hotel__amenity--wifi:hover { background: rgba(49, 197, 255, 0.12); color: #1a9ed4; border-color: var(--tvq-sky); }
.tvq-hotel__amenity--breakfast:hover { background: rgba(255, 240, 90, 0.18); color: #8a7300; border-color: var(--tvq-yellow); }

.tvq-nav__utils {
    display: flex; gap: 4px;
    margin-left: 8px; padding-left: 12px;
    border-left: 1px solid var(--tvq-line);
}
.tvq-util-btn {
    display: inline-flex; align-items: center; gap: 4px;
    padding: 6px 10px;
    background: transparent; border: 1px solid transparent;
    border-radius: var(--tvq-radius-pill);
    font-family: inherit; font-size: 0.78rem; font-weight: 700;
    color: var(--tvq-ink-soft); cursor: pointer;
    letter-spacing: 0.04em;
    transition: background 0.15s var(--tvq-ease), color 0.15s var(--tvq-ease);
}
.tvq-util-btn:hover { background: var(--tvq-bg-tint); color: var(--tvq-accent-deep); }
.tvq-util-btn__current { font-variant-numeric: tabular-nums; }
@media (max-width: 820px) {
    .tvq-nav__utils { margin-left: 4px; padding-left: 6px; }
    .tvq-util-btn { padding: 4px 6px; font-size: 0.72rem; }
}

.tvq-carbon {
    background: linear-gradient(135deg, rgba(16, 185, 129, 0.06) 0%, rgba(142, 249, 243, 0.12) 100%);
    border-top: 1px solid rgba(16, 185, 129, 0.18);
    border-bottom: 1px solid rgba(16, 185, 129, 0.18);
    padding: 24px 16px;
}
.tvq-carbon__inner {
    max-width: 920px; margin: 0 auto;
    display: grid; grid-template-columns: auto 1fr auto;
    gap: 20px; align-items: center;
}
.tvq-carbon__leaf {
    width: 56px; height: 56px;
    border-radius: 50%; background: rgba(16, 185, 129, 0.18);
    color: var(--tvq-success);
    display: inline-flex; align-items: center; justify-content: center;
}
.tvq-carbon__title { font-size: 1rem; color: var(--tvq-ink); margin-bottom: 2px; }
.tvq-carbon__lead { font-size: 0.82rem; color: var(--tvq-ink-soft); }
.tvq-carbon__lead strong { color: var(--tvq-success); }
.tvq-carbon__bar {
    grid-column: 1 / -1;
    display: flex; height: 8px;
    border-radius: var(--tvq-radius-pill);
    overflow: hidden; margin-top: 4px;
}
.tvq-carbon__seg { height: 100%; transition: width 0.45s var(--tvq-ease); }
.tvq-carbon__seg--road { background: var(--tvq-ink-soft); }
.tvq-carbon__seg--hotel { background: var(--tvq-sky); }
.tvq-carbon__seg--meals { background: var(--tvq-yellow); }
@media (max-width: 600px) {
    .tvq-carbon__inner { grid-template-columns: auto 1fr; gap: 12px; }
    .tvq-carbon__leaf { width: 44px; height: 44px; }
}

.tvq-soundtrack {
    background: linear-gradient(135deg, #181818 0%, #0d0d0d 100%);
    color: #ffffff;
    padding: 56px 16px;
    overflow: hidden;
    position: relative;
}
/* Tighter top placement so it doesn't dominate the page above the
   itinerary. Smaller padding and a slimmer header. */
.tvq-soundtrack--top { padding: 32px 16px; }
.tvq-soundtrack--top .tvq-soundtrack__head { margin-bottom: 16px; }
.tvq-soundtrack--top .tvq-soundtrack__title {
    font-size: clamp(1.1rem, 2vw, 1.4rem);
}
.tvq-soundtrack::before {
    content: '';
    position: absolute;
    inset: -40% -20% auto auto;
    width: 60%; height: 100%;
    background: radial-gradient(circle at center, rgba(30, 215, 96, 0.2), transparent 60%);
    pointer-events: none;
}
.tvq-soundtrack__inner { max-width: 760px; margin: 0 auto; position: relative; }
.tvq-soundtrack__head { text-align: center; margin-bottom: 24px; }
.tvq-soundtrack__kicker {
    display: inline-flex; align-items: center; gap: 8px;
    padding: 6px 14px;
    background: rgba(30, 215, 96, 0.18);
    color: #1ED760;
    border-radius: var(--tvq-radius-pill);
    font-size: 0.78rem; font-weight: 700;
    letter-spacing: 0.04em; text-transform: uppercase;
    margin-bottom: 14px;
}
.tvq-soundtrack__title {
    color: #ffffff;
    font-size: clamp(1.4rem, 3vw, 2rem);
    letter-spacing: -0.02em;
}
.tvq-soundtrack__player {
    border-radius: 14px; overflow: hidden;
    box-shadow: 0 24px 48px rgba(0, 0, 0, 0.5);
}
.tvq-soundtrack__player iframe { display: block; border: 0; }
/* The Iframe API replaces the placeholder with its own iframe; make
   sure the placeholder reserves the same height before it's swapped
   so the layout doesn't jump. */
.tvq-soundtrack__player #tvq-spotify-embed {
    min-height: 152px;
    border-radius: 14px;
    background: #181818;
}

/* Soundtrack-on hint pill (Tour Tango v9.1) */
.tvq-soundtrack__hint {
    position: fixed;
    bottom: 152px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 92;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 18px;
    background: rgba(30, 215, 96, 0.95);
    color: #ffffff;
    font-weight: 700;
    font-size: 0.85rem;
    border-radius: var(--tvq-radius-pill);
    box-shadow: 0 12px 28px rgba(30, 215, 96, 0.40);
    animation: tvq-hint-up 0.35s var(--tvq-ease);
    transition: opacity 0.6s var(--tvq-ease),
                transform 0.6s var(--tvq-ease);
}
.tvq-soundtrack__hint[hidden] { display: none !important; }
.tvq-soundtrack__hint--fade {
    opacity: 0;
    transform: translateX(-50%) translateY(8px);
}
.tvq-soundtrack__hint-dot {
    width: 8px; height: 8px;
    border-radius: 50%;
    background: #ffffff;
    animation: tvq-hint-pulse 1.2s ease-in-out infinite;
}
@keyframes tvq-hint-up {
    from { opacity: 0; transform: translateX(-50%) translateY(20px); }
    to { opacity: 1; transform: translateX(-50%) translateY(0); }
}
@keyframes tvq-hint-pulse {
    0%, 100% { transform: scale(1); opacity: 1; }
    50% { transform: scale(1.4); opacity: 0.5; }
}
@media (max-width: 640px) {
    .tvq-soundtrack__hint {
        bottom: 140px;
        font-size: 0.78rem;
        padding: 8px 14px;
    }
}

.tvq-install-pill {
    position: fixed; bottom: 92px; right: 24px;
    z-index: 96;
    display: inline-flex; align-items: center; gap: 8px;
    padding: 10px 16px;
    background: var(--tvq-ink); color: #ffffff;
    font-family: inherit; font-weight: 700; font-size: 0.84rem;
    border: 0; border-radius: var(--tvq-radius-pill);
    box-shadow: 0 14px 30px rgba(9, 20, 19, 0.32);
    cursor: pointer;
    animation: tvq-install-bounce 0.5s var(--tvq-ease);
    transition: transform 0.18s var(--tvq-ease);
}
.tvq-install-pill:hover { transform: translateY(-2px); }
@keyframes tvq-install-bounce {
    from { opacity: 0; transform: translateY(20px); }
    to { opacity: 1; transform: translateY(0); }
}
@media (max-width: 640px) {
    .tvq-install-pill { bottom: 84px; right: 14px; }
}

/* RTL support (lang=ar) */
html[dir="rtl"] body { text-align: right; }
html[dir="rtl"] .tvq-day__stops {
    border-left: none;
    border-right: 2px solid var(--tvq-line-strong);
    padding-left: 0; padding-right: 16px;
}
html[dir="rtl"] .tvq-day__stop::before { left: auto; right: -22px; }
html[dir="rtl"] .tvq-consultant { right: auto; left: 24px; }
html[dir="rtl"] .tvq-install-pill { right: auto; left: 24px; }
html[dir="rtl"] .tvq-nav__utils {
    border-left: none;
    border-right: 1px solid var(--tvq-line);
    margin-left: 0; margin-right: 8px;
    padding-left: 0; padding-right: 12px;
}

/* ================================================================
   TOUR TANGO v5.1 — currency / language dropdown menus
   ================================================================ */

.tvq-dropdown { position: relative; display: inline-block; }
.tvq-dropdown .tvq-util-btn__chev {
    transition: transform 0.18s var(--tvq-ease);
}
.tvq-dropdown--open .tvq-util-btn__chev { transform: rotate(180deg); }
.tvq-dropdown--open .tvq-util-btn {
    background: var(--tvq-bg-tint);
    color: var(--tvq-accent-deep);
}

.tvq-dropdown__menu {
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    z-index: 95;
    min-width: 200px;
    margin: 0;
    padding: 6px;
    list-style: none;
    background: #ffffff;
    border: 1px solid var(--tvq-line);
    border-radius: 14px;
    box-shadow: 0 18px 40px rgba(9, 20, 19, 0.16),
                0 4px 12px rgba(9, 20, 19, 0.06);
    animation: tvq-dropdown-pop 0.18s var(--tvq-ease);
    transform-origin: top right;
}
.tvq-dropdown__menu[hidden] { display: none !important; }
@keyframes tvq-dropdown-pop {
    from { opacity: 0; transform: translateY(-6px) scale(0.96); }
    to   { opacity: 1; transform: translateY(0) scale(1); }
}

.tvq-dropdown__item {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 12px;
    border-radius: 10px;
    cursor: pointer;
    font-size: 0.84rem;
    color: var(--tvq-ink);
    transition: background 0.12s var(--tvq-ease),
                color 0.12s var(--tvq-ease);
}
.tvq-dropdown__item:hover {
    background: var(--tvq-bg-tint);
    color: var(--tvq-accent-deep);
}
.tvq-dropdown__sym {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px; height: 28px;
    background: var(--tvq-bg-soft);
    color: var(--tvq-ink-soft);
    border-radius: 50%;
    font-weight: 700;
    font-size: 0.78rem;
    flex-shrink: 0;
}
.tvq-dropdown__item:hover .tvq-dropdown__sym {
    background: var(--tvq-accent);
    color: #ffffff;
}
.tvq-dropdown__code {
    font-weight: 700;
    letter-spacing: 0.04em;
    font-variant-numeric: tabular-nums;
    color: var(--tvq-ink);
    min-width: 28px;
}
.tvq-dropdown__name {
    flex: 1;
    color: var(--tvq-ink-soft);
    font-weight: 500;
}
.tvq-dropdown__check {
    opacity: 0;
    color: var(--tvq-accent);
    flex-shrink: 0;
    transition: opacity 0.12s var(--tvq-ease);
}
.tvq-dropdown__item--active {
    background: var(--tvq-bg-tint);
}
.tvq-dropdown__item--active .tvq-dropdown__code {
    color: var(--tvq-accent-deep);
}
.tvq-dropdown__item--active .tvq-dropdown__check { opacity: 1; }

/* RTL — flip menu anchor */
html[dir="rtl"] .tvq-dropdown__menu {
    right: auto;
    left: 0;
    transform-origin: top left;
}

/* Mobile — narrower menu, anchored to button */
@media (max-width: 640px) {
    .tvq-dropdown__menu { min-width: 180px; }
    .tvq-dropdown__item { padding: 7px 10px; font-size: 0.8rem; }
}

/* ================================================================
   TOUR TANGO v6 — read-time chip, FAQ accordion, sticky mobile CTA
   ================================================================ */

.tvq-meta-chip--read {
    background: rgba(49, 197, 255, 0.10);
    border-color: rgba(49, 197, 255, 0.35);
}
.tvq-meta-chip--read .tvq-meta-chip__label {
    color: #1a9ed4;
    display: inline-flex;
    align-items: center;
}
.tvq-meta-chip--read .tvq-meta-chip__value {
    font-variant-numeric: tabular-nums;
    color: #1a9ed4;
}

/* ---- FAQ accordion ---- */
.tvq-faq { background: var(--tvq-bg-soft); }
.tvq-faq__list {
    max-width: 840px;
    margin: 0 auto;
    display: grid;
    gap: 10px;
}
.tvq-faq__item {
    background: #ffffff;
    border: 1px solid var(--tvq-line);
    border-radius: 14px;
    overflow: hidden;
    transition: border-color 0.18s var(--tvq-ease),
                box-shadow 0.18s var(--tvq-ease);
}
.tvq-faq__item[open] {
    border-color: var(--tvq-accent);
    box-shadow: 0 8px 24px rgba(245, 0, 0, 0.06);
}
.tvq-faq__q {
    list-style: none;
    cursor: pointer;
    padding: 16px 20px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    font-weight: 600;
    color: var(--tvq-ink);
    font-size: 0.95rem;
    user-select: none;
}
.tvq-faq__q::-webkit-details-marker { display: none; }
.tvq-faq__q::marker { content: ''; }
.tvq-faq__q:hover { color: var(--tvq-accent-deep); }
.tvq-faq__chev {
    flex-shrink: 0;
    color: var(--tvq-ink-soft);
    transition: transform 0.22s var(--tvq-ease),
                color 0.18s var(--tvq-ease);
}
.tvq-faq__item[open] .tvq-faq__chev {
    transform: rotate(180deg);
    color: var(--tvq-accent);
}
.tvq-faq__a {
    margin: 0;
    padding: 0 20px 18px;
    color: var(--tvq-ink-soft);
    line-height: 1.6;
    font-size: 0.92rem;
    animation: tvq-faq-fade 0.22s var(--tvq-ease);
}
@keyframes tvq-faq-fade {
    from { opacity: 0; transform: translateY(-4px); }
    to { opacity: 1; transform: translateY(0); }
}

/* Phase UX v30 — FAQ structural extras */
.tvq-faq__wrap {
    max-width: 880px;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    gap: 32px;
}
.tvq-faq__cat-block { display: block; }
.tvq-faq__cat {
    display: flex;
    align-items: baseline;
    gap: 10px;
    margin: 0 0 14px;
    font-size: 0.86rem;
    font-weight: 700;
    color: #091413;
    letter-spacing: 0.02em;
    text-transform: uppercase;
}
.tvq-faq__cat-count {
    background: rgba(153, 0, 2, 0.08);
    color: var(--tvq-accent-deep);
    font-size: 0.72rem;
    padding: 1px 8px;
    border-radius: 999px;
    font-weight: 700;
    letter-spacing: 0;
}
.tvq-faq__q-text {
    flex: 1 1 auto;
    line-height: 1.4;
}
.tvq-faq__feedback {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 12px 20px 16px;
    border-top: 1px solid #f1f5f9;
    margin-top: 4px;
    font-size: 0.78rem;
    color: var(--tvq-ink-soft);
}
.tvq-faq__feedback-label {
    font-weight: 600;
    margin-right: 4px;
}
.tvq-faq__vote-form { display: inline; }
.tvq-faq__vote-btn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    background: #fff;
    color: var(--tvq-ink-soft);
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    padding: 5px 10px;
    font-size: 0.78rem;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.15s;
}
.tvq-faq__vote-btn:hover {
    border-color: #16a34a;
    color: #16a34a;
    background: #f0fdf4;
}
.tvq-faq__vote-btn--down:hover {
    border-color: #94a3b8;
    color: #475569;
    background: #f8fafc;
}

.tvq-faq__cta {
    max-width: 880px;
    margin: 36px auto 0;
    padding: 20px 24px;
    background: linear-gradient(135deg, #fafaf7 0%, #fff 100%);
    border: 1px solid #ebe7e0;
    border-radius: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    font-size: 0.95rem;
    color: var(--tvq-ink-soft);
    flex-wrap: wrap;
}
.tvq-faq__cta-label {
    color: var(--tvq-ink);
    font-weight: 600;
}
.tvq-faq__cta-link {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    color: var(--tvq-accent-deep);
    font-weight: 700;
    text-decoration: none;
    transition: gap 0.15s;
}
.tvq-faq__cta-link:hover { gap: 7px; }

/* Phase UX v31 — FAQ toolbar (search + category chips) */
.tvq-faq__toolbar {
    max-width: 880px;
    margin: 0 auto 28px;
    display: flex;
    flex-direction: column;
    gap: 14px;
}
.tvq-faq__search {
    position: relative;
}
.tvq-faq__search-icon {
    position: absolute;
    left: 14px;
    top: 50%;
    transform: translateY(-50%);
    color: #94a3b8;
    pointer-events: none;
}
.tvq-faq__search input {
    width: 100%;
    padding: 12px 14px 12px 40px;
    background: #fff;
    border: 1.5px solid #ebe7e0;
    border-radius: 12px;
    font-size: 0.95rem;
    font-family: inherit;
    color: var(--tvq-ink);
    transition: border-color 0.15s, box-shadow 0.15s;
}
.tvq-faq__search input:focus {
    outline: none;
    border-color: var(--tvq-accent-deep);
    box-shadow: 0 0 0 3px rgba(153,0,2,0.08);
}
.tvq-faq__search input::-webkit-search-cancel-button {
    -webkit-appearance: none;
    appearance: none;
    height: 16px;
    width: 16px;
    background-image: linear-gradient(45deg, transparent 45%, #94a3b8 45%, #94a3b8 55%, transparent 55%),
                      linear-gradient(-45deg, transparent 45%, #94a3b8 45%, #94a3b8 55%, transparent 55%);
    cursor: pointer;
}

.tvq-faq__cats {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    justify-content: center;
}
.tvq-faq__cat-chip {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 12px;
    background: #fff;
    border: 1.5px solid #e2e8f0;
    border-radius: 999px;
    font-size: 0.82rem;
    font-weight: 600;
    color: #475569;
    text-decoration: none;
    transition: all 0.15s;
}
.tvq-faq__cat-chip:hover {
    border-color: var(--tvq-accent-deep);
    color: var(--tvq-accent-deep);
    transform: translateY(-1px);
}
.tvq-faq__cat-chip-count {
    background: #f1f5f9;
    color: #64748b;
    padding: 1px 7px;
    border-radius: 999px;
    font-size: 0.7rem;
    font-weight: 700;
    transition: all 0.15s;
}
.tvq-faq__cat-chip:hover .tvq-faq__cat-chip-count {
    background: rgba(153,0,2,0.1);
    color: var(--tvq-accent-deep);
}

/* v31 — helpful badge on closed cards (social proof) */
.tvq-faq__q-helpful {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    background: #f0fdf4;
    color: #16a34a;
    border: 1px solid #bbf7d0;
    border-radius: 999px;
    padding: 2px 7px;
    font-size: 0.72rem;
    font-weight: 700;
    flex-shrink: 0;
    cursor: help;
}

/* v31 — vote button text label */
.tvq-faq__vote-btn { gap: 5px; }

/* v31 — empty state when search has no matches */
.tvq-faq__empty {
    max-width: 600px;
    margin: 12px auto 0;
    padding: 28px 22px;
    background: #fafaf7;
    border: 1px dashed #ebe7e0;
    border-radius: 12px;
    text-align: center;
    color: #475569;
}
.tvq-faq__empty[hidden] { display: none; }
.tvq-faq__empty svg { color: #94a3b8; margin-bottom: 8px; }
.tvq-faq__empty p { margin: 0; font-size: 0.95rem; }
.tvq-faq__empty strong { color: #091413; font-weight: 700; }
.tvq-faq__empty a {
    color: var(--tvq-accent-deep);
    font-weight: 600;
    text-decoration: none;
    margin-left: 4px;
}

/* v31 — WhatsApp CTA alongside inquiry link */
.tvq-faq__cta-wa {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-left: 6px;
    padding: 6px 14px;
    background: linear-gradient(135deg, #25d366 0%, #128c7e 100%);
    color: #fff !important;
    font-weight: 700;
    font-size: 0.85rem;
    text-decoration: none;
    border-radius: 999px;
    box-shadow: 0 2px 6px rgba(37,211,102,0.18);
    transition: transform 0.15s, box-shadow 0.15s;
}
.tvq-faq__cta-wa:hover {
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(37,211,102,0.28);
    color: #fff !important;
}

/* ---- Sticky mobile CTA bar ---- */
/* Only render on narrow viewports — wide-screen visitors already see
   the floating consultant card and the in-page Accept buttons. */
.tvq-mobile-bar {
    display: none;
}
@media (max-width: 768px) {
    .tvq-mobile-bar {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 12px;
        position: fixed;
        left: 0; right: 0; bottom: 0;
        z-index: 94;
        padding: 10px 14px;
        padding-bottom: calc(10px + env(safe-area-inset-bottom, 0px));
        background: rgba(255, 255, 255, 0.96);
        backdrop-filter: blur(14px);
        -webkit-backdrop-filter: blur(14px);
        border-top: 1px solid var(--tvq-line);
        box-shadow: 0 -8px 24px rgba(9, 20, 19, 0.08);
        animation: tvq-mobile-bar-slide 0.3s var(--tvq-ease);
        transition: transform 0.25s var(--tvq-ease),
                    opacity 0.2s var(--tvq-ease);
    }
    /* Don't shadow the in-page Accept buttons in the decide section. */
    .tvq-mobile-bar--hidden {
        transform: translateY(120%);
        opacity: 0;
        pointer-events: none;
    }
    /* Lift the install pill above the bar on phones. */
    .tvq-install-pill {
        bottom: calc(76px + env(safe-area-inset-bottom, 0px));
    }
    /* Lift the consultant card too if it ever shows on mobile. */
    .tvq-consultant {
        bottom: calc(76px + env(safe-area-inset-bottom, 0px));
    }
}
@keyframes tvq-mobile-bar-slide {
    from { transform: translateY(100%); }
    to { transform: translateY(0); }
}
.tvq-mobile-bar__price {
    display: flex;
    flex-direction: column;
    line-height: 1.15;
}
.tvq-mobile-bar__label {
    font-size: 0.65rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--tvq-ink-soft);
}
.tvq-mobile-bar__amount {
    font-size: 1rem;
    font-weight: 800;
    color: var(--tvq-ink);
    font-variant-numeric: tabular-nums;
}
.tvq-mobile-bar__cta {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 10px 18px;
    background: var(--tvq-accent);
    color: #ffffff !important;
    text-decoration: none;
    font-weight: 700;
    font-size: 0.9rem;
    border-radius: var(--tvq-radius-pill);
    box-shadow: 0 6px 16px rgba(245, 0, 0, 0.28);
    transition: transform 0.15s var(--tvq-ease),
                box-shadow 0.15s var(--tvq-ease);
}
.tvq-mobile-bar__cta:hover,
.tvq-mobile-bar__cta:active {
    transform: translateY(-1px);
    box-shadow: 0 10px 22px rgba(245, 0, 0, 0.36);
}

/* RTL — flip the mobile bar layout */
html[dir="rtl"] .tvq-mobile-bar { direction: rtl; }

/* ================================================================
   TOUR TANGO v7 — personalized greeting + WhatsApp quick replies
   ================================================================ */

.tvq-hero__greeting {
    margin: 4px 0 12px;
    font-size: 1rem;
    color: var(--tvq-ink-soft);
    line-height: 1.5;
    animation: tvq-fade-up 0.6s var(--tvq-ease) 0.05s backwards;
}
.tvq-hero__greeting strong {
    color: var(--tvq-ink);
    font-weight: 700;
}
.tvq-hero__greeting-wave {
    display: inline-block;
    margin-right: 6px;
    transform-origin: 70% 70%;
    animation: tvq-wave 2s ease-in-out 0.4s 2;
}
.tvq-hero--with-photo .tvq-hero__greeting {
    color: rgba(255, 255, 255, 0.85);
    text-shadow: 0 1px 8px rgba(0, 0, 0, 0.32);
}
.tvq-hero--with-photo .tvq-hero__greeting strong { color: #ffffff; }
@keyframes tvq-wave {
    0%, 100% { transform: rotate(0); }
    15% { transform: rotate(14deg); }
    30% { transform: rotate(-8deg); }
    45% { transform: rotate(14deg); }
    60% { transform: rotate(-4deg); }
    75% { transform: rotate(10deg); }
}

/* WhatsApp quick-reply chip cluster inside the consultant menu */
.tvq-consultant__quick {
    margin-top: 14px;
    padding-top: 12px;
    border-top: 1px solid var(--tvq-line);
}
.tvq-consultant__quick-label {
    display: block;
    margin-bottom: 8px;
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--tvq-ink-soft);
}
.tvq-consultant__quick-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}
.tvq-consultant__quick-chip {
    display: inline-flex;
    align-items: center;
    padding: 6px 10px;
    background: var(--tvq-bg-soft);
    border: 1px solid var(--tvq-line);
    border-radius: var(--tvq-radius-pill);
    font-size: 0.78rem;
    font-weight: 500;
    color: var(--tvq-ink);
    text-decoration: none !important;
    cursor: pointer;
    transition: background 0.15s var(--tvq-ease),
                color 0.15s var(--tvq-ease),
                border-color 0.15s var(--tvq-ease),
                transform 0.15s var(--tvq-ease);
}
.tvq-consultant__quick-chip:hover {
    background: rgba(37, 211, 102, 0.10);
    color: #128C7E;
    border-color: rgba(37, 211, 102, 0.35);
    transform: translateY(-1px);
}

/* ================================================================
   TOUR TANGO v8 — trust badges row + two-step accept modal + deposit pills
   ================================================================ */

.tvq-trust__badges {
    margin-top: 28px;
    text-align: center;
}
.tvq-trust__badges-label {
    display: block;
    margin-bottom: 14px;
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--tvq-ink-soft);
}
.tvq-trust__badges-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 24px 32px;
}
.tvq-trust__badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: 46px;
    transition: transform 0.18s var(--tvq-ease),
                filter 0.18s var(--tvq-ease);
    /* Greyscale by default so logos read as a calm partner row;
       full color on hover surfaces them as live links. */
    filter: grayscale(1) opacity(0.72);
}
.tvq-trust__badge:hover {
    transform: translateY(-2px) scale(1.04);
    filter: grayscale(0) opacity(1);
}
.tvq-trust__badge img {
    max-height: 100%;
    max-width: 110px;
    object-fit: contain;
    display: block;
}
@media (max-width: 640px) {
    .tvq-trust__badges-row { gap: 16px 20px; }
    .tvq-trust__badge { height: 36px; }
    .tvq-trust__badge img { max-width: 80px; }
}

/* ---- Accept modal ---- */
.tvq-accept-modal {
    position: fixed;
    inset: 0;
    z-index: 110;
    display: flex;
    align-items: center;
    justify-content: center;
}
.tvq-accept-modal[hidden] { display: none !important; }
.tvq-accept-modal__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(9, 20, 19, 0.55);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    animation: tvq-fade 0.22s var(--tvq-ease);
}
@keyframes tvq-fade {
    from { opacity: 0; }
    to { opacity: 1; }
}
.tvq-accept-modal__stage {
    position: relative;
    width: min(94vw, 520px);
    max-height: 92vh;
    overflow-y: auto;
    background: #ffffff;
    border-radius: 22px;
    padding: 32px 32px 28px;
    box-shadow: 0 30px 80px rgba(9, 20, 19, 0.36);
    animation: tvq-modal-pop 0.28s var(--tvq-ease);
    outline: none;
}
@keyframes tvq-modal-pop {
    from { opacity: 0; transform: translateY(20px) scale(0.96); }
    to { opacity: 1; transform: translateY(0) scale(1); }
}
.tvq-accept-modal__close {
    position: absolute;
    top: 12px; right: 12px;
    width: 36px; height: 36px;
    border-radius: 50%;
    background: var(--tvq-bg-soft);
    border: 0;
    color: var(--tvq-ink-soft);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background 0.15s var(--tvq-ease),
                color 0.15s var(--tvq-ease),
                transform 0.15s var(--tvq-ease);
}
.tvq-accept-modal__close:hover {
    background: var(--tvq-bg-tint);
    color: var(--tvq-accent-deep);
    transform: rotate(90deg);
}
.tvq-accept-modal__head { margin-bottom: 20px; }
.tvq-accept-modal__kicker {
    display: inline-block;
    margin-bottom: 6px;
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--tvq-accent);
}
.tvq-accept-modal__title {
    margin: 0 0 6px;
    font-size: clamp(1.4rem, 3vw, 1.7rem);
    line-height: 1.2;
    color: var(--tvq-ink);
}
.tvq-accept-modal__sub {
    margin: 0;
    color: var(--tvq-ink-soft);
    font-size: 0.92rem;
}
.tvq-accept-modal__price {
    margin: 18px 0;
    padding: 16px 18px;
    background: var(--tvq-bg-soft);
    border-radius: 14px;
    display: flex;
    align-items: center;
    justify-content: space-between;
}
.tvq-accept-modal__price-label {
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--tvq-ink-soft);
}
.tvq-accept-modal__price-value {
    font-size: 1.4rem;
    font-weight: 800;
    font-variant-numeric: tabular-nums;
    color: var(--tvq-ink);
}
.tvq-accept-modal__section-label {
    display: block;
    margin-bottom: 8px;
    font-weight: 700;
    color: var(--tvq-ink);
    font-size: 0.92rem;
}
.tvq-accept-modal__section-label small {
    font-weight: 500;
    color: var(--tvq-ink-soft);
    font-size: 0.78rem;
}
.tvq-accept-modal__deposit { margin-bottom: 18px; }
.tvq-accept-modal__deposit-pills {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
}
.tvq-deposit-pill {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 14px 8px;
    background: #ffffff;
    border: 2px solid var(--tvq-line);
    border-radius: 14px;
    cursor: pointer;
    font-family: inherit;
    color: var(--tvq-ink);
    transition: border-color 0.15s var(--tvq-ease),
                background 0.15s var(--tvq-ease),
                transform 0.12s var(--tvq-ease);
}
.tvq-deposit-pill:hover {
    border-color: var(--tvq-accent);
    transform: translateY(-1px);
}
.tvq-deposit-pill strong {
    font-size: 1.2rem;
    font-weight: 800;
    margin-bottom: 2px;
}
.tvq-deposit-pill small {
    font-size: 0.72rem;
    color: var(--tvq-ink-soft);
    font-weight: 500;
}
.tvq-deposit-pill--active {
    border-color: var(--tvq-accent);
    background: var(--tvq-bg-tint);
    box-shadow: 0 8px 18px rgba(245, 0, 0, 0.10);
}
.tvq-deposit-pill--active strong { color: var(--tvq-accent-deep); }
.tvq-deposit-pill--active small { color: var(--tvq-accent); }

.tvq-accept-modal__note { display: block; margin-bottom: 16px; }
.tvq-accept-modal__note textarea {
    width: 100%;
    padding: 10px 12px;
    background: var(--tvq-bg-soft);
    border: 1px solid var(--tvq-line);
    border-radius: 10px;
    font-family: inherit;
    font-size: 0.9rem;
    color: var(--tvq-ink);
    resize: vertical;
    transition: border-color 0.15s var(--tvq-ease),
                background 0.15s var(--tvq-ease);
}
.tvq-accept-modal__note textarea:focus {
    outline: none;
    background: #ffffff;
    border-color: var(--tvq-accent);
    box-shadow: 0 0 0 3px rgba(245, 0, 0, 0.12);
}

.tvq-accept-modal__actions {
    display: flex;
    gap: 10px;
    justify-content: flex-end;
    margin-top: 6px;
}
.tvq-accept-modal__actions .tvq-btn { font-size: 0.92rem; }
.tvq-accept-modal__fineprint {
    margin: 14px 0 0;
    font-size: 0.74rem;
    color: var(--tvq-ink-soft);
    line-height: 1.5;
    text-align: center;
}

/* Success step */
.tvq-accept-modal__step--success {
    text-align: center;
    padding: 12px 0 6px;
}
.tvq-accept-modal__check {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 88px; height: 88px;
    margin-bottom: 18px;
    background: rgba(16, 185, 129, 0.12);
    color: var(--tvq-success);
    border-radius: 50%;
    animation: tvq-success-pop 0.5s var(--tvq-ease);
}
@keyframes tvq-success-pop {
    0% { transform: scale(0); opacity: 0; }
    70% { transform: scale(1.18); opacity: 1; }
    100% { transform: scale(1); }
}
.tvq-accept-modal__step--success .tvq-accept-modal__title { margin-bottom: 12px; }
.tvq-accept-modal__step--success .tvq-accept-modal__sub { margin-bottom: 22px; }
.tvq-accept-modal__step--success .tvq-accept-modal__actions { justify-content: center; }

/* Mobile sizing */
@media (max-width: 640px) {
    .tvq-accept-modal__stage {
        padding: 26px 22px 22px;
        border-radius: 18px;
    }
    .tvq-deposit-pill { padding: 12px 6px; }
    .tvq-deposit-pill strong { font-size: 1.05rem; }
    .tvq-accept-modal__actions { flex-direction: column-reverse; }
    .tvq-accept-modal__actions .tvq-btn { width: 100%; justify-content: center; }
}

/* ================================================================
   TOUR TANGO v9 — optional add-ons grid + decline reason pills
   ================================================================ */

.tvq-addons__list {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 16px;
    max-width: 980px;
    margin: 0 auto;
}
.tvq-addon {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    text-align: left;
    background: #ffffff;
    border: 2px solid var(--tvq-line);
    border-radius: 16px;
    overflow: hidden;
    cursor: pointer;
    font-family: inherit;
    color: var(--tvq-ink);
    padding: 0;
    transition: border-color 0.18s var(--tvq-ease),
                transform 0.18s var(--tvq-ease),
                box-shadow 0.18s var(--tvq-ease);
}
.tvq-addon:hover {
    border-color: var(--tvq-accent);
    transform: translateY(-2px);
    box-shadow: 0 14px 32px rgba(9, 20, 19, 0.10);
}
.tvq-addon__photo {
    aspect-ratio: 16 / 9;
    background: var(--tvq-bg-soft);
    overflow: hidden;
}
.tvq-addon__photo img {
    width: 100%; height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.5s var(--tvq-ease);
}
.tvq-addon:hover .tvq-addon__photo img { transform: scale(1.04); }
.tvq-addon__body {
    padding: 14px 16px;
    flex: 1;
    display: flex;
    flex-direction: column;
}
.tvq-addon__name {
    font-weight: 700;
    font-size: 1rem;
    color: var(--tvq-ink);
    margin-bottom: 4px;
}
.tvq-addon__desc {
    font-size: 0.82rem;
    color: var(--tvq-ink-soft);
    line-height: 1.5;
    margin-bottom: 12px;
    flex: 1;
}
.tvq-addon__foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: auto;
}
.tvq-addon__price {
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    color: var(--tvq-accent-deep);
    font-size: 0.95rem;
}
.tvq-addon__check {
    width: 26px; height: 26px;
    border-radius: 50%;
    border: 2px solid var(--tvq-line);
    background: #ffffff;
    color: transparent;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background 0.18s var(--tvq-ease),
                border-color 0.18s var(--tvq-ease),
                color 0.18s var(--tvq-ease);
}
.tvq-addon--selected {
    border-color: var(--tvq-accent);
    background: var(--tvq-bg-tint);
}
.tvq-addon--selected .tvq-addon__check {
    background: var(--tvq-accent);
    border-color: var(--tvq-accent);
    color: #ffffff;
}
.tvq-addon--selected .tvq-addon__price { color: var(--tvq-accent); }

/* Decline reason pills (legacy decision modal) */
.tvq-modal__reasons {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 12px;
}
.tvq-reason-pill {
    display: inline-flex;
    align-items: center;
    padding: 6px 12px;
    border: 1px solid var(--tvq-line);
    background: var(--tvq-bg-soft);
    border-radius: var(--tvq-radius-pill);
    font-family: inherit;
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--tvq-ink);
    cursor: pointer;
    transition: background 0.15s var(--tvq-ease),
                color 0.15s var(--tvq-ease),
                border-color 0.15s var(--tvq-ease);
}
.tvq-reason-pill:hover {
    background: var(--tvq-bg-tint);
    color: var(--tvq-accent-deep);
    border-color: var(--tvq-accent);
}
.tvq-reason-pill--active {
    background: var(--tvq-accent);
    color: #ffffff;
    border-color: var(--tvq-accent);
}
.tvq-reason-pill--active:hover {
    background: var(--tvq-accent-dark);
    color: #ffffff;
}

/* ================================================================
   TOUR TANGO v10 — testimonials carousel + destination gallery + press logos
   ================================================================ */

/* ---- Press logos row (lighter than partner badges) ---- */
.tvq-trust__badges--press { margin-top: 18px; }
.tvq-trust__badges--press .tvq-trust__badge { height: 30px; }
.tvq-trust__badges--press .tvq-trust__badge img { max-width: 90px; }

/* ---- Testimonials carousel ---- */
.tvq-testimonials { background: var(--tvq-bg-soft); }
.tvq-testimonials__viewport {
    max-width: 760px;
    margin: 0 auto;
    overflow: hidden;
    position: relative;
}
.tvq-testimonials__track {
    display: flex;
    transition: transform 0.5s var(--tvq-ease);
    will-change: transform;
}
.tvq-testimonial {
    flex: 0 0 100%;
    min-width: 0;
    padding: 0 8px;
    box-sizing: border-box;
}
.tvq-testimonial__head {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 14px;
}
.tvq-testimonial__avatar {
    flex-shrink: 0;
    width: 56px; height: 56px;
    border-radius: 50%;
    overflow: hidden;
    background: var(--tvq-bg-tint);
    color: var(--tvq-ink-soft);
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.tvq-testimonial__avatar img {
    width: 100%; height: 100%; object-fit: cover;
}
.tvq-testimonial__meta { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.tvq-testimonial__meta strong {
    color: var(--tvq-ink); font-size: 1rem; font-weight: 700;
}
.tvq-testimonial__sub {
    color: var(--tvq-ink-soft); font-size: 0.8rem;
}
.tvq-testimonial__stars {
    display: inline-flex;
    gap: 2px;
    margin-top: 2px;
    line-height: 1;
}
.tvq-testimonial__star {
    color: var(--tvq-line-strong);
    font-size: 0.92rem;
}
.tvq-testimonial__star--filled { color: var(--tvq-yellow); color: #f5b400; }
.tvq-testimonial__quote {
    position: relative;
    margin: 0;
    padding: 0 0 0 30px;
    color: var(--tvq-ink);
    font-size: 1.05rem;
    font-weight: 500;
    line-height: 1.6;
    font-style: italic;
}
.tvq-testimonial__quote-mark {
    position: absolute;
    left: 0; top: -8px;
    font-size: 3rem;
    line-height: 1;
    color: var(--tvq-accent);
    opacity: 0.4;
    font-style: normal;
    font-family: Georgia, serif;
}
.tvq-testimonials__nav {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 14px;
    margin-top: 22px;
}
.tvq-testimonials__arrow {
    width: 36px; height: 36px;
    border-radius: 50%;
    background: #ffffff;
    border: 1px solid var(--tvq-line);
    color: var(--tvq-ink);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background 0.15s var(--tvq-ease),
                border-color 0.15s var(--tvq-ease);
}
.tvq-testimonials__arrow:hover {
    background: var(--tvq-bg-tint);
    border-color: var(--tvq-accent);
    color: var(--tvq-accent-deep);
}
.tvq-testimonials__dots {
    display: inline-flex;
    gap: 6px;
}
.tvq-testimonials__dot {
    width: 8px; height: 8px;
    border-radius: 50%;
    border: 0;
    background: var(--tvq-line-strong);
    padding: 0;
    cursor: pointer;
    transition: background 0.18s var(--tvq-ease),
                transform 0.18s var(--tvq-ease);
}
.tvq-testimonials__dot:hover { background: var(--tvq-ink-soft); }
.tvq-testimonials__dot:focus { outline: none; }
.tvq-testimonials__dot:focus-visible {
    outline: 2px solid var(--tvq-accent);
    outline-offset: 2px;
}
.tvq-testimonials__arrow:focus { outline: none; }
.tvq-testimonials__arrow:focus-visible {
    outline: 2px solid var(--tvq-accent);
    outline-offset: 2px;
}
.tvq-testimonials__dot--active {
    background: var(--tvq-accent);
    transform: scale(1.3);
}

/* Phase UX v20 — aggregate summary bar above the carousel */
.tvq-testimonials__summary {
    display: inline-flex;
    align-items: center;
    flex-wrap: wrap;
    justify-content: center;
    gap: 8px 10px;
    margin-top: 14px;
    padding: 8px 18px;
    background: #fff;
    border: 1px solid var(--tvq-line);
    border-radius: 999px;
    font-size: 0.92rem;
    color: var(--tvq-ink-soft);
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.04);
}
.tvq-testimonials__summary-stars {
    display: inline-flex;
    gap: 2px;
    line-height: 1;
}
.tvq-testimonials__summary-star {
    color: var(--tvq-line-strong);
    font-size: 1rem;
}
.tvq-testimonials__summary-star--filled { color: #f5b400; }
.tvq-testimonials__summary-avg {
    font-weight: 800;
    color: var(--tvq-ink);
    font-size: 1.05rem;
    letter-spacing: -0.02em;
}
.tvq-testimonials__summary-out {
    color: var(--tvq-ink-soft);
    font-size: 0.88rem;
}
.tvq-testimonials__summary-sep { color: var(--tvq-line-strong); }
.tvq-testimonials__summary-count { font-weight: 500; }
.tvq-testimonials__summary-verified {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    color: #16a34a;
    font-weight: 600;
}

/* v20 — testimonial card: verified pill + source chip + trip line */
.tvq-testimonial__head { position: relative; }
.tvq-testimonial__badges {
    position: absolute;
    top: 0; right: 0;
    display: inline-flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 4px;
}
.tvq-testimonial__verified {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    background: #ecfdf5;
    color: #16a34a;
    border: 1px solid #bbf7d0;
    border-radius: 999px;
    padding: 2px 8px;
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}
.tvq-testimonial__source {
    background: var(--tvq-bg-tint);
    color: var(--tvq-ink-soft);
    border-radius: 999px;
    padding: 2px 8px;
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.02em;
}
.tvq-testimonial__trip {
    margin: -4px 0 10px 0;
    padding: 4px 10px;
    display: inline-block;
    background: var(--tvq-bg-tint);
    color: var(--tvq-ink-soft);
    border-radius: 999px;
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.02em;
}

/* ---- Destination gallery grid ---- */
.tvq-gallery__grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 8px;
    max-width: 1100px;
    margin: 0 auto;
}
.tvq-gallery__tile {
    position: relative;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    border-radius: 12px;
    border: 0;
    padding: 0;
    cursor: pointer;
    background: var(--tvq-bg-soft);
    transition: transform 0.18s var(--tvq-ease);
}
.tvq-gallery__tile:hover { transform: scale(0.98); }
.tvq-gallery__tile img {
    width: 100%; height: 100%;
    object-fit: cover;
    transition: transform 0.5s var(--tvq-ease);
}
.tvq-gallery__tile:hover img { transform: scale(1.06); }

/* Make every 5th tile span 2 columns + 2 rows for visual variety */
.tvq-gallery__tile:nth-child(7n+1) {
    grid-column: span 2;
    grid-row: span 2;
}
@media (max-width: 720px) {
    .tvq-gallery__tile:nth-child(7n+1) {
        grid-column: span 1;
        grid-row: span 1;
    }
}

/* Gallery lightbox */
.tvq-gallery-lightbox {
    position: fixed;
    inset: 0;
    z-index: 105;
    display: flex;
    align-items: center;
    justify-content: center;
    animation: tvq-fade 0.22s var(--tvq-ease);
}
.tvq-gallery-lightbox[hidden] { display: none !important; }
.tvq-gallery-lightbox__backdrop {
    position: absolute; inset: 0;
    background: rgba(9, 20, 19, 0.92);
}
.tvq-gallery-lightbox__stage {
    position: relative;
    width: min(96vw, 1200px);
    height: min(92vh, 800px);
    display: flex;
    align-items: center;
    justify-content: center;
}
.tvq-gallery-lightbox__img {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
    border-radius: 8px;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.6);
}
.tvq-gallery-lightbox__close {
    position: absolute;
    top: -8px; right: 8px;
    z-index: 2;
    width: 40px; height: 40px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.16);
    backdrop-filter: blur(6px);
    border: 0;
    color: #ffffff;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background 0.15s var(--tvq-ease),
                transform 0.15s var(--tvq-ease);
}
.tvq-gallery-lightbox__close:hover {
    background: rgba(255, 255, 255, 0.28);
    transform: rotate(90deg);
}
.tvq-gallery-lightbox__arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 48px; height: 48px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.16);
    backdrop-filter: blur(6px);
    border: 0;
    color: #ffffff;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background 0.15s var(--tvq-ease);
}
.tvq-gallery-lightbox__arrow--prev { left: -16px; }
.tvq-gallery-lightbox__arrow--next { right: -16px; }
.tvq-gallery-lightbox__arrow:hover { background: rgba(255, 255, 255, 0.28); }
.tvq-gallery-lightbox__caption {
    position: absolute;
    left: 0; right: 0; bottom: -40px;
    text-align: center;
    color: rgba(255, 255, 255, 0.84);
    font-size: 0.88rem;
    pointer-events: none;
}
@media (max-width: 700px) {
    .tvq-gallery-lightbox__arrow--prev { left: 4px; }
    .tvq-gallery-lightbox__arrow--next { right: 4px; }
    .tvq-gallery-lightbox__close { top: 4px; right: 4px; }
}

/* ================================================================
   TOUR TANGO v11 — reactions + ask-about-day + save-for-later
   ================================================================ */

/* ---- Heart reaction button (used on day + hotel cards) ---- */
.tvq-day__react {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-top: 14px;
    padding-top: 12px;
    border-top: 1px dashed var(--tvq-line);
}
.tvq-hotel__react {
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px dashed var(--tvq-line);
}
.tvq-react {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 5px 10px;
    background: var(--tvq-bg-soft);
    border: 1px solid var(--tvq-line);
    border-radius: var(--tvq-radius-pill);
    font-family: inherit;
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--tvq-ink-soft);
    cursor: pointer;
    transition: background 0.15s var(--tvq-ease),
                color 0.15s var(--tvq-ease),
                border-color 0.15s var(--tvq-ease),
                transform 0.15s var(--tvq-ease);
}
.tvq-react:hover {
    background: rgba(245, 0, 0, 0.08);
    color: var(--tvq-accent-deep);
    border-color: var(--tvq-accent);
    transform: translateY(-1px);
}
.tvq-react__icon { display: inline-flex; align-items: center; }
.tvq-react--loved {
    background: rgba(245, 0, 0, 0.10);
    color: var(--tvq-accent);
    border-color: var(--tvq-accent);
    cursor: default;
}
.tvq-react--loved .tvq-react__icon svg { fill: currentColor; }
.tvq-react--bump { animation: tvq-react-bump 0.4s var(--tvq-ease); }
@keyframes tvq-react-bump {
    0% { transform: scale(1); }
    40% { transform: scale(1.18); }
    100% { transform: scale(1); }
}
.tvq-react__count {
    font-variant-numeric: tabular-nums;
    min-width: 12px;
    text-align: center;
}

/* ---- Ask-about-this-day WhatsApp link ---- */
.tvq-day__ask {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 5px 10px;
    background: rgba(37, 211, 102, 0.10);
    color: #128C7E !important;
    text-decoration: none !important;
    border: 1px solid rgba(37, 211, 102, 0.30);
    border-radius: var(--tvq-radius-pill);
    font-size: 0.78rem;
    font-weight: 600;
    transition: background 0.15s var(--tvq-ease),
                transform 0.15s var(--tvq-ease);
}
.tvq-day__ask:hover {
    background: rgba(37, 211, 102, 0.18);
    transform: translateY(-1px);
}

/* ---- Save-for-later floating pill ---- */
.tvq-save-pill {
    position: fixed;
    bottom: 24px;
    left: 24px;
    z-index: 95;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 16px;
    background: rgba(255, 255, 255, 0.96);
    color: var(--tvq-ink);
    border: 1px solid var(--tvq-line);
    border-radius: var(--tvq-radius-pill);
    box-shadow: 0 12px 28px rgba(9, 20, 19, 0.14);
    backdrop-filter: blur(8px);
    cursor: pointer;
    font-family: inherit;
    font-weight: 700;
    font-size: 0.82rem;
    transition: transform 0.15s var(--tvq-ease),
                box-shadow 0.15s var(--tvq-ease);
}
.tvq-save-pill:hover {
    transform: translateY(-2px);
    box-shadow: 0 18px 36px rgba(9, 20, 19, 0.20);
}
@media (max-width: 640px) {
    .tvq-save-pill { bottom: 84px; left: 14px; padding: 8px 12px; font-size: 0.76rem; }
}
html[dir="rtl"] .tvq-save-pill { left: auto; right: 24px; }

/* ---- Save-for-later modal ---- */
.tvq-save-modal {
    position: fixed;
    inset: 0;
    z-index: 110;
    display: flex;
    align-items: center;
    justify-content: center;
}
.tvq-save-modal[hidden] { display: none !important; }
.tvq-save-modal__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(9, 20, 19, 0.55);
    backdrop-filter: blur(6px);
    animation: tvq-fade 0.22s var(--tvq-ease);
}
.tvq-save-modal__stage {
    position: relative;
    width: min(94vw, 460px);
    max-height: 92vh;
    overflow-y: auto;
    background: #ffffff;
    border-radius: 22px;
    padding: 32px 28px 26px;
    box-shadow: 0 30px 80px rgba(9, 20, 19, 0.36);
    animation: tvq-modal-pop 0.28s var(--tvq-ease);
}
.tvq-save-modal__close {
    position: absolute;
    top: 12px; right: 12px;
    width: 36px; height: 36px;
    border-radius: 50%;
    background: var(--tvq-bg-soft);
    border: 0;
    color: var(--tvq-ink-soft);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background 0.15s var(--tvq-ease),
                transform 0.15s var(--tvq-ease);
}
.tvq-save-modal__close:hover {
    background: var(--tvq-bg-tint);
    color: var(--tvq-accent-deep);
    transform: rotate(90deg);
}
.tvq-save-modal__head { margin-bottom: 18px; }
.tvq-save-modal__kicker {
    display: inline-block;
    margin-bottom: 6px;
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--tvq-accent);
}
.tvq-save-modal__title {
    margin: 0 0 6px;
    font-size: clamp(1.3rem, 3vw, 1.5rem);
    line-height: 1.2;
    color: var(--tvq-ink);
}
.tvq-save-modal__sub {
    margin: 0 0 14px;
    color: var(--tvq-ink-soft);
    font-size: 0.92rem;
    line-height: 1.5;
}
.tvq-save-modal__field {
    display: block;
    margin-bottom: 12px;
}
.tvq-save-modal__field span {
    display: block;
    margin-bottom: 5px;
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--tvq-ink);
}
.tvq-save-modal__field span small {
    font-weight: 500;
    color: var(--tvq-ink-soft);
}
.tvq-save-modal__field input {
    width: 100%;
    padding: 10px 12px;
    background: var(--tvq-bg-soft);
    border: 1px solid var(--tvq-line);
    border-radius: 10px;
    font-family: inherit;
    font-size: 0.92rem;
    color: var(--tvq-ink);
    transition: border-color 0.15s var(--tvq-ease),
                background 0.15s var(--tvq-ease);
}
.tvq-save-modal__field input:focus {
    outline: none;
    background: #ffffff;
    border-color: var(--tvq-accent);
    box-shadow: 0 0 0 3px rgba(245, 0, 0, 0.12);
}
.tvq-save-modal__field--error input,
input.tvq-save-modal__field--error {
    border-color: var(--tvq-accent);
    background: rgba(245, 0, 0, 0.04);
}
.tvq-save-modal__actions {
    display: flex;
    gap: 10px;
    justify-content: flex-end;
    margin-top: 14px;
}
.tvq-save-modal__check {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 72px; height: 72px;
    margin: 6px auto 14px;
    background: rgba(16, 185, 129, 0.12);
    color: var(--tvq-success);
    border-radius: 50%;
    animation: tvq-success-pop 0.5s var(--tvq-ease);
}
[data-save-step="success"] {
    text-align: center;
}
[data-save-step="success"] .tvq-save-modal__actions {
    justify-content: center;
}

/* ================================================================
   TOUR TANGO v14 — accessibility & motion preferences
   ================================================================ */

/* Skip-to-content link — invisible until keyboard-focused, then a
   high-contrast pill in the top-left of the viewport. */
.tvq-skip {
    position: absolute;
    top: 8px;
    left: 8px;
    z-index: 200;
    background: var(--tvq-ink);
    color: #ffffff !important;
    padding: 10px 18px;
    border-radius: 8px;
    font-weight: 700;
    font-size: 0.92rem;
    text-decoration: none !important;
    transform: translateY(-200%);
    transition: transform 0.18s var(--tvq-ease);
}
.tvq-skip:focus {
    transform: translateY(0);
    outline: 2px solid var(--tvq-accent);
    outline-offset: 2px;
}

/* Honour the user's motion preference: collapse animations to
   near-instant for those who request reduced motion. Doesn't
   affect functionality — buttons still work, transitions just
   no longer dance. */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
    .tvq-hero__greeting-wave { animation: none !important; }
    .tvq-soundtrack__hint-dot { animation: none !important; }
    .tvq-countdown--urgent { animation: none !important; }
}

/* Sharper focus ring on every interactive element (helps keyboard
   navigation). The previous styles relied on browser defaults. */
.tvq-btn:focus-visible,
.tvq-react:focus-visible,
.tvq-util-btn:focus-visible,
.tvq-deposit-pill:focus-visible,
.tvq-reason-pill:focus-visible,
.tvq-faq__q:focus-visible,
.tvq-dropdown__item:focus-visible {
    outline: 2px solid var(--tvq-accent);
    outline-offset: 2px;
}

/* ================================================================
   TOUR TANGO v19 — multi-photo day carousel + scroll-driven map pulse
   ================================================================ */

/* The carousel container reuses the .tvq-day__photo aspect-ratio shell;
   its track holds N slides side-by-side and translates X to navigate. */
/* v23 carousel: lives in column 1 by default (column 2 on even days
   via the magazine alternation rule above). On mobile it stacks
   above the body so portrait photos still get full width. */
.tvq-day__carousel {
    grid-column: 1;
    grid-row: 1;
    position: relative;
    margin: 0;
    /* Photos breathe: 4/3 default ratio favours portrait-friendly
       crops (Siq, monastery columns, narrow canyons) while still
       working for landscape shots. Tablet+ overrides to 5/4 for
       a slightly tighter editorial frame. */
    aspect-ratio: 4 / 3;
    overflow: hidden;
    background: var(--tvq-bg-soft);
    border-radius: 20px;
    box-shadow: 0 18px 48px -20px rgba(15, 23, 42, 0.28),
                0 6px 16px -8px rgba(15, 23, 42, 0.12);
    transition: box-shadow 0.5s var(--tvq-ease),
                transform 0.5s var(--tvq-ease);
}
@media (min-width: 780px) {
    .tvq-day__carousel {
        aspect-ratio: 5 / 4;
        max-height: 540px;
    }
}
.tvq-day:hover .tvq-day__carousel {
    box-shadow: 0 28px 64px -22px rgba(15, 23, 42, 0.38),
                0 12px 28px -12px rgba(15, 23, 42, 0.16);
}

/* Floating "Day N · date" badge overlaying the carousel bottom-left.
   When the carousel renders, the static .tvq-day__marker beside the
   body is hidden (see rule further down). When there's no photo, the
   static marker shows instead. */
.tvq-day__carousel-badge {
    position: absolute;
    left: 18px;
    bottom: 18px;
    z-index: 3;
    display: inline-flex;
    align-items: baseline;
    gap: 10px;
    padding: 8px 16px 8px 14px;
    background: rgba(255, 255, 255, 0.92);
    backdrop-filter: blur(10px) saturate(140%);
    -webkit-backdrop-filter: blur(10px) saturate(140%);
    border-radius: 999px;
    box-shadow: 0 8px 24px -10px rgba(0, 0, 0, 0.4);
    color: var(--tvq-ink);
    font-family: 'Plus Jakarta Sans', 'Inter', sans-serif;
    font-size: 0.82rem;
    font-weight: 600;
}
.tvq-day__carousel-badge-num {
    font-family: 'Fraunces', serif;
    font-size: 1.15rem;
    font-weight: 700;
    line-height: 1;
    color: var(--tvq-accent-dark);
}
.tvq-day__carousel-badge-date {
    color: var(--tvq-ink-mute);
    font-weight: 500;
}

/* When the carousel renders, hide the static marker pill -- the
   floating glass badge over the photo replaces it. The body's
   default grid-column placement is handled by the magazine rules
   above (column 2 for odd days, column 1 for even). */
.tvq-day:has(.tvq-day__carousel) > .tvq-day__marker {
    display: none;
}

/* v23 body typography: more editorial scale, more breathing room.
   Wraps don't break the way they did at narrow widths because the
   body is now ~half the viewport instead of a sliver. */
.tvq-day__body {
    grid-column: 2;
    grid-row: 1;
    padding: 0;
}
@media (max-width: 779px) {
    .tvq-day__body {
        grid-column: 1;
        grid-row: 2;
    }
}
.tvq-day__carousel-track {
    display: flex;
    width: 100%;
    height: 100%;
    transition: transform 0.45s var(--tvq-ease);
    will-change: transform;
}
.tvq-day__slide {
    flex: 0 0 100%;
    height: 100%;
    position: relative;
    overflow: hidden;
}
.tvq-day__slide img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    /* Tour Tango v21 — Ken Burns: slow zoom + pan that loops back
       and forth so the still photo feels cinematic. The alternate
       direction keeps it from "snapping" back at the end. */
    animation: tvq-kenburns 14s ease-in-out infinite alternate;
    transform-origin: 50% 50%;
}
@keyframes tvq-kenburns {
    from { transform: scale(1)    translate(0, 0); }
    to   { transform: scale(1.06) translate(-2%, 1%); }
}
@media (prefers-reduced-motion: reduce) {
    .tvq-day__slide img { animation: none; }
}
/* Slight emphasis on hover (overrides the keyframe end-state). */
.tvq-day:hover .tvq-day__slide img { animation-play-state: paused; }
.tvq-day__slide-caption {
    position: absolute;
    left: 16px; right: 16px; bottom: 12px;
    color: #ffffff;
    font-size: 0.82rem;
    font-weight: 600;
    text-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
    pointer-events: none;
}
.tvq-day__carousel::after {
    content: "";
    position: absolute; inset: 0;
    background: linear-gradient(180deg, transparent 60%, rgba(9, 20, 19, 0.18) 100%);
    pointer-events: none;
}
.tvq-day__carousel-arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 36px; height: 36px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.78);
    backdrop-filter: blur(8px);
    border: 0;
    color: var(--tvq-ink);
    cursor: pointer;
    opacity: 0;
    transition: opacity 0.18s var(--tvq-ease),
                background 0.18s var(--tvq-ease),
                transform 0.18s var(--tvq-ease);
    z-index: 2;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.tvq-day:hover .tvq-day__carousel-arrow,
.tvq-day__carousel:focus-within .tvq-day__carousel-arrow {
    opacity: 1;
}
.tvq-day__carousel-arrow:hover {
    background: #ffffff;
    transform: translateY(-50%) scale(1.08);
}
.tvq-day__carousel-arrow--prev { left: 12px; }
.tvq-day__carousel-arrow--next { right: 12px; }
.tvq-day__carousel-dots {
    position: absolute;
    left: 0; right: 0; bottom: 10px;
    display: flex;
    justify-content: center;
    gap: 6px;
    z-index: 2;
}
.tvq-day__carousel-dot {
    width: 7px; height: 7px;
    border-radius: 50%;
    border: 0;
    background: rgba(255, 255, 255, 0.5);
    cursor: pointer;
    padding: 0;
    transition: background 0.18s var(--tvq-ease),
                transform 0.18s var(--tvq-ease);
}
.tvq-day__carousel-dot--active {
    background: #ffffff;
    transform: scale(1.4);
}
@media (max-width: 640px) {
    .tvq-day__carousel-arrow { display: none; }
}

/* Hero parallax — JS sets translate-y; we just need will-change.
   Also provides standalone sizing for the trip-landing hero where
   the photo div doesn't share the `.tvq-hero__bg` class. */
.tvq-hero__photo {
    position: absolute;
    inset: 0;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    z-index: -2;
    will-change: transform;
}

/* Scroll-driven map pin highlight. JS adds .tvq-pin--active to the
   marker DOM as the matching day enters the viewport. */
.tvq-pin--active {
    z-index: 1000 !important;
}
.tvq-pin--active .tvq-pin {
    background: var(--tvq-accent);
    color: #ffffff;
    transform: scale(1.18);
    box-shadow: 0 0 0 6px rgba(245, 0, 0, 0.18),
                0 0 0 12px rgba(245, 0, 0, 0.08);
    animation: tvq-pin-pulse 1.6s ease-in-out infinite;
}
@keyframes tvq-pin-pulse {
    0%, 100% {
        box-shadow: 0 0 0 6px rgba(245, 0, 0, 0.18),
                    0 0 0 12px rgba(245, 0, 0, 0.08);
    }
    50% {
        box-shadow: 0 0 0 10px rgba(245, 0, 0, 0.10),
                    0 0 0 22px rgba(245, 0, 0, 0.04);
    }
}

/* ================================================================
   TOUR TANGO v20 — AI assistant pill + chat panel
   ================================================================ */

.tvq-ai-pill {
    position: fixed;
    bottom: 92px;
    right: 24px;
    z-index: 96;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 11px 18px;
    background: linear-gradient(135deg, #DBBBF5 0%, #31C5FF 100%);
    color: var(--tvq-ink);
    font-family: inherit;
    font-weight: 700;
    font-size: 0.84rem;
    border: 0;
    border-radius: var(--tvq-radius-pill);
    box-shadow: 0 14px 30px rgba(49, 197, 255, 0.36);
    cursor: pointer;
    animation: tvq-ai-pulse 2.4s ease-in-out infinite;
    transition: transform 0.15s var(--tvq-ease);
}
.tvq-ai-pill:hover { transform: translateY(-2px); }
.tvq-ai-pill[hidden] { display: none !important; }
.tvq-ai-pill__dot {
    width: 6px; height: 6px;
    border-radius: 50%;
    background: #1ED760;
    box-shadow: 0 0 0 0 rgba(30, 215, 96, 0.6);
    animation: tvq-ai-dot-blink 1.8s ease-in-out infinite;
}
@keyframes tvq-ai-pulse {
    0%, 100% { box-shadow: 0 14px 30px rgba(49, 197, 255, 0.36); }
    50% { box-shadow: 0 18px 40px rgba(219, 187, 245, 0.50); }
}
@keyframes tvq-ai-dot-blink {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.4; }
}
@media (max-width: 640px) {
    .tvq-ai-pill { bottom: 84px; right: 14px; padding: 9px 14px; font-size: 0.78rem; }
}
html[dir="rtl"] .tvq-ai-pill { right: auto; left: 24px; }

/* ---- AI chat modal panel ---- */
.tvq-ai-modal {
    position: fixed;
    inset: 0;
    z-index: 108;
    display: flex;
    align-items: flex-end;
    justify-content: flex-end;
}
.tvq-ai-modal[hidden] { display: none !important; }
.tvq-ai-modal__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(9, 20, 19, 0.40);
    backdrop-filter: blur(4px);
    animation: tvq-fade 0.18s var(--tvq-ease);
}
.tvq-ai-modal__panel {
    position: relative;
    width: min(96vw, 440px);
    max-height: 92vh;
    margin: 16px;
    background: #ffffff;
    border-radius: 18px;
    box-shadow: 0 30px 80px rgba(9, 20, 19, 0.36);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    animation: tvq-ai-pop 0.22s var(--tvq-ease);
}
@keyframes tvq-ai-pop {
    from { opacity: 0; transform: translateY(20px); }
    to { opacity: 1; transform: translateY(0); }
}
@media (min-width: 720px) {
    .tvq-ai-modal__panel {
        margin: 0 24px 92px 0;
        max-height: 70vh;
    }
}

.tvq-ai-modal__head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 10px;
    padding: 16px 18px 12px;
    border-bottom: 1px solid var(--tvq-line);
}
.tvq-ai-modal__kicker {
    display: inline-block;
    margin-bottom: 2px;
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--tvq-accent);
}
.tvq-ai-modal__title {
    margin: 0;
    font-size: 1.05rem;
    color: var(--tvq-ink);
    line-height: 1.2;
}
.tvq-ai-modal__close {
    width: 30px; height: 30px;
    border: 0;
    background: var(--tvq-bg-soft);
    color: var(--tvq-ink-soft);
    border-radius: 50%;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background 0.15s var(--tvq-ease),
                color 0.15s var(--tvq-ease),
                transform 0.15s var(--tvq-ease);
}
.tvq-ai-modal__close:hover {
    background: var(--tvq-bg-tint);
    color: var(--tvq-accent-deep);
    transform: rotate(90deg);
}

.tvq-ai-modal__messages {
    flex: 1 1 auto;
    overflow-y: auto;
    padding: 14px 16px;
    display: flex;
    flex-direction: column;
    gap: 8px;
    background: var(--tvq-bg-soft);
}
.tvq-ai-msg {
    max-width: 86%;
    padding: 10px 13px;
    border-radius: 14px;
    font-size: 0.88rem;
    line-height: 1.45;
    white-space: pre-wrap;
}
.tvq-ai-msg--seed { font-size: 0.84rem; color: var(--tvq-ink-soft); }
.tvq-ai-msg--bot {
    align-self: flex-start;
    background: #ffffff;
    color: var(--tvq-ink);
    border: 1px solid var(--tvq-line);
}
.tvq-ai-msg--user {
    align-self: flex-end;
    background: var(--tvq-ink);
    color: #ffffff;
}
.tvq-ai-msg--typing {
    color: var(--tvq-ink-soft);
    font-style: italic;
    font-size: 0.84rem;
}

.tvq-ai-modal__suggestions {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    padding: 10px 16px 0;
    background: #ffffff;
}
.tvq-ai-chip {
    padding: 6px 12px;
    border: 1px solid var(--tvq-line);
    border-radius: var(--tvq-radius-pill);
    background: #ffffff;
    color: var(--tvq-ink);
    font-family: inherit;
    font-size: 0.74rem;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s var(--tvq-ease),
                color 0.15s var(--tvq-ease),
                border-color 0.15s var(--tvq-ease);
}
.tvq-ai-chip:hover {
    background: var(--tvq-bg-tint);
    color: var(--tvq-accent-deep);
    border-color: var(--tvq-accent);
}

.tvq-ai-modal__form {
    display: flex;
    gap: 8px;
    padding: 12px 16px;
    background: #ffffff;
    border-top: 1px solid var(--tvq-line);
}
.tvq-ai-modal__form input {
    flex: 1 1 auto;
    padding: 10px 14px;
    border: 1px solid var(--tvq-line);
    border-radius: 999px;
    font-family: inherit;
    font-size: 0.9rem;
    color: var(--tvq-ink);
    background: var(--tvq-bg-soft);
    transition: border-color 0.15s var(--tvq-ease),
                background 0.15s var(--tvq-ease);
}
.tvq-ai-modal__form input:focus {
    outline: none;
    background: #ffffff;
    border-color: var(--tvq-accent);
    box-shadow: 0 0 0 3px rgba(245, 0, 0, 0.12);
}
.tvq-ai-modal__send {
    width: 38px; height: 38px;
    border: 0;
    background: var(--tvq-accent);
    color: #ffffff;
    border-radius: 50%;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: transform 0.12s var(--tvq-ease),
                background 0.15s var(--tvq-ease);
}
.tvq-ai-modal__send:hover {
    background: var(--tvq-accent-dark);
    transform: scale(1.06);
}
.tvq-ai-modal__fineprint {
    margin: 0;
    padding: 6px 16px 12px;
    background: #ffffff;
    color: var(--tvq-ink-soft);
    font-size: 0.7rem;
    text-align: center;
}

/* Hero video (Tour Tango v20) — sits over the photo bg, fills the
   frame, plays muted-and-looping. */
.tvq-hero__video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    z-index: 0;
    pointer-events: none;
}
@media (prefers-reduced-motion: reduce) {
    .tvq-hero__video { display: none; }
}
@media (prefers-reduced-data: reduce) {
    .tvq-hero__video { display: none; }
}

/* ================================================================
   TOUR TANGO v20 — live presence pill + social-proof toast
   ================================================================ */

.tvq-presence {
    position: fixed;
    top: 70px;
    right: 24px;
    z-index: 91;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 7px 14px;
    background: rgba(255, 255, 255, 0.95);
    color: var(--tvq-ink);
    border: 1px solid var(--tvq-line);
    border-radius: var(--tvq-radius-pill);
    box-shadow: 0 8px 18px rgba(9, 20, 19, 0.10);
    backdrop-filter: blur(8px);
    font-size: 0.78rem;
    font-weight: 600;
    animation: tvq-presence-in 0.35s var(--tvq-ease);
}
.tvq-presence[hidden] { display: none !important; }
.tvq-presence__dot {
    width: 8px; height: 8px;
    border-radius: 50%;
    background: var(--tvq-success);
    box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.5);
    animation: tvq-presence-pulse 1.6s ease-in-out infinite;
}
.tvq-presence__count {
    font-weight: 800;
    color: var(--tvq-success);
    font-variant-numeric: tabular-nums;
}
@keyframes tvq-presence-in {
    from { opacity: 0; transform: translateY(-8px); }
    to { opacity: 1; transform: translateY(0); }
}
@keyframes tvq-presence-pulse {
    0%, 100% { box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.5); }
    50%      { box-shadow: 0 0 0 6px rgba(16, 185, 129, 0); }
}
@media (max-width: 640px) {
    .tvq-presence { top: 56px; right: 14px; padding: 5px 10px; font-size: 0.72rem; }
}
html[dir="rtl"] .tvq-presence { right: auto; left: 24px; }

/* ---- Social-proof toast (bottom-left) ---- */
.tvq-social-toast {
    position: fixed;
    bottom: 92px;
    left: 24px;
    z-index: 92;
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 16px;
    background: rgba(9, 20, 19, 0.94);
    color: #ffffff;
    border-radius: 14px;
    box-shadow: 0 18px 40px rgba(9, 20, 19, 0.36);
    backdrop-filter: blur(10px);
    max-width: min(320px, calc(100vw - 32px));
    animation: tvq-toast-in 0.4s var(--tvq-ease);
    transition: opacity 0.5s var(--tvq-ease),
                transform 0.5s var(--tvq-ease);
}
.tvq-social-toast[hidden] { display: none !important; }
.tvq-social-toast--out {
    opacity: 0;
    transform: translateY(12px);
}
.tvq-social-toast__avatar {
    width: 36px; height: 36px;
    border-radius: 50%;
    background: rgba(255, 240, 90, 0.18);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    flex-shrink: 0;
}
.tvq-social-toast__body {
    font-size: 0.86rem;
    line-height: 1.35;
}
.tvq-social-toast__body strong {
    font-weight: 800;
}
@keyframes tvq-toast-in {
    from { opacity: 0; transform: translateY(20px); }
    to { opacity: 1; transform: translateY(0); }
}
@media (max-width: 640px) {
    .tvq-social-toast {
        bottom: 76px;
        left: 12px;
        right: 12px;
        max-width: none;
    }
}
html[dir="rtl"] .tvq-social-toast { left: auto; right: 24px; }

/* Tour Tango v20.1 — YouTube/Vimeo iframe hero needs a different
   sizing trick than <video> because iframes ignore object-fit.
   Make the iframe larger than the hero so 16:9 cover any aspect,
   then translate it back to centre. pointer-events:none keeps the
   YouTube chrome from intercepting clicks. */
.tvq-hero__video--iframe {
    /* Reset .tvq-hero__video's `inset: 0` shorthand FIRST, then set
       the centering top/left. If we wrote inset:auto AFTER top/left
       it would re-zero them and the iframe would land at 0,0 instead
       of centred. */
    position: absolute;
    inset: auto;
    top: 50%;
    left: 50%;
    width: max(177.78vh, 100vw);
    height: max(56.25vw, 100vh);
    transform: translate(-50%, -50%);
    pointer-events: none;
    border: 0;
    object-fit: unset;
    z-index: 0;
}

/* ================================================================
   TOUR TANGO v23 — landing-page city cards (replaces the empty
   pink rectangles from v15)
   ================================================================ */

.tvq-cities__grid {
    display: grid;
    /* Default: responsive auto-fit */
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 18px;
    max-width: 1100px;
    margin: 28px auto 0;
}
/* Wide screens: cap at 3 columns so 5 cards always render as 3+2,
   never 4+1 with an orphan card */
@media (min-width: 880px) {
    .tvq-cities__grid {
        grid-template-columns: repeat(3, 1fr);
    }
}
/* Mid screens: 2 columns */
@media (min-width: 540px) and (max-width: 879px) {
    .tvq-cities__grid {
        grid-template-columns: repeat(2, 1fr);
    }
}
/* Stop pill (top-left) */
.tvq-city-card__stop {
    position: absolute;
    top: 14px;
    left: 14px;
    padding: 4px 10px;
    background: rgba(255,255,255,0.92);
    color: #dc2626;
    border-radius: 999px;
    font-size: 0.7rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    z-index: 2;
    backdrop-filter: blur(4px);
}
/* Nights pill (top-right) */
.tvq-city-card__nights {
    position: absolute;
    top: 14px;
    right: 14px;
    padding: 4px 10px;
    background: rgba(15,23,42,0.55);
    color: #fff;
    border-radius: 999px;
    font-size: 0.72rem;
    font-weight: 700;
    z-index: 2;
    backdrop-filter: blur(4px);
}
/* Activity / description line under the city name */
.tvq-city-card__activity,
.tvq-city-card__desc {
    margin: 4px 0 0;
    font-size: 0.84rem;
    line-height: 1.4;
    color: rgba(255,255,255,0.86);
    font-weight: 500;
    /* Truncate to 2 lines */
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
/* Better fallback when no image — branded gradient with letter watermark */
.tvq-city-card--fallback {
    background: linear-gradient(135deg, #dc2626 0%, #7c1d1d 100%);
}
.tvq-city-card--fallback::before {
    content: attr(data-letter);
    position: absolute;
    top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    font-family: Georgia, 'Times New Roman', serif;
    font-size: 7rem;
    font-weight: 800;
    color: rgba(255,255,255,0.14);
    line-height: 1;
    pointer-events: none;
    user-select: none;
    z-index: 0;
}
.tvq-city-card--fallback::after {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(circle at 1px 1px, rgba(255,255,255,0.05) 1px, transparent 0);
    background-size: 18px 18px;
    pointer-events: none;
    z-index: 0;
}
.tvq-city-card--fallback .tvq-city-card__overlay {
    display: none;
}
.tvq-city-card {
    position: relative;
    aspect-ratio: 4 / 5;
    border-radius: 16px;
    overflow: hidden;
    background:
        linear-gradient(135deg,
            var(--tvq-ink) 0%,
            #1a2a28 100%);
    color: #ffffff;
    transition: transform 0.18s var(--tvq-ease),
                box-shadow 0.18s var(--tvq-ease);
    box-shadow: 0 6px 18px rgba(9, 20, 19, 0.08);
}
.tvq-city-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 18px 36px rgba(9, 20, 19, 0.18);
}
.tvq-city-card__img {
    position: absolute;
    inset: 0;
    width: 100%; height: 100%;
    object-fit: cover;
    transition: transform 0.5s var(--tvq-ease);
}
.tvq-city-card:hover .tvq-city-card__img { transform: scale(1.06); }
.tvq-city-card__overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg,
        transparent 30%, rgba(9, 20, 19, 0.85) 100%);
}
.tvq-city-card__body {
    position: absolute;
    inset: auto 0 0 0;
    padding: 18px 18px 16px;
    display: flex;
    flex-direction: column;
    gap: 4px;
    z-index: 1;
}
.tvq-city-card__pin {
    display: inline-flex;
    align-items: center;
    color: var(--tvq-accent);
    margin-bottom: 4px;
}
.tvq-city-card__name {
    font-size: 1.25rem;
    font-weight: 800;
    letter-spacing: -0.01em;
    line-height: 1.1;
    color: #ffffff !important;
    margin: 0;        /* reset h3 default margin */
    text-shadow: 0 2px 8px rgba(0,0,0,0.45);
}
.tvq-city-card__num {
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    opacity: 0.7;
}
/* No-image fallback — readable city name on a richer background. */
.tvq-city-card:not(:has(.tvq-city-card__img)) {
    background:
        radial-gradient(ellipse 80% 60% at 30% 20%,
            rgba(245, 0, 0, 0.18), transparent 60%),
        radial-gradient(ellipse 60% 50% at 80% 90%,
            rgba(49, 197, 255, 0.16), transparent 60%),
        linear-gradient(135deg,
            var(--tvq-ink) 0%, #1f2f2c 100%);
}

/* ================================================================
   TOUR TANGO v24 — public trip catalogue at /trips
   ================================================================ */

.tvq-catalog-page {
    background: var(--tvq-bg-soft);
}

.tvq-catalog-hero {
    padding: 88px 24px 48px;
    background:
        radial-gradient(ellipse 60% 60% at 80% 30%,
            rgba(245, 0, 0, 0.10), transparent 60%),
        linear-gradient(180deg, #ffffff 0%, var(--tvq-bg-soft) 100%);
    border-bottom: 1px solid var(--tvq-line);
}
.tvq-catalog-hero__inner {
    max-width: 880px;
    margin: 0 auto;
    text-align: center;
}
.tvq-catalog-hero__kicker {
    display: inline-block;
    padding: 4px 12px;
    background: rgba(245, 0, 0, 0.10);
    color: var(--tvq-accent);
    border-radius: 99px;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    margin-bottom: 16px;
}
.tvq-catalog-hero__title {
    margin: 0 0 8px;
    font-size: clamp(2rem, 4vw, 3rem);
    color: var(--tvq-ink);
    letter-spacing: -0.02em;
    line-height: 1.05;
}
/* The route to a tailored trip, under the catalogue's promise to
   tailor one.
   
   It shipped as white text on a white-to-grey hero - present in the
   HTML, invisible on the screen. Fixing the colour made it visible
   and still made it look like a footnote, which is wrong for what it
   is: the highest-value thing this company sells. A designed trip is
   not a fallback for people who could not find a tour they liked.
   
   So it is a pill, borrowing the kicker chip's tint so it belongs to
   this page rather than arriving from somewhere else, and it stays
   quieter than Search - which is the primary action on a catalogue.
   Filled on hover, with the arrow moving the way the eye is going. */
.tvq-catalog-hero__tailor {
    margin-top: -16px;
    margin-bottom: 28px;
}
.tvq-catalog-hero__tailor a {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 9px 20px 9px 22px;
    border-radius: 999px;
    background: rgba(245, 0, 0, 0.07);
    border: 1px solid rgba(245, 0, 0, 0.22);
    color: var(--tvq-accent);
    font-size: 0.95rem;
    font-weight: 700;
    letter-spacing: -0.005em;
    text-decoration: none;
    transition: background .18s ease, border-color .18s ease,
                color .18s ease, transform .18s ease,
                box-shadow .18s ease;
}
.tvq-catalog-hero__tailor a .tvq-tailor-arrow {
    display: inline-block;
    transition: transform .18s ease;
}
.tvq-catalog-hero__tailor a:hover {
    background: var(--tvq-accent);
    border-color: var(--tvq-accent);
    color: #fff;
    transform: translateY(-1px);
    box-shadow: 0 6px 18px rgba(245, 0, 0, 0.24);
}
.tvq-catalog-hero__tailor a:hover .tvq-tailor-arrow {
    transform: translateX(3px);
}
.tvq-catalog-hero__tailor a:focus-visible {
    outline: 2px solid var(--tvq-accent);
    outline-offset: 3px;
}
/* The quiet half: it says what the pill is for without competing
   with it, so the pill can be short. */
.tvq-catalog-hero__tailor-note {
    display: block;
    margin-top: 9px;
    font-size: 0.88rem;
    color: var(--tvq-ink-soft);
}
@media (prefers-reduced-motion: reduce) {
    .tvq-catalog-hero__tailor a,
    .tvq-catalog-hero__tailor a .tvq-tailor-arrow {
        transition: none;
    }
    .tvq-catalog-hero__tailor a:hover {
        transform: none;
    }
}
.tvq-catalog-hero__sub {
    margin: 0 auto 28px;
    max-width: 560px;
    color: var(--tvq-ink-soft);
    font-size: 1.05rem;
    line-height: 1.5;
}
.tvq-catalog-search {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 6px 6px 6px 18px;
    background: #ffffff;
    border: 1px solid var(--tvq-line);
    border-radius: 999px;
    box-shadow: 0 6px 20px rgba(9, 20, 19, 0.06);
    width: 100%;
    max-width: 520px;
    color: var(--tvq-ink-soft);
}
.tvq-catalog-search input {
    flex: 1 1 auto;
    border: 0;
    outline: 0;
    padding: 10px 6px;
    background: transparent;
    font-family: inherit;
    font-size: 0.95rem;
    color: var(--tvq-ink);
    min-width: 0;
}
.tvq-catalog-search button {
    padding: 9px 18px;
    background: var(--tvq-accent);
    color: #ffffff;
    border: 0;
    border-radius: 999px;
    font-family: inherit;
    font-weight: 700;
    font-size: 0.85rem;
    cursor: pointer;
    transition: background 0.15s var(--tvq-ease);
}
.tvq-catalog-search button:hover { background: var(--tvq-accent-dark); }

/* ---- Body grid (sidebar + results) ---- */
.tvq-catalog-body {
    max-width: 1200px;
    margin: 0 auto;
    padding: 36px 24px 80px;
    display: grid;
    grid-template-columns: 240px 1fr;
    gap: 32px;
}
@media (max-width: 800px) {
    .tvq-catalog-body { grid-template-columns: 1fr; }
}

.tvq-catalog-filters {
    align-self: start;
    position: sticky;
    top: 24px;
}
.tvq-catalog-filters__group { margin-bottom: 22px; }
.tvq-catalog-filters__group h3 {
    margin: 0 0 10px;
    font-size: 0.78rem;
    color: var(--tvq-ink-soft);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-weight: 700;
}
.tvq-catalog-filters__group ul {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}
.tvq-catalog-filters__chip {
    display: inline-block;
    padding: 5px 12px;
    background: #ffffff;
    color: var(--tvq-ink);
    border: 1px solid var(--tvq-line);
    border-radius: 99px;
    font-size: 0.78rem;
    font-weight: 600;
    text-decoration: none;
    transition: background 0.15s var(--tvq-ease),
                color 0.15s var(--tvq-ease),
                border-color 0.15s var(--tvq-ease);
}
.tvq-catalog-filters__chip:hover {
    background: var(--tvq-bg-tint);
    color: var(--tvq-accent-deep);
    border-color: var(--tvq-accent);
}
.tvq-catalog-filters__chip--active {
    background: var(--tvq-ink);
    color: #ffffff;
    border-color: var(--tvq-ink);
}
.tvq-catalog-filters__clear {
    display: inline-block;
    margin-top: 10px;
    color: var(--tvq-accent);
    font-size: 0.82rem;
    font-weight: 700;
    text-decoration: none;
}
.tvq-catalog-filters__clear:hover { color: var(--tvq-accent-dark); }

/* ---- Results ---- */
.tvq-catalog-results__head {
    margin-bottom: 18px;
    color: var(--tvq-ink-soft);
    font-size: 0.92rem;
}
.tvq-catalog-results__head strong {
    color: var(--tvq-ink);
    font-size: 1.1rem;
}
.tvq-catalog-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 18px;
}
.tvq-catalog-card {
    display: flex;
    flex-direction: column;
    background: #ffffff;
    border: 1px solid var(--tvq-line);
    border-radius: 16px;
    overflow: hidden;
    text-decoration: none;
    color: inherit;
    transition: transform 0.18s var(--tvq-ease),
                box-shadow 0.18s var(--tvq-ease);
}
.tvq-catalog-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 14px 30px rgba(9, 20, 19, 0.12);
}
.tvq-catalog-card__media {
    position: relative;
    aspect-ratio: 16 / 10;
    background: var(--tvq-bg-soft);
    overflow: hidden;
}
.tvq-catalog-card__media img {
    width: 100%; height: 100%; object-fit: cover;
    transition: transform 0.5s var(--tvq-ease);
}
.tvq-catalog-card:hover .tvq-catalog-card__media img { transform: scale(1.06); }
.tvq-catalog-card__media-fallback {
    position: absolute; inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--tvq-line-strong);
    background:
        radial-gradient(ellipse 80% 60% at 30% 20%,
            rgba(245, 0, 0, 0.12), transparent 60%),
        linear-gradient(135deg, var(--tvq-ink) 0%, #1f2f2c 100%);
    color: rgba(255, 255, 255, 0.5);
}

.tvq-catalog-card__body {
    padding: 16px 18px 18px;
    display: flex;
    flex-direction: column;
    gap: 6px;
    flex: 1;
}
.tvq-catalog-card__kicker {
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--tvq-accent);
}
.tvq-catalog-card__title {
    margin: 0;
    font-size: 1.1rem;
    color: var(--tvq-ink);
    letter-spacing: -0.01em;
    line-height: 1.2;
}
.tvq-catalog-card__desc {
    margin: 4px 0 0;
    color: var(--tvq-ink-soft);
    font-size: 0.84rem;
    line-height: 1.45;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.tvq-catalog-card__meta {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin-top: 6px;
    font-size: 0.78rem;
    color: var(--tvq-ink-soft);
}
.tvq-catalog-card__meta span {
    display: inline-flex;
    align-items: center;
    gap: 4px;
}
.tvq-catalog-card__tags {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
    margin-top: 4px;
}
.tvq-catalog-card__tag {
    display: inline-block;
    padding: 2px 8px;
    background: var(--tvq-bg-soft);
    color: var(--tvq-ink-soft);
    border-radius: 99px;
    font-size: 0.7rem;
    font-weight: 600;
}
.tvq-catalog-card__cta {
    margin-top: auto;
    padding-top: 12px;
    color: var(--tvq-accent);
    font-size: 0.82rem;
    font-weight: 700;
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

.tvq-catalog-empty {
    text-align: center;
    padding: 60px 20px;
    color: var(--tvq-ink-soft);
}
.tvq-catalog-empty h3 {
    color: var(--tvq-ink);
    margin: 0 0 8px;
}
.tvq-catalog-empty a {
    color: var(--tvq-accent);
    font-weight: 700;
    text-decoration: none;
}

/* ================================================================
   TOUR TANGO v25 — pro trip page (stats strip, highlights, itinerary
   prose, similar trips, sticky CTA pill)
   ================================================================ */

/* ---- Stats strip just below the hero ---- */
.tvq-trip-stats {
    background: #ffffff;
    border-bottom: 1px solid var(--tvq-line);
    padding: 18px 24px;
    position: sticky;
    top: 0;
    z-index: 50;
    backdrop-filter: blur(10px);
    background: rgba(255, 255, 255, 0.94);
}
.tvq-trip-stats__inner {
    max-width: 1100px;
    margin: 0 auto;
    display: flex;
    flex-wrap: wrap;
    gap: 12px 28px;
    align-items: center;
}
.tvq-trip-stat {
    display: flex;
    flex-direction: column;
    line-height: 1.2;
    min-width: 0;
}
.tvq-trip-stat__label {
    font-size: 0.66rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--tvq-ink-soft);
    margin-bottom: 1px;
}
.tvq-trip-stat__value {
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--tvq-ink);
    font-variant-numeric: tabular-nums;
}
.tvq-trip-stat__value small {
    font-size: 0.74rem;
    color: var(--tvq-ink-soft);
    font-weight: 600;
    margin-left: 2px;
}
.tvq-trip-stat--price { margin-left: auto; }
.tvq-trip-stat--price .tvq-trip-stat__value {
    color: var(--tvq-accent);
    font-size: 1.1rem;
}
/* Difficulty colours */
.tvq-trip-stat__value--diff-easy        { color: #10b981; }
.tvq-trip-stat__value--diff-moderate    { color: #f5b400; }
.tvq-trip-stat__value--diff-challenging { color: #ea7c1c; }
.tvq-trip-stat__value--diff-strenuous   { color: var(--tvq-accent); }

@media (max-width: 600px) {
    .tvq-trip-stats { position: static; padding: 14px 16px; }
    .tvq-trip-stats__inner { gap: 10px 18px; }
    .tvq-trip-stat--price { margin-left: 0; }
    .tvq-trip-stat__value { font-size: 0.86rem; }
}

/* ---- Highlights box ---- */
.tvq-highlights__box {
    max-width: 760px;
    margin: 0 auto;
    background: var(--tvq-bg-tint);
    border: 1px solid rgba(245, 0, 0, 0.18);
    border-radius: 16px;
    padding: 24px 32px;
    color: var(--tvq-ink);
    font-size: 1.02rem;
    line-height: 1.7;
}
.tvq-highlights__box ul {
    margin: 0;
    padding-left: 22px;
}
.tvq-highlights__box li { margin-bottom: 6px; }
.tvq-highlights__box li::marker { color: var(--tvq-accent); }
.tvq-highlights__box p:first-child { margin-top: 0; }
.tvq-highlights__box p:last-child  { margin-bottom: 0; }

/* ---- Itinerary prose ---- */
.tvq-itinerary-prose__body {
    max-width: 760px;
    margin: 0 auto;
    font-size: 1.02rem;
    line-height: 1.7;
    color: var(--tvq-ink-soft);
}
.tvq-itinerary-prose__body h3 {
    color: var(--tvq-ink);
    margin: 24px 0 8px;
    font-size: 1.1rem;
    padding-left: 14px;
    border-left: 3px solid var(--tvq-accent);
}
.tvq-itinerary-prose__body h3:first-child { margin-top: 0; }
.tvq-itinerary-prose__body ul {
    padding-left: 22px;
    margin: 8px 0;
}
.tvq-itinerary-prose__body li::marker { color: var(--tvq-accent); }

/* ---- Similar trips ---- */
.tvq-similar-trips__grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 14px;
    max-width: 1100px;
    margin: 0 auto;
}
.tvq-similar-card {
    display: flex;
    flex-direction: column;
    background: #ffffff;
    border: 1px solid var(--tvq-line);
    border-radius: 14px;
    overflow: hidden;
    color: inherit;
    text-decoration: none;
    transition: transform 0.18s var(--tvq-ease),
                box-shadow 0.18s var(--tvq-ease);
}
.tvq-similar-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 14px 30px rgba(9, 20, 19, 0.10);
}
.tvq-similar-card__media {
    position: relative;
    aspect-ratio: 16 / 10;
    background: var(--tvq-bg-soft);
    overflow: hidden;
}
.tvq-similar-card__media img {
    width: 100%; height: 100%; object-fit: cover;
    transition: transform 0.5s var(--tvq-ease);
}
.tvq-similar-card:hover .tvq-similar-card__media img { transform: scale(1.04); }
.tvq-similar-card__media-fallback {
    position: absolute; inset: 0;
    display: flex; align-items: center; justify-content: center;
    background: linear-gradient(135deg, #dc2626 0%, #7c1d1d 100%);
    color: rgba(255, 255, 255, 0.92);
    overflow: hidden;
}
/* Big tour-name initial letter as a subtle watermark behind the pin */
.tvq-similar-card__media-fallback::before {
    content: attr(data-letter);
    position: absolute;
    top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    font-family: Georgia, 'Times New Roman', serif;
    font-size: 8rem;
    font-weight: 800;
    color: rgba(255,255,255,0.10);
    letter-spacing: -0.04em;
    line-height: 1;
    pointer-events: none;
    user-select: none;
}
/* Decorative grid pattern */
.tvq-similar-card__media-fallback::after {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(circle at 1px 1px, rgba(255,255,255,0.06) 1px, transparent 0);
    background-size: 20px 20px;
    pointer-events: none;
}
.tvq-similar-card__media-icon {
    position: relative;
    z-index: 1;
    width: 44px;
    height: 44px;
    color: rgba(255,255,255,0.95);
    filter: drop-shadow(0 4px 12px rgba(0,0,0,0.25));
}

/* =================================================================
   Inquiry success card — richer thank-you state (Phase UX v8)
   ================================================================= */
.tvq-inquiry-success {
    max-width: 560px;
    margin: 0 auto 28px;
    padding: 36px 32px 28px;
    background: linear-gradient(180deg, rgba(16,185,129,0.06) 0%, rgba(16,185,129,0.02) 100%);
    border: 1px solid rgba(16,185,129,0.25);
    border-radius: 18px;
    text-align: center;
    box-shadow: 0 12px 28px rgba(16,185,129,0.06);
    color: #fff;
}
.tvq-inquiry-success__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 64px;
    height: 64px;
    margin-bottom: 14px;
    background: #10b981;
    color: #fff;
    border-radius: 50%;
    box-shadow: 0 6px 16px rgba(16,185,129,0.35);
}
.tvq-inquiry-success__title {
    margin: 0 0 8px;
    font-size: 1.3rem;
    font-weight: 800;
    color: #fff;
    letter-spacing: -0.01em;
}
.tvq-inquiry-success__lead {
    margin: 0 0 24px;
    font-size: 0.98rem;
    line-height: 1.55;
    color: rgba(255,255,255,0.85);
}
.tvq-inquiry-success__lead strong { color: #fff; }
.tvq-inquiry-success__next {
    text-align: left;
    background: rgba(255,255,255,0.04);
    border: 1px solid rgba(255,255,255,0.10);
    border-radius: 12px;
    padding: 20px 22px;
    margin-bottom: 18px;
}
.tvq-inquiry-success__next strong {
    display: block;
    font-size: 0.86rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #fff;
    margin-bottom: 8px;
}
.tvq-inquiry-success__next ol {
    margin: 0;
    padding-left: 20px;
    color: rgba(255,255,255,0.78);
    font-size: 0.92rem;
    line-height: 1.65;
}
.tvq-inquiry-success__next li { margin-bottom: 4px; }
.tvq-inquiry-success__contact {
    margin: 0;
    font-size: 0.88rem;
    color: rgba(255,255,255,0.7);
}
.tvq-inquiry-success__contact a {
    color: #34d399;
    font-weight: 600;
    text-decoration: none;
    white-space: nowrap;
}
.tvq-inquiry-success__contact a:hover { color: #6ee7b7; }
@media (max-width: 600px) {
    .tvq-inquiry-success { padding: 28px 22px 24px; }
    .tvq-inquiry-success__next { padding: 16px 18px; }
}

/* =================================================================
   HERO v9 — Dynamic data pills + scroll chevron + alignment fix
   ================================================================= */

/* Re-center hero content on wide screens (was right-anchored due
   to flex-end on the parent) */
.tvq-hero {
    display: flex;
    align-items: center;
    justify-content: center;
}
.tvq-hero__content {
    padding: 60px 24px;
    text-align: left;
}

/* Hero dynamic pills row — between sub-title and CTAs */
.tvq-hero__pills {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin: 22px 0 6px;
}
.tvq-hero__pill {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 9px 14px;
    background: rgba(255,255,255,0.08);
    backdrop-filter: blur(8px);
    border: 1px solid rgba(255,255,255,0.18);
    border-radius: 999px;
    color: rgba(255,255,255,0.92);
    font-size: 0.86rem;
    white-space: nowrap;
}
.tvq-hero__pill strong {
    color: #fff;
    font-weight: 800;
    font-size: 0.96rem;
}
.tvq-hero__pill-sub {
    color: rgba(255,255,255,0.65);
    font-size: 0.82rem;
}
.tvq-hero__pill--rating svg {
    color: #fbbf24;          /* gold star */
}
.tvq-hero__pill--depart {
    background: rgba(220,38,38,0.16);
    border-color: rgba(220,38,38,0.45);
}
.tvq-hero__pill--depart svg { color: #fca5a5; }
.tvq-hero__pill--depart strong { color: #fecaca; }
.tvq-hero__pill--viewers {
    background: rgba(16,185,129,0.16);
    border-color: rgba(16,185,129,0.40);
}
.tvq-hero__pill--viewers strong { color: #6ee7b7; }
.tvq-hero__viewer-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #10b981;
    box-shadow: 0 0 0 3px rgba(16,185,129,0.30);
    animation: tvq-pulse 2s ease-in-out infinite;
}

/* Watch trailer button — icon prefix */
.tvq-btn--icononly svg { margin-right: 4px; }

/* Scroll-down chevron */
.tvq-hero__scrolldown {
    position: absolute;
    left: 50%;
    bottom: 22px;
    transform: translateX(-50%);
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    color: rgba(255,255,255,0.55);
    text-decoration: none;
    font-size: 0.74rem;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    font-weight: 600;
    transition: opacity 0.3s ease, color 0.15s ease;
    z-index: 3;
}
.tvq-hero__scrolldown:hover { color: #fff; }
.tvq-hero__scrolldown svg {
    animation: tvq-bob 1.8s ease-in-out infinite;
}
.tvq-hero__scrolldown.is-hidden { opacity: 0; pointer-events: none; }
@keyframes tvq-bob {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(6px); }
}

@media (max-width: 600px) {
    .tvq-hero__pills { margin: 16px 0 4px; }
    .tvq-hero__pill { padding: 7px 12px; font-size: 0.8rem; }
    .tvq-hero__pill strong { font-size: 0.88rem; }
    .tvq-hero__scrolldown-text { display: none; }
}
.tvq-similar-card__body {
    padding: 14px 16px 16px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.tvq-similar-card__title {
    margin: 0;
    font-size: 1.02rem;
    font-weight: 700;
    color: var(--tvq-ink);
    line-height: 1.3;
    letter-spacing: -0.01em;
}

/* Phase UX v28 — meta row (city · duration · difficulty) */
.tvq-similar-card__meta {
    display: flex;
    flex-wrap: wrap;
    gap: 4px 10px;
    font-size: 0.78rem;
    color: var(--tvq-ink-soft);
}
.tvq-similar-card__meta-item {
    display: inline-flex;
    align-items: center;
    gap: 4px;
}
.tvq-similar-card__meta-item svg { opacity: 0.7; flex-shrink: 0; }

/* Sub row (rating + next departure) */
.tvq-similar-card__sub {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px 12px;
    font-size: 0.82rem;
}
.tvq-similar-card__rating {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    color: var(--tvq-ink);
    font-weight: 600;
}
.tvq-similar-card__rating-stars { color: #f5b400; }
.tvq-similar-card__rating-count {
    color: var(--tvq-ink-soft);
    font-weight: 500;
    font-size: 0.76rem;
}
.tvq-similar-card__next {
    color: var(--tvq-ink-soft);
    font-weight: 500;
}
.tvq-similar-card__next strong {
    color: #16a34a;
    font-weight: 700;
}

/* Footer (price + CTA) */
.tvq-similar-card__foot {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    margin-top: 4px;
    padding-top: 10px;
    border-top: 1px solid #f1f5f9;
}
.tvq-similar-card__price {
    display: flex;
    flex-direction: column;
    gap: 0;
    line-height: 1.1;
}
.tvq-similar-card__price small {
    font-size: 0.66rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--tvq-ink-soft);
    font-weight: 600;
}
.tvq-similar-card__price strong {
    font-size: 1.1rem;
    color: var(--tvq-accent-deep);
    font-weight: 800;
    letter-spacing: -0.02em;
}
.tvq-similar-card__cta {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    color: var(--tvq-accent-deep);
    font-size: 0.84rem;
    font-weight: 700;
    transition: gap 0.15s;
}
.tvq-similar-card:hover .tvq-similar-card__cta {
    gap: 6px;
}

/* ════════════════════════════════════════════════════════════════
   Phase UX v35 — Sticky bottom CTA
   Desktop: right-aligned pill (Get a Quote style)
   Mobile: full-width bar at the bottom (Viator/Klook pattern)
   ════════════════════════════════════════════════════════════════ */
.tvq-trip-cta {
    position: fixed;
    bottom: 24px;
    right: 24px;
    z-index: 95;
    display: inline-flex;
    align-items: center;
    gap: 12px;
    padding: 12px 18px 12px 20px;
    background: #fff;
    color: var(--tvq-ink) !important;
    border: 1px solid #ebe7e0;
    border-radius: var(--tvq-radius-pill);
    box-shadow: 0 14px 36px rgba(15, 23, 42, 0.14),
                0 2px 6px rgba(15, 23, 42, 0.06);
    text-decoration: none !important;
    font-weight: 700;
    font-size: 0.9rem;
    transition: transform 0.18s var(--tvq-ease),
                opacity 0.3s var(--tvq-ease),
                box-shadow 0.18s var(--tvq-ease);
}
.tvq-trip-cta:hover {
    transform: translateY(-2px);
    box-shadow: 0 18px 42px rgba(15, 23, 42, 0.18),
                0 4px 10px rgba(15, 23, 42, 0.08);
    color: var(--tvq-ink) !important;
}
.tvq-trip-cta--hidden,
.tvq-trip-cta--at-hero {
    opacity: 0;
    pointer-events: none;
    transform: translateY(20px);
}

/* Price chunk (left side on mobile, left part of pill on desktop) */
.tvq-trip-cta__price-wrap {
    display: inline-flex;
    align-items: baseline;
    gap: 4px;
    line-height: 1;
}
.tvq-trip-cta__from {
    font-size: 0.7rem;
    font-weight: 600;
    color: #94a3b8;
    text-transform: uppercase;
    letter-spacing: 0.06em;
}
.tvq-trip-cta__price {
    font-weight: 800;
    font-size: 1.05rem;
    color: #091413;
    font-variant-numeric: tabular-nums;
    letter-spacing: -0.02em;
}
.tvq-trip-cta__per {
    font-size: 0.72rem;
    color: #94a3b8;
    font-weight: 500;
}

/* CTA chunk (right side button-ish red block) */
.tvq-trip-cta__cta {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: var(--tvq-accent-deep);
    color: #fff;
    padding: 8px 16px;
    border-radius: 999px;
    font-weight: 700;
    font-size: 0.86rem;
    transition: background 0.15s ease;
}
.tvq-trip-cta:hover .tvq-trip-cta__cta {
    background: var(--tvq-accent-dark);
}
.tvq-trip-cta__label { letter-spacing: 0.01em; }

/* ── Mobile: full-width bar ── */
@media (max-width: 640px) {
    .tvq-trip-cta {
        bottom: 0;
        right: 0;
        left: 0;
        border-radius: 0;
        border-left: 0;
        border-right: 0;
        border-bottom: 0;
        padding: 12px 16px;
        /* iOS safe-area inset for the home indicator */
        padding-bottom: calc(12px + env(safe-area-inset-bottom));
        justify-content: space-between;
        gap: 8px;
        box-shadow: 0 -6px 18px rgba(15, 23, 42, 0.10);
    }
    .tvq-trip-cta__price-wrap { gap: 3px; }
    .tvq-trip-cta__price { font-size: 1rem; }
    .tvq-trip-cta__cta {
        padding: 10px 16px;
        font-size: 0.92rem;
    }
}
html[dir="rtl"] .tvq-trip-cta { right: auto; left: 24px; }
@media (max-width: 640px) {
    html[dir="rtl"] .tvq-trip-cta { left: 0; right: 0; }
    /* Reserve room at the bottom of the page so the sticky bar
       doesn't permanently cover the footer's last line on mobile. */
    body { padding-bottom: 76px; }
    body { padding-bottom: calc(76px + env(safe-area-inset-bottom)); }
}

/* ================================================================
   TOUR TANGO v26 — Book Your Tour fixed-departures table
   ================================================================ */

.tvq-departures__table {
    max-width: 920px;
    margin: 0 auto;
    background: #ffffff;
    border: 1px solid var(--tvq-line);
    border-radius: 16px;
    overflow: hidden;
    box-shadow: 0 4px 14px rgba(9, 20, 19, 0.04);
}
.tvq-departures__head,
.tvq-departures__row {
    display: grid;
    grid-template-columns: 1.4fr 1.1fr 1fr 1.4fr 0.9fr;
    gap: 12px;
    padding: 14px 20px;
    align-items: center;
}
.tvq-departures__head {
    background: var(--tvq-bg-soft);
    border-bottom: 1px solid var(--tvq-line);
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--tvq-ink-soft);
}
.tvq-departures__row {
    border-bottom: 1px solid var(--tvq-line);
    font-size: 0.92rem;
    color: var(--tvq-ink);
    transition: background 0.12s var(--tvq-ease);
}
.tvq-departures__row:last-child { border-bottom: 0; }
.tvq-departures__row:hover { background: var(--tvq-bg-soft); }

.tvq-departures__date {
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.tvq-departures__date strong {
    font-weight: 700;
    color: var(--tvq-ink);
}
.tvq-departures__date small {
    font-size: 0.72rem;
    color: var(--tvq-accent);
    font-weight: 600;
}
.tvq-departures__return {
    color: var(--tvq-ink-soft);
}
.tvq-departures__price strong {
    font-size: 1rem;
    color: var(--tvq-ink);
    font-variant-numeric: tabular-nums;
}
.tvq-departures__price small {
    color: var(--tvq-ink-soft);
    margin-left: 2px;
    font-size: 0.74rem;
}

.tvq-dep-pill {
    display: inline-block;
    padding: 4px 10px;
    border-radius: 99px;
    font-size: 0.74rem;
    font-weight: 700;
}
.tvq-dep-pill--open {
    background: rgba(16, 185, 129, 0.12);
    color: #10b981;
}
.tvq-dep-pill--low {
    background: rgba(245, 180, 0, 0.14);
    color: #c08800;
}
.tvq-dep-pill--sold {
    background: rgba(245, 0, 0, 0.10);
    color: var(--tvq-accent);
}

.tvq-departures__book {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 8px 14px;
    background: var(--tvq-accent);
    color: #ffffff !important;
    border-radius: 99px;
    font-weight: 700;
    font-size: 0.82rem;
    text-decoration: none !important;
    transition: background 0.15s var(--tvq-ease),
                transform 0.15s var(--tvq-ease);
    white-space: nowrap;
}
.tvq-departures__book:hover {
    background: var(--tvq-accent-dark);
    transform: translateY(-1px);
}
.tvq-departures__book--disabled {
    background: var(--tvq-bg-soft);
    color: var(--tvq-ink-soft) !important;
    cursor: not-allowed;
}
.tvq-departures__book--disabled:hover {
    background: var(--tvq-bg-soft);
    transform: none;
}

/* Sold-out / closed rows look greyed-out */
.tvq-departures__row--sold_out,
.tvq-departures__row--closed,
.tvq-departures__row--cancelled {
    opacity: 0.55;
}

/* Mobile — stack the row into label/value pairs. */
@media (max-width: 720px) {
    .tvq-departures__head { display: none; }
    .tvq-departures__row {
        grid-template-columns: 1fr 1fr;
        gap: 10px;
        padding: 14px 16px;
        font-size: 0.86rem;
    }
    .tvq-departures__date { grid-column: 1 / -1; font-weight: 700; }
    .tvq-departures__return::before {
        content: "Return: ";
        color: var(--tvq-ink-soft);
        font-weight: 600;
    }
    .tvq-departures__cta { grid-column: 1 / -1; }
    .tvq-departures__book { width: 100%; }
}

/* ================================================================
   TOUR TANGO v27 — Itinerary Engine Phase 1: structured day cards
   on the public trip landing page
   ================================================================ */

.tvq-trip-itinerary__list {
    max-width: 880px;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    gap: 18px;
    position: relative;
}
.tvq-trip-itinerary__list::before {
    /* The vertical timeline rail */
    content: "";
    position: absolute;
    top: 26px;
    bottom: 26px;
    left: 41px;
    width: 2px;
    background: linear-gradient(180deg,
        var(--tvq-accent) 0%,
        var(--tvq-line) 100%);
    z-index: 0;
}
@media (max-width: 720px) {
    .tvq-trip-itinerary__list::before { left: 22px; }
}

.tvq-trip-day {
    position: relative;
    display: grid;
    grid-template-columns: 280px 1fr;
    gap: 18px;
    padding: 0 0 0 70px;
    align-items: start;
}
@media (max-width: 720px) {
    .tvq-trip-day {
        grid-template-columns: 1fr;
        gap: 12px;
        padding-left: 50px;
    }
}

/* Timeline marker (the dot on the rail) */
.tvq-trip-day::before {
    content: "";
    position: absolute;
    top: 24px;
    left: 33px;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: #ffffff;
    border: 3px solid var(--tvq-accent);
    box-shadow: 0 0 0 4px rgba(245, 0, 0, 0.10);
    z-index: 1;
}
@media (max-width: 720px) {
    .tvq-trip-day::before { left: 14px; }
}

.tvq-trip-day__photo {
    aspect-ratio: 4 / 3;
    border-radius: 14px;
    overflow: hidden;
    background: var(--tvq-bg-soft);
}
.tvq-trip-day__photo img {
    width: 100%; height: 100%;
    object-fit: cover;
    transition: transform 0.5s var(--tvq-ease);
}
.tvq-trip-day:hover .tvq-trip-day__photo img { transform: scale(1.04); }

/* Single-column body when there is no photo so the row spans full width */
.tvq-trip-day:not(:has(.tvq-trip-day__photo)) {
    grid-template-columns: 1fr;
}

.tvq-trip-day__body {
    background: #ffffff;
    border: 1px solid var(--tvq-line);
    border-radius: 14px;
    padding: 18px 22px;
    box-shadow: 0 4px 14px rgba(9, 20, 19, 0.04);
}

.tvq-trip-day__head { margin-bottom: 8px; }
.tvq-trip-day__num {
    display: inline-block;
    padding: 3px 10px;
    background: var(--tvq-bg-tint);
    color: var(--tvq-accent-deep);
    border-radius: 99px;
    font-size: 0.7rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    margin-bottom: 6px;
}
.tvq-trip-day__title {
    margin: 0;
    font-size: 1.15rem;
    color: var(--tvq-ink);
    line-height: 1.25;
    letter-spacing: -0.01em;
}
.tvq-trip-day__subtitle {
    margin: 4px 0 0;
    color: var(--tvq-ink-soft);
    font-size: 0.9rem;
    font-style: italic;
}

.tvq-trip-day__route {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin: 10px 0;
    padding: 4px 12px;
    background: var(--tvq-bg-soft);
    border-radius: 99px;
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--tvq-ink-soft);
}
.tvq-trip-day__route svg { color: var(--tvq-accent); }

.tvq-trip-day__desc {
    color: var(--tvq-ink-soft);
    line-height: 1.6;
    font-size: 0.92rem;
    margin: 8px 0;
}
.tvq-trip-day__desc p:first-child { margin-top: 0; }
.tvq-trip-day__desc p:last-child  { margin-bottom: 0; }
.tvq-trip-day__desc ul { margin: 6px 0; padding-left: 22px; }
.tvq-trip-day__desc li::marker { color: var(--tvq-accent); }

.tvq-trip-day__meta {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px dashed var(--tvq-line);
}
.tvq-trip-day__chip {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 10px;
    background: var(--tvq-bg-soft);
    color: var(--tvq-ink-soft);
    border-radius: 99px;
    font-size: 0.74rem;
    font-weight: 600;
}
.tvq-trip-day__chip svg { color: var(--tvq-ink-soft); }

/* ================================================================
   TOUR TANGO v28 — Itinerary Engine Phase 2: addons grid + sticky
   booking widget on the public trip landing page
   ================================================================ */

.tvq-build {
    background: var(--tvq-bg-soft);
}
.tvq-build__layout {
    max-width: 1100px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: 1.4fr 1fr;
    gap: 32px;
    align-items: start;
}
@media (max-width: 880px) {
    .tvq-build__layout { grid-template-columns: 1fr; }
}

.tvq-build__addons-title {
    margin: 0 0 12px;
    font-size: 0.9rem;
    color: var(--tvq-ink-soft);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-weight: 700;
}
.tvq-build__addon-list {
    display: grid;
    grid-template-columns: 1fr;
    gap: 10px;
}
.tvq-build-addon {
    position: relative;
    display: flex;
    align-items: stretch;
    gap: 14px;
    padding: 0;
    background: #ffffff;
    border: 2px solid var(--tvq-line);
    border-radius: 14px;
    overflow: hidden;
    cursor: pointer;
    text-align: left;
    font-family: inherit;
    color: inherit;
    transition: border-color 0.15s var(--tvq-ease),
                background 0.15s var(--tvq-ease),
                transform 0.15s var(--tvq-ease);
}
.tvq-build-addon:hover {
    border-color: var(--tvq-accent);
    transform: translateY(-1px);
}
.tvq-build-addon__photo {
    flex: 0 0 96px;
    aspect-ratio: 1 / 1;
    background: var(--tvq-bg-soft);
    overflow: hidden;
}
.tvq-build-addon__photo img {
    width: 100%; height: 100%; object-fit: cover;
}
.tvq-build-addon__body {
    flex: 1;
    padding: 12px 14px 12px 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
    position: relative;
}
.tvq-build-addon:not(:has(.tvq-build-addon__photo)) .tvq-build-addon__body {
    padding-left: 14px;
}
.tvq-build-addon__head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 8px;
}
.tvq-build-addon__head strong {
    font-weight: 700;
    color: var(--tvq-ink);
    font-size: 0.95rem;
}
.tvq-build-addon__price {
    font-weight: 800;
    color: var(--tvq-accent-deep);
    font-size: 0.92rem;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
.tvq-build-addon__price small {
    font-weight: 600;
    color: var(--tvq-ink-soft);
    font-size: 0.7rem;
    margin-left: 2px;
}
.tvq-build-addon__price--free {
    color: var(--tvq-success);
}
.tvq-build-addon__desc {
    margin: 0;
    color: var(--tvq-ink-soft);
    font-size: 0.82rem;
    line-height: 1.45;
}
.tvq-build-addon__check {
    position: absolute;
    bottom: 12px;
    right: 12px;
    width: 24px; height: 24px;
    border-radius: 50%;
    background: #ffffff;
    border: 2px solid var(--tvq-line);
    color: transparent;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background 0.15s var(--tvq-ease),
                border-color 0.15s var(--tvq-ease),
                color 0.15s var(--tvq-ease);
}
.tvq-build-addon--selected {
    border-color: var(--tvq-accent);
    background: var(--tvq-bg-tint);
}
.tvq-build-addon--selected .tvq-build-addon__check {
    background: var(--tvq-accent);
    border-color: var(--tvq-accent);
    color: #ffffff;
}

/* ---- Sticky booking widget ---- */
.tvq-build__widget {
    position: sticky;
    top: 24px;
    align-self: start;
}
.tvq-build__widget-inner {
    background: #ffffff;
    border: 1px solid var(--tvq-line);
    border-radius: 16px;
    padding: 22px;
    box-shadow: 0 12px 28px rgba(9, 20, 19, 0.08);
}
.tvq-build__widget-head {
    margin-bottom: 16px;
    padding-bottom: 14px;
    border-bottom: 1px solid var(--tvq-line);
}
.tvq-build__widget-kicker {
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--tvq-accent);
}
.tvq-build__widget-title {
    margin: 4px 0 0;
    font-size: 1.05rem;
    color: var(--tvq-ink);
}
.tvq-build__field {
    display: block;
    margin-bottom: 10px;
}
.tvq-build__field-label {
    display: block;
    margin-bottom: 4px;
    font-size: 0.78rem;
    font-weight: 700;
    color: var(--tvq-ink-soft);
}
.tvq-build__field input,
.tvq-build__field select {
    width: 100%;
    padding: 10px 12px;
    background: var(--tvq-bg-soft);
    border: 1px solid var(--tvq-line);
    border-radius: 10px;
    font-family: inherit;
    font-size: 0.92rem;
    color: var(--tvq-ink);
    transition: border-color 0.15s var(--tvq-ease),
                background 0.15s var(--tvq-ease);
}
.tvq-build__field input:focus,
.tvq-build__field select:focus {
    outline: none;
    background: #ffffff;
    border-color: var(--tvq-accent);
    box-shadow: 0 0 0 3px rgba(245, 0, 0, 0.10);
}
.tvq-build__pax {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}

.tvq-build__breakdown {
    margin: 14px 0 16px;
    padding: 12px 0;
    border-top: 1px dashed var(--tvq-line);
    border-bottom: 1px dashed var(--tvq-line);
}
.tvq-build__breakdown-row {
    display: flex;
    justify-content: space-between;
    padding: 4px 0;
    font-size: 0.88rem;
    color: var(--tvq-ink-soft);
}
.tvq-build__breakdown-row strong {
    color: var(--tvq-ink);
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}
.tvq-build__breakdown-row--total {
    margin-top: 4px;
    padding-top: 8px;
    border-top: 1px dashed var(--tvq-line);
}
.tvq-build__breakdown-row--total span,
.tvq-build__breakdown-row--total strong {
    font-size: 1.05rem;
    color: var(--tvq-ink);
}
.tvq-build__breakdown-row--total strong { color: var(--tvq-accent); }

.tvq-build__cta {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: 100%;
    padding: 12px 18px;
    border-radius: 99px;
    font-weight: 700;
    font-size: 0.92rem;
    text-decoration: none !important;
    margin-bottom: 8px;
    transition: transform 0.15s var(--tvq-ease),
                background 0.15s var(--tvq-ease),
                box-shadow 0.15s var(--tvq-ease);
}
.tvq-build__cta--primary {
    background: var(--tvq-accent);
    color: #ffffff !important;
    box-shadow: 0 8px 20px rgba(245, 0, 0, 0.28);
}
.tvq-build__cta--primary:hover {
    background: var(--tvq-accent-dark);
    transform: translateY(-1px);
    box-shadow: 0 12px 28px rgba(245, 0, 0, 0.36);
}
.tvq-build__cta--ghost {
    background: transparent;
    color: var(--tvq-ink-soft) !important;
    border: 1px solid var(--tvq-line);
}
.tvq-build__cta--ghost:hover {
    background: var(--tvq-bg-soft);
    color: var(--tvq-ink) !important;
}

.tvq-build__fineprint {
    margin: 8px 0 0;
    text-align: center;
    color: var(--tvq-ink-soft);
    font-size: 0.72rem;
}

/* The full cancellation policy, beneath the booking widget — where
   tour_product.cancellation_policy_html always said it would be, and
   was never actually rendered until 2026-09. Operator-authored HTML,
   so the container sets a readable rhythm without dictating type. */
.tvq-build__policy {
    margin: 10px 0 0;
    padding: 10px 12px;
    border-radius: 10px;
    background: var(--tvq-surface-soft, rgba(9, 20, 19, 0.04));
    color: var(--tvq-ink-soft);
    font-size: 0.76rem;
    line-height: 1.55;
}

.tvq-build__policy > :first-child { margin-top: 0; }
.tvq-build__policy > :last-child { margin-bottom: 0; }
.tvq-build__policy ul,
.tvq-build__policy ol { margin: 6px 0; padding-inline-start: 18px; }
.tvq-build__policy a { color: inherit; text-decoration: underline; }

@media (max-width: 880px) {
    .tvq-build__widget {
        position: static;
        order: -1;  /* widget on top on mobile */
    }
}

/* =============================================================
   BOOK YOUR TOUR — cyan-band departures widget
   ============================================================= */

.tvq-book-tour {
    background: #2ab7d4;        /* cyan band */
    color: #fff;
    padding: 80px 20px 60px;
    margin: 0;
}

.tvq-book-tour__head {
    max-width: 920px;
    margin: 0 auto 40px;
    text-align: center;
}

.tvq-book-tour__title {
    font-family: Georgia, 'Times New Roman', serif;
    font-weight: 700;
    font-size: 2.4rem;
    color: #fff;
    margin: 0 0 14px;
    letter-spacing: -0.02em;
}

.tvq-book-tour__rule {
    display: block;
    width: 110px;
    height: 1px;
    background: rgba(255,255,255,0.55);
    margin: 0 auto 28px;
}

.tvq-book-tour__promo {
    font-size: 1rem;
    font-weight: 600;
    color: #fff;
    margin: 0 0 22px;
}

.tvq-book-tour__deposit {
    font-size: 0.95rem;
    line-height: 1.55;
    color: #fff;
    max-width: 640px;
    margin: 0 auto 26px;
}

.tvq-book-tour__soldout {
    margin: 0 auto 18px;
    font-size: 0.92rem;
    color: #fff;
}

.tvq-book-tour__soldout-label {
    margin: 0 0 4px;
    font-weight: 600;
}

.tvq-book-tour__soldout-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: inline-flex;
    flex-direction: column;
    gap: 2px;
}

.tvq-book-tour__fallback {
    font-size: 0.9rem;
    color: rgba(255,255,255,0.92);
    max-width: 680px;
    margin: 14px auto 0;
    font-style: italic;
}

/* Bookable departures table — white card */
.tvq-book-tour__card {
    max-width: 980px;
    margin: 0 auto;
    background: #fff;
    border-radius: 4px;
    padding: 0;
    box-shadow: 0 12px 36px rgba(0,0,0,0.10);
}

.tvq-book-tour__row {
    display: grid;
    grid-template-columns: 1.5fr 14px 1.5fr 1.3fr 1.4fr 1.2fr;
    align-items: center;
    gap: 18px;
    padding: 22px 28px;
    border-bottom: 1px solid #e7eef0;
    color: #222;
}

.tvq-book-tour__row:last-child {
    border-bottom: none;
}

.tvq-book-tour__col-label {
    display: block;
    font-size: 0.78rem;
    color: #7a8b93;
    font-weight: 400;
    margin-bottom: 4px;
}

.tvq-book-tour__col-date strong,
.tvq-book-tour__col-return strong,
.tvq-book-tour__col-price strong {
    display: block;
    font-size: 1.02rem;
    font-weight: 700;
    color: #1b2a30;
}

.tvq-book-tour__col-arrow {
    color: #b8c3c8;
    font-size: 1.4rem;
    text-align: center;
    line-height: 1;
}

.tvq-book-tour__guaranteed {
    display: block;
    color: #14a85f;       /* green */
    font-size: 0.78rem;
    font-weight: 700;
    margin-top: 3px;
    letter-spacing: 0.02em;
}

.tvq-book-tour__col-price strong {
    font-size: 1.05rem;
}

.tvq-book-tour__avail-open {
    display: inline-block;
    color: #1b2a30;
    font-weight: 700;
    font-size: 0.98rem;
}

.tvq-book-tour__avail-low {
    display: inline-block;
    color: #1b2a30;
    font-weight: 400;
    font-size: 0.93rem;
}

.tvq-book-tour__avail-low strong {
    font-weight: 700;
    color: #1b2a30;
}

.tvq-book-tour__btn {
    display: inline-block;
    background: #2ab7d4;
    color: #fff !important;
    font-weight: 700;
    font-size: 0.85rem;
    letter-spacing: 0.04em;
    text-decoration: none;
    text-align: center;
    padding: 14px 22px;
    border-radius: 3px;
    transition: background 0.15s ease;
    text-transform: uppercase;
}

.tvq-book-tour__btn:hover {
    background: #229bb5;
    color: #fff !important;
}

.tvq-book-tour__btn--disabled {
    background: #b8c3c8;
    color: #fff !important;
    cursor: not-allowed;
    pointer-events: none;
}

.tvq-book-tour__more-wrap {
    text-align: center;
    padding: 26px;
}

.tvq-book-tour__more {
    background: #fff;
    color: #1b2a30;
    border: 1px solid #2ab7d4;
    font-weight: 700;
    font-size: 0.82rem;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    padding: 12px 30px;
    border-radius: 3px;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
}

.tvq-book-tour__more:hover {
    background: #2ab7d4;
    color: #fff;
}

/* Tablet & mobile: collapse the table into vertical cards */
@media (max-width: 768px) {
    .tvq-book-tour { padding: 50px 18px 40px; }
    .tvq-book-tour__title { font-size: 1.9rem; }
    .tvq-book-tour__card { padding: 0; }
    .tvq-book-tour__row {
        grid-template-columns: 1fr;
        gap: 12px;
        padding: 18px 20px;
    }
    .tvq-book-tour__col-arrow { display: none; }
    .tvq-book-tour__col-cta { margin-top: 6px; }
    .tvq-book-tour__btn { display: block; }
}

/* =================================================================
   UX/UI v2 (2026-06-02) — Trip landing comprehensive polish
   ================================================================= */

/* Smooth scroll + offset for sticky nav anchor jumps */
html {
    scroll-behavior: smooth;
    scroll-padding-top: 80px;   /* sticky nav clearance */
}

/* ---- HERO: dual CTAs + price chip ---- */
.tvq-hero__actions {
    display: flex;
    gap: 14px;
    flex-wrap: wrap;
    align-items: center;
    margin-top: 26px;
}

.tvq-btn--ghost {
    background: transparent !important;
    color: #fff !important;
    border: 1.5px solid rgba(255,255,255,0.55) !important;
    box-shadow: none !important;
}
.tvq-btn--ghost:hover {
    background: rgba(255,255,255,0.10) !important;
    border-color: #fff !important;
}

.tvq-hero__pricechip {
    display: inline-flex;
    align-items: baseline;
    gap: 6px;
    margin-top: 22px;
    padding: 9px 18px;
    background: rgba(255,255,255,0.08);
    backdrop-filter: blur(6px);
    border: 1px solid rgba(255,255,255,0.18);
    border-radius: 999px;
    color: #fff;
    font-size: 0.95rem;
    width: max-content;
}
.tvq-hero__pricechip-label {
    color: rgba(255,255,255,0.75);
    font-size: 0.82rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    font-weight: 600;
}
.tvq-hero__pricechip strong {
    font-size: 1.15rem;
    font-weight: 800;
    color: #fff;
    letter-spacing: -0.02em;
}
.tvq-hero__pricechip small {
    color: rgba(255,255,255,0.7);
    font-size: 0.82rem;
    margin-left: 1px;
}

/* ---- STICKY SUB-NAV ---- */
.tvq-subnav {
    position: sticky;
    top: 0;
    z-index: 50;
    background: rgba(255,255,255,0.92);
    backdrop-filter: saturate(180%) blur(14px);
    border-bottom: 1px solid #ebe7e0;
    box-shadow: 0 2px 8px rgba(15,23,42,0.04);
}
.tvq-subnav__inner {
    max-width: 1100px;
    margin: 0 auto;
    padding: 0 20px;
    display: flex;
    gap: 4px;
    overflow-x: auto;
    scrollbar-width: none;
}
.tvq-subnav__inner::-webkit-scrollbar { display: none; }
.tvq-subnav__link {
    display: inline-block;
    padding: 16px 18px;
    color: #4a4a4a;
    font-size: 0.92rem;
    font-weight: 600;
    text-decoration: none;
    border-bottom: 3px solid transparent;
    transition: border-color 0.15s, color 0.15s;
    white-space: nowrap;
}
.tvq-subnav__link:hover {
    color: #0f172a;
    border-bottom-color: #cbd5e1;
}
.tvq-subnav__link--accent {
    color: #dc2626;
}
.tvq-subnav__link--accent:hover {
    color: #b91c1c;
    border-bottom-color: #dc2626;
}
.tvq-subnav__link--active {
    color: #dc2626;
    border-bottom-color: #dc2626;
}
.tvq-subnav__link--active.tvq-subnav__link--accent {
    color: #b91c1c;
}

/* ---- FLOATING STICKY CTA (mobile-first, all viewports show it) ---- */
.tvq-float-cta {
    position: fixed;
    right: 22px;
    bottom: 26px;
    z-index: 80;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 14px 22px;
    background: #dc2626;
    color: #fff !important;
    font-weight: 700;
    font-size: 0.95rem;
    letter-spacing: 0.01em;
    text-decoration: none;
    border-radius: 999px;
    box-shadow: 0 12px 32px rgba(220,38,38,0.42), 0 2px 6px rgba(0,0,0,0.18);
    transition: opacity 0.3s ease, transform 0.18s ease;
}
.tvq-float-cta:hover {
    transform: translateY(-2px);
    box-shadow: 0 16px 40px rgba(220,38,38,0.5), 0 3px 8px rgba(0,0,0,0.22);
}
.tvq-float-cta.is-visible {
    opacity: 1 !important;
    pointer-events: auto !important;
}

/* ---- STATS STRIP: icons + tooltips + next-departure (Phase UX v10) ---- */
.tvq-trip-stats {
    background: #fff;
    border-top: 1px solid #ebe7e0;
    border-bottom: 1px solid #ebe7e0;
    position: relative;
}
.tvq-trip-stats__inner {
    max-width: 1100px;
    margin: 0 auto;
    padding: 26px 20px;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: 24px;
}
.tvq-trip-stat {
    display: flex;
    align-items: center;
    gap: 12px;
    cursor: default;
    position: relative;
}
/* Icon chip */
.tvq-trip-stat__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    background: #fef2f2;
    color: #dc2626;
    border-radius: 12px;
    flex-shrink: 0;
}
.tvq-trip-stat--price .tvq-trip-stat__icon {
    background: #dc2626;
    color: #fff;
}
.tvq-trip-stat--next .tvq-trip-stat__icon {
    background: #ecfdf5;
    color: #16a34a;
}
.tvq-trip-stat__body {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}
.tvq-trip-stat__label {
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: #94a3b8;
    font-weight: 700;
}
.tvq-trip-stat__value {
    font-size: 1.08rem;
    font-weight: 800;
    color: #0f172a;
    line-height: 1.2;
}
.tvq-trip-stat__value small {
    color: #94a3b8;
    font-size: 0.74rem;
    font-weight: 500;
    margin-left: 3px;
}
.tvq-trip-stat__value--link {
    color: #dc2626 !important;
    text-decoration: none;
    border-bottom: 1px dashed transparent;
    transition: border-color 0.15s ease;
}
.tvq-trip-stat__value--link:hover {
    border-bottom-color: currentColor;
}
.tvq-trip-stat__value--diff-easy        { color: #16a34a; }
.tvq-trip-stat__value--diff-moderate    { color: #d97706; }
.tvq-trip-stat__value--diff-challenging { color: #dc2626; }
.tvq-trip-stat--price .tvq-trip-stat__value {
    color: #dc2626;
    font-size: 1.25rem;
}
.tvq-trip-stat__hint {
    font-size: 0.72rem;
    color: #94a3b8;
    margin-top: 2px;
    font-weight: 500;
}

/* Generic tooltip via data-tvq-tooltip on any element */
[data-tvq-tooltip] {
    position: relative;
}
[data-tvq-tooltip]::after {
    content: attr(data-tvq-tooltip);
    position: absolute;
    bottom: calc(100% + 10px);
    left: 50%;
    transform: translateX(-50%) translateY(4px);
    padding: 8px 12px;
    background: #0f172a;
    color: #fff;
    font-size: 0.78rem;
    line-height: 1.4;
    font-weight: 500;
    border-radius: 8px;
    white-space: normal;
    width: max-content;
    max-width: 260px;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.2s ease, transform 0.2s ease;
    z-index: 100;
    text-align: left;
    box-shadow: 0 8px 22px rgba(0,0,0,0.18);
}
[data-tvq-tooltip]::before {
    content: "";
    position: absolute;
    bottom: calc(100% + 4px);
    left: 50%;
    transform: translateX(-50%);
    border: 6px solid transparent;
    border-top-color: #0f172a;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.2s ease;
    z-index: 100;
}
[data-tvq-tooltip]:hover::after,
[data-tvq-tooltip]:focus-within::after {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
}
[data-tvq-tooltip]:hover::before,
[data-tvq-tooltip]:focus-within::before {
    opacity: 1;
}
@media (hover: none) {
    /* Touch — hide tooltips, they conflict with tap-to-open */
    [data-tvq-tooltip]::after,
    [data-tvq-tooltip]::before { display: none; }
}

@media (max-width: 768px) {
    .tvq-trip-stats__inner {
        grid-template-columns: repeat(2, 1fr);
        gap: 18px 16px;
        padding: 20px 16px;
    }
    .tvq-trip-stat__icon { width: 34px; height: 34px; }
    .tvq-trip-stat__value { font-size: 0.98rem; }
    .tvq-trip-stat--price .tvq-trip-stat__value { font-size: 1.1rem; }
}
@media (max-width: 420px) {
    .tvq-trip-stats__inner { grid-template-columns: 1fr; }
}

/* ---- HIGHLIGHTS: check-icon bullets + brand-aligned card (v11 — per-item icons) ---- */
.tvq-highlights__box {
    max-width: 760px;
    margin: 0 auto;
    background: #fef9f7 !important;
    border: 1px solid #fde6dc !important;
    border-radius: 14px !important;
    padding: 32px 38px !important;
    box-shadow: 0 4px 14px rgba(220,38,38,0.04);
}
/* Fallback (raw <ul>) still works */
.tvq-highlights__box ul {
    list-style: none !important;
    padding: 0 !important;
    margin: 0 !important;
}
.tvq-highlights__box li {
    position: relative;
    padding-left: 32px !important;
    padding-top: 8px;
    padding-bottom: 8px;
    font-size: 1rem;
    line-height: 1.55;
    color: #1f2937;
    border-bottom: 1px solid rgba(220,38,38,0.06);
}
.tvq-highlights__box li:last-child { border-bottom: none; }
/* Old fallback ✓ chip — applies to <li> WITHOUT our structured class */
.tvq-highlights__box li:not(.tvq-hl)::before {
    content: "✓";
    position: absolute;
    left: 0;
    top: 10px;
    width: 22px;
    height: 22px;
    background: #dc2626;
    color: #fff;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.78rem;
    font-weight: 800;
}

/* Structured list (.tvq-highlights__list) with per-item icons */
.tvq-highlights__list {
    list-style: none !important;
    padding: 0 !important;
    margin: 0 !important;
}
.tvq-hl {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    padding: 12px 8px 12px 4px !important;
    border-bottom: 1px solid rgba(220,38,38,0.07);
    transition: background 0.15s ease, transform 0.15s ease;
    border-radius: 8px;
}
.tvq-hl::before { content: none !important; }   /* kill the legacy ✓ */
.tvq-hl:last-child { border-bottom: none; }
.tvq-hl:hover {
    background: rgba(255,255,255,0.65);
    transform: translateX(2px);
}
.tvq-hl__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 12px;
    flex-shrink: 0;
    color: #fff;
    background: #dc2626;
}
.tvq-hl__text {
    flex: 1;
    font-size: 1rem;
    line-height: 1.55;
    color: #1f2937;
    padding-top: 9px;       /* baseline-align with icon */
}
/* Per-icon palette */
.tvq-hl--sunrise     .tvq-hl__icon { background: #f59e0b; }   /* amber */
.tvq-hl--tent        .tvq-hl__icon { background: #d97706; }   /* burnt orange */
.tvq-hl--water       .tvq-hl__icon { background: #0891b2; }   /* teal */
.tvq-hl--monument    .tvq-hl__icon { background: #7c3aed; }   /* purple */
.tvq-hl--guide       .tvq-hl__icon { background: #16a34a; }   /* green */
.tvq-hl--food        .tvq-hl__icon { background: #db2777; }   /* pink */
.tvq-hl--stars       .tvq-hl__icon { background: #4f46e5; }   /* indigo */
.tvq-hl--adventure   .tvq-hl__icon { background: #b45309; }   /* sienna */
.tvq-hl--transport   .tvq-hl__icon { background: #475569; }   /* slate */
.tvq-hl--check       .tvq-hl__icon { background: #dc2626; }   /* brand red (default) */

/* New categories (Phase UX v12) */
.tvq-hl--flight      .tvq-hl__icon { background: #0284c7; }   /* sky blue */
.tvq-hl--photography .tvq-hl__icon { background: #1e293b; }   /* deep slate */
.tvq-hl--music       .tvq-hl__icon { background: #c026d3; }   /* fuchsia */
.tvq-hl--festival    .tvq-hl__icon { background: #e11d48; }   /* hot rose */
.tvq-hl--wildlife    .tvq-hl__icon { background: #15803d; }   /* jade */
.tvq-hl--wine        .tvq-hl__icon { background: #7f1d1d; }   /* burgundy */
.tvq-hl--shopping    .tvq-hl__icon { background: #ca8a04; }   /* gold */
.tvq-hl--boat        .tvq-hl__icon { background: #0e7490; }   /* deep cyan */
.tvq-hl--biking      .tvq-hl__icon { background: #2563eb; }   /* blue */
.tvq-hl--diving      .tvq-hl__icon { background: #0d9488; }   /* deep teal */
.tvq-hl--wellness    .tvq-hl__icon { background: #a78bfa; color: #fff; }  /* lavender */
.tvq-hl--cooking     .tvq-hl__icon { background: #c2410c; }   /* terracotta */
.tvq-hl--mountain    .tvq-hl__icon { background: #57534e; }   /* warm grey */
.tvq-hl--culture     .tvq-hl__icon { background: #be185d; }   /* deep magenta */
.tvq-hl--sunset      .tvq-hl__icon { background: #ea580c; }   /* warm orange */

/* Staggered reveal */
.tvq-highlights__list[data-tvq-stagger] .tvq-hl {
    opacity: 0;
    transform: translateY(8px);
    animation: tvq-hl-in 0.42s cubic-bezier(.22,.61,.36,1) forwards;
}
.tvq-highlights__list[data-tvq-stagger] .tvq-hl:nth-child(1) { animation-delay: 0.05s; }
.tvq-highlights__list[data-tvq-stagger] .tvq-hl:nth-child(2) { animation-delay: 0.12s; }
.tvq-highlights__list[data-tvq-stagger] .tvq-hl:nth-child(3) { animation-delay: 0.19s; }
.tvq-highlights__list[data-tvq-stagger] .tvq-hl:nth-child(4) { animation-delay: 0.26s; }
.tvq-highlights__list[data-tvq-stagger] .tvq-hl:nth-child(5) { animation-delay: 0.33s; }
.tvq-highlights__list[data-tvq-stagger] .tvq-hl:nth-child(6) { animation-delay: 0.40s; }
.tvq-highlights__list[data-tvq-stagger] .tvq-hl:nth-child(n+7) { animation-delay: 0.47s; }
@keyframes tvq-hl-in {
    to { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
    .tvq-highlights__list[data-tvq-stagger] .tvq-hl {
        opacity: 1 !important;
        transform: none !important;
        animation: none !important;
    }
}

/* Inline CTA at bottom of card */
.tvq-highlights__cta {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-top: 22px;
    padding: 10px 16px;
    background: transparent;
    color: #dc2626 !important;
    font-weight: 700;
    font-size: 0.92rem;
    text-decoration: none;
    border-radius: 999px;
    border: 1.5px solid #dc2626;
    transition: background 0.15s ease, color 0.15s ease;
}
.tvq-highlights__cta:hover {
    background: #dc2626;
    color: #fff !important;
}

@media (max-width: 600px) {
    .tvq-highlights__box { padding: 24px 18px !important; }
    .tvq-hl__icon { width: 34px; height: 34px; }
    .tvq-hl__text { font-size: 0.95rem; padding-top: 7px; }
}

/* =================================================================
   ABOUT THIS TRIP v13 — key facts row + two-col body + read more
   ================================================================= */

.tvq-about__facts {
    max-width: 980px;
    margin: 0 auto 36px;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 14px;
}
.tvq-about__fact {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 16px 18px;
    background: #fafaf7;
    border: 1px solid #ebe7e0;
    border-radius: 12px;
    transition: border-color 0.15s ease, transform 0.15s ease;
}
.tvq-about__fact:hover {
    border-color: #dc2626;
    transform: translateY(-2px);
}
.tvq-about__fact-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    background: #fff;
    color: #dc2626;
    border-radius: 10px;
    flex-shrink: 0;
}
.tvq-about__fact-body {
    display: flex;
    flex-direction: column;
    gap: 1px;
    min-width: 0;
}
.tvq-about__fact-label {
    font-size: 0.68rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: #94a3b8;
    font-weight: 700;
}
.tvq-about__fact-value {
    font-size: 0.96rem;
    font-weight: 800;
    color: #0f172a;
    line-height: 1.3;
}
.tvq-about__fact-sub {
    font-size: 0.78rem;
    color: #64748b;
    margin-top: 3px;
    line-height: 1.4;
    font-weight: 500;
}

.tvq-about__body {
    max-width: 1000px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: 1fr 320px;
    gap: 36px;
    align-items: start;
}
.tvq-about__prose {
    font-size: 1.05rem;
    line-height: 1.75;
    color: #334155;
    position: relative;
    padding-left: 22px;
    border-left: 3px solid #fde6dc;
}
.tvq-about__prose p:first-of-type::first-letter {
    font-family: Georgia, 'Times New Roman', serif;
    font-size: 3.1rem;
    font-weight: 800;
    color: #dc2626;
    float: left;
    line-height: 0.85;
    margin: 6px 8px 0 0;
}
.tvq-about__prose p { margin: 0 0 14px; }
/* Read-more: hide overflow until expanded */
.tvq-about__prose[data-collapsed="1"] {
    max-height: 240px;
    overflow: hidden;
    position: relative;
}
.tvq-about__prose[data-collapsed="1"]::after {
    content: "";
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 80px;
    background: linear-gradient(180deg, transparent, #fff);
    pointer-events: none;
}
.tvq-about__readmore {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-top: 8px;
    padding: 8px 14px;
    background: transparent;
    color: #dc2626;
    border: 1.5px solid #dc2626;
    border-radius: 999px;
    font-size: 0.86rem;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
}
.tvq-about__readmore:hover {
    background: #dc2626;
    color: #fff;
}

.tvq-about__foryou {
    background: linear-gradient(180deg, #fef9f7 0%, #fff 100%);
    border: 1px solid #fde6dc;
    border-radius: 14px;
    padding: 22px 24px;
    box-shadow: 0 6px 18px rgba(220,38,38,0.04);
}
.tvq-about__foryou-title {
    margin: 0 0 14px;
    font-size: 0.82rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #dc2626;
}
.tvq-about__foryou-list ul {
    list-style: none;
    padding: 0;
    margin: 0;
}
.tvq-about__foryou-list li {
    position: relative;
    padding: 6px 0 6px 24px;
    font-size: 0.94rem;
    line-height: 1.55;
    color: #1f2937;
    border-bottom: 1px solid rgba(220,38,38,0.07);
}
.tvq-about__foryou-list li:last-child { border-bottom: none; }
.tvq-about__foryou-list li::before {
    content: "✓";
    position: absolute;
    left: 0;
    top: 6px;
    width: 18px;
    height: 18px;
    background: #dc2626;
    color: #fff;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.65rem;
    font-weight: 800;
}

@media (max-width: 860px) {
    .tvq-about__body { grid-template-columns: 1fr; gap: 26px; }
}
@media (max-width: 600px) {
    .tvq-about__facts { gap: 10px; margin-bottom: 28px; }
    .tvq-about__fact { padding: 14px 14px; }
    .tvq-about__prose { padding-left: 16px; font-size: 1rem; }
    .tvq-about__prose p:first-of-type::first-letter { font-size: 2.4rem; }
    .tvq-about__foryou { padding: 18px 20px; }
}

/* ---- TRUST BAR (dark): scaled badges + cleaner stars ---- */
.tvq-trust {
    background: #0f172a;
    color: #fff;
    padding: 36px 20px;
    text-align: center;
}
.tvq-trust__row {
    max-width: 1100px;
    margin: 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 60px;
    flex-wrap: wrap;
}
.tvq-trust__rating {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
}
.tvq-trust__stars {
    display: flex;
    gap: 4px;
    color: #fbbf24;
    font-size: 1.2rem;
    letter-spacing: 0.04em;
}
.tvq-trust__label {
    font-size: 0.74rem;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: rgba(255,255,255,0.65);
    font-weight: 600;
}
.tvq-trust__badges {
    display: flex;
    gap: 18px;
    align-items: center;
}
.tvq-trust__badges img {
    height: 32px;
    opacity: 0.85;
    filter: brightness(1.4);
}

/* ---- TESTIMONIAL section background (only — card styles live above
       at line ~3443; the older block here was stale CSS from before
       the carousel was wired up, conflicting max-width:720px!important
       on each card was breaking the flex-100% containment) ---- */
.tvq-testimonials {
    background: #fafaf7;
    padding: 70px 20px;
}
/* Carousel card style refresh on top of the base in the earlier block */
.tvq-testimonial {
    background: #fff;
    border-radius: 16px;
    box-shadow: 0 8px 28px rgba(15,23,42,0.06);
    padding: 30px 32px !important;
    /* keep flex sizing intact — DON'T override max-width here */
}

/* ---- BUILD & BOOK card: cleaner ---- */
.tvq-build {
    background: linear-gradient(180deg, #fff 0%, #fafaf7 100%);
}
.tvq-build__widget,
.tvq-buildwidget,
[class*="tvq-build__total"] {
    border-radius: 16px !important;
    box-shadow: 0 12px 36px rgba(15,23,42,0.08), 0 1px 4px rgba(15,23,42,0.04) !important;
    border: 1px solid #ebe7e0 !important;
}

/* ---- INQUIRY FORM (dark): readable labels + clearer fields ---- */
.tvq-decide {
    background: linear-gradient(180deg, #0f172a 0%, #1e293b 100%) !important;
    color: #fff;
    padding: 70px 20px !important;
}
.tvq-decide .tvq-section__title { color: #fff !important; }
.tvq-decide .tvq-section__kicker {
    background: rgba(220,38,38,0.15);
    color: #fca5a5 !important;
    border: 1px solid rgba(220,38,38,0.35);
}
.tvq-decide label,
.tvq-decide .form-label,
.tvq-decide__label {
    color: rgba(255,255,255,0.85) !important;
    font-size: 0.85rem;
    font-weight: 600;
    margin-bottom: 6px;
    display: block;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.tvq-decide input[type="text"],
.tvq-decide input[type="email"],
.tvq-decide input[type="tel"],
.tvq-decide input[type="number"],
.tvq-decide input[type="date"],
.tvq-decide textarea,
.tvq-decide select {
    background: rgba(255,255,255,0.08) !important;
    border: 1px solid rgba(255,255,255,0.18) !important;
    color: #fff !important;
    border-radius: 10px !important;
    padding: 12px 14px !important;
    font-size: 0.96rem !important;
    transition: border-color 0.15s, background 0.15s;
}
.tvq-decide input::placeholder,
.tvq-decide textarea::placeholder {
    color: rgba(255,255,255,0.42) !important;
}
.tvq-decide input:focus,
.tvq-decide textarea:focus,
.tvq-decide select:focus {
    outline: none !important;
    background: rgba(255,255,255,0.14) !important;
    border-color: #dc2626 !important;
    box-shadow: 0 0 0 3px rgba(220,38,38,0.2) !important;
}
.tvq-decide__form-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 16px;
    max-width: 600px;
    margin: 0 auto;
}
.tvq-decide__form-grid .tvq-decide__field--full {
    grid-column: span 2;
}
@media (max-width: 640px) {
    .tvq-decide__form-grid { grid-template-columns: 1fr; }
    .tvq-decide__form-grid .tvq-decide__field--full { grid-column: span 1; }
}

/* ---- SECTION RHYTHM: consistent vertical spacing ---- */
.tvq-section {
    padding: 70px 20px !important;
}
.tvq-section__head {
    margin-bottom: 36px;
    text-align: center;
}
.tvq-section__title {
    font-size: 2rem;
    font-weight: 800;
    letter-spacing: -0.02em;
    color: #0f172a;
    margin: 8px 0;
}
.tvq-section__kicker {
    display: inline-block;
    padding: 4px 12px;
    background: rgba(220,38,38,0.08);
    color: #dc2626;
    border-radius: 999px;
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    font-weight: 700;
    margin-bottom: 8px;
}

/* Urgency banner — quieter, more elegant */
.tvq-section[style*="padding: 12px"] > div {
    background: #fffbeb !important;
    border-color: #fde68a !important;
    border-radius: 14px !important;
    padding: 12px 24px !important;
}

/* Mobile tweaks */
@media (max-width: 768px) {
    .tvq-section { padding: 50px 18px !important; }
    .tvq-section__title { font-size: 1.6rem; }
    .tvq-hero__pricechip { margin-top: 18px; }
    .tvq-highlights__box { padding: 24px 20px !important; }
    .tvq-testimonial { padding: 28px 22px !important; }
    .tvq-trust__row { gap: 28px; }
    .tvq-float-cta {
        right: 14px;
        bottom: 14px;
        padding: 12px 18px;
        font-size: 0.88rem;
    }
}

/* =================================================================
   UX/UI v3 (2026-06-02) — Trip landing — full feature pass
   ================================================================= */

/* ---- HERO: share + wishlist row ---- */
.tvq-hero__share {
    display: flex;
    gap: 10px;
    margin-top: 22px;
    align-items: center;
}
.tvq-share-btn {
    width: 38px;
    height: 38px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: rgba(255,255,255,0.10);
    backdrop-filter: blur(6px);
    border: 1px solid rgba(255,255,255,0.18);
    color: #fff !important;
    border-radius: 50%;
    text-decoration: none;
    cursor: pointer;
    transition: background 0.15s, transform 0.15s;
}
.tvq-share-btn:hover {
    background: rgba(255,255,255,0.22);
    transform: translateY(-2px);
}
.tvq-share-btn--wishlist.is-saved {
    background: rgba(220,38,38,0.85);
    border-color: #ef4444;
    color: #fff !important;
}
.tvq-share-btn--wishlist.is-saved svg {
    fill: currentColor;
}

/* ---- WHAT'S INCLUDED / NOT INCLUDED ---- */
.tvq-included { background: #fff; }
.tvq-included__grid {
    max-width: 1000px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}
.tvq-included__col {
    padding: 28px 32px;
    border-radius: 14px;
    background: #fafafa;
    border: 1px solid #ebe7e0;
}
.tvq-included__col--yes {
    background: #f0fdf4;
    border-color: #bbf7d0;
}
.tvq-included__col--no {
    background: #fef2f2;
    border-color: #fecaca;
}
.tvq-included__col-title {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 1.05rem;
    font-weight: 700;
    color: #0f172a;
    margin: 0 0 16px;
}
.tvq-included__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    color: #fff;
    font-weight: 800;
    font-size: 0.92rem;
}
.tvq-included__icon--yes { background: #16a34a; }
.tvq-included__icon--no  { background: #dc2626; }
.tvq-included__body ul,
.tvq-included__body ol {
    list-style: none;
    padding: 0;
    margin: 0;
}
.tvq-included__body li {
    position: relative;
    padding: 7px 0 7px 22px;
    font-size: 0.96rem;
    line-height: 1.55;
    color: #1f2937;
    border-bottom: 1px solid rgba(15,23,42,0.06);
}
.tvq-included__body li:last-child { border-bottom: none; }
.tvq-included__col--yes .tvq-included__body li::before {
    content: "✓";
    position: absolute;
    left: 0;
    top: 8px;
    color: #16a34a;
    font-weight: 800;
}
.tvq-included__col--no .tvq-included__body li::before {
    content: "✕";
    position: absolute;
    left: 0;
    top: 8px;
    color: #dc2626;
    font-weight: 800;
}
@media (max-width: 768px) {
    .tvq-included__grid { grid-template-columns: 1fr; }
    .tvq-included__col { padding: 22px 20px; }
}

/* ---- WHY CHOOSE US ---- */
.tvq-why-choose {
    background: linear-gradient(180deg, #fafaf7 0%, #fff 100%);
}
.tvq-why-choose__grid {
    max-width: 1100px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 22px;
}
.tvq-why-choose__card {
    background: #fff;
    border: 1px solid #ebe7e0;
    border-radius: 16px;
    padding: 28px 24px;
    text-align: center;
    transition: transform 0.18s ease, box-shadow 0.18s ease;
}
.tvq-why-choose__card:hover {
    transform: translateY(-4px);
    box-shadow: 0 12px 28px rgba(15,23,42,0.08);
}
.tvq-why-choose__icon {
    font-size: 2.4rem;
    margin-bottom: 12px;
    line-height: 1;
}
.tvq-why-choose__card-title {
    font-size: 1.02rem;
    font-weight: 700;
    color: #0f172a;
    margin: 0 0 8px;
}
.tvq-why-choose__card-body {
    font-size: 0.92rem;
    line-height: 1.55;
    color: #475569;
    margin: 0;
}
@media (max-width: 960px) {
    .tvq-why-choose__grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 540px) {
    .tvq-why-choose__grid { grid-template-columns: 1fr; }
}

/* ---- EMPTY-STATE ITINERARY ---- */
.tvq-itinerary-empty { background: #fafaf7; }
.tvq-itinerary-empty__card {
    max-width: 620px;
    margin: 0 auto;
    background: #fff;
    border: 2px dashed #d4d4d8;
    border-radius: 16px;
    padding: 48px 36px;
    text-align: center;
}
.tvq-itinerary-empty__icon {
    font-size: 3.4rem;
    line-height: 1;
    margin-bottom: 16px;
}
.tvq-itinerary-empty__title {
    font-size: 1.2rem;
    font-weight: 700;
    color: #0f172a;
    margin: 0 0 10px;
}
.tvq-itinerary-empty__sub {
    font-size: 0.95rem;
    line-height: 1.6;
    color: #64748b;
    margin: 0 0 22px;
}
.tvq-btn--sm {
    padding: 10px 18px !important;
    font-size: 0.9rem !important;
}

/* ---- WHATSAPP FLOATING BUTTON ---- */
.tvq-whatsapp-float {
    position: fixed;
    left: 22px;
    bottom: 26px;
    z-index: 79;
    width: 56px;
    height: 56px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: #25d366;
    color: #fff !important;
    border-radius: 50%;
    box-shadow: 0 10px 28px rgba(37,211,102,0.42), 0 2px 6px rgba(0,0,0,0.15);
    transition: transform 0.18s ease, box-shadow 0.18s ease;
}
.tvq-whatsapp-float:hover {
    transform: scale(1.05) translateY(-2px);
    box-shadow: 0 14px 36px rgba(37,211,102,0.5), 0 3px 8px rgba(0,0,0,0.18);
    color: #fff !important;
}
@media (max-width: 768px) {
    .tvq-whatsapp-float {
        left: 14px;
        bottom: 14px;
        width: 48px;
        height: 48px;
    }
    .tvq-whatsapp-float svg { width: 22px; height: 22px; }
}

/* ---- DIFFICULTY VISUAL SCALE (overlay on stats) ---- */
.tvq-trip-stat__value--diff-easy::after,
.tvq-trip-stat__value--diff-moderate::after,
.tvq-trip-stat__value--diff-challenging::after {
    content: "";
    display: inline-block;
    width: 36px;
    height: 6px;
    margin-left: 8px;
    border-radius: 3px;
    vertical-align: middle;
    background: linear-gradient(90deg,
        var(--diff-color, #d4d4d8) 0%,
        var(--diff-color, #d4d4d8) var(--diff-pct, 33%),
        #e5e7eb var(--diff-pct, 33%));
}
.tvq-trip-stat__value--diff-easy {
    --diff-color: #16a34a;
    --diff-pct: 33%;
}
.tvq-trip-stat__value--diff-moderate {
    --diff-color: #d97706;
    --diff-pct: 66%;
}
.tvq-trip-stat__value--diff-challenging {
    --diff-color: #dc2626;
    --diff-pct: 100%;
}

/* ---- FOOTER expansion (using existing tvq-footer container if present) ---- */
.tvq-page-footer {
    background: #0f172a;
    color: rgba(255,255,255,0.85);
    padding: 50px 20px 30px;
}
.tvq-page-footer__inner {
    max-width: 1100px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: 1.4fr 1fr 1fr 1.2fr;
    gap: 40px;
}
.tvq-page-footer__col h4 {
    color: #fff;
    font-size: 0.95rem;
    font-weight: 700;
    margin: 0 0 14px;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}
.tvq-page-footer__col a,
.tvq-page-footer__col p {
    display: block;
    color: rgba(255,255,255,0.7);
    font-size: 0.88rem;
    line-height: 1.7;
    text-decoration: none;
    margin: 0 0 4px;
}
.tvq-page-footer__col a:hover { color: #fff; }
.tvq-page-footer__bottom {
    max-width: 1100px;
    margin: 30px auto 0;
    padding-top: 20px;
    border-top: 1px solid rgba(255,255,255,0.10);
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 0.82rem;
    color: rgba(255,255,255,0.55);
}
@media (max-width: 768px) {
    .tvq-page-footer__inner { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 480px) {
    .tvq-page-footer__inner { grid-template-columns: 1fr; gap: 26px; }
    .tvq-page-footer__bottom { flex-direction: column; gap: 8px; text-align: center; }
}

/* =================================================================
   UX/UI v4 (2026-06-03) — Available Departures card grid
   ================================================================= */

.tvq-depart {
    background: #fff;
}
.tvq-depart__lead {
    max-width: 600px;
    margin: 8px auto 0;
    color: #475569;
    font-size: 0.98rem;
    line-height: 1.6;
    text-align: center;
}
.tvq-depart__lead a {
    color: #dc2626;
    font-weight: 600;
    text-decoration: none;
    border-bottom: 1px solid currentColor;
}
.tvq-depart__lead a:hover { color: #b91c1c; }
.tvq-depart__alt-cta {
    max-width: 600px;
    margin: 6px auto 18px;
    text-align: center;
    color: #94a3b8;
    font-size: 0.88rem;
}
.tvq-depart__alt-cta a {
    color: var(--tvq-accent-deep);
    font-weight: 600;
    text-decoration: none;
    margin-left: 4px;
}
.tvq-depart__alt-cta a:hover { text-decoration: underline; }

/* ---- Month filter pills ---- */
.tvq-depart__filter {
    max-width: 980px;
    margin: 0 auto 28px;
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: center;
}
.tvq-depart__pill {
    padding: 8px 16px;
    background: #fff;
    color: #475569;
    border: 1.5px solid #e2e8f0;
    border-radius: 999px;
    font-size: 0.85rem;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.15s ease;
}
.tvq-depart__pill:hover {
    border-color: #cbd5e1;
    color: #0f172a;
}
.tvq-depart__pill--active {
    background: #dc2626;
    color: #fff;
    border-color: #dc2626;
}

/* ---- Card grid ---- */
.tvq-depart__grid {
    max-width: 1000px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 18px;
    align-items: stretch;   /* equal card heights */
}
.tvq-depart__card {
    background: #fff;
    border: 1px solid #ebe7e0;
    border-radius: 14px;
    padding: 22px 22px 18px;
    display: flex;
    flex-direction: column;
    gap: 14px;
    transition: transform 0.18s, box-shadow 0.18s, border-color 0.18s;
    position: relative;
    height: 100%;           /* fill the grid cell */
}
/* Push the CTA to the bottom so all cards align */
.tvq-depart__cta { margin-top: auto; }
.tvq-depart__card:hover {
    transform: translateY(-3px);
    border-color: #dc2626;
    box-shadow: 0 14px 32px rgba(220,38,38,0.10), 0 2px 6px rgba(15,23,42,0.04);
}
.tvq-depart__card--almost_full { border-color: #fcd34d; }
.tvq-depart__card--chosen {
    border-color: #dc2626 !important;
    box-shadow: 0 0 0 3px rgba(220,38,38,0.18),
                0 8px 24px rgba(220,38,38,0.12) !important;
}
.tvq-depart__card--chosen::after {
    content: "✓ Selected";
    position: absolute;
    top: 12px;
    right: 12px;
    padding: 3px 9px;
    background: #dc2626;
    color: #fff;
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    border-radius: 999px;
}

.tvq-depart__card-head {
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.tvq-depart__card-dow {
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: #94a3b8;
    font-weight: 700;
}
.tvq-depart__card-date {
    font-size: 1.25rem;
    font-weight: 800;
    color: #0f172a;
    letter-spacing: -0.01em;
}
/* A slot sold by the hour: the start time, next to the date. */
.tvq-depart__card-time {
    display: inline-block;
    align-self: flex-start;
    margin-left: 0;
    padding: 2px 10px;
    border-radius: 999px;
    background: var(--tvq-accent-soft, #FFEBEB);
    color: var(--tvq-accent-deep, #990002);
    font-size: 1rem;
    font-weight: 800;
    font-variant-numeric: tabular-nums;
    vertical-align: 2px;
}
.tvq-depart__guarantee {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-top: 4px;
    font-size: 0.74rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #16a34a;
    width: max-content;
}
.tvq-depart__guarantee svg { stroke: currentColor; }

.tvq-depart__card-body {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
    padding: 12px 0;
    border-top: 1px solid #f1f5f9;
    border-bottom: 1px solid #f1f5f9;
}
.tvq-depart__card-return,
.tvq-depart__card-price {
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.tvq-depart__card-return small,
.tvq-depart__card-price small {
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #94a3b8;
    font-weight: 600;
}
.tvq-depart__card-return span {
    font-size: 0.95rem;
    font-weight: 600;
    color: #334155;
}
.tvq-depart__card-price {
    flex-direction: row;
    flex-wrap: wrap;
    align-items: baseline;
    column-gap: 4px;
    row-gap: 0;
}
.tvq-depart__card-price small {
    flex-basis: 100%;
}
.tvq-depart__card-price strong {
    font-size: 1.1rem;
    font-weight: 800;
    color: #dc2626;
    line-height: 1.2;
    white-space: nowrap;
}
.tvq-depart__card-perpax {
    font-size: 0.78rem;
    color: #94a3b8;
    font-weight: 500;
    white-space: nowrap;
}

.tvq-depart__card-avail {
    font-size: 0.88rem;
}
.tvq-depart__avail-open,
.tvq-depart__avail-low {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-weight: 600;
}
.tvq-depart__avail-open { color: #16a34a; }
.tvq-depart__avail-low { color: #b91c1c; }
.tvq-depart__avail-dot {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: currentColor;
    box-shadow: 0 0 0 3px currentColor;
    opacity: 0.25;
}
.tvq-depart__avail-open .tvq-depart__avail-dot { opacity: 0.3; }

.tvq-depart__cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    margin-top: 4px;
    padding: 12px 18px;
    background: #dc2626;
    color: #fff !important;
    font-weight: 700;
    font-size: 0.92rem;
    text-align: center;
    text-decoration: none;
    border-radius: 10px;
    transition: background 0.15s ease;
}
.tvq-depart__cta:hover {
    background: #b91c1c;
    color: #fff !important;
}

/* ---- Load more ---- */
.tvq-depart__more-wrap {
    max-width: 1000px;
    margin: 26px auto 0;
    text-align: center;
}
.tvq-depart__more {
    background: #fff;
    color: #0f172a;
    border: 1.5px solid #0f172a;
    padding: 12px 28px;
    border-radius: 999px;
    font-weight: 700;
    font-size: 0.9rem;
    letter-spacing: 0.02em;
    cursor: pointer;
    transition: background 0.15s, color 0.15s;
}
.tvq-depart__more:hover {
    background: #0f172a;
    color: #fff;
}

/* ---- Sold-out compact list ---- */
.tvq-depart__soldout {
    max-width: 1000px;
    margin: 32px auto 0;
    padding: 18px 22px;
    background: #fafaf7;
    border: 1px solid #ebe7e0;
    border-radius: 12px;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
    font-size: 0.88rem;
    color: #475569;
}
.tvq-depart__soldout-label {
    font-weight: 700;
    color: #0f172a;
}
.tvq-depart__soldout-pill {
    padding: 4px 10px;
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 999px;
    font-size: 0.82rem;
    color: #94a3b8;
    text-decoration: line-through;
}
.tvq-depart__waitlist {
    margin-left: auto;
    color: #dc2626 !important;
    font-weight: 700;
    text-decoration: none;
}
.tvq-depart__waitlist:hover { color: #b91c1c !important; }

@media (max-width: 600px) {
    .tvq-depart__grid { grid-template-columns: 1fr; }
    .tvq-depart__card { padding: 18px 18px 14px; }
    .tvq-depart__soldout { flex-direction: column; align-items: flex-start; }
    .tvq-depart__waitlist { margin-left: 0; }
}

/* ════════════════════════════════════════════════════════════════
   Phase UX v22 — departures enhancements
   ════════════════════════════════════════════════════════════════ */

/* Collapsed cards (idx >= 6) — JS toggles them on "Show all" */
.tvq-depart__card--collapsed { display: none; }

/* Top-right yield-pricing badge */
.tvq-depart__yield {
    position: absolute;
    top: 10px;
    right: 10px;
    padding: 3px 10px;
    border-radius: 999px;
    font-size: 0.7rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    z-index: 2;
}
.tvq-depart__yield--save {
    background: #ecfdf5;
    color: #047857;
    border: 1px solid #a7f3d0;
}
.tvq-depart__yield--premium {
    background: #fef3c7;
    color: #b45309;
    border: 1px solid #fde68a;
}

/* Chip row in card head (duration + guaranteed) */
.tvq-depart__card-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 4px;
}
.tvq-depart__chip {
    display: inline-flex;
    align-items: center;
    padding: 2px 8px;
    background: #f1f5f9;
    border-radius: 999px;
    font-size: 0.72rem;
    font-weight: 600;
    color: #475569;
    letter-spacing: 0.02em;
}
.tvq-depart__chip--duration {
    background: #eff6ff;
    color: #1e40af;
}

/* Deposit hint line under price */
.tvq-depart__deposit {
    flex-basis: 100%;
    margin-top: 4px;
    font-size: 0.74rem;
    color: #475569;
    font-weight: 500;
    line-height: 1.3;
}

/* Pulse animation on low-seat urgency */
@keyframes tvq-depart-pulse {
    0%, 100% { box-shadow: 0 0 0 0 currentColor; }
    50%      { box-shadow: 0 0 0 6px transparent; }
}
.tvq-depart__avail-low .tvq-depart__avail-dot {
    animation: tvq-depart-pulse 1.6s ease-in-out infinite;
}

/* CTA + Add-to-Calendar button group */
.tvq-depart__card-actions {
    display: flex;
    gap: 8px;
    margin-top: auto;
    align-items: stretch;
}
.tvq-depart__card-actions .tvq-depart__cta {
    flex: 1 1 auto;
    margin-top: 0;
}
.tvq-depart__ics {
    flex: 0 0 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: #fff;
    color: #475569 !important;
    border: 1.5px solid #e2e8f0;
    border-radius: 10px;
    transition: border-color 0.15s, color 0.15s, background 0.15s;
    text-decoration: none;
}
.tvq-depart__ics:hover {
    border-color: #dc2626;
    color: #dc2626 !important;
    background: #fef2f2;
}
.tvq-depart__ics:focus { outline: none; }
.tvq-depart__ics:focus-visible {
    outline: 2px solid #dc2626;
    outline-offset: 2px;
}

/* Empty state when month filter has zero matches */
.tvq-depart__empty {
    max-width: 600px;
    margin: 12px auto 0;
    padding: 28px 22px;
    background: #fafaf7;
    border: 1px dashed #ebe7e0;
    border-radius: 12px;
    text-align: center;
    color: #475569;
}
.tvq-depart__empty svg { color: #94a3b8; margin-bottom: 8px; }
.tvq-depart__empty p { margin: 0; font-size: 0.95rem; }
.tvq-depart__empty a {
    color: #dc2626;
    font-weight: 600;
    text-decoration: none;
}

/* Filter pill focus-visible (keyboard nav) */
.tvq-depart__pill:focus { outline: none; }
.tvq-depart__pill:focus-visible {
    outline: 2px solid #dc2626;
    outline-offset: 2px;
}

/* Guaranteed pill — make tooltip cursor obvious */
.tvq-depart__guarantee {
    cursor: help;
    border-bottom: 1px dotted currentColor;
}

/* =================================================================
   ITINERARY v16 — Trip stats bar + day-type badges + next-day preview
   ================================================================= */

/* Trip stats bar above the timeline */
.tvq-trip-stats-bar {
    max-width: 900px;
    margin: 18px auto 30px;
    padding: 16px 22px;
    background: linear-gradient(180deg, #fef9f7 0%, #fff 100%);
    border: 1px solid #fde6dc;
    border-radius: 14px;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 18px;
    box-shadow: 0 4px 14px rgba(220,38,38,0.04);
}
.tvq-trip-stats-bar__item {
    display: flex;
    align-items: center;
    gap: 10px;
    color: #475569;
    font-size: 0.92rem;
}
.tvq-trip-stats-bar__item svg {
    color: #dc2626;
    flex-shrink: 0;
}
.tvq-trip-stats-bar__item strong {
    color: #0f172a;
    font-weight: 800;
    font-size: 1.04rem;
}
.tvq-trip-stats-bar__item small {
    color: #94a3b8;
    font-weight: 500;
}

/* Day-type badge — sits next to the Day N pill */
.tvq-trip-day__type {
    display: inline-block;
    padding: 3px 10px;
    background: #f1f5f9;
    color: #475569;
    border-radius: 99px;
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    margin-bottom: 6px;
    margin-left: 8px;
}
.tvq-trip-day__type--arrival     { background: #ecfdf5; color: #16a34a; }
.tvq-trip-day__type--departure   { background: #fef2f2; color: #dc2626; }
.tvq-trip-day__type--travel      { background: #eef2ff; color: #4f46e5; }
.tvq-trip-day__type--rest        { background: #ede9fe; color: #7c3aed; }
.tvq-trip-day__type--adventure   { background: #fffbeb; color: #b45309; }
.tvq-trip-day__type--sightseeing { background: #fce7f3; color: #be185d; }

/* Next-day preview at the bottom of each card */
.tvq-trip-day__next {
    margin-top: 14px;
    padding: 10px 14px;
    background: #fafaf7;
    border: 1px solid #ebe7e0;
    border-radius: 10px;
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 0.86rem;
    color: #475569;
}
.tvq-trip-day__next-label {
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-size: 0.66rem;
    font-weight: 800;
    color: #94a3b8;
    background: #fff;
    padding: 3px 8px;
    border-radius: 4px;
    border: 1px solid #ebe7e0;
}
.tvq-trip-day__next-title {
    flex: 1;
    font-weight: 600;
    color: #0f172a;
    /* truncate to 1 line */
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.tvq-trip-day__next svg { color: #94a3b8; flex-shrink: 0; }

@media (max-width: 600px) {
    .tvq-trip-stats-bar {
        padding: 14px 16px;
        gap: 12px;
    }
    .tvq-trip-stats-bar__item { font-size: 0.86rem; }
    .tvq-trip-day__type { font-size: 0.65rem; }
    .tvq-trip-day__next { padding: 8px 12px; font-size: 0.8rem; }
}

/* =================================================================
   WHAT'S INCLUDED v17 — per-item icons + counters + lead
   ================================================================= */

/* Column-title item count chip */
.tvq-included__col-title {
    display: flex !important;
    align-items: center;
    gap: 10px;
}
.tvq-included__count {
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 28px;
    height: 24px;
    padding: 0 8px;
    background: #fff;
    color: #0f172a;
    border: 1px solid #ebe7e0;
    border-radius: 999px;
    font-size: 0.8rem;
    font-weight: 800;
}
.tvq-included__col--yes .tvq-included__count {
    color: #16a34a;
    border-color: #bbf7d0;
}
.tvq-included__col--no .tvq-included__count {
    color: #dc2626;
    border-color: #fecaca;
}

/* Structured per-item list */
.tvq-included__list {
    list-style: none !important;
    padding: 0 !important;
    margin: 0 !important;
}
.tvq-incl-item {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 10px 4px !important;
    border-bottom: 1px solid rgba(15,23,42,0.05);
    transition: padding-left 0.15s ease, background 0.15s ease;
    border-radius: 6px;
}
.tvq-incl-item:last-child { border-bottom: none; }
.tvq-incl-item::before { content: none !important; }   /* kill the legacy ✓/✗ */
.tvq-incl-item:hover {
    padding-left: 8px !important;
    background: rgba(255,255,255,0.6);
}
.tvq-incl-item__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 8px;
    flex-shrink: 0;
    background: #fff;
    border: 1.5px solid #ebe7e0;
    margin-top: 1px;
}
.tvq-included__col--yes .tvq-incl-item__icon {
    color: #16a34a;
    border-color: #bbf7d0;
    background: #f0fdf4;
}
.tvq-included__col--no .tvq-incl-item__icon {
    color: #dc2626;
    border-color: #fecaca;
    background: #fef2f2;
}
.tvq-incl-item__text {
    flex: 1;
    font-size: 0.96rem;
    line-height: 1.5;
    color: #1f2937;
    padding-top: 4px;
}

@media (max-width: 600px) {
    .tvq-incl-item { padding: 8px 4px !important; gap: 10px; }
    .tvq-incl-item__icon { width: 24px; height: 24px; }
    .tvq-incl-item__text { font-size: 0.9rem; }
}

/* ════════════════════════════════════════════════════════════════
   BOOK YOUR TOUR — 4-step wizard (Phase UX v23)
   ════════════════════════════════════════════════════════════════ */

/* ── Overlay shell ────────────────────────────────────────────── */
.tvq-bw {
    position: fixed;
    inset: 0;
    z-index: 9990;
    background: #f7f5f0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    opacity: 0;
    animation: tvq-bw-fade-in 0.25s ease-out forwards;
}
.tvq-bw[hidden] { display: none !important; }
@keyframes tvq-bw-fade-in {
    from { opacity: 0; transform: translateY(8px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* ── Top bar ──────────────────────────────────────────────────── */
.tvq-bw__bar {
    background: #091413;
    color: #fff;
    padding: 14px 20px;
    flex-shrink: 0;
    box-shadow: 0 2px 12px rgba(0,0,0,0.08);
}
.tvq-bw__bar-inner {
    max-width: 1280px;
    margin: 0 auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}
.tvq-bw__bar-title {
    font-size: 1.1rem;
    font-weight: 800;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}
.tvq-bw__close {
    background: rgba(255,255,255,0.08);
    color: #fff;
    border: 0;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background 0.15s;
}
.tvq-bw__close:hover { background: rgba(255,255,255,0.18); }

/* ── Body: 2-column layout ────────────────────────────────────── */
.tvq-bw__body {
    flex: 1 1 auto;
    overflow-y: auto;
    padding: 30px 20px 30px;
}
.tvq-bw__body > * {
    max-width: 1180px;
    margin: 0 auto;
}
.tvq-bw__body {
    display: grid;
    grid-template-columns: 1fr;
    gap: 30px;
}
@media (min-width: 880px) {
    .tvq-bw__body {
        grid-template-columns: minmax(0, 1fr) 360px;
        max-width: 1240px;
        margin: 0 auto;
        padding: 40px 30px;
    }
}

/* ── Main step container ──────────────────────────────────────── */
.tvq-bw__main {
    background: transparent;
    min-width: 0;
}
.tvq-bw__step { display: none; animation: tvq-bw-step-in 0.35s ease-out; }
.tvq-bw__step.is-active { display: block; }
@keyframes tvq-bw-step-in {
    from { opacity: 0; transform: translateX(6px); }
    to   { opacity: 1; transform: translateX(0); }
}
.tvq-bw__step-title {
    margin: 0 0 8px;
    font-size: 1.7rem;
    font-weight: 800;
    color: #091413;
    letter-spacing: -0.01em;
}
.tvq-bw__step-lead {
    margin: 0 0 28px;
    color: #475569;
    font-size: 0.95rem;
}

/* ── Pax stepper (step 1) ─────────────────────────────────────── */
.tvq-bw__pax {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin-bottom: 18px;
}
.tvq-bw__pax-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: #fff;
    border: 1px solid #ebe7e0;
    border-radius: 12px;
    padding: 14px 18px;
}
.tvq-bw__pax-row strong {
    display: block;
    color: #091413;
    font-size: 1rem;
    font-weight: 700;
}
.tvq-bw__pax-hint {
    display: block;
    margin-top: 2px;
    font-size: 0.78rem;
    color: #94a3b8;
}
.tvq-bw__stepper {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    background: #f1f5f9;
    border-radius: 10px;
    padding: 4px;
}
.tvq-bw__stepper button {
    width: 34px;
    height: 34px;
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    font-size: 1.1rem;
    font-weight: 700;
    color: #091413;
    cursor: pointer;
    transition: all 0.12s;
}
.tvq-bw__stepper button:hover {
    border-color: var(--tvq-accent-deep);
    color: var(--tvq-accent-deep);
}
.tvq-bw__stepper button:disabled {
    opacity: 0.4;
    cursor: not-allowed;
}
.tvq-bw__stepper span {
    min-width: 32px;
    text-align: center;
    font-weight: 700;
    font-size: 1.05rem;
    color: #091413;
}

/* ── Seat-availability warning ────────────────────────────────── */
.tvq-bw__seats-warn {
    display: flex;
    align-items: center;
    gap: 8px;
    background: #fef3c7;
    color: #92400e;
    border: 1px solid #fde68a;
    border-radius: 10px;
    padding: 10px 14px;
    font-size: 0.88rem;
    font-weight: 500;
    margin-bottom: 18px;
}
/* HTML5 hidden-attribute override — custom display:flex was winning */
.tvq-bw [hidden],
.tvq-bw__seats-warn[hidden],
.tvq-bw__promo[hidden],
.tvq-bw__summary-addons[hidden],
.tvq-bw__summary-promo[hidden] {
    display: none !important;
}

/* ── Promo toggle + input ─────────────────────────────────────── */
.tvq-bw__promo-toggle {
    background: transparent;
    color: var(--tvq-accent-deep);
    border: 0;
    padding: 6px 0;
    font-size: 0.92rem;
    font-weight: 600;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
.tvq-bw__promo-toggle:hover { color: var(--tvq-accent-dark); }
.tvq-bw__promo {
    display: flex;
    gap: 8px;
    margin-top: 8px;
    margin-bottom: 18px;
}
.tvq-bw__promo[hidden] { display: none; }
.tvq-bw__promo input {
    flex: 1 1 auto;
    border: 1.5px solid #ebe7e0;
    border-radius: 10px;
    padding: 10px 14px;
    font-size: 0.92rem;
    background: #fff;
    font-family: inherit;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.tvq-bw__promo input:focus {
    outline: none;
    border-color: var(--tvq-accent-deep);
}
.tvq-bw__promo button {
    background: #091413;
    color: #fff;
    border: 0;
    border-radius: 10px;
    padding: 0 18px;
    font-weight: 700;
    font-size: 0.85rem;
    cursor: pointer;
    letter-spacing: 0.04em;
}

/* ── WhatsApp shortcut ────────────────────────────────────────── */
.tvq-bw__wa {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 22px 0 10px;
    padding: 12px 16px;
    background: linear-gradient(135deg, #25d366 0%, #128c7e 100%);
    color: #fff !important;
    border-radius: 12px;
    text-decoration: none;
    font-weight: 700;
    font-size: 0.92rem;
    box-shadow: 0 4px 12px rgba(37,211,102,0.18);
    transition: transform 0.15s, box-shadow 0.15s;
}
.tvq-bw__wa:hover {
    transform: translateY(-1px);
    box-shadow: 0 8px 18px rgba(37,211,102,0.28);
    color: #fff !important;
}

/* ── Add-on cards (step 2) ────────────────────────────────────── */
.tvq-bw__addons {
    display: grid;
    grid-template-columns: 1fr;
    gap: 12px;
    margin-bottom: 24px;
}
@media (min-width: 720px) {
    .tvq-bw__addons { grid-template-columns: 1fr 1fr; }
}
.tvq-bw__addon {
    background: #fff;
    border: 1px solid #ebe7e0;
    border-radius: 12px;
    padding: 16px 18px;
    display: flex;
    align-items: flex-start;
    gap: 12px;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.tvq-bw__addon.is-selected {
    border-color: var(--tvq-accent-deep);
    box-shadow: 0 0 0 3px rgba(153,0,2,0.08);
}
.tvq-bw__addon-info {
    flex: 1 1 auto;
    min-width: 0;
}
.tvq-bw__addon-info strong {
    display: block;
    font-size: 0.98rem;
    font-weight: 700;
    color: #091413;
    margin-bottom: 2px;
}
.tvq-bw__addon-tip {
    display: inline-block;
    margin-left: 4px;
    color: #94a3b8;
    cursor: help;
    font-size: 0.85rem;
}
.tvq-bw__addon-price {
    color: var(--tvq-accent-deep);
    font-weight: 700;
    font-size: 0.88rem;
    margin-bottom: 4px;
}
.tvq-bw__addon-desc {
    margin: 4px 0 0;
    font-size: 0.82rem;
    color: #64748b;
    line-height: 1.45;
}
.tvq-bw__addon-btn {
    flex-shrink: 0;
    background: #fff;
    color: var(--tvq-accent-deep);
    border: 1.5px solid var(--tvq-accent-deep);
    border-radius: 8px;
    padding: 8px 18px;
    font-weight: 700;
    font-size: 0.85rem;
    cursor: pointer;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    transition: all 0.15s;
}
.tvq-bw__addon-btn:hover {
    background: #fef2f2;
}
.tvq-bw__addon-btn.is-on {
    background: var(--tvq-accent-deep);
    color: #fff;
}
.tvq-bw__empty {
    padding: 28px 22px;
    background: #fafaf7;
    border: 1px dashed #ebe7e0;
    border-radius: 12px;
    text-align: center;
    color: #475569;
}

/* ── Form (step 3) ────────────────────────────────────────────── */
.tvq-bw__form {
    display: flex;
    flex-direction: column;
    gap: 14px;
    max-width: 540px;
}
.tvq-bw__field {
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.tvq-bw__field > span {
    font-size: 0.85rem;
    font-weight: 600;
    color: #091413;
}
.tvq-bw__field em {
    color: var(--tvq-accent-deep);
    font-style: normal;
    margin-left: 2px;
}
.tvq-bw__field small {
    color: #94a3b8;
    font-weight: 500;
    margin-left: 4px;
}
.tvq-bw__field input,
.tvq-bw__field textarea {
    background: #fff;
    border: 1.5px solid #ebe7e0;
    border-radius: 10px;
    padding: 11px 14px;
    font-size: 0.95rem;
    font-family: inherit;
    color: #091413;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.tvq-bw__field input:focus,
.tvq-bw__field textarea:focus {
    outline: none;
    border-color: var(--tvq-accent-deep);
    box-shadow: 0 0 0 3px rgba(153,0,2,0.08);
}
.tvq-bw__trust {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 8px;
}
.tvq-bw__trust-pill {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    background: #f1f5f9;
    color: #475569;
    border-radius: 999px;
    padding: 4px 10px;
    font-size: 0.75rem;
    font-weight: 600;
}
/* ─── The way out for somebody who likes this trip but not these
   dates ───────────────────────────────────────────────────────────

   Two placements, and they sit on opposite grounds. The booking form
   is on a white card; the enquiry section is a near-black gradient.
   The first version used one grey for both, which on the dark one was
   grey text on near-black - the same invisible-link bug as the
   catalogue, in a second place, written on the same afternoon. Each
   ground gets its own colours now, from the same component. */
.tvq-bw__tailor {
    margin: 18px 0 0;
    padding-top: 16px;
    border-top: 1px solid rgba(9, 20, 19, .09);
    font-size: .92rem;
    color: #5b6570;
    text-align: center;
}
.tvq-bw__tailor a {
    color: #990002;
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}
/* On the dark enquiry section. */
.tvq-decide .tvq-bw__tailor {
    border-top-color: rgba(255, 255, 255, .14);
    color: rgba(255, 255, 255, .72);
}
.tvq-decide .tvq-bw__tailor a {
    color: #fff;
    text-decoration-color: rgba(255, 255, 255, .55);
}
.tvq-decide .tvq-bw__tailor a:hover {
    text-decoration-color: #fff;
}

/* ─── The enquiry form on the dark section ────────────────────────

   This form is the save-modal component, written for a white modal
   and reused inside .tvq-decide, which is a near-black gradient. Its
   labels are var(--tvq-ink) - dark ink on near-black - so every
   question on the page was there and unreadable, and the section
   centres its text, which left the hints floating away from the
   fields they belong to.

   Every colour below is stated for THIS ground rather than inherited
   from a component that assumes white. */
.tvq-decide .tvq-save-modal__field {
    text-align: left;
}
.tvq-decide .tvq-save-modal__field span {
    color: rgba(255, 255, 255, .92);
}
.tvq-decide .tvq-save-modal__field span small {
    color: rgba(255, 255, 255, .55);
    font-weight: 500;
}
.tvq-decide .tvq-field-hint {
    display: block;
    margin-top: 6px;
    font-size: 0.78rem;
    line-height: 1.45;
    color: rgba(255, 255, 255, .58);
    text-align: left;
}
.tvq-decide .tvq-save-modal__field input,
.tvq-decide .tvq-save-modal__field select,
.tvq-decide .tvq-save-modal__field textarea {
    background: rgba(255, 255, 255, .06);
    border: 1px solid rgba(255, 255, 255, .18);
    color: #fff;
}
.tvq-decide .tvq-save-modal__field input::placeholder,
.tvq-decide .tvq-save-modal__field textarea::placeholder {
    /* .42 measured 3.9:1 against this gradient, under the 4.5:1 a
       placeholder needs to be read rather than sensed. .50 is 4.9. */
    color: rgba(255, 255, 255, .50);
}
.tvq-decide .tvq-save-modal__field select option {
    color: var(--tvq-ink);
}
.tvq-decide .tvq-save-modal__field input:focus,
.tvq-decide .tvq-save-modal__field select:focus,
.tvq-decide .tvq-save-modal__field textarea:focus {
    border-color: rgba(255, 255, 255, .55);
    background: rgba(255, 255, 255, .10);
    outline: none;
}

/* The choose-several question, as tick boxes rather than a control
   that asks a phone to hold Ctrl. Same shape as /custom-trip. */
.tvq-choices {
    display: grid;
    gap: 8px;
    grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
    margin-top: 2px;
}
.tvq-choice {
    display: flex;
    align-items: flex-start;
    gap: 9px;
    padding: 10px 12px;
    border: 1px solid rgba(255, 255, 255, .18);
    border-radius: 11px;
    background: rgba(255, 255, 255, .05);
    color: rgba(255, 255, 255, .92);
    font-size: 0.9rem;
    line-height: 1.35;
    font-weight: 500;
    cursor: pointer;
    transition: border-color .15s ease, background .15s ease;
}
.tvq-choice:hover {
    border-color: rgba(255, 255, 255, .38);
}
.tvq-choice input {
    width: auto;
    margin: 2px 0 0;
    flex: none;
    accent-color: var(--tvq-accent);
}
.tvq-choice:has(input:checked) {
    border-color: var(--tvq-accent);
    background: rgba(245, 0, 0, .14);
}
.tvq-choice:focus-within {
    box-shadow: 0 0 0 3px rgba(245, 0, 0, .22);
}

/* ─── The band under the departures grid ──────────────────────────

   The highest-intent moment on the page: the trip has been read, the
   dates have been scrolled, and none of them work. That person used
   to have nowhere to go but the back button.

   Deliberately NOT another red button: the departure cards above it
   all carry one, and a third red thing competing with "Book now" on
   the date somebody might still take would cost more bookings than it
   wins. Outlined, on a tinted ground, filling only on hover. */
.tvq-tailor-band {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    flex-wrap: wrap;
    max-width: 900px;
    margin: 32px auto 0;
    padding: 22px 26px;
    border: 1px solid rgba(245, 0, 0, .18);
    border-radius: 18px;
    background:
        radial-gradient(ellipse 70% 120% at 0% 50%,
            rgba(245, 0, 0, .06), transparent 70%),
        var(--tvq-card, #fff);
}
.tvq-tailor-band__title {
    margin: 0 0 4px;
    font-size: 1.08rem;
    font-weight: 800;
    letter-spacing: -0.01em;
    color: var(--tvq-ink);
}
.tvq-tailor-band__sub {
    margin: 0;
    max-width: 46ch;
    font-size: 0.93rem;
    line-height: 1.5;
    color: var(--tvq-ink-soft);
}
.tvq-tailor-band__cta {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    flex: none;
    padding: 12px 22px;
    border-radius: 999px;
    border: 1.5px solid var(--tvq-accent);
    background: transparent;
    color: var(--tvq-accent);
    font-size: 0.95rem;
    font-weight: 700;
    text-decoration: none;
    white-space: nowrap;
    transition: background .18s ease, color .18s ease,
                transform .18s ease, box-shadow .18s ease;
}
.tvq-tailor-band__cta .tvq-tailor-arrow {
    display: inline-block;
    transition: transform .18s ease;
}
.tvq-tailor-band__cta:hover {
    background: var(--tvq-accent);
    color: #fff;
    transform: translateY(-1px);
    box-shadow: 0 8px 22px rgba(245, 0, 0, .26);
}
.tvq-tailor-band__cta:hover .tvq-tailor-arrow {
    transform: translateX(3px);
}
.tvq-tailor-band__cta:focus-visible {
    outline: 2px solid var(--tvq-accent);
    outline-offset: 3px;
}
@media (max-width: 640px) {
    .tvq-tailor-band {
        flex-direction: column;
        align-items: flex-start;
        text-align: left;
        padding: 20px;
    }
    .tvq-tailor-band__cta {
        width: 100%;
        justify-content: center;
    }
}
@media (prefers-reduced-motion: reduce) {
    .tvq-tailor-band__cta,
    .tvq-tailor-band__cta .tvq-tailor-arrow {
        transition: none;
    }
    .tvq-tailor-band__cta:hover {
        transform: none;
    }
}
.tvq-bw__consent {
    margin: 4px 0 0;
    font-size: 0.78rem;
    color: #64748b;
    text-align: center;
}

/* ── Nav (back / next / confirm) ──────────────────────────────── */
.tvq-bw__nav {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    margin-top: 28px;
    padding-top: 24px;
    border-top: 1px solid #ebe7e0;
}
.tvq-bw__back,
.tvq-bw__next,
.tvq-bw__confirm {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 12px 22px;
    font-weight: 700;
    font-size: 0.92rem;
    border-radius: 10px;
    cursor: pointer;
    text-decoration: none;
    transition: all 0.15s;
    border: 0;
    font-family: inherit;
}
.tvq-bw__back {
    background: transparent;
    color: #475569;
    padding: 12px 16px;
}
.tvq-bw__back:hover { color: #091413; }
.tvq-bw__next,
.tvq-bw__confirm {
    background: var(--tvq-accent-deep);
    color: #fff;
}
.tvq-bw__next:hover,
.tvq-bw__confirm:hover {
    background: var(--tvq-accent-dark);
    transform: translateY(-1px);
    box-shadow: 0 6px 14px rgba(153,0,2,0.22);
}

/* ── Confirmation step (step 4) ───────────────────────────────── */
.tvq-bw__done {
    text-align: center;
    padding: 40px 20px;
}
.tvq-bw__done-icon {
    color: #16a34a;
    margin-bottom: 14px;
}
.tvq-bw__done h2 {
    font-size: 1.5rem;
    font-weight: 800;
    color: #091413;
    margin: 0 0 6px;
}
.tvq-bw__done p {
    color: #475569;
}

/* ── Sticky summary panel ─────────────────────────────────────── */
.tvq-bw__summary {
    background: #fff;
    border: 1px solid #ebe7e0;
    border-radius: 14px;
    align-self: flex-start;
    box-shadow: 0 4px 14px rgba(15,23,42,0.04);
}
@media (min-width: 880px) {
    .tvq-bw__summary {
        position: sticky;
        top: 20px;
    }
}
.tvq-bw__summary-inner {
    padding: 22px 24px;
}
.tvq-bw__summary h3 {
    font-size: 0.72rem;
    font-weight: 700;
    color: #94a3b8;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    margin: 14px 0 4px;
}
.tvq-bw__summary h3:first-child { margin-top: 0; }
.tvq-bw__summary p {
    margin: 0;
    color: #091413;
    font-weight: 600;
    font-size: 0.95rem;
}
.tvq-bw__summary-tour { line-height: 1.35; }
.tvq-bw__summary-addons ul {
    list-style: none;
    padding: 0;
    margin: 4px 0 0;
}
.tvq-bw__summary-addons li {
    padding: 4px 0 4px 16px;
    font-size: 0.88rem;
    color: #475569;
    position: relative;
    font-weight: 500;
}
.tvq-bw__summary-addons li::before {
    content: "+";
    position: absolute;
    left: 0;
    color: var(--tvq-accent-deep);
    font-weight: 700;
}
.tvq-bw__summary hr {
    border: 0;
    border-top: 1px solid #ebe7e0;
    margin: 18px 0 14px;
}
.tvq-bw__summary-total {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin-bottom: 4px;
}
.tvq-bw__summary-total span {
    font-size: 0.95rem;
    color: #475569;
    font-weight: 600;
}
.tvq-bw__summary-total strong {
    font-size: 1.6rem;
    font-weight: 800;
    color: var(--tvq-accent-deep);
    letter-spacing: -0.02em;
}
.tvq-bw__summary-note {
    display: block;
    font-size: 0.72rem;
    color: #94a3b8;
}
.tvq-bw__summary-deposit {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 8px 0;
    padding: 8px 10px;
    background: #fef2f2;
    border: 1px solid #fecaca;
    border-radius: 8px;
    color: #991b1b;
    font-size: 0.78rem;
    font-weight: 600;
    line-height: 1.35;
}
.tvq-bw__summary-deposit svg { flex-shrink: 0; }

/* ── Step progress (bottom) ───────────────────────────────────── */
.tvq-bw__progress {
    background: #fff;
    border-top: 1px solid #ebe7e0;
    padding: 16px 20px;
    flex-shrink: 0;
}
.tvq-bw__progress-inner {
    max-width: 740px;
    margin: 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
}
.tvq-bw__progress-step {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    color: #94a3b8;
    transition: color 0.2s;
}
.tvq-bw__progress-step.is-active { color: var(--tvq-accent-deep); }
.tvq-bw__progress-step.is-done { color: #16a34a; }
.tvq-bw__progress-dot {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: #e2e8f0;
    color: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: 0.82rem;
    transition: background 0.2s;
}
.tvq-bw__progress-step.is-active .tvq-bw__progress-dot { background: var(--tvq-accent-deep); }
.tvq-bw__progress-step.is-done .tvq-bw__progress-dot { background: #16a34a; }
.tvq-bw__progress-step.is-done .tvq-bw__progress-dot::after {
    content: "✓";
    font-size: 0.92rem;
}
.tvq-bw__progress-step.is-done .tvq-bw__progress-dot { font-size: 0; }
.tvq-bw__progress-label {
    font-size: 0.74rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
}
.tvq-bw__progress-line {
    flex: 1 1 0;
    max-width: 80px;
    height: 2px;
    background: #e2e8f0;
}

/* ── Card "Selected" state on the trip landing departures ────── */
.tvq-depart__card--chosen {
    border-color: var(--tvq-accent-deep) !important;
    box-shadow: 0 0 0 3px rgba(153,0,2,0.15),
                0 8px 22px rgba(153,0,2,0.12);
}
.tvq-depart__card--chosen::before {
    content: "✓ Selected";
    position: absolute;
    top: 10px;
    right: 10px;
    background: var(--tvq-accent-deep);
    color: #fff;
    font-size: 0.68rem;
    font-weight: 800;
    padding: 3px 9px;
    border-radius: 999px;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    z-index: 3;
}

/* ════════════════════════════════════════════════════════════════
   Phase UX v36/v37 — THEME SYSTEM
   Theme 1 (bold default) is defined at :root.
   Theme 2 (editorial) overrides via body.tvq-theme-editorial — the
   complete reskin captures the competitor's editorial luxury aesthetic
   (cream + coral + Fraunces serif + grain texture + warm shadows +
   editorial typography hierarchy).
   ════════════════════════════════════════════════════════════════ */

/* ── EDITORIAL theme ──────────────────────────────────────────── */
body.tvq-theme-editorial {
    --tvq-bg: #FBF6EF;            /* cream */
    --tvq-bg-soft: #F2E8DB;       /* sand */
    --tvq-bg-tint: #FCE9E5;       /* soft coral wash */

    --tvq-ink: #1E2430;
    --tvq-ink-soft: #3A4150;
    --tvq-ink-mute: #7C7468;
    --tvq-line: rgba(34, 43, 57, 0.10);
    --tvq-line-strong: rgba(34, 43, 57, 0.16);

    --tvq-accent: #FB6763;         /* coral */
    --tvq-accent-dark: #E04F4B;
    --tvq-accent-deep: #C2714E;    /* terra */
    --tvq-accent-soft: #FCE9E5;

    --tvq-font-display: 'Fraunces', Georgia, serif;
    --tvq-font-body: 'Hanken Grotesk', -apple-system, BlinkMacSystemFont, sans-serif;
    --tvq-display-weight: 500;
    --tvq-display-italic-color: var(--tvq-accent);

    /* Editorial-specific shadows (warmer, softer) */
    --tvq-shadow-sm: 0 2px 8px rgba(40, 30, 20, 0.06);
    --tvq-shadow-md: 0 18px 40px -18px rgba(40, 30, 20, 0.28);
    --tvq-shadow-lg: 0 40px 80px -30px rgba(40, 30, 20, 0.40);
    --tvq-shadow-red: 0 16px 34px -12px rgba(251, 103, 99, 0.55);
}

/* Phase UX v37d — REMOVED the global font-token rules.
   They've been pulled INTO body.tvq-theme-editorial below so Theme 1
   stays 100% identical to its pre-theme-system look. Theme 2's font
   changes are now strictly inside the editorial scope. */

/* Editorial typographic refinements */
body.tvq-theme-editorial .tvq-section__title,
body.tvq-theme-editorial h1,
body.tvq-theme-editorial h2,
body.tvq-theme-editorial h3,
body.tvq-theme-editorial h4 {
    line-height: 1.08;
    letter-spacing: -0.01em;
}
body.tvq-theme-editorial em,
body.tvq-theme-editorial i {
    color: var(--tvq-display-italic-color);
    font-style: italic;
    font-weight: 400;
}

/* Editorial section background warm-up — kicker pills get sand tint */
body.tvq-theme-editorial .tvq-section__kicker {
    background: var(--tvq-accent-soft);
    color: var(--tvq-accent-dark);
}

/* Editorial grain overlay — subtle paper texture, fixed to viewport */
body.tvq-theme-editorial::after {
    content: "";
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 9999;
    opacity: 0.04;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* Editorial — soften the wizard accent + buttons to coral (was deep red) */
body.tvq-theme-editorial .tvq-bw__next,
body.tvq-theme-editorial .tvq-bw__confirm {
    background: var(--tvq-accent);
}
body.tvq-theme-editorial .tvq-bw__next:hover,
body.tvq-theme-editorial .tvq-bw__confirm:hover {
    background: var(--tvq-accent-dark);
    box-shadow: 0 6px 14px rgba(251, 103, 99, 0.35);
}
body.tvq-theme-editorial .tvq-bw__addon-btn {
    border-color: var(--tvq-accent);
    color: var(--tvq-accent);
}
body.tvq-theme-editorial .tvq-bw__addon-btn:hover {
    background: var(--tvq-accent-soft);
}
body.tvq-theme-editorial .tvq-bw__addon-btn.is-on {
    background: var(--tvq-accent);
}

/* Editorial — sticky bottom CTA pill softens */
body.tvq-theme-editorial .tvq-trip-cta__cta {
    background: var(--tvq-accent);
}
body.tvq-theme-editorial .tvq-trip-cta:hover .tvq-trip-cta__cta {
    background: var(--tvq-accent-dark);
}

/* Editorial — section base bg switches to cream */
body.tvq-theme-editorial { background: var(--tvq-bg); color: var(--tvq-ink); }

/* Editorial — refine departure card price color */
body.tvq-theme-editorial .tvq-depart__card-price strong {
    color: var(--tvq-accent-dark);
    font-family: var(--tvq-font-display);
    font-weight: 600;
}
body.tvq-theme-editorial .tvq-similar-card__price strong {
    color: var(--tvq-accent-dark);
    font-family: var(--tvq-font-display);
    font-weight: 600;
}

/* Editorial — wizard top bar stays dark navy (intentional contrast) */

/* ═════════════════════════════════════════════════════════════
   EDITORIAL — amplified visual signal (so the theme is obvious)
   ═════════════════════════════════════════════════════════════ */

/* Stronger background contrast — every other section gets sand tint */
body.tvq-theme-editorial .tvq-section:nth-of-type(even) {
    background: var(--tvq-bg-soft);
}

/* Larger Fraunces hero title with looser tracking */
body.tvq-theme-editorial .tvq-hero__title {
    font-family: 'Fraunces', Georgia, serif !important;
    font-weight: 500 !important;
    letter-spacing: -0.025em;
    font-size: clamp(2.8rem, 8vw, 6rem);
}
body.tvq-theme-editorial .tvq-section__title {
    font-family: 'Fraunces', Georgia, serif !important;
    font-weight: 500 !important;
    font-size: clamp(2rem, 4.5vw, 3.4rem);
    letter-spacing: -0.02em;
}

/* Body adopts Hanken Grotesk decisively */
body.tvq-theme-editorial,
body.tvq-theme-editorial p,
body.tvq-theme-editorial li,
body.tvq-theme-editorial span:not([class*="material"]):not([class*="fa-"]) {
    font-family: 'Hanken Grotesk', -apple-system, sans-serif;
}

/* Editorial kicker pills lose uppercase weight, gain serif terra color */
body.tvq-theme-editorial .tvq-section__kicker {
    font-family: 'Hanken Grotesk', sans-serif;
    color: #A4552F;
    background: rgba(194, 113, 78, 0.10);
    border: 1px solid rgba(194, 113, 78, 0.25);
    letter-spacing: 0.18em;
    font-weight: 600;
}

/* Section transitions feel softer / warmer */
body.tvq-theme-editorial section { padding-top: 96px; padding-bottom: 96px; }

/* Coral underlines on links inside body copy */
body.tvq-theme-editorial p a:not([class]),
body.tvq-theme-editorial li a:not([class]) {
    color: var(--tvq-accent-dark);
    border-bottom: 1px solid currentColor;
}

/* ════════════════════════════════════════════════════════════════
   PHASE UX v37 — THEME 2 (EDITORIAL) — FULL VISUAL REWRITE
   Maps competitor editorial design onto our existing structure.
   Same HTML, same functionality — totally different visual identity.
   ════════════════════════════════════════════════════════════════ */

/* ── Global background + typography ───────────────────────────── */
body.tvq-theme-editorial {
    background: #FBF6EF !important;
    color: #1E2430 !important;
    font-family: 'Hanken Grotesk', -apple-system, sans-serif !important;
}
body.tvq-theme-editorial h1,
body.tvq-theme-editorial h2,
body.tvq-theme-editorial h3,
body.tvq-theme-editorial h4,
body.tvq-theme-editorial .tvq-section__title,
body.tvq-theme-editorial .tvq-hero__title,
body.tvq-theme-editorial .tvq-bw__step-title {
    font-family: 'Fraunces', Georgia, serif !important;
    font-weight: 500 !important;
    letter-spacing: -0.01em !important;
    line-height: 1.08 !important;
}
body.tvq-theme-editorial em,
body.tvq-theme-editorial i {
    font-style: italic !important;
    color: #FB6763 !important;
    font-weight: 400 !important;
}
body.tvq-theme-editorial p { color: #3A4150; }

/* ── Editorial kicker pill (terra-deep uppercase eyebrow) ────── */
body.tvq-theme-editorial .tvq-section__kicker {
    background: transparent !important;
    border: none !important;
    padding: 0 0 8px 0 !important;
    font-family: 'Hanken Grotesk', sans-serif !important;
    font-size: 12px !important;
    letter-spacing: 0.22em !important;
    text-transform: uppercase !important;
    font-weight: 600 !important;
    color: #A4552F !important;
    display: inline-block !important;
}

/* ── Section titles size up ──────────────────────────────────── */
body.tvq-theme-editorial .tvq-section__title {
    font-size: clamp(34px, 5vw, 56px) !important;
    margin-top: 14px !important;
}
body.tvq-theme-editorial .tvq-section__lead {
    color: #7C7468 !important;
    font-size: 18px !important;
    margin-top: 16px !important;
}
body.tvq-theme-editorial section { padding: 96px 0 !important; }

/* ── Grain noise overlay (paper texture) ─────────────────────── */
body.tvq-theme-editorial::after {
    content: "";
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 9999;
    opacity: 0.04;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* ── HERO ─────────────────────────────────────────────────────── */
body.tvq-theme-editorial .tvq-hero__title {
    font-size: clamp(46px, 8vw, 98px) !important;
    color: #fff !important;
    background: none !important;
    -webkit-text-fill-color: #fff !important;
    -webkit-background-clip: initial !important;
    background-clip: initial !important;
    max-width: 14ch !important;
}

/* ── STATS STRIP — dark navy ─────────────────────────────────── */
body.tvq-theme-editorial .tvq-stats-strip {
    background: #1E2430 !important;
    color: #fff !important;
}
body.tvq-theme-editorial .tvq-stats-strip__item-label {
    color: rgba(255, 255, 255, 0.45) !important;
    text-transform: uppercase !important;
    letter-spacing: 0.16em !important;
    font-size: 11px !important;
}
body.tvq-theme-editorial .tvq-stats-strip__item-value {
    font-family: 'Fraunces', Georgia, serif !important;
    font-weight: 500 !important;
    color: #fff !important;
    font-size: 21px !important;
}
body.tvq-theme-editorial .tvq-stats-strip__item-icon { color: #FB6763 !important; }

/* ── HIGHLIGHTS — editorial number badges (01, 02, 03…) ──────── */
body.tvq-theme-editorial .tvq-highlights {
    background: linear-gradient(180deg, #FBF6EF, #F2E8DB 120%) !important;
}
body.tvq-theme-editorial .tvq-highlights__list {
    counter-reset: hl-counter !important;
}
body.tvq-theme-editorial .tvq-hl {
    counter-increment: hl-counter !important;
    background: #fff !important;
    border: 1px solid rgba(34, 43, 57, 0.10) !important;
    border-radius: 18px !important;
    padding: 24px 26px !important;
    box-shadow: 0 2px 8px rgba(40, 30, 20, 0.06) !important;
    transition: 0.4s !important;
    display: flex !important;
    align-items: flex-start !important;
    gap: 18px !important;
}
body.tvq-theme-editorial .tvq-hl:hover {
    transform: translateY(-5px) !important;
    box-shadow: 0 18px 40px -18px rgba(40, 30, 20, 0.28) !important;
    border-color: transparent !important;
}
/* Replace the colored SVG icon with a serif-number badge in editorial */
body.tvq-theme-editorial .tvq-hl__icon {
    background: #F2E8DB !important;
    color: #A4552F !important;
    border-radius: 12px !important;
    width: 42px !important;
    height: 42px !important;
    flex: none !important;
    display: grid !important;
    place-items: center !important;
    font-family: 'Fraunces', Georgia, serif !important;
    font-size: 18px !important;
    font-weight: 600 !important;
    transition: 0.4s !important;
    /* Hide the embedded SVG; the counter-incremented number takes over */
    position: relative !important;
}
body.tvq-theme-editorial .tvq-hl__icon svg {
    display: none !important;
}
body.tvq-theme-editorial .tvq-hl__icon::before {
    content: counter(hl-counter, decimal-leading-zero) !important;
    font-family: 'Fraunces', Georgia, serif !important;
    font-size: 18px !important;
    font-weight: 600 !important;
}
body.tvq-theme-editorial .tvq-hl:hover .tvq-hl__icon {
    background: #FB6763 !important;
    color: #fff !important;
    transform: rotate(-6deg) scale(1.08) !important;
}
body.tvq-theme-editorial .tvq-hl__text strong,
body.tvq-theme-editorial .tvq-hl__text h4,
body.tvq-theme-editorial .tvq-hl__text > div:first-child {
    font-family: 'Fraunces', Georgia, serif !important;
    font-weight: 500 !important;
    font-size: 18px !important;
    margin-bottom: 3px !important;
}
body.tvq-theme-editorial .tvq-hl__text p,
body.tvq-theme-editorial .tvq-hl__text > div:last-child {
    font-size: 14.5px !important;
    color: #7C7468 !important;
    line-height: 1.5 !important;
}

/* ── ABOUT — drop cap + warm tone ────────────────────────────── */
body.tvq-theme-editorial .tvq-about__prose p:first-of-type::first-letter {
    font-family: 'Fraunces', Georgia, serif !important;
    font-size: 78px !important;
    line-height: 0.72 !important;
    font-weight: 600 !important;
    color: #FB6763 !important;
    float: left !important;
    padding: 8px 14px 0 0 !important;
}
body.tvq-theme-editorial .tvq-about__prose {
    font-size: 18px !important;
    color: #3A4150 !important;
    line-height: 1.8 !important;
}
body.tvq-theme-editorial .tvq-about__fact {
    background: #fff !important;
    border-radius: 16px !important;
    border: 1px solid rgba(34, 43, 57, 0.10) !important;
}
body.tvq-theme-editorial .tvq-about__foryou {
    background: #fff !important;
    border-radius: 16px !important;
    border: 1px solid rgba(34, 43, 57, 0.10) !important;
}

/* ── CITIES — sand background, warmer cards ──────────────────── */
body.tvq-theme-editorial .tvq-cities,
body.tvq-theme-editorial #cities {
    background: #F2E8DB !important;
}
body.tvq-theme-editorial .tvq-city-card,
body.tvq-theme-editorial .tvq-cities__card {
    border-radius: 20px !important;
    overflow: hidden !important;
    box-shadow: 0 2px 8px rgba(40, 30, 20, 0.06) !important;
}

/* ── ITINERARY — editorial timeline with coral line ──────────── */
body.tvq-theme-editorial .tvq-day-card,
body.tvq-theme-editorial .tvq-itin__day,
body.tvq-theme-editorial .tvq-itinerary__day {
    background: #fff !important;
    border-radius: 16px !important;
    border: 1px solid rgba(34, 43, 57, 0.10) !important;
    transition: 0.35s !important;
}
body.tvq-theme-editorial .tvq-day-card:hover {
    box-shadow: 0 18px 40px -18px rgba(40, 30, 20, 0.28) !important;
    transform: translateX(4px) !important;
}

/* ── WHAT'S INCLUDED — dark navy section ─────────────────────── */
body.tvq-theme-editorial .tvq-incl,
body.tvq-theme-editorial #included {
    background: #1E2430 !important;
    color: #fff !important;
}
body.tvq-theme-editorial .tvq-incl .tvq-section__title,
body.tvq-theme-editorial .tvq-incl h2 { color: #fff !important; }
body.tvq-theme-editorial .tvq-incl .tvq-section__kicker { color: #FB6763 !important; }
body.tvq-theme-editorial .tvq-incl .tvq-section__lead { color: rgba(255, 255, 255, 0.65) !important; }
body.tvq-theme-editorial .tvq-incl-card,
body.tvq-theme-editorial .tvq-incl__col {
    background: rgba(255, 255, 255, 0.04) !important;
    border: 1px solid rgba(255, 255, 255, 0.1) !important;
    border-radius: 20px !important;
    color: #fff !important;
}
body.tvq-theme-editorial .tvq-incl-item__text { color: rgba(255, 255, 255, 0.82) !important; }
body.tvq-theme-editorial .tvq-incl-item__icon { color: #7ED9A6 !important; }

/* ── WHY BOOK — coral gradient icon tiles ────────────────────── */
body.tvq-theme-editorial .tvq-why-choose__card {
    background: #fff !important;
    border-radius: 20px !important;
    border: 1px solid rgba(34, 43, 57, 0.10) !important;
    transition: 0.4s !important;
}
body.tvq-theme-editorial .tvq-why-choose__card:hover {
    transform: translateY(-6px) !important;
    box-shadow: 0 18px 40px -18px rgba(40, 30, 20, 0.28) !important;
}
body.tvq-theme-editorial .tvq-why-choose__icon {
    background: linear-gradient(135deg, #FB6763, #D98C72) !important;
    color: #fff !important;
    width: 52px !important;
    height: 52px !important;
    border-radius: 14px !important;
    box-shadow: 0 12px 24px -10px rgba(251, 103, 99, 0.6) !important;
}

/* ── TRUST STRIP stays dark (already does) ───────────────────── */

/* ── TESTIMONIALS — editorial centered quote ─────────────────── */
body.tvq-theme-editorial .tvq-testimonials {
    background: #F2E8DB !important;
}
body.tvq-theme-editorial .tvq-testimonial {
    background: transparent !important;
    text-align: center !important;
    box-shadow: none !important;
    padding: 32px 24px !important;
}
body.tvq-theme-editorial .tvq-testimonial__head {
    flex-direction: column !important;
    align-items: center !important;
    gap: 8px !important;
}
body.tvq-theme-editorial .tvq-testimonial__quote {
    font-family: 'Fraunces', Georgia, serif !important;
    font-style: italic !important;
    font-size: clamp(20px, 2.8vw, 32px) !important;
    line-height: 1.3 !important;
    font-weight: 400 !important;
    color: #1E2430 !important;
    text-align: center !important;
    margin-top: 24px !important;
    padding-left: 0 !important;
}
body.tvq-theme-editorial .tvq-testimonial__quote-mark {
    font-family: 'Fraunces', Georgia, serif !important;
    font-size: 120px !important;
    color: #FB6763 !important;
    opacity: 0.18 !important;
    position: static !important;
    display: block !important;
    text-align: center !important;
    line-height: 0.5 !important;
    margin-bottom: -30px !important;
}

/* ── DEPARTURES — editorial cards with availability bar ──────── */
body.tvq-theme-editorial .tvq-depart {
    background: #FBF6EF !important;
}
body.tvq-theme-editorial .tvq-depart__card {
    background: #fff !important;
    border: 1px solid rgba(34, 43, 57, 0.10) !important;
    border-radius: 20px !important;
    box-shadow: 0 2px 8px rgba(40, 30, 20, 0.06) !important;
    transition: 0.4s !important;
}
body.tvq-theme-editorial .tvq-depart__card:hover {
    transform: translateY(-6px) !important;
    box-shadow: 0 18px 40px -18px rgba(40, 30, 20, 0.28) !important;
    border-color: #FB6763 !important;
}
body.tvq-theme-editorial .tvq-depart__card-date {
    font-family: 'Fraunces', Georgia, serif !important;
    font-size: 28px !important;
    color: #1E2430 !important;
    margin: 6px 0 2px !important;
}
body.tvq-theme-editorial .tvq-depart__card-dow {
    font-family: 'Hanken Grotesk', sans-serif !important;
    font-size: 12px !important;
    letter-spacing: 0.16em !important;
    text-transform: uppercase !important;
    color: #A4552F !important;
    font-weight: 600 !important;
}
body.tvq-theme-editorial .tvq-depart__card-price strong {
    font-family: 'Fraunces', Georgia, serif !important;
    font-size: 30px !important;
    color: #E04F4B !important;
    font-weight: 600 !important;
}
body.tvq-theme-editorial .tvq-depart__cta {
    background: #FB6763 !important;
    border-radius: 100px !important;
    transition: 0.35s !important;
}
body.tvq-theme-editorial .tvq-depart__cta:hover {
    background: #E04F4B !important;
    transform: translateY(-3px) !important;
    box-shadow: 0 22px 44px -12px rgba(251, 103, 99, 0.9) !important;
}
body.tvq-theme-editorial .tvq-depart__pill {
    border-radius: 100px !important;
    border: 1.5px solid rgba(34, 43, 57, 0.10) !important;
}
body.tvq-theme-editorial .tvq-depart__pill--active {
    background: #FB6763 !important;
    border-color: #FB6763 !important;
    color: #fff !important;
}
body.tvq-theme-editorial .tvq-depart__guarantee {
    color: #7ED9A6 !important;
}

/* ── SIMILAR TRIPS — editorial image cards ───────────────────── */
body.tvq-theme-editorial .tvq-similar-trips {
    background: #F2E8DB !important;
}
body.tvq-theme-editorial .tvq-similar-card {
    background: #fff !important;
    border-radius: 20px !important;
    border: 1px solid rgba(34, 43, 57, 0.10) !important;
    transition: 0.4s !important;
}
body.tvq-theme-editorial .tvq-similar-card:hover {
    transform: translateY(-6px) !important;
    box-shadow: 0 18px 40px -18px rgba(40, 30, 20, 0.28) !important;
}
body.tvq-theme-editorial .tvq-similar-card__title {
    font-family: 'Fraunces', Georgia, serif !important;
    font-weight: 500 !important;
}
body.tvq-theme-editorial .tvq-similar-card__price strong {
    font-family: 'Fraunces', Georgia, serif !important;
    color: #E04F4B !important;
    font-weight: 600 !important;
}

/* ── FAQ — editorial accordion with plus→X rotation ──────────── */
body.tvq-theme-editorial .tvq-faq {
    background: #FBF6EF !important;
}
body.tvq-theme-editorial .tvq-faq__item {
    background: transparent !important;
    border: none !important;
    border-bottom: 1px solid rgba(34, 43, 57, 0.10) !important;
    border-radius: 0 !important;
    box-shadow: none !important;
}
body.tvq-theme-editorial .tvq-faq__item[open] {
    border-color: rgba(34, 43, 57, 0.10) !important;
    box-shadow: none !important;
}
body.tvq-theme-editorial .tvq-faq__q {
    font-family: 'Fraunces', Georgia, serif !important;
    font-size: 20px !important;
    font-weight: 500 !important;
    padding: 24px 4px !important;
}
body.tvq-theme-editorial .tvq-faq__q:hover { color: #A4552F !important; }
body.tvq-theme-editorial .tvq-faq__a { padding: 0 4px 24px !important; }

/* ── INQUIRY FORM stays dark (already does) ──────────────────── */

/* ── FOOTER — editorial navy ─────────────────────────────────── */
body.tvq-theme-editorial .tvq-footer {
    background: #222B39 !important;
    color: rgba(255, 255, 255, 0.7) !important;
    border-top: none !important;
}
body.tvq-theme-editorial .tvq-footer__company-name {
    color: #fff !important;
    font-family: 'Fraunces', Georgia, serif !important;
    font-size: 22px !important;
    font-weight: 500 !important;
}
body.tvq-theme-editorial .tvq-footer__col-head {
    color: #fff !important;
}
body.tvq-theme-editorial .tvq-footer__list a {
    color: rgba(255, 255, 255, 0.7) !important;
}
body.tvq-theme-editorial .tvq-footer__list a:hover {
    color: #FB6763 !important;
}
body.tvq-theme-editorial .tvq-footer__list svg { color: rgba(255, 255, 255, 0.5) !important; }
body.tvq-theme-editorial .tvq-footer__list a:hover svg { color: #FB6763 !important; }
body.tvq-theme-editorial .tvq-footer__bottom { color: rgba(255, 255, 255, 0.45) !important; }
body.tvq-theme-editorial .tvq-footer__address {
    color: rgba(255, 255, 255, 0.7) !important;
}
body.tvq-theme-editorial .tvq-footer__powered {
    background: rgba(255, 255, 255, 0.06) !important;
    border-color: rgba(255, 255, 255, 0.12) !important;
}
body.tvq-theme-editorial .tvq-footer__powered-label {
    color: rgba(255, 255, 255, 0.5) !important;
}

/* ── STICKY BOTTOM CTA — frosted editorial ───────────────────── */
body.tvq-theme-editorial .tvq-trip-cta {
    background: rgba(255, 255, 255, 0.92) !important;
    backdrop-filter: blur(18px) !important;
    -webkit-backdrop-filter: blur(18px) !important;
    border: 1px solid rgba(34, 43, 57, 0.10) !important;
}
body.tvq-theme-editorial .tvq-trip-cta__price {
    font-family: 'Fraunces', Georgia, serif !important;
    color: #1E2430 !important;
}
body.tvq-theme-editorial .tvq-trip-cta__cta {
    background: #FB6763 !important;
}
body.tvq-theme-editorial .tvq-trip-cta:hover .tvq-trip-cta__cta {
    background: #E04F4B !important;
}

/* ── WIZARD — editorial coral palette ─────────────────────────── */
body.tvq-theme-editorial .tvq-bw__step-title {
    font-family: 'Fraunces', Georgia, serif !important;
    font-weight: 500 !important;
}

/* ── BUTTONS — editorial coral lift ──────────────────────────── */
body.tvq-theme-editorial .tvq-btn--accept,
body.tvq-theme-editorial .tvq-btn,
body.tvq-theme-editorial .btn-coral {
    background: #FB6763 !important;
    color: #fff !important;
    border-radius: 100px !important;
    box-shadow: 0 16px 34px -12px rgba(251, 103, 99, 0.8) !important;
    transition: 0.35s !important;
}
body.tvq-theme-editorial .tvq-btn--accept:hover,
body.tvq-theme-editorial .tvq-btn:hover {
    background: #E04F4B !important;
    transform: translateY(-3px) !important;
    box-shadow: 0 22px 44px -12px rgba(251, 103, 99, 0.9) !important;
}

/* ── ALL SECTION DIVIDERS REMOVED in editorial — clean flow ──── */
body.tvq-theme-editorial section { border: none !important; }

/* ════════════════════════════════════════════════════════════════
   PHASE UX v37b — distinctive competitor-design details
   ════════════════════════════════════════════════════════════════ */

/* ── PROGRESS BAR at very top of viewport (CSS-only via body) ── */
body.tvq-theme-editorial > .tvq-trip-cta-progress,
body.tvq-theme-editorial::before {
    content: "";
    position: fixed;
    top: 0;
    left: 0;
    height: 3px;
    width: 100%;
    background: linear-gradient(90deg, #FB6763 0%, #C2714E 100%);
    z-index: 10001;
    opacity: 0.9;
    pointer-events: none;
}

/* ── FAQ — plus-to-X rotation (hide existing chevron, show + icon) ── */
body.tvq-theme-editorial .tvq-faq__chev {
    display: none !important;
}
body.tvq-theme-editorial .tvq-faq__q::after {
    content: "+";
    flex: none;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    border: 1.5px solid rgba(34, 43, 57, 0.10);
    display: grid;
    place-items: center;
    font-size: 20px;
    font-family: 'Hanken Grotesk', sans-serif;
    font-weight: 400;
    color: #A4552F;
    transition: 0.4s;
    margin-left: 12px;
}
body.tvq-theme-editorial .tvq-faq__item[open] .tvq-faq__q::after {
    background: #FB6763;
    border-color: #FB6763;
    color: #fff;
    transform: rotate(135deg);
}

/* ── DEPARTURES — "Filling fast" diagonal ribbon ──────────────── */
body.tvq-theme-editorial .tvq-depart__card--almost_full {
    border-color: #FB6763 !important;
    position: relative !important;
    overflow: hidden !important;
}
body.tvq-theme-editorial .tvq-depart__card--almost_full::before {
    content: "Filling fast";
    position: absolute;
    top: 16px;
    right: -32px;
    background: #FB6763;
    color: #fff;
    font-size: 11px;
    font-family: 'Hanken Grotesk', sans-serif;
    font-weight: 700;
    letter-spacing: 0.05em;
    padding: 5px 40px;
    transform: rotate(45deg);
    z-index: 2;
}

/* ── DEPARTURES — color-coded availability dot becomes a bar ──── */
body.tvq-theme-editorial .tvq-depart__card-avail {
    background: rgba(242, 232, 219, 0.6);
    border-radius: 100px;
    padding: 6px 14px;
    position: relative;
    overflow: hidden;
}
body.tvq-theme-editorial .tvq-depart__avail-open {
    color: #4F7A3E !important;
}
body.tvq-theme-editorial .tvq-depart__avail-low {
    color: #C2714E !important;
}

/* ── ITINERARY — editorial day cards w/ sand badges ───────────── */
body.tvq-theme-editorial .tvq-day-card__day,
body.tvq-theme-editorial .tvq-day__badge,
body.tvq-theme-editorial [class*="day-badge"] {
    background: #F2E8DB !important;
    color: #A4552F !important;
    border-radius: 8px !important;
    font-family: 'Hanken Grotesk', sans-serif !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    letter-spacing: 0.1em !important;
    text-transform: uppercase !important;
    padding: 6px 12px !important;
}
body.tvq-theme-editorial .tvq-day-card__title,
body.tvq-theme-editorial [class*="day-card__title"] {
    font-family: 'Fraunces', Georgia, serif !important;
    font-weight: 500 !important;
    font-size: 20px !important;
}
body.tvq-theme-editorial .tvq-day-card__body,
body.tvq-theme-editorial .tvq-day-card__desc {
    color: #3A4150 !important;
    font-size: 15.5px !important;
    line-height: 1.7 !important;
}
body.tvq-theme-editorial .tvq-day-card__chips,
body.tvq-theme-editorial [class*="day-card__chip"] {
    background: #F2E8DB !important;
    color: #3A4150 !important;
    border-radius: 100px !important;
    padding: 6px 13px !important;
    font-family: 'Hanken Grotesk', sans-serif !important;
    font-size: 12.5px !important;
    font-weight: 500 !important;
    border: none !important;
}

/* ── CITIES — pin badges editorial style ──────────────────────── */
body.tvq-theme-editorial .tvq-city-card__pin,
body.tvq-theme-editorial .tvq-cities__card-pin,
body.tvq-theme-editorial [class*="city-card__stop"] {
    background: rgba(255, 255, 255, 0.16) !important;
    backdrop-filter: blur(8px) !important;
    border: 1px solid rgba(255, 255, 255, 0.3) !important;
    color: #fff !important;
    font-size: 11px !important;
    font-weight: 600 !important;
    padding: 5px 11px !important;
    border-radius: 100px !important;
    font-family: 'Hanken Grotesk', sans-serif !important;
}
body.tvq-theme-editorial .tvq-city-card__name {
    font-family: 'Fraunces', Georgia, serif !important;
    font-weight: 500 !important;
    font-size: 24px !important;
}

/* ── ABOUT — "Trip at a glance" sidebar with editorial glow ──── */
body.tvq-theme-editorial .tvq-about__facts,
body.tvq-theme-editorial .tvq-about__sidebar,
body.tvq-theme-editorial .tvq-about__foryou {
    background: #1E2430 !important;
    color: #fff !important;
    border-radius: 24px !important;
    padding: 36px !important;
    border: none !important;
    box-shadow: 0 40px 80px -30px rgba(40, 30, 20, 0.40) !important;
    position: relative !important;
    overflow: hidden !important;
}
body.tvq-theme-editorial .tvq-about__facts::before,
body.tvq-theme-editorial .tvq-about__sidebar::before,
body.tvq-theme-editorial .tvq-about__foryou::before {
    content: "";
    position: absolute;
    width: 240px;
    height: 240px;
    border-radius: 50%;
    background: radial-gradient(#FB6763, transparent 70%);
    top: -90px;
    right: -70px;
    opacity: 0.5;
    pointer-events: none;
    z-index: 0;
}
body.tvq-theme-editorial .tvq-about__facts > *,
body.tvq-theme-editorial .tvq-about__sidebar > *,
body.tvq-theme-editorial .tvq-about__foryou > * {
    position: relative;
    z-index: 1;
}
body.tvq-theme-editorial .tvq-about__fact {
    background: transparent !important;
    border: none !important;
    border-bottom: 1px solid rgba(255, 255, 255, 0.1) !important;
    border-radius: 0 !important;
    color: #fff !important;
    padding: 14px 0 !important;
    font-size: 15px !important;
}
body.tvq-theme-editorial .tvq-about__fact-label,
body.tvq-theme-editorial .tvq-about__fact > *:first-child {
    color: rgba(255, 255, 255, 0.55) !important;
}
body.tvq-theme-editorial .tvq-about__fact-value,
body.tvq-theme-editorial .tvq-about__fact > *:last-child {
    color: #fff !important;
    font-weight: 600 !important;
}

/* ── WHY BOOK — final polish: 4-col grid spacing ──────────────── */
body.tvq-theme-editorial .tvq-why-choose__grid {
    gap: 18px !important;
}
body.tvq-theme-editorial .tvq-why-choose__card {
    padding: 32px 26px !important;
    text-align: left !important;
}
body.tvq-theme-editorial .tvq-why-choose__card-title {
    font-family: 'Fraunces', Georgia, serif !important;
    font-weight: 500 !important;
    font-size: 18px !important;
    margin-bottom: 8px !important;
}
body.tvq-theme-editorial .tvq-why-choose__card-body {
    color: #7C7468 !important;
    font-size: 14px !important;
}

/* ── INQUIRY FORM — editorial dark with coral focus ───────────── */
body.tvq-theme-editorial .tvq-decide {
    background: #1E2430 !important;
}
body.tvq-theme-editorial .tvq-decide .tvq-section__title { color: #fff !important; }
body.tvq-theme-editorial .tvq-decide .tvq-section__kicker { color: #FB6763 !important; }

/* ── SOLD-OUT compact list, editorial soft ──────────────────── */
body.tvq-theme-editorial .tvq-depart__soldout {
    background: #F2E8DB !important;
    border-color: rgba(34, 43, 57, 0.10) !important;
}
body.tvq-theme-editorial .tvq-depart__waitlist {
    color: #E04F4B !important;
}

/* ── Meal Plan table (v36) ────────────────────────────────────────
   Derived from hotel meal plans + meal lines. Every itinerary day is
   listed; days with nothing included render an em-dash rather than a
   blank, so the client reads a decision instead of an omission. */
.tvq-mealplan-wrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}
table.tvq-mealplan {
    width: 100%;
    min-width: 640px;
    border-collapse: collapse;
    font-size: 0.95rem;
}
table.tvq-mealplan th,
table.tvq-mealplan td {
    padding: 0.7rem 0.9rem;
    border-bottom: 1px solid rgba(0, 0, 0, 0.08);
    text-align: center;
    vertical-align: middle;
}
table.tvq-mealplan thead th {
    font-weight: 700;
    letter-spacing: 0.02em;
    border-bottom-width: 2px;
    white-space: nowrap;
}
table.tvq-mealplan td.tvq-mp-route { text-align: left; }
table.tvq-mealplan td.tvq-mp-day { font-weight: 700; }
table.tvq-mealplan td.tvq-mp-date { white-space: nowrap; }
table.tvq-mealplan tbody tr:last-child td { border-bottom: none; }

/* ── Scenario 3 C/D — what a departure still needs, and the single ──
   `pax_to_go` is the number the model always kept and the page never
   showed: "2 more to run" is the honest form of urgency, and it is
   also the truth a traveller deciding between two dates wants. The
   single supplement sits beside the per-person price because the page
   already says that price is on a shared twin basis and never said
   what the alternative costs. */
.tvq-depart__chip--togo {
    background: rgba(251, 103, 99, .10);
    color: #B8453F;
    border: 1px solid rgba(251, 103, 99, .28);
}
.tvq-book-tour__togo {
    display: block;
    margin-top: 2px;
    font-size: .78rem;
    line-height: 1.2;
    color: #B8453F;
}
.tvq-book-tour__single-supp {
    display: block;
    margin-top: 2px;
    font-size: .78rem;
    line-height: 1.2;
    color: #6b7280;
    white-space: nowrap;
}
@media (prefers-color-scheme: dark) {
    .tvq-depart__chip--togo { color: #FFB3B0; }
    .tvq-book-tour__togo { color: #FFB3B0; }
    .tvq-book-tour__single-supp { color: #9aa3af; }
}

/* ── Scenario 3 H — losing the last seat mid-form ──────────────────
   The controller has redirected here with ?err=capacity_locked since
   the capacity guard existed, and nothing rendered it: the visitor
   pressed Book and landed back on the page with no explanation. A
   departure that stops selling should not also stop speaking. */
.tvq-capacity-lost {
    display: grid;
    gap: 6px;
    background: rgba(251, 103, 99, .10);
    border: 1px solid rgba(251, 103, 99, .30);
    color: #8A3330;
    padding: 14px 18px;
    border-radius: 12px;
    margin-bottom: 18px;
    line-height: 1.45;
}
.tvq-capacity-lost strong { font-weight: 700; }
.tvq-capacity-lost span { font-weight: 500; }
@media (prefers-color-scheme: dark) {
    .tvq-capacity-lost { color: #FFC9C7; border-color: rgba(251,103,99,.45); }
}

/* Scenario 3: the booking wizard hides the single-rooms row and an
   add-on single supplement with the hidden attribute. Both carry a
   display rule of their own, which beats the browser's [hidden]. */
.tvq-bw__pax[hidden],
.tvq-bw__addon[hidden],
.tvq-bw__summary-pax[hidden] { display: none !important; }
.tvq-bw__singles { margin-top: 12px; }
.tvq-bw__next:disabled { opacity: .45; cursor: not-allowed; }

/* Scenario 3 D/E: the single supplement on each departure card, and the
   booking conditions beside the dates. */
.tvq-depart__single {
    display: block;
    font-size: 12px;
    color: #6b6456;
    margin-top: 2px;
}
.tvq-depart__conditions {
    margin: 28px auto 0;
    max-width: 880px;
    padding: 18px 22px;
    border: 1px solid #ebe7e0;
    border-radius: 14px;
    background: #fbfaf7;
    font-size: 14.5px;
    line-height: 1.6;
    color: #3c382f;
}
.tvq-depart__conditions-title {
    font-size: 16px;
    font-weight: 700;
    margin: 0 0 8px;
}
.tvq-depart__conditions ul { margin: 0; padding-left: 18px; }
.tvq-depart__conditions li + li { margin-top: 4px; }
.tvq-depart__conditions-policy { margin-top: 10px; }

/* Dates past the notice this tour sells on: shown, not offered. */
.tvq-depart__closed { background: #fdf6ec; border-color: #f1e0c4; }
.tvq-depart__closed-note {
    display: block;
    margin-top: 6px;
    font-size: 13px;
    color: #8a6d3b;
}


/* Prices by group size and booking terms (General quotation) */
.tvq-groupprices__wrap { overflow-x: auto; margin: 0 auto 1.5rem; max-width: 1100px; }
.tvq-groupprices__caption { font-size: 1rem; font-weight: 700; margin: 0 0 .5rem; }
.tvq-groupprices__table { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; font-size: .95rem; }
.tvq-groupprices__table th, .tvq-groupprices__table td { padding: .6rem .75rem; text-align: right; border-bottom: 1px solid rgba(34, 43, 57, .12); white-space: nowrap; }
.tvq-groupprices__table th:first-child { text-align: left; }
.tvq-groupprices__table thead th { font-size: .75rem; letter-spacing: .06em; text-transform: uppercase; opacity: .7; }
.tvq-groupprices__sgl th, .tvq-groupprices__sgl td { font-size: .85rem; opacity: .75; }
.tvq-groupprices__dates { display: block; font-size: .75rem; font-weight: 400; opacity: .7; }
.tvq-terms__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); gap: 1rem; max-width: 1100px; margin: 0 auto; }
.tvq-terms__card { border: 1px solid rgba(34, 43, 57, .12); border-radius: 12px; padding: 1rem 1.25rem; }
.tvq-terms__card h3 { font-size: 1rem; font-weight: 700; margin: 0 0 .5rem; }
.tvq-terms__card ul { margin: 0; padding-left: 1.1rem; }

/* Language switcher on public trip pages (tenant has several languages). */
.tvq-langs {
    position: fixed;
    top: calc(12px + env(safe-area-inset-top, 0px));
    right: 12px;
    z-index: 60;
    display: flex;
    gap: 2px;
    padding: 3px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.92);
    box-shadow: 0 2px 10px rgba(15, 23, 42, 0.15);
    backdrop-filter: blur(6px);
}
.tvq-langs__item {
    padding: 4px 10px;
    border-radius: 999px;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    color: #334155;
    text-decoration: none;
}
.tvq-langs__item:hover, .tvq-langs__item:focus-visible { background: #f1f5f9; }
.tvq-langs__item--on { background: var(--tvq-accent, #F50000); color: #fff; }
