/* ============================================================
   Traveller Theme — warm orange travel-agency layout
   ============================================================ */
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  font-family:'Poppins',system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
  padding:20px;
  background:#fff;
  color:var(--ink,#0f172a);
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block;}
a{color:inherit;text-decoration:none;}
button{font-family:inherit;}

.tv-container{max-width:1200px;margin:0 auto;padding:0 1.25rem;}

/* ── Top utility bar (contact + socials) ───────── */
.tv-utility-bar{
  background:var(--ink,#0f172a);color:#fff;
  font-size:.82rem;
}
.tv-utility-bar a{color:#fff;text-decoration:none;}
.tv-utility-row{
  display:flex;align-items:center;justify-content:space-between;
  gap:1rem;padding:.5rem 1.25rem;flex-wrap:wrap;
}
.tv-utility-row .b2c-contact-ico{opacity:.85;}
.tv-utility-social{display:inline-flex;align-items:center;gap:.35rem;}
.tv-utility-social a{display:inline-flex !important;align-items:center;justify-content:center;width:26px !important;height:26px !important;margin:0 !important;background:rgba(255,255,255,.18) !important;border-radius:50%;}
.tv-utility-social a svg{width:13px !important;height:13px !important;}
@media (max-width:720px){.tv-utility-row .b2c-contact--address{display:none;}}

/* ── Header (dark hero behind, white cutout under the logo) ──
   The hero is fully dark; the header has a white rectangle pinned to
   the top-left that covers ~30% of the width with a rounded
   bottom-right corner. The logo rides on top of that white cutout;
   the nav + Help & Support pill sit directly on the dark hero. */
.tv-utility-bar{display:none;}
.tv-header{
  position:absolute;top:0;left:0;right:0;z-index:50;
  background:transparent;border:0;
}
.tv-header-cutout{
  position:absolute;top:0;left:0;
  width:28%;min-width:246px;height:100%;
  background:#ffffff;
  border-bottom-right-radius:31px;
  z-index:1;
}
.tv-header-row{
  position:relative;z-index:2;
  display:flex;align-items:center;
  gap:1.25rem;height:auto;padding:3.4rem 1.5rem 1.3rem;
}
/* Brand sits on top of the white cutout — give it a fixed width that
   matches so the nav after it always begins on the dark hero. */
.tv-brand{
  display:inline-flex;align-items:center;gap:.5rem;
  font-weight:800;color:var(--ink,#0f172a);font-size:1.05rem;
  flex:0 0 240px;min-width:0;text-decoration:none;
}
.tv-brand .brand-text{font-size:1.2rem;font-weight:800;color:var(--ink,#0f172a);}
.tv-brand .brand-img{max-height:42px;}
.tv-nav{display:flex;align-items:center;gap:1.1rem;flex:1;justify-content:center;position:relative;flex-wrap:nowrap;}
/* Each nav link has the matching product-coloured icon to the left of
   the label, mirroring the Classic theme's product-bar nav. */
.tv-nav a{display:inline-flex;align-items:center;gap:.4rem;}
.tv-nav a svg{width:16px;height:16px;flex-shrink:0;color:rgba(255,255,255,.85);}
.tv-nav a:hover svg{color:#fff;}
/* Tiny inverted-corner masks where the white cutout meets the dark
   hero, so the join reads as a smooth scoop instead of a hard step. */
nav.tv-nav:after{
  border-radius:30px 0;
  top:-39px;left:-19px;
  width:60px;height:60px;
  content:'';position:absolute;z-index:0;
  background:transparent;
  box-shadow:-10px -12px #ffffff;
}
.tv-container.tv-header-row:after{
  border-radius:30px 0;
  top:122px;left:-141px;
  width:60px;height:60px;
  content:'';position:absolute;z-index:0;
  background:transparent;
  box-shadow:-10px -12px #ffffff;
}
.tv-nav a{
  font-size:.94rem;font-weight:500;color:rgba(255,255,255,.85);
  padding:.45rem .15rem;position:relative;text-decoration:none;
  transition:color .15s ease;
}
.tv-nav a:hover{color:#fff;}
.tv-nav a.active{
  color:#fff;background:rgba(255,255,255,.08);
  padding:.45rem 1rem;border-radius:9999px;
}
.tv-help-btn{
  display:inline-flex;align-items:center;gap:.55rem;
  background:var(--primary);color:#fff;
  padding:.75rem 1.5rem;border-radius:9999px;
  font-size:.92rem;font-weight:600;text-decoration:none;
  box-shadow:0 12px 28px -10px rgba(15,23,42,.35);
  transition:transform .15s ease,background .15s ease;
}
.tv-help-btn:hover{transform:translateY(-1px);background:var(--primary-dark);}
.tv-help-btn svg{width:18px;height:18px;}

/* ── Hamburger toggle (mobile only) + drawer ──────────────
   Hidden by default; CSS shows it under 900px. Tap toggles
   .tv-drawer-open on .tv-header which slides the .tv-nav in from
   the right and dims the rest of the page with a backdrop. */
.tv-burger{
  display:none;
  width:42px;height:42px;border:0;background:transparent;cursor:pointer;
  padding:0;flex-direction:column;justify-content:center;align-items:center;gap:5px;
  z-index:60;
}
.tv-burger span{
  width:22px;height:2px;background:#fff;border-radius:2px;
  transition:transform .25s ease,opacity .15s ease;
}
.tv-header.tv-drawer-open .tv-burger span:nth-child(1){transform:translateY(7px) rotate(45deg);}
.tv-header.tv-drawer-open .tv-burger span:nth-child(2){opacity:0;}
.tv-header.tv-drawer-open .tv-burger span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}
/* Backdrop — sits below the drawer, click closes. */
.tv-drawer-backdrop{
  position:fixed;inset:0;background:rgba(15,23,42,.55);
  opacity:0;visibility:hidden;transition:opacity .25s ease,visibility 0s linear .25s;
  z-index:55;
}
.tv-header.tv-drawer-open + .tv-drawer-backdrop,
.tv-drawer-backdrop.is-open{
  opacity:1;visibility:visible;transition:opacity .25s ease;
}

/* ── Hero (dark city skyline night photo) ──────
   Continues the header's dark band downward; the page content below
   the search bar is back on the cream/white theme. */
.tv-hero{
  position:relative;
  padding:9rem 0 4rem;
  background:#0a1933;
  color:#fff;
  border-radius:20px;
  /* overflow stays visible: booking-widget autocomplete + calendar popovers
     hang below the input row and were getting clipped by overflow:hidden.
     The bg-image is clipped to the rounded corners on .tv-hero-bg below. */
}
.tv-hero-bg{
  position:absolute;inset:0;z-index:0;pointer-events:none;
  border-radius:20px;overflow:hidden;
  background-image:
    linear-gradient(rgba(10,25,51,.85) 0%,rgba(10,25,51,.55) 60%,rgba(10,25,51,.85) 100%),
    url('https://images.unsplash.com/photo-1512453979798-5ea266f8880c?w=1800&q=80&auto=format&fit=crop');
  background-size:cover;background-position:center;
}
.tv-hero-row{
  position:relative;z-index:2;
  display:grid;grid-template-columns:1.5fr 1fr;gap:3rem;
  align-items:center;
  padding:2rem 1.5rem;
}
.tv-hero-title{
  font-family:'Playfair Display',serif;
  font-size:clamp(2rem,4.6vw,3.8rem);
  line-height:1.08;font-weight:800;letter-spacing:-.005em;
  color:#fff;margin:0;
}
.tv-hero-side{display:flex;flex-direction:column;align-items:flex-end;gap:1.5rem;}
.tv-hero-sub{
  font-size:1rem;line-height:1.6;color:rgba(255,255,255,.88);
  max-width:380px;margin:0;text-align:left;
}
.tv-howit{
  position:relative;display:inline-flex;align-items:center;justify-content:center;
  width:130px;height:130px;border-radius:50%;text-decoration:none;
}
.tv-howit-text{
  position:absolute;inset:0;width:100%;height:100%;
  animation:tvHowitSpin 14s linear infinite;
}
.tv-howit-play{
  width:54px;height:54px;border-radius:50%;
  background:var(--primary);color:#fff;
  display:inline-flex;align-items:center;justify-content:center;
  box-shadow:0 12px 28px -8px rgba(15,23,42,.35);
}
.tv-howit-play svg{width:20px;height:20px;margin-left:3px;}
@keyframes tvHowitSpin{to{transform:rotate(360deg);}}
.tv-search-band{position:relative;z-index:2;margin-top:2rem;padding:0 1.5rem;}

/* ── Sections ─────────────────────────────────── */
.tv-section{padding:3rem 0;}
.tv-section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:2rem;margin-bottom:2.5rem;}
.tv-section-head--center{flex-direction:column;align-items:center;text-align:center;}
.tv-section-title{
  font-family:'Playfair Display',serif;
  font-size:clamp(1.8rem,3.4vw,2.6rem);
  font-weight:700;color:var(--ink);margin:0 0 .5rem;line-height:1.15;
}
.tv-script{font-family:'Playfair Display',serif;font-style:italic;color:var(--accent);position:relative;}
.tv-script::after{
  content:"";position:absolute;left:0;right:0;bottom:-4px;height:5px;
  background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 8'><path d='M2 5 Q25 -2 50 5 T98 5' stroke='%23f97316' stroke-width='2' fill='none' stroke-linecap='round'/></svg>") no-repeat center/100% 100%;
}
.tv-section-subtitle{color:var(--ink-soft);font-size:.95rem;max-width:560px;margin:0;}
.tv-eyebrow{display:inline-block;color:var(--accent);font-size:.82rem;font-weight:500;letter-spacing:.05em;margin-bottom:.5rem;text-transform:uppercase;}
.tv-eyebrow--white{color:#fff;opacity:.85;}

/* ── Benefits ─────────────────────────────────── */
.tv-benefits{background:linear-gradient(180deg,#fff 0%,#fff7ed 100%);}
.tv-benefit-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem;}
.tv-benefit-card{
  background:#fff;border:1px solid #f1f5f9;border-radius:18px;padding:2rem 1.5rem;text-align:center;
  box-shadow:0 22px 40px -32px rgba(15,23,42,.18);
  transition:transform .2s ease,box-shadow .2s ease;
}
.tv-benefit-card:hover{transform:translateY(-4px);box-shadow:0 30px 50px -28px rgba(249,115,22,.35);}
.tv-benefit-icon{
  width:60px;height:60px;border-radius:16px;
  display:inline-flex;align-items:center;justify-content:center;
  margin-bottom:1.25rem;color:#fff;
  box-shadow:0 14px 28px -14px rgba(15,23,42,.35);
}
.tv-benefit-icon svg{width:28px;height:28px;}
.tv-benefit-icon--blue{background:linear-gradient(135deg,#3b82f6,var(--primary-dark));}
.tv-benefit-icon--yellow{background:linear-gradient(135deg,#fbbf24,#f59e0b);}
.tv-benefit-icon--orange{background:linear-gradient(135deg,#fb923c,#ef4444);}
.tv-benefit-card h3{font-size:1.05rem;font-weight:700;margin:0 0 .5rem;}
.tv-benefit-card p{margin:0;font-size:.85rem;color:var(--ink-soft);}

/* ── Destinations ─────────────────────────────── */
.tv-dest-row{display:grid;grid-template-columns:repeat(5,1fr);gap:1rem;}
.tv-dest-card{display:block;border-radius:14px;overflow:hidden;box-shadow:0 14px 30px -22px rgba(15,23,42,.25);transition:transform .2s ease;}
.tv-dest-card:hover{transform:translateY(-4px);}
.tv-dest-img{height:170px;background:var(--dc,linear-gradient(135deg,#94a3b8,#0f172a));position:relative;}
.tv-dest-img::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 50%,rgba(0,0,0,.3) 100%);}
.tv-dest-pin{background:#fff;font-size:.85rem;font-weight:600;color:var(--ink);padding:.6rem .8rem;text-align:center;}

/* ── App download ─────────────────────────────── */
.tv-app{background:#fafafa;}
.tv-app-row{display:grid;grid-template-columns:1fr 1.05fr;gap:3rem;align-items:center;}
.tv-app-phones{position:relative;height:380px;}
.tv-phone{
  position:absolute;width:180px;height:340px;
  background:linear-gradient(180deg,#0f172a 0%,#1e293b 100%);
  border-radius:36px;border:8px solid #0f172a;
  box-shadow:0 40px 60px -28px rgba(15,23,42,.5);overflow:hidden;
}
.tv-phone::before{content:"";position:absolute;left:50%;top:8px;transform:translateX(-50%);width:60px;height:6px;background:#0f172a;border-radius:3px;}
.tv-phone::after{content:"";position:absolute;inset:18px 6px 6px;border-radius:24px;background:linear-gradient(180deg,#fff 0%,#fff7ed 60%,#fed7aa 100%);}
.tv-phone--back{left:14%;top:30px;transform:rotate(-12deg);}
.tv-phone--front{left:34%;top:0;transform:rotate(8deg);}
.tv-app-deco{position:absolute;}
.tv-app-deco--diamond{width:80px;height:80px;left:0;top:20px;background:linear-gradient(135deg,#0ea5e9,#22d3ee);border-radius:14px;transform:rotate(45deg);opacity:.85;}
.tv-app-deco--circle{width:90px;height:90px;right:0;bottom:0;border-radius:50%;background:linear-gradient(135deg,#fbbf24,#f59e0b);opacity:.85;}
.tv-store-row{display:flex;gap:.75rem;flex-wrap:wrap;margin-top:1.5rem;}
.tv-store-btn{display:inline-flex;flex-direction:column;justify-content:center;background:#0f172a;color:#fff;padding:.55rem 1.25rem;border-radius:8px;min-width:150px;}
.tv-store-sub{font-size:.65rem;opacity:.7;line-height:1;}
.tv-store-name{font-size:1rem;font-weight:700;}

/* ── Packages ─────────────────────────────────── */
.tv-pkg-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem;}
.tv-pkg-card{background:#fff;border-radius:14px;overflow:hidden;box-shadow:0 18px 36px -28px rgba(15,23,42,.25);transition:transform .2s ease;}
.tv-pkg-card:hover{transform:translateY(-4px);}
.tv-pkg-img{height:180px;}
.tv-pkg-body{padding:1.25rem 1.25rem 1.5rem;}
.tv-pkg-loc{font-size:.78rem;color:var(--ink-soft);margin-bottom:.4rem;}
.tv-pkg-title{font-family:'Playfair Display',serif;color:var(--accent);font-size:1.25rem;margin:0 0 .6rem;font-weight:700;}
.tv-pkg-desc{font-size:.82rem;color:var(--ink-soft);margin:0 0 .85rem;line-height:1.6;}
.tv-pkg-meta{display:flex;justify-content:space-between;font-size:.78rem;color:var(--ink-soft);margin-bottom:.85rem;border-top:1px dashed #e2e8f0;padding-top:.65rem;}
.tv-pkg-rating{color:#f59e0b;font-weight:600;}
.tv-pkg-foot{display:flex;align-items:center;justify-content:space-between;gap:.5rem;flex-wrap:wrap;}
.tv-pkg-price{font-size:1.05rem;font-weight:700;color:var(--ink);}
.tv-pkg-per{font-size:.7rem;color:var(--ink-soft);}
.tv-pkg-cta{font-size:.78rem;font-weight:600;color:var(--accent);border:1px solid #fed7aa;background:#fff7ed;padding:.45rem .75rem;border-radius:8px;}
.tv-pkg-cta:hover{background:var(--accent);color:#fff;border-color:var(--accent);}

/* ── Believe / image-strip ────────────────────── */
.tv-believe{background:#fff;}
.tv-believe-title{font-family:'Playfair Display',serif;font-size:clamp(1.5rem,2.6vw,2rem);text-align:center;font-weight:700;max-width:880px;margin:0 auto 3rem;line-height:1.4;}
.tv-believe-title em{color:var(--accent);font-style:italic;}
.tv-believe-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:.5rem;}
.tv-believe-tile{height:170px;border-radius:6px;filter:grayscale(.85);background-size:cover;background-position:center;}

/* ── Capture banner ───────────────────────────── */
.tv-capture{position:relative;padding:6rem 0;text-align:center;color:#fff;overflow:hidden;}
.tv-capture--compact{padding:4rem 0;}
.tv-capture-bg{position:absolute;inset:0;background:radial-gradient(circle at 50% 30%,#7dd3fc 0%,transparent 60%),linear-gradient(180deg,#0c4a6e 0%,#075985 50%,#0ea5e9 100%);}
.tv-capture-bg::after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 50% 80%,rgba(8,47,73,.6) 0%,transparent 70%);}
.tv-capture-inner{position:relative;z-index:2;}
.tv-capture-title{margin:0 0 1.5rem;line-height:1.1;}
.tv-script--white{color:var(--accent);font-size:clamp(2rem,4.5vw,3.5rem);}
.tv-script--white::after{background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 8'><path d='M2 5 Q25 -2 50 5 T98 5' stroke='%23f97316' stroke-width='2' fill='none' stroke-linecap='round'/></svg>") no-repeat center/100% 100%;}
.tv-capture-big{display:block;font-family:'Playfair Display',serif;font-size:clamp(2.5rem,6vw,4.5rem);font-weight:700;text-shadow:0 8px 28px rgba(0,0,0,.3);}
.tv-capture-btn{display:inline-flex;align-items:center;gap:.5rem;background:linear-gradient(135deg,var(--accent),var(--accent-dk));color:#fff;padding:.85rem 2rem;border-radius:9999px;font-weight:600;font-size:.95rem;box-shadow:0 14px 30px -14px rgba(249,115,22,.6);}

/* ── Partners ─────────────────────────────────── */
.tv-partners{padding:3rem 0;text-align:center;}
.tv-partners-headline{color:var(--ink-soft);font-size:.95rem;margin:0 0 1.5rem;}
.tv-partners-row{display:grid;grid-template-columns:repeat(5,1fr);gap:1rem;max-width:900px;margin:0 auto;}
.tv-partner-thumb{height:90px;border-radius:8px;}

/* ── Footer (blue rounded card matching reference mockup) ──
   Single rounded blue card on a light page background. Brand block
   + tagline + body on the left, email signup pill on the right;
   horizontal nav row centered; copyright + circle social icons +
   stripe/PayPal wordmarks at the bottom. */
.tv-footer{background:transparent;color:#fff;border:0;}
.tv-footer-card{
  margin:0 auto;
  background:var(--primary);color:#fff;
  border-radius:24px;padding:3rem clamp(1.5rem,3vw,3rem) 1.5rem;
}
.tv-footer-top{
  display:grid;grid-template-columns:1.3fr 1fr;gap:2rem;align-items:flex-start;
  padding-bottom:2.5rem;
  max-width:1200px;margin:0 auto;
}
.tv-footer-brand-block{max-width:560px;}
.tv-footer-brand{display:inline-flex;align-items:center;gap:.5rem;margin-bottom:1.5rem;line-height:0;}
.tv-footer-brand .brand-text{color:#fff;font-size:1.4rem;font-weight:800;}
.tv-footer-brand .brand-img,.tv-footer-brand img{max-height:42px;filter:brightness(0) invert(1);}
.tv-footer-tagline{
  font-family:'Playfair Display',serif;font-weight:700;
  font-size:clamp(1.05rem,1.6vw,1.25rem);
  margin:0 0 .75rem;color:#fff;letter-spacing:-.005em;
}
.tv-footer-blurb{
  font-size:.92rem;line-height:1.6;color:rgba(255,255,255,.92);margin:0;
}
.tv-footer-newsletter{
  display:flex;align-items:center;gap:.5rem;
  background:#fff;border-radius:9999px;padding:.4rem .4rem .4rem 1.4rem;
  align-self:flex-start;width:100%;max-width:520px;
}
.tv-footer-newsletter input{
  flex:1;border:0;background:transparent;font-size:.95rem;color:#0f172a;outline:0;font-family:inherit;
}
.tv-footer-newsletter input::placeholder{color:#94a3b8;}
.tv-footer-newsletter button{
  background:var(--primary);color:#fff;border:0;border-radius:9999px;
  padding:.7rem 1.5rem;font-weight:600;font-size:.92rem;cursor:pointer;
  display:inline-flex;align-items:center;gap:.4rem;
}
.tv-footer-nav{
  display:flex;justify-content:center;flex-wrap:wrap;gap:2rem;
  padding:2rem 0;
}
.tv-footer-nav a{
  color:#fff;font-size:.95rem;font-weight:500;text-decoration:none;
  transition:opacity .15s ease;
}
.tv-footer-nav a:hover{opacity:.75;}
.tv-footer-bottom-row{
  display:grid;grid-template-columns:1fr auto 1fr;gap:1rem;align-items:center;
  padding-top:1.5rem;
  font-size:.85rem;color:rgba(255,255,255,.85);
  max-width:1200px;margin:0 auto;
}
.tv-footer-copy{justify-self:flex-start;}
.tv-footer-social{display:flex;gap:.85rem;justify-self:center;}
.tv-footer-social a{
  display:inline-flex !important;align-items:center;justify-content:center;
  width:38px !important;height:38px !important;
  border:1.5px solid #fff !important;background:transparent !important;
  border-radius:50%;color:#fff !important;margin:0 !important;
}
.tv-footer-social a:hover{background:#fff !important;color:var(--primary) !important;}
.tv-footer-social a svg{width:16px !important;height:16px !important;}
.tv-footer-pay{display:inline-flex;align-items:center;gap:1rem;justify-self:flex-end;color:#fff;font-weight:700;}
.tv-pay-stripe{font-size:1.4rem;font-style:italic;}
.tv-pay-paypal em{font-style:italic;font-weight:400;}
.tv-pay-paypal strong{font-style:italic;font-weight:800;}

/* Legacy 4-column footer classes — display:none so any older
   home/footer blob doesn't render on top of the new card. */
.tv-footer-grid,.tv-footer-heading,.tv-footer-links,
.tv-news-input,.tv-news-btn,.tv-news-fineprint,
.tv-social,.tv-footer-bottom{display:none;}

/* ── Page hero (used by contact, account, 404, search) ─
   Real photo backdrop, but with a warm cream-to-amber veil layered
   on top so the original Traveller palette is preserved: dark
   Playfair title, orange eyebrow, peachy decoration circles. The
   photo shows through softly — adds depth without flattening the
   typography or forcing white text. The veil colour picks up
   var(--primary)/(--accent) at low alpha so a tenant Branding
   override gently re-tints the wash. */
.tv-page-hero{
  position:relative;padding:6rem 0 5rem;
  text-align:center;overflow:hidden;
  background:
    linear-gradient(180deg,
      color-mix(in srgb, var(--cream, #fbf2e9) 88%, transparent) 0%,
      color-mix(in srgb, var(--accent-soft, #fff4ec) 90%, transparent) 50%,
      color-mix(in srgb, var(--cream, #fbf2e9) 92%, transparent) 100%),
    url('https://images.unsplash.com/photo-1488646953014-85cb44e25828?w=1800&q=80&auto=format&fit=crop') center/cover no-repeat;
}
.tv-page-hero::before{
  content:"";position:absolute;top:-40px;right:-40px;width:200px;height:200px;border-radius:50%;
  background:linear-gradient(135deg,var(--accent,#f97316),#fbbf24);opacity:.22;z-index:1;
}
.tv-page-hero::after{
  content:"";position:absolute;bottom:-60px;left:-30px;width:240px;height:240px;border-radius:30px;
  background:linear-gradient(135deg,#fb923c,var(--accent-dk,#ea580c));opacity:.16;transform:rotate(20deg);z-index:1;
}
.tv-page-hero-inner{position:relative;z-index:2;max-width:760px;margin:0 auto;}
.tv-page-hero .tv-eyebrow{color:var(--accent,#f97316);font-weight:600;}
.tv-page-title{
  font-family:'Playfair Display',serif;
  font-size:clamp(2.4rem,4.8vw,3.8rem);font-weight:700;
  margin:.4rem 0 .9rem;line-height:1.08;color:var(--ink,#0f172a);letter-spacing:-.01em;
}
.tv-page-title .tv-script{color:var(--accent,#f97316);}
.tv-page-sub{
  color:var(--ink-soft,#475569);font-size:1.05rem;margin:0;line-height:1.65;
  max-width:620px;margin-inline:auto;
}

/* ── Contact page ─────────────────────────────── */
.tv-contact-section{padding-top:3rem;}
.tv-contact-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:2rem;align-items:flex-start;}
.tv-pill{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem 1rem;border:1.5px solid var(--accent-soft,#fff4ec);border-radius:9999px;font-size:.85rem;font-weight:500;color:var(--ink-soft);cursor:pointer;transition:all .15s ease;background:#fff;}
.tv-pill input{display:none;}
.tv-pill:hover{border-color:var(--accent);color:var(--accent);}
.tv-pill:has(input:checked){background:var(--accent);border-color:var(--accent);color:#fff;}
.tv-contact-side{
  background:linear-gradient(180deg,#0f172a 0%,#1e293b 100%);color:#fff;
  padding:2.5rem 2rem;border-radius:18px;
  box-shadow:0 30px 60px -32px rgba(15,23,42,.45);
}
.tv-side-title{font-family:'Playfair Display',serif;font-size:1.5rem;margin:0 0 .5rem;}
.tv-side-sub{color:rgba(255,255,255,.7);font-size:.88rem;margin:0 0 1.75rem;}
.tv-contact-list{list-style:none;padding:0;margin:0 0 1.5rem;display:flex;flex-direction:column;gap:1.25rem;}
.tv-contact-list li{display:flex;gap:.85rem;align-items:flex-start;}
.tv-contact-list li div{font-size:.88rem;line-height:1.55;}
.tv-contact-list li a{color:#fff;}
.tv-contact-list li a:hover{color:var(--accent);}
.tv-contact-list strong{color:#fff;font-weight:600;}
.tv-contact-ico{width:42px;height:42px;border-radius:12px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;color:#fff;}
.tv-contact-ico svg{width:18px;height:18px;}
.tv-side-social{display:flex;gap:.4rem;margin-top:1rem;}
.tv-side-social a{margin:0 !important;width:34px !important;height:34px !important;}

.tv-contact-form{background:#fff;border:1px solid #f1f5f9;border-radius:18px;padding:2.5rem;box-shadow:0 30px 60px -36px rgba(15,23,42,.2);}
.tv-form-title{font-family:'Playfair Display',serif;font-size:1.5rem;margin:0 0 1.5rem;}
.tv-form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem;}
.tv-contact-form label,.tv-auth-form label{display:block;font-size:.82rem;font-weight:500;color:var(--ink-soft);margin-bottom:1rem;}
.tv-contact-form input,.tv-contact-form textarea,
.tv-auth-form input{
  display:block;width:100%;margin-top:.4rem;
  padding:.7rem .9rem;border:1px solid #e2e8f0;border-radius:10px;
  font:inherit;color:var(--ink);background:#fff;outline:none;
  transition:border-color .15s ease,box-shadow .15s ease;
}
.tv-contact-form input:focus,.tv-contact-form textarea:focus,
.tv-auth-form input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(249,115,22,.15);}
.tv-contact-form textarea{resize:vertical;min-height:120px;}
.tv-form-btn{
  display:inline-flex;align-items:center;gap:.4rem;
  background:linear-gradient(135deg,var(--accent),var(--accent-dk));color:#fff;
  border:0;border-radius:9999px;padding:.85rem 1.75rem;
  font:inherit;font-weight:600;font-size:.92rem;cursor:pointer;
  box-shadow:0 14px 30px -14px rgba(249,115,22,.55);
  transition:transform .15s ease;
}
.tv-form-btn:hover{transform:translateY(-1px);}
.tv-form-btn--block{width:100%;justify-content:center;margin-top:.5rem;}
.tv-form-btn--ghost{background:#fff7ed;color:var(--accent);border:1px solid #fed7aa;box-shadow:none;}

/* ── Auth pages ───────────────────────────────── */
.tv-auth{padding:4rem 0;background:linear-gradient(180deg,#fff 0%,#fff7ed 100%);}
.tv-auth-grid{display:grid;grid-template-columns:1fr 1fr;gap:2rem;align-items:stretch;max-width:1080px;margin:0 auto;}
.tv-auth-side{position:relative;border-radius:24px;overflow:hidden;min-height:560px;color:#fff;}
.tv-auth-side-bg{
  position:absolute;inset:0;
  background:
    radial-gradient(circle at 30% 20%,rgba(255,255,255,.18) 0%,transparent 50%),
    linear-gradient(135deg, color-mix(in srgb, var(--primary-dark, #c2410c) 90%, #000) 0%,
                            color-mix(in srgb, var(--primary, #f97316) 70%, transparent) 55%,
                            rgba(15,23,42,.55) 100%),
    url('https://images.unsplash.com/photo-1469854523086-cc02fe5d8800?w=1400&q=80&auto=format&fit=crop') center/cover no-repeat;
}
.tv-auth-side--alt .tv-auth-side-bg{
  background:
    radial-gradient(circle at 70% 30%,rgba(255,255,255,.18) 0%,transparent 50%),
    linear-gradient(135deg, rgba(12,74,110,.92) 0%, rgba(14,116,144,.78) 50%, rgba(15,23,42,.55) 100%),
    url('https://images.unsplash.com/photo-1507525428034-b723cf961d3e?w=1400&q=80&auto=format&fit=crop') center/cover no-repeat;
}
.tv-auth-side-bg::after{
  content:"";position:absolute;left:-30px;top:30%;width:200px;height:200px;border-radius:50%;
  background:rgba(255,255,255,.08);
}
.tv-auth-side-inner{position:relative;padding:3rem 2.5rem;height:100%;display:flex;flex-direction:column;justify-content:center;}
.tv-auth-side-title{font-family:'Playfair Display',serif;font-size:clamp(1.8rem,3vw,2.4rem);font-weight:700;margin:.5rem 0 1rem;line-height:1.2;}
.tv-auth-side-sub{font-size:.95rem;opacity:.85;margin:0 0 2rem;line-height:1.65;}
.tv-auth-perks{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.65rem;font-size:.92rem;}
.tv-auth-card{background:#fff;border-radius:24px;padding:3rem 2.5rem;box-shadow:0 30px 60px -32px rgba(15,23,42,.25);display:flex;flex-direction:column;justify-content:center;}
.tv-auth-title{font-family:'Playfair Display',serif;font-size:clamp(2rem,3.5vw,2.6rem);font-weight:700;margin:0 0 .5rem;line-height:1.1;}
.tv-auth-sub{color:var(--ink-soft);font-size:.92rem;margin:0 0 2rem;}
.tv-auth-form label{margin-bottom:1rem;}
.tv-auth-row{display:flex;justify-content:space-between;align-items:center;font-size:.82rem;margin:.25rem 0 1.25rem;}
.tv-auth-check{display:inline-flex;align-items:center;gap:.4rem;color:var(--ink-soft);}
.tv-auth-check input{width:auto;margin:0;}
.tv-auth-link{color:var(--accent);font-weight:500;}
.tv-auth-alt{text-align:center;font-size:.88rem;color:var(--ink-soft);margin:1.5rem 0 0;}
.tv-auth-alt a{color:var(--accent);font-weight:600;}

/* ── Account dashboard ────────────────────────── */
.tv-account-section{padding-top:3rem;}
.tv-account-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem;}
.tv-account-card{
  background:#fff;border:1px solid #f1f5f9;border-radius:18px;padding:2rem 1.75rem;
  box-shadow:0 22px 40px -32px rgba(15,23,42,.18);
  transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;
  display:flex;flex-direction:column;gap:.6rem;
}
.tv-account-card:hover{transform:translateY(-4px);border-color:#fed7aa;box-shadow:0 30px 50px -28px rgba(249,115,22,.35);}
.tv-account-ico{width:50px;height:50px;border-radius:14px;display:inline-flex;align-items:center;justify-content:center;color:#fff;margin-bottom:.5rem;}
.tv-account-ico svg{width:22px;height:22px;}
.tv-account-card h3{font-size:1.1rem;font-weight:700;margin:0;}
.tv-account-card p{font-size:.85rem;color:var(--ink-soft);margin:0;line-height:1.6;}
.tv-account-arrow{color:var(--accent);font-size:.82rem;font-weight:600;margin-top:auto;padding-top:.5rem;}
.tv-account-card--danger:hover{border-color:#fecaca;box-shadow:0 30px 50px -28px rgba(239,68,68,.3);}
.tv-account-card--danger .tv-account-arrow{color:#dc2626;}

/* ── Search page wrapper ──────────────────────── */
.tv-search-page{padding:2rem 0 4rem;}
.tv-page-hero--search{padding:4rem 0 3rem;}
.tv-search-page .abe-shortcode-wrap{max-width:none;padding:0;}

/* ── 404 ──────────────────────────────────────── */
.tv-404{background:linear-gradient(180deg,#fff7ed 0%,#fafafa 100%);text-align:center;}
.tv-404-inner{max-width:640px;margin:0 auto;}
.tv-404-art{position:relative;display:inline-block;margin-bottom:1.5rem;}
.tv-404-circle{position:absolute;width:160px;height:160px;border-radius:50%;background:linear-gradient(135deg,#fbbf24,#f59e0b);opacity:.25;left:50%;top:50%;transform:translate(-50%,-50%);}
.tv-404-num{position:relative;font-family:'Playfair Display',serif;font-size:clamp(7rem,15vw,11rem);font-weight:800;line-height:1;margin:0;color:var(--ink);}
.tv-404-num .tv-script{font-size:1em;}
.tv-404-plane{position:absolute;color:var(--accent);width:60px;right:-30px;top:20px;transform:rotate(-25deg);}
.tv-404-plane svg{width:100%;height:auto;}
.tv-404-title{font-family:'Playfair Display',serif;font-size:1.5rem;margin:1rem 0 .5rem;}
.tv-404-sub{color:var(--ink-soft);margin:0 auto 2rem;max-width:480px;}
.tv-404-actions{display:flex;gap:.75rem;justify-content:center;flex-wrap:wrap;}

/* ── Flash ────────────────────────────────────── */
.flash{padding:.85rem 1.25rem;border-radius:8px;margin:1rem auto;max-width:1200px;font-size:.88rem;}
.flash-success{background:#ecfdf5;color:#065f46;border:1px solid #a7f3d0;}
.flash-error{background:#fef2f2;color:#991b1b;border:1px solid #fecaca;}
.flash-info{background:#eff6ff;color:#1e3a8a;border:1px solid #bfdbfe;}

/* ── Responsive ───────────────────────────────── */
@media (max-width:1080px){
  .tv-nav{gap:1rem;}
  .tv-nav a{font-size:.85rem;}
  .tv-dest-row{grid-template-columns:repeat(3,1fr);}
  .tv-believe-grid,.tv-partners-row{grid-template-columns:repeat(3,1fr);}
  .tv-footer-grid{grid-template-columns:1fr 1fr;}
  .tv-account-grid{grid-template-columns:repeat(2,1fr);}
  .tv-contact-grid,.tv-auth-grid{grid-template-columns:1fr;}
  .tv-auth-side{min-height:auto;}
}
@media (max-width:880px){
  .tv-nav{display:none;}
  .tv-hero-row,.tv-app-row{grid-template-columns:1fr;}
  .tv-hero-collage{height:340px;}
  .tv-benefit-grid,.tv-pkg-grid{grid-template-columns:1fr;}
  .tv-section-head{flex-direction:column;align-items:flex-start;}
  .tv-form-row{grid-template-columns:1fr;}
  .tv-account-grid{grid-template-columns:1fr;}
  .tv-contact-form,.tv-contact-side,.tv-auth-card{padding:1.75rem;}
}
@media (max-width:560px){
  .tv-section{padding:3rem 0;}
  .tv-dest-row,.tv-believe-grid,.tv-partners-row{grid-template-columns:repeat(2,1fr);}
  .tv-footer-grid{grid-template-columns:1fr;}
  .tv-header-row{height:60px;}
  .tv-help-btn span,.tv-btn--ghost{display:none;}
  .tv-page-hero{padding:3rem 0 2rem;}
}

/* ───────── New Traveller home sections ───────── */

/* Most Loved Destinations — light-blue rounded card with carousel */
.tv-loved-card{
  padding:3rem 0;
}
.tv-loved-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1.5rem;flex-wrap:wrap;margin-bottom:2rem;}
.tv-loved-head .tv-eyebrow{color:#475569;font-size:.95rem;font-weight:500;margin-bottom:.5rem;text-transform:none;letter-spacing:0;}
.tv-loved-title{
  font-family:'Playfair Display',serif;font-weight:700;font-size:clamp(1.6rem,2.6vw,2.2rem);
  line-height:1.2;color:#0f172a;margin:0;
}
.tv-loved-nav{display:flex;gap:.5rem;}
.tv-loved-arrow{
  width:42px;height:42px;border-radius:50%;background:var(--primary);color:#fff;
  border:0;font-size:1.1rem;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;
}
.tv-loved-arrow:hover{background:var(--primary-dark);}
/* Horizontal scroller — flex row instead of grid so the arrow JS
   can scroll it. Each tile is a fixed slice of the row, so prev/next
   advance one card at a time. Scrollbar hidden for a clean look. */
.tv-loved-grid{
  display:flex;gap:1.5rem;
  overflow-x:auto;scroll-behavior:smooth;
  scroll-snap-type:x mandatory;
  scrollbar-width:none;
  padding-bottom:.25rem;
}
.tv-loved-grid::-webkit-scrollbar{display:none;}
/* Section frame — soft lavender card behind the carousel. */
.tv-loved{
  background:#ecf5ff;
  margin:30px auto;
  padding:0;
  border-radius:22px;
}
.tv-loved-tile{
  position:relative;border-radius:18px;overflow:visible;
  flex:0 0 calc((100% - 3rem) / 3);
  scroll-snap-align:start;
  min-width:280px;
}
.tv-loved-img{
  height:340px;border-radius:18px;background-size:cover;background-position:center;
  position:relative;
}
/* Soft scoop masks at the top-right of each tile so the arrow chip
   sits in a notched corner rather than against a hard image edge.
   Box-shadows project the card's lavender background colour
   (#ecf5ff) onto the rounded mask so the cutout reads as a smooth
   arc. */
.tv-loved-img::after{
  border-radius:0 30px;
  top:75px;right:0;
  width:60px;height:60px;
  content:'';position:absolute;z-index:99999999;
  background:transparent;
  box-shadow:15px -7px #ecf5ff;
}
.tv-loved-img::before{
  border-radius:0 30px;
  top:0;right:75px;
  width:60px;height:60px;
  content:'';position:absolute;z-index:99999999;
  background:transparent;
  box-shadow:7px -29px #ecf5ff;
}
/* Anchored to the very top-right corner of the image; the lavender
   border + offset shadow paint a "frame" around the chip that aligns
   with the ::before/::after scoop masks on the image. */
.tv-loved-arrow-btn{
  padding:18px;
  position:absolute;top:0;right:0;
  width:75px;height:74px;
  border-radius:24px;
  background:var(--primary);color:#fff;
  font-size:39px;font-weight:300;
  display:inline-flex;align-items:center;justify-content:center;
  text-decoration:none;
  border:8px solid #ecf5ff;
  box-shadow:13px -13px 0px 13px #ecf5ff;
}
.tv-loved-foot{padding:1rem .25rem 0;}
.tv-loved-foot-row{display:flex;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.5rem;}
.tv-loved-name{font-size:1.05rem;font-weight:700;color:#0f172a;}
.tv-loved-price{color:var(--primary);font-weight:700;font-size:1.05rem;}
.tv-loved-meta{color:#64748b;font-size:.82rem;flex-wrap:wrap;gap:.5rem;}
/* Book-now pill — solid brand colour, rounded, right-aligned. Matches
   the reference card: title+price on row 1, date+loc+pill on row 2. */
.tv-loved-cta{
  display:inline-flex;align-items:center;gap:.3rem;
  background:var(--primary);color:#fff;
  padding:.5rem .95rem;border-radius:9999px;
  font-size:.82rem;font-weight:600;text-decoration:none;
  margin-left:auto;
  box-shadow:0 8px 18px -10px rgba(15,23,42,.45);
  transition:background .15s ease,transform .15s ease;
}
.tv-loved-cta:hover{background:var(--primary-dark);transform:translateY(-1px);}

/* Exclusive Offers Just For You */
.tv-offers-head{display:grid;grid-template-columns:1.5fr auto;gap:2rem;margin-bottom:2rem;align-items:flex-start;}
.tv-offers-title{
  font-family:'Playfair Display',serif;font-weight:700;font-size:clamp(1.6rem,2.6vw,2.2rem);
  margin:0 0 .75rem;color:#0f172a;
}
.tv-offers-sub{color:#475569;font-size:.95rem;line-height:1.6;margin:0;max-width:540px;}
.tv-offers-tabs{display:flex;gap:.5rem;align-self:center;}
.tv-offers-tab{
  background:#0f172a;color:#fff;border:0;border-radius:9999px;padding:.6rem 1.4rem;
  font-size:.9rem;font-weight:600;cursor:pointer;
}
.tv-offers-tab.active{background:var(--primary);}
/* Tab panels — only .is-active is visible. JS toggles the class
   when a .tv-offers-tab is clicked. */
.tv-offers-grid{display:none;grid-template-columns:1.4fr 1fr;gap:1.5rem;}
.tv-offers-grid.is-active{display:grid;}
.tv-offer-tile{
  display:block;border-radius:18px;background-size:cover;background-position:center;
  position:relative;text-decoration:none;color:#fff;overflow:hidden;
  min-height:280px;
}
.tv-offer-tile--big{min-height:560px;}
.tv-offer-foot{
  position:absolute;left:1.25rem;bottom:1rem;
  background:rgba(0,0,0,.45);border-radius:8px;padding:.55rem .85rem;
  color:#fff;
}
.tv-offer-foot strong{display:block;font-size:1rem;}
.tv-offer-foot span{font-size:.78rem;opacity:.85;}
.tv-offer-stack{display:flex;flex-direction:column;gap:1.5rem;}
.tv-offer-stack .tv-offer-tile{flex:1;}
.tv-offer-cap{padding:.5rem .25rem 0;color:#0f172a;}
.tv-offer-cap strong{display:block;font-size:1rem;}
.tv-offer-cap span{font-size:.82rem;color:#64748b;}

/* Testimonials */
/* Section frame — light blue card around the testimonial pair. */
.tv-testi{
  background:#f1f7ff;
  padding:0;
  border-radius:20px;
}
.tv-testi-card{padding:3rem clamp(1.5rem,3vw,3rem);max-width:1200px;margin:0 auto;}
.tv-testi-head{
  display:grid;grid-template-columns:1.4fr 1fr auto;gap:2rem;margin-bottom:2rem;align-items:flex-start;
}
.tv-testi-head .tv-eyebrow{color:#475569;font-size:.95rem;font-weight:500;margin-bottom:.5rem;text-transform:none;letter-spacing:0;}
.tv-testi-title{
  font-family:'Playfair Display',serif;font-weight:700;font-size:clamp(1.6rem,2.6vw,2.2rem);
  margin:0;color:#0f172a;line-height:1.25;
}
.tv-testi-real strong{display:block;font-size:1.1rem;font-weight:700;color:#0f172a;margin-bottom:.35rem;}
.tv-testi-real p{font-size:.92rem;color:#475569;margin:0;line-height:1.55;}
.tv-testi-trust{display:flex;flex-direction:column;align-items:flex-start;gap:.25rem;}
.tv-testi-trust strong{color:#00b67a;font-size:1rem;}
.tv-testi-stars{color:#00b67a;font-size:1.4rem;letter-spacing:.1em;}
.tv-testi-body{display:grid;grid-template-columns:1fr 1.2fr;gap:2rem;align-items:center;}
.tv-testi-illu{
  border-radius:20px;overflow:hidden;display:flex;align-items:center;justify-content:center;
}
.tv-testi-illu img{width:100%;height:auto;display:block;border-radius:20px;}
/* Slider — quotes stack absolutely so we can crossfade between them.
   Wrapper takes the height of the active slide via min-height. */
.tv-testi-slider{
  position:relative;min-height:280px;
}
.tv-testi-quote{
  background:#fff;border-radius:18px;padding:2.25rem;margin:0;position:relative;
  box-shadow:0 18px 36px -16px rgba(15,23,42,.18),0 4px 12px -6px rgba(15,23,42,.08);
}
/* Slides — only .is-active is visible; others fade out absolutely so
   the wrapper's height matches the active slide. */
.tv-testi-slide{
  position:absolute;inset:0;
  opacity:0;visibility:hidden;
  transition:opacity .4s ease,visibility 0s linear .4s;
}
.tv-testi-slide.is-active{
  position:relative;opacity:1;visibility:visible;
  transition:opacity .4s ease;
}
/* Dots row — small grey pills, brand-coloured for the active one. */
.tv-testi-dots{
  position:absolute;left:0;right:0;bottom:-1.75rem;
  display:flex;justify-content:center;gap:.45rem;
}
.tv-testi-dots button{
  width:8px;height:8px;border-radius:50%;
  background:rgba(15,23,42,.18);border:0;padding:0;cursor:pointer;
  transition:background .2s ease,width .2s ease;
}
.tv-testi-dots button.is-active{background:var(--primary);width:24px;border-radius:9999px;}
.tv-testi-qmark{
  display:inline-block;background:var(--primary);color:#fff;border-radius:50%;
  width:34px;height:34px;text-align:center;line-height:1;font-size:1.6rem;font-weight:700;
  padding-top:6px;margin-bottom:1rem;
}
.tv-testi-quote p{font-size:1rem;line-height:1.6;color:#0f172a;margin:0 0 1.25rem;}
.tv-testi-author{display:flex;align-items:center;gap:.85rem;color:#0f172a;}
.tv-testi-avatar img{width:48px;height:48px;border-radius:50%;object-fit:cover;}
.tv-testi-author strong{display:block;font-weight:700;}
.tv-testi-author small{display:block;color:#64748b;font-size:.82rem;}

/* Find the best deals */
.tv-deals-card{background:#fff;border:1px solid #e2e8f0;border-radius:24px;padding:2.5rem clamp(1.5rem,3vw,3rem);max-width:1200px;margin:0 auto;}
.tv-deals-title{font-family:'Playfair Display',serif;font-weight:700;font-size:clamp(1.6rem,2.6vw,2rem);color:#0f172a;margin:0 0 2rem;}
.tv-deals-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem;}
.tv-deal-tile{
  display:block;text-decoration:none;color:#0f172a;
  transition:transform .25s ease;
}
.tv-deal-img{
  position:relative;
  height:240px;border-radius:18px;background-size:cover;background-position:center;
  margin-bottom:1rem;overflow:hidden;
  box-shadow:0 8px 24px -10px rgba(15,23,42,.18);
  transition:box-shadow .25s ease,transform .25s ease;
}
/* Hover state — softer lift + deeper shadow + arrow chip fades in. */
.tv-deal-tile:hover .tv-deal-img{
  transform:translateY(-4px);
  box-shadow:0 18px 36px -14px rgba(37,99,235,.35),0 4px 12px -6px rgba(15,23,42,.18);
}
/* Blue arrow chip — sits centred over the image, hidden until hover. */
.tv-deal-arrow{
  position:absolute;left:50%;top:50%;
  transform:translate(-50%,-50%) scale(.8);
  width:54px;height:54px;border-radius:50%;
  background:#fff;color:var(--primary);
  display:inline-flex;align-items:center;justify-content:center;
  box-shadow:0 8px 22px rgba(15,23,42,.18);
  opacity:0;transition:opacity .2s ease,transform .25s ease;
  pointer-events:none;
}
.tv-deal-arrow svg{width:22px;height:22px;}
.tv-deal-tile:hover .tv-deal-arrow{opacity:1;transform:translate(-50%,-50%) scale(1);}
.tv-deal-tile strong{font-size:1.05rem;font-weight:700;transition:color .2s ease;}
.tv-deal-tile:hover strong{color:var(--primary);}

/* Easier Directly From The Application — phone mockups */
.tv-app{padding:5rem 0;}
.tv-app-row{
  display:grid;grid-template-columns:1.1fr 1fr;gap:3rem;align-items:center;
}
.tv-app-text-card{
  background:#ECF5FF;border-radius:32px;padding:3rem;position:relative;z-index:1;
  margin:.75rem 0 0 .75rem;
}
/* Stacked back-card — same lavender, offset to top-left so it peeks
   out as a soft second layer behind the foreground card. */
.tv-app-text-card::before{
  content:"";position:absolute;
  inset:-.75rem -.75rem auto auto;
  width:100%;height:100%;
  background:#dbeafe;border-radius:32px;z-index:-1;
  top:-.75rem;left:-.75rem;right:auto;
}
.tv-app-title{font-family:'Playfair Display',serif;font-weight:700;font-size:clamp(2rem,3.6vw,2.8rem);color:#0f172a;margin:0 0 1.25rem;line-height:1.15;}
.tv-app-sub{color:#475569;font-size:.95rem;line-height:1.65;margin:0 0 1.75rem;max-width:480px;}
.tv-app-stores{display:flex;gap:1rem;flex-wrap:wrap;}
.tv-app-store{
  display:inline-flex;align-items:center;gap:.85rem;
  background:linear-gradient(135deg,#a8c5ff 0%,#7d9eff 100%);
  color:#fff;text-decoration:none;
  padding:.5rem 1.5rem .5rem .5rem;
  border-radius:9999px;
  box-shadow:0 10px 24px -10px rgba(125,158,255,.55);
  transition:transform .15s ease,box-shadow .15s ease;
}
.tv-app-store:hover{transform:translateY(-2px);box-shadow:0 14px 30px -10px rgba(125,158,255,.7);}
.tv-app-store-ico{
  width:46px;height:46px;border-radius:50%;background:#fff;
  display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;
}
.tv-app-store-text{display:flex;flex-direction:column;line-height:1.15;}
.tv-app-store-text small{font-size:.7rem;color:rgba(255,255,255,.85);font-weight:500;}
.tv-app-store-text strong{font-size:1rem;color:#fff;font-weight:700;}
.tv-app-phones{
  position:relative;display:flex;justify-content:center;align-items:center;
}
.tv-app-phones-img{
  width:100%;max-width:560px;height:auto;display:block;
}

/* ── Final responsive pass ─────────────────────
   Page-wide overflow safety + 3 progressive breakpoints. */
html,body{overflow-x:hidden;}

@media (max-width:900px){
  .tv-loved-grid,.tv-deals-grid{grid-template-columns:1fr;}
  /* Tab-panel grids: keep .display rule via .is-active on the
     .tv-offers-grid; just collapse to one column. */
  .tv-offers-grid.is-active{grid-template-columns:1fr;}
  .tv-offer-tile--big{min-height:300px;}
  .tv-offers-head{grid-template-columns:1fr;gap:1.25rem;}
  .tv-offers-tabs{justify-content:flex-start;}
  .tv-testi-head{grid-template-columns:1fr;}
  .tv-testi-body{grid-template-columns:1fr;}
  .tv-app-row{grid-template-columns:1fr;}
  .tv-app-phones-img{max-width:380px;}
  /* Loved-card carousel head wraps on tablet too. */
  .tv-loved-head{flex-direction:column;align-items:flex-start;}
  .tv-loved-tile{min-width:240px;}
  /* Footer card stacks. */
  .tv-footer-top{grid-template-columns:1fr;}
  .tv-footer-bottom-row{grid-template-columns:1fr;text-align:center;}
  .tv-footer-copy,.tv-footer-social,.tv-footer-pay{justify-self:center;}
  .tv-footer-nav{gap:1.25rem;font-size:.9rem;}
  .tv-footer-newsletter{max-width:none;}
  /* Header — nav stacks below brand on tablet. */
  .tv-header-row{flex-wrap:wrap;}
  .tv-nav{order:3;width:100%;justify-content:flex-start;gap:1rem;font-size:.85rem;}
  /* Hero title clamps tighter. */
  .tv-hero-title{font-size:clamp(1.6rem,4vw,2.6rem);}
  .tv-hero-row{grid-template-columns:1fr;gap:1.5rem;}
  .tv-hero-side{align-items:flex-start;}
  .tv-howit{align-self:flex-start;}
}
@media (max-width:560px){
  .tv-container{padding:0 1rem;}
  .tv-section{padding:2rem 0;}
  /* Hero strips down on phones — drop the absolute header overlap
     so the page reads top-down. */
  .tv-header{position:relative;background:#0a1933;}
  .tv-header-cutout{display:none;}
  .tv-brand,.tv-brand .brand-text{color:#fff;}
  .tv-brand .brand-img,.tv-brand img{filter:brightness(0) invert(1);}
  .tv-hero{padding:2rem 0 3rem;border-radius:0;}
  .tv-hero-title{font-size:clamp(1.4rem,7vw,2rem);}
  .tv-hero-sub{font-size:.9rem;}
  .tv-howit{width:100px;height:100px;}
  .tv-howit-play{width:42px;height:42px;}
  /* Trip tabs on phones. */
  .tv-offers-title,.tv-loved-title,.tv-testi-title,
  .tv-deals-title,.tv-app-title{font-size:clamp(1.4rem,5.5vw,1.8rem);}
  .tv-offers-tabs{flex-wrap:wrap;}
  .tv-offers-tab{font-size:.82rem;padding:.5rem 1rem;}
  /* Stack the offers-stack vertically (was already column flex). */
  .tv-offer-stack .tv-offer-tile{min-height:200px;}
  .tv-offer-tile--big{min-height:240px;}
  /* Loved card peek-arrow buttons smaller. */
  .tv-loved-arrow,.tv-loved-arrow-btn{width:36px;height:36px;}
  .tv-loved-img{height:240px;}
  /* Testi: side-by-side fall to stacked. */
  .tv-testi-card{padding:2rem 1rem;}
  .tv-testi-quote{padding:1.5rem;}
  .tv-testi-illu img{max-height:240px;width:auto;margin:0 auto;}
  /* Deals tile heights tighter. */
  .tv-deal-img{height:200px;}
  .tv-deals-card{padding:1.5rem 1rem;}
  /* App card padding tighter; phones-img caps smaller. */
  .tv-app-text-card{padding:2rem 1.5rem;border-radius:24px;}
  .tv-app-text-card::before{border-radius:24px;}
  .tv-app-phones-img{max-width:300px;}
  .tv-app-store{padding:.4rem 1.25rem .4rem .4rem;}
  .tv-app-store-ico{width:38px;height:38px;}
  .tv-app-store-text strong{font-size:.88rem;}
  /* Footer card padding. */
  .tv-footer-card{padding:2rem 1.25rem 1.25rem;border-radius:18px;}
  .tv-footer-tagline{font-size:1rem;}
  .tv-footer-nav{gap:.85rem;font-size:.82rem;}
  .tv-footer-newsletter{padding:.35rem .35rem .35rem 1rem;}
  .tv-footer-newsletter button{padding:.5rem 1rem;font-size:.85rem;}
}
@media (max-width:380px){
  .tv-container{padding:0 .85rem;}
  .tv-hero-title{font-size:1.4rem;}
  .tv-offers-tab{font-size:.75rem;padding:.4rem .75rem;}
  .tv-loved-tile{min-width:200px;}
}

/* ── Final responsive pass — every Traveller section ──────────
   Covers gaps left by the section-specific @media blocks above:
   tablet breakpoint (1080), header collapse (880), section
   stacking (768), phone (560), tiny phone (380). All targeted at
   .tv-* classes only so no theme bleed. */
html,body{overflow-x:hidden;}

@media (max-width:1080px){
  /* Hero side panel slides closer to the title on tablet. */
  .tv-hero-row{gap:1.5rem;}
  .tv-howit{width:120px;height:120px;}
  /* Loved cards: drop to 2 visible per scroll. */
  .tv-loved-tile{flex:0 0 calc((100% - 1.5rem) / 2);}
  /* Offers grid: still wide on tablet but tighter gap. */
  .tv-offers-grid.is-active{gap:1rem;}
  .tv-offer-tile--big{min-height:440px;}
  /* Deals grid: 2 col on tablet, 3 on desktop. */
  .tv-deals-grid{grid-template-columns:repeat(2,1fr);}
}

@media (max-width:900px){
  /* Header: hamburger appears + nav becomes a slide-in drawer from the
     right. Help & Support pill keeps its spot in the row; brand on the
     left, hamburger on the far right. */
  .tv-burger{display:inline-flex;}
  .tv-header-row{justify-content:space-between;flex-wrap:nowrap;}
  .tv-help-btn{display:none;}
  .tv-nav{
    position:fixed;top:0;right:0;bottom:0;
    width:min(85vw,340px);
    background:#0a1933;
    transform:translateX(100%);
    transition:transform .3s ease;
    z-index:60;
    flex-direction:column;
    align-items:stretch;justify-content:flex-start;
    padding:5rem 1.5rem 2rem;
    gap:.5rem;font-size:1rem;
    box-shadow:-12px 0 32px rgba(0,0,0,.35);
    overflow-y:auto;
  }
  .tv-nav a{
    padding:.85rem 1rem;border-radius:10px;
    color:rgba(255,255,255,.92);
    transition:background .15s ease,color .15s ease;
    font-size:.95rem;
  }
  .tv-nav a:hover{background:rgba(255,255,255,.08);color:#fff;}
  .tv-nav a.active{background:rgba(255,255,255,.12);color:#fff;}
  .tv-nav a svg{width:18px;height:18px;}
  .tv-header.tv-drawer-open .tv-nav{transform:translateX(0);}
  /* Help & Support gets re-injected as the last drawer item via the
     header HTML — but if it ends up hidden by the rule above we keep
     it accessible by adding a CSS-pulled "in-drawer" variant. */
  .tv-header.tv-drawer-open .tv-help-btn{
    display:inline-flex;
    margin-top:1rem;justify-content:center;
    position:fixed;
    bottom:1.5rem;right:1.5rem;
    width:auto;z-index:65;
  }
  /* Hero side stacks under the title. */
  .tv-hero-row{grid-template-columns:1fr;}
  .tv-hero-side{align-items:flex-start;}
  .tv-howit{align-self:flex-start;width:110px;height:110px;}
  /* Section-frame margins shrink on tablet. */
  .tv-loved,.tv-testi{margin:1rem auto;}
  /* Loved arrow chip — cancel the framed shadow since the lavender
     section is narrower; just the round chip on the photo. */
  .tv-loved-arrow-btn{
    width:44px;height:44px;padding:0;border:0;
    border-radius:14px;font-size:1.4rem;
    box-shadow:0 6px 16px rgba(15,23,42,.18);
  }
  .tv-loved-img::before,.tv-loved-img::after{display:none;}
  /* Offers + testi + deals + app heads stack. */
  .tv-offers-head,.tv-testi-head,.tv-loved-head{
    grid-template-columns:1fr;flex-direction:column;align-items:flex-start;gap:1.25rem;
  }
  .tv-testi-trust{flex-direction:row;align-items:center;}
  .tv-testi-body{grid-template-columns:1fr;}
  .tv-app-row{grid-template-columns:1fr;}
  .tv-app-phones-img{max-width:380px;margin:0 auto;}
  /* Footer card stacks. */
  .tv-footer-top{grid-template-columns:1fr;}
  .tv-footer-bottom-row{grid-template-columns:1fr;text-align:center;}
  .tv-footer-copy,.tv-footer-social,.tv-footer-pay{justify-self:center;}
  .tv-footer-newsletter{max-width:none;}
  .tv-footer-nav{gap:1.25rem;font-size:.9rem;}
}

@media (max-width:768px){
  /* Container padding tightens. */
  .tv-container{padding:0 1rem;}
  .tv-section{padding:2rem 0;}
  /* Hero adjustments for portrait phones. */
  .tv-hero{padding:6rem 0 3rem;}
  .tv-hero-title{font-size:clamp(1.5rem,5.5vw,2.4rem);}
  .tv-hero-sub{font-size:.95rem;}
  .tv-howit{width:96px;height:96px;}
  .tv-howit-play{width:38px;height:38px;}
  /* Loved + Offers + Deals grids — single column. */
  .tv-loved-grid,.tv-deals-grid{grid-template-columns:1fr;}
  .tv-offers-grid.is-active{grid-template-columns:1fr;}
  .tv-offer-tile--big{min-height:280px;}
  .tv-loved-tile{flex:0 0 100%;min-width:0;}
  /* Section titles clamp down. */
  .tv-loved-title,.tv-offers-title,.tv-testi-title,
  .tv-deals-title,.tv-app-title{font-size:clamp(1.4rem,5.5vw,1.8rem);}
  /* Card paddings tighter. */
  .tv-testi-card,.tv-deals-card{padding:1.5rem 1rem;}
  .tv-app-text-card{padding:2rem 1.5rem;border-radius:24px;margin:0;}
  .tv-app-text-card::before{display:none;}
  .tv-deal-img{height:200px;}
  /* App store buttons full-width. */
  .tv-app-stores{flex-direction:column;gap:.65rem;}
  .tv-app-store{width:100%;justify-content:flex-start;}
  /* Footer card padding tighter. */
  .tv-footer-card{padding:2rem 1.25rem 1.25rem;border-radius:18px;}
  .tv-footer-tagline{font-size:1rem;}
  .tv-footer-newsletter{padding:.35rem .35rem .35rem 1rem;}
  .tv-footer-newsletter button{padding:.5rem 1rem;font-size:.85rem;}
  /* Header on phones — drop the cutout, header goes solid dark. */
  .tv-header{position:relative;background:#0a1933;}
  .tv-header-cutout{display:none;}
  .tv-brand,.tv-brand .brand-text{color:#fff;}
  .tv-brand .brand-img,.tv-brand img{filter:brightness(0) invert(1);}
  .tv-header-row::after,.tv-nav::after{display:none;}
}

@media (max-width:480px){
  .tv-hero-title{font-size:clamp(1.3rem,7vw,1.8rem);}
  /* Trip pills wrap. */
  .tv-offers-tabs{flex-wrap:wrap;}
  /* Testimonial illustration scales down so it doesn't crowd quote. */
  .tv-testi-illu img{max-height:200px;}
  /* Footer pay marks shrink. */
  .tv-footer-pay{font-size:1.05rem;gap:.6rem;}
  .tv-pay-stripe{font-size:1.1rem;}
}