/* ================================================================
   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: #647070;      /* 5.0:1 on white; #6e7878 measured 4.46:1, under the 4.5 a small text needs */
    --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;
    /* Fill for accent blocks with white text: #F50000 gives 4.3:1,
       under WCAG AA 4.5:1 (European Accessibility Act). */
    --tvq-accent-fill: #E00000;

    /* Brand theme (9 Oct 2026). Every rule below that used to write the
       platform's red as a literal reads one of these instead; the defaults
       ARE those literals, so nothing changes until a company chooses its
       own colour (Settings > Online proposal). The page then sets them in
       a <style> of its own, each checked for readability first. */
    --tvq-accent-rgb: 245, 0, 0;
    --tvq-accent-deep-rgb: 153, 0, 2;
    --tvq-accent2: #dc2626;
    --tvq-accent2-rgb: 220, 38, 38;
    --tvq-accent2-dark: #b91c1c;
    --tvq-accent2-bright: #ef4444;
    --tvq-accent-light: #fca5a5;
    --tvq-accent-lighter: #fecaca;

    /* 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) ============ */
/* A part waits out of sight only once the page's script has said it is there to bring it in
   (html.tvq-js, set by a line in the <head>). Without the script, or if it never arrives
   (html.tvq-show-all, set after a few seconds), everything is simply shown: the page used to stay
   blank. The cover is never held back: it is what a reader sees first. */
