/*
Theme Name: Travelisto
Theme URI: https://travelisto.com/
Author: Travelisto Ltd
Author URI: https://travelisto.com/
Description: Standalone WordPress theme for Travelisto.com — a UK travel agency. Replaces the Wanderers/Mikado theme with a lightweight, mobile-first design. PTS member 6035, ATOL Protected.
Version: 1.2.0
Requires at least: 6.0
Tested up to: 6.7
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: travelisto
Tags: travel, custom-menu, custom-logo, featured-images, threaded-comments, translation-ready
*/

/* =========================================================
   Travelisto — design tokens
   Single source of truth. Used across header, footer, future
   templates. Brand colours, type, spacing, motion.
   ========================================================= */
:root {
	--yellow: #FFCC05;
	--yellow-deep: #E8B800;
	--yellow-soft: #FFFBEA;
	--ink: #111;
	--ink-soft: #2a2a2a;
	--muted: #6b6b6b;
	--paper: #FAFAF7;
	--line: #E6E0D4;
	--white: #fff;
	--display: 'Montserrat', -apple-system, BlinkMacSystemFont, sans-serif;
	--body: 'Montserrat', -apple-system, BlinkMacSystemFont, sans-serif;
	--header-h: 72px;
	--header-h-mobile: 62px;
	--ease: cubic-bezier(.2, .7, .2, 1);
	--container: 1320px;
}

/* =========================================================
   Reset & base
   ========================================================= */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
	font-family: var(--body);
	background: var(--paper);
	color: var(--ink);
	line-height: 1.5;
	overflow-x: hidden;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}
img { max-width: 100%; display: block; height: auto; }
button { font: inherit; cursor: pointer; border: 0; background: 0 0; color: inherit; }
a { color: inherit; text-decoration: none; }
ul { list-style: none; }
input, textarea, select { font: inherit; color: inherit; }

/* Skip link for keyboard users — visible on focus only */
.skip-link.screen-reader-text {
	position: absolute; left: -9999px; top: -9999px;
	background: var(--ink); color: var(--white);
	padding: .8rem 1.2rem;
	font-family: var(--display); font-weight: 600;
	z-index: 999;
}
.skip-link.screen-reader-text:focus {
	left: 1rem; top: 1rem;
}

/* Body lock when overlays are open */
body.menu-open,
body.search-open,
body.enquire-open { overflow: hidden; }

/* =========================================================
   Header — transparent over hero, white on scroll
   Black Tomato pattern.
   ========================================================= */
.tv-header {
	position: fixed; top: 0; left: 0; right: 0;
	z-index: 100;
	background: transparent;
	color: var(--white);
	border-bottom: 1px solid transparent;
	transition: background .25s var(--ease), color .25s var(--ease),
	            border-color .25s var(--ease), box-shadow .25s var(--ease);
}
.tv-header.is-scrolled {
	/* Frosted-glass header on scroll — 60% opacity white + backdrop blur
	   so the page content shows through subtly. Looks more modern than
	   a solid bar. backdrop-filter is supported in all modern browsers;
	   the fallback (no blur) is still legible. */
	background: rgba(255, 255, 255, 0.6);
	backdrop-filter: blur(14px) saturate(160%);
	-webkit-backdrop-filter: blur(14px) saturate(160%);
	color: var(--ink);
	border-bottom-color: var(--line);
	box-shadow: 0 1px 12px -8px rgba(0, 0, 0, .08);
}
/* Force scrolled (frosted) state when any overlay is open */
body.menu-open .tv-header,
body.search-open .tv-header,
body.enquire-open .tv-header {
	background: rgba(255, 255, 255, 0.6);
	backdrop-filter: blur(14px) saturate(160%);
	-webkit-backdrop-filter: blur(14px) saturate(160%);
	color: var(--ink);
	border-bottom-color: var(--line);
}

/* Pages WITHOUT a dark hero default to the scrolled/frosted appearance.
   Transparent-over-hero is opt-in via body.has-transparent-header
   (set by the front page, the homepage template, cruise-line pages,
   blog index, single posts, tailormade, holidays index, V2 hotel
   pages, or any page with _travelisto_transparent_header meta = 1). */
body:not(.has-transparent-header) .tv-header {
	background: rgba(255, 255, 255, 0.6);
	backdrop-filter: blur(14px) saturate(160%);
	-webkit-backdrop-filter: blur(14px) saturate(160%);
	color: var(--ink);
	border-bottom-color: var(--line);
	box-shadow: 0 1px 12px -8px rgba(0, 0, 0, .08);
}
body:not(.has-transparent-header) .tv-brand__logo--light { opacity: 0; }
body:not(.has-transparent-header) .tv-brand__logo--dark  { opacity: 1; }

.tv-bar {
	height: var(--header-h-mobile);
	display: flex; align-items: center;
	padding: 0 .5rem 0 .9rem;
	gap: .3rem;
	max-width: var(--container);
	margin: 0 auto;
}
@media (min-width: 768px) {
	.tv-bar {
		height: var(--header-h);
		padding: 0 1.5rem;
		gap: .5rem;
	}
}

