/* ============================================================
   Talia Travel — Blocksy Child brand styles
   Brand palette + tt_* component styles + responsive.
   This file is the canonical copy; an equivalent Global CSS
   block is mirrored in Blocksy Customizer → Custom Code.
   ============================================================ */

:root {
	--tt-primary: #3db0b3;     /* teal   */
	--tt-secondary: #9499bb;   /* periwinkle */
	--tt-title: #333333;
	--tt-text: #676767;
	--tt-footer-bg: #15161d;
	--tt-radius: 16px;
	--tt-shadow: 0 18px 50px rgba(21, 22, 29, 0.12);

	/* Align Blocksy accent palette to brand */
	--theme-palette-color-1: var(--tt-primary);
	--theme-palette-color-2: var(--tt-secondary);
	--theme-palette-color-3: var(--tt-title);
	--theme-palette-color-4: var(--tt-text);

	--font-heading: "Montserrat", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;
	--font-body: "Open Sans", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;
}

body {
	font-family: var(--font-body);
	color: var(--tt-text);
	/* Guard against the 100vw full-bleed sections (home hero, route hero,
	   routes band) triggering a horizontal scrollbar equal to the scrollbar width. */
	overflow-x: hidden;
}

h1, h2, h3, h4, .site-title, .primary-menu a, .header-menu a {
	font-family: var(--font-heading);
	color: var(--tt-title);
}

/* ---------- Single travel item ---------- */
.tt-single-wrap {
	max-width: 960px;
	margin: 48px auto;
	padding: 0 24px;
}
.tt-single-hero img {
	width: 100%;
	height: auto;
	border-radius: var(--tt-radius);
	box-shadow: var(--tt-shadow);
}
.tt-single-title {
	font-size: clamp(28px, 4vw, 44px);
	margin: 28px 0 8px;
}
.tt-single-cats {
	color: var(--tt-primary);
	font-weight: 600;
	letter-spacing: .04em;
	text-transform: uppercase;
	font-size: 13px;
}
.tt-single-content {
	font-size: 17px;
	line-height: 1.8;
	margin-top: 20px;
}