html.tvq-js .reveal {
    opacity: 0;
    transform: translateY(32px);
    transition: opacity 0.9s var(--tvq-ease), transform 0.9s var(--tvq-ease);
}
html.tvq-js .reveal.is-visible,
html.tvq-js .tvq-hero .reveal,
html.tvq-js.tvq-show-all .reveal {
    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(var(--tvq-accent-rgb), 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(var(--tvq-accent-rgb), 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-fill, 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-fill, 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-fill, 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(var(--tvq-accent-rgb), 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-fill, var(--tvq-accent));
    color: #fff;
    box-shadow: 0 10px 30px rgba(var(--tvq-accent-rgb), 0.4);
}
.tvq-btn--accept:hover {
    background: var(--tvq-accent-dark);
    transform: translateY(-2px);
    box-shadow: 0 14px 40px rgba(var(--tvq-accent-rgb), 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-soft);
}

/* 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: #64748b;
}
.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: #64748b;
    transition: color 0.15s;
}
.tvq-footer__list a:hover svg { color: var(--tvq-accent-deep); }
.tvq-footer__wa {
    color: #0b6e63 !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: #64748b;
}
.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, html.tvq-js .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, var(--tvq-accent)); 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(var(--tvq-accent-deep-rgb), 0.10);
}
.tvq-footer__powered-label {
    font-size: 0.66rem;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: #64748b;
    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(var(--tvq-accent-rgb), 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(var(--tvq-accent-rgb), 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;
    }
}

/* ---- The proposal's footer (15 Oct 2026) -------------------------------
   Four columns (the company, how to reach it, the consultant, what can be done
   with this proposal), then a bar with the year, the outside-content notice
   and the platform's mark. The floating buttons step aside once the footer is
   on screen (initFooterEnd adds body.tvq-at-end); the footer offers each of
   them, so it needs no room kept for them under its text. */
.tvq-footer {
    padding-bottom: calc(36px + env(safe-area-inset-bottom, 0px));
}
.tvq-footer__inner {
    padding-right: 88px;
}
/* tablets: the bottom bar (Respond, the total) stays and the page reaches the screen's bottom */
@media (max-width: 768px) {
    .tvq-footer { padding-bottom: calc(96px + env(safe-area-inset-bottom, 0px)); }
}
/* phones: the page already ends above the bottom bar */
@media (max-width: 640px) {
    .tvq-footer__inner { padding-right: 0; }
    .tvq-footer { padding-bottom: calc(36px + env(safe-area-inset-bottom, 0px)); }
}
body.tvq-at-end .tvq-save-pill,
body.tvq-at-end .tvq-install-pill,
body.tvq-at-end .tvq-consultant {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 0.2s ease, visibility 0s linear 0.2s;
}
.tvq-save-pill, .tvq-install-pill, .tvq-consultant {
    transition-property: opacity, visibility, transform, box-shadow;
}
.tvq-footer__grid--proposal {
    grid-template-columns: 1.3fr 1fr 1fr;
}
.tvq-footer__grid--proposal.tvq-footer__grid--4 {
    grid-template-columns: 1.2fr 1fr 1fr 1fr;
}
@media (max-width: 1000px) {
    .tvq-footer__grid--proposal,
    .tvq-footer__grid--proposal.tvq-footer__grid--4 { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 560px) {
    .tvq-footer__grid--proposal,
    .tvq-footer__grid--proposal.tvq-footer__grid--4 { grid-template-columns: 1fr; gap: 28px; }
}
.tvq-footer__logo {
    display: block;
    height: 32px;
    width: auto;
    max-width: 180px;
    object-fit: contain;
    margin-bottom: 12px;
}
.tvq-footer__logo--dark { display: none; }
.tvq-footer__list .tvq-footer__ref,
.tvq-footer__list .tvq-footer__valid {
    display: flex;
    align-items: center;
    gap: 8px;
    font-family: inherit;
    font-size: 0.88rem;
    line-height: 1.4;
    color: var(--tvq-ink-soft);
}
.tvq-footer__list .tvq-footer__ref svg,
.tvq-footer__list .tvq-footer__valid svg { color: #64748b; flex-shrink: 0; }
.tvq-footer__person {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 0 0 14px;
}
.tvq-footer__avatar {
    width: 44px;
    height: 44px;
    flex-shrink: 0;
    border-radius: 50%;
    overflow: hidden;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--tvq-accent-deep);
    color: #ffffff;
    font-weight: 800;
    font-size: 1.1rem;
}
.tvq-footer__avatar img { width: 100%; height: 100%; object-fit: cover; }
.tvq-footer__person-text { display: flex; flex-direction: column; gap: 2px; line-height: 1.3; }
.tvq-footer__person-text strong { font-size: 0.95rem; color: var(--tvq-ink); }
.tvq-footer__person-text span { font-size: 0.8rem; color: var(--tvq-ink-soft); }
.tvq-footer__grid--proposal + .tvq-footer__inner {
    max-width: 1180px;
    margin: 24px auto 0;
    align-items: center;
}
.tvq-footer__copy {
    margin: 0;
    font-size: 0.82rem;
}
.tvq-footer .tvq-footer__outside {
    opacity: 1;
    color: inherit;
    font-size: 0.82rem;
}
/* the five designs with a dark footer, and a reader's dark page */
body.tvq-design-almanac .tvq-footer__col-head,
body.tvq-design-journey .tvq-footer__col-head,
body.tvq-design-relief .tvq-footer__col-head,
body.tvq-design-road .tvq-footer__col-head,
body.tvq-design-signature .tvq-footer__col-head,
html[data-tvq-scheme="dark"] .tvq-footer__col-head { color: #ffffff; }
body.tvq-design-almanac .tvq-footer__company-name,
body.tvq-design-journey .tvq-footer__company-name,
body.tvq-design-relief .tvq-footer__company-name,
body.tvq-design-road .tvq-footer__company-name,
body.tvq-design-signature .tvq-footer__company-name,
html[data-tvq-scheme="dark"] .tvq-footer__company-name { color: #ffffff; }
body.tvq-design-almanac .tvq-footer__person-text strong,
body.tvq-design-journey .tvq-footer__person-text strong,
body.tvq-design-relief .tvq-footer__person-text strong,
body.tvq-design-road .tvq-footer__person-text strong,
body.tvq-design-signature .tvq-footer__person-text strong,
html[data-tvq-scheme="dark"] .tvq-footer__person-text strong { color: #ffffff; }
body.tvq-design-almanac .tvq-footer__list a,
body.tvq-design-journey .tvq-footer__list a,
body.tvq-design-relief .tvq-footer__list a,
body.tvq-design-road .tvq-footer__list a,
body.tvq-design-signature .tvq-footer__list a,
html[data-tvq-scheme="dark"] .tvq-footer__list a,
body.tvq-design-almanac .tvq-footer__address,
body.tvq-design-journey .tvq-footer__address,
body.tvq-design-relief .tvq-footer__address,
body.tvq-design-road .tvq-footer__address,
body.tvq-design-signature .tvq-footer__address,
html[data-tvq-scheme="dark"] .tvq-footer__address,
body.tvq-design-almanac .tvq-footer__person-text span,
body.tvq-design-journey .tvq-footer__person-text span,
body.tvq-design-relief .tvq-footer__person-text span,
body.tvq-design-road .tvq-footer__person-text span,
body.tvq-design-signature .tvq-footer__person-text span,
html[data-tvq-scheme="dark"] .tvq-footer__person-text span,
body.tvq-design-almanac .tvq-footer__list .tvq-footer__valid,
body.tvq-design-journey .tvq-footer__list .tvq-footer__valid,
body.tvq-design-relief .tvq-footer__list .tvq-footer__valid,
body.tvq-design-road .tvq-footer__list .tvq-footer__valid,
body.tvq-design-signature .tvq-footer__list .tvq-footer__valid,
html[data-tvq-scheme="dark"] .tvq-footer__list .tvq-footer__valid { color: rgba(255, 255, 255, 0.78); }
body.tvq-design-almanac .tvq-footer__list a:hover,
body.tvq-design-journey .tvq-footer__list a:hover,
body.tvq-design-relief .tvq-footer__list a:hover,
body.tvq-design-road .tvq-footer__list a:hover,
body.tvq-design-signature .tvq-footer__list a:hover,
html[data-tvq-scheme="dark"] .tvq-footer__list a:hover { color: #ffffff; }
body.tvq-design-almanac .tvq-footer__list svg,
body.tvq-design-journey .tvq-footer__list svg,
body.tvq-design-relief .tvq-footer__list svg,
body.tvq-design-road .tvq-footer__list svg,
body.tvq-design-signature .tvq-footer__list svg,
html[data-tvq-scheme="dark"] .tvq-footer__list svg,
body.tvq-design-almanac .tvq-footer__address svg,
body.tvq-design-journey .tvq-footer__address svg,
body.tvq-design-relief .tvq-footer__address svg,
body.tvq-design-road .tvq-footer__address svg,
body.tvq-design-signature .tvq-footer__address svg,
html[data-tvq-scheme="dark"] .tvq-footer__address svg,
body.tvq-design-almanac .tvq-footer__list .tvq-footer__ref svg,
body.tvq-design-journey .tvq-footer__list .tvq-footer__ref svg,
body.tvq-design-relief .tvq-footer__list .tvq-footer__ref svg,
body.tvq-design-road .tvq-footer__list .tvq-footer__ref svg,
body.tvq-design-signature .tvq-footer__list .tvq-footer__ref svg,
html[data-tvq-scheme="dark"] .tvq-footer__list .tvq-footer__ref svg,
body.tvq-design-almanac .tvq-footer__list .tvq-footer__valid svg,
body.tvq-design-journey .tvq-footer__list .tvq-footer__valid svg,
body.tvq-design-relief .tvq-footer__list .tvq-footer__valid svg,
body.tvq-design-road .tvq-footer__list .tvq-footer__valid svg,
body.tvq-design-signature .tvq-footer__list .tvq-footer__valid svg,
html[data-tvq-scheme="dark"] .tvq-footer__list .tvq-footer__valid svg { color: rgba(255, 255, 255, 0.55); }
body.tvq-design-almanac .tvq-footer__wa,
body.tvq-design-journey .tvq-footer__wa,
body.tvq-design-relief .tvq-footer__wa,
body.tvq-design-road .tvq-footer__wa,
body.tvq-design-signature .tvq-footer__wa,
html[data-tvq-scheme="dark"] .tvq-footer__wa { color: #8ff0c0 !important; }
body.tvq-design-almanac .tvq-footer__grid,
body.tvq-design-journey .tvq-footer__grid,
body.tvq-design-relief .tvq-footer__grid,
body.tvq-design-road .tvq-footer__grid,
body.tvq-design-signature .tvq-footer__grid,
html[data-tvq-scheme="dark"] .tvq-footer__grid { border-bottom-color: rgba(255, 255, 255, 0.12); }
body.tvq-design-almanac .tvq-footer__logo--light,
body.tvq-design-journey .tvq-footer__logo--light,
body.tvq-design-relief .tvq-footer__logo--light,
body.tvq-design-road .tvq-footer__logo--light,
body.tvq-design-signature .tvq-footer__logo--light,
html[data-tvq-scheme="dark"] .tvq-footer__logo--light { display: none; }
body.tvq-design-almanac .tvq-footer__logo--dark,
body.tvq-design-journey .tvq-footer__logo--dark,
body.tvq-design-relief .tvq-footer__logo--dark,
body.tvq-design-road .tvq-footer__logo--dark,
body.tvq-design-signature .tvq-footer__logo--dark,
html[data-tvq-scheme="dark"] .tvq-footer__logo--dark { display: block; }
body.tvq-design-almanac .tvq-footer__powered,
body.tvq-design-journey .tvq-footer__powered,
body.tvq-design-relief .tvq-footer__powered,
body.tvq-design-road .tvq-footer__powered,
body.tvq-design-signature .tvq-footer__powered,
html[data-tvq-scheme="dark"] .tvq-footer__powered { background: rgba(255, 255, 255, 0.06); border-color: rgba(255, 255, 255, 0.16); }
body.tvq-design-almanac .tvq-footer__powered-label,
body.tvq-design-journey .tvq-footer__powered-label,
body.tvq-design-relief .tvq-footer__powered-label,
body.tvq-design-road .tvq-footer__powered-label,
body.tvq-design-signature .tvq-footer__powered-label,
html[data-tvq-scheme="dark"] .tvq-footer__powered-label { color: rgba(255, 255, 255, 0.62); }
body.tvq-design-almanac .tvq-footer__brand,
body.tvq-design-journey .tvq-footer__brand,
body.tvq-design-relief .tvq-footer__brand,
body.tvq-design-road .tvq-footer__brand,
body.tvq-design-signature .tvq-footer__brand,
html[data-tvq-scheme="dark"] .tvq-footer__brand { color: var(--tvq-accent-on-dark, #ff9a94); }
body.tvq-design-almanac .tvq-footer__tagline,
body.tvq-design-journey .tvq-footer__tagline,
body.tvq-design-relief .tvq-footer__tagline,
body.tvq-design-road .tvq-footer__tagline,
body.tvq-design-signature .tvq-footer__tagline,
html[data-tvq-scheme="dark"] .tvq-footer__tagline { color: rgba(255, 255, 255, 0.66); }
/* the bar under the columns (the year, the outside-content notice) took the ink meant for a light footer */
body.tvq-design-almanac .tvq-footer__inner,
body.tvq-design-journey .tvq-footer__inner,
body.tvq-design-relief .tvq-footer__inner,
body.tvq-design-road .tvq-footer__inner,
body.tvq-design-signature .tvq-footer__inner,
html[data-tvq-scheme="dark"] .tvq-footer__inner { color: rgba(255, 255, 255, 0.72); }
/* phones: the platform mark on one line */
@media (max-width: 560px) {
    .tvq-footer .tvq-footer__tagline { display: none; }
    .tvq-footer__grid--proposal + .tvq-footer__inner { flex-direction: column; align-items: flex-start; gap: 14px; }
}

/* ================================================================
   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(var(--tvq-accent-rgb), 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(var(--tvq-accent-rgb), 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(var(--tvq-accent-rgb), 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(var(--tvq-accent-rgb), 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: #036249; }      /* the bright success green measured 2.2:1 as text; this reads on every design's sand */
.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-fill, 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(var(--tvq-accent-rgb), 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(var(--tvq-accent-deep-rgb), 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: #15803d;
    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: #64748b;
    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(var(--tvq-accent-deep-rgb),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(var(--tvq-accent-deep-rgb),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: #15803d;
    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: #64748b; 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-fill, 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(var(--tvq-accent-rgb), 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(var(--tvq-accent-rgb), 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: #0b6e63;
    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(var(--tvq-accent-rgb), 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(var(--tvq-accent-rgb), 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-fill, 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-fill, 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: #15803d;
    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: #15803d;
    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(var(--tvq-accent-rgb), 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(var(--tvq-accent-rgb), 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: #0b6e63 !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(var(--tvq-accent-rgb), 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-fill, var(--tvq-accent));
    color: #ffffff;
    transform: scale(1.18);
    box-shadow: 0 0 0 6px rgba(var(--tvq-accent-rgb), 0.18),
                0 0 0 12px rgba(var(--tvq-accent-rgb), 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(var(--tvq-accent-rgb), 0.18),
                    0 0 0 12px rgba(var(--tvq-accent-rgb), 0.08);
    }
    50% {
        box-shadow: 0 0 0 10px rgba(var(--tvq-accent-rgb), 0.10),
                    0 0 0 22px rgba(var(--tvq-accent-rgb), 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(var(--tvq-accent-rgb), 0.12);
}
.tvq-ai-modal__send {
    width: 38px; height: 38px;
    border: 0;
    background: var(--tvq-accent-fill, 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: var(--tvq-accent2);
    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, var(--tvq-accent2) 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(var(--tvq-accent-rgb), 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(var(--tvq-accent-rgb), 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(var(--tvq-accent-rgb), 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(var(--tvq-accent-rgb), 0.07);
    border: 1px solid rgba(var(--tvq-accent-rgb), 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-fill, var(--tvq-accent));
    border-color: var(--tvq-accent);
    color: #fff;
    transform: translateY(-1px);
    box-shadow: 0 6px 18px rgba(var(--tvq-accent-rgb), 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-fill, 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;
}
/* No filters to show (a catalogue without cities or tags): the results
   take the whole width instead of falling into the 240px sidebar column. */
.tvq-catalog-body--full { grid-template-columns: 1fr; }
@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(var(--tvq-accent-rgb), 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-fill, var(--tvq-accent));   /* red text on white: var(--tvq-accent) was 4.3:1 */
}
.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-fill, var(--tvq-accent));   /* red text on white: var(--tvq-accent) was 4.3:1 */
    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: #b45309; }
.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(var(--tvq-accent-rgb), 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, var(--tvq-accent2) 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(var(--tvq-accent2-rgb),0.16);
    border-color: rgba(var(--tvq-accent2-rgb),0.45);
}
.tvq-hero__pill--depart svg { color: var(--tvq-accent-light); }
.tvq-hero__pill--depart strong { color: var(--tvq-accent-lighter); }
.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: #15803d;
    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: #64748b;
    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: #64748b;
    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-fill, 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(var(--tvq-accent-rgb), 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-fill, 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(var(--tvq-accent-rgb), 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-fill, var(--tvq-accent));
    color: #ffffff !important;
    box-shadow: 0 8px 20px rgba(var(--tvq-accent-rgb), 0.28);
}
.tvq-build__cta--primary:hover {
    background: var(--tvq-accent-dark);
    transform: translateY(-1px);
    box-shadow: 0 12px 28px rgba(var(--tvq-accent-rgb), 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: var(--tvq-accent2);
}
.tvq-subnav__link--accent:hover {
    color: var(--tvq-accent2-dark);
    border-bottom-color: var(--tvq-accent2);
}
.tvq-subnav__link--active {
    color: var(--tvq-accent2);
    border-bottom-color: var(--tvq-accent2);
}
.tvq-subnav__link--active.tvq-subnav__link--accent {
    color: var(--tvq-accent2-dark);
}

/* ---- 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: var(--tvq-accent2);
    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(var(--tvq-accent2-rgb),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(var(--tvq-accent2-rgb),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: var(--tvq-accent2);
    border-radius: 12px;
    flex-shrink: 0;
}
.tvq-trip-stat--price .tvq-trip-stat__icon {
    background: var(--tvq-accent2);
    color: #fff;
}
.tvq-trip-stat--next .tvq-trip-stat__icon {
    background: #ecfdf5;
    color: #15803d;
}
.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: #64748b;
    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: #64748b;
    font-size: 0.74rem;
    font-weight: 500;
    margin-left: 3px;
}
.tvq-trip-stat__value--link {
    color: var(--tvq-accent2) !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: #15803d; }
.tvq-trip-stat__value--diff-moderate    { color: #b45309; }   /* #d97706 was 3.18:1 */
.tvq-trip-stat__value--diff-challenging { color: #dc2626; }
.tvq-trip-stat--price .tvq-trip-stat__value {
    color: var(--tvq-accent2);
    font-size: 1.25rem;
}
.tvq-trip-stat__hint {
    font-size: 0.72rem;
    color: #64748b;
    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(var(--tvq-accent2-rgb),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(var(--tvq-accent2-rgb),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: var(--tvq-accent2);
    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(var(--tvq-accent2-rgb),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: var(--tvq-accent2);
}
.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: var(--tvq-accent2); }   /* 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: var(--tvq-accent2) !important;
    font-weight: 700;
    font-size: 0.92rem;
    text-decoration: none;
    border-radius: 999px;
    border: 1.5px solid var(--tvq-accent2);
    transition: background 0.15s ease, color 0.15s ease;
}
.tvq-highlights__cta:hover {
    background: var(--tvq-accent2);
    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: var(--tvq-accent2);
    transform: translateY(-2px);
}
.tvq-about__fact-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    background: #fff;
    color: var(--tvq-accent2);
    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: #64748b;
    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: var(--tvq-accent2);
    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: var(--tvq-accent2);
    border: 1.5px solid var(--tvq-accent2);
    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: var(--tvq-accent2);
    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(var(--tvq-accent2-rgb),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: var(--tvq-accent2);
}
.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(var(--tvq-accent2-rgb),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: var(--tvq-accent2);
    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(var(--tvq-accent2-rgb),0.15);
    color: var(--tvq-accent-light) !important;
    border: 1px solid rgba(var(--tvq-accent2-rgb),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: var(--tvq-accent2) !important;
    box-shadow: 0 0 0 3px rgba(var(--tvq-accent2-rgb),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(var(--tvq-accent2-rgb),0.08);
    color: var(--tvq-accent2-dark);
    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(var(--tvq-accent2-rgb),0.85);
    border-color: var(--tvq-accent2-bright);
    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: #15803d;
    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: var(--tvq-accent2);
    font-weight: 600;
    text-decoration: none;
    border-bottom: 1px solid currentColor;
}
.tvq-depart__lead a:hover { color: var(--tvq-accent2-dark); }
.tvq-depart__alt-cta {
    max-width: 600px;
    margin: 6px auto 18px;
    text-align: center;
    color: #64748b;
    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: var(--tvq-accent2);
    color: #fff;
    border-color: var(--tvq-accent2);
}

/* ---- 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: var(--tvq-accent2);
    box-shadow: 0 14px 32px rgba(var(--tvq-accent2-rgb),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: var(--tvq-accent2) !important;
    box-shadow: 0 0 0 3px rgba(var(--tvq-accent2-rgb),0.18),
                0 8px 24px rgba(var(--tvq-accent2-rgb),0.12) !important;
}
.tvq-depart__card--chosen::after {
    content: "✓ Selected";
    position: absolute;
    top: 12px;
    right: 12px;
    padding: 3px 9px;
    background: var(--tvq-accent2);
    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: #64748b;
    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, var(--tvq-accent-soft));
    color: var(--tvq-accent-deep, var(--tvq-accent-deep));
    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: #15803d;
    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: #64748b;
    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: var(--tvq-accent2);
    line-height: 1.2;
    white-space: nowrap;
}
.tvq-depart__card-perpax {
    font-size: 0.78rem;
    color: #64748b;
    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: #15803d; }
.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: var(--tvq-accent2);
    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: var(--tvq-accent2-dark);
    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: #64748b;
    text-decoration: line-through;
}
.tvq-depart__waitlist {
    margin-left: auto;
    color: var(--tvq-accent2) !important;
    font-weight: 700;
    text-decoration: none;
}
.tvq-depart__waitlist:hover { color: var(--tvq-accent2-dark) !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: var(--tvq-accent2);
    color: var(--tvq-accent2) !important;
    background: #fef2f2;
}
.tvq-depart__ics:focus { outline: none; }
.tvq-depart__ics:focus-visible {
    outline: 2px solid var(--tvq-accent2);
    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: #64748b; margin-bottom: 8px; }
.tvq-depart__empty p { margin: 0; font-size: 0.95rem; }
.tvq-depart__empty a {
    color: var(--tvq-accent2);
    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 var(--tvq-accent2);
    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 */
/* The route map on a trip page (static/src/js/trip_map.js) */
.tvq-trip-map { margin: 0 0 28px; display: grid; gap: 8px; }
.tvq-trip-map__canvas { position: relative; height: 420px; width: 100%; border-radius: var(--tvq-radius, 14px);
    overflow: hidden; border: 1px solid var(--tvq-line); background: var(--tvq-bg-soft, #f4f5f2); z-index: 0; }
.tvq-trip-map__note { margin: 0; font-size: .85rem; line-height: 1.45; color: var(--tvq-ink-mute);
    display: flex; flex-wrap: wrap; gap: 4px 10px; align-items: baseline; }
.tvq-trip-map__off[hidden] { display: none; }
.tvq-trip-map .leaflet-container { font-family: inherit; }
.tvq-trip-map__line { stroke: var(--tvq-accent-fill, var(--tvq-accent, #FB6763)); stroke-opacity: .9; }
.tvq-trip-map__outline { stroke: var(--tvq-ink, #172121); stroke-opacity: .45; fill: none; }
.tvq-trip-map__name { font-weight: 700; font-size: .8rem; padding: 2px 8px; border-radius: 8px;
    color: var(--tvq-ink, #172121); background: rgba(255, 255, 255, .94); border: 1px solid var(--tvq-line); box-shadow: none; }
.tvq-trip-map__name::before { display: none; }
.tvq-trip-map .tvq-pin-wrap { background: none; border: 0; }
.tvq-trip-map .tvq-pin-wrap:focus-visible .tvq-pin { outline: 3px solid #1d6fd8; outline-offset: 2px; }
/* the map's layers are placed from the left whatever the page's direction: on a right-to-left page
   the names drifted away from their pins. The words inside keep their own direction. */
.tvq-trip-map .leaflet-pane, .tvq-trip-map .leaflet-control-container { direction: ltr; }
.tvq-trip-map .leaflet-tooltip { unicode-bidi: plaintext; }
.tvq-trip-map__contour { stroke: #7a5a32; fill: none; }
/* how high each place stands, under the map */
.tvq-trip-profile { display: grid; gap: 10px; padding: 16px 18px 12px; border: 1px solid var(--tvq-line);
    border-radius: var(--tvq-radius, 14px); background: var(--tvq-card, #fff); }
.tvq-trip-profile__head { display: flex; flex-wrap: wrap; gap: 6px 22px; align-items: baseline; }
.tvq-trip-profile__title { font-weight: 700; color: var(--tvq-ink, #172121); margin-inline-end: auto; }
.tvq-trip-profile__fact { font-size: .9rem; color: var(--tvq-ink-mute); font-variant-numeric: tabular-nums; }
.tvq-trip-profile__fact small { text-transform: uppercase; letter-spacing: .06em; font-size: .7rem; margin-inline-end: 4px; }
.tvq-trip-profile__fact strong { color: var(--tvq-ink, #172121); }
.tvq-trip-profile__plot { position: relative; height: 132px; direction: ltr; }
.tvq-trip-profile__chart { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.tvq-trip-profile__stop-top { stop-color: var(--tvq-accent-fill, var(--tvq-accent, #FB6763)); stop-opacity: .34; }
.tvq-trip-profile__stop-foot { stop-color: var(--tvq-accent-fill, var(--tvq-accent, #FB6763)); stop-opacity: .03; }
.tvq-trip-profile__line { fill: none; stroke: var(--tvq-accent-fill, var(--tvq-accent, #FB6763)); stroke-width: 2.5; stroke-linejoin: round; }
.tvq-trip-profile__sea { stroke: var(--tvq-ink-mute); stroke-dasharray: 4 4; stroke-width: 1; vector-effect: non-scaling-stroke; }
.tvq-trip-profile__marks { position: absolute; inset: 0; pointer-events: none; }
.tvq-trip-profile__dot { position: absolute; width: 10px; height: 10px; margin: -5px 0 0 -5px; border-radius: 50%;
    background: var(--tvq-card, #fff); border: 2.5px solid var(--tvq-accent-fill, var(--tvq-accent, #FB6763)); }
.tvq-trip-profile__day { position: absolute; bottom: 0; transform: translateX(-50%); font-size: .72rem; font-weight: 700;
    color: var(--tvq-ink-mute); font-variant-numeric: tabular-nums; }
.tvq-trip-profile__places { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 4px 16px;
    font-size: .82rem; color: var(--tvq-ink-mute); counter-reset: tvq-place; }
.tvq-trip-profile__places li::before { counter-increment: tvq-place; content: counter(tvq-place) ". "; font-weight: 700; }
.tvq-trip-profile__places strong { color: var(--tvq-ink, #172121); font-variant-numeric: tabular-nums; font-weight: 600; }
@media (max-width: 640px) {
    .tvq-trip-map__canvas { height: 380px; }
    .tvq-trip-map .tvq-outside-ask--over { inset-inline: 8px; bottom: 8px; padding: 10px 12px; gap: 6px; }
    .tvq-trip-map .tvq-outside-ask__note { font-size: .78rem; line-height: 1.35; }
    .tvq-trip-map .tvq-outside-ask__btn { min-height: 40px; padding: 6px 12px; font-size: .85rem; }
}
@media print {
    .tvq-trip-map { break-inside: avoid; }
}

.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(var(--tvq-accent2-rgb),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: var(--tvq-accent2);
    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: #64748b;
    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: #15803d; }
.tvq-trip-day__type--departure   { background: #fef2f2; color: var(--tvq-accent2); }
.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: #64748b;
    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: #64748b; 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: #15803d;
    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: #15803d;
    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: #64748b;
}
.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(var(--tvq-accent-deep-rgb),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: #64748b;
    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: #64748b;
    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(var(--tvq-accent-deep-rgb),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: var(--tvq-accent-deep);
    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(var(--tvq-accent-rgb), .14);
}
.tvq-choice:focus-within {
    box-shadow: 0 0 0 3px rgba(var(--tvq-accent-rgb), .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(var(--tvq-accent-rgb), .18);
    border-radius: 18px;
    background:
        radial-gradient(ellipse 70% 120% at 0% 50%,
            rgba(var(--tvq-accent-rgb), .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-fill, var(--tvq-accent));
    color: #fff;
    transform: translateY(-1px);
    box-shadow: 0 8px 22px rgba(var(--tvq-accent-rgb), .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(var(--tvq-accent-deep-rgb),0.22);
}

/* ── Confirmation step (step 4) ───────────────────────────────── */
.tvq-bw__done {
    text-align: center;
    padding: 40px 20px;
}
.tvq-bw__done-icon {
    color: #15803d;
    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: #64748b;
    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: #64748b;
}
.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: #64748b;
    transition: color 0.2s;
}
.tvq-bw__progress-step.is-active { color: var(--tvq-accent-deep); }
.tvq-bw__progress-step.is-done { color: #15803d; }
.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(var(--tvq-accent-deep-rgb),0.15),
                0 8px 22px rgba(var(--tvq-accent-deep-rgb),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-accent-fill: #C8403C;    /* coral with white text: 4.9:1 */

    --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: #C8403C !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: #C8403C !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: var(--tvq-accent-fill, #C8403C) !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: #C8403C !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: #C8403C !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: #C8403C !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: var(--tvq-accent-fill, #C8403C) !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: #C8403C !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: #C8403C !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: var(--tvq-accent-fill, #C8403C) !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: var(--tvq-accent-fill, #C8403C);
    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: var(--tvq-accent-fill, #C8403C);
    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: #C8403C !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; }
/* its own colour, not a fade: a faded head measured under 4.5:1 in every design */
.tvq-groupprices__table thead th { font-size: .75rem; letter-spacing: .06em; text-transform: uppercase; color: var(--tvq-ink-soft); }
/* a colour of their own, not a fade: faded they measured 3.3:1 */
.tvq-groupprices__sgl th, .tvq-groupprices__sgl td { font-size: .85rem; color: var(--tvq-ink-soft); }
.tvq-groupprices__dates { display: block; font-size: .75rem; font-weight: 400; color: var(--tvq-ink-soft); }
/* an agent picks its group size from the table (proposal_band_accept.py): each price a button */
.tvq-groupprices__hint { margin: .5rem auto 0; font-size: .9rem; font-weight: 600; color: var(--tvq-accent-deep); }
.tvq-groupprices__pick {
    font: inherit; color: var(--tvq-ink); background: transparent; cursor: pointer;
    border: 1px solid var(--tvq-line-strong); border-radius: 999px; padding: .3rem .7rem;
    transition: border-color .15s, background .15s;
}
.tvq-groupprices__pick:hover { border-color: var(--tvq-accent); background: var(--tvq-accent-soft); }
.tvq-groupprices__pick[aria-pressed="true"] {
    border-color: var(--tvq-accent); background: var(--tvq-accent-soft); font-weight: 700;
    box-shadow: 0 0 0 2px rgba(var(--tvq-accent-rgb), .25);
}
.tvq-groupprices__pick:focus-visible { outline: 2px solid var(--tvq-accent); outline-offset: 2px; }
@media (prefers-reduced-motion: reduce) { .tvq-groupprices__pick { transition: none; } }
.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-fill, var(--tvq-accent-fill)); color: #fff; }

/* ================================================================
   DECIDE - an agent picks the group size (and hotel option) it
   confirms: one price per person per band (proposal_band_accept.py)
   ================================================================ */
.tvq-band { text-align: center; }
.tvq-band__options {
    display: inline-flex; flex-wrap: wrap; justify-content: center; gap: 6px;
    padding: 4px; margin: 4px auto 14px; border-radius: 999px;
    background: rgba(255, 255, 255, 0.08);
}
.tvq-band__opt {
    border: 0; border-radius: 999px; padding: 8px 16px; cursor: pointer;
    background: transparent; color: rgba(255, 255, 255, 0.75); font: inherit; font-size: 0.9rem;
}
.tvq-band__opt[aria-checked="true"] { background: #fff; color: var(--tvq-ink); font-weight: 600; }
.tvq-band__grid {
    display: grid; gap: 10px; margin: 6px 0 14px;
    grid-template-columns: repeat(auto-fit, minmax(118px, 1fr));
}
.tvq-band__grid[hidden] { display: none; }
.tvq-band__cell {
    display: flex; flex-direction: column; align-items: center; gap: 2px;
    padding: 14px 10px; border-radius: var(--tvq-radius);
    border: 1px solid rgba(255, 255, 255, 0.18); background: rgba(255, 255, 255, 0.04);
    color: #fff; font: inherit; cursor: pointer;
    transition: border-color .15s, background .15s, transform .15s;
}
.tvq-band__cell:hover:not(:disabled) { border-color: rgba(255, 255, 255, 0.45); transform: translateY(-1px); }
.tvq-band__cell[aria-checked="true"] {
    border-color: var(--tvq-accent); background: rgba(var(--tvq-accent-rgb), 0.18);
    box-shadow: 0 0 0 2px rgba(var(--tvq-accent-rgb), 0.35);
}
.tvq-band__cell:disabled { opacity: .4; cursor: not-allowed; }
.tvq-band__cell:focus-visible, .tvq-band__opt:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
.tvq-band__lbl { font-size: 0.8rem; letter-spacing: .06em; text-transform: uppercase; color: rgba(255, 255, 255, 0.7); }
.tvq-band__pp { font-family: 'Fraunces', serif; font-size: 1.45rem; font-weight: 700; line-height: 1.15; }
.tvq-band__unit { font-size: 0.72rem; color: rgba(255, 255, 255, 0.55); }
.tvq-btn--accept:disabled { opacity: .55; cursor: not-allowed; }
@media (prefers-reduced-motion: reduce) { .tvq-band__cell { transition: none; } }

/* ================================================================
   Install and Ask no longer share a corner (8 Oct 2026). Both pills were
   fixed at the same bottom and right; Install is added later, so on a
   phone it lay on top of "Ask anything". Install takes the other side.
   ================================================================ */
.tvq-install-pill { right: auto; left: 24px; }
html[dir="rtl"] .tvq-install-pill { left: auto; right: 24px; }
@media (max-width: 640px) {
    .tvq-install-pill { right: auto; left: 14px; }
    html[dir="rtl"] .tvq-install-pill { left: auto; right: 14px; }
}

/* ================================================================
   The back-office preview (8 Oct 2026). The preview frame is far
   taller than the phone drawn around it, so 100vh was 3,200 px and
   the phone showed an empty hero. In the preview "one screen" is a
   phone, nothing waits for a scroll to appear, and nobody is
   "viewing now".
   ================================================================ */
.tvq-is-preview .tvq-hero { min-height: 560px; }
.tvq-is-preview .reveal, html.tvq-js .tvq-is-preview .reveal { opacity: 1; transform: none; }
.tvq-is-preview .tvq-presence,
.tvq-is-preview .tvq-install-pill { display: none !important; }

/* ================================================================
   Phones (8 Oct 2026). Two faults, both measured in a browser:
   1. The top bar was wider than the screen and the page clips what
      sticks out: the currency and language switches could not be
      reached at all. The section links now scroll inside the bar and
      the switches stay in view. "Respond" leaves the bar: the bottom
      bar already carries it.
   2. Save for later, Ask, Install and the consultant card were all
      placed on the same strip above the bottom bar. They now stack:
      the consultant card, above it Save (start side) and Ask (end
      side), above Ask the Install button.
   ================================================================ */
@media (max-width: 820px) {
    .tvq-nav { width: calc(100vw - 28px); box-sizing: border-box; }
    .tvq-nav__links {
        flex: 1 1 auto; min-width: 0;
        overflow-x: auto; overscroll-behavior-x: contain;
        scrollbar-width: none; -webkit-overflow-scrolling: touch;
    }
    .tvq-nav__links::-webkit-scrollbar { display: none; }
    .tvq-nav__links a { flex: 0 0 auto; white-space: nowrap; }
    .tvq-nav__utils { flex: 0 0 auto; }
}
/* 768px is where the bottom bar appears */
@media (max-width: 768px) {
    .tvq-nav__links a.tvq-nav__cta { display: none; }
    .tvq-save-pill { bottom: calc(148px + env(safe-area-inset-bottom, 0px)); left: 14px; right: auto; }
    .tvq-ai-pill { bottom: calc(148px + env(safe-area-inset-bottom, 0px)); right: 14px; left: auto; }
    .tvq-install-pill { bottom: calc(200px + env(safe-area-inset-bottom, 0px)); right: 14px; left: auto; }
    html[dir="rtl"] .tvq-save-pill { left: auto; right: 14px; }
    html[dir="rtl"] .tvq-ai-pill { right: auto; left: 14px; }
    html[dir="rtl"] .tvq-install-pill { right: auto; left: 14px; }
}

/* ================================================================
   A proposal with no hero picture (9 Oct 2026). The hero's buttons
   (Download PDF, Share, Copy link, reminders) are white on glass, made
   for a photograph: on the plain ground they were white on white.
   And a full screen of empty ground above the title read as a page
   that had not loaded. Without a picture the buttons are ink on
   white, and the hero is as tall as what it says.
   ================================================================ */
.tvq-hero:not(.tvq-hero--with-photo) { min-height: 0; padding-top: 132px; padding-bottom: 56px; }
.tvq-hero:not(.tvq-hero--with-photo) .tvq-btn--ghost-light {
    background: #ffffff;
    color: var(--tvq-ink);
    border-color: rgba(9, 20, 19, 0.22);
}
.tvq-hero:not(.tvq-hero--with-photo) .tvq-btn--ghost-light:hover {
    background: rgba(9, 20, 19, 0.05);
    border-color: rgba(9, 20, 19, 0.4);
    color: var(--tvq-ink);
}
@media (max-width: 640px) {
    .tvq-hero:not(.tvq-hero--with-photo) { padding-top: 104px; padding-bottom: 40px; }
}
/* the content block's own top padding is for a full-screen picture too */
.tvq-hero:not(.tvq-hero--with-photo) .tvq-hero__content { padding-top: 0; }

/* ================================================================
   The countdown bar and the top bar (9 Oct 2026). "Offer expires in"
   is a bar across the top of the page; the top bar floats 18 px from
   the top and lay over it, so on a phone the client saw a red strip
   and no words. While the countdown shows, the top bar sits under it.
   ================================================================ */
.tvq-countdown:not([hidden]) ~ .tvq-nav { top: 59px; }

/* ================================================================
   A long Accept label (9 Oct 2026). An agent's button reads "Accept ·
   20-24 · Comfort (3-star & guesthouse) · 835 per person": on one line
   it ran out of both ends of its button. It wraps inside it.
   ================================================================ */
.tvq-decide__actions .tvq-btn { white-space: normal; text-align: center; line-height: 1.3; }

/* ================================================================
   The dark-mode button in the top bar (static/src/js/proposal_scheme.js),
   and the cover of the Classic design (Settings > Online proposal >
   Cover of the Classic design). A dark or brand cover hands the cover's
   own subtree light inks through the same properties every rule reads.
   ================================================================ */
.tvq-scheme-btn { padding: 6px 8px; }
.tvq-scheme-btn[aria-pressed="true"] { background: var(--tvq-bg-tint); color: var(--tvq-accent-deep); }
/* the cover's two colours are named on the body: the cover's own subtree renames the inks below */
body.tvq-cover-dark { --tvq-cover-a: var(--tvq-brand-dark, #091413); --tvq-cover-b: #050b0a; }
body.tvq-cover-brand { --tvq-cover-a: var(--tvq-accent-deep); --tvq-cover-b: var(--tvq-accent-fill); }
body.tvq-design-classic.tvq-cover-dark .tvq-hero:not(.tvq-hero--with-photo) .tvq-hero__bg,
body.tvq-design-classic.tvq-cover-brand .tvq-hero:not(.tvq-hero--with-photo) .tvq-hero__bg {
    background: linear-gradient(150deg, var(--tvq-cover-a) 0%, var(--tvq-cover-b) 100%);
}
@supports (color: color-mix(in srgb, red, blue)) {
    body.tvq-cover-dark { --tvq-cover-b: color-mix(in srgb, var(--tvq-brand-dark, #091413) 62%, #000); }
    body.tvq-cover-brand { --tvq-cover-a: color-mix(in srgb, var(--tvq-accent-deep) 86%, #000); --tvq-cover-b: color-mix(in srgb, var(--tvq-accent-fill) 55%, var(--tvq-accent-deep)); }
}
body.tvq-design-classic.tvq-cover-dark .tvq-hero:not(.tvq-hero--with-photo),
body.tvq-design-classic.tvq-cover-brand .tvq-hero:not(.tvq-hero--with-photo) {
    --tvq-ink: #ffffff; --tvq-ink-soft: rgba(255, 255, 255, 0.92); --tvq-ink-mute: rgba(255, 255, 255, 0.84);
    --tvq-line: rgba(255, 255, 255, 0.24); --tvq-line-strong: rgba(255, 255, 255, 0.38);
    --tvq-card: rgba(255, 255, 255, 0.10); --tvq-bg: transparent; --tvq-bg-soft: rgba(255, 255, 255, 0.08);
    --tvq-bg-tint: rgba(255, 255, 255, 0.14); --tvq-accent-soft: rgba(255, 255, 255, 0.14);
    --tvq-accent-deep: #ffffff; --tvq-accent-dark: #ffffff; --tvq-display-italic-color: #ffffff;
    color: #ffffff;
}
/* the plates that were white paper on the light cover: glass on this one, their words white */
body.tvq-design-classic.tvq-cover-dark .tvq-hero:not(.tvq-hero--with-photo) .tvq-hero__eyebrow,
body.tvq-design-classic.tvq-cover-brand .tvq-hero:not(.tvq-hero--with-photo) .tvq-hero__eyebrow,
body.tvq-design-classic.tvq-cover-dark .tvq-hero:not(.tvq-hero--with-photo) .tvq-btn--ghost-light,
body.tvq-design-classic.tvq-cover-brand .tvq-hero:not(.tvq-hero--with-photo) .tvq-btn--ghost-light,
body.tvq-design-classic.tvq-cover-dark .tvq-hero:not(.tvq-hero--with-photo) .tvq-hero__arrow a,
body.tvq-design-classic.tvq-cover-brand .tvq-hero:not(.tvq-hero--with-photo) .tvq-hero__arrow a {
    background: rgba(255, 255, 255, 0.12); color: #ffffff; border-color: rgba(255, 255, 255, 0.32); box-shadow: none;
}
body.tvq-design-classic.tvq-cover-dark .tvq-hero:not(.tvq-hero--with-photo) .tvq-meta-chip--read .tvq-meta-chip__label,
body.tvq-design-classic.tvq-cover-brand .tvq-hero:not(.tvq-hero--with-photo) .tvq-meta-chip--read .tvq-meta-chip__label,
body.tvq-design-classic.tvq-cover-dark .tvq-hero:not(.tvq-hero--with-photo) .tvq-meta-chip--read .tvq-meta-chip__value,
body.tvq-design-classic.tvq-cover-brand .tvq-hero:not(.tvq-hero--with-photo) .tvq-meta-chip--read .tvq-meta-chip__value { color: #ffffff; }

/* White words on the bright success green measured 2.5:1. The plates that carry white words or a white
   tick take a deeper green (5.5:1); the bright one stays for dots and lines. */
.tvq-badge--green, .tvq-details__title--inc .tvq-details__icon { background: #047857; }

/* The company's own logo in the top bar (it gave one for dark ground): the normal one on a light page,
   the other in the dark look. */
.tvq-nav__logo-img { height: 24px; width: auto; max-width: 120px; object-fit: contain; display: block; }
.tvq-nav__logo-img--dark { display: none; }
html[data-tvq-scheme="dark"] .tvq-nav__logo-img--light { display: none; }
html[data-tvq-scheme="dark"] .tvq-nav__logo-img--dark { display: block; }

/* ================================================================
   On paper. A reader who prints the page (or saves it as a PDF from the
   browser) gets the proposal as a document: nothing that floats over the
   screen, nothing held back for a scroll, light paper whatever the look,
   and a day or a card never cut across two sheets where it can be helped.
   The "Download PDF" button still gives the designed PDF; this is for the
   reader who presses print.
   ================================================================ */
@media print {
    .tvq-nav, .tvq-progress, .tvq-consultant, .tvq-countdown, .tvq-skip, .tvq-float-cta, .tvq-mobile-bar,
    .tvq-whatsapp-float, .tvq-ai-pill, .tvq-install-pill, .tvq-save-pill, .tvq-presence, .tvq-social-toast,
    .tvq-trip-cta, .tvq-soundtrack__player, .tvq-soundtrack__hint, .tvq-langs, .tvq-jr-stage, .tvq-hero__arrow,
    .tvq-hero__actions, .tvq-hero__scrolldown, .tvq-modal, .tvq-accept-modal, .tvq-ai-modal, .tvq-save-modal,
    .tvq-video-modal, .tvq-lightbox, .tvq-gallery-lightbox, .tvq-bw, .tvq-day__ask, .tvq-scheme-btn,
    .tvq-outside-ask, .tvq-footer__outside,
    .leaflet-control-container { display: none !important; }
    html, body { background: #ffffff !important; }
    .reveal, html.tvq-js .reveal { opacity: 1 !important; transform: none !important; }
    * { animation: none !important; transition: none !important; }
    .tvq-hero { min-height: 0 !important; padding-top: 24px !important; padding-bottom: 24px !important; }
    .tvq-day, .tvq-hotel, .tvq-details__card, .tvq-terms__card, .tvq-groupprices, .tvq-decide__card { break-inside: avoid; }
    .tvq-section__head { break-after: avoid; }
    a[href^="http"] { text-decoration: none; }
}

/* Pairs an audit of the six designs measured under 4.5:1 (10 Oct 2026). The five designs with a palette of
   their own lay the trust figures on their paper, where the page's white label could not be read at all
   (1.03:1), and keep a dark footer, where the reference was dark on dark. */
.tvq-option-tab--active .tvq-option-tab__meta { color: var(--tvq-ink-soft); }
body.tvq-design-signature .tvq-trust__label,
body.tvq-design-almanac .tvq-trust__label,
body.tvq-design-road .tvq-trust__label,
body.tvq-design-relief .tvq-trust__label,
body.tvq-design-journey .tvq-trust__label { color: var(--tvq-ink-mute); }
body.tvq-design-signature .tvq-footer__ref,
body.tvq-design-almanac .tvq-footer__ref,
body.tvq-design-road .tvq-footer__ref,
body.tvq-design-relief .tvq-footer__ref,
body.tvq-design-journey .tvq-footer__ref { color: rgba(255, 255, 255, 0.84); font-family: inherit; } /* these designs do not load Fraunces: it fell back to Times */

/* A link that is closed: past its end date, or asking for its password */
.tvq-gate { max-width: 440px; }
.tvq-gate__company { font-weight: 700; letter-spacing: .02em; margin: 0 0 18px; }
.tvq-gate__form { display: grid; gap: 10px; margin-top: 22px; text-align: start; }
.tvq-gate__label { font-weight: 600; font-size: .95rem; }
.tvq-gate__input { font: inherit; width: 100%; box-sizing: border-box; min-height: 48px; padding: 10px 14px;
    border: 1.5px solid #9aa5a5; border-radius: 10px; background: #fff; color: #172121; }
.tvq-gate__input:focus-visible { outline: 3px solid #1d6fd8; outline-offset: 2px; }
.tvq-gate__input[aria-invalid="true"] { border-color: #b3261e; }
.tvq-gate__error { color: #b3261e; font-weight: 600; margin: 0; }
.tvq-gate__button { font: inherit; font-weight: 700; min-height: 48px; border: 0; border-radius: 10px; cursor: pointer;
    background: #172121; color: #fff; padding: 10px 18px; }
.tvq-gate__button:focus-visible { outline: 3px solid #1d6fd8; outline-offset: 2px; }
.tvq-gate__contact { margin-top: 26px; font-size: .95rem; }

/* Content from outside services: the question, and the map before its background is allowed */
.tvq-outside-ask { display: grid; gap: 10px; justify-items: start; padding: 16px 18px; border-radius: 14px;
    background: var(--tvq-paper, #fff); color: var(--tvq-ink, #172121); border: 1px solid var(--tvq-line, #d5dcdc); }
.tvq-outside-ask__note { margin: 0; font-size: .9rem; line-height: 1.45; color: var(--tvq-ink-mute, #647070); max-width: 46ch; }
.tvq-outside-ask__btn { font: inherit; font-weight: 700; min-height: 44px; padding: 8px 16px; border-radius: 10px; cursor: pointer;
    border: 1.5px solid currentColor; background: transparent; color: inherit; }
.tvq-outside-ask__btn:hover { background: var(--tvq-ink, #172121); color: var(--tvq-paper, #fff); }
.tvq-outside-ask__btn:focus-visible, .tvq-footer__outside-btn:focus-visible { outline: 3px solid #1d6fd8; outline-offset: 2px; }
.tvq-outside-ask--over { position: absolute; z-index: 800; inset-inline: 10px; bottom: 10px; max-width: 420px;
    box-shadow: 0 6px 22px rgba(0, 0, 0, .16); }
.tvq-outside-ask[hidden] { display: none; }
.leaflet-container.tvq-map--plain { background: var(--tvq-sand, #eef0ec); }
.tvq-footer__outside { flex-basis: 100%; margin: 14px 0 0; font-size: .85rem; opacity: .85; display: flex; flex-wrap: wrap; gap: 4px 10px; align-items: baseline; }
.tvq-footer__outside[hidden] { display: none; }
.tvq-footer__outside p { margin: 0; }
.tvq-footer__outside-btn { font: inherit; background: none; border: 0; padding: 0 2px; color: inherit; text-decoration: underline; cursor: pointer; }

/* The website pages: the question before a company's analytics tags load (static/src/js/site_consent.js).
   Not a wall: a card in a corner, the page usable behind it; Yes and No of the same weight. */
.tvq-consent { position: fixed; z-index: 2000; inset-inline-end: 16px; bottom: 16px; width: min(420px, calc(100vw - 32px));
    box-sizing: border-box; padding: 18px 20px; border-radius: 14px; background: #ffffff; color: #172121;
    border: 1px solid #d5dcdc; box-shadow: 0 10px 34px rgba(0, 0, 0, .18); font-size: 15px; line-height: 1.45; }
.tvq-consent__title { margin: 0 0 6px; font-size: 1.05rem; font-weight: 700; color: #172121; }
.tvq-consent__text { margin: 0 0 14px; color: #3d4a4a; }
.tvq-consent__row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.tvq-consent__btn { font: inherit; font-weight: 700; min-height: 46px; padding: 8px 12px; border-radius: 10px; cursor: pointer;
    border: 1.5px solid #172121; background: #ffffff; color: #172121; }
.tvq-consent__btn:hover { background: #172121; color: #ffffff; }
.tvq-consent__btn:focus-visible, .tvq-consent-again:focus-visible { outline: 3px solid #1d6fd8; outline-offset: 2px; }
.tvq-consent-again { position: fixed; z-index: 1500; inset-inline-start: 12px; bottom: 12px; font: inherit; font-size: 12px;
    padding: 6px 10px; border-radius: 999px; border: 1px solid #c5cdcd; background: rgba(255, 255, 255, .92); color: #3d4a4a; cursor: pointer; }
.tvq-consent-again--foot { position: static; display: block; margin: 14px auto 6px; }
.tvq-consent-again[hidden] { display: none; }
@media (max-width: 480px) { .tvq-consent { inset-inline: 12px; bottom: 12px; width: auto; } .tvq-consent__row { grid-template-columns: 1fr; } }
/* a phone's trip page keeps a booking bar along the bottom: the question sits above it */
@media (max-width: 720px) { body.tvq-landing .tvq-consent { bottom: calc(88px + env(safe-area-inset-bottom, 0px)); } }
@media print { .tvq-consent, .tvq-consent-again { display: none !important; } }

/* ══════════════════════════════════════════════════════════════════════
   The trip page, measured in a browser (14 Oct 2026). Each rule below
   answers a fault that was measured on the live page, at 1440 px and at
   390 px; qa/playwright/departures_manual/trip_page_audit.js measures
   them again.
   ══════════════════════════════════════════════════════════════════════ */

/* 1. On a phone the page was 562 px wide on a 390 px screen: a day of the
   itinerary is a grid cell, a grid cell is as wide as its longest line
   unless told otherwise, and the "next day" line never wraps. The page
   scrolled sideways and the language switch stood off the screen. */
.tvq-landing .tvq-trip-day > *,
.tvq-landing .tvq-trip-day__body,
.tvq-landing .tvq-trip-day__next,
.tvq-landing .tvq-trip-day__next-title {
    min-width: 0;
}
.tvq-landing .tvq-trip-day__body {
    overflow-wrap: anywhere;
}
/* Nothing of this page may push it wider than its screen again. `clip`
   and not `hidden`: `hidden` would make the body a scroll container and
   the sticky section bar would stop sticking. */
html:has(> body.tvq-landing),
body.tvq-landing {
    overflow-x: clip;
}

/* 2. The title of the hero was see-through letters over a dark shadow:
   it read grey on the photograph. White letters, a soft shadow under. */
.tvq-landing .tvq-hero--with-photo .tvq-hero__title {
    background: none;
    -webkit-background-clip: border-box;
    background-clip: border-box;
    color: #ffffff;
    -webkit-text-fill-color: #ffffff;
    text-shadow: 0 2px 18px rgba(9, 20, 19, 0.45), 0 1px 2px rgba(9, 20, 19, 0.35);
}

/* 3. A section is 1,180 px wide and two of them have a ground of their
   own (the questions, the enquiry): on a wide screen that ground stopped
   at the section's edges and left white bands either side. The ground
   now runs to the edges of the window; the content keeps its width. */
.tvq-landing .tvq-faq,
.tvq-landing .tvq-decide {
    position: relative;
    isolation: isolate;
}
.tvq-landing .tvq-faq::before,
.tvq-landing .tvq-decide::before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: 50%;
    width: 100vw;
    transform: translateX(-50%);
    background: inherit;
    z-index: -1;
    pointer-events: none;
}

/* 4. At the foot of the page the booking bar and the chat bubble stood on
   the footer's own lines (the copyright, the links). They step aside
   while the footer is on screen. */
body.tvq-at-footer .tvq-trip-cta,
body.tvq-at-footer .tvq-whatsapp-float {
    opacity: 0;
    pointer-events: none;
    transform: translateY(20px);
}
.tvq-landing .tvq-whatsapp-float {
    transition: opacity 0.3s ease, transform 0.18s ease, box-shadow 0.18s ease;
}
/* On a phone the booking bar is the width of the screen: the chat bubble
   stood on its price. It sits above the bar. */
@media (max-width: 640px) {
    .tvq-landing .tvq-whatsapp-float {
        bottom: calc(76px + env(safe-area-inset-bottom, 0px));
    }
}

/* 5. What a finger presses is at least 44 px (the language switch was 38
   by 28, the share buttons 38 by 38, the month chips 35 high). */
.tvq-landing .tvq-langs__item {
    min-width: 44px;
    min-height: 36px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.tvq-landing .tvq-share-btn {
    width: 44px;
    height: 44px;
}
.tvq-landing .tvq-depart__pill {
    min-height: 44px;
}
@media (max-width: 640px) {
    .tvq-landing .tvq-langs__item {
        min-height: 44px;
    }
    /* the section bar scrolls sideways inside itself, and says so */
    .tvq-landing .tvq-subnav__inner {
        overflow-x: auto;
        scrollbar-width: none;
        -webkit-overflow-scrolling: touch;
        scroll-snap-type: x proximity;
    }
    .tvq-landing .tvq-subnav__inner::-webkit-scrollbar {
        display: none;
    }
    .tvq-landing .tvq-subnav__link {
        flex: none;
        scroll-snap-align: start;
        min-height: 44px;
        display: inline-flex;
        align-items: center;
    }
}

/* 6. Where the keyboard is, is visible: one ring for every control. */
.tvq-landing a:focus-visible,
.tvq-landing button:focus-visible,
.tvq-landing summary:focus-visible,
.tvq-landing input:focus-visible,
.tvq-landing select:focus-visible,
.tvq-landing textarea:focus-visible {
    outline: 3px solid var(--tvq-accent2, #d92b2b);
    outline-offset: 2px;
    border-radius: 6px;
}
/* Somebody who asked their system for less motion gets less motion. */
@media (prefers-reduced-motion: reduce) {
    .tvq-landing *,
    .tvq-landing *::before,
    .tvq-landing *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
}

/* 7. Right to left: the page is now told when its language is. What was
   pinned to one side is pinned to the other. */
html[dir="rtl"] .tvq-landing .tvq-langs {
    right: auto;
    left: 12px;
}
html[dir="rtl"] .tvq-landing .tvq-whatsapp-float {
    left: auto;
    right: 22px;
}
html[dir="rtl"] .tvq-landing .tvq-trip-day {
    padding: 0 70px 0 0;
}
html[dir="rtl"] .tvq-landing .tvq-trip-day::before {
    left: auto;
    right: 33px;
}
html[dir="rtl"] .tvq-landing .tvq-skip {
    left: auto;
    right: 8px;
}
@media (max-width: 768px) {
    html[dir="rtl"] .tvq-landing .tvq-whatsapp-float {
        right: 14px;
    }
}
@media (max-width: 720px) {
    html[dir="rtl"] .tvq-landing .tvq-trip-day {
        padding: 0 50px 0 0;
    }
    html[dir="rtl"] .tvq-landing .tvq-trip-day::before {
        right: 14px;
    }
}

/* 8. On a phone the language switch was pinned over the section bar and
   hid one of its links. It stays at the top of the page and scrolls away
   with the photograph; the section bar then has its whole width. */
@media (max-width: 640px) {
    .tvq-landing .tvq-langs {
        position: absolute;
    }
}