/* === Brand — full logo PNG, swaps yellow→black on scroll === */
.tv-brand {
	display: flex; align-items: center;
	flex-shrink: 0;
	height: 28px;
}
@media (min-width: 768px) {
	.tv-brand { height: 34px; }
}
.tv-brand__logo {
	height: 100%; width: auto;
	display: block;
	transition: opacity .25s var(--ease);
}
.tv-brand__logo--dark {
	position: absolute;
	opacity: 0;
	pointer-events: none;
}
.tv-brand { position: relative; }
.tv-brand__logo--light { opacity: 1; }

.tv-header.is-scrolled .tv-brand__logo--light,
body.menu-open .tv-brand__logo--light,
body.search-open .tv-brand__logo--light,
body.enquire-open .tv-brand__logo--light {
	opacity: 0;
}
.tv-header.is-scrolled .tv-brand__logo--dark,
body.menu-open .tv-brand__logo--dark,
body.search-open .tv-brand__logo--dark,
body.enquire-open .tv-brand__logo--dark {
	opacity: 1;
}

.tv-spacer { flex: 1; }

/* === Search button — stacked icon + label ===
   Always rendered in black regardless of header state — the icon + label
   need to be legible across all backgrounds. The Enquire Now CTA next to
   it (yellow-on-black pill) provides the visual anchor for the header,
   and these monochrome controls sit cleanly alongside it. */
.tv-search-btn {
	display: flex; flex-direction: column;
	align-items: center; justify-content: center;
	gap: .18rem;
	width: 50px; height: 50px;
	padding: .3rem;
	border-radius: 8px;
	background: transparent;
	border: 0;
	color: var(--ink);
	font-family: var(--display); font-weight: 700;
	font-size: .6rem; letter-spacing: .06em;
	text-transform: uppercase;
	transition: background .15s ease;
	flex-shrink: 0;
}
.tv-search-btn:hover { background: rgba(0, 0, 0, .07); }
.tv-header.is-scrolled .tv-search-btn:hover { background: var(--yellow-soft); }
.tv-search-btn svg { width: 19px; height: 19px; }
@media (min-width: 768px) {
	.tv-search-btn { width: 56px; height: 56px; font-size: .65rem; }
	.tv-search-btn svg { width: 20px; height: 20px; }
}

/* === Enquire Now CTA — yellow pill, always yellow === */
.tv-cta {
	display: inline-flex; align-items: center;
	background: var(--yellow); color: var(--ink);
	font-family: var(--display); font-weight: 700;
	font-size: .82rem;
	padding: .6rem .95rem;
	border-radius: 99px;
	letter-spacing: .005em;
	white-space: nowrap;
	box-shadow: 0 1px 0 var(--yellow-deep);
	transition: transform .12s ease, box-shadow .12s ease;
	flex-shrink: 0;
	margin: 0 .15rem;
}
.tv-cta:hover { transform: translateY(-1px); box-shadow: 0 2px 0 var(--yellow-deep); }
.tv-cta:active { transform: translateY(0); box-shadow: 0 1px 0 var(--yellow-deep); }
.tv-cta__short { display: inline; }
.tv-cta__long { display: none; }
@media (min-width: 480px) {
	.tv-cta__short { display: none; }
	.tv-cta__long { display: inline; }
}
@media (min-width: 768px) {
	.tv-cta { padding: .75rem 1.3rem; font-size: .9rem; }
}

/* === Hamburger (right) — animated lines ===
   Always black for legibility across all backgrounds (matches the
   search button treatment). `currentColor` on the lines below picks
   up `color: var(--ink)` set here. */
.tv-hamburger {
	width: 50px; height: 50px;
	display: grid; place-items: center;
	border-radius: 8px;
	position: relative; z-index: 2;
	background: transparent;
	border: 0;
	color: var(--ink);
	transition: background .15s ease;
	flex-shrink: 0;
	cursor: pointer;
}
.tv-hamburger:hover { background: rgba(0, 0, 0, .07); }
.tv-header.is-scrolled .tv-hamburger:hover { background: var(--yellow-soft); }
.tv-hamburger__lines {
	width: 22px; height: 14px;
	position: relative;
}
.tv-hamburger__lines span {
	position: absolute; left: 0; right: 0;
	height: 2px;
	background: currentColor;
	border-radius: 2px;
	transition: transform .3s var(--ease), top .3s var(--ease),
	            opacity .2s ease, background-color .25s var(--ease);
}
.tv-hamburger__lines span:nth-child(1) { top: 1px; }
.tv-hamburger__lines span:nth-child(2) { top: 6px; }
.tv-hamburger__lines span:nth-child(3) { top: 11px; }
body.menu-open .tv-hamburger__lines span:nth-child(1) { top: 6px; transform: rotate(45deg); }
body.menu-open .tv-hamburger__lines span:nth-child(2) { opacity: 0; }
body.menu-open .tv-hamburger__lines span:nth-child(3) { top: 6px; transform: rotate(-45deg); }
@media (min-width: 768px) {
	.tv-hamburger { width: 56px; height: 56px; }
}