/* Sticky buy CTA (no price) */
.tt-buy-cta {
	position: fixed;
	right: 24px;
	bottom: 24px;
	z-index: 50;
	display: inline-flex;
	align-items: center;
	padding: 16px 28px;
	border-radius: 999px;
	background: linear-gradient(135deg, var(--tt-primary), #2f9396);
	color: #fff;
	font-family: var(--font-heading);
	font-weight: 700;
	box-shadow: 0 12px 30px rgba(61, 176, 179, .45);
	transition: transform .3s cubic-bezier(.16,1,.3,1), box-shadow .3s ease;
	text-decoration: none;
}
.tt-buy-cta:hover {
	transform: translateY(-3px) scale(1.03);
	box-shadow: 0 18px 40px rgba(61, 176, 179, .55);
	color: #fff;
}

/* ---------- Archive grid ---------- */
.tt-archive-wrap {
	max-width: 1200px;
	margin: 56px auto;
	padding: 0 24px;
}
.tt-archive-title {
	font-size: clamp(30px, 4vw, 46px);
	margin-bottom: 6px;
}
.tt-archive-sub {
	color: var(--tt-text);
	margin-bottom: 36px;
}
.tt-travel-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 28px;
}
.tt-travel-card {
	background: #fff;
	border-radius: var(--tt-radius);
	overflow: hidden;
	box-shadow: 0 10px 30px rgba(21, 22, 29, .08);
	transition: transform .35s cubic-bezier(.16,1,.3,1), box-shadow .35s ease;
}
.tt-travel-card:hover {
	transform: translateY(-6px);
	box-shadow: var(--tt-shadow);
}
.tt-travel-card-link {
	text-decoration: none;
	color: inherit;
	display: block;
}
.tt-travel-thumb img {
	width: 100%;
	height: 220px;
	object-fit: cover;
	display: block;
}
.tt-travel-card-title {
	font-size: 20px;
	margin: 18px 20px 8px;
}
.tt-travel-excerpt {
	margin: 0 20px 22px;
	font-size: 14px;
	color: var(--tt-text);
	line-height: 1.6;
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

/* ---------- Generic brand sections (used by rebuilt pages) ---------- */
.tt-hero {
	background: linear-gradient(135deg, rgba(61,176,179,.12), rgba(148,153,187,.12));
	border-radius: var(--tt-radius);
	padding: 64px 32px;
	text-align: center;
}
.tt-hero h1 { font-size: clamp(30px, 5vw, 54px); margin: 0 0 12px; }
.tt-hero p { max-width: 640px; margin: 0 auto; font-size: 18px; }
.tt-section { max-width: 1200px; margin: 64px auto; padding: 0 24px; }
.tt-section h2 { font-size: clamp(24px, 3vw, 36px); margin-bottom: 24px; }
.tt-collections { display: grid; grid-template-columns: repeat(2, 1fr); gap: 24px; }
.tt-collections a {
	display: block; padding: 28px; border-radius: var(--tt-radius);
	background: #fff; box-shadow: 0 8px 24px rgba(21,22,29,.07);
	text-decoration: none; color: var(--tt-title); font-family: var(--font-heading);
	font-weight: 600; transition: transform .3s ease;
}
.tt-collections a:hover { transform: translateY(-4px); }

/* ---------- Footer brand ---------- */
.site-footer, footer {
	background: var(--tt-footer-bg);
	color: #cfd2dc;
}
.site-footer a, footer a { color: #9fe3e5; }

/* ---------- Responsive ---------- */
@media (max-width: 1024px) {
	.tt-travel-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 600px) {
	.tt-travel-grid { grid-template-columns: 1fr; }
	.tt-collections { grid-template-columns: 1fr; }
	.tt-buy-cta {
		left: 16px; right: 16px; bottom: 16px;
		justify-content: center;
	}
}

/* ============================================================
   Talia Travel — Travel-template homepage sections
   (added after Blocksy Travel demo "options-only" import)
   Full-bleed image hero, glass search, magnetic destination cards.
   ============================================================ */

/* ---- Front page: reclaim the space left by the removed page-title band ----
   The Blocksy "Home" title band is disabled via the per-page option
   (blocksy_post_meta_options.has_hero_section = disabled). Blocksy still adds
   padding-top: var(--theme-content-vertical-spacing) to the content container,
   which would leave a blank strip above the full-bleed hero. Zero it out on the
   front page only, so the hero sits flush beneath the transparent header.
   Bottom spacing is intentionally left untouched. */
.home .site-main > [data-vertical-spacing*="top"] { padding-top: 0; }
.home .entry-content > .tt-home { margin-top: 0; }
.home .entry-content > .tt-home > :first-child { margin-top: 0; }
.home .tt-home > .tt-home-hero:first-child { margin-block-start: 0; }

/* ---- Full-bleed image hero ---- */
.tt-home-hero {
	position: relative;
	left: 50%; right: 50%;
	margin-left: -50vw; margin-right: -50vw;
	width: 100vw;
	/* Full-height hero, matching the production homepage row */
	min-height: 100vh;
	display: flex; align-items: center; justify-content: center;
	overflow: hidden; color: #fff;
	/* extra top padding so content clears the transparent header overlaying the hero */
	padding: 150px 24px 96px;
	background-color: #0f0030; /* production base colour behind the photo */
}
.tt-hero-bg {
	position: absolute; inset: 0;
	background-size: cover; background-position: center;
	background-repeat: no-repeat;
	transform: scale(1.05);
	transition: transform 8s ease;
}
.tt-home-hero:hover .tt-hero-bg { transform: scale(1.1); }
.tt-hero-overlay {
	position: absolute; inset: 0;
	/* darker at the top so the transparent nav stays legible over the skyline */
	background:
		linear-gradient(180deg, rgba(15,0,48,.72) 0%, rgba(15,0,48,.30) 42%, rgba(15,0,48,.60) 100%),
		linear-gradient(180deg, rgba(10,5,0,.10) 0%, rgba(37,173,153,.26) 100%);
}
.tt-hero-content { position: relative; z-index: 2; max-width: 820px; text-align: center; }
.tt-hero-eyebrow {
	text-transform: uppercase; letter-spacing: .22em;
	font-size: 13px; font-weight: 600; margin: 0 0 14px;
	color: rgba(255,255,255,.85);
}
.tt-hero-title {
	font-family: "Playfair Display", var(--font-heading);
	font-size: clamp(34px, 6vw, 68px); line-height: 1.05;
	margin: 0 0 18px; color: #fff;
	text-shadow: 0 2px 30px rgba(0,0,0,.25);
}
.tt-hero-sub {
	font-size: clamp(16px, 2vw, 19px); line-height: 1.7;
	margin: 0 auto 30px; max-width: 620px; color: rgba(255,255,255,.92);
}

/* ---- Glass search bar ---- */
.tt-hero-search {
	display: flex; gap: 8px; max-width: 540px; margin: 0 auto 28px;
	background: rgba(255,255,255,.14);
	border: 1px solid rgba(255,255,255,.35);
	border-radius: 999px; padding: 8px 8px 8px 22px;
	backdrop-filter: blur(14px) saturate(160%);
	-webkit-backdrop-filter: blur(14px) saturate(160%);
	box-shadow: 0 12px 40px rgba(10,5,0,.25);
}
.tt-hero-search input[type="search"] {
	flex: 1; border: 0; background: transparent; color: #fff;
	font-size: 16px; outline: none; padding: 10px 4px;
}
.tt-hero-search input::placeholder { color: rgba(255,255,255,.7); }
.tt-hero-search button {
	border: 0; border-radius: 999px; padding: 12px 26px;
	font-family: var(--font-heading); font-weight: 700; color: #0a0500;
	background: #fff; cursor: pointer;
	transition: transform .3s cubic-bezier(.16,1,.3,1), background .3s ease;
}
.tt-hero-search button:hover { transform: translateY(-2px) scale(1.03); background: #eafff8; }

/* ---- Hero CTA buttons ---- */
.tt-hero-actions { display: flex; gap: 16px; justify-content: center; flex-wrap: wrap; }
.tt-btn {
	display: inline-flex; align-items: center; justify-content: center;
	padding: 15px 30px; border-radius: 999px;
	font-family: var(--font-heading); font-weight: 700; font-size: 15px;
	text-decoration: none; cursor: pointer;
	transition: transform .3s cubic-bezier(.16,1,.3,1), box-shadow .3s ease, background .3s ease;
}
.tt-btn-primary { background: #25ad99; color: #fff; box-shadow: 0 12px 30px rgba(37,173,153,.5); }
.tt-btn-primary:hover { transform: translateY(-3px) scale(1.03); background: #2fc4ad; color: #fff; }
.tt-btn-ghost { background: rgba(255,255,255,.12); color: #fff; border: 1px solid rgba(255,255,255,.5); backdrop-filter: blur(8px); }
.tt-btn-ghost:hover { transform: translateY(-3px) scale(1.03); background: rgba(255,255,255,.22); color: #fff; }

/* ---- Popular Destinations cards ---- */
.tt-destinations { max-width: 1200px; margin: 72px auto; padding: 0 24px; }
.tt-section-title { font-family: "Playfair Display", var(--font-heading); font-size: clamp(26px,3vw,38px); text-align: center; margin-bottom: 32px; }
.tt-dest-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 26px; }
.tt-dest-card {
	position: relative; display: block; min-height: 260px;
	border-radius: var(--tt-radius); overflow: hidden; text-decoration: none;
	box-shadow: 0 12px 34px rgba(21,22,29,.12);
	transition: transform .4s cubic-bezier(.16,1,.3,1), box-shadow .4s ease;
}
.tt-dest-card:hover { transform: translateY(-8px); box-shadow: var(--tt-shadow); }
.tt-dest-media {
	position: absolute; inset: 0; background-size: cover; background-position: center;
	transition: transform .6s cubic-bezier(.16,1,.3,1);
}
.tt-dest-card:hover .tt-dest-media { transform: scale(1.08); }
.tt-dest-card::after {
	content: ""; position: absolute; inset: 0;
	background: linear-gradient(180deg, rgba(21,22,29,0) 35%, rgba(21,22,29,.78) 100%);
}
.tt-dest-body { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; padding: 22px 24px; color: #fff; }
.tt-dest-body h3 { margin: 0; font-family: var(--font-heading); font-size: 22px; color: #fff; }
.tt-dest-body span { font-size: 13px; color: rgba(255,255,255,.82); letter-spacing: .03em; }

/* ---- Responsive for new sections ---- */
@media (max-width: 900px) {
	.tt-dest-grid { grid-template-columns: 1fr; }
	.tt-home-hero { min-height: 86vh; padding: 128px 20px 72px; }
}
@media (max-width: 600px) {
	.tt-hero-search { flex-direction: column; border-radius: 22px; padding: 14px; }
	.tt-hero-search input[type="search"] { padding: 12px; text-align: center; }
	.tt-hero-search button { width: 100%; }
}

/* ============================================================
   Talia Travel — Travel-template homepage (v2, full rebuild)
   Palette mirrors Blocksy Travel demo: #48bca2 / #25ad99
   ============================================================ */
/* .tt-home must NOT clip: its children .tt-home-hero and .tt-routes-section::before
   rely on the 100vw full-bleed technique, which requires visible overflow on
   every ancestor. Removing overflow:hidden here lets them break out to page width. */

/* Trust strip */
.tt-trust { background: #0a0500; color: #fff; }
.tt-trust-inner { max-width: 1200px; margin: 0 auto; padding: 22px 24px;
	display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; text-align: center; }
.tt-trust-item strong { display: block; font-family: "Playfair Display", var(--font-heading);
	font-size: 28px; color: #5fe3c8; }
.tt-trust-item span { font-size: 13px; letter-spacing: .03em; color: rgba(255,255,255,.7); }

/* Section heads */
.tt-section { max-width: 1200px; margin: 80px auto; padding: 0 24px; }
.tt-section-head { text-align: center; max-width: 720px; margin: 0 auto 44px; }
.tt-eyebrow { text-transform: uppercase; letter-spacing: .22em; font-size: 12px; font-weight: 700;
	color: #25ad99; margin: 0 0 10px; }
.tt-section-title { font-family: "Playfair Display", var(--font-heading);
	font-size: clamp(28px, 4vw, 44px); line-height: 1.1; margin: 0 0 12px; color: #0a0500; }
.tt-section-sub { color: #676767; font-size: 17px; line-height: 1.7; margin: 0; }

/* Carousel (scroll-snap, drag, buttons) */
.tt-carousel { position: relative; }
.tt-carousel-track { display: flex; gap: 24px; overflow-x: auto; scroll-snap-type: x mandatory;
	padding: 6px 4px 18px; scrollbar-width: none; }
.tt-carousel-track::-webkit-scrollbar { display: none; }
.tt-carousel-card { flex: 0 0 320px; scroll-snap-align: start; position: relative;
	height: 380px; border-radius: 20px; overflow: hidden; text-decoration: none;
	box-shadow: 0 14px 38px rgba(21,22,29,.14); transition: transform .4s cubic-bezier(.16,1,.3,1), box-shadow .4s ease; }
.tt-carousel-card:hover { transform: translateY(-8px); box-shadow: 0 22px 50px rgba(21,22,29,.22); }
.tt-carousel-media { position: absolute; inset: 0; background-size: cover; background-position: center;
	transition: transform .7s cubic-bezier(.16,1,.3,1); }
.tt-carousel-card:hover .tt-carousel-media { transform: scale(1.08); }
.tt-carousel-card::after { content: ""; position: absolute; inset: 0;
	background: linear-gradient(180deg, rgba(10,5,0,0) 40%, rgba(10,5,0,.8) 100%); }
.tt-carousel-body { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; padding: 22px 24px; }
.tt-carousel-body h3 { margin: 0; font-family: var(--font-heading); font-size: 20px; color: #fff; }
.tt-carousel-tag { font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: #5fe3c8; }
.tt-carousel-btn { position: absolute; top: 38%; transform: translateY(-50%); z-index: 3;
	width: 48px; height: 48px; border-radius: 50%; border: 0; cursor: pointer;
	background: #fff; color: #0a0500; font-size: 26px; line-height: 1; box-shadow: 0 8px 24px rgba(10,5,0,.25);
	transition: transform .3s ease, background .3s ease; }
.tt-carousel-btn:hover { transform: translateY(-50%) scale(1.08); background: #25ad99; color: #fff; }
.tt-carousel-prev { left: -8px; } .tt-carousel-next { right: -8px; }
.tt-carousel-btn:disabled { opacity: .35; cursor: default; }

/* Destinations grid (reuse existing .tt-dest-card) */
.tt-dest-section .tt-dest-grid { grid-template-columns: repeat(3, 1fr); }

/* Features */
.tt-feature-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; }
.tt-feature { background: #fff; border-radius: 20px; padding: 34px 28px; text-align: center;
	box-shadow: 0 10px 30px rgba(21,22,29,.06); transition: transform .4s cubic-bezier(.16,1,.3,1), box-shadow .4s ease; }
.tt-feature:hover { transform: translateY(-6px); box-shadow: 0 18px 44px rgba(21,22,29,.12); }
.tt-feature-ico { display: inline-flex; width: 64px; height: 64px; align-items: center; justify-content: center;
	border-radius: 18px; background: rgba(37,173,153,.12); color: #25ad99; margin-bottom: 18px; }
.tt-feature-ico svg { width: 30px; height: 30px; }
.tt-feature h3 { font-family: var(--font-heading); font-size: 18px; margin: 0 0 8px; color: #0a0500; }
.tt-feature p { margin: 0; font-size: 14px; line-height: 1.65; color: #676767; }

/* About band */
.tt-about-band { max-width: 1200px; margin: 80px auto; padding: 0 24px; }
.tt-about-inner { display: grid; grid-template-columns: 1.1fr .9fr; gap: 40px; align-items: center;
	background: linear-gradient(135deg, rgba(72,188,162,.10), rgba(37,173,153,.06));
	border-radius: 28px; padding: 48px; }
.tt-about-text h2 { font-family: "Playfair Display", var(--font-heading); font-size: clamp(24px,3vw,34px);
	margin: 0 0 14px; color: #0a0500; }
.tt-about-text p { color: #676767; font-size: 16px; line-height: 1.8; margin: 0 0 24px; }
.tt-about-media { min-height: 320px; border-radius: 20px; background-size: cover; background-position: center;
	box-shadow: 0 18px 50px rgba(21,22,29,.18); }

/* Blog grid */
.tt-blog-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 26px; }
.tt-blog-card { display: block; text-decoration: none; background: #fff; border-radius: 20px; overflow: hidden;
	box-shadow: 0 10px 30px rgba(21,22,29,.07); transition: transform .4s cubic-bezier(.16,1,.3,1), box-shadow .4s ease; }
.tt-blog-card:hover { transform: translateY(-6px); box-shadow: 0 18px 44px rgba(21,22,29,.14); }
.tt-blog-thumb { height: 200px; background-size: cover; background-position: center;
	background-image: linear-gradient(135deg, #48bca2, #25ad99); }
.tt-blog-card.no-img .tt-blog-thumb { display: flex; align-items: flex-end; }
.tt-blog-body { padding: 20px 22px 24px; }
.tt-blog-date { font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: #25ad99; }
.tt-blog-body h3 { margin: 8px 0 0; font-family: var(--font-heading); font-size: 17px; line-height: 1.45; color: #333; }
.tt-blog-more { text-align: center; margin-top: 36px; }

/* CTA band */
.tt-cta-band { background: linear-gradient(135deg, #0a0500, #15302b); color: #fff; margin-top: 84px; }
.tt-cta-inner { max-width: 760px; margin: 0 auto; padding: 72px 24px; text-align: center; }
.tt-cta-inner h2 { font-family: "Playfair Display", var(--font-heading); font-size: clamp(26px,4vw,40px);
	margin: 0 0 12px; color: #fff; }
.tt-cta-inner p { color: rgba(255,255,255,.78); font-size: 17px; margin: 0 0 28px; }
.tt-cta-form { display: flex; gap: 10px; max-width: 480px; margin: 0 auto; }
.tt-cta-form input { flex: 1; border: 0; border-radius: 999px; padding: 15px 22px; font-size: 15px; outline: none; }
.tt-cta-form button { border: 0; border-radius: 999px; padding: 15px 30px; font-family: var(--font-heading);
	font-weight: 700; background: #25ad99; color: #fff; cursor: pointer; transition: transform .3s ease, background .3s ease; }
.tt-cta-form button:hover { transform: translateY(-2px); background: #2fc4ad; }

/* Pinned nav on EVERY page (desktop + mobile) — header is position:fixed everywhere.
   Pages that carry a hero (body.tt-fullbleed-top, added by the body_class filter when
   post_content contains tt-home-hero / tt-route-hero) get a transparent header overlaying
   the hero that turns solid on scroll; pages without a hero keep a solid header and push
   content down (padding-top) so nothing hides underneath. JS toggles .is-scrolled on scroll. */
:root { --tt-header-h: 76px; }
#header {
	position: fixed !important; top: 0; left: 0; right: 0; z-index: 60;
	background: #0a0500 !important; box-shadow: 0 6px 24px rgba(0,0,0,.25) !important;
	transition: background .3s ease, box-shadow .3s ease;
}
/* Hero pages: transparent header over the hero, solid once scrolled (.is-scrolled toggled by JS) */
body.tt-fullbleed-top #header { background: transparent !important; box-shadow: none !important; }
body.tt-fullbleed-top #header.is-scrolled { background: #0a0500 !important; box-shadow: 0 6px 24px rgba(0,0,0,.25) !important; }
body.tt-fullbleed-top #header, body.tt-fullbleed-top #header a, body.tt-fullbleed-top #header .site-branding,
body.tt-fullbleed-top #header .site-title, body.tt-fullbleed-top #header .ct-menu-link,
body.tt-fullbleed-top #header .ct-header-trigger, body.tt-fullbleed-top #header .ct-header-search,
body.tt-fullbleed-top #header .ct-header-cta { color: #fff !important; }
body.tt-fullbleed-top #header .ct-menu-link:hover, body.tt-fullbleed-top #header a:hover { color: #5fe3c8 !important; }
/* Non-hero pages: solid header, clear it with top padding so content never hides */
body:not(.tt-fullbleed-top) .site-main { padding-top: var(--tt-header-h); }

/* Logo: white variant over the hero, full-colour original elsewhere. The swap is handled in
   PHP; here we only size it and add a subtle lift to keep it legible over the hero photo. */
#header .site-logo-container img { max-height: 46px; width: auto; height: auto; display: block; }
body.tt-fullbleed-top #header .site-logo-container img { filter: drop-shadow(0 1px 3px rgba(0,0,0,.35)); }

/* Reveal animation (safe: only hides once JS adds .tt-reveal) */
.tt-reveal { opacity: 0; transform: translateY(26px); transition: opacity .7s ease, transform .7s cubic-bezier(.16,1,.3,1); }
.tt-reveal.tt-in { opacity: 1; transform: none; }

/* ---- Routes / 精选路线 module (placed before hotels) ---- */
.tt-routes-section { position: relative; }
.tt-routes-section::before {
	content: ""; position: absolute; left: 50%; right: 50%; margin-left: -50vw; margin-right: -50vw;
	width: 100vw; top: -44px; bottom: -44px;
	background: linear-gradient(180deg, #f3fbf9 0%, #ffffff 100%);
	z-index: -1;
}
.tt-routes-section .tt-section-head { margin-bottom: 40px; }
.tt-routes-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 26px; }
.tt-route-card {
	background: #fff; border-radius: 20px; overflow: hidden; display: flex; flex-direction: column;
	box-shadow: 0 12px 34px rgba(21,22,29,.10);
	transition: transform .4s cubic-bezier(.16,1,.3,1), box-shadow .4s ease;
}
.tt-route-card:hover { transform: translateY(-8px); box-shadow: 0 22px 52px rgba(21,22,29,.18); }
.tt-route-media {
	position: relative; height: 188px; background-size: cover; background-position: center;
	background-image: linear-gradient(135deg, #48bca2, #25ad99);
}
.tt-route-media.tt-no-img { background-image: linear-gradient(135deg, #48bca2, #25ad99); }
.tt-route-media.tt-no-img::after {
	content: "路线"; position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
	font-family: var(--font-heading); font-size: 22px; font-weight: 700; letter-spacing: .12em; color: rgba(255,255,255,.92);
}
/* Route tour cards: show the real 路线X label centered */
.tt-route-media.tour { display: flex; align-items: center; justify-content: center; }
.tt-route-media.tour .tt-route-big {
	font-family: "Playfair Display", var(--font-heading); font-size: 32px; font-weight: 700; color: #fff;
	text-shadow: 0 2px 14px rgba(0,0,0,.28); letter-spacing: .02em;
}
.tt-route-num {
	position: absolute; top: 14px; left: 16px; font-family: "Playfair Display", Georgia, serif;
	font-size: 30px; font-weight: 700; color: rgba(255,255,255,.92); text-shadow: 0 2px 12px rgba(0,0,0,.25);
}
.tt-route-body { padding: 22px 24px 26px; display: flex; flex-direction: column; flex: 1; }
.tt-route-badge {
	align-self: flex-start; font-size: 11px; letter-spacing: .14em; text-transform: uppercase; font-weight: 700;
	color: #fff; background: #25ad99; padding: 4px 11px; border-radius: 999px; margin-bottom: 12px;
}
.tt-route-title { font-family: var(--font-heading); font-size: 19px; line-height: 1.4; margin: 0 0 10px; color: #0a0500; }
.tt-route-title a { color: inherit; text-decoration: none; }
.tt-route-title a:hover { color: #25ad99; }
.tt-route-exc {
	font-size: 14px; line-height: 1.65; color: #676767; margin: 0 0 16px; flex: 1;
	display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
}
.tt-route-link {
	align-self: flex-start; font-family: var(--font-heading); font-weight: 700; font-size: 14px;
	color: #25ad99; text-decoration: none; display: inline-flex; gap: 6px; align-items: center;
}
.tt-route-link span { transition: transform .3s ease; }
.tt-route-link:hover { color: #1c8f7e; }
.tt-route-link:hover span { transform: translateX(4px); }
.tt-routes-more { text-align: center; margin-top: 42px; }

@media (max-width: 1024px) {
	.tt-routes-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 760px) {
	.tt-routes-grid { grid-template-columns: 1fr; }
}

/* Responsive */
@media (max-width: 1024px) {
	.tt-feature-grid { grid-template-columns: repeat(2, 1fr); }
	.tt-blog-grid { grid-template-columns: repeat(2, 1fr); }
	.tt-about-inner { grid-template-columns: 1fr; }
	.tt-about-media { min-height: 240px; }
}
@media (max-width: 760px) {
	.tt-trust-inner { grid-template-columns: repeat(2, 1fr); gap: 20px; }
	.tt-section, .tt-about-band { margin: 56px auto; }
	.tt-dest-section .tt-dest-grid { grid-template-columns: 1fr; }
	.tt-blog-grid { grid-template-columns: 1fr; }
	.tt-feature-grid { grid-template-columns: 1fr; }
	.tt-carousel-card { flex-basis: 78vw; }
	.tt-carousel-prev { left: 4px; } .tt-carousel-next { right: 4px; }
	.tt-cta-form { flex-direction: column; }
	.tt-cta-form button { width: 100%; }
	:root { --tt-header-h: 64px; }
	body.tt-fullbleed-top #header { background: transparent !important; }
	body.tt-fullbleed-top #header.is-scrolled { background: #0a0500 !important; }
	/* Header overlays the hero on mobile too; the hero already reserves top padding
	   (140px desktop / 100px mobile) so the title clears the shorter mobile bar. */
	.tt-home-hero { min-height: 78vh; padding-top: 64px; }
}

/* ============================================================
   Talia Travel — Route-first homepage v2 + route detail pages
   ============================================================ */

/* Homepage v2 hero */
.tt-home-v2 .tt-home-hero {
	background-size: cover; background-position: center;
	min-height: 100vh; padding: 160px 24px 100px;
}
.tt-home-v2 .tt-hero-inner { position: relative; z-index: 2; max-width: 900px; margin: 0 auto; text-align: center; color: #fff; }
.tt-home-v2 .tt-hero-title { font-family: "Playfair Display", var(--font-heading); font-size: clamp(32px, 6vw, 64px); line-height: 1.1; margin: 0 0 20px; color: #fff; }
.tt-home-v2 .tt-hero-sub { font-size: clamp(16px, 2vw, 20px); line-height: 1.7; margin: 0 auto 32px; max-width: 700px; color: rgba(255,255,255,.92); }

/* Trust band v2 — full-bleed: dark band spans page width, inner content stays centered */
.tt-trust-band {
	position: relative; left: 50%; right: 50%;
	margin-left: -50vw; margin-right: -50vw; width: 100vw;
	background: #0a0500; color: #fff; padding: 32px 24px;
}
.tt-trust-items { max-width: 1200px; margin: 0 auto; display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; text-align: center; }
.tt-trust-item strong { display: block; font-family: "Playfair Display", var(--font-heading); font-size: 30px; color: #5fe3c8; }
.tt-trust-item span { font-size: 13px; letter-spacing: .03em; color: rgba(255,255,255,.72); }

/* About snippet */
.tt-about-snippet { background: linear-gradient(180deg, #ffffff 0%, #f3fbf9 100%); padding: 80px 24px; }
.tt-about-row { max-width: 1200px; margin: 0 auto; display: grid; grid-template-columns: 1.1fr .9fr; gap: 48px; align-items: center; }
.tt-about-text p { font-size: 16px; line-height: 1.8; color: #676767; margin: 0 0 18px; }
.tt-about-text .tt-btn { margin-top: 8px; }
.tt-about-img img { border-radius: 20px; box-shadow: 0 18px 50px rgba(21,22,29,.18); width: 100%; height: auto; object-fit: cover; }

/* Features v2 */
.tt-home-v2 .tt-features { max-width: 1200px; margin: 80px auto; padding: 0 24px; }
.tt-features-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; }
.tt-feature { background: #fff; border-radius: 20px; padding: 32px 24px; text-align: center; box-shadow: 0 10px 30px rgba(21,22,29,.07); transition: transform .35s ease, box-shadow .35s ease; }
.tt-feature:hover { transform: translateY(-6px); box-shadow: 0 18px 44px rgba(21,22,29,.13); }
.tt-feature h3 { font-family: var(--font-heading); font-size: 18px; margin: 0 0 10px; color: #0a0500; }
.tt-feature p { font-size: 14px; line-height: 1.65; color: #676767; margin: 0; }

/* CTA v2 */
.tt-home-v2 .tt-cta { background: linear-gradient(135deg, #0a0500, #15302b); color: #fff; margin-top: 80px; padding: 72px 24px; text-align: center; }
.tt-home-v2 .tt-cta h2 { color: #fff; margin: 0 0 14px; }
.tt-home-v2 .tt-cta p { color: rgba(255,255,255,.78); font-size: 17px; max-width: 640px; margin: 0 auto 28px; }

/* ============================================================
   Route detail pages
   ============================================================ */
.tt-route-detail { color: #333; }
.tt-route-hero {
	position: relative; left: 50%; right: 50%; margin-left: -50vw; margin-right: -50vw;
	width: 100vw; min-height: 70vh; background-size: cover; background-position: center;
	display: flex; align-items: center; justify-content: center; text-align: center;
	padding: 140px 24px 80px; color: #fff;
}
.tt-route-hero-overlay { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(10,5,0,.75) 0%, rgba(10,5,0,.35) 50%, rgba(10,5,0,.65) 100%); }
.tt-route-hero-inner { position: relative; z-index: 2; max-width: 820px; }
.tt-route-hero-title { font-family: "Playfair Display", var(--font-heading); font-size: clamp(30px, 5vw, 54px); line-height: 1.1; margin: 0 0 14px; color: #fff; }
.tt-route-hero-sub { font-size: clamp(16px, 2vw, 20px); color: rgba(255,255,255,.9); margin: 0 0 28px; }

.tt-route-overview { max-width: 1200px; margin: 70px auto; padding: 0 24px; }
.tt-route-overview h2 { text-align: center; font-family: "Playfair Display", var(--font-heading); font-size: clamp(26px, 3vw, 38px); margin: 0 0 20px; }
.tt-route-overview > div > p { text-align: center; max-width: 760px; margin: 0 auto 32px; font-size: 17px; line-height: 1.7; color: #676767; }
.tt-route-highlights { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 16px; }
.tt-route-highlight { background: #fff; border-radius: 14px; padding: 18px 20px; box-shadow: 0 8px 24px rgba(21,22,29,.07); font-size: 14px; line-height: 1.55; color: #555; }
.tt-route-highlight strong { display: block; color: #25ad99; font-family: var(--font-heading); margin-bottom: 4px; }

/* Timeline */
.tt-route-days { max-width: 1200px; margin: 80px auto; padding: 0 24px; }
.tt-route-days h2 { text-align: center; font-family: "Playfair Display", var(--font-heading); font-size: clamp(26px, 3vw, 38px); margin: 0 0 44px; }
.tt-timeline { display: flex; flex-direction: column; gap: 36px; }
.tt-timeline-item { display: grid; grid-template-columns: 64px 1fr; gap: 24px; align-items: start; }
.tt-timeline-marker { width: 64px; height: 64px; border-radius: 50%; background: linear-gradient(135deg, #48bca2, #25ad99); color: #fff; display: flex; align-items: center; justify-content: center; font-family: var(--font-heading); font-weight: 700; font-size: 22px; box-shadow: 0 10px 24px rgba(37,173,153,.35); }
.tt-timeline-content { display: grid; grid-template-columns: 280px 1fr; gap: 28px; background: #fff; border-radius: 20px; padding: 24px; box-shadow: 0 10px 30px rgba(21,22,29,.08); }
.tt-timeline-img img { width: 100%; height: 190px; object-fit: cover; border-radius: 14px; display: block; }
.tt-timeline-text h3 { font-family: var(--font-heading); font-size: 20px; margin: 0 0 12px; color: #0a0500; }
.tt-timeline-text p { font-size: 15px; line-height: 1.8; color: #676767; margin: 0; }

/* Info cards */
.tt-route-info { background: #f3fbf9; padding: 70px 24px; }
.tt-info-grid { max-width: 1200px; margin: 0 auto; display: grid; grid-template-columns: 1fr 1fr; gap: 28px; }
.tt-info-card { background: #fff; border-radius: 20px; padding: 32px; box-shadow: 0 10px 30px rgba(21,22,29,.07); }
.tt-info-card h3 { font-family: var(--font-heading); font-size: 20px; margin: 0 0 14px; color: #0a0500; }
.tt-info-card p { font-size: 15px; line-height: 1.8; color: #676767; margin: 0; }

/* Route CTA */
.tt-route-cta { max-width: 800px; margin: 80px auto; padding: 0 24px; text-align: center; }
.tt-route-cta h2 { font-family: "Playfair Display", var(--font-heading); font-size: clamp(24px, 3vw, 36px); margin: 0 0 14px; }
.tt-route-cta p { font-size: 16px; color: #676767; margin: 0 0 24px; }

/* ============================================================
   Routes overview page
   ============================================================ */
.tt-routes-overview .tt-overview-hero { min-height: 60vh; }
.tt-routes-grid-section { max-width: 1200px; margin: 70px auto; padding: 0 24px; }
.tt-routes-grid-section .tt-routes-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; }
.tt-route-card-v2 { background: #fff; border-radius: 20px; overflow: hidden; box-shadow: 0 12px 34px rgba(21,22,29,.10); transition: transform .4s cubic-bezier(.16,1,.3,1), box-shadow .4s ease; display: flex; flex-direction: column; }
.tt-route-card-v2:hover { transform: translateY(-8px); box-shadow: 0 22px 52px rgba(21,22,29,.18); }
.tt-route-card-media { position: relative; height: 200px; background-size: cover; background-position: center; display: block; }
.tt-route-card-media .tt-route-num { position: absolute; top: 12px; left: 14px; font-family: "Playfair Display", Georgia, serif; font-size: 28px; font-weight: 700; color: #fff; text-shadow: 0 2px 10px rgba(0,0,0,.3); }
.tt-route-card-body { padding: 22px 24px 26px; display: flex; flex-direction: column; flex: 1; }
.tt-route-card-body h3 { font-family: var(--font-heading); font-size: 18px; margin: 0 0 10px; }
.tt-route-card-body h3 a { color: #0a0500; text-decoration: none; }
.tt-route-card-body h3 a:hover { color: #25ad99; }
.tt-route-card-body p { font-size: 14px; line-height: 1.65; color: #676767; margin: 0 0 16px; flex: 1; }

/* ============================================================
   About Us page
   ============================================================ */
.tt-about-page .tt-about-hero { min-height: 60vh; }
.tt-about-intro { max-width: 900px; margin: 0 auto; font-size: 17px; line-height: 1.9; }
.tt-about-intro .lead { font-size: 19px; color: #0a0500; }
.tt-services, .tt-strengths, .tt-history, .tt-fleet { max-width: 1200px; margin: 80px auto; padding: 0 24px; }
.tt-services-grid, .tt-strengths-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.tt-service-card, .tt-strength { background: #fff; border-radius: 18px; padding: 28px; box-shadow: 0 10px 30px rgba(21,22,29,.07); transition: transform .35s ease, box-shadow .35s ease; }
.tt-service-card:hover, .tt-strength:hover { transform: translateY(-5px); box-shadow: 0 18px 44px rgba(21,22,29,.12); }
.tt-service-card h3, .tt-strength h3 { font-family: var(--font-heading); font-size: 18px; margin: 0 0 10px; color: #0a0500; }
.tt-service-card p, .tt-strength p { font-size: 14px; line-height: 1.65; color: #676767; margin: 0; }
.tt-timeline-compact { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; }
.tt-timeline-compact-item { display: flex; gap: 16px; background: #fff; border-radius: 14px; padding: 18px 22px; box-shadow: 0 8px 24px rgba(21,22,29,.07); }
.tt-timeline-compact-item .tt-year { font-family: var(--font-heading); font-weight: 700; color: #25ad99; min-width: 50px; }
.tt-timeline-compact-item .tt-event { color: #555; font-size: 15px; }
.tt-fleet-list { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; list-style: none; padding: 0; margin: 20px 0 0; }
.tt-fleet-list li { background: #fff; border-radius: 12px; padding: 14px 18px; box-shadow: 0 6px 20px rgba(21,22,29,.06); font-size: 14px; color: #555; }

/* Responsive */
@media (max-width: 1024px) {
	.tt-trust-items { grid-template-columns: repeat(2, 1fr); }
	.tt-about-row { grid-template-columns: 1fr; }
	.tt-features-grid { grid-template-columns: repeat(2, 1fr); }
	.tt-timeline-content { grid-template-columns: 1fr; }
	.tt-info-grid { grid-template-columns: 1fr; }
	.tt-routes-grid-section .tt-routes-grid { grid-template-columns: repeat(2, 1fr); }
	.tt-services-grid, .tt-strengths-grid { grid-template-columns: repeat(2, 1fr); }
	.tt-timeline-compact { grid-template-columns: 1fr; }
}
@media (max-width: 760px) {
	.tt-home-v2 .tt-home-hero { min-height: 78vh; padding-top: 100px; }
	.tt-trust-items { grid-template-columns: 1fr 1fr; }
	.tt-features-grid { grid-template-columns: 1fr; }
	.tt-route-hero { min-height: 60vh; padding-top: 100px; }
	.tt-timeline-item { grid-template-columns: 48px 1fr; gap: 14px; }
	.tt-timeline-marker { width: 48px; height: 48px; font-size: 18px; }
	.tt-routes-grid-section .tt-routes-grid { grid-template-columns: 1fr; }
	.tt-services-grid, .tt-strengths-grid { grid-template-columns: 1fr; }
	.tt-fleet-list { grid-template-columns: 1fr; }
	.tt-hero-actions { flex-direction: column; }
}

/* =========================================================================
   Hero band removal — layout compensation (site-wide)
   ========================================================================= */

/* Pages that open with their own full-bleed band must sit flush under the header. */
.tt-fullbleed-top .site-main > [data-vertical-spacing*="top"] { padding-top: 0; }
.tt-fullbleed-top .entry-content > div:first-child { margin-top: 0; }
.tt-fullbleed-top .entry-content > div:first-child > section:first-child,
.tt-fullbleed-top .entry-content > div:first-child > .tt-route-hero:first-child { margin-block-start: 0; }
.tt-fullbleed-top article.page > .entry-content { margin-top: 0; }

/* Ordinary pages/archives: hero band gone, so tighten the gap left behind
   without letting content collide with the header. */
body:not(.tt-fullbleed-top):not(.home) .site-main > [data-vertical-spacing*="top"] {
	padding-top: clamp(40px, 5vw, 64px);
}

/* Blog / single article heading re-injected in place of the old title band. */
.tt-entry-head { margin: 0 0 32px; }
.tt-entry-title {
	font-family: "Playfair Display", var(--font-heading, serif);
	font-size: clamp(28px, 4vw, 44px);
	line-height: 1.25;
	margin: 0 0 10px;
}
.tt-entry-meta { margin: 0; font-size: 14px; opacity: .6; letter-spacing: .04em; }

/* =========================================================================
   Contacts page
   ========================================================================= */
.tt-contact-hero { min-height: 46vh; }
.tt-contact-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 56px;
	align-items: start;
}
.tt-contact-intro p { line-height: 1.85; opacity: .82; }
.tt-contact-list { list-style: none; padding: 0; margin: 26px 0 0; }
.tt-contact-list li {
	padding: 12px 0;
	border-bottom: 1px solid rgba(0,0,0,.07);
	font-size: 15px;
	line-height: 1.7;
}
.tt-contact-list li:last-child { border-bottom: 0; }
.tt-contact-list strong { display: inline-block; min-width: 88px; opacity: .55; font-weight: 500; }
.tt-contact-form {
	background: #fff;
	border: 1px solid rgba(0,0,0,.07);
	border-radius: 18px;
	padding: 34px;
	box-shadow: 0 18px 50px rgba(0,0,0,.06);
}
.tt-contact-form input[type="text"],
.tt-contact-form input[type="tel"],
.tt-contact-form input[type="email"],
.tt-contact-form textarea {
	width: 100%;
	max-width: 100%;
	padding: 12px 14px;
	border: 1px solid rgba(0,0,0,.12);
	border-radius: 10px;
	font-size: 15px;
}
.tt-contact-form div[style*="341px"] { width: 100% !important; }
.tt-contact-form input[type="submit"] {
	width: 100%;
	padding: 14px 20px;
	border: 0;
	border-radius: 999px;
	background: var(--theme-palette-color-1, #0f6b5c);
	color: #fff;
	font-size: 16px;
	cursor: pointer;
	transition: transform .3s cubic-bezier(.16,1,.3,1), box-shadow .3s;
}
.tt-contact-form input[type="submit"]:hover {
	transform: translateY(-2px);
	box-shadow: 0 12px 28px rgba(0,0,0,.16);
}

/* =========================================================================
   Footer — copyright only
   ========================================================================= */
.ct-footer [data-row="top"],
.ct-footer [data-row="middle"] { display: none; }
.ct-footer [data-row="bottom"] { border-top: 0; }
.ct-footer-copyright {
	text-align: center;
	font-size: 14px;
	opacity: .7;
	padding: 26px 0;
}
.ct-footer-copyright p { margin: 0; }

@media (max-width: 860px) {
	.tt-contact-grid { grid-template-columns: 1fr; gap: 36px; }
	.tt-contact-form { padding: 24px; }
}

/* -------------------------------------------------------------------------
 * Blog grid (旅行资讯) — reuses the .tt-route-card-v2 card for consistency
 * with the rest of the site. Only the date line, "阅读全文" link and the
 * no-thumbnail fallback need extra rules.
 * ---------------------------------------------------------------------- */
.tt-blog-grid-section { margin-top: 64px; margin-bottom: 64px; }

.tt-route-card-media--fallback {
	background-image: linear-gradient(135deg, #0d3b36 0%, #25ad99 100%);
}

.tt-route-card-date {
	flex: 0 0 auto;
	font-size: 12px;
	letter-spacing: .04em;
	color: #9a9a9a;
	margin: 0 0 8px;
}

.tt-route-card-link {
	display: inline-block;
	margin-top: auto;
	align-self: flex-start;
	font-size: 14px;
	font-weight: 600;
	color: #25ad99;
	text-decoration: none;
	transition: color .25s ease, transform .25s ease;
}

.tt-route-card-link:hover {
	color: #0d3b36;
	transform: translateX(3px);
}

/* ============================================================
   Contact Form 7 — validation feedback + cf7ic image captcha
   ------------------------------------------------------------
   The contact form used to show only the generic "出现错误" bar:
   its markup had six unterminated style="width:341px;> attributes
   which swallowed the .wpcf7-form-control-wrap elements CF7 needs
   to anchor per-field tips. Markup is fixed in the form itself;
   the rules below make that feedback legible and make the
   mandatory image captcha impossible to overlook.
   ============================================================ */

/* ---------- Per-field error tips ---------- */
.wpcf7-form .wpcf7-not-valid-tip {
	display: block;
	position: relative;
	margin-top: 6px;
	padding-left: 21px;
	font-size: 13px;
	line-height: 1.5;
	font-weight: 600;
	color: #d63638;
}

.wpcf7-form .wpcf7-not-valid-tip::before {
	content: "!";
	position: absolute;
	left: 0;
	top: 2px;
	width: 15px;
	height: 15px;
	border-radius: 50%;
	background: #d63638;
	color: #fff;
	font-size: 11px;
	font-weight: 700;
	line-height: 15px;
	text-align: center;
}

.wpcf7-form .wpcf7-not-valid {
	border-color: #d63638 !important;
	box-shadow: 0 0 0 3px rgba(214, 54, 56, .12);
}

/* ---------- Response bar ---------- */
.wpcf7 form .wpcf7-response-output {
	margin: 18px 0 0;
	padding: 12px 16px;
	border-width: 1px;
	border-radius: 10px;
	font-size: 14px;
	line-height: 1.6;
	text-align: left;
}

.wpcf7 form.invalid .wpcf7-response-output,
.wpcf7 form.unaccepted .wpcf7-response-output,
.wpcf7 form.payment-required .wpcf7-response-output {
	border-color: #f0b429;
	background: #fff8e6;
	color: #7a5300;
}

.wpcf7 form.failed .wpcf7-response-output,
.wpcf7 form.aborted .wpcf7-response-output,
.wpcf7 form.spam .wpcf7-response-output {
	border-color: #d63638;
	background: #fdecec;
	color: #8a1f21;
}

.wpcf7 form.sent .wpcf7-response-output {
	border-color: var(--tt-primary);
	background: #eaf8f8;
	color: #17696b;
}

/* ---------- cf7ic image captcha ---------- */
.wpcf7-form-control-wrap.kc_captcha {
	display: block;
}

.wpcf7-form .captcha-image {
	display: block;
	box-sizing: border-box;
	width: 341px;
	max-width: 100%;
	margin: 4px 0 0;
	padding: 14px 16px 12px;
	border: 1px solid #dfe4e8;
	border-left: 3px solid var(--tt-primary);
	border-radius: 12px;
	background: #f8fbfb;
	text-align: left;
}

.wpcf7-form .captcha-image .cf7ic_instructions {
	display: block;
	margin: 0 0 10px;
	font-size: 14px;
	line-height: 1.7;
	font-weight: 600;
	color: var(--tt-title);
}

/* Required-step pill — text localized by <html lang> (Polylang sets zh-CN / en-US) */
.wpcf7-form .captcha-image .cf7ic_instructions::before {
	display: inline-block;
	margin-right: 8px;
	padding: 2px 7px;
	border-radius: 4px;
	background: #d63638;
	color: #fff;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .08em;
	vertical-align: 2px;
}

html[lang^="zh"] .wpcf7-form .captcha-image .cf7ic_instructions::before {
	content: "必选";
}

html[lang^="en"] .wpcf7-form .captcha-image .cf7ic_instructions::before {
	content: "Required";
}

.wpcf7-form .captcha-image .cf7ic_instructions span {
	color: var(--tt-primary);
	font-weight: 700;
}

/* Icon choices — bigger hit area, clear hover + checked states */
.wpcf7-form .captcha-image > label {
	display: inline-block !important;
	margin: 0 10px 0 0;
	line-height: 0;
	vertical-align: middle;
	cursor: pointer;
}

.wpcf7-form .captcha-image label > input + svg {
	box-sizing: border-box;
	width: 58px;
	height: 58px;
	padding: 13px;
	border: 2px solid #dfe4e8;
	border-radius: 12px;
	background: #fff;
	color: #8b929c;
	transition: transform .3s cubic-bezier(.16, 1, .3, 1),
	            border-color .25s ease,
	            box-shadow .25s ease,
	            color .25s ease;
}

.wpcf7-form .captcha-image label:hover > input + svg {
	transform: translateY(-3px);
	border-color: var(--tt-primary);
	color: var(--tt-primary);
	box-shadow: 0 8px 18px rgba(61, 176, 179, .22);
}

.wpcf7-form .captcha-image label > input:checked + svg,
.wpcf7-form .captcha-image label > input:focus-visible + svg {
	border: 2px solid var(--tt-primary) !important;
	background: #e9f7f7;
	color: var(--tt-primary);
	box-shadow: 0 0 0 4px rgba(61, 176, 179, .18);
}

.wpcf7-form-control-wrap.kc_captcha .wpcf7-not-valid-tip {
	margin-top: 10px;
}

@media (prefers-reduced-motion: reduce) {
	.wpcf7-form .captcha-image label > input + svg {
		transition: none;
	}
.wpcf7-form .captcha-image label:hover > input + svg {
	transform: none;
}
}

/* ---------- Language switcher (Polylang) in header ---------- */
/* Polylang emits bare <li class="lang-item ..."> items inside the wrapper
   (no <ul> wrapper in this theme context). Style them directly, and also
   cover the case where a <ul> is present. */
.tt-lang-switcher {
	display: flex;
	align-items: center;
	gap: 10px;
}

.tt-lang-switcher > ul {
	display: flex;
	align-items: center;
	gap: 10px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.tt-lang-switcher > ul > li,
.tt-lang-switcher > li {
	display: inline-flex;
	align-items: center;
	list-style: none;
}

.tt-lang-switcher a {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	font-family: var(--font-body);
	font-size: 13px;
	line-height: 1;
	color: var(--tt-text);
	text-decoration: none;
	opacity: 0.72;
	transition: opacity 0.2s ease, color 0.2s ease;
}

.tt-lang-switcher a:hover {
	opacity: 1;
	color: var(--tt-primary);
}

.tt-lang-switcher .current-lang > a {
	opacity: 1;
	color: var(--tt-primary);
	font-weight: 600;
}

.tt-lang-switcher img {
	border-radius: 2px;
	display: inline-block;
	vertical-align: middle;
	width: 18px;
	height: auto;
}

/* Mobile offcanvas: let the switcher breathe a little more */
@media (max-width: 989px) {
	.tt-lang-switcher,
	.tt-lang-switcher > ul {
		gap: 14px;
	}
}
/* ============================================================
   Route SEO block (.route-detail-seo) — added by Talia SEO
   Harmonized with brand tokens; shared by ZH + EN locales.
   ============================================================ */
.route-detail-seo {
	max-width: 1200px;
	margin: 72px auto;
	padding: 0 24px;
	font-family: var(--font-body);
	color: var(--tt-text);
}
.route-detail-seo .seo-lead {
	font-size: 17px;
	line-height: 1.9;
	color: #444;
	margin: 0 0 6px;
}
.route-detail-seo h2 {
	font-family: var(--font-heading);
	font-size: clamp(22px, 2.6vw, 30px);
	line-height: 1.3;
	color: var(--tt-title);
	margin: 44px 0 18px;
	padding-left: 14px;
	border-left: 4px solid var(--tt-primary);
}
.route-detail-seo h3 {
	font-family: var(--font-heading);
	font-size: 19px;
	color: var(--tt-title);
	margin: 0 0 12px;
}
.route-detail-seo p {
	font-size: 16px;
	line-height: 1.9;
	margin: 0 0 14px;
}
/* Day-by-day list as soft cards */
.route-detail-seo ul.seo-days {
	list-style: none;
	margin: 0 0 14px;
	padding: 0;
}
.route-detail-seo ul.seo-days li {
	position: relative;
	padding: 14px 18px 14px 46px;
	margin-bottom: 12px;
	background: #fff;
	border: 1px solid rgba(21, 22, 29, .07);
	border-radius: 14px;
	box-shadow: 0 6px 20px rgba(21, 22, 29, .05);
	font-size: 15px;
	line-height: 1.8;
	color: #555;
}
.route-detail-seo ul.seo-days li::before {
	content: "";
	position: absolute;
	left: 16px;
	top: 18px;
	width: 14px;
	height: 14px;
	border-radius: 50%;
	background: linear-gradient(135deg, #48bca2, #25ad99);
}
/* Included / excluded two-column cards */
.route-detail-seo .seo-cols {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 22px;
	margin: 8px 0 14px;
}
.route-detail-seo .seo-col {
	background: #f3fbf9;
	border-radius: 18px;
	padding: 22px 24px;
}
.route-detail-seo ul.seo-list {
	list-style: none;
	margin: 0;
	padding: 0;
}
.route-detail-seo ul.seo-list li {
	position: relative;
	padding: 8px 0 8px 24px;
	font-size: 15px;
	line-height: 1.7;
	color: #555;
	border-bottom: 1px solid rgba(21, 22, 29, .06);
}
.route-detail-seo ul.seo-list li:last-child {
	border-bottom: 0;
}
.route-detail-seo ul.seo-list li::before {
	content: "\2713";
	position: absolute;
	left: 0;
	top: 8px;
	color: var(--tt-primary);
	font-weight: 700;
}
/* FAQ as Q/A cards */
.route-detail-seo .route-faq {
	margin-top: 8px;
}
.route-detail-seo .faq-item {
	background: #fff;
	border: 1px solid rgba(21, 22, 29, .08);
	border-radius: var(--tt-radius);
	padding: 20px 22px;
	margin-bottom: 14px;
	box-shadow: 0 8px 24px rgba(21, 22, 29, .06);
}
.route-detail-seo .faq-item dt {
	position: relative;
	font-family: var(--font-heading);
	font-weight: 700;
	font-size: 17px;
	color: var(--tt-title);
	margin: 0 0 8px;
	padding-left: 32px;
}
.route-detail-seo .faq-item dt::before {
	content: "Q";
	position: absolute;
	left: 0;
	top: 0;
	width: 22px;
	height: 22px;
	border-radius: 50%;
	background: var(--tt-primary);
	color: #fff;
	font-size: 13px;
	display: flex;
	align-items: center;
	justify-content: center;
}
.route-detail-seo .faq-item dd {
	margin: 0;
	padding-left: 32px;
	font-size: 15px;
	line-height: 1.8;
	color: #676767;
}
.route-detail-seo--listing {
	margin-top: 56px;
}
@media (max-width: 760px) {
	.route-detail-seo .seo-cols {
		grid-template-columns: 1fr;
	}
	.route-detail-seo {
		margin: 56px auto;
	}
}
