/*!
Theme Name:        Angkor Asia Adventures
Theme URI:         https://angkorasiaadventures.com
Author:            Angkor Asia Adventures
Author URI:        https://angkorasiaadventures.com
Description:       Premium Travel Booking System & Travel Operations theme for Angkor Asia Adventures — a Destination Management Company for Cambodia, Laos & Vietnam. Pairs with the "Angkor Asia Adventures Travel OS" plugin. WooCommerce-ready booking, day-by-day itineraries, sellable activities, structured data (SEO/AEO/GEO), and a mobile-first premium travel aesthetic. One of a kind, built exclusively for angkorasiaadventures.com.
Version:           3.16.15
Requires at least: 6.2
Tested up to:      6.6
Requires PHP:      7.4
License:           GNU General Public License v2 or later
License URI:       https://www.gnu.org/licenses/gpl-2.0.html
Text Domain:       angkor-asia-adventures
Tags:              travel, tourism, booking, woocommerce, custom-colors, custom-logo, custom-menu, featured-images, translation-ready
*/

/* =========================================================================
   Design tokens — Angkor Asia Adventures brand palette (gold & temple brown)
   ========================================================================= */
:root {
	--ink:        #241407;   /* Angkor stone ink — body text, matches logo badge */
	--ink-soft:   #5c4a34;   /* muted text */
	--forest:     #2a1608;   /* deep temple brown — primary brand (was Mekong green) */
	--forest-deep:#180b02;   /* footer / deep panels */
	--gold:       #eeae05;   /* Angkor Asia Adventures logo gold — accent */
	--gold-deep:  #b8830a;
	--paper:      #fff8e6;   /* warm gold-tinted paper — page bg */
	--paper-2:    #fbedc4;   /* alt panel */
	--card:       #ffffff;
	--line:       #ecdca4;   /* hairline */
	--white:      #ffffff;

	--wrap: 1200px;
	--radius: 14px;
	--radius-sm: 9px;
	--shadow: 0 18px 40px -24px rgba(24, 11, 2, .35);
	--shadow-sm: 0 8px 20px -14px rgba(24, 11, 2, .3);

	--font-display: "Fraunces", "Iowan Old Style", Georgia, serif;
	--font-body: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}

/* =========================================================================
   Base
   ========================================================================= */
*, *::before, *::after { box-sizing: border-box; }

body {
	margin: 0;
	font-family: var(--font-body);
	color: var(--ink);
	background: var(--paper);
	line-height: 1.65;
	font-size: 17px;
	-webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4 {
	font-family: var(--font-display);
	font-weight: 500;
	line-height: 1.12;
	color: var(--ink);
	margin: 0 0 .5em;
	letter-spacing: -.01em;
}
h1 { font-size: clamp(2.2rem, 5vw, 3.6rem); }
h2 { font-size: clamp(1.7rem, 3.4vw, 2.6rem); }
h3 { font-size: clamp(1.25rem, 2vw, 1.55rem); }

p { margin: 0 0 1.1em; }

a { color: var(--forest); text-decoration: none; transition: color .18s ease; }
a:hover { color: var(--gold-deep); }

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

:focus-visible { outline: 3px solid var(--gold); outline-offset: 2px; }

.screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px;
	padding: 0; margin: -1px; overflow: hidden;
	clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}