/* =========================================================
   Search overlay — slides down from top
   ========================================================= */
.tv-search-overlay {
	position: fixed; top: 0; left: 0; right: 0;
	background: var(--white); color: var(--ink);
	z-index: 101;
	transform: translateY(-100%);
	transition: transform .35s var(--ease);
	border-bottom: 1px solid var(--line);
	box-shadow: 0 8px 32px -16px rgba(0, 0, 0, .15);
}
body.search-open .tv-search-overlay { transform: translateY(0); }
.tv-search-overlay__bar {
	display: flex; align-items: center;
	height: var(--header-h-mobile);
	padding: 0 .5rem 0 1.2rem;
	max-width: var(--container);
	margin: 0 auto;
	gap: .7rem;
}
@media (min-width: 768px) {
	.tv-search-overlay__bar { height: var(--header-h); padding: 0 1.5rem; }
}
.tv-search-overlay__bar svg.icon {
	width: 22px; height: 22px;
	color: var(--muted);
	flex-shrink: 0;
}
.tv-search-overlay__bar input {
	flex: 1; border: 0; background: transparent;
	font-family: var(--display); font-size: 1.1rem; font-weight: 500;
	outline: 0; min-width: 0;
}
@media (min-width: 768px) {
	.tv-search-overlay__bar input { font-size: 1.4rem; }
}
.tv-search-overlay__bar input::placeholder { color: var(--muted); font-weight: 400; }
.tv-search-overlay__close {
	width: 42px; height: 42px;
	display: grid; place-items: center;
	border-radius: 8px;
	transition: background .15s ease;
	flex-shrink: 0;
}
.tv-search-overlay__close:hover { background: var(--yellow-soft); }
.tv-search-overlay__close svg { width: 20px; height: 20px; }
.tv-search-overlay__suggest {
	border-top: 1px solid var(--line);
	padding: 1rem 1.5rem 1.5rem;
	max-width: var(--container);
	margin: 0 auto;
}
.tv-search-overlay__suggest h4 {
	font-family: var(--display); font-size: .7rem; font-weight: 700;
	text-transform: uppercase; letter-spacing: .12em;
	color: var(--muted);
	margin-bottom: .7rem;
}
.tv-search-overlay__chips { display: flex; flex-wrap: wrap; gap: .4rem; }
.tv-search-overlay__chips a {
	display: inline-flex; align-items: center;
	font-family: var(--display); font-size: .8rem; font-weight: 500;
	padding: .4rem .8rem;
	border-radius: 99px;
	background: var(--paper); border: 1px solid var(--line);
	transition: border-color .15s ease, background .15s ease;
}
.tv-search-overlay__chips a:hover { border-color: var(--ink); background: var(--white); }

/* =========================================================
   Hamburger menu — full-screen panel from right
   ========================================================= */
.tv-overlay {
	position: fixed; inset: 0;
	background: var(--white); color: var(--ink);
	z-index: 99;
	transform: translateX(100%);
	transition: transform .35s var(--ease);
	overflow-y: auto;
	-webkit-overflow-scrolling: touch;
}
body.menu-open .tv-overlay { transform: translateX(0); }
.tv-overlay__inner {
	padding: calc(var(--header-h-mobile) + 1.25rem) 1.5rem 3rem;
	max-width: 880px;
	margin: 0 auto;
}
@media (min-width: 768px) {
	.tv-overlay__inner { padding: calc(var(--header-h) + 2rem) 2rem 4rem; }
}
.tv-overlay__eyebrow {
	font-family: var(--display); font-size: .7rem; font-weight: 700;
	text-transform: uppercase; letter-spacing: .18em;
	color: var(--yellow-deep);
	margin-bottom: .6rem;
}
.tv-overlay__heading {
	font-family: var(--display); font-weight: 800;
	font-size: clamp(1.4rem, 5vw, 2rem);
	margin-bottom: 2rem;
	letter-spacing: -.015em; line-height: 1.1;
}
.tv-overlay__nav details { border-bottom: 1px solid var(--line); }
.tv-overlay__nav details:first-child { border-top: 1px solid var(--line); }
.tv-overlay__nav summary {
	display: flex; align-items: center; justify-content: space-between;
	font-family: var(--display); font-size: 1.15rem; font-weight: 600;
	padding: 1.1rem 0;
	cursor: pointer;
	list-style: none;
	letter-spacing: -.01em;
	transition: color .15s ease;
}
.tv-overlay__nav summary:hover { color: var(--yellow-deep); }
.tv-overlay__nav summary::-webkit-details-marker { display: none; }
.tv-overlay__nav summary::after {
	content: '';
	width: 18px; height: 18px;
	background: no-repeat center/contain;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2'><line x1='12' y1='5' x2='12' y2='19'/><line x1='5' y1='12' x2='19' y2='12'/></svg>");
	transition: transform .25s var(--ease);
}
.tv-overlay__nav details[open] summary::after { transform: rotate(45deg); }
.tv-overlay__sub { padding: .2rem 0 1.2rem .25rem; }
.tv-overlay__sub a {
	display: block;
	padding: .55rem 0;
	font-family: var(--body); font-size: .98rem;
	color: var(--ink-soft);
	transition: color .15s ease, padding .15s ease;
}
.tv-overlay__sub a:hover { color: var(--yellow-deep); padding-left: .3rem; }
@media (min-width: 768px) {
	.tv-overlay__sub { display: grid; grid-template-columns: 1fr 1fr; gap: 0 1.5rem; }
}
.tv-overlay__nav .menu-item-no-children > summary::after { display: none; }
.tv-overlay__nav .menu-item-no-children > summary {
	cursor: default;
}
.tv-overlay__nav .menu-item-no-children > summary > a {
	flex: 1; display: block; cursor: pointer;
}