.skip-link {
	position: absolute; left: -999px; top: 0; z-index: 100;
	background: var(--forest); color: #fff; padding: 12px 20px; border-radius: 0 0 8px 0;
}
.skip-link:focus { left: 0; color: #fff; }

.wrap { max-width: var(--wrap); margin-inline: auto; padding-inline: 22px; }
.wrap-wide { max-width: 1360px; margin-inline: auto; padding-inline: 22px; }

.section { padding: clamp(48px, 8vw, 96px) 0; }
.section--paper2 { background: var(--paper-2); }
.section--forest { background: var(--forest-deep); color: #f3e9d2; }
.section--forest h1, .section--forest h2, .section--forest h3 { color: var(--white); }

.eyebrow {
	font-family: var(--font-body);
	font-size: .78rem;
	font-weight: 600;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: var(--gold-deep);
	display: inline-flex;
	align-items: center;
	gap: 10px;
	margin-bottom: 14px;
}
.eyebrow::before {
	content: "";
	width: 34px; height: 2px;
	background: var(--gold);
	display: inline-block;
}
.section--forest .eyebrow { color: var(--gold); }

.lead { font-size: 1.15rem; color: var(--ink-soft); max-width: 62ch; }

/* =========================================================================
   Buttons
   ========================================================================= */
.btn {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	font-family: var(--font-body);
	font-weight: 600;
	font-size: .98rem;
	padding: 14px 26px;
	border-radius: 100px;
	border: 1.5px solid transparent;
	cursor: pointer;
	transition: transform .15s ease, background .18s ease, color .18s ease, border-color .18s ease;
	line-height: 1;
}
.btn:active { transform: translateY(1px); }
.btn--gold { background: var(--gold); color: #241a06; }
.btn--gold:hover { background: var(--gold-deep); color: #fff; }
.btn--forest { background: var(--forest); color: #fff; }
.btn--forest:hover { background: var(--forest-deep); color: #fff; }
.btn--ghost { background: transparent; border-color: currentColor; color: var(--ink); }
.btn--ghost:hover { background: var(--ink); color: var(--paper); }
.btn--light { background: #fff; color: var(--forest); }
.btn--light:hover { background: var(--gold); color: #241a06; }
.btn--block { width: 100%; justify-content: center; }

/* =========================================================================
   Header
   ========================================================================= */
.site-header {
	position: sticky;
	top: 0;
	z-index: 60;
	background: color-mix(in srgb, var(--paper) 88%, transparent);
	backdrop-filter: saturate(1.4) blur(10px);
	border-bottom: 1px solid var(--line);
}
.header-inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	min-height: 76px;
}
.brand { display: flex; align-items: center; gap: 12px; }
.brand a,
.brand__link { display: inline-flex; align-items: center; gap: 12px; color: var(--ink); }
.brand__mark {
	width: 40px; height: 40px; border-radius: 10px;
	background: linear-gradient(140deg, var(--forest), var(--forest-deep));
	color: var(--gold);
	display: grid; place-items: center;
	font-family: var(--font-display); font-weight: 600; font-size: 1.15rem;
	box-shadow: var(--shadow-sm);
}
.brand__logo--img {
	border-radius: 50%;
	object-fit: cover;
	box-shadow: 0 0 0 2px var(--gold), var(--shadow-sm);
}
.brand__name { font-family: var(--font-display); font-size: 1.4rem; font-weight: 600; line-height: 1; }
.brand__name span { color: var(--gold-deep); }
.brand__tag { display: block; font-family: var(--font-body); font-size: .64rem; letter-spacing: .22em; text-transform: uppercase; color: var(--ink-soft); margin-top: 3px; }

/* Primary navigation — multi-level dropdowns (1.2.0). */
.primary-nav .nav-menu { list-style: none; display: flex; gap: 2px; margin: 0; padding: 0; align-items: center; }
.primary-nav .nav-menu li { position: relative; }
.primary-nav a {
	display: block; padding: 9px 13px; border-radius: 100px;
	font-weight: 500; font-size: .94rem; color: var(--ink); white-space: nowrap;
}
.primary-nav a:hover,
.primary-nav .current-menu-item > a,
.primary-nav .current-menu-ancestor > a { background: var(--paper-2); color: var(--forest); }

/* Caret on parents. */
.primary-nav .menu-item-has-children > a::after {
	content: ""; display: inline-block; width: .4em; height: .4em; margin-left: .45em; vertical-align: middle;
	border-right: 2px solid currentColor; border-bottom: 2px solid currentColor;
	transform: translateY(-2px) rotate(45deg); opacity: .5;
}

/* Dropdown panels. */
.primary-nav .sub-menu {
	list-style: none; margin: 0; padding: 6px; position: absolute; top: 100%; left: 0; min-width: 236px;
	background: var(--card); border: 1px solid var(--line); border-radius: 14px;
	box-shadow: 0 24px 54px -30px rgba(36,20,7,.55);
	opacity: 0; visibility: hidden; transform: translateY(8px);
	transition: opacity .16s ease, transform .16s ease, visibility 0s linear .16s; z-index: 60;
}
.primary-nav .menu-item:hover > .sub-menu,
.primary-nav .menu-item:focus-within > .sub-menu {
	opacity: 1; visibility: visible; transform: translateY(4px); transition-delay: 0s;
}
.primary-nav .sub-menu a { border-radius: 9px; font-size: .9rem; padding: 8px 11px; color: var(--ink); }

/* Third level flies out to the side. */
.primary-nav .sub-menu .sub-menu { top: -7px; left: calc(100% + 4px); }
.primary-nav .sub-menu .menu-item-has-children > a { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.primary-nav .sub-menu .menu-item-has-children > a::after { margin-left: 0; transform: rotate(-45deg); }

/* Injected mobile submenu toggle (hidden on desktop). */
.aat-subtoggle { display: none; }

.header-cta { display: flex; align-items: center; gap: 14px; }
.header-phone { font-weight: 600; color: var(--forest); white-space: nowrap; font-size: .95rem; }
.header-phone small { display: block; font-weight: 500; font-size: .68rem; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-soft); }

.header-cart { position: relative; display: inline-flex; align-items: center; justify-content: center; color: var(--forest); padding: 6px; }
.header-cart__count { position: absolute; top: -2px; right: -2px; min-width: 16px; height: 16px; padding: 0 3px; border-radius: 999px; background: var(--gold); color: #fff; font-size: .65rem; font-weight: 700; line-height: 16px; text-align: center; }
.nav-toggle { display: none; background: none; border: 0; cursor: pointer; padding: 8px; }
.nav-toggle span { display: block; width: 26px; height: 2px; background: var(--ink); margin: 5px 0; transition: .2s; }

/* =========================================================================
   Hero
   ========================================================================= */
.hero {
	position: relative;
	color: #fff;
	min-height: min(84vh, 760px);
	display: flex;
	align-items: flex-end;
	overflow: hidden;
}
.hero__media { position: absolute; inset: 0; }
.hero__media img { width: 100%; height: 100%; object-fit: cover; }
.hero__media::after {
	content: "";
	position: absolute; inset: 0; z-index: 1;
	background: linear-gradient(180deg, rgba(24,11,2,.15) 0%, rgba(24,11,2,.35) 45%, rgba(24,11,2,.85) 100%);
}

/* --- 3-slide crossfade background (Angkor Wat / Laos / Vietnam) --- */
.hero__slide {
	position: absolute; inset: 0;
	opacity: 0;
	animation: heroFade 18s ease-in-out infinite;
	will-change: opacity;
}
.hero__slide.is-active { opacity: 1; }
.hero__slide img { width: 100%; height: 100%; object-fit: cover; }
@keyframes heroFade {
	0%   { opacity: 0; }
	3%   { opacity: 1; }
	30%  { opacity: 1; }
	36%  { opacity: 0; }
	100% { opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
	.hero__slide { animation: none; opacity: 0; }
	.hero__slide.is-active { opacity: 1; }
}

/* Progress dots for the slideshow, echoing the active slide. */
.hero__dots { display: flex; gap: 8px; list-style: none; margin: 22px 0 0; padding: 0; }
.hero__dots li {
	width: 26px; height: 4px; border-radius: 4px;
	background: rgba(255,255,255,.32);
	position: relative; overflow: hidden;
}
.hero__dots li::after {
	content: ""; position: absolute; inset: 0; left: -100%;
	background: var(--gold);
	animation: heroDot 18s ease-in-out infinite;
}
@keyframes heroDot {
	0%   { left: -100%; }
	3%   { left: 0; }
	33%  { left: 0; }
	36%  { left: 101%; }
	100% { left: 101%; }
}
@media (prefers-reduced-motion: reduce) {
	.hero__dots li::after { animation: none; left: -100%; }
	.hero__dots li:first-child::after { left: 0; }
}

/* Logo seal over the hero art — the "feature slide" mark. Shown at its
   natural (non-circular) shape, no background plate or ring — just the
   artwork with a soft drop-shadow for depth over the rotating hero photos. */
.hero__seal {
	position: absolute; z-index: 3;
	top: 28px; right: clamp(20px, 4vw, 56px);
	width: clamp(84px, 9vw, 128px);
	height: auto;
	filter: drop-shadow(0 14px 30px rgba(0,0,0,.45));
	display: block;
	animation: hero-seal-in .7s cubic-bezier(.22,1,.36,1) both;
}
.hero__seal img { width: 100%; height: auto; display: block; }
@keyframes hero-seal-in {
	from { opacity: 0; transform: scale(.85) rotate(-6deg); }
	to   { opacity: 1; transform: scale(1) rotate(0); }
}
@media (prefers-reduced-motion: reduce) {
	.hero__seal { animation: none; }
}
@media (max-width: 720px) {
	.hero__seal { top: 18px; right: 18px; width: 72px; }
}

.hero__inner { position: relative; z-index: 2; padding-block: 54px 46px; }
.hero h1 { color: #fff; max-width: 16ch; text-shadow: 0 2px 30px rgba(0,0,0,.25); }
.hero h1 em { font-style: italic; color: var(--gold); }
.hero__sub { font-size: 1.2rem; max-width: 52ch; color: #f1ede2; }
.hero .eyebrow { color: var(--gold); }
.hero .eyebrow::before { background: var(--gold); }

/* Quick-search bar */
.searchbar {
	position: relative;
	z-index: 3;
	margin-top: -46px;
	background: var(--card);
	border-radius: var(--radius);
	box-shadow: var(--shadow);
	padding: 16px;
	display: grid;
	grid-template-columns: 1.3fr 1fr 1fr auto;
	gap: 12px;
	border: 1px solid var(--line);
}
.searchbar label { display: block; font-size: .72rem; letter-spacing: .1em; text-transform: uppercase; font-weight: 600; color: var(--ink-soft); margin-bottom: 5px; }
.searchbar select, .searchbar input {
	width: 100%; border: 1px solid var(--line); background: var(--paper);
	border-radius: var(--radius-sm); padding: 12px 14px; font: inherit; color: var(--ink); min-height: 48px;
}
.searchbar select:focus-visible, .searchbar input:focus-visible { outline: 2px solid var(--gold-deep); outline-offset: 1px; }
.searchbar .field { display: flex; flex-direction: column; justify-content: center; }
.searchbar .btn { align-self: end; min-height: 48px; }

/* The homepage "trust bar" (free cancellation / pay later / licensed guides
   / 24/7 support) no longer lives here as of 3.2.0 — it moved into the
   journey map's credit card (assets/css/journey-map.css → .journey-map__trust-*)
   and the standalone .trustbar component + markup were removed. */

/* =========================================================================
   Tour cards — marketplace layout (Airbnb / TripAdvisor / GetYourGuide)
   ========================================================================= */
.card-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(288px, 1fr));
	gap: 26px;
}
.tour-card {
	position: relative;
	background: var(--card);
	border: 1px solid var(--line);
	border-radius: var(--radius);
	overflow: hidden;
	display: flex;
	flex-direction: column;
	box-shadow: var(--shadow-sm);
	transition: transform .2s ease, box-shadow .2s ease;
}
.tour-card:hover { transform: translateY(-4px); box-shadow: var(--shadow); }
.tour-card:focus-within { box-shadow: 0 0 0 2px var(--gold-deep), var(--shadow); }

.tour-card__media { position: relative; aspect-ratio: 3 / 2; overflow: hidden; background: var(--paper-2); }
.tour-card__imglink { display: block; width: 100%; height: 100%; }
.tour-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.tour-card:hover .tour-card__media img { transform: scale(1.05); }

.tour-card__badge {
	position: absolute; top: 12px; left: 12px;
	background: rgba(24,11,2,.82); color: var(--gold);
	font-size: .72rem; font-weight: 600; letter-spacing: .03em;
	padding: 6px 11px; border-radius: 100px; backdrop-filter: blur(2px);
}
.tour-card__dur {
	position: absolute; left: 12px; bottom: 12px;
	display: inline-flex; align-items: center; gap: 6px;
	background: rgba(255,255,255,.94); color: var(--ink);
	font-size: .76rem; font-weight: 600; padding: 6px 10px; border-radius: 100px;
}
.tour-card__dur svg { width: 14px; height: 14px; fill: none; stroke: var(--forest); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }

/* Save / wishlist "trail marker". */
.wishlist-btn {
	position: absolute; top: 10px; right: 10px; z-index: 2;
	width: 40px; height: 40px; padding: 0; cursor: pointer;
	display: grid; place-items: center; border: 0; border-radius: 50%;
	background: rgba(255,255,255,.9); box-shadow: 0 4px 12px -6px rgba(24,11,2,.5);
	transition: transform .15s ease, background .15s ease;
}
.wishlist-btn:hover { transform: scale(1.08); background: #fff; }
.wishlist-btn:focus-visible { outline: 2px solid var(--gold-deep); outline-offset: 2px; }
.wishlist-btn svg { width: 22px; height: 22px; fill: none; stroke: var(--forest); stroke-width: 1.8; transition: fill .15s ease, stroke .15s ease; }
.wishlist-btn__dot { fill: transparent; stroke: none; }
.wishlist-btn[aria-pressed="true"] svg { fill: var(--gold); stroke: var(--gold-deep); }
.wishlist-btn[aria-pressed="true"] .wishlist-btn__dot { fill: var(--forest-deep); }

/* "Saved" signal badge — added client-side (assets/js/main.js) when a card's
   tour is in the visitor's wishlist; also used to float saved cards to the
   front of their card-grid. */
.tour-card__saved {
	position: absolute; bottom: 12px; right: 12px;
	display: inline-flex; align-items: center; gap: 5px;
	background: var(--gold); color: var(--ink);
	font-size: .72rem; font-weight: 700; letter-spacing: .02em;
	padding: 5px 11px; border-radius: 100px;
	box-shadow: 0 4px 12px -6px rgba(24,11,2,.5);
}

.tour-card__body { padding: 16px 18px 18px; display: flex; flex-direction: column; gap: 7px; flex: 1; }
.tour-card__ratingline { min-height: 20px; display: flex; align-items: center; }

.rating { display: inline-flex; align-items: center; gap: 5px; font-size: .88rem; color: var(--ink); }
.rating__star { color: var(--gold-deep); }
.rating strong { font-weight: 700; }
.rating__word { color: var(--forest); font-weight: 600; }
.rating__count { color: var(--ink-soft); }

.trust-chip {
	display: inline-flex; align-items: center; font-size: .76rem; font-weight: 600;
	color: var(--forest); background: var(--paper-2); padding: 4px 10px; border-radius: 100px;
}

.tour-card h3 { margin: 0; font-size: 1.16rem; line-height: 1.3; }
.tour-card h3 a {
	color: var(--ink); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.tour-card h3 a:hover { color: var(--forest); }

.tour-card__place, .tour-card__free { display: inline-flex; align-items: center; gap: 6px; margin: 0; font-size: .84rem; color: var(--ink-soft); }
.tour-card__place svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.tour-card__free { color: #3e7d54; font-weight: 600; }
.tour-card__free svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }

.tour-card__foot {
	margin-top: auto; padding-top: 13px;
	border-top: 1px dashed var(--line); /* trail motif */
	display: flex; align-items: flex-end; justify-content: space-between; gap: 10px;
}
.price { font-family: var(--font-display); line-height: 1.05; }
.price small { display: block; font-family: var(--font-body); font-size: .68rem; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-soft); }
.price strong { font-size: 1.5rem; color: var(--forest); font-weight: 600; }
.price__unit { font-family: var(--font-body); font-size: .76rem; color: var(--ink-soft); }
.tour-card__go {
	display: inline-flex; align-items: center; gap: 6px; flex: 0 0 auto;
	font-weight: 600; font-size: .9rem; color: var(--forest);
	padding: 9px 14px; border-radius: 100px; border: 1.5px solid var(--line);
	transition: background .15s ease, border-color .15s ease, color .15s ease;
}
.tour-card__go svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.tour-card__go:hover { background: var(--forest); color: #fff; border-color: var(--forest); }

/* Horizontal rail on small screens (Airbnb/GYG carousels). */
.card-grid--rail { grid-auto-flow: row; }

/* =========================================================================
   Section header
   ========================================================================= */
.section-head { max-width: 640px; margin-bottom: 40px; }
.section-head--center { margin-inline: auto; text-align: center; }
.section-head--center .eyebrow { justify-content: center; }

/* Destination tiles */
/* Pillar switch — History / Culture / Adventure tabs on taxonomy-experience.php pillar pages. */
.pillar-switch { display: flex; justify-content: center; gap: 10px; flex-wrap: wrap; margin-top: 22px; }
.pillar-switch__item {
	display: inline-flex; align-items: center; gap: 8px;
	padding: 10px 20px; border-radius: 999px;
	border: 1px solid var(--line); background: var(--card); color: var(--ink-soft);
	font-family: var(--font-body); font-weight: 600; font-size: .9rem;
	transition: background .25s ease, color .25s ease, border-color .25s ease;
}
.pillar-switch__item svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.pillar-switch__item:hover { border-color: var(--gold-deep); }
.pillar-switch__item.is-active { background: var(--forest); color: var(--white); border-color: var(--forest); }
.archive-head--pillar { padding-bottom: 8px; }

.dest-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
.dest-tile {
	position: relative; border-radius: var(--radius); overflow: hidden;
	min-height: 340px; display: flex; align-items: flex-end; color: #fff;
	box-shadow: var(--shadow-sm);
}
.dest-tile img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.dest-tile::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 30%, rgba(24,11,2,.9)); }
.dest-tile:hover img { transform: scale(1.06); }
.dest-tile__body { position: relative; z-index: 2; padding: 24px; }
.dest-tile h3 { color: #fff; margin: 0 0 4px; }
.dest-tile p { margin: 0; color: #f3e9d2; font-size: .9rem; }

/* Trust / features */
.feature-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; }
.feature { }
.feature__icon {
	width: 52px; height: 52px; border-radius: 13px;
	background: var(--paper-2); color: var(--forest);
	display: grid; place-items: center; margin-bottom: 14px; font-size: 1.4rem;
	border: 1px solid var(--line);
}
.section--forest .feature__icon { background: rgba(255,255,255,.08); color: var(--gold); border-color: rgba(255,255,255,.14); }
.feature h3 { font-size: 1.15rem; margin-bottom: 6px; }
.feature p { font-size: .92rem; color: var(--ink-soft); margin: 0; }
.section--forest .feature p { color: #e3d3ab; }

/* Stats strip */
.stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; text-align: center; }
.stat strong { display: block; font-family: var(--font-display); font-size: clamp(2rem, 4vw, 3rem); color: var(--gold); line-height: 1; }
.stat span { font-size: .85rem; letter-spacing: .08em; text-transform: uppercase; color: #e3d3ab; }

/* Reviews */
.review-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
.review {
	background: var(--card); border: 1px solid var(--line); border-radius: var(--radius);
	padding: 26px; box-shadow: var(--shadow-sm);
}
.review__stars { color: var(--gold); letter-spacing: 2px; margin-bottom: 10px; }
.review__text { font-family: var(--font-display); font-size: 1.1rem; font-style: italic; color: var(--ink); }
.review__who { margin-top: 14px; font-size: .88rem; color: var(--ink-soft); font-weight: 600; }

/* CTA band */
.cta-band { background: linear-gradient(140deg, var(--forest), var(--forest-deep)); color: #fff; border-radius: var(--radius); padding: clamp(36px, 6vw, 64px); text-align: center; box-shadow: var(--shadow); }
.cta-band h2 { color: #fff; }
.cta-band .lead { color: #d7e2db; margin-inline: auto; margin-bottom: 26px; }

/* =========================================================================
   Single tour
   ========================================================================= */
.tour-hero { position: relative; color: #fff; min-height: 60vh; display: flex; align-items: flex-end; }
.tour-hero__media { position: absolute; inset: 0; }
.tour-hero__media img { width: 100%; height: 100%; object-fit: cover; }
.tour-hero__media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(24,11,2,.1), rgba(24,11,2,.8)); }
.tour-hero__inner { position: relative; z-index: 2; padding-block: 40px; }
.tour-hero h1 { color: #fff; max-width: 20ch; }
.tour-hero__meta { display: flex; flex-wrap: wrap; gap: 22px; margin-top: 10px; font-weight: 500; }
.tour-hero__meta span { display: inline-flex; align-items: center; gap: 7px; }

.tour-layout { display: grid; grid-template-columns: 1fr 360px; gap: 44px; align-items: start; }
.tour-main :where(h2) { margin-top: 1.6em; }

.chips { display: flex; flex-wrap: wrap; gap: 10px; list-style: none; padding: 0; margin: 0 0 8px; }
.chips li { background: var(--paper-2); border: 1px solid var(--line); border-radius: 100px; padding: 8px 16px; font-size: .9rem; }
.chips li::before { content: "✦"; color: var(--gold-deep); margin-right: 7px; }

/* Itinerary accordion */
.itinerary { border-top: 1px solid var(--line); }
.itinerary__day { border-bottom: 1px solid var(--line); }
.itinerary__head {
	width: 100%; text-align: left; background: none; border: 0; cursor: pointer;
	display: flex; align-items: center; gap: 16px; padding: 20px 4px; font: inherit;
}
.itinerary__num {
	flex: none; width: 42px; height: 42px; border-radius: 50%;
	background: var(--forest); color: var(--gold); font-family: var(--font-display);
	display: grid; place-items: center; font-size: 1.05rem;
}
.itinerary__title { font-family: var(--font-display); font-size: 1.2rem; flex: 1; }
.itinerary__toggle { color: var(--forest); font-size: 1.4rem; transition: transform .2s; }
.itinerary__day.open .itinerary__toggle { transform: rotate(45deg); }
.itinerary__body { padding: 0 4px 22px 62px; color: var(--ink-soft); display: none; }
.itinerary__day.open .itinerary__body { display: block; }

/* Include / exclude */
.incexc { display: grid; grid-template-columns: 1fr 1fr; gap: 30px; }
.incexc ul { list-style: none; padding: 0; margin: 0; }
.incexc li { padding: 8px 0 8px 30px; position: relative; border-bottom: 1px dashed var(--line); }
.incexc .inc li::before { content: "✓"; position: absolute; left: 0; color: var(--forest); font-weight: 700; }
.incexc .exc li::before { content: "✕"; position: absolute; left: 0; color: #b0553f; font-weight: 700; }

/* Booking widget */
.booking {
	position: sticky; top: 96px;
	background: var(--card); border: 1px solid var(--line); border-radius: var(--radius);
	box-shadow: var(--shadow); overflow: hidden;
}
.booking__head { background: var(--forest); color: #fff; padding: 22px 24px; }
.booking__price { font-family: var(--font-display); font-size: 2.2rem; line-height: 1; }
.booking__price small { font-family: var(--font-body); font-size: .72rem; letter-spacing: .1em; text-transform: uppercase; opacity: .85; display: block; margin-bottom: 5px; }
.booking__body { padding: 22px 24px; }
.booking__row { display: flex; justify-content: space-between; padding: 10px 0; border-bottom: 1px dashed var(--line); font-size: .92rem; }
.booking__row span:first-child { color: var(--ink-soft); }
.booking__body .btn { margin-top: 18px; }
.booking__assure { margin-top: 14px; font-size: .82rem; color: var(--ink-soft); text-align: center; }

/* Quote form */
.quote-form { display: grid; gap: 14px; }
.quote-form label { font-size: .8rem; font-weight: 600; text-transform: uppercase; letter-spacing: .08em; color: var(--ink-soft); }
.quote-form input, .quote-form textarea, .quote-form select {
	width: 100%; padding: 12px 14px; border: 1px solid var(--line); border-radius: var(--radius-sm);
	font: inherit; background: var(--paper); color: var(--ink);
}
.quote-notice { padding: 12px 16px; border-radius: var(--radius-sm); background: #e7f0ea; border: 1px solid var(--forest); color: var(--forest-deep); margin-bottom: 16px; }
.quote-notice--err { background: #fbeae6; border-color: #b0553f; color: #7a3120; }
.quote-notice__price { margin: 6px 0 0; font-weight: 600; }

/* Map */
.tour-map iframe { width: 100%; height: 380px; border: 0; border-radius: var(--radius); }

/* Contact page */
.contact-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 32px; align-items: start; }
.contact-card {
	background: var(--card); border: 1px solid var(--line); border-radius: var(--radius);
	box-shadow: var(--shadow); padding: 32px;
}
.contact-card h2 { margin-top: 0; font-family: var(--font-display); font-size: 1.5rem; }
.contact-card__details { list-style: none; margin: 20px 0 0; padding: 0; display: grid; gap: 4px; }
.contact-card__details li {
	display: flex; justify-content: space-between; align-items: center; gap: 12px;
	padding: 12px 0; border-bottom: 1px dashed var(--line); font-size: .95rem;
}
.contact-card__details li:last-child { border-bottom: 0; }
.contact-card__details li span { color: var(--ink-soft); font-weight: 600; text-transform: uppercase; font-size: .72rem; letter-spacing: .06em; }
.contact-card__details li a { color: var(--forest); font-weight: 600; }
.contact-map__frame {
	border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow);
}
.contact-map__frame iframe { width: 100%; height: 450px; display: block; border: 0; }
@media (max-width: 860px) {
	.contact-grid { grid-template-columns: 1fr; }
}

/* Guide card */
.guide-mini { display: flex; gap: 16px; align-items: center; background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 16px; }
.guide-mini img { width: 66px; height: 66px; border-radius: 50%; object-fit: cover; flex: none; }
.guide-mini h4 { margin: 0 0 3px; font-size: 1.1rem; }
.guide-mini p { margin: 0; font-size: .85rem; color: var(--ink-soft); }

/* =========================================================================
   Archive filters
   ========================================================================= */
.archive-head { background: var(--forest-deep); color: #fff; padding: clamp(40px, 7vw, 72px) 0; }
.archive-head h1 { color: #fff; }
.archive-head p { color: #e3d3ab; max-width: 60ch; margin: 0; }
.filters { display: flex; flex-wrap: wrap; gap: 12px; margin-bottom: 34px; align-items: center; }
.filters select { padding: 11px 16px; border: 1px solid var(--line); border-radius: 100px; background: var(--card); font: inherit; color: var(--ink); }
.filters .count { margin-left: auto; color: var(--ink-soft); font-size: .9rem; }

/* =========================================================================
   Blog / content
   ========================================================================= */
.content-area { display: grid; grid-template-columns: 1fr 320px; gap: 44px; align-items: start; }
.post-card { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; margin-bottom: 28px; box-shadow: var(--shadow-sm); }
.post-card__media img { aspect-ratio: 16/9; object-fit: cover; width: 100%; }
.post-card__body { padding: 24px; }
.post-card__cat { font-size: .74rem; letter-spacing: .12em; text-transform: uppercase; color: var(--gold-deep); font-weight: 600; }
.entry-content { font-size: 1.06rem; }
.entry-content h2, .entry-content h3 { margin-top: 1.5em; }
.entry-content img { border-radius: var(--radius-sm); margin: 1.4em 0; }
.entry-content blockquote { border-left: 3px solid var(--gold); margin: 1.6em 0; padding: 6px 0 6px 24px; font-family: var(--font-display); font-style: italic; font-size: 1.25rem; }

.widget { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 22px; margin-bottom: 24px; }
.widget-title { font-size: 1.15rem; margin-bottom: 14px; }
.widget ul { list-style: none; padding: 0; margin: 0; }
.widget li { padding: 8px 0; border-bottom: 1px dashed var(--line); }

/* Breadcrumb */
.breadcrumb { font-size: .84rem; color: var(--ink-soft); padding: 16px 0; }
.breadcrumb a { color: var(--ink-soft); }
.breadcrumb a:hover { color: var(--forest); }
.breadcrumb .sep { margin: 0 8px; color: var(--gold-deep); }

/* Pagination */
.pagination { display: flex; gap: 8px; justify-content: center; margin-top: 40px; flex-wrap: wrap; }
.pagination .page-numbers { padding: 10px 16px; border-radius: 100px; border: 1px solid var(--line); background: var(--card); color: var(--ink); }
.pagination .current { background: var(--forest); color: #fff; border-color: var(--forest); }

/* =========================================================================
   Footer
   ========================================================================= */
.site-footer { background: var(--forest-deep); color: #e3d3ab; padding: 64px 0 30px; margin-top: 0; }
.footer-grid { display: grid; grid-template-columns: 1.5fr 1fr 1fr 1.4fr; gap: 40px; }
.site-footer h4 { color: #fff; font-size: 1.05rem; margin-bottom: 16px; }
.site-footer a { color: #e3d3ab; }
.site-footer a:hover { color: var(--gold); }
.site-footer .widget, .site-footer ul { background: none; border: 0; padding: 0; margin: 0; list-style: none; }
.site-footer li { border: 0; padding: 6px 0; }
.footer-brand .brand__name { color: #fff; }
.footer-newsletter input { width: 100%; padding: 12px 14px; border-radius: 100px; border: 1px solid rgba(255,255,255,.18); background: rgba(255,255,255,.06); color: #fff; margin-bottom: 10px; }
.footer-newsletter input::placeholder { color: #9fb0a8; }
.footer-bottom { border-top: 1px solid rgba(255,255,255,.12); margin-top: 46px; padding-top: 22px; display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; font-size: .84rem; color: #9fb0a8; }


/* Homepage "Need Something We Don't Cover?" — referral cards.
   Framed the same plain way "Everything we do" (front-page.php, the
   pillar-grid section right above the Signature Hook) is: a flat
   `--paper-2` panel, nothing else — no border, no shadow, no
   ornamentation, matching `.section--paper2` itself, which is exactly
   that one declaration. The carved bas-relief groove-border-plus-
   corner-dots treatment this had for one release (borrowed from the
   Signature Hook's closing tablet, `.journey-map__pillars`) is gone;
   that panel is now inset within a `.section` (not full-bleed, so the
   page's paper2 / plain / paper2 / plain section rhythm holds) purely
   to keep this reading as its own call-out, with none of the carved
   ornament. Cards inside stay a plain grid: logo, category + name,
   headline, hook, CTA pill. Nothing here is absolutely positioned, so
   a longer headline or a badge on one card can never drift into
   another element's space — the "referral voucher" treatment two
   releases back pinned a round stamp seal at a fixed top/right offset
   while a badge tag could independently occupy that same corner inside
   the ticket stub above it, so any partner with both a logo and a
   badge (e.g. AAA Trails) rendered with the seal overlapping the tag. */
.partner-showcase {
	background: var(--paper-2);
	border-radius: 6px;
	padding: clamp(28px, 5vw, 40px) clamp(18px, 4vw, 40px) clamp(24px, 4vw, 44px);
}
.partner-grid {
	display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px;
	max-width: 1200px; margin: 0 auto;
}
.partner-tile {
	position: relative;
	display: flex; flex-direction: column; gap: 12px;
	background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-sm, 12px);
	padding: 26px 22px 22px;
	box-shadow: var(--shadow-sm);
	transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.partner-tile--badged { padding-top: 34px; }
.partner-tile:hover { transform: translateY(-4px); box-shadow: var(--shadow); border-color: var(--gold); }
.partner-tile:focus-visible { outline: 2px solid var(--gold); outline-offset: 2px; }

/* Sits in the card's own top padding, above the border — never
   competes for space with the logo row or the headline below it. */
.partner-tile__badge {
	position: absolute; top: -12px; left: 22px;
	background: var(--gold); color: var(--ink);
	font-family: var(--font-body); font-size: .64rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase;
	padding: 5px 12px; border-radius: 100px;
}

.partner-tile__top { display: flex; align-items: center; gap: 12px; }
.partner-tile__logo {
	flex: 0 0 44px; width: 44px; height: 44px; border-radius: 50%;
	display: grid; place-items: center; overflow: hidden;
	background: var(--forest-deep);
}
.partner-tile__logo img { width: 100%; height: 100%; object-fit: cover; }
.partner-tile__logo span { font-family: var(--font-display); font-weight: 600; font-size: .9rem; color: var(--gold); }

.partner-tile__meta {
	font-family: var(--font-body); font-size: .64rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase;
	color: var(--ink-soft);
}

.partner-tile__headline { font-family: var(--font-display); font-size: 1.05rem; line-height: 1.28; color: var(--ink); }
.partner-tile__hook { font-size: .86rem; line-height: 1.5; color: var(--ink-soft); }
.partner-tile__cta {
	margin-top: auto; align-self: flex-start;
	background: var(--gold); color: var(--ink);
	font-family: var(--font-body); font-size: .8rem; font-weight: 600; padding: 9px 16px; border-radius: 100px;
}

@media (prefers-reduced-motion: reduce) {
	.partner-tile { transition: none; }
}

/* WhatsApp float */
.wa-float {
	position: fixed; right: 20px; bottom: 20px; z-index: 80;
	width: 56px; height: 56px; border-radius: 50%;
	background: #25d366; color: #fff; display: grid; place-items: center;
	box-shadow: 0 10px 30px -8px rgba(0,0,0,.4); font-weight: 700;
	transition: transform .15s ease;
	backface-visibility: hidden; transform: translateZ(0); /* avoids soft/blurred edges on GPU-composited hover */
}
.wa-float:hover { color: #fff; transform: translateZ(0) scale(1.05); }
.wa-float__icon { display: block; }

/* Trust bar — "Loved by travelers worldwide" (TripAdvisor / Google / GetYourGuide / Viator / Klook) */
.trust-bar { margin: 40px 0 0; }
.trust-bar__frame {
	border: 1px solid rgba(238,174,5,.35);
	border-radius: 16px;
	background: rgba(255,255,255,.04);
	padding: 22px 26px;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
}
.trust-bar__title {
	font-family: var(--font-display);
	color: #fff;
	font-size: 1.02rem;
	letter-spacing: .01em;
	white-space: nowrap;
}
.trust-bar__links { display: flex; flex-wrap: wrap; gap: 10px; }
.trust-bar__badge {
	display: inline-flex;
	align-items: center;
	padding: 9px 18px;
	border-radius: 999px;
	border: 1px solid rgba(255,255,255,.22);
	color: #fff;
	font-size: .82rem;
	font-weight: 600;
	letter-spacing: .01em;
	transition: background .2s ease, border-color .2s ease, transform .15s ease;
}
.trust-bar__badge:hover {
	background: var(--gold);
	color: #241a06;
	border-color: var(--gold);
	transform: translateY(-1px);
}
@media (max-width: 640px) {
	.trust-bar__frame { flex-direction: column; align-items: flex-start; padding: 20px; }
}

/* Trust bar — "embedded" variant: used inline within a light section (e.g. the
   homepage Traveler Stories frame) instead of the bordered, dark footer card. */
.trust-bar--embedded { margin: 0 0 34px; }
.trust-bar__frame--embedded {
	border: none;
	background: transparent;
	padding: 0;
	justify-content: flex-start;
}
.trust-bar--embedded .trust-bar__title { color: var(--ink); }
.trust-bar--embedded .trust-bar__badge {
	border: 1px solid rgba(42,22,8,.16);
	color: var(--forest);
	background: var(--paper-2);
}
.trust-bar--embedded .trust-bar__badge:hover {
	background: var(--gold);
	border-color: var(--gold);
	color: #241a06;
}
@media (max-width: 640px) {
	.trust-bar__frame--embedded { flex-direction: column; align-items: flex-start; }
}

/* Trail divider (signature motif) */
.trail {
	height: 30px;
	background-image: repeating-linear-gradient(90deg, var(--gold) 0 14px, transparent 14px 26px);
	background-size: 26px 2px; background-position: center; background-repeat: repeat-x;
	opacity: .4;
	position: relative;
}
.trail::before, .trail::after { content: "●"; position: absolute; top: 50%; transform: translateY(-50%); color: var(--gold); font-size: 12px; }
.trail::before { left: 0; }
.trail::after { right: 0; }

/* Utility */
.text-center { text-align: center; }
.mt-0 { margin-top: 0; }
.stack-sm > * + * { margin-top: 10px; }

/* =========================================================================
   Responsive
   ========================================================================= */
@media (max-width: 1024px) {
	.footer-grid { grid-template-columns: 1fr 1fr; }
	.feature-grid, .stats { grid-template-columns: repeat(2, 1fr); }
	.tour-layout { grid-template-columns: 1fr; }
	.booking { position: static; }
	.dest-grid, .review-grid { grid-template-columns: repeat(2, 1fr); }
	.partner-grid { grid-template-columns: repeat(2, 1fr); }
}

/* Collapse the primary bar to a hamburger earlier — the sitemap has 9 top-level
   items, so the inline bar is only comfortable on wide screens. */
@media (max-width: 1024px) {
	.primary-nav, .header-phone { display: none; }
	.nav-toggle { display: block; }
	.site-header.nav-open .primary-nav {
		display: block; position: absolute; top: 100%; left: 0; right: 0;
		background: var(--paper); border-bottom: 1px solid var(--line);
		padding: 10px 22px 18px; max-height: 78vh; overflow-y: auto;
	}
	.site-header.nav-open .primary-nav .nav-menu { flex-direction: column; gap: 2px; align-items: stretch; }
	.site-header.nav-open .primary-nav .menu-item { position: static; }

	/* Sub-menus become inline accordions on mobile. */
	.primary-nav .sub-menu {
		position: static; opacity: 1; visibility: visible; transform: none;
		box-shadow: none; border: 0; border-left: 2px solid var(--line);
		border-radius: 0; margin: 2px 0 6px 12px; padding: 0; min-width: 0; transition: none;
	}
	.primary-nav .sub-menu .sub-menu { left: 0; top: 0; }
	.primary-nav .menu-item-has-children > .sub-menu { display: none; }
	.primary-nav .menu-item-has-children.is-open > .sub-menu { display: block; }
	.primary-nav .menu-item-has-children > a::after { display: none; }

	/* Row with label + expand toggle. */
	.primary-nav .menu-item-has-children { display: flex; flex-wrap: wrap; align-items: center; }
	.primary-nav .menu-item-has-children > a { flex: 1 1 auto; }
	.primary-nav .menu-item-has-children > .sub-menu { flex: 1 0 100%; }
	.aat-subtoggle {
		display: inline-flex; align-items: center; justify-content: center;
		width: 40px; height: 40px; border: 0; background: none; cursor: pointer; color: var(--ink); flex: 0 0 auto;
	}
	.aat-subtoggle::before {
		content: ""; width: .5em; height: .5em; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor;
		transform: rotate(45deg); transition: transform .18s ease;
	}
	.aat-subtoggle[aria-expanded="true"]::before { transform: rotate(-135deg); }
}

@media (max-width: 860px) {
	.searchbar { grid-template-columns: 1fr; }
	.content-area { grid-template-columns: 1fr; }
}

@media (max-width: 640px) {
	body { font-size: 16px; }
	.dest-grid, .review-grid, .feature-grid, .stats, .incexc, .partner-grid { grid-template-columns: 1fr; }
	.footer-grid { grid-template-columns: 1fr; }
	.footer-bottom { flex-direction: column; }
	.itinerary__body { padding-left: 4px; }
}

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}

/* =========================================================================
   v1.1.0 — brand logomark, icon system, travel-styles strip, perf helpers
   ========================================================================= */
.brand a { display:flex; align-items:center; gap:12px; }
.brand__logo { width:44px; height:44px; flex:0 0 auto; display:block; }
.brand__name { font-family:var(--font-display,"Fraunces",serif); font-weight:900; font-size:1.4rem; line-height:1; letter-spacing:-.02em; color:var(--espresso,#2A1B10); }
.brand__name span { color:var(--gold-deep,#A5762C); }
.brand__tag { display:block; font-family:var(--font-data,"Space Mono",monospace); font-size:.56rem; letter-spacing:.18em; text-transform:uppercase; color:var(--ink-soft,#46514c); margin-top:3px; font-weight:400; }

/* Icon primitive */
.ts-icon { width:1em; height:1em; display:inline-block; vertical-align:-.15em; color:currentColor; }

/* Travel-styles strip */
.styles-section { padding-block:clamp(40px,6vw,72px); }
.styles-row { display:grid; grid-template-columns:repeat(6,1fr); gap:14px; margin-top:26px; }
.style-pill { display:flex; flex-direction:column; align-items:center; gap:10px; padding:18px 8px; border-radius:16px; border:1px solid var(--line,#e3dbc9); background:#fff; text-align:center; transition:transform .16s ease, box-shadow .16s ease, border-color .16s ease; }
.style-pill:hover { transform:translateY(-4px); box-shadow:0 20px 38px -28px rgba(15,77,63,.55); border-color:#d8cfb8; }
.style-pill__chip { --tint:#0F4D3F; width:52px; height:52px; border-radius:14px; display:grid; place-items:center; color:var(--tint); background:color-mix(in srgb, var(--tint) 12%, #F6F2E9); border:1px solid color-mix(in srgb, var(--tint) 30%, transparent); }
.style-pill__chip .ts-icon { width:28px; height:28px; }
.style-pill__label { font-size:.8rem; font-weight:600; color:var(--espresso,#2A1B10); line-height:1.2; }

/* Render-perf: skip painting clearly below-the-fold sections until near viewport */
.section--forest, .review-grid { content-visibility:auto; contain-intrinsic-size:auto 480px; }

@media (max-width:1000px){ .styles-row { grid-template-columns:repeat(4,1fr); } }
@media (max-width:680px){ .styles-row { grid-template-columns:repeat(3,1fr); } }
@media (max-width:420px){ .styles-row { grid-template-columns:repeat(2,1fr); } }

/* Fallback for browsers without color-mix() */
@supports not (color:color-mix(in srgb, red 10%, white)) {
	.style-pill__chip { background:#EFE9DB; border-color:rgba(0,0,0,.12); }
}

@media (prefers-reduced-motion:reduce){ .style-pill { transition:none; } }

/* =========================================================================
   Provisioned-page components (shortcodes) — 1.2.0
   ========================================================================= */
.aat-sc-grid {
	display: grid; gap: 16px; margin: 26px 0;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
}
.aat-sc-card {
	display: flex; align-items: flex-start; gap: 14px;
	padding: 18px 18px; background: var(--card); border: 1px solid var(--line);
	border-radius: 16px; color: var(--ink); text-decoration: none;
	transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}
.aat-sc-card:hover { transform: translateY(-3px); box-shadow: 0 20px 44px -30px rgba(36,20,7,.5); border-color: var(--gold); }
.aat-sc-ico {
	flex: 0 0 auto; width: 52px; height: 52px; display: grid; place-items: center;
	border-radius: 13px; background: var(--paper-2);
}
.aat-sc-card__b { display: flex; flex-direction: column; gap: 3px; }
.aat-sc-card__b strong { font-family: var(--font-display, serif); font-size: 1.08rem; color: var(--forest); line-height: 1.2; }
.aat-sc-card__b span { font-size: .9rem; color: var(--ink-soft); line-height: 1.45; }
.aat-sc-card__go { margin-left: auto; font-size: 1.5rem; color: var(--gold-deep); line-height: 1; }
.aat-sc-partners .aat-sc-card, .aat-sc-countries .aat-sc-card { align-items: center; }

/* FAQ accordion */
.aat-faq { margin: 24px 0; border-top: 1px solid var(--line); }
.aat-faq__item { border-bottom: 1px solid var(--line); }
.aat-faq__q {
	width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 16px;
	padding: 18px 4px; background: none; border: 0; cursor: pointer; text-align: left;
	font-family: var(--font-display, serif); font-size: 1.08rem; font-weight: 600; color: var(--forest);
}
.aat-faq__q:hover { color: var(--gold-deep); }
.aat-faq__mark { position: relative; flex: 0 0 auto; width: 16px; height: 16px; }
.aat-faq__mark::before, .aat-faq__mark::after {
	content: ""; position: absolute; top: 50%; left: 50%; background: currentColor; border-radius: 2px;
	transform: translate(-50%, -50%); transition: opacity .2s ease, transform .2s ease;
}
.aat-faq__mark::before { width: 14px; height: 2px; }
.aat-faq__mark::after { width: 2px; height: 14px; }
.aat-faq__q[aria-expanded="true"] .aat-faq__mark::after { opacity: 0; transform: translate(-50%, -50%) rotate(90deg); }
.aat-faq__a { padding: 0 4px 20px; }
.aat-faq__a p { margin: 0; color: var(--ink-soft); max-width: 72ch; }

/* =========================================================================
   Redesign 1.3.0 — marketplace components & responsive audit
   ========================================================================= */

/* Section header with inline "see all" link. */
.section-head--row { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; max-width: none; }
.section-head--row > div { max-width: 640px; }
.seeall {
	display: inline-flex; align-items: center; gap: 7px; flex: 0 0 auto;
	font-weight: 600; color: var(--forest); white-space: nowrap; padding-bottom: 4px;
}
.seeall svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; transition: transform .15s ease; }
.seeall:hover svg { transform: translateX(3px); }

/* Browse-by-experience tiles. */
.exp-rail {
	display: grid; grid-template-columns: repeat(9, minmax(0, 1fr)); gap: 12px;
}
.exp-tile {
	display: flex; flex-direction: column; align-items: center; gap: 10px; text-align: center;
	padding: 16px 8px; border: 1px solid var(--line); border-radius: var(--radius);
	background: var(--card); color: var(--ink); transition: transform .16s ease, box-shadow .16s ease, border-color .16s ease;
}
.exp-tile:hover { transform: translateY(-3px); box-shadow: var(--shadow-sm); border-color: var(--gold); }
.exp-tile__chip {
	width: 54px; height: 54px; display: grid; place-items: center; border-radius: 16px;
	color: var(--tint, var(--forest));
	background: color-mix(in srgb, var(--tint, #0F4D3F) 12%, #fff);
}
.exp-tile__chip .ts-icon { width: 30px; height: 30px; }
.exp-tile__label { font-size: .84rem; font-weight: 600; line-height: 1.25; }
@supports not (background: color-mix(in srgb, red 10%, white)) {
	.exp-tile__chip { background: var(--paper-2); }
}

/* Category chip rail (sticky, Airbnb-style) on the Tours archive. */
.cat-rail-wrap {
	position: sticky; top: 64px; z-index: 40;
	background: color-mix(in srgb, var(--paper) 92%, transparent);
	backdrop-filter: saturate(1.3) blur(8px);
	border-bottom: 1px solid var(--line);
}
@supports not (background: color-mix(in srgb, red 10%, white)) {
	.cat-rail-wrap { background: var(--paper); }
}
.cat-rail {
	display: flex; gap: 8px; overflow-x: auto; padding: 12px 0;
	scrollbar-width: none; -ms-overflow-style: none; scroll-snap-type: x proximity;
}
.cat-rail::-webkit-scrollbar { display: none; }
.cat-chip {
	flex: 0 0 auto; scroll-snap-align: start;
	padding: 9px 16px; border-radius: 100px; border: 1px solid var(--line);
	background: var(--card); color: var(--ink); font-size: .9rem; font-weight: 500; white-space: nowrap;
	transition: background .15s ease, border-color .15s ease, color .15s ease;
}
.cat-chip:hover { border-color: var(--gold); }
.cat-chip.is-active { background: var(--forest); color: #fff; border-color: var(--forest); }

/* Reviews header — TripAdvisor-style aggregate score. */
.reviews-head { display: flex; align-items: center; gap: 30px; margin-bottom: 34px; flex-wrap: wrap; }
.reviews-score {
	flex: 0 0 auto; text-align: center; padding: 22px 30px; border-radius: var(--radius);
	background: var(--card); border: 1px solid var(--line); box-shadow: var(--shadow-sm);
}
.reviews-score > strong { display: block; font-family: var(--font-display); font-size: 3rem; line-height: 1; color: var(--forest); }
.reviews-score__stars { display: block; color: var(--gold-deep); letter-spacing: 2px; margin: 6px 0 4px; }
.reviews-score__meta { display: block; font-size: .82rem; color: var(--ink-soft); }
.reviews-head__copy { flex: 1 1 260px; }
.review__who { display: flex; flex-direction: column; gap: 1px; }
.review__name { font-weight: 700; color: var(--ink); font-style: normal; }
.review__loc { font-size: .82rem; color: var(--ink-soft); font-style: normal; }

/* Booking widget assurances + rating. */
.booking__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.booking__rating { font-size: .9rem; }
.booking__assurances { list-style: none; margin: 12px 0 4px; padding: 12px 0 0; border-top: 1px dashed var(--line); display: grid; gap: 8px; }
.booking__assurances li { display: flex; align-items: center; gap: 9px; font-size: .86rem; color: var(--ink); }
.booking__assurances svg { flex: 0 0 auto; width: 18px; height: 18px; fill: none; stroke: #3e7d54; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }

/* Mobile sticky booking bar (single tour). Hidden on desktop. */
.mbook { display: none; }

/* -------------------------------------------------------------------------
   Responsive audit — mobile-first refinements across all breakpoints
   ------------------------------------------------------------------------- */

/* Large tablets / small laptops. */
@media (max-width: 1100px) {
	.card-grid { grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
	.exp-rail { grid-template-columns: repeat(5, minmax(0, 1fr)); }
	.trustbar { grid-template-columns: repeat(2, 1fr); }
}

/* Tablets. */
@media (max-width: 860px) {
	.searchbar { grid-template-columns: 1fr 1fr; margin-top: 0; }
	.searchbar .btn { grid-column: 1 / -1; }
	.reviews-head { gap: 20px; }
	.reviews-score { padding: 16px 22px; }
	.reviews-score > strong { font-size: 2.4rem; }
	.section-head--row { flex-wrap: wrap; }

	/* Featured / related grids become swipeable rails. */
	.card-grid--rail {
		display: grid; grid-auto-flow: column; grid-template-columns: none;
		grid-auto-columns: minmax(78%, 78%); gap: 16px;
		overflow-x: auto; scroll-snap-type: x mandatory;
		margin-inline: -22px; padding: 4px 22px 14px;
		scrollbar-width: none;
	}
	.card-grid--rail::-webkit-scrollbar { display: none; }
	.card-grid--rail > .tour-card { scroll-snap-align: start; }
}

/* Large phones. */
@media (max-width: 680px) {
	.exp-rail {
		display: grid; grid-auto-flow: column; grid-template-columns: none;
		grid-auto-columns: minmax(120px, 120px); gap: 12px;
		overflow-x: auto; scroll-snap-type: x proximity;
		margin-inline: -22px; padding: 2px 22px 12px; scrollbar-width: none;
	}
	.exp-rail::-webkit-scrollbar { display: none; }
	.exp-tile { scroll-snap-align: start; }
	.reviews-head { flex-direction: column; align-items: flex-start; }
}

/* Phones. */
@media (max-width: 560px) {
	.card-grid { grid-template-columns: 1fr; }
	.card-grid--rail { grid-auto-columns: minmax(86%, 86%); }
	.searchbar { grid-template-columns: 1fr; }
	.trustbar { grid-template-columns: 1fr; gap: 12px; }
	.tour-card__foot { flex-wrap: wrap; }

	/* Show the sticky mobile booking bar on single tour. */
	.single-tour .mbook, body.single-tour .mbook,
	.single-activity .mbook, body.single-activity .mbook { display: flex; }
	.mbook {
		position: fixed; left: 0; right: 0; bottom: 0; z-index: 70;
		align-items: center; justify-content: space-between; gap: 12px;
		padding: 10px 16px calc(10px + env(safe-area-inset-bottom));
		background: var(--card); border-top: 1px solid var(--line);
		box-shadow: 0 -8px 24px -18px rgba(24,11,2,.5);
	}
	.mbook__price { font-family: var(--font-display); line-height: 1.1; }
	.mbook__price small { display: block; font-family: var(--font-body); font-size: .64rem; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-soft); }
	.mbook__price strong { font-size: 1.35rem; color: var(--forest); }
	.mbook__price span { font-size: .74rem; color: var(--ink-soft); }
	.mbook .btn { flex: 0 0 auto; }
	/* Keep the fixed bar from covering page end. */
	.single-tour .site-content, body.single-tour .site-content,
	.single-activity .site-content, body.single-activity .site-content { padding-bottom: 76px; }
}

/* Focus visibility + reduced motion (quality floor). */
a:focus-visible, button:focus-visible, .btn:focus-visible, .cat-chip:focus-visible, .exp-tile:focus-visible, .seeall:focus-visible {
	outline: 2px solid var(--gold-deep); outline-offset: 2px;
}
@media (prefers-reduced-motion: reduce) {
	.tour-card, .tour-card__media img, .exp-tile, .wishlist-btn, .seeall svg, .tour-card__go { transition: none; }
	.card-grid--rail, .exp-rail, .cat-rail { scroll-behavior: auto; }
}

/* =========================================================================
   Adventure map — hand-drawn animated route, draws in on scroll.
   ========================================================================= */
.adv-map__country {
	stroke-width: 1.5;
	opacity: .8;
}
.adv-map__country--laos     { fill: var(--paper-2); stroke: #639922; }
.adv-map__country--vietnam  { fill: #faeeda; stroke: var(--gold-deep); }
.adv-map__country--thailand { fill: #f3ecd8; stroke: var(--ink-soft); }
.adv-map__country--cambodia { fill: #faece7; stroke: #d85a30; }

.adv-map__route {
	fill: none;
	stroke: var(--gold-deep);
	stroke-width: 3;
	stroke-linecap: round;
	stroke-linejoin: round;
	/* Real-coordinate route (8 cities, straight legs) is ~1268px long. */
	stroke-dasharray: 1350;
	stroke-dashoffset: 1350;
	transition: stroke-dashoffset 2.8s ease;
}

.adv-map__pin circle { fill: var(--forest); }
.adv-map__pin text {
	font-family: var(--font-body);
	font-size: 13px;
	font-weight: 500;
	fill: var(--ink);
	opacity: 0;
	transition: opacity .4s ease;
	paint-order: stroke;
	stroke: var(--paper);
	stroke-width: 3px;
}
.adv-map__pin { opacity: 0; transform: translateY(-6px); transition: opacity .4s ease, transform .4s ease; }

.adv-map__swatch { width: 12px; height: 12px; border-radius: 3px; display: inline-block; }
.adv-map__swatch--laos      { background: var(--paper-2); border: 1px solid #639922; }
.adv-map__swatch--vietnam   { background: #faeeda; border: 1px solid var(--gold-deep); }
.adv-map__swatch--cambodia  { background: #faece7; border: 1px solid #d85a30; }

/* Category swatches — used by the Cambodia-only "modern trail" scene, where
   stops are grouped by History / Culture / Adventure instead of by country
   (there's only one country in that scene, so a country legend would be
   redundant). Same dot shape/size as the country swatches above. */
.adv-map__swatch--history   { background: #faece7; border: 1px solid var(--gold-deep); }
.adv-map__swatch--culture   { background: #e9efe1; border: 1px solid var(--forest); }
.adv-map__swatch--adventure { background: #faece7; border: 1px solid #d85a30; }

/* Reveal state, toggled by JS via IntersectionObserver. */
.adv-map__stage.is-inview .adv-map__route { stroke-dashoffset: 0; }
.adv-map__stage.is-inview .adv-map__pin { opacity: 1; transform: translateY(0); }
.adv-map__stage.is-inview .adv-map__pin text { opacity: 1; }
.adv-map__stage.is-inview .adv-map__pin[data-order="1"] { transition-delay: .35s; }
.adv-map__stage.is-inview .adv-map__pin[data-order="2"] { transition-delay: .7s; }
.adv-map__stage.is-inview .adv-map__pin[data-order="3"] { transition-delay: 1.05s; }
.adv-map__stage.is-inview .adv-map__pin[data-order="4"] { transition-delay: 1.3s; }
.adv-map__stage.is-inview .adv-map__pin[data-order="5"] { transition-delay: 1.7s; }
.adv-map__stage.is-inview .adv-map__pin[data-order="6"] { transition-delay: 2.05s; }
.adv-map__stage.is-inview .adv-map__pin[data-order="7"] { transition-delay: 2.3s; }
.adv-map__stage.is-inview .adv-map__pin[data-order="8"] { transition-delay: 2.5s; }

/* Pin labels/dots live in the scene's fixed 660×1050 coordinate space and
   scale down with the container (.journey-map__stage), same as the rest of
   the drawing. On phones the stage renders far narrower than its 760px
   desktop max, so the default 13px label / r=6 dot shrink to a few real
   screen pixels — bump both back up at the same 640px breakpoint the
   wordmark already uses in journey-map.css, so labels stay legible on the
   viewport where they'd otherwise be too small to read. */
@media (max-width: 640px) {
	.adv-map__pin text { font-size: 17px; }
	.adv-map__pin circle { r: 7.5px; }
	.adv-map__route { stroke-width: 4; }
}

@media (prefers-reduced-motion: reduce) {
	.adv-map__route, .adv-map__pin, .adv-map__pin text { transition: none; }
	.adv-map__route { stroke-dashoffset: 0; }
	.adv-map__pin { opacity: 1; transform: none; }
	.adv-map__pin text { opacity: 1; }
}

/* The old standalone "Khmer Empire map" scene (coastline → empire eras
   growing outward from Angkor → History/Culture/Adventure site markers)
   has been removed entirely — template-parts/khmer-empire-map.php is
   deleted and no template calls get_template_part() for it anymore.
   The theme's map rules are the shared .adv-map__* rules above, driving
   both panels of the merged Signature Hook feature, rendered by
   template-parts/prefect-signature-trail.php. */

/* =========================================================================
   3.0.0 — AAA Experience Architecture redesign
   Geography → History/Culture/Adventure → Product (Tours/Activities/
   Experiences) → Traveler → Plan My Trip → Booking. Cambodia stays the
   authority core; Laos/Vietnam are the expansion layer. See CHANGELOG.
   ========================================================================= */

/* "Choose your journey" — the four IA pillars (History, Culture,
   Adventure, Modern Art). Folded into the Signature Hook
   (#prefect-signature-trail) as the sidebar of `.journey-map__layout`,
   inside `.journey-map__frame`; see assets/css/journey-map.css →
   `.journey-map__pillars`. No longer its own `.pillars-section`, and no
   longer a full-width `.journey-map__subhead` banner above the frame —
   both wrapper classes are gone. Default `.pillar-grid` is still the
   3-across grid other templates (single-destination.php,
   page-plan-my-trip.php, taxonomy-experience.php) use for the full
   pillar set; `.pillar-grid--stacked` below is the narrow-sidebar
   variant used only inside `.journey-map__pillars`. */
.pillar-grid {
	display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; margin-top: 30px;
}
.pillar-grid--stacked {
	grid-template-columns: 1fr; gap: 14px; margin-top: 18px;
}
.pillar-card {
	position: relative; display: flex; flex-direction: column; gap: 10px;
	padding: 34px 28px; border-radius: var(--radius); text-align: left;
	background: var(--card); border: 1px solid var(--line); color: var(--ink);
	box-shadow: var(--shadow-sm);
	transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.pillar-card:hover { transform: translateY(-5px); box-shadow: var(--shadow); border-color: var(--gold); }
.pillar-grid--stacked .pillar-card { padding: 22px 20px; gap: 6px; }
.pillar-grid--stacked .pillar-card:hover { transform: translateY(-3px); }
.pillar-card__icon {
	width: 56px; height: 56px; border-radius: 16px; display: grid; place-items: center;
	background: var(--paper-2); color: var(--forest); border: 1px solid var(--line); margin-bottom: 4px;
}
.pillar-grid--stacked .pillar-card__icon { width: 44px; height: 44px; border-radius: 13px; margin-bottom: 0; }
.pillar-card__icon .ts-icon { width: 30px; height: 30px; }
.pillar-grid--stacked .pillar-card__icon .ts-icon { width: 24px; height: 24px; }
.pillar-card h4 { margin: 0; font-size: 1.35rem; }
.pillar-grid--stacked .pillar-card h4 { font-size: 1.1rem; }
.pillar-card p { margin: 0; color: var(--ink-soft); font-size: .95rem; flex: 1; }
.pillar-grid--stacked .pillar-card p { font-size: .88rem; }
.pillar-card__go {
	display: inline-flex; align-items: center; gap: 6px; font-weight: 600; font-size: .9rem;
	color: var(--forest); margin-top: 6px;
}
.pillar-card__go svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; transition: transform .15s ease; }
.pillar-card:hover .pillar-card__go svg { transform: translateX(3px); }
.pillar-card--angkor-heritage .pillar-card__icon { color: #0F4D3F; background: color-mix(in srgb, #0F4D3F 12%, #F6F2E9); }
.pillar-card--culture .pillar-card__icon { color: #9C5A38; background: color-mix(in srgb, #9C5A38 12%, #F6F2E9); }
.pillar-card--adventure .pillar-card__icon { color: #C1913F; background: color-mix(in srgb, #C1913F 14%, #F6F2E9); }
@supports not (background: color-mix(in srgb, red 10%, white)) {
	.pillar-card__icon { background: var(--paper-2); }
}

/* A 4-up pillar-card variant — the "Angkor Asia Adventures Tours" hub
   grid (Tours / Activities / Experiences / Destinations), replacing the
   old "Beyond Cambodia" destination-tile section. Same card component,
   same responsive collapse pattern as `.dest-grid--4` above it. */
.pillar-grid--4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 1024px) { .pillar-grid--4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px)  { .pillar-grid--4 { grid-template-columns: 1fr; } }
.pillar-card--tours .pillar-card__icon { color: #A6472B; background: color-mix(in srgb, #A6472B 12%, #F6F2E9); }
.pillar-card--activities .pillar-card__icon { color: #3E6B52; background: color-mix(in srgb, #3E6B52 12%, #F6F2E9); }
.pillar-card--experiences .pillar-card__icon { color: #7C5A9C; background: color-mix(in srgb, #7C5A9C 12%, #F6F2E9); }
.pillar-card--destinations .pillar-card__icon { color: #2E6B8A; background: color-mix(in srgb, #2E6B8A 12%, #F6F2E9); }

/* Spacing between the hub grid and the "Popular tours" subhead below
   it, matching the rhythm `.htours__popular` already uses for the same
   "cards, then a subordinate subhead, then more cards" shape. */
.aat-hub-tours-head { margin-top: 40px; margin-bottom: 26px; }

/* =========================================================================
   Partner cards — /trusted-network/ page ("Need Something We Don't
   Cover?", moved off the homepage in 3.16.13). Same `.pillar-card`
   component as the homepage hub; icon color/background comes from each
   partner's own `tint` (aaatrails_partners(), inline style in the
   template) rather than a fixed per-card class, since the roster is
   data-driven and can grow. Two card-level additions the hub cards
   don't need: a small kicker line (category · partner name) above the
   headline, and an optional corner ribbon carrying that partner's
   "Best for ..." claim (its `badge` field). 3.16.14 — every roster
   entry now sets a badge (previously only AAA Trails did), so the
   ribbon reads as "here's who this card is for" on every card rather
   than singling one partner out as the featured option. Cards link
   offsite, so `.pillar-card__go` doubles as the external-link
   affordance — no separate icon needed.
   ========================================================================= */
.partner-card__kicker {
	font-size: .78rem; font-weight: 600; letter-spacing: .04em;
	color: var(--ink-soft); text-transform: none; margin: 0;
}
.partner-card__ribbon {
	position: absolute; top: 18px; right: 18px;
	font-size: .68rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase;
	color: var(--forest); background: var(--gold);
	padding: 5px 10px; border-radius: 999px; line-height: 1;
}
.partner-card--flagship {
	border-color: var(--gold-deep);
	background: color-mix(in srgb, var(--gold) 8%, var(--card));
}
@supports not (background: color-mix(in srgb, red 10%, white)) {
	.partner-card--flagship { background: var(--paper-2); }
}

/* Network bar — breadcrumb-style strip above the /trusted-network/ page
   header, naming every AAAOS network member (hub + each partner) inline
   before the visitor reaches the pillar-card roster below. Same hairline
   rhythm as .breadcrumb (font-size, sep colour) rather than a new visual
   language; the mono chip re-uses each partner's own tint from
   aaatrails_partners(), same as the pillar-card icons on the cards below. */
.network-bar {
	display: flex; flex-wrap: wrap; align-items: center; gap: 10px;
	padding: 0 0 22px;
	font-size: .84rem;
}
.network-bar__item {
	display: inline-flex; align-items: center; gap: 8px;
	color: var(--ink-soft);
}
.network-bar__item:hover { color: var(--forest); }
.network-bar__item--hub { font-weight: 600; color: var(--ink); }
.network-bar__mono {
	flex: 0 0 26px; width: 26px; height: 26px; border-radius: 50%;
	display: inline-flex; align-items: center; justify-content: center;
	font-family: var(--font-body); font-size: .68rem; font-weight: 700; letter-spacing: .01em;
}
.network-bar__sep { margin: 0 -2px; color: var(--gold-deep); }
@supports not (background: color-mix(in srgb, red 10%, white)) {
	.network-bar__mono { background: var(--paper-2); }
}
@media (max-width: 640px) {
	.network-bar__label { display: none; }
	.network-bar__item--hub .network-bar__label { display: inline; }
}

/* A 4-up destination grid variant, used by the "Explore Cambodia" section so
   it reads distinctly denser/wider than the 3-up "Explore Asia" grid below it. */
.dest-grid--4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 1024px) { .dest-grid--4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px)  { .dest-grid--4 { grid-template-columns: 1fr; } }

/* Plan My Trip — numbered process strip + structured, grouped form. */
.plan-hero { padding-bottom: 10px; }
.plan-hero .lead { max-width: 68ch; }
.plan-steps {
	list-style: none; margin: 18px 0 0; padding: 0;
	display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px;
}
.plan-steps li {
	display: flex; align-items: center; gap: 12px; padding: 14px 16px;
	background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-sm);
	font-weight: 600; font-size: .92rem; color: var(--ink);
}
.plan-steps__num {
	flex: none; width: 30px; height: 30px; border-radius: 50%; display: grid; place-items: center;
	background: var(--forest); color: var(--gold); font-family: var(--font-display); font-size: .95rem;
}
@media (max-width: 860px) { .plan-steps { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px) { .plan-steps { grid-template-columns: 1fr; } }

.plan-form__group {
	border: 0; padding: 0 0 18px; margin: 0 0 18px; border-bottom: 1px dashed var(--line); display: grid; gap: 12px;
}
.plan-form__group:last-of-type { border-bottom: 0; margin-bottom: 4px; padding-bottom: 4px; }
.plan-form__group legend {
	padding: 0 0 4px; font-family: var(--font-display); font-size: 1.02rem; color: var(--forest); font-weight: 600;
}
.plan-form__chips { display: flex; flex-wrap: wrap; gap: 10px; }
.plan-chip {
	display: inline-flex; align-items: center; gap: 8px; padding: 10px 16px;
	border: 1px solid var(--line); border-radius: 100px; background: var(--paper);
	font-size: .9rem; font-weight: 500; color: var(--ink); cursor: pointer;
	transition: border-color .15s ease, background .15s ease, color .15s ease;
}
.plan-chip input { accent-color: var(--forest); }
.plan-chip:has(input:checked) { background: var(--forest); border-color: var(--forest); color: #fff; }

/* =========================================================================
   3.1.0 — Journey map → framed showcase
   (The trust-bar card redesign that originally lived here in 3.1.0 was
   superseded in 3.2.0 — the trust bar left the homepage entirely and its
   four items now live inside the journey-map credit card. In 3.3.0 the
   whole showcase/aside pairing was rebuilt into stacked full-width bands
   — map, stop rail, trust strip, CTA band. See assets/css/journey-map.css.)
   ========================================================================= */

/* Journey map redesign: styling lives in assets/css/journey-map.css,
   which is enqueued after this stylesheet and already owns every
   .journey-map__* / .adv-map__* selector — see the "3.3.0" block there. */
.adv-map__swatch { width: 11px; height: 11px; }

/* =========================================================================
   3.9.0 — Special Highlight Tours (advertising hook frame), simplified.
   Was three layout systems (two oversized hero cards, a 2x2 standard
   grid, one full-width premium banner) plus flagship/premium modifier
   variants on nearly every rule below. Now one uniform card, one grid,
   one CTA style. The only variation left is an optional `.htours__badge`
   pill on two cards — that's real info (best-seller / private), not a
   size tier.
   ========================================================================= */

.htours__frame { max-width: 1040px; margin-inline: auto; }

.htours__grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 22px;
}

.htours__card {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 12px;
	padding: 26px 26px 24px;
	background: var(--card);
	border: 1px solid var(--line);
	border-radius: var(--radius);
	box-shadow: var(--shadow-sm);
	transition: transform .2s ease, box-shadow .2s ease;
}
.htours__card:hover { transform: translateY(-4px); box-shadow: var(--shadow); }

.htours__rank {
	flex: none;
	width: 40px;
	height: 40px;
	display: grid;
	place-items: center;
	border-radius: 10px;
	background: var(--paper-2);
	border: 1px solid var(--line);
	color: var(--gold-deep);
}
.htours__rank svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }

.htours__badge {
	display: inline-flex;
	align-items: center;
	font-family: var(--font-body);
	font-size: .72rem;
	font-weight: 700;
	letter-spacing: .05em;
	text-transform: uppercase;
	color: #241a06;
	background: var(--gold);
	padding: 6px 12px;
	border-radius: 100px;
}

.htours__headline {
	margin: 0;
	font-size: 1.14rem;
	line-height: 1.28;
	color: var(--ink);
}

.htours__hook {
	margin: 0;
	font-size: .92rem;
	line-height: 1.55;
	color: var(--ink-soft);
}

.htours__cta {
	margin-top: auto;
	align-self: flex-start;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-weight: 600;
	font-size: .9rem;
	color: #241a06;
	background: var(--gold);
	padding: 12px 22px;
	border-radius: 100px;
	transition: background .18s ease, transform .15s ease, color .18s ease;
}
.htours__cta::after { content: "→"; }
.htours__cta:hover { background: var(--gold-deep); color: #fff; transform: translateY(-1px); }

/* ---- Popular tours — merged in from the old standalone "Popular
   tours" section; real `tour` posts, directly below the highlight
   cards, divided from them by a hairline rather than a new section. */
.htours__popular {
	margin-top: 48px;
	padding-top: 40px;
	border-top: 1px solid var(--line);
}
.htours__popular-head { margin-bottom: 26px; }

@media (max-width: 860px) {
	.htours__grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 560px) {
	.htours__grid { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
	.htours__card, .htours__cta { transition: none; }
}