.tv-overlay__trust {
	display: flex; flex-wrap: wrap; gap: 1.2rem;
	font-family: var(--display); font-size: .72rem; font-weight: 600;
	color: var(--muted);
	text-transform: uppercase; letter-spacing: .08em;
	padding: 2rem 0 0;
}
.tv-overlay__trust span {
	display: inline-flex; align-items: center; gap: .4rem;
}
.tv-overlay__trust .star { color: #00b67a; }

/* =========================================================
   Enquire modal — 3 options + form
   ========================================================= */
.tv-enquire {
	position: fixed; inset: 0;
	z-index: 102;
	visibility: hidden; opacity: 0;
	transition: opacity .25s var(--ease), visibility .25s;
}
body.enquire-open .tv-enquire { visibility: visible; opacity: 1; }
.tv-enquire__backdrop {
	position: absolute; inset: 0;
	background: rgba(17, 17, 17, .5);
	backdrop-filter: blur(4px);
	-webkit-backdrop-filter: blur(4px);
}
.tv-enquire__panel {
	position: absolute;
	left: 0; right: 0; bottom: 0;
	background: var(--white); color: var(--ink);
	border-radius: 18px 18px 0 0;
	padding: 1.4rem 1.4rem calc(1.4rem + env(safe-area-inset-bottom));
	max-height: 90vh; overflow-y: auto;
	transform: translateY(100%);
	transition: transform .35s var(--ease);
	box-shadow: 0 -12px 40px -12px rgba(0, 0, 0, .2);
}
body.enquire-open .tv-enquire__panel { transform: translateY(0); }
@media (min-width: 640px) {
	.tv-enquire__panel {
		left: 50%; top: 50%; right: auto; bottom: auto;
		transform: translate(-50%, calc(-50% + 24px));
		width: min(92vw, 460px);
		border-radius: 18px;
		padding: 1.6rem;
	}
	body.enquire-open .tv-enquire__panel { transform: translate(-50%, -50%); }
}
.tv-enquire__handle {
	width: 40px; height: 4px;
	background: var(--line); border-radius: 2px;
	margin: 0 auto .9rem;
}
@media (min-width: 640px) { .tv-enquire__handle { display: none; } }
.tv-enquire__head {
	display: flex; align-items: center; justify-content: space-between;
	margin-bottom: .4rem;
}
.tv-enquire__head h3 {
	font-family: var(--display); font-weight: 800;
	font-size: 1.15rem; letter-spacing: -.01em;
}
.tv-enquire__head button {
	width: 36px; height: 36px;
	display: grid; place-items: center;
	border-radius: 8px;
	transition: background .15s ease;
}
.tv-enquire__head button:hover { background: var(--paper); }
.tv-enquire__head button svg { width: 18px; height: 18px; }
.tv-enquire__lead {
	font-size: .92rem; color: var(--muted);
	margin-bottom: 1.1rem;
}

.tv-enquire__option {
	width: 100%;
	display: flex; align-items: center; gap: 1rem;
	padding: 1rem 1.1rem;
	border: 1px solid var(--line);
	border-radius: 12px;
	margin-bottom: .6rem;
	text-align: left;
	background: var(--white);
	transition: border-color .15s ease, background .15s ease, transform .12s ease;
}
.tv-enquire__option:hover { border-color: var(--ink); background: var(--paper); }
.tv-enquire__option:active { transform: scale(.99); }
.tv-enquire__option__icon {
	width: 42px; height: 42px;
	border-radius: 10px;
	display: grid; place-items: center;
	flex-shrink: 0;
}
.tv-enquire__option--whatsapp .tv-enquire__option__icon { background: #25D366; color: #fff; }
.tv-enquire__option--call .tv-enquire__option__icon { background: var(--ink); color: #fff; }
.tv-enquire__option--message .tv-enquire__option__icon { background: var(--yellow); color: var(--ink); }
.tv-enquire__option__icon svg { width: 20px; height: 20px; }
.tv-enquire__option__text strong {
	display: block;
	font-family: var(--display); font-weight: 700; font-size: .98rem;
	margin-bottom: .1rem; letter-spacing: -.005em;
}
.tv-enquire__option__text small { font-size: .82rem; color: var(--muted); }

.tv-enquire__form {
	margin-top: 1rem; padding-top: 1rem;
	border-top: 1px solid var(--line);
	display: none;
}
.tv-enquire__form.is-open { display: block; }
.tv-enquire__form label {
	display: block;
	font-family: var(--display); font-weight: 600; font-size: .78rem;
	text-transform: uppercase; letter-spacing: .05em;
	color: var(--ink-soft);
	margin-bottom: .3rem; margin-top: .7rem;
}
.tv-enquire__form input,
.tv-enquire__form textarea {
	width: 100%;
	padding: .7rem .85rem;
	border: 1px solid var(--line);
	border-radius: 8px;
	font-family: var(--body); font-size: .95rem;
	background: var(--white);
	outline: 0;
	transition: border-color .15s ease;
}
.tv-enquire__form input:focus,
.tv-enquire__form textarea:focus { border-color: var(--ink); }
.tv-enquire__form textarea { resize: vertical; min-height: 90px; }
.tv-enquire__form button[type=submit] {
	width: 100%;
	background: var(--yellow); color: var(--ink);
	font-family: var(--display); font-weight: 700; font-size: .95rem;
	padding: .9rem;
	border-radius: 99px;
	margin-top: 1rem;
	box-shadow: 0 1px 0 var(--yellow-deep);
	transition: transform .12s ease, box-shadow .12s ease;
}
.tv-enquire__form button[type=submit]:hover {
	transform: translateY(-1px);
	box-shadow: 0 2px 0 var(--yellow-deep);
}
.tv-enquire__form button[type=submit][disabled] {
	opacity: .6; cursor: not-allowed;
	transform: none !important;
}
.tv-enquire__form .tv-enquire__feedback {
	margin-top: 1rem;
	padding: .8rem 1rem;
	border-radius: 8px;
	font-size: .9rem;
	display: none;
}
.tv-enquire__form .tv-enquire__feedback.is-success {
	display: block;
	background: #E8F5EE; color: #0a5e3a;
	border: 1px solid #B8E0CB;
}
.tv-enquire__form .tv-enquire__feedback.is-error {
	display: block;
	background: #FCE8E8; color: #8a1c1c;
	border: 1px solid #F0B8B8;
}

/* =========================================================
   Body offset — push content below fixed header on
   non-hero pages. Pages that use the transparent-over-hero
   pattern should add class="has-transparent-header" to body.
   ========================================================= */
body:not(.has-transparent-header) main,
body:not(.has-transparent-header) .site-main {
	padding-top: var(--header-h-mobile);
}
@media (min-width: 768px) {
	body:not(.has-transparent-header) main,
	body:not(.has-transparent-header) .site-main {
		padding-top: var(--header-h);
	}
}

/* =========================================================
   Footer v2 — mobile-first accordion + premium desktop grid
   (2026-05-18)
   ========================================================= */
.tv-footer {
	background: var(--ink);
	color: rgba(255, 255, 255, .85);
	margin-top: 4rem;
	font-family: var(--body);
}
.tv-footer a { color: inherit; text-decoration: none; }

/* TOP — brand + quick contact */
.tv-footer__top {
	padding: 2.2rem var(--gutter, 1.25rem) 1.5rem;
	border-bottom: 1px solid rgba(255, 255, 255, .08);
}
.tv-footer__top-inner {
	max-width: var(--container);
	margin: 0 auto;
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	gap: 1.4rem;
}
@media (min-width: 768px) {
	.tv-footer__top { padding: 2.6rem 2rem 2rem; }
	.tv-footer__top-inner { gap: 1.6rem; }
}
.tv-footer__brand { min-width: 0; max-width: 36rem; }
.tv-footer__logo { height: auto; width: 160px; max-width: 100%; margin: 0 auto .9rem; display: block; }
.tv-footer__tagline {
	font-weight: 500;
	font-size: .95rem;
	color: rgba(255, 255, 255, .8);
	max-width: 32rem;
	line-height: 1.5;
	margin: 0 auto;
}
.tv-footer__quick {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: .5rem;
	justify-content: center;
}
@media (min-width: 768px) {
	.tv-footer__quick { gap: .6rem; }
}
.tv-footer__quick-btn {
	display: inline-flex; align-items: center; gap: .5rem;
	background: rgba(255, 255, 255, .06);
	border: 1px solid rgba(255, 255, 255, .1);
	border-radius: 999px;
	padding: .55rem .95rem;
	font-weight: 600; font-size: .82rem;
	color: rgba(255, 255, 255, .9);
	letter-spacing: .01em;
	white-space: nowrap;
	transition: background .15s ease, border-color .15s ease, color .15s ease, transform .15s ease;
}
.tv-footer__quick-btn:hover {
	background: var(--yellow);
	border-color: var(--yellow);
	color: #111;
	transform: translateY(-1px);
}
.tv-footer__quick-btn svg { width: 14px; height: 14px; flex-shrink: 0; }

/* COLUMNS — accordion on mobile, 4-up grid at tablet+ */
.tv-footer__cols {
	padding: .5rem var(--gutter, 1.25rem) 1.2rem;
}
@media (min-width: 768px) {
	.tv-footer__cols { padding: 2rem 2rem 2.2rem; }
}
.tv-footer__cols-inner {
	max-width: var(--container);
	margin: 0 auto;
}
@media (min-width: 768px) {
	.tv-footer__cols-inner {
		display: grid;
		grid-template-columns: repeat(4, 1fr);
		gap: 2rem;
	}
}

.tv-footer__col {
	border-bottom: 1px solid rgba(255, 255, 255, .08);
}
.tv-footer__col:last-child { border-bottom: 0; }
@media (min-width: 768px) {
	.tv-footer__col { border: 0; }
}

.tv-footer__col-head {
	cursor: pointer;
	list-style: none;
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 1rem 0;
	font-size: .82rem;
	font-weight: 700;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: #fff;
	transition: color .15s ease;
}
.tv-footer__col-head::-webkit-details-marker { display: none; }
.tv-footer__col-head:hover { color: var(--yellow); }
.tv-footer__col-chev {
	width: 11px; height: 11px;
	border-right: 2px solid currentColor;
	border-bottom: 2px solid currentColor;
	transform: rotate(45deg);
	transition: transform .25s var(--ease);
	flex-shrink: 0;
}
.tv-footer__col[open] > .tv-footer__col-head > .tv-footer__col-chev {
	transform: rotate(-135deg);
}
@media (min-width: 768px) {
	.tv-footer__col-head {
		cursor: default;
		pointer-events: none;
		padding: 0 0 .9rem;
		font-size: .72rem;
		color: var(--yellow);
		letter-spacing: .14em;
	}
	.tv-footer__col-chev { display: none; }
}

/* At tablet+ a small JS in footer.php sets the `open` attribute on
   each .tv-footer__col so the <details> render their content in
   the 4-up grid. Forcing CSS-only `display:block` on the inner
   list was unreliable across browsers — the JS toggle is more
   robust and adds zero perceived weight (~150 bytes). */

.tv-footer__col-list {
	list-style: none;
	margin: 0 0 1rem;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: .55rem;
	font-size: .95rem;
}
@media (min-width: 768px) {
	.tv-footer__col-list { margin: 0; gap: .6rem; font-size: .88rem; }
}
.tv-footer__col-list a {
	color: rgba(255, 255, 255, .72);
	padding: .15rem 0;
	display: inline-block;
	transition: color .15s ease;
}
.tv-footer__col-list a:hover { color: var(--yellow); }
.tv-footer__col-text {
	color: rgba(255, 255, 255, .55);
	font-size: .85rem;
	line-height: 1.45;
	font-style: italic;
}

/* BOOK WITH CONFIDENCE — credentials band (v3: above columns, single
   centred column, logos equally spaced at one common height) */
.tv-footer__confidence {
	padding: 2rem var(--gutter, 1.25rem) 1.6rem;
	border-top: 1px solid rgba(255, 255, 255, .08);
	border-bottom: 1px solid rgba(255, 255, 255, .08);
	background: rgba(255, 255, 255, .02);
	text-align: center;
}
.tv-footer__confidence-inner {
	max-width: 64rem;
	margin: 0 auto;
}
@media (min-width: 768px) {
	.tv-footer__confidence { padding: 2.6rem 2rem 2rem; }
}
.tv-footer__confidence-title {
	font-size: .78rem;
	font-weight: 700;
	color: var(--yellow);
	margin: 0 0 1.2rem;
	letter-spacing: .18em;
	text-transform: uppercase;
}
.tv-footer__confidence-logos {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-around;
	gap: 1.4rem 2rem;
	margin: 0 0 1.3rem;
}
@media (min-width: 768px) {
	.tv-footer__confidence-logos {
		justify-content: space-between;
		gap: 1.5rem 3rem;
		padding: 0 2rem;
	}
}
.tv-footer__cred-link {
	display: inline-flex;
	align-items: center;
	transition: opacity .2s ease;
}
.tv-footer__cred-link:hover { opacity: .82; }
.tv-footer__cred {
	display: block;
	width: auto;
	max-width: 100%;
	height: 48px;
	opacity: .92;
}
@media (min-width: 768px) {
	.tv-footer__cred { height: 56px; }
}
.tv-footer__confidence-text {
	margin: 0 auto;
	color: rgba(255, 255, 255, .65);
	font-size: .88rem;
	line-height: 1.6;
	max-width: 56rem;
}
.tv-footer__confidence-text a {
	color: rgba(255, 255, 255, .95);
	border-bottom: 1px solid rgba(255, 204, 5, .45);
	transition: color .15s ease, border-color .15s ease;
}
.tv-footer__confidence-text a:hover {
	color: var(--yellow);
	border-bottom-color: var(--yellow);
}

/* TRUST badge strip */
.tv-footer__trust {
	background: var(--yellow);
	color: #111;
	padding: 1rem var(--gutter, 1.25rem);
	border-top: 1px solid #111;
	border-bottom: 1px solid #111;
	font-size: .78rem;
	font-weight: 700;
}
.tv-footer__trust-inner {
	max-width: var(--container);
	margin: 0 auto;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: .6rem 1.6rem;
}
.tv-footer__trust-item {
	display: inline-flex; align-items: center; gap: .45rem;
	color: #111;
	white-space: nowrap;
}
.tv-footer__trust-item svg {
	width: 16px; height: 16px;
	flex-shrink: 0;
	stroke: #111;
}

/* SLIM bottom bar — single centred line, Montserrat (inherits from .tv-footer),
   pure white on black, readable size. */
.tv-footer__bottom {
	background: #000;
	color: #ffffff;
	padding: 1.1rem var(--gutter, 1.25rem) 1.2rem;
}
.tv-footer__bottom-inner {
	max-width: var(--container);
	margin: 0 auto;
	text-align: center;
	font-size: .9rem;
	letter-spacing: .015em;
	line-height: 1.6;
}
@media (min-width: 768px) {
	.tv-footer__bottom-inner { font-size: .95rem; }
}
.tv-footer__bottom-line {
	display: inline-block;
	max-width: 70rem;
	color: #ffffff;
	text-align: center;
}

/* =========================================================
   WordPress core utility classes
   Required for theme review compliance. Do not remove.
   ========================================================= */
.alignleft { float: left; margin: 0 1.5rem 1rem 0; }
.alignright { float: right; margin: 0 0 1rem 1.5rem; }
.aligncenter { display: block; margin: 0 auto 1.5rem; }
.alignwide { max-width: 1100px; margin-left: auto; margin-right: auto; }
.alignfull { width: 100vw; margin-left: calc(50% - 50vw); }
.wp-caption { max-width: 100%; }
.wp-caption-text { font-size: .85rem; color: var(--muted); margin-top: .4rem; }
.gallery-caption { font-size: .85rem; color: var(--muted); }
.bypostauthor, .sticky { display: block; }
.screen-reader-text {
	position: absolute !important;
	clip: rect(1px, 1px, 1px, 1px);
	width: 1px; height: 1px;
	overflow: hidden;
}
.screen-reader-text:focus {
	clip: auto !important;
	height: auto; width: auto;
	display: block;
	font-size: 1rem; font-weight: 600;
	padding: .8rem 1.2rem;
	background: var(--ink); color: var(--white);
	z-index: 999;
}

/* =========================================================
   WordPress admin-bar offset — only applies when logged in
   ========================================================= */
body.admin-bar .tv-header,
body.admin-bar .tv-search-overlay {
	top: 32px;
}
@media screen and (max-width: 782px) {
	body.admin-bar .tv-header,
	body.admin-bar .tv-search-overlay {
		top: 46px;
	}
}

/* ============================================================
 * Last Minute Offers (page 17079) — scoped typography & spacing
 * Added 2026-05-12 (v2: CSS-only, no markup changes).
 * Reuses existing theme tokens only.
 * All selectors scoped to body.page-id-17079 — no global leakage.
 * Rollback: delete this block (or restore style.css.bak-lmo-csv2-20260512).
 * ============================================================ */

/* ── Container rhythm — homepage-consistent max-width ── */
body.page-id-17079 .th-row__inner {
	max-width: 1180px;
	margin-inline: auto;
	padding-inline: 1.25rem;
	box-sizing: border-box;
}

/* ── Section spacing — tighten oversized static spacers on mobile ── */
@media (max-width: 600px) {
	body.page-id-17079 .th-spacer[style*="--th-h:62px"],
	body.page-id-17079 .th-spacer[style*="--th-h:60px"] {
		--th-h: 32px;
	}
}

/* ── Region headings — calmer, theme typography ── */
body.page-id-17079 .th-title.th-title--h3 {
	font-family: var(--display);
	font-weight: 600;
	font-size: clamp(1.25rem, 2.2vw, 1.55rem);
	letter-spacing: -0.005em;
	line-height: 1.25;
	color: var(--ink);
	margin: 0;
	text-align: left;
}

/* ── Prose blocks ── */
body.page-id-17079 .th-text {
	font-family: var(--body);
	line-height: 1.55;
	color: var(--ink-soft, #2a2a2a);
}
body.page-id-17079 .th-text h3 {
	font-family: var(--display);
	font-weight: 600;
	font-size: 1.05rem;
	color: var(--ink);
	margin: 0 0 0.5rem;
}

/* ── Quick-link rows (pre tags with ._ps2id anchors) — inline pills ── */
body.page-id-17079 pre {
	background: transparent;
	border: 0;
	padding: 0;
	margin: 0;
	font-family: var(--body);
	font-size: 0.95rem;
	line-height: 1.6;
	white-space: normal;
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem 1.25rem;
	justify-content: center;
}
body.page-id-17079 pre a._ps2id,
body.page-id-17079 pre strong a {
	color: var(--ink);
	text-decoration: none;
	border-bottom: 1px solid var(--line, #E6E0D4);
	padding-bottom: 2px;
	transition: color 0.15s, border-color 0.15s;
}
body.page-id-17079 pre a._ps2id:hover,
body.page-id-17079 pre strong a:hover {
	color: var(--yellow-deep);
	border-bottom-color: var(--yellow-deep);
}

/* ============================================================
 * Last Minute Offers (page 17079) � final scoped block
 * Added 2026-05-12. Hides page.php header markup and styles
 * the editorial intro. All selectors body.page-id-17079 scoped.
 * Rollback: delete this block (or restore style.css.bak-lmo-final-20260512).
 * ============================================================ */

/* Hide page.php-rendered header off-screen (kept in DOM for SEO/a11y) */
body.page-id-17079 .entry-header {
	position: absolute;
	left: -9999px;
}

/* Hide the portrait featured image entirely */
body.page-id-17079 .entry-thumbnail {
	display: none;
}

/* Intro section */
body.page-id-17079 .th-row--lmo-intro {
	padding: 2.5rem 0 1.25rem;
	text-align: center;
}
body.page-id-17079 .th-row--lmo-intro .th-title {
	font-family: var(--display);
	font-weight: 600;
	font-size: clamp(1.6rem, 3vw, 2.1rem);
	letter-spacing: -0.005em;
	line-height: 1.2;
	color: var(--ink);
	margin: 0 0 0.65rem;
}
body.page-id-17079 .th-row--lmo-intro .th-lede {
	font-family: var(--body);
	font-size: clamp(1rem, 1.5vw, 1.08rem);
	line-height: 1.55;
	color: var(--ink-soft, #2a2a2a);
	max-width: 560px;
	margin: 0 auto;
}
@media (max-width: 600px) {
	body.page-id-17079 .th-row--lmo-intro {
		padding: 1.75rem 0 0.75rem;
	}
}

/* Tighten oversized spacers on desktop too */
@media (min-width: 601px) {
	body.page-id-17079 .th-spacer[style*="--th-h:62px"],
	body.page-id-17079 .th-spacer[style*="--th-h:60px"] {
		--th-h: 40px;
	}
}

/* =========================================================
   Hamburger visibility over transparent header (v1.5.3)
   ---------------------------------------------------------
   On pages that opt into has-transparent-header (homepage,
   cruise, hero-led pages), the hamburger sits over a photo.
   Default ink colour disappears on bright shots. Apply
   Travelisto yellow + a subtle blurred dark backing only
   in the transparent + at-top + menu-closed state.

   States reverted: scrolled (handled by .is-scrolled),
   menu open (handled by [aria-expanded="true"]).
   ========================================================= */
body.has-transparent-header .tv-header:not(.is-scrolled) .tv-hamburger:not([aria-expanded="true"]) {
	color: var(--yellow);
	background: rgba(0, 0, 0, .22);
	-webkit-backdrop-filter: blur(8px);
	backdrop-filter: blur(8px);
}
body.has-transparent-header .tv-header:not(.is-scrolled) .tv-hamburger:not([aria-expanded="true"]):hover {
	background: rgba(0, 0, 0, .36);
}
/* When the menu is open, force ink + transparent so the X
   stays visible against whatever the overlay shows. */
body.menu-open .tv-hamburger {
	color: var(--ink);
	background: transparent;
	-webkit-backdrop-filter: none;
	backdrop-filter: none;
}

/* =========================================================
   Destinations submenu — rich item (region + meta line)
   ---------------------------------------------------------
   Adds a secondary muted line beneath each region link, e.g.
   "38 countries · beach hotels · escorted tours · tailor-made".
   Walker outputs <a class="tv-overlay__sub-link--rich">…</a>.
   ========================================================= */
.tv-overlay__sub a.tv-overlay__sub-link--rich {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: .2rem;
	padding: .65rem 0;
}
.tv-overlay__sub a.tv-overlay__sub-link--rich:hover {
	padding-left: .3rem;
}
.tv-overlay__sub-name {
	font-family: var(--display);
	font-size: 1rem;
	font-weight: 600;
	color: var(--ink);
	line-height: 1.2;
	letter-spacing: -.005em;
	transition: color .15s ease;
}
.tv-overlay__sub-meta {
	font-family: var(--body);
	font-size: .82rem;
	font-weight: 400;
	color: var(--muted);
	line-height: 1.35;
	letter-spacing: .005em;
}
.tv-overlay__sub a.tv-overlay__sub-link--rich:hover .tv-overlay__sub-name {
	color: var(--yellow-deep);
}
.tv-overlay__sub a.tv-overlay__sub-link--rich:hover .tv-overlay__sub-meta {
	color: var(--muted);
}
@media (min-width: 768px) {
	.tv-overlay__sub a.tv-overlay__sub-link--rich {
		padding: .8rem 0;
	}
}
