/*
	EcoVoyager main stylesheet.

	This is the only stylesheet the theme loads. Sections do not carry
	their own style blocks. Colour and font tokens come from theme.json
	as --wp--preset--* custom properties.

	Breakpoint ladder used across the whole theme:
	1440, 1200, 1024, 768, 480, 360

	Units: rem for type and spacing (root is 16px, so 1rem = 16px).
	em is kept only where a value must track its own element's font
	size, which is letter-spacing and the H1 kerning correction.
	px is kept for hairlines, borders, outlines and shadow geometry.
*/

/* ================================================
   BASE
   ================================================ */

/* Translucent white used for body copy sitting over dark grounds.
   Not a theme.json palette entry because it carries alpha. Declared
   once here rather than per section, since the hero and the why
   choose section both use the same value. */
:root {
	--ev-soft: rgba(255, 255, 255, 0.75);

	/* Sale pill. Not theme.json palette entries because they exist only
	   to mark a discount, and every reference declared them privately
	   per section, which is how three sections ended up with three
	   slightly different golds. */
	--ev-sale-gold: #e8b84b;
	--ev-sale-dark: #1a1000;

	/* IUCN Red List categories, on the Red List's own colour scale.
	   Tokens rather than eight one-off hex values scattered through the
	   wildlife section, so a category cannot end up two different
	   colours in two places. Not theme.json palette entries: these are
	   data encoding, and nobody should be picking "Critically
	   Endangered" as a background colour in the block editor. */
	--ev-iucn-lc: #4a7c3f;
	--ev-iucn-nt: #7a9a3c;
	--ev-iucn-vu: #d9b23a;
	--ev-iucn-en: #d2721f;
	--ev-iucn-cr: #b3331f;
	--ev-iucn-ew: #6b2145;
	--ev-iucn-ex: #2b2b2b;
	--ev-iucn-dd: #5c5c5c;

	/* Seasonality ratings on the When to Go timeline. Tokens for the
	   same reason as the IUCN scale: five values used by the dots, the
	   badges and the legend, which is three places for a one-off hex to
	   drift. Peak reuses the brand rust so the best month reads as the
	   emphasis colour it already is elsewhere. */
	--ev-season-peak: #B8621B;
	--ev-season-great: #C4A046;
	--ev-season-good: #6B8F50;
	--ev-season-shoulder: #6B7D8D;
	--ev-season-off: #555560;
}

body {
	font-family: var(--wp--preset--font-family--montserrat);
	color: #fff;
	background: var(--wp--preset--color--bg-deep);
}

h1,
h2,
h3,
h4,
h5,
h6 {
	font-family: var(--wp--preset--font-family--playfair-display);
}

/* ================================================
   THE HIDDEN ATTRIBUTE

   [hidden] is a user agent rule, display: none, and the UA origin is
   the weakest there is. Any author declaration setting display on the
   same element beats it outright, so an element carrying the hidden
   attribute renders anyway. That is not a hypothetical: it broke the
   When to Go panels the moment .evpwtg-showcase--has-image was given
   display: grid, and the same collision was waiting on six other
   elements, including both modal images and the map tooltip.

   The selector is doubled deliberately. [hidden] alone scores 0,1,0,
   which merely ties with a single class rule and leaves source order
   to decide. [hidden][hidden] scores 0,2,0 and wins against any
   single class, in any order, without !important.

   This is why no component needs its own [hidden] rule.
   ================================================ */
[hidden][hidden] {
	display: none;
}

/* ================================================
   FORM HONEYPOT
   Rendered by ecovoyager_core_form_fields() on every form.

   Positioned off screen rather than display:none. Some bots skip
   inputs that are display:none but happily fill a positioned one,
   which is the whole point of the field. It carries aria-hidden,
   tabindex -1 and autocomplete off in the markup, so no real person
   or screen reader ever reaches it.
   ================================================ */
.ecovoyager-hp {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

/* ================================================
   HERO: SECTION GRID
   Full width by default. No viewport-width hack.
   ================================================ */
.ecovoyager-hero-section {
	position: relative;
	min-height: 100vh;
	display: grid;
	grid-template-columns: 45% 55%;
	overflow: hidden;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 1rem;
	color: #fff;
	background: var(--wp--preset--color--bg-deep);
	box-sizing: border-box;
}

.ecovoyager-hero-section *,
.ecovoyager-hero-section *::before,
.ecovoyager-hero-section *::after {
	box-sizing: border-box;
}

/* ================================================
   HERO: LEFT CONTENT PANEL
   Solid dark, hides the video underneath on desktop.
   ================================================ */
.ecovoyager-hero-section .hero-content {
	position: relative;
	z-index: 5;
	display: flex;
	flex-direction: column;
	justify-content: center;
	padding: 5rem 4rem 5rem 5rem;
	background: var(--wp--preset--color--bg-deep);
}

/* Eyebrow: rust, single leading rule on desktop. */
.ecovoyager-hero-section .hero-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	margin: 0 0 1.25rem;
	opacity: 0;
	animation: heroFadeUp 0.8s ease-out 0.2s forwards;
}

.ecovoyager-hero-section .hero-eyebrow::before {
	content: '';
	display: block;
	width: 1.75rem;
	height: 1.5px;
	background: var(--wp--preset--color--rust);
	flex-shrink: 0;
}

/* H1, the LCP element. */
.ecovoyager-hero-section .hero-title {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.8rem, 5.5vw, 4.4rem);
	font-weight: 400;
	line-height: 1;
	color: #fff;
	margin: 0 0 1.75rem;
}

.ecovoyager-hero-section .hero-title em {
	color: var(--wp--preset--color--rust);
	font-style: italic;
	font-size: inherit;
	line-height: inherit;
}

/* Kerning correction for the V in EcoVoyager. Stays in em so it
   tracks the fluid clamp() size of the H1 at every viewport. */
.ecovoyager-hero-section .hero-title-kern {
	display: inline-block;
	margin-left: -0.05em;
}

.ecovoyager-hero-section .hero-rule {
	display: block;
	width: 1.75rem;
	height: 1.5px;
	background: linear-gradient(90deg, var(--wp--preset--color--gold), transparent);
	margin-bottom: 1.5rem;
	opacity: 0;
	animation: heroFadeUp 0.7s ease-out 0.6s forwards;
}

.ecovoyager-hero-section .hero-subtitle {
	font-size: clamp(0.95rem, 1.6vw, 1.1rem);
	font-weight: 300;
	line-height: 1.75;
	color: var(--ev-soft);
	max-width: 28.75rem;
	margin: 0 0 2.75rem;
	opacity: 0;
	animation: heroFadeUp 0.8s ease-out 0.65s forwards;
}

/* ================================================
   HERO: CALLS TO ACTION
   ================================================ */
.ecovoyager-hero-section .hero-cta {
	display: flex;
	flex-direction: row;
	align-items: center;
	gap: 1rem;
	flex-wrap: wrap;
	opacity: 0;
	animation: heroFadeUp 0.8s ease-out 0.8s forwards;
}

.ecovoyager-hero-section .hero-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.625rem;
	padding: 1rem 2rem;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	text-decoration: none;
	border-radius: 3.125rem;
	transition: all 0.3s ease;
	cursor: pointer;
	position: relative;
	overflow: hidden;
	min-width: 17.5rem;
}

.ecovoyager-hero-section .hero-btn > * {
	position: relative;
	z-index: 1;
}

/* Primary: rust fill. */
.ecovoyager-hero-section .hero-btn-primary {
	background: var(--wp--preset--color--rust);
	color: #fff;
	border: 2px solid var(--wp--preset--color--rust);
	box-shadow: 0 8px 28px rgba(184, 98, 27, 0.4);
}

.ecovoyager-hero-section .hero-btn-primary::before {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(135deg, var(--wp--preset--color--gold) 0%, var(--wp--preset--color--rust) 100%);
	opacity: 0;
	transition: opacity 0.3s ease;
}

.ecovoyager-hero-section .hero-btn-primary:hover::before {
	opacity: 1;
}

.ecovoyager-hero-section .hero-btn-primary:hover {
	transform: translateY(-3px);
	box-shadow: 0 14px 36px rgba(184, 98, 27, 0.55);
}

.ecovoyager-hero-section .hero-btn-primary svg {
	width: 1rem;
	height: 1rem;
	fill: #fff;
	flex-shrink: 0;
	transition: transform 0.3s ease;
}

.ecovoyager-hero-section .hero-btn-primary:hover svg {
	transform: translateX(3px);
}

/* Secondary: ghost outline. */
.ecovoyager-hero-section .hero-btn-secondary {
	background: transparent;
	color: rgba(255, 255, 255, 0.85);
	border: 2px solid rgba(255, 255, 255, 0.35);
}

.ecovoyager-hero-section .hero-btn-secondary:hover {
	border-color: rgba(255, 255, 255, 0.7);
	color: #fff;
	background: rgba(255, 255, 255, 0.06);
}

.ecovoyager-hero-section .hero-btn-secondary svg {
	width: 1rem;
	height: 1rem;
	fill: rgba(255, 255, 255, 0.85);
	flex-shrink: 0;
	transition: transform 0.3s ease, fill 0.3s ease;
}

.ecovoyager-hero-section .hero-btn-secondary:hover svg {
	transform: translateX(3px);
	fill: #fff;
}

/* ================================================
   HERO: SCROLL INDICATOR
   ================================================ */
.ecovoyager-hero-section .hero-scroll {
	position: absolute;
	bottom: 2.25rem;
	left: 5rem;
	display: flex;
	align-items: center;
	gap: 0.75rem;
	font-size: 0.6rem;
	font-weight: 600;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.32);
	opacity: 0;
	animation: heroFadeUp 0.8s ease-out 1.4s forwards;
}

.ecovoyager-hero-section .hero-scroll-line {
	display: block;
	width: 2.25rem;
	height: 1px;
	background: rgba(255, 255, 255, 0.2);
	position: relative;
	overflow: hidden;
}

/* Animates transform, not left, so the pulse stays on the compositor
   thread. will-change promotes the layer before the animation starts. */
.ecovoyager-hero-section .hero-scroll-line::after {
	content: '';
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background: var(--wp--preset--color--rust);
	animation: heroScrollPulse 2.4s ease-in-out 2s infinite;
	will-change: transform;
}

/* ================================================
   HERO: RIGHT VIDEO PANEL
   ================================================ */
.ecovoyager-hero-section .hero-media {
	position: relative;
	background: var(--wp--preset--color--bg-deep);
	overflow: hidden;
}

.ecovoyager-hero-section .hero-media-video {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	z-index: 0;
	pointer-events: none;
	display: block;
}

/* Left edge horizontal fade into the content panel. */
.ecovoyager-hero-section .hero-media::before {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(90deg,
		var(--wp--preset--color--bg-deep) 0%,
		rgba(17, 16, 16, 0.85) 4%,
		rgba(17, 16, 16, 0.30) 12%,
		rgba(17, 16, 16, 0.06) 22%,
		transparent 35%);
	z-index: 1;
	pointer-events: none;
}

/* Soft bottom gradient. */
.ecovoyager-hero-section .hero-media::after {
	content: '';
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
	height: 35%;
	background: linear-gradient(to top, rgba(17, 16, 16, 0.50) 0%, transparent 100%);
	z-index: 1;
	pointer-events: none;
}

/* ================================================
   HERO: KEYFRAMES
   ================================================ */
@keyframes heroFadeUp {
	from { opacity: 0; transform: translateY(22px); }
	to   { opacity: 1; transform: translateY(0); }
}

@keyframes heroScrollPulse {
	0%   { transform: translateX(-100%); }
	50%  { transform: translateX(0%); }
	100% { transform: translateX(100%); }
}

/* ================================================
   HERO: 1200 AND BELOW, SMALLER LAPTOP
   ================================================ */
@media (max-width: 1200px) {
	.ecovoyager-hero-section {
		grid-template-columns: 48% 52%;
	}

	.ecovoyager-hero-section .hero-content {
		padding: 4.5rem 3rem 4.5rem 3.5rem;
	}

	.ecovoyager-hero-section .hero-scroll {
		left: 3.5rem;
	}
}

/* ================================================
   HERO: 1024 AND BELOW, TABLET AND MOBILE
   Single column, centred. The video becomes a full bleed
   background sitting behind the content.

   Height uses 100lvh with a 100vh fallback. svh and dvh were
   both tried and rejected across three versions. Do not change.
   ================================================ */
@media (max-width: 1024px) {
	.ecovoyager-hero-section {
		display: block;
		position: relative;
		min-height: 100vh;
		min-height: 100lvh;
		overflow: hidden;
	}

	.ecovoyager-hero-section .hero-media {
		position: absolute;
		inset: 0;
		width: 100%;
		height: 100%;
		z-index: 0;
		display: block;
		background: var(--wp--preset--color--bg-deep);
	}

	.ecovoyager-hero-section .hero-media::before {
		background: linear-gradient(180deg,
			rgba(17, 16, 16, 0.45) 0%,
			rgba(17, 16, 16, 0.40) 30%,
			rgba(17, 16, 16, 0.75) 65%,
			rgba(17, 16, 16, 0.95) 100%);
	}

	.ecovoyager-hero-section .hero-media::after {
		display: none;
	}

	.ecovoyager-hero-section .hero-media-video {
		position: absolute;
		inset: 0;
		width: 100%;
		height: 100%;
		min-width: 100%;
		min-height: 100%;
		max-width: none;
		max-height: none;
		object-fit: cover;
		object-position: center center;
		display: block;
	}

	.ecovoyager-hero-section .hero-content {
		position: relative;
		z-index: 5;
		background: transparent;
		min-height: 100vh;
		min-height: 100lvh;
		padding: 6.25rem 3.5rem 5rem;
		justify-content: center;
		align-items: center;
		text-align: center;
	}

	.ecovoyager-hero-section .hero-scroll {
		display: none;
	}

	/* Eyebrow switches to the gold bilateral line, text, line badge. */
	.ecovoyager-hero-section .hero-eyebrow {
		justify-content: center;
		color: var(--wp--preset--color--gold);
		font-size: 0.65rem;
		margin-bottom: 1.5rem;
	}

	.ecovoyager-hero-section .hero-eyebrow::before {
		width: 1.75rem;
		background: linear-gradient(90deg, transparent, var(--wp--preset--color--gold));
	}

	.ecovoyager-hero-section .hero-eyebrow::after {
		content: '';
		display: block;
		width: 1.75rem;
		height: 1.5px;
		background: linear-gradient(90deg, var(--wp--preset--color--gold), transparent);
		flex-shrink: 0;
	}

	.ecovoyager-hero-section .hero-title {
		font-size: clamp(3.2rem, 8vw, 4.6rem);
		line-height: 1.05;
		margin: 0 0 1.625rem;
		text-align: center;
		text-shadow: 0 2px 24px rgba(0, 0, 0, 0.5);
	}

	.ecovoyager-hero-section .hero-rule {
		width: 3.125rem;
		margin: 0 auto 1.75rem;
		background: linear-gradient(90deg, transparent, var(--wp--preset--color--gold), transparent);
	}

	.ecovoyager-hero-section .hero-subtitle {
		font-size: 1.05rem;
		line-height: 1.7;
		color: rgba(255, 255, 255, 0.85);
		max-width: 36.25rem;
		margin: 0 auto 2.5rem;
		text-align: center;
		text-shadow: 0 1px 12px rgba(0, 0, 0, 0.5);
	}

	.ecovoyager-hero-section .hero-cta {
		flex-direction: row;
		justify-content: center;
		flex-wrap: wrap;
		gap: 0.875rem;
		width: auto;
	}

	.ecovoyager-hero-section .hero-btn {
		min-width: 15rem;
		padding: 1rem 1.875rem;
		font-size: 0.7rem;
	}
}

/* ================================================
   HERO: 768 AND BELOW, PHONE
   ================================================ */
@media (max-width: 768px) {
	.ecovoyager-hero-section .hero-content {
		padding: 6.875rem 1.5rem 4rem;
	}

	.ecovoyager-hero-section .hero-eyebrow {
		font-size: 0.72rem;
		margin-bottom: 1.5rem;
	}

	.ecovoyager-hero-section .hero-eyebrow::before,
	.ecovoyager-hero-section .hero-eyebrow::after {
		width: 1.5rem;
	}

	.ecovoyager-hero-section .hero-title {
		font-size: clamp(3.2rem, 12.5vw, 4.6rem);
		margin-bottom: 1.5rem;
	}

	.ecovoyager-hero-section .hero-rule {
		width: 3rem;
		margin-bottom: 1.625rem;
	}

	.ecovoyager-hero-section .hero-subtitle {
		font-size: 1.15rem;
		line-height: 1.7;
		margin-bottom: 2.25rem;
		max-width: 100%;
	}

	.ecovoyager-hero-section .hero-cta {
		flex-direction: column;
		width: 100%;
		gap: 0.75rem;
	}

	.ecovoyager-hero-section .hero-btn {
		width: 100%;
		min-width: 0;
		max-width: 23.75rem;
		margin: 0 auto;
		padding: 1.0625rem 2rem;
		font-size: 0.72rem;
	}
}

/* ================================================
   HERO: 480 AND BELOW, SMALL PHONE
   ================================================ */
@media (max-width: 480px) {
	.ecovoyager-hero-section .hero-content {
		padding: 6rem 1.25rem 3.25rem;
	}

	.ecovoyager-hero-section .hero-eyebrow {
		font-size: 0.66rem;
		margin-bottom: 1.25rem;
	}

	.ecovoyager-hero-section .hero-eyebrow::before,
	.ecovoyager-hero-section .hero-eyebrow::after {
		width: 1.25rem;
	}

	.ecovoyager-hero-section .hero-title {
		font-size: clamp(2.9rem, 13vw, 3.9rem);
		margin-bottom: 1.375rem;
	}

	.ecovoyager-hero-section .hero-rule {
		width: 2.5rem;
		margin-bottom: 1.375rem;
	}

	.ecovoyager-hero-section .hero-subtitle {
		font-size: 1.08rem;
		margin-bottom: 1.875rem;
	}

	.ecovoyager-hero-section .hero-btn {
		max-width: 20rem;
		padding: 1rem 1.75rem;
	}
}

/* ================================================
   HERO: 360 AND BELOW, TINY PHONE
   ================================================ */
@media (max-width: 360px) {
	.ecovoyager-hero-section .hero-content {
		padding: 5.5rem 1rem 2.75rem;
	}

	.ecovoyager-hero-section .hero-title {
		font-size: 2.7rem;
	}

	.ecovoyager-hero-section .hero-subtitle {
		font-size: 1rem;
	}

	.ecovoyager-hero-section .hero-btn {
		max-width: 17.5rem;
		padding: 0.875rem 1.5rem;
		font-size: 0.7rem;
	}
}

/* ================================================
   HERO: FOCUS
   ================================================ */
.ecovoyager-hero-section .hero-btn:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: 4px;
}

/* ================================================
   HERO: OFF SCREEN ANIMATION PAUSE
   hero.js adds .is-paused when the section leaves the viewport
   and removes it when the section returns.

   animation-play-state is not inherited and the section itself
   has no animation, so this has to reach the animated children
   and their pseudo elements directly.

   This block sits after every animation shorthand above on
   purpose: the shorthand resets animation-play-state to running,
   so an earlier pause rule would be undone. Specificity matches
   the rules it overrides, so source order alone decides.
   ================================================ */
.ecovoyager-hero-section.is-paused,
.ecovoyager-hero-section.is-paused *,
.ecovoyager-hero-section.is-paused *::before,
.ecovoyager-hero-section.is-paused *::after {
	animation-play-state: paused;
}

/* ================================================
   HERO: REDUCED MOTION
   Last block in the file. Same specificity as the rules it
   overrides, so source order alone decides. No !important needed.
   ================================================ */
@media (prefers-reduced-motion: reduce) {
	.ecovoyager-hero-section .hero-eyebrow,
	.ecovoyager-hero-section .hero-rule,
	.ecovoyager-hero-section .hero-subtitle,
	.ecovoyager-hero-section .hero-cta,
	.ecovoyager-hero-section .hero-scroll {
		animation: none;
		opacity: 1;
		transform: none;
	}

	.ecovoyager-hero-section .hero-scroll-line::after {
		animation: none;
		will-change: auto;
	}
}

/* ==================================================================
   WHY TRAVELERS CHOOSE
   parts/section-why-travelers.php + assets/js/why-travelers.js

   Full width by default. The 100vw plus negative margin full bleed
   hack is gone, along with the overflow-x: hidden that existed only
   to contain the overflow it caused.

   The .evpwt-js gate on <html> is set by a tiny inline snippet in
   wp_head, so reveal animations only arm when JS is available and
   content stays visible when it is not.
   ================================================================== */
.evpwt {
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 1rem;
	background: var(--wp--preset--color--bg-deep);
	color: #fff;
}

.evpwt *,
.evpwt *::before,
.evpwt *::after {
	box-sizing: border-box;
	margin: 0;
	padding: 0;
}

/* ---------- Header ---------- */
.evpwt-header {
	padding: 5rem 3rem 4rem;
	border-bottom: 1px solid rgba(255, 255, 255, 0.07);
	max-width: 87.5rem;
	margin: 0 auto;
	text-align: left;
}

.evpwt-js .evpwt-header {
	opacity: 0;
	transform: translateY(16px);
	transition: opacity 0.7s ease, transform 0.7s ease;
}

.evpwt-header.is-visible {
	opacity: 1;
	transform: translateY(0);
}

.evpwt-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	margin-bottom: 1.25rem;
}

.evpwt-eyebrow::before {
	content: '';
	display: inline-block;
	width: 1.75rem;
	height: 1.5px;
	background: var(--wp--preset--color--rust);
	flex-shrink: 0;
}

.evpwt-title {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.8rem, 5.5vw, 4.4rem);
	font-weight: 400;
	line-height: 1;
	color: #fff;
}

.evpwt-title em {
	color: var(--wp--preset--color--rust);
	font-style: italic;
}

/* ---------- Cards container: 2x2 grid on desktop ---------- */
.evpwt-cards {
	max-width: 87.5rem;
	margin: 0 auto;
	display: grid;
	grid-template-columns: 1fr 1fr;
	border-top: 1px solid rgba(255, 255, 255, 0.07);
}

.evpwt-card {
	display: grid;
	grid-template-columns: 1fr 1fr;
	border-bottom: 1px solid rgba(255, 255, 255, 0.07);
	border-right: 1px solid rgba(255, 255, 255, 0.07);
}

.evpwt-card:nth-child(2),
.evpwt-card:nth-child(4) {
	border-right: none;
}

.evpwt-js .evpwt-card {
	opacity: 0;
	transform: translateY(20px);
	transition: opacity 0.7s ease, transform 0.7s ease;
}

.evpwt-card.is-visible {
	opacity: 1;
	transform: translateY(0);
}

.evpwt-js .evpwt-card:nth-child(1) { transition-delay: 0.05s; }
.evpwt-js .evpwt-card:nth-child(2) { transition-delay: 0.12s; }
.evpwt-js .evpwt-card:nth-child(3) { transition-delay: 0.19s; }
.evpwt-js .evpwt-card:nth-child(4) { transition-delay: 0.26s; }

/* Bottom row reverses image and body order on desktop. */
.evpwt-card:nth-child(n+3) .evpwt-card-img  { order: 2; }
.evpwt-card:nth-child(n+3) .evpwt-card-body { order: 1; }

/* ---------- Card image ---------- */
.evpwt-card-img {
	position: relative;
	overflow: hidden;
	min-height: 15rem;
}

.evpwt-card-img img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	display: block;
	filter: brightness(0.72) saturate(0.85);
	transition: transform 0.8s ease, filter 0.5s ease;
}

.evpwt-card:hover .evpwt-card-img img {
	transform: scale(1.05);
	filter: brightness(0.85) saturate(0.95);
}

.evpwt-card-img::after {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(135deg, rgba(26, 26, 26, 0.4) 0%, transparent 60%);
	pointer-events: none;
}

/* ---------- Card body ---------- */
.evpwt-card-body {
	display: flex;
	flex-direction: column;
	justify-content: center;
	padding: 2.25rem 2.5rem;
	border-left: 1px solid rgba(255, 255, 255, 0.07);
	position: relative;
}

.evpwt-card:nth-child(n+3) .evpwt-card-body {
	border-left: none;
	border-right: 1px solid rgba(255, 255, 255, 0.07);
}

.evpwt-card-body::before {
	content: '';
	position: absolute;
	top: 2.25rem;
	bottom: 2.25rem;
	left: 0;
	width: 3px;
	background: linear-gradient(180deg, var(--wp--preset--color--rust), transparent);
	border-radius: 3px;
	opacity: 0;
	transition: opacity 0.4s ease;
}

.evpwt-card:nth-child(n+3) .evpwt-card-body::before {
	left: auto;
	right: 0;
}

.evpwt-card:hover .evpwt-card-body::before {
	opacity: 1;
}

.evpwt-card-label {
	font-size: 0.58rem;
	font-weight: 700;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	margin-bottom: 0.625rem;
}

.evpwt-card-title {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.3rem, 1.8vw, 1.7rem);
	font-weight: 400;
	line-height: 1.2;
	color: #fff;
	margin-bottom: 0.875rem;
}

.evpwt-card-rule {
	width: 1.75rem;
	height: 1.5px;
	background: linear-gradient(90deg, var(--wp--preset--color--gold), transparent);
	margin-bottom: 1rem;
}

.evpwt-card-text {
	font-size: 0.85rem;
	line-height: 1.75;
	color: rgba(255, 255, 255, 0.58);
	margin-bottom: 1.25rem;
	max-width: 26.25rem;
}

.evpwt-card-link {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	font-size: 0.66rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	text-decoration: none;
	border-bottom: 1px solid rgba(212, 196, 168, 0.28);
	padding-bottom: 0.1875rem;
	width: fit-content;
	transition: color 0.25s ease, border-color 0.25s ease;
}

.evpwt-card-link:hover {
	color: #fff;
	border-color: rgba(255, 255, 255, 0.5);
}

.evpwt-card-link svg {
	width: 0.8125rem;
	height: 0.8125rem;
	stroke: currentColor;
	fill: none;
	stroke-width: 2;
	transition: transform 0.25s ease;
}

.evpwt-card-link:hover svg {
	transform: translate(3px, -3px);
}

/* Mobile only UI, hidden on desktop. */
.evpwt-mobile-hint,
.evpwt-mobile-nav {
	display: none;
}

/* ---------- Statement ---------- */
.evpwt-statement {
	padding: 4.5rem 3rem;
	max-width: 87.5rem;
	margin: 0 auto;
	display: flex;
	align-items: center;
	gap: 4rem;
}

.evpwt-js .evpwt-statement {
	opacity: 0;
	transform: translateY(16px);
	transition: opacity 0.7s ease 0.1s, transform 0.7s ease 0.1s;
}

.evpwt-statement.is-visible {
	opacity: 1;
	transform: translateY(0);
}

.evpwt-statement-rule {
	width: 1px;
	height: 5rem;
	background: linear-gradient(180deg, transparent, var(--wp--preset--color--rust), transparent);
	flex-shrink: 0;
}

.evpwt-statement-body {
	flex: 1;
}

.evpwt-statement-quote {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.05rem, 1.7vw, 1.35rem);
	font-weight: 400;
	font-style: italic;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.72);
	border: 0;
	quotes: none;
}

.evpwt-statement-author {
	font-size: 0.6rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	margin-top: 1rem;
}

.evpwt-statement-cta {
	flex-shrink: 0;
}

.evpwt-btn {
	display: inline-flex;
	align-items: center;
	gap: 0.625rem;
	padding: 1rem 2rem;
	background: var(--wp--preset--color--rust);
	color: #fff;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	text-decoration: none;
	border-radius: 3.125rem;
	border: 2px solid var(--wp--preset--color--rust);
	box-shadow: 0 8px 28px rgba(184, 98, 27, 0.35);
	transition: all 0.3s ease;
	position: relative;
	overflow: hidden;
	white-space: nowrap;
}

.evpwt-btn::before {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(135deg, var(--wp--preset--color--gold) 0%, var(--wp--preset--color--rust) 100%);
	opacity: 0;
	transition: opacity 0.3s ease;
}

.evpwt-btn:hover::before { opacity: 1; }

.evpwt-btn:hover {
	transform: translateY(-3px);
	box-shadow: 0 12px 36px rgba(184, 98, 27, 0.5);
}

.evpwt-btn > * {
	position: relative;
	z-index: 1;
}

.evpwt-btn svg {
	width: 0.9375rem;
	height: 0.9375rem;
	fill: #fff;
	flex-shrink: 0;
	transition: transform 0.3s ease;
}

.evpwt-btn:hover svg { transform: translateX(3px); }

@keyframes evpwt-arrow {
	0%, 100% { transform: translateX(0);      opacity: 0.5; }
	50%      { transform: translateX(5px);    opacity: 1; }
}

/* ---------- 1024 and below ---------- */
@media (max-width: 1024px) {
	.evpwt-header { padding: 4rem 2.5rem 3.25rem; }
	.evpwt-card-body { padding: 1.75rem 2rem; }
	.evpwt-statement { padding: 3.75rem 2.5rem; gap: 2.5rem; }
}

/* ---------- 768 and below ----------
   The 2x2 grid becomes a horizontal scroll snap track and each card
   becomes a vertical flex column. */
@media (max-width: 768px) {
	.evpwt-header {
		padding: 3.25rem 1.25rem 2.5rem;
		text-align: center;
	}

	.evpwt-eyebrow { justify-content: center; }
	.evpwt-eyebrow::before { display: none; }

	.evpwt-cards {
		max-width: none;
		margin: 0;
		padding: 0 1.25rem;
		border-top: none;

		display: flex;
		flex-wrap: nowrap;
		gap: 0.75rem;

		overflow-x: auto;
		overflow-y: hidden;
		-webkit-overflow-scrolling: touch;

		scroll-snap-type: x mandatory;
		scroll-padding-left: 1.25rem;
		scroll-padding-inline-start: 1.25rem;

		scrollbar-width: none;
		-ms-overflow-style: none;
	}

	.evpwt-cards::-webkit-scrollbar {
		display: none;
		width: 0;
		height: 0;
	}

	.evpwt-card {
		flex: 0 0 auto;
		width: 86vw;
		max-width: 86vw;
		min-width: 86vw;
		margin: 0;

		scroll-snap-align: start;
		scroll-snap-stop: always;

		display: flex;
		flex-direction: column;

		background: rgba(255, 255, 255, 0.04);
		border: 1px solid rgba(255, 255, 255, 0.07);
		border-radius: 1rem;
		overflow: hidden;
	}

	/* Cards do not reveal in the carousel. This needs the .evpwt-js
	   prefix to match the specificity of the rule that hides them. */
	.evpwt-js .evpwt-card {
		opacity: 1;
		transform: none;
		transition: none;
	}

	/* Reset the desktop nth-child order reversal. */
	.evpwt-card-img,
	.evpwt-card-body { order: 0; }
	.evpwt-card:nth-child(n+3) .evpwt-card-img,
	.evpwt-card:nth-child(n+3) .evpwt-card-body { order: 0; }

	.evpwt-card-img {
		width: 100%;
		height: 15rem;
		min-height: 0;
		flex-shrink: 0;
	}

	.evpwt-card-img img {
		filter: brightness(0.78) saturate(0.9);
	}

	.evpwt-card-img::after {
		background: linear-gradient(180deg, transparent 55%, rgba(26, 26, 26, 0.55));
	}

	.evpwt-card-body {
		padding: 1.5rem 1.25rem 1.75rem;
		border: none;
		flex: 1;
	}

	.evpwt-card-body::before { display: none; }

	/* Matches the nth-child rule that set the desktop side border. */
	.evpwt-card:nth-child(n+3) .evpwt-card-body { border: none; }

	.evpwt-card-label {
		font-size: 0.62rem;
		margin-bottom: 0.5rem;
	}

	.evpwt-card-title {
		font-size: 1.65rem;
		line-height: 1.22;
		margin-bottom: 0.75rem;
	}

	.evpwt-card-rule { margin-bottom: 0.875rem; }

	.evpwt-card-text {
		font-size: 0.92rem;
		line-height: 1.8;
		color: rgba(255, 255, 255, 0.6);
		margin-bottom: 1.125rem;
		max-width: none;
	}

	.evpwt-card-link {
		font-size: 0.68rem;
		padding: 0.5rem 0;
		min-height: 2.75rem;
		border-bottom: 1px solid rgba(212, 196, 168, 0.28);
	}

	.evpwt-mobile-hint,
	.evpwt-mobile-nav { display: flex; }

	.evpwt-mobile-hint {
		align-items: center;
		justify-content: center;
		gap: 0.375rem;
		padding: 0.625rem 0 0;
		opacity: 0;
		transition: opacity 0.4s ease;
	}

	.evpwt-mobile-hint.is-visible { opacity: 1; }
	.evpwt-mobile-hint.is-hidden  { opacity: 0; pointer-events: none; }

	.evpwt-mobile-hint span {
		font-size: 0.62rem;
		font-weight: 600;
		letter-spacing: 0.14em;
		text-transform: uppercase;
		color: rgba(255, 255, 255, 0.35);
	}

	.evpwt-mobile-hint svg {
		width: 1.125rem;
		height: 1.125rem;
		stroke: rgba(255, 255, 255, 0.35);
		fill: none;
		stroke-width: 2;
		animation: evpwt-arrow 1.4s ease-in-out infinite;
	}

	.evpwt-mobile-nav {
		align-items: center;
		justify-content: center;
		gap: 1rem;
		padding: 1.25rem 0 0.5rem;
	}

	.evpwt-mobile-counter {
		font-size: 0.7rem;
		font-weight: 600;
		letter-spacing: 0.08em;
		color: rgba(255, 255, 255, 0.5);
		font-variant-numeric: tabular-nums;
		min-width: 1.875rem;
		text-align: center;
	}

	.evpwt-mobile-counter-current {
		color: var(--wp--preset--color--gold);
		font-weight: 700;
	}

	.evpwt-mobile-dots {
		display: flex;
		align-items: center;
		gap: 0.5rem;
	}

	.evpwt-mobile-dot {
		width: 0.625rem;
		height: 0.625rem;
		border-radius: 50%;
		background: rgba(255, 255, 255, 0.18);
		border: none;
		padding: 0;
		cursor: pointer;
		transition: all 0.3s ease;
		-webkit-tap-highlight-color: transparent;
	}

	.evpwt-mobile-dot.is-active,
	.evpwt-mobile-dot[aria-current="true"] {
		background: var(--wp--preset--color--rust);
		width: 1.75rem;
		border-radius: 0.3125rem;
	}

	.evpwt-statement {
		flex-direction: column;
		align-items: center;
		gap: 1.75rem;
		padding: 3.25rem 1.25rem;
		text-align: center;
	}

	.evpwt-statement-rule {
		width: 3.125rem;
		height: 1.5px;
		background: linear-gradient(90deg, transparent, var(--wp--preset--color--rust), transparent);
	}

	.evpwt-statement-quote  { font-size: 1.15rem; line-height: 1.7; }
	.evpwt-statement-author { font-size: 0.58rem; margin-top: 0.875rem; }

	.evpwt-statement-cta {
		width: 100%;
		display: flex;
		justify-content: center;
	}

	/* padding and font-size now match the shared button spec, so they
	   are not repeated here. */
	.evpwt-btn {
		min-height: 3rem;
		width: 100%;
		max-width: 20rem;
		justify-content: center;
		-webkit-tap-highlight-color: transparent;
	}
}

/* ---------- 480 and below ---------- */
@media (max-width: 480px) {
	.evpwt-header { padding: 2.75rem 1rem 2rem; }

	.evpwt-cards {
		padding: 0 1rem;
		scroll-padding-left: 1rem;
		scroll-padding-inline-start: 1rem;
	}

	.evpwt-card {
		width: 88vw;
		max-width: 88vw;
		min-width: 88vw;
	}

	.evpwt-card-img   { height: 13.75rem; }
	.evpwt-card-body  { padding: 1.375rem 1rem 1.625rem; }
	.evpwt-card-title { font-size: 1.5rem; }
	.evpwt-card-text  { font-size: 0.9rem; }
	.evpwt-statement  { padding: 2.75rem 1rem; }
}

/* ---------- 360 and below ---------- */
@media (max-width: 360px) {
	.evpwt-card {
		width: 90vw;
		max-width: 90vw;
		min-width: 90vw;
	}

	.evpwt-card-img   { height: 12.5rem; }
	.evpwt-card-title { font-size: 1.4rem; }
}

/* ---------- Reduced motion ----------
   Last block for this section so source order alone wins. */
@media (prefers-reduced-motion: reduce) {
	.evpwt-js .evpwt-header,
	.evpwt-js .evpwt-card,
	.evpwt-js .evpwt-statement {
		transition: none;
		opacity: 1;
		transform: none;
	}

	.evpwt-card-img img   { transition: none; }
	.evpwt-mobile-hint svg { animation: none; }
	.evpwt-cards          { scroll-behavior: auto; }
}


/* ==================================================================
   TESTIMONIALS
   parts/section-testimonials.php + assets/js/testimonials.js

   No pause control and no review schema, both removed deliberately
   upstream. Not reinstated here.
   ================================================================== */
.ev-testimonials {
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 1rem;
	background: var(--wp--preset--color--bg-deep);
	color: #fff;
	padding: 5rem 0;
	position: relative;
	overflow: hidden;
}

.ev-testimonials *,
.ev-testimonials *::before,
.ev-testimonials *::after {
	box-sizing: border-box;
	margin: 0;
	padding: 0;
}

/* Holds the off screen <symbol> definition for the star icon. */
.ev-t-defs {
	position: absolute;
	width: 0;
	height: 0;
}

/* Visually hidden utility. Scoped to the section so it outranks the
   universal margin and padding reset above without !important. */
.ev-testimonials .ev-t-sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* ---------- Header ---------- */
.ev-t-header {
	max-width: 87.5rem;
	margin: 0 auto 3rem;
	padding: 0 3rem;
	display: flex;
	align-items: baseline;
	justify-content: space-between;
}

/* Reveal only arms when JS is available, so the header stays visible
   with JS off instead of being stranded at opacity 0. */
.evpwt-js .ev-t-header {
	opacity: 0;
	transform: translateY(14px);
	transition: opacity 0.6s ease, transform 0.6s ease;
}

.ev-t-header.vis {
	opacity: 1;
	transform: translateY(0);
}

.ev-t-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	margin-bottom: 1.25rem;
}

.ev-t-eyebrow::before {
	content: '';
	width: 1.75rem;
	height: 1.5px;
	background: var(--wp--preset--color--rust);
	flex-shrink: 0;
}

.ev-t-title {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.8rem, 5.5vw, 4.4rem);
	font-weight: 400;
	line-height: 1;
	color: #fff;
	margin: 0;
}

.ev-t-title em {
	color: var(--wp--preset--color--rust);
	font-style: italic;
}

.ev-t-header-right { flex-shrink: 0; }

.ev-t-link {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	text-decoration: none;
	border-bottom: 1px solid rgba(212, 196, 168, 0.28);
	padding-bottom: 0.125rem;
	transition: color 0.25s ease, border-color 0.25s ease;
}

.ev-t-link:hover {
	color: #fff;
	border-color: rgba(255, 255, 255, 0.5);
}

.ev-t-link:focus-visible {
	outline: 2px solid var(--wp--preset--color--rust);
	outline-offset: 4px;
}

.ev-t-link svg {
	width: 0.8125rem;
	height: 0.8125rem;
	stroke: currentColor;
	fill: none;
	stroke-width: 2;
	transition: transform 0.25s ease;
}

.ev-t-link:hover svg { transform: translate(3px, -3px); }

/* ---------- Scrolling track ---------- */
.ev-t-track {
	display: flex;
	flex-direction: column;
	gap: 0.875rem;
	position: relative;
}

.ev-t-track::before,
.ev-t-track::after {
	content: '';
	position: absolute;
	top: 0;
	bottom: 0;
	width: 7.5rem;
	z-index: 3;
	pointer-events: none;
}

.ev-t-track::before {
	left: 0;
	background: linear-gradient(90deg, var(--wp--preset--color--bg-deep), transparent);
}

.ev-t-track::after {
	right: 0;
	background: linear-gradient(270deg, var(--wp--preset--color--bg-deep), transparent);
}

.ev-t-row {
	display: flex;
	gap: 0.875rem;
	width: max-content;
}

.ev-t-row.row-1 { animation: ev-scroll-left  55s linear infinite; }
.ev-t-row.row-2 { animation: ev-scroll-right 55s linear infinite; }

/* Pause on hover, pointer devices only. */
@media (hover: hover) {
	.ev-t-track:hover .ev-t-row { animation-play-state: paused; }
}

/* Pause when the section is out of view. Three classes deep, so it
   outranks the two class animation shorthand without !important. */
.ev-t-track.is-offscreen .ev-t-row { animation-play-state: paused; }

@keyframes ev-scroll-left  { 0% { transform: translateX(0);    } 100% { transform: translateX(-50%); } }
@keyframes ev-scroll-right { 0% { transform: translateX(-50%); } 100% { transform: translateX(0);    } }

/* ---------- Card ---------- */
.ev-t-card {
	flex-shrink: 0;
	width: 23.75rem;
	padding: 1.5rem 1.625rem;
	background: rgba(255, 255, 255, 0.04);
	border: 1px solid rgba(212, 196, 168, 0.1);
	border-radius: 1rem;
	cursor: default;
	transition: border-color 0.3s ease, background 0.3s ease;
}

.ev-t-card:hover {
	border-color: rgba(184, 98, 27, 0.32);
	background: rgba(255, 255, 255, 0.06);
}

.ev-t-card-top {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 0.875rem;
}

.ev-t-location {
	font-size: 0.56rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	background: rgba(184, 98, 27, 0.1);
	border: 1px solid rgba(184, 98, 27, 0.2);
	border-radius: 3.125rem;
	padding: 0.1875rem 0.625rem;
}

.ev-t-stars {
	display: flex;
	gap: 0.125rem;
}

.ev-t-stars svg {
	width: 0.6875rem;
	height: 0.6875rem;
	fill: var(--wp--preset--color--gold);
}

/* <blockquote> carries heavy default browser styling, hence the reset. */
.ev-t-quote {
	border: 0;
	quotes: none;
	font-size: 0.86rem;
	line-height: 1.65;
	color: rgba(255, 255, 255, 0.68);
	margin-bottom: 1rem;
	display: -webkit-box;
	-webkit-line-clamp: 4;
	-webkit-box-orient: vertical;
	overflow: hidden;
	font-style: normal;
}

.ev-t-author-wrap {
	display: block;
	font-size: 0.72rem;
	font-weight: 600;
	color: rgba(255, 255, 255, 0.5);
	letter-spacing: 0.04em;
}

.ev-t-author-wrap cite { font-style: normal; }

.ev-t-mobile-link {
	display: none;
	justify-content: center;
	margin-top: 2rem;
	position: relative;
	z-index: 2;
}

/* ---------- 768 and below ---------- */
@media (max-width: 768px) {
	.ev-testimonials { padding: 3.75rem 0; }

	.ev-t-header {
		flex-direction: column;
		padding: 0 1.25rem;
		margin-bottom: 2.25rem;
	}

	.ev-t-header-right { display: none; }
	.ev-t-mobile-link  { display: flex; }

	.ev-t-card  { width: 18.75rem; padding: 1.125rem 1.25rem; }
	.ev-t-quote { font-size: 0.82rem; }

	.ev-t-track::before,
	.ev-t-track::after { width: 3.125rem; }
}

/* ---------- 480 and below ---------- */
@media (max-width: 480px) {
	.ev-t-card  { width: 16.875rem; padding: 1rem 1.125rem; }
	.ev-t-quote { font-size: 0.8rem; }
}

/* ---------- Reduced motion ----------
   Scoped to the section so it ties .ev-t-row.row-1 on specificity
   and wins on source order. */
@media (prefers-reduced-motion: reduce) {
	.ev-testimonials .ev-t-row {
		animation: none;
		flex-wrap: wrap;
		width: auto;
		justify-content: center;
		padding: 0 1.25rem;
	}
}


/* ==================================================================
   WHY CHOOSE ECOVOYAGER
   parts/section-why-choose.php + assets/js/why-choose.js

   Full width by default. The 100vw plus negative margin full bleed
   hack is gone, along with its overflow-x: hidden.

   The three pillars exist twice in the DOM: once in the desktop grid
   and once in the mobile carousel. That is how the salvaged markup
   was built and it is preserved here.
   ================================================================== */
.evp-why-choose {
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 1rem;
	background: var(--wp--preset--color--bg-deep);
	color: #fff;
	padding: 5rem 0 5.5rem;
	position: relative;
}

/* This section resets only the universal selector, with no pseudo
   element variants. Matches the salvaged rule exactly. */
.evp-why-choose * {
	box-sizing: border-box;
	margin: 0;
	padding: 0;
}

/* ---------- Header ----------
   Same alignment fix as the blog header above. */
.evp-wc-header {
	max-width: 87.5rem;
	margin: 0 auto 3.5rem;
	padding: 0 3rem;
	text-align: left;
}

.evpwt-js .evp-wc-header {
	opacity: 0;
	transform: translateY(16px);
	transition: opacity 0.7s ease, transform 0.7s ease;
}

.evp-wc-header.vis {
	opacity: 1;
	transform: translateY(0);
}

.evp-wc-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	margin-bottom: 1.25rem;
}

.evp-wc-eyebrow::before {
	content: '';
	display: block;
	width: 1.75rem;
	height: 1.5px;
	background: var(--wp--preset--color--rust);
	flex-shrink: 0;
}

.evp-wc-title {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.8rem, 5.5vw, 4.4rem);
	font-weight: 400;
	line-height: 1;
	color: #fff;
	margin-bottom: 1.5rem;
}

.evp-wc-title em {
	color: var(--wp--preset--color--rust);
	font-style: italic;
}

.evp-wc-rule {
	display: block;
	width: 1.75rem;
	height: 1.5px;
	background: linear-gradient(90deg, var(--wp--preset--color--gold), transparent);
	margin-bottom: 1.5rem;
}

.evp-wc-subtitle {
	font-size: clamp(0.95rem, 1.6vw, 1.1rem);
	font-weight: 300;
	line-height: 1.75;
	color: var(--ev-soft);
	max-width: 38.75rem;
	margin: 0;
}

/* ---------- Desktop pillar grid ---------- */
.evp-wc-grid {
	max-width: 87.5rem;
	margin: 0 auto;
	padding: 0 3rem;
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 1.5rem;
}

.evp-wc-pillar {
	background: rgba(255, 255, 255, 0.04);
	border: 1px solid rgba(255, 255, 255, 0.07);
	border-radius: 1rem;
	overflow: hidden;
	display: flex;
	flex-direction: column;
	transition: border-color 0.3s ease, background 0.3s ease, transform 0.4s ease;
	position: relative;
}

/* The transition above is shared with the hover lift, so it stays
   unconditional. Only the hidden starting state is gated. */
.evpwt-js .evp-wc-pillar {
	opacity: 0;
	transform: translateY(20px);
}

.evp-wc-pillar.vis {
	opacity: 1;
	transform: translateY(0);
}

.evp-wc-grid .evp-wc-pillar:nth-child(1) { transition-delay: 0.05s; }
.evp-wc-grid .evp-wc-pillar:nth-child(2) { transition-delay: 0.12s; }
.evp-wc-grid .evp-wc-pillar:nth-child(3) { transition-delay: 0.19s; }

.evp-wc-pillar:hover {
	border-color: rgba(184, 98, 27, 0.32);
	background: rgba(255, 255, 255, 0.06);
	transform: translateY(-4px);
}

.evp-wc-img {
	position: relative;
	height: 13.75rem;
	overflow: hidden;
	flex-shrink: 0;
}

.evp-wc-img-bg {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	display: block;
	filter: brightness(0.78) saturate(0.9);
	transition: transform 0.8s ease, filter 0.5s ease;
}

.evp-wc-pillar:hover .evp-wc-img-bg {
	transform: scale(1.06);
	filter: brightness(0.9) saturate(1);
}

.evp-wc-img::after {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, transparent 0%, transparent 55%, rgba(26, 26, 26, 0.65) 100%);
	pointer-events: none;
	z-index: 1;
}

.evp-wc-body {
	padding: 1.75rem 1.625rem 1.875rem;
	display: flex;
	flex-direction: column;
	flex: 1;
	position: relative;
}

.evp-wc-label {
	font-size: 0.58rem;
	font-weight: 700;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	margin-bottom: 0.625rem;
}

.evp-wc-pillar-title {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.5rem;
	font-weight: 400;
	line-height: 1.2;
	color: #fff;
	margin-bottom: 0.875rem;
}

.evp-wc-rule-sm {
	width: 1.75rem;
	height: 1.5px;
	background: linear-gradient(90deg, var(--wp--preset--color--gold), transparent);
	margin-bottom: 0.875rem;
}

.evp-wc-desc {
	font-size: 0.88rem;
	line-height: 1.75;
	color: rgba(255, 255, 255, 0.6);
	margin-bottom: 1.25rem;
}

.evp-wc-list {
	list-style: none;
	display: flex;
	flex-direction: column;
	gap: 0.625rem;
	margin-bottom: 1.5rem;
}

.evp-wc-list li {
	display: flex;
	align-items: flex-start;
	gap: 0.625rem;
	font-size: 0.82rem;
	line-height: 1.55;
	color: rgba(255, 255, 255, 0.72);
}

.evp-wc-list-dot {
	width: 0.375rem;
	height: 0.375rem;
	background: var(--wp--preset--color--rust);
	border-radius: 50%;
	flex-shrink: 0;
	margin-top: 0.4375rem;
}

.evp-wc-link {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	margin-top: auto;
	font-size: 0.66rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	text-decoration: none;
	border-bottom: 1px solid rgba(212, 196, 168, 0.28);
	padding-bottom: 0.1875rem;
	width: fit-content;
	transition: color 0.25s ease, border-color 0.25s ease;
}

.evp-wc-link:hover {
	color: #fff;
	border-color: rgba(255, 255, 255, 0.5);
}

.evp-wc-link svg {
	width: 0.8125rem;
	height: 0.8125rem;
	stroke: currentColor;
	fill: none;
	stroke-width: 2;
	transition: transform 0.25s ease;
}

.evp-wc-link:hover svg { transform: translate(3px, -3px); }

/* ---------- Mission statement ---------- */
.evp-wc-mission {
	max-width: 87.5rem;
	margin: 4.5rem auto 3.5rem;
	padding: 3.5rem 3rem;
	display: flex;
	align-items: center;
	gap: 3rem;
	border-top: 1px solid rgba(255, 255, 255, 0.07);
	border-bottom: 1px solid rgba(255, 255, 255, 0.07);
}

.evpwt-js .evp-wc-mission {
	opacity: 0;
	transform: translateY(16px);
	transition: opacity 0.7s ease, transform 0.7s ease;
}

.evp-wc-mission.vis {
	opacity: 1;
	transform: translateY(0);
}

.evp-wc-mission-line {
	width: 1px;
	height: 5rem;
	background: linear-gradient(180deg, transparent, var(--wp--preset--color--rust), transparent);
	flex-shrink: 0;
}

.evp-wc-mission-body { flex: 1; }

.evp-wc-mission-quote {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.05rem, 1.7vw, 1.35rem);
	font-weight: 400;
	font-style: italic;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.72);
}

.evp-wc-mission-author {
	font-size: 0.6rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	margin-top: 1rem;
}

/* ---------- CTA ---------- */
.evp-wc-cta-wrap {
	text-align: center;
	padding: 0 3rem;
}

.evpwt-js .evp-wc-cta-wrap {
	opacity: 0;
	transform: translateY(16px);
	transition: opacity 0.7s ease, transform 0.7s ease;
}

.evp-wc-cta-wrap.vis {
	opacity: 1;
	transform: translateY(0);
}

.evp-wc-cta {
	display: inline-flex;
	align-items: center;
	gap: 0.625rem;
	padding: 1rem 2rem;
	background: var(--wp--preset--color--rust);
	color: #fff;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	text-decoration: none;
	border-radius: 3.125rem;
	border: 2px solid var(--wp--preset--color--rust);
	box-shadow: 0 8px 28px rgba(184, 98, 27, 0.4);
	transition: all 0.3s ease;
	position: relative;
	overflow: hidden;
}

.evp-wc-cta::before {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(135deg, var(--wp--preset--color--gold) 0%, var(--wp--preset--color--rust) 100%);
	opacity: 0;
	transition: opacity 0.3s ease;
}

.evp-wc-cta:hover::before { opacity: 1; }

.evp-wc-cta:hover {
	transform: translateY(-3px);
	box-shadow: 0 14px 36px rgba(184, 98, 27, 0.55);
}

.evp-wc-cta > * {
	position: relative;
	z-index: 1;
}

.evp-wc-cta svg {
	width: 1rem;
	height: 1rem;
	fill: #fff;
	flex-shrink: 0;
	transition: transform 0.3s ease;
}

.evp-wc-cta:hover svg { transform: translateX(3px); }

/* Mobile carousel is hidden on desktop. */
.evp-wc-carousel { display: none; }

@keyframes evpWcSwipeArrow {
	0%, 100% { transform: translateX(0);   opacity: 0.5; }
	50%      { transform: translateX(5px); opacity: 1; }
}

/* ---------- 1024 and below ---------- */
@media (max-width: 1024px) {
	.evp-wc-header   { padding: 0 2.5rem; margin-bottom: 2.75rem; }
	.evp-wc-grid     { padding: 0 2.5rem; gap: 1.25rem; }
	.evp-wc-mission  { padding: 3rem 2.5rem; gap: 2.5rem; margin: 3.75rem auto 3rem; }
	.evp-wc-cta-wrap { padding: 0 2.5rem; }
	.evp-wc-body     { padding: 1.5rem 1.375rem 1.625rem; }
	.evp-wc-img      { height: 12.5rem; }
	.evp-wc-pillar-title { font-size: 1.35rem; }
}

/* ---------- 900 to 769, two up grid ----------
   Off the standard ladder. Carried over from the salvaged file
   unchanged, since the brief is to preserve breakpoints exactly. */
@media (max-width: 900px) and (min-width: 769px) {
	.evp-wc-grid {
		grid-template-columns: repeat(2, 1fr);
	}

	.evp-wc-grid .evp-wc-pillar:nth-child(3) {
		grid-column: 1 / -1;
		max-width: 32.5rem;
		margin: 0 auto;
		width: 100%;
	}
}

/* ---------- 768 and below ---------- */
@media (max-width: 768px) {
	.evp-why-choose { padding: 3.5rem 0 4.25rem; }

	/* Centres at 768, the same breakpoint and behaviour as the why
	   travelers choose header. The dash is dropped when centred and the
	   rule takes the bilateral gradient, as the hero's does when it
	   centres. */
	.evp-wc-header {
		padding: 0 1.25rem;
		margin-bottom: 2.25rem;
		text-align: center;
	}

	.evp-wc-eyebrow { justify-content: center; }
	.evp-wc-eyebrow::before { display: none; }

	.evp-wc-rule {
		width: 3.125rem;
		margin-left: auto;
		margin-right: auto;
		background: linear-gradient(90deg, transparent, var(--wp--preset--color--gold), transparent);
	}

	.evp-wc-subtitle {
		font-size: 1rem;
		padding: 0 0.25rem;
		margin-left: auto;
		margin-right: auto;
	}

	.evp-wc-grid { display: none; }

	.evp-wc-carousel {
		display: block;
		position: relative;
		padding-bottom: 0.5rem;
	}

	.evp-wc-carousel-track {
		display: flex;
		gap: 0.75rem;
		padding: 0 1.25rem;

		overflow-x: auto;
		overflow-y: hidden;
		-webkit-overflow-scrolling: touch;

		scroll-snap-type: x mandatory;
		scroll-padding-left: 1.25rem;

		scrollbar-width: none;
		-ms-overflow-style: none;
	}

	.evp-wc-carousel-track::-webkit-scrollbar { display: none; }

	.evp-wc-carousel .evp-wc-pillar {
		flex: 0 0 86%;
		max-width: 86%;
		scroll-snap-align: start;
		scroll-snap-stop: always;

		opacity: 1;
		transform: none;
		transition: none;
	}

	.evp-wc-carousel .evp-wc-pillar:hover { transform: none; }
	.evp-wc-carousel .evp-wc-img  { height: 13.75rem; }
	.evp-wc-carousel .evp-wc-body { padding: 1.5rem 1.25rem 1.75rem; }

	.evp-wc-pillar-title {
		font-size: 1.55rem;
		line-height: 1.22;
		margin-bottom: 0.75rem;
	}

	.evp-wc-desc {
		font-size: 0.92rem;
		line-height: 1.8;
		margin-bottom: 1.125rem;
	}

	.evp-wc-list li { font-size: 0.88rem; }

	.evp-wc-link {
		font-size: 0.68rem;
		padding: 0.5rem 0;
		min-height: 2.75rem;
		display: inline-flex;
		align-items: center;
	}

	.evp-wc-carousel-nav {
		display: flex;
		align-items: center;
		justify-content: center;
		gap: 1rem;
		padding: 1.25rem 0 0;
	}

	.evp-wc-carousel-counter {
		font-size: 0.7rem;
		font-weight: 600;
		letter-spacing: 0.08em;
		color: rgba(255, 255, 255, 0.5);
		font-variant-numeric: tabular-nums;
		min-width: 1.875rem;
		text-align: center;
	}

	.evp-wc-carousel-counter .evp-wc-counter-current {
		color: var(--wp--preset--color--gold);
		font-weight: 700;
	}

	.evp-wc-carousel-dots {
		display: flex;
		justify-content: center;
		align-items: center;
		gap: 0.5rem;
	}

	.evp-wc-carousel-dot {
		width: 0.625rem;
		height: 0.625rem;
		border-radius: 50%;
		background: rgba(255, 255, 255, 0.18);
		border: none;
		padding: 0;
		cursor: pointer;
		transition: all 0.3s ease;
		-webkit-tap-highlight-color: transparent;
	}

	.evp-wc-carousel-dot.active {
		background: var(--wp--preset--color--rust);
		width: 1.75rem;
		border-radius: 0.3125rem;
	}

	.evp-wc-swipe-hint {
		display: flex;
		align-items: center;
		justify-content: center;
		gap: 0.375rem;
		padding: 0.625rem 0 0;
		opacity: 0;
		transition: opacity 0.4s ease;
	}

	.evp-wc-swipe-hint.show { opacity: 1; }
	.evp-wc-swipe-hint.hide { opacity: 0; pointer-events: none; }

	.evp-wc-swipe-hint-text {
		font-size: 0.62rem;
		font-weight: 600;
		letter-spacing: 0.14em;
		text-transform: uppercase;
		color: rgba(255, 255, 255, 0.35);
	}

	.evp-wc-swipe-hint-arrow {
		display: inline-block;
		width: 1.125rem;
		height: 1.125rem;
		stroke: rgba(255, 255, 255, 0.35);
		fill: none;
		stroke-width: 2;
		animation: evpWcSwipeArrow 1.4s ease-in-out infinite;
	}

	.evp-wc-mission {
		flex-direction: column;
		gap: 1.5rem;
		padding: 2.75rem 1.25rem;
		text-align: center;
		margin: 3rem auto 2.75rem;
	}

	.evp-wc-mission-line {
		width: 3.125rem;
		height: 1.5px;
		background: linear-gradient(90deg, transparent, var(--wp--preset--color--rust), transparent);
	}

	.evp-wc-mission-quote  { font-size: 1.1rem; line-height: 1.7; }
	.evp-wc-mission-author { font-size: 0.58rem; margin-top: 0.875rem; }

	.evp-wc-cta-wrap { padding: 0 1.25rem; }

	.evp-wc-cta {
		padding: 1.0625rem 2.25rem;
		font-size: 0.7rem;
		width: 100%;
		max-width: 20rem;
		justify-content: center;
		min-height: 3rem;
		-webkit-tap-highlight-color: transparent;
	}

	.evp-wc-cta:active { transform: scale(0.98); }
}

/* ---------- 480 and below ---------- */
@media (max-width: 480px) {
	.evp-why-choose { padding: 3rem 0 3.75rem; }

	.evp-wc-header { padding: 0 1rem; margin-bottom: 1.875rem; }

	.evp-wc-carousel-track { padding: 0 1rem; scroll-padding-left: 1rem; }

	.evp-wc-carousel .evp-wc-pillar { flex-basis: 88%; max-width: 88%; }
	.evp-wc-carousel .evp-wc-img    { height: 12.5rem; }
	.evp-wc-carousel .evp-wc-body   { padding: 1.375rem 1rem 1.625rem; }

	.evp-wc-mission      { padding: 2.25rem 1rem; margin: 2.5rem auto 2.25rem; }
	.evp-wc-pillar-title { font-size: 1.4rem; }
	.evp-wc-desc         { font-size: 0.9rem; }
	.evp-wc-cta          { padding: 1rem 1.75rem; font-size: 0.68rem; max-width: 18.125rem; }
}

/* ---------- 360 and below ---------- */
@media (max-width: 360px) {
	.evp-wc-carousel .evp-wc-pillar { flex-basis: 90%; max-width: 90%; }
	.evp-wc-carousel .evp-wc-img    { height: 11.25rem; }
	.evp-wc-pillar-title { font-size: 1.3rem; }
	.evp-wc-cta          { max-width: 16.875rem; padding: 0.9375rem 1.5rem; }
}

/* ---------- Focus ---------- */
.evp-wc-link:focus-visible,
.evp-wc-cta:focus-visible,
.evp-wc-carousel-dot:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: 4px;
}

/* ---------- Reduced motion ----------
   The reveal group is scoped to the section so it ties the .vis
   rules on specificity and wins on source order. */
@media (prefers-reduced-motion: reduce) {
	.evp-wc-swipe-hint-arrow { animation: none; }

	.evp-why-choose .evp-wc-header,
	.evp-why-choose .evp-wc-pillar,
	.evp-why-choose .evp-wc-mission,
	.evp-why-choose .evp-wc-cta-wrap {
		transition: none;
		opacity: 1;
		transform: none;
	}

	.evp-wc-img-bg { transition: none; }
	.evp-wc-pillar:hover { transform: none; }
	.evp-wc-carousel-track { scroll-behavior: auto; }
}


/* ==================================================================
   FLOATING CTA
   parts/section-floating-cta.php + assets/js/floating-cta.js

   Fixed to the viewport, revealed once the hero scrolls out of view.
   Sits at body level rather than inside a section, so it inherits
   Montserrat from the base body rule.
   ================================================================== */
.ev-floating-cta {
	position: fixed;
	bottom: 1.5rem;
	right: 1.5rem;
	z-index: 9999;
	opacity: 0;
	visibility: hidden;
	transform: translateY(20px);
	transition: opacity 0.4s ease, visibility 0.4s ease, transform 0.4s ease;
}

.ev-floating-cta.visible {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}

.ev-floating-cta-btn {
	position: relative;
	display: inline-flex;
	align-items: center;
	padding: 1rem 2rem;
	background: var(--wp--preset--color--rust);
	color: #fff;
	font-size: 0.72rem;
	font-weight: 600;
	letter-spacing: 0.125em;
	text-transform: uppercase;
	text-decoration: none;
	border: none;
	border-radius: 3.125rem;
	cursor: pointer;
	box-shadow: 0 4px 20px rgba(184, 98, 27, 0.35);
	transition: all 0.3s ease;
}

/* Gold to rust hover fill, matching the other CTAs. Clipped with
   border-radius: inherit rather than overflow: hidden on the button,
   which keeps the fill inside the pill without the button becoming a
   clipping context. */
.ev-floating-cta-btn::before {
	content: '';
	position: absolute;
	inset: 0;
	border-radius: inherit;
	background: linear-gradient(135deg, var(--wp--preset--color--gold) 0%, var(--wp--preset--color--rust) 100%);
	opacity: 0;
	transition: opacity 0.3s ease;
}

.ev-floating-cta-btn:hover::before { opacity: 1; }

.ev-floating-cta-btn:hover {
	transform: translateY(-3px);
	box-shadow: 0 6px 28px rgba(184, 98, 27, 0.45);
}

/* Lifts the label above the hover fill. */
.ev-floating-cta-btn > span {
	position: relative;
	z-index: 1;
}

@media (max-width: 768px) {
	.ev-floating-cta {
		bottom: 1rem;
		right: 1rem;
	}
}


/* ==================================================================
   SITE HEADER
   header.php + assets/js/header.js

   Loads on every page, not just the front page. The header declares
   no font-family of its own: it inherits Montserrat from body. The
   two <button> elements are the exception, since form controls do
   not inherit font.
   ================================================================== */
.ecovoyager-header {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	z-index: 1000;
	background: transparent;
	backdrop-filter: blur(0px);
	border-bottom: 1px solid transparent;
	transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.ecovoyager-header.scrolled {
	background: rgba(255, 255, 255, 0.98);
	backdrop-filter: blur(10px);
	box-shadow: 0 2px 20px rgba(0, 0, 0, 0.1);
	border-bottom-color: rgba(212, 196, 168, 0.5);
}

.header-container {
	max-width: 87.5rem;
	margin: 0 auto;
	padding: 0 1.25rem;
	display: flex;
	align-items: center;
	justify-content: space-between;
	height: 5rem;
}

/* ---------- Logo ---------- */
.logo-section {
	display: flex;
	align-items: center;
	flex-shrink: 0;
}

.logo-icon {
	height: 2.8125rem;
	display: flex;
	align-items: center;
	justify-content: center;
	margin-right: 0.9375rem;
	transition: all 0.3s ease;
}

.logo-icon:hover { transform: scale(1.05); }

.logo-icon img {
	height: 100%;
	width: auto;
	object-fit: contain;
}

.logo-text {
	font-size: 1.4rem;
	font-weight: 600;
	color: #fff;
	text-decoration: none;
	letter-spacing: 0.0625rem;
	text-transform: uppercase;
	transition: color 0.3s ease;
}

.logo-text:hover { color: rgba(255, 255, 255, 0.8); }

.ecovoyager-header.scrolled .logo-text { color: #333; }
.ecovoyager-header.scrolled .logo-text:hover { color: var(--wp--preset--color--rust); }

/* ---------- Desktop navigation ---------- */
.nav-menu {
	display: flex;
	list-style: none;
	align-items: center;
	gap: 2.5rem;
}

.nav-item { position: relative; }

.nav-link {
	text-decoration: none;
	color: #fff;
	font-weight: 500;
	font-size: 0.95rem;
	text-transform: uppercase;
	letter-spacing: 0.03125rem;
	padding: 0.625rem 0;
	position: relative;
	transition: all 0.3s ease;
}

.nav-link::after {
	content: '';
	position: absolute;
	bottom: 0;
	left: 0;
	width: 0;
	height: 2px;
	background: linear-gradient(90deg, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.6));
	transition: width 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.nav-link:hover::after,
.nav-link.active::after { width: 100%; }

.nav-link:hover { color: rgba(255, 255, 255, 0.8); }

.ecovoyager-header.scrolled .nav-link { color: #333; }

.ecovoyager-header.scrolled .nav-link::after {
	background: linear-gradient(90deg, var(--wp--preset--color--gold), var(--wp--preset--color--rust));
}

.ecovoyager-header.scrolled .nav-link:hover { color: var(--wp--preset--color--rust); }

/* ---------- Mega menu ---------- */
.nav-item.has-dropdown .mega-menu {
	position: absolute;
	top: 100%;
	left: 50%;
	transform: translateX(-50%) translateY(-10px);
	background: rgba(0, 0, 0, 0.95);
	backdrop-filter: blur(20px);
	min-width: 36.25rem;
	border-radius: 1rem;
	box-shadow: 0 12px 40px rgba(0, 0, 0, 0.4);
	opacity: 0;
	visibility: hidden;
	transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
	border: 1px solid rgba(255, 255, 255, 0.1);
	padding: 1.5625rem 1.875rem;
	margin-top: 0.625rem;
}

.nav-item.has-dropdown .mega-menu.simple-dropdown {
	min-width: 15rem;
	padding: 1.125rem 1.375rem;
}

.ecovoyager-header.scrolled .nav-item.has-dropdown .mega-menu {
	background: rgba(255, 255, 255, 0.99);
	border: 1px solid rgba(212, 196, 168, 0.3);
	box-shadow: 0 12px 40px rgba(0, 0, 0, 0.15);
}

.nav-item.has-dropdown:hover .mega-menu {
	opacity: 1;
	visibility: visible;
	transform: translateX(-50%) translateY(0);
}

.mega-menu-grid {
	display: grid;
	grid-template-columns: repeat(5, 1fr);
	gap: 1.5625rem;
}

.simple-link-list {
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
}

.continent-column {
	min-width: 6.25rem;
	display: flex;
	flex-direction: column;
}

.continent-title {
	font-size: 0.7rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.09375rem;
	color: var(--wp--preset--color--gold);
	margin-bottom: 0;
	padding-bottom: 0.5rem;
	height: 2.375rem;
	display: flex;
	align-items: flex-start;
	line-height: 1.3;
}

.continent-underline {
	height: 1px;
	background: rgba(212, 196, 168, 0.3);
	margin-bottom: 0.75rem;
}

.ecovoyager-header.scrolled .continent-title { color: var(--wp--preset--color--rust); }
.ecovoyager-header.scrolled .continent-underline { background: rgba(184, 98, 27, 0.2); }

.continent-destinations {
	display: flex;
	flex-direction: column;
	gap: 0.375rem;
}

.destination-link {
	display: block;
	padding: 0.375rem 0;
	color: rgba(255, 255, 255, 0.85);
	text-decoration: none;
	font-size: 0.88rem;
	font-weight: 400;
	letter-spacing: 0.01875rem;
	transition: all 0.25s ease;
	position: relative;
	padding-left: 0;
}

.destination-link::before {
	content: '';
	position: absolute;
	left: -0.75rem;
	top: 50%;
	transform: translateY(-50%);
	width: 0.25rem;
	height: 0.25rem;
	background: var(--wp--preset--color--gold);
	border-radius: 50%;
	opacity: 0;
	transition: all 0.25s ease;
}

.destination-link:hover {
	color: #fff;
	padding-left: 0.75rem;
}

.destination-link:hover::before {
	opacity: 1;
	left: 0;
}

.ecovoyager-header.scrolled .destination-link { color: #555; }
.ecovoyager-header.scrolled .destination-link::before { background: var(--wp--preset--color--rust); }
.ecovoyager-header.scrolled .destination-link:hover { color: var(--wp--preset--color--rust); }

.mega-menu-footer {
	margin-top: 1.25rem;
	padding-top: 0.9375rem;
	border-top: 1px solid rgba(255, 255, 255, 0.1);
	text-align: center;
}

.ecovoyager-header.scrolled .mega-menu-footer {
	border-top-color: rgba(212, 196, 168, 0.2);
}

.view-all-link {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	color: var(--wp--preset--color--gold);
	text-decoration: none;
	font-size: 0.85rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.0625rem;
	transition: all 0.3s ease;
}

.view-all-link:hover { color: #fff; }
.view-all-link svg { transition: transform 0.3s ease; }
.view-all-link:hover svg { transform: translateX(4px); }

.ecovoyager-header.scrolled .view-all-link { color: var(--wp--preset--color--rust); }
.ecovoyager-header.scrolled .view-all-link:hover { color: #333; }

/* ---------- Contact button, desktop only ---------- */
.contact-button {
	background: linear-gradient(135deg, var(--wp--preset--color--rust), var(--wp--preset--color--gold));
	color: #fff;
	padding: 0.75rem 1.75rem;
	border: none;
	border-radius: 3.125rem;
	font-size: 0.9rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.0625rem;
	cursor: pointer;
	text-decoration: none;
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
	position: relative;
	overflow: hidden;
	flex-shrink: 0;
}

.contact-button::before {
	content: '';
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	background: linear-gradient(135deg, var(--wp--preset--color--gold), var(--wp--preset--color--rust));
	opacity: 0;
	transition: opacity 0.3s ease;
}

.contact-button:hover::before { opacity: 1; }

.contact-button:hover {
	transform: translateY(-2px);
	box-shadow: 0 8px 25px rgba(184, 98, 27, 0.4);
}

.contact-button span {
	position: relative;
	z-index: 2;
}

/* ---------- Mobile menu toggle ---------- */
.mobile-menu-toggle {
	display: none;
	flex-direction: column;
	justify-content: center;
	gap: 0.3125rem;
	background: none;
	border: none;
	cursor: pointer;
	padding: 0.625rem;
	position: static;
	transform: none;
	z-index: 1001;
	min-width: 2.75rem;
	min-height: 2.75rem;
	align-items: center;
}

.mobile-menu-toggle span {
	width: 1.5rem;
	height: 2px;
	background: #fff;
	transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
	border-radius: 2px;
	display: block;
}

.ecovoyager-header.scrolled .mobile-menu-toggle span { background: #333; }

.mobile-menu-toggle.active span:nth-child(1) { transform: rotate(45deg) translate(5px, 5px); }
.mobile-menu-toggle.active span:nth-child(2) { opacity: 0; transform: scaleX(0); }
.mobile-menu-toggle.active span:nth-child(3) { transform: rotate(-45deg) translate(5px, -5px); }

/* ---------- Mobile menu panel ---------- */
.mobile-menu {
	position: fixed;
	top: 4.375rem;
	left: 0;
	right: 0;
	bottom: 0;
	background: var(--wp--preset--color--bg-deep);
	opacity: 0;
	visibility: hidden;
	transform: translateX(100%);
	transition: transform 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94),
	            opacity 0.35s ease,
	            visibility 0.35s ease;
	overflow-y: auto;
	-webkit-overflow-scrolling: touch;
	z-index: 999;
}

.ecovoyager-header.scrolled ~ .mobile-menu { top: 4.375rem; }

.mobile-menu.active {
	opacity: 1;
	visibility: visible;
	transform: translateX(0);
}

.mobile-nav {
	padding: 0.5rem 0 2.5rem;
	display: flex;
	flex-direction: column;
}

.mobile-nav-link {
	text-decoration: none;
	color: rgba(255, 255, 255, 0.9);
	font-weight: 500;
	font-size: 1rem;
	text-transform: uppercase;
	letter-spacing: 0.0625rem;
	padding: 0 1.5rem;
	height: 3.5rem;
	display: flex;
	align-items: center;
	border-bottom: 1px solid rgba(255, 255, 255, 0.07);
	transition: color 0.2s ease, background 0.2s ease;
}

.mobile-nav-link:hover,
.mobile-nav-link:active {
	color: var(--wp--preset--color--gold);
	background: rgba(255, 255, 255, 0.04);
}

/* ---------- Mobile accordions ---------- */
.mobile-accordion {
	border-bottom: 1px solid rgba(255, 255, 255, 0.07);
}

/* <button> does not inherit font, so this one is declared. */
.mobile-accordion-trigger {
	width: 100%;
	background: none;
	border: none;
	cursor: pointer;
	padding: 0 1.5rem;
	height: 3.5rem;
	display: flex;
	align-items: center;
	justify-content: space-between;
	font-family: var(--wp--preset--font-family--montserrat);
	font-weight: 500;
	font-size: 1rem;
	text-transform: uppercase;
	letter-spacing: 0.0625rem;
	color: rgba(255, 255, 255, 0.9);
	transition: color 0.2s ease, background 0.2s ease;
	text-align: left;
	-webkit-tap-highlight-color: transparent;
}

.mobile-accordion-trigger:hover,
.mobile-accordion-trigger:active {
	color: var(--wp--preset--color--gold);
	background: rgba(255, 255, 255, 0.04);
}

.mobile-accordion-trigger.open { color: var(--wp--preset--color--gold); }

.accordion-chevron {
	width: 1.25rem;
	height: 1.25rem;
	flex-shrink: 0;
	transition: transform 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
	color: rgba(255, 255, 255, 0.5);
}

.mobile-accordion-trigger.open .accordion-chevron {
	transform: rotate(180deg);
	color: var(--wp--preset--color--gold);
}

/* height is animated from 0 to scrollHeight by header.js. */
.mobile-accordion-content {
	overflow: hidden;
	height: 0;
	transition: height 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.mobile-accordion-inner {
	padding: 1rem 1.5rem 1.5rem;
	background: rgba(255, 255, 255, 0.02);
}

.mobile-continent-group { margin-bottom: 1.25rem; }
.mobile-continent-group:last-child { margin-bottom: 0; }

.mobile-continent-title {
	font-size: 0.65rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.125rem;
	color: var(--wp--preset--color--rust);
	margin-bottom: 0.625rem;
}

.mobile-destinations-row {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
}

.mobile-destination-link {
	text-decoration: none;
	color: rgba(255, 255, 255, 0.8);
	font-size: 0.9rem;
	font-weight: 400;
	padding: 0.5rem 0.875rem;
	border-radius: 0.5rem;
	background: rgba(255, 255, 255, 0.06);
	border: 1px solid rgba(255, 255, 255, 0.08);
	min-height: 2.75rem;
	display: inline-flex;
	align-items: center;
	transition: all 0.2s ease;
	-webkit-tap-highlight-color: transparent;
}

.mobile-destination-link:hover,
.mobile-destination-link:active {
	color: #fff;
	background: rgba(212, 196, 168, 0.12);
	border-color: rgba(212, 196, 168, 0.25);
}

.mobile-view-all {
	margin-top: 1.125rem;
	padding-top: 1rem;
	border-top: 1px solid rgba(255, 255, 255, 0.07);
}

.mobile-view-all-link {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	color: var(--wp--preset--color--gold);
	text-decoration: none;
	font-size: 0.8rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.0625rem;
	transition: color 0.2s ease;
}

.mobile-view-all-link:hover { color: #fff; }
.mobile-view-all-link svg { transition: transform 0.2s ease; }
.mobile-view-all-link:hover svg { transform: translateX(4px); }

.mobile-simple-links {
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
}

.mobile-simple-link {
	text-decoration: none;
	color: rgba(255, 255, 255, 0.8);
	font-size: 0.95rem;
	font-weight: 400;
	padding: 0.75rem 0;
	border-bottom: 1px solid rgba(255, 255, 255, 0.06);
	display: flex;
	align-items: center;
	transition: color 0.2s ease;
	min-height: 2.75rem;
}

.mobile-simple-link:last-child { border-bottom: none; }

.mobile-simple-link:hover,
.mobile-simple-link:active { color: var(--wp--preset--color--gold); }

/* ---------- Mobile menu footer CTA ---------- */
.mobile-menu-footer {
	padding: 1.75rem 1.5rem 0;
	margin-top: 0.5rem;
	border-top: 1px solid rgba(255, 255, 255, 0.07);
}

/*
   BOX-SIZING IS THE WHOLE BUG. There is no global border-box reset in
   this stylesheet, so width:100% here was the CONTENT width and the
   3rem of horizontal padding was added on top. In a 382px footer the
   button measured 430px and hung 24px past the viewport with its right
   cap cut off, and min-height:54px applied to the content box so the
   rendered height came out at 86px rather than 54.

   The left gap looked correct throughout, which is what made it read
   as a container problem: .mobile-menu-footer's 24px padding was
   always right, and only the right edge was wrong.

   Solid rust at rest. The gradient is the ::before overlay's job and
   the static two-colour background that used to sit here was the
   second, permanent copy of it.
*/
.mobile-contact-btn {
	box-sizing: border-box;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.625rem;
	width: 100%;
	padding: 1rem 1.5rem;
	background: var(--wp--preset--color--rust);
	color: #fff;
	text-decoration: none;
	font-size: 0.72rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.14em;
	border: 2px solid var(--wp--preset--color--rust);
	border-radius: 3.125rem;
	transition: all 0.3s ease;
	min-height: 3.375rem;
	position: relative;
	overflow: hidden;
	box-shadow: 0 0.5rem 1.75rem rgba(184, 98, 27, 0.35);
}

.mobile-contact-btn::before {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(135deg, var(--wp--preset--color--gold) 0%, var(--wp--preset--color--rust) 100%);
	opacity: 0;
	transition: opacity 0.3s ease;
}

/*
   :active only, never :hover. iOS leaves :hover applied after a tap
   until something else is tapped, so a hover rule here is how the
   gradient gets stuck on for the rest of the visit. The capture uses
   :active alone and this is why.
*/
.mobile-contact-btn:active::before {
	opacity: 1;
}

.mobile-contact-btn-arrow {
	flex-shrink: 0;
	position: relative;
	z-index: 2;
	transition: transform 0.3s ease;
}

.mobile-contact-btn:active .mobile-contact-btn-arrow {
	transform: translateX(3px);
}

/* Above the overlay, which is absolutely positioned across the button. */
.mobile-contact-btn span {
	position: relative;
	z-index: 2;
}

/* ---------- 1024 and below ---------- */
@media (max-width: 1024px) {
	.nav-menu { gap: 1.875rem; }

	.nav-item.has-dropdown .mega-menu {
		min-width: 32.5rem;
		padding: 1.25rem 1.5625rem;
	}

	.nav-item.has-dropdown .mega-menu.simple-dropdown {
		min-width: 15rem;
		padding: 1.125rem 1.375rem;
	}

	.mega-menu-grid { gap: 1.125rem; }
}

/* ---------- 768 and below ---------- */
@media (max-width: 768px) {
	.header-container {
		height: 4.375rem;
		padding: 0 1rem;
	}

	.nav-menu { display: none; }
	.contact-button { display: none; }
	.mobile-menu-toggle { display: flex; }

	.logo-text { font-size: 1.15rem; }

	.logo-icon {
		height: 2.375rem;
		margin-right: 0.625rem;
	}

	.mobile-menu { top: 4.375rem; }
}

/* ---------- 480 and below ---------- */
@media (max-width: 480px) {
	.header-container {
		height: 4rem;
		padding: 0 0.75rem;
	}

	.logo-text { font-size: 1rem; }

	.logo-icon {
		height: 2.125rem;
		margin-right: 0.5rem;
	}

	.mobile-menu { top: 4rem; }
}

/* ---------- Focus ---------- */
.nav-link:focus-visible,
.contact-button:focus-visible,
.mobile-menu-toggle:focus-visible {
	outline: 3px solid rgba(255, 255, 255, 0.8);
	outline-offset: 2px;
}

.ecovoyager-header.scrolled .nav-link:focus-visible,
.ecovoyager-header.scrolled .mobile-menu-toggle:focus-visible {
	outline-color: var(--wp--preset--color--gold);
}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
	.ecovoyager-header,
	.ecovoyager-header *,
	.mobile-menu,
	.mobile-menu *,
	.mobile-accordion-content {
		transition-duration: 0.01ms;
	}

	/* These outrank the blanket rules above, so they are repeated at
	   their own weight rather than reaching for !important. */
	.nav-item.has-dropdown .mega-menu,
	.mobile-menu-toggle span,
	.view-all-link svg,
	.mobile-view-all-link svg {
		transition-duration: 0.01ms;
	}
}


/* ==================================================================
   SITE FOOTER
   footer.php + assets/js/footer.js

   Loads on every page. The 100vw plus negative margin full bleed hack
   is gone, along with the overflow-x: hidden that contained it.

   Cascade note: the generic .evp-footer a rule below is (0,1,1), so
   the specific link rules carry an `a` type selector to match it and
   win on source order. That is what the !important declarations in
   the salvaged file were standing in for.
   ================================================================== */
.evp-footer {
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 1rem;
	background: var(--wp--preset--color--bg-deep);
	color: #fff;
	position: relative;
	border-top: 1px solid rgba(255, 255, 255, 0.07);
}

.evp-footer * {
	box-sizing: border-box;
	margin: 0;
	padding: 0;
}

.evp-footer a,
.evp-footer a:hover,
.evp-footer a:focus,
.evp-footer a:active,
.evp-footer a:visited {
	text-decoration: none;
	border-bottom: none;
	color: inherit;
}

.evp-footer-container {
	max-width: 87.5rem;
	margin: 0 auto;
	padding: 4.5rem 3rem 1.75rem;
	position: relative;
}

.evp-footer-main {
	display: grid;
	grid-template-columns: 1.6fr 1.2fr 1fr 1fr;
	gap: 3.5rem;
	margin-bottom: 3.5rem;
}

/* ---------- Company column ---------- */
.evp-footer-company { max-width: 26.25rem; }

.evp-footer-logo-section {
	display: flex;
	align-items: center;
	gap: 0.875rem;
	margin-bottom: 1.375rem;
}

.evp-footer-logo-icon {
	width: 3.5rem;
	height: 3.5rem;
	flex-shrink: 0;
	display: flex;
	align-items: center;
	justify-content: center;
}

.evp-footer-logo-icon img {
	width: 100%;
	height: 100%;
	object-fit: contain;
}

.evp-footer-logo-text {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.6rem;
	font-weight: 400;
	color: #fff;
	letter-spacing: 0.02em;
	line-height: 1;
}

.evp-footer-tagline {
	font-size: 0.88rem;
	line-height: 1.75;
	color: rgba(255, 255, 255, 0.6);
	margin-bottom: 1.5rem;
}

.evp-footer-contact-info {
	display: flex;
	flex-direction: column;
	gap: 0.625rem;
	margin-bottom: 1.5rem;
}

.evp-footer-contact-item {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	font-size: 0.85rem;
	color: rgba(255, 255, 255, 0.7);
	transition: color 0.25s ease;
}

.evp-footer-contact-item a {
	color: inherit;
	transition: color 0.25s ease;
}

.evp-footer-contact-item a:hover { color: var(--wp--preset--color--gold); }

.evp-footer-contact-icon {
	width: 1rem;
	height: 1rem;
	flex-shrink: 0;
	stroke: var(--wp--preset--color--rust);
	fill: none;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.evp-footer-social {
	display: flex;
	gap: 0.625rem;
}

.evp-footer-social-link {
	width: 2.625rem;
	height: 2.625rem;
	background: rgba(255, 255, 255, 0.04);
	border: 1px solid rgba(255, 255, 255, 0.08);
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	color: rgba(255, 255, 255, 0.6);
	transition: all 0.3s ease;
	-webkit-tap-highlight-color: transparent;
}

.evp-footer-social-link:hover {
	background: var(--wp--preset--color--rust);
	border-color: var(--wp--preset--color--rust);
	color: #fff;
	transform: translateY(-2px);
	box-shadow: 0 6px 18px rgba(184, 98, 27, 0.4);
}

.evp-footer-social-link svg {
	width: 1.0625rem;
	height: 1.0625rem;
}

/* ---------- Section headers ---------- */
.evp-footer-section {
	display: flex;
	flex-direction: column;
}

/* font-family is declared because these are <h3> elements, and the
   global heading rule would otherwise put them in Playfair Display.
   The salvaged footer rendered them in Montserrat. */
.evp-footer-section-title {
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	margin-bottom: 1.375rem;
	display: flex;
	align-items: center;
	gap: 0.75rem;
}

.evp-footer-section-title::before {
	content: '';
	width: 1.5rem;
	height: 1.5px;
	background: var(--wp--preset--color--rust);
	flex-shrink: 0;
}

/* ---------- Link lists ---------- */
.evp-footer-links {
	display: flex;
	flex-direction: column;
	gap: 0.125rem;
}

a.evp-footer-link {
	color: rgba(255, 255, 255, 0.62);
	font-size: 0.85rem;
	font-weight: 400;
	line-height: 1.5;
	padding: 0.5rem 0;
	transition: color 0.25s ease, transform 0.25s ease;
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	width: fit-content;
}

a.evp-footer-link::before {
	content: '';
	width: 0;
	height: 1px;
	background: var(--wp--preset--color--gold);
	transition: width 0.3s ease;
}

a.evp-footer-link:hover { color: var(--wp--preset--color--gold); }
a.evp-footer-link:hover::before { width: 0.875rem; }

/* ---------- Contact form ---------- */
.evp-footer-form {
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
}

.evp-footer-form-msg {
	display: none;
	padding: 0.875rem 1rem;
	border-radius: 0.625rem;
	font-size: 0.82rem;
	line-height: 1.5;
	margin-bottom: 0.25rem;
}

.evp-footer-form-msg.show { display: block; }

.evp-footer-form-msg.success {
	background: rgba(34, 197, 94, 0.08);
	color: #4ade80;
	border: 1px solid rgba(34, 197, 94, 0.25);
}

.evp-footer-form-msg.error {
	background: rgba(239, 68, 68, 0.08);
	color: #fca5a5;
	border: 1px solid rgba(239, 68, 68, 0.25);
}

/* Form controls do not inherit font, so it is declared here. */
.evp-footer-form-input,
.evp-footer-form-textarea {
	width: 100%;
	padding: 0.875rem 1rem;
	background: rgba(255, 255, 255, 0.03);
	border: 1px solid rgba(212, 196, 168, 0.18);
	border-radius: 0.625rem;
	color: #fff;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.88rem;
	font-weight: 400;
	transition: border-color 0.25s ease, background 0.25s ease, box-shadow 0.25s ease;
	-webkit-appearance: none;
	appearance: none;
}

.evp-footer-form-input::placeholder,
.evp-footer-form-textarea::placeholder {
	color: rgba(255, 255, 255, 0.35);
	font-weight: 300;
}

.evp-footer-form-input:focus,
.evp-footer-form-textarea:focus {
	outline: none;
	background: rgba(255, 255, 255, 0.05);
	border-color: rgba(212, 196, 168, 0.55);
	box-shadow: 0 0 0 3px rgba(184, 98, 27, 0.12);
}

/* Set by footer.js on blur when the email does not parse. Declared
   after :focus so it behaves like the inline style it replaces. */
.evp-footer-form-input.is-invalid,
.evp-footer-form-textarea.is-invalid {
	border-color: rgba(239, 68, 68, 0.6);
}

.evp-footer-form-textarea {
	min-height: 6rem;
	resize: vertical;
	line-height: 1.6;
}

.evp-footer-form-submit {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.625rem;
	padding: 0.9375rem 1.75rem;
	background: var(--wp--preset--color--rust);
	color: #fff;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	border-radius: 3.125rem;
	border: 2px solid var(--wp--preset--color--rust);
	box-shadow: 0 8px 24px rgba(184, 98, 27, 0.35);
	cursor: pointer;
	transition: all 0.3s ease;
	position: relative;
	overflow: hidden;
	margin-top: 0.25rem;
	min-height: 3rem;
}

.evp-footer-form-submit::before {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(135deg, var(--wp--preset--color--gold) 0%, var(--wp--preset--color--rust) 100%);
	opacity: 0;
	transition: opacity 0.3s ease;
}

.evp-footer-form-submit:hover::before { opacity: 1; }

.evp-footer-form-submit:hover {
	transform: translateY(-2px);
	box-shadow: 0 12px 32px rgba(184, 98, 27, 0.5);
}

.evp-footer-form-submit > * {
	position: relative;
	z-index: 1;
}

.evp-footer-form-submit svg {
	width: 0.875rem;
	height: 0.875rem;
	fill: #fff;
	flex-shrink: 0;
	transition: transform 0.3s ease;
}

.evp-footer-form-submit:hover svg { transform: translateX(3px); }

/* Declared after :hover so the disabled state wins on source order. */
.evp-footer-form-submit:disabled {
	opacity: 0.6;
	cursor: not-allowed;
	transform: none;
	box-shadow: none;
}

.evp-footer-form-submit.loading > * { opacity: 0; }

.evp-footer-form-submit.loading::after {
	content: '';
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	width: 1.125rem;
	height: 1.125rem;
	border: 2px solid rgba(255, 255, 255, 0.3);
	border-top-color: #fff;
	border-radius: 50%;
	animation: evpFooterSpin 0.7s linear infinite;
	z-index: 2;
}

@keyframes evpFooterSpin {
	to { transform: translate(-50%, -50%) rotate(360deg); }
}

/* ---------- Footer bottom ---------- */
.evp-footer-bottom {
	border-top: 1px solid rgba(255, 255, 255, 0.07);
	padding-top: 1.75rem;
	display: flex;
	justify-content: space-between;
	align-items: center;
	flex-wrap: wrap;
	gap: 1.125rem;
}

.evp-footer-copyright {
	color: rgba(255, 255, 255, 0.4);
	font-size: 0.78rem;
	letter-spacing: 0.04em;
}

.evp-footer-legal {
	display: flex;
	gap: 1.5rem;
	flex-wrap: wrap;
}

a.evp-footer-legal-link {
	color: rgba(255, 255, 255, 0.4);
	font-size: 0.78rem;
	transition: color 0.25s ease;
	padding: 0.25rem 0;
}

a.evp-footer-legal-link:hover { color: var(--wp--preset--color--gold); }

/* ---------- 1024 and below ---------- */
@media (max-width: 1024px) {
	.evp-footer-container { padding: 3.75rem 2.5rem 1.5rem; }

	.evp-footer-main {
		grid-template-columns: 1fr 1fr;
		gap: 2.75rem 2.25rem;
	}

	.evp-footer-company {
		grid-column: 1 / -1;
		max-width: 100%;
		text-align: center;
	}

	.evp-footer-logo-section { justify-content: center; }
	.evp-footer-contact-info { align-items: center; }
	.evp-footer-social { justify-content: center; }

	.evp-footer-tagline {
		margin-left: auto;
		margin-right: auto;
		max-width: 32.5rem;
	}
}

/* ---------- 768 and below ---------- */
@media (max-width: 768px) {
	.evp-footer-container { padding: 3.25rem 1.25rem 1.25rem; }

	.evp-footer-main {
		grid-template-columns: 1fr;
		gap: 2.5rem;
		margin-bottom: 2.75rem;
	}

	.evp-footer-section { text-align: center; }

	.evp-footer-section-title {
		justify-content: center;
		margin-bottom: 1.125rem;
	}

	.evp-footer-logo-section {
		flex-direction: row;
		justify-content: center;
	}

	.evp-footer-logo-icon { width: 3.125rem; height: 3.125rem; }
	.evp-footer-logo-text { font-size: 1.4rem; }
	.evp-footer-tagline   { font-size: 0.86rem; }

	.evp-footer-links {
		align-items: center;
		gap: 0.25rem;
	}

	a.evp-footer-link {
		justify-content: center;
		padding: 0.625rem 0;
		font-size: 0.88rem;
	}

	a.evp-footer-link::before { display: none; }

	.evp-footer-form-submit {
		width: 100%;
		max-width: 20rem;
		margin-left: auto;
		margin-right: auto;
	}

	.evp-footer-bottom {
		flex-direction: column;
		text-align: center;
		gap: 0.875rem;
		padding-top: 1.5rem;
	}

	.evp-footer-legal { justify-content: center; gap: 1.125rem; }
}

/* ---------- 480 and below ---------- */
@media (max-width: 480px) {
	.evp-footer-container { padding: 2.75rem 1rem 1rem; }
	.evp-footer-main      { gap: 2rem; }
	.evp-footer-logo-text { font-size: 1.25rem; }
	.evp-footer-tagline   { font-size: 0.84rem; }

	/* Stays in px on purpose. iOS zooms the page on focus when a form
	   control computes below 16px, so this is a device threshold
	   rather than a type choice. */
	.evp-footer-form-input,
	.evp-footer-form-textarea {
		font-size: 16px;
		padding: 0.8125rem 0.9375rem;
	}

	.evp-footer-legal {
		flex-direction: row;
		flex-wrap: wrap;
		justify-content: center;
		gap: 0.75rem 1.125rem;
	}

	.evp-footer-copyright   { font-size: 0.75rem; }
	a.evp-footer-legal-link { font-size: 0.75rem; }
}

/* ---------- Focus ---------- */
a.evp-footer-link:focus-visible,
.evp-footer-social-link:focus-visible,
.evp-footer-form-submit:focus-visible,
a.evp-footer-legal-link:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
	a.evp-footer-link,
	a.evp-footer-link::before,
	.evp-footer-social-link,
	.evp-footer-form-submit,
	.evp-footer-form-input,
	.evp-footer-form-textarea {
		transition: none;
	}

	.evp-footer-form-submit:hover,
	.evp-footer-social-link:hover {
		transform: none;
	}
}


/* ==================================================================
   BLOG
   parts/section-blog.php + assets/js/blog.js

   Rebuilt from salvage/homepage-blog-LIVE-20260818.html. The uniqid
   instance prefix that file carried (evpb-6a8406805baa7-) is gone: a
   template part renders once, so nothing needs scoping by instance.

   Full width by default, so the 100vw plus negative margin hack and the
   overflow-x: hidden that contained it are both gone. The 100vw that
   remains in the markup is a sizes attribute, which is legitimate.
   ================================================================== */
.evpb-section {
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 1rem;
	background: var(--wp--preset--color--bg-deep);
	color: #fff;
	padding: 5rem 0 0;
	position: relative;
}

.evpb-section *,
.evpb-section *::before,
.evpb-section *::after {
	box-sizing: border-box;
	margin: 0;
	padding: 0;
}

/* ---------- Header ----------
   Left aligned, single leading dash, gradient rule. Matches the pattern
   hero, why travelers choose and testimonials already use. It previously
   drifted to a centred bilateral eyebrow with a pulsing diamond rule. */
.evpb-header {
	max-width: 87.5rem;
	margin: 0 auto 3.5rem;
	padding: 0 3rem;
	text-align: left;
}

.evpwt-js .evpb-header {
	opacity: 0;
	transform: translateY(16px);
	transition: opacity 0.7s ease, transform 0.7s ease;
}

.evpb-header.vis {
	opacity: 1;
	transform: translateY(0);
}

.evpb-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	margin-bottom: 1.25rem;
}

.evpb-eyebrow::before {
	content: '';
	display: block;
	width: 1.75rem;
	height: 1.5px;
	background: var(--wp--preset--color--rust);
	flex-shrink: 0;
}

.evpb-title {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.8rem, 5.5vw, 4.4rem);
	font-weight: 400;
	line-height: 1;
	color: #fff;
	margin-bottom: 1.5rem;
}

.evpb-title em {
	color: var(--wp--preset--color--rust);
	font-style: italic;
}

.evpb-rule {
	display: block;
	width: 1.75rem;
	height: 1.5px;
	background: linear-gradient(90deg, var(--wp--preset--color--gold), transparent);
	margin-bottom: 1.5rem;
}

.evpb-subtitle {
	font-size: clamp(0.95rem, 1.6vw, 1.1rem);
	font-weight: 300;
	line-height: 1.75;
	color: var(--ev-soft);
	max-width: 38.75rem;
	margin: 0;
}

/* ---------- Grid ---------- */
.evpb-grid {
	max-width: 87.5rem;
	margin: 0 auto 3rem;
	padding: 0 3rem;
	display: grid;
	grid-template-columns: 1.25fr 1fr;
	gap: 1.75rem;
	align-items: stretch;
}

/* ---------- Featured post ---------- */
.evpb-featured {
	background: rgba(255, 255, 255, 0.04);
	border: 1px solid rgba(255, 255, 255, 0.07);
	border-radius: 1rem;
	overflow: hidden;
	display: flex;
	flex-direction: column;
	text-decoration: none;
	color: inherit;
	transition: opacity 0.7s ease, transform 0.7s ease,
	            border-color 0.3s ease, background 0.3s ease;
}

.evpwt-js .evpb-featured {
	opacity: 0;
	transform: translateY(20px);
}

.evpb-featured.vis {
	opacity: 1;
	transform: translateY(0);
}

.evpb-featured:hover {
	border-color: rgba(184, 98, 27, 0.32);
	background: rgba(255, 255, 255, 0.06);
}

.evpb-featured-img {
	position: relative;
	height: 22.5rem;
	overflow: hidden;
	flex-shrink: 0;
	background: #0a0706;
}

.evpb-featured-img img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	filter: brightness(0.9) saturate(0.95);
	transition: transform 0.8s ease, filter 0.5s ease;
}

.evpb-featured:hover .evpb-featured-img img {
	transform: scale(1.04);
	filter: brightness(1) saturate(1.05);
}

.evpb-featured-img::after {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, transparent 45%, rgba(17, 16, 16, 0.55) 100%);
	pointer-events: none;
}

.evpb-category {
	position: absolute;
	top: 1.125rem;
	left: 1.125rem;
	background: var(--wp--preset--color--rust);
	color: #fff;
	font-size: 0.58rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	padding: 0.25rem 0.6875rem;
	border-radius: 3.125rem;
	z-index: 3;
	box-shadow: 0 4px 14px rgba(184, 98, 27, 0.4);
}

.evpb-featured-body {
	padding: 1.75rem 1.875rem 2rem;
	display: flex;
	flex-direction: column;
	flex: 1;
}

.evpb-meta {
	display: flex;
	align-items: center;
	gap: 1rem;
	font-size: 0.7rem;
	font-weight: 500;
	color: rgba(255, 255, 255, 0.45);
	margin-bottom: 0.875rem;
}

.evpb-meta span,
.evpb-meta time {
	display: inline-flex;
	align-items: center;
	gap: 0.375rem;
}

.evpb-meta svg {
	width: 0.75rem;
	height: 0.75rem;
	stroke: var(--wp--preset--color--rust);
	fill: none;
	stroke-width: 2;
	flex-shrink: 0;
}

.evpb-featured-title {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.7rem;
	font-weight: 400;
	color: #fff;
	line-height: 1.25;
	margin-bottom: 0.875rem;
}

.evpb-rule-sm {
	width: 1.75rem;
	height: 1.5px;
	background: linear-gradient(90deg, var(--wp--preset--color--gold), transparent);
	margin-bottom: 0.875rem;
}

.evpb-excerpt {
	font-size: 0.88rem;
	line-height: 1.75;
	color: rgba(255, 255, 255, 0.6);
	margin-bottom: 1.375rem;
	flex: 1;
}

.evpb-read-more {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	font-size: 0.66rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	text-decoration: none;
	border-bottom: 1px solid rgba(212, 196, 168, 0.28);
	padding-bottom: 0.1875rem;
	width: fit-content;
	transition: color 0.25s ease, border-color 0.25s ease;
}

.evpb-featured:hover .evpb-read-more,
.evpb-read-more:hover {
	color: #fff;
	border-color: rgba(255, 255, 255, 0.5);
}

.evpb-read-more svg {
	width: 0.8125rem;
	height: 0.8125rem;
	stroke: currentColor;
	fill: none;
	stroke-width: 2;
	transition: transform 0.25s ease;
}

.evpb-featured:hover .evpb-read-more svg,
.evpb-read-more:hover svg {
	transform: translate(3px, -3px);
}

/* ---------- Side column ---------- */
.evpb-side {
	display: flex;
	flex-direction: column;
	gap: 0.875rem;
}

.evpb-side-post {
	background: rgba(255, 255, 255, 0.04);
	border: 1px solid rgba(255, 255, 255, 0.07);
	border-radius: 0.875rem;
	overflow: hidden;
	display: flex;
	gap: 1rem;
	flex: 1;
	min-height: 8.125rem;
	text-decoration: none;
	color: inherit;
	transition: opacity 0.6s ease, transform 0.6s ease,
	            border-color 0.3s ease, background 0.3s ease;
}

/* blog.js sets the stagger via transition-delay, so it scales with any
   number of posts rather than being hardcoded to :nth-child(1..4). */
.evpwt-js .evpb-side-post {
	opacity: 0;
	transform: translateY(20px);
}

.evpb-side-post.vis {
	opacity: 1;
	transform: translateY(0);
}

.evpb-side-post:hover {
	border-color: rgba(184, 98, 27, 0.32);
	background: rgba(255, 255, 255, 0.06);
}

.evpb-side-img {
	flex: 0 0 8.75rem;
	position: relative;
	overflow: hidden;
	background: #0a0706;
}

.evpb-side-img img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	filter: brightness(0.88);
	transition: transform 0.6s ease, filter 0.5s ease;
}

.evpb-side-post:hover .evpb-side-img img {
	transform: scale(1.06);
	filter: brightness(1);
}

.evpb-side-body {
	padding: 0.875rem 1.125rem 0.875rem 0;
	display: flex;
	flex-direction: column;
	justify-content: center;
	flex: 1;
	min-width: 0;
}

.evpb-side-category {
	font-size: 0.54rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	margin-bottom: 0.5rem;
}

.evpb-side-title {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1rem;
	font-weight: 400;
	color: #fff;
	line-height: 1.3;
	margin-bottom: 0.5rem;
}

.evpb-side-meta {
	font-size: 0.65rem;
	font-weight: 500;
	color: rgba(255, 255, 255, 0.45);
	display: inline-flex;
	align-items: center;
	gap: 0.3125rem;
}

.evpb-side-meta svg {
	width: 0.6875rem;
	height: 0.6875rem;
	stroke: var(--wp--preset--color--rust);
	fill: none;
	stroke-width: 2;
	flex-shrink: 0;
}

/* ---------- CTA ---------- */
.evpb-cta-wrap {
	text-align: center;
	max-width: 87.5rem;
	margin: 0 auto;
	padding: 0 3rem 4.5rem;
}

.evpb-cta {
	display: inline-flex;
	align-items: center;
	gap: 0.625rem;
	padding: 1rem 2rem;
	background: var(--wp--preset--color--rust);
	color: #fff;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	text-decoration: none;
	border-radius: 3.125rem;
	border: 2px solid var(--wp--preset--color--rust);
	box-shadow: 0 8px 28px rgba(184, 98, 27, 0.4);
	transition: all 0.3s ease;
	position: relative;
	overflow: hidden;
}

.evpb-cta::before {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(135deg, var(--wp--preset--color--gold) 0%, var(--wp--preset--color--rust) 100%);
	opacity: 0;
	transition: opacity 0.3s ease;
}

.evpb-cta:hover::before { opacity: 1; }

.evpb-cta:hover {
	transform: translateY(-3px);
	box-shadow: 0 14px 36px rgba(184, 98, 27, 0.55);
}

.evpb-cta > * {
	position: relative;
	z-index: 1;
}

.evpb-cta svg {
	width: 1rem;
	height: 1rem;
	fill: #fff;
	flex-shrink: 0;
	transition: transform 0.3s ease;
}

.evpb-cta:hover svg { transform: translateX(3px); }

/* ---------- The Dispatch ----------
   A standalone CTA panel, not a section header, so this one is centred
   on purpose. Keeps the top border so it reads as separate from the
   article grid above it. The subscribe form is gone; see the note in
   section-blog.php. */
.evpb-newsletter {
	max-width: 87.5rem;
	margin: 0 auto;
	padding: 3.5rem 3rem 4.5rem;
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	border-top: 1px solid rgba(255, 255, 255, 0.07);
}

.evpwt-js .evpb-newsletter {
	opacity: 0;
	transform: translateY(16px);
	transition: opacity 0.7s ease, transform 0.7s ease;
}

.evpb-newsletter.vis {
	opacity: 1;
	transform: translateY(0);
}

.evpb-newsletter-line {
	width: 3.125rem;
	height: 1.5px;
	background: linear-gradient(90deg, transparent, var(--wp--preset--color--rust), transparent);
	flex-shrink: 0;
	margin-bottom: 1.75rem;
}

/* Readable measure, matching the section subtitles. */
.evpb-newsletter-body {
	max-width: 38.75rem;
}

.evpb-newsletter-eyebrow {
	font-size: 0.58rem;
	font-weight: 700;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	margin-bottom: 0.625rem;
}

.evpb-newsletter-title {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.4rem, 2vw, 1.8rem);
	font-weight: 400;
	color: #fff;
	line-height: 1.3;
	margin-bottom: 0.625rem;
}

.evpb-newsletter-desc {
	font-size: 0.88rem;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.6);
	margin-bottom: 1.75rem;
	max-width: 100%;
}

/* ---------- 1200 and below ---------- */
@media (max-width: 1200px) {
	.evpb-featured-img   { height: 20rem; }
	.evpb-featured-title { font-size: 1.55rem; }
}

/* ---------- 1024 and below ---------- */
@media (max-width: 1024px) {
	.evpb-header     { padding: 0 2.5rem; margin-bottom: 2.75rem; }
	.evpb-grid       { padding: 0 2.5rem; gap: 1.5rem; margin-bottom: 2.5rem; }
	.evpb-cta-wrap   { padding: 0 2.5rem 3.75rem; }
	.evpb-newsletter { padding: 3rem 2.5rem 4rem; gap: 2.5rem; }

	.evpb-featured-img   { height: 18.75rem; }
	.evpb-featured-body  { padding: 1.625rem 1.625rem 1.75rem; }
	.evpb-featured-title { font-size: 1.45rem; }
	.evpb-side-img       { flex: 0 0 8.125rem; }
}

/* ---------- 900 and below ----------
   Off the standard ladder, carried over from the reference unchanged. */
@media (max-width: 900px) {
	.evpb-grid { grid-template-columns: 1fr; }

	.evpb-side {
		flex-direction: row;
		flex-wrap: wrap;
		gap: 1rem;
	}

	.evpb-side-post {
		flex: 1 1 calc(50% - 0.5rem);
		min-width: 15rem;
		flex-direction: column;
		min-height: 0;
		gap: 0;
	}

	.evpb-side-img {
		flex: none;
		width: 100%;
		height: 11.25rem;
		position: relative;
	}

	.evpb-side-body  { padding: 1rem 1.25rem 1.25rem; }
	.evpb-side-title { font-size: 1.05rem; }
}

/* ---------- 768 and below ---------- */
@media (max-width: 768px) {
	.evpb-section { padding: 3.5rem 0 0; }

	/* Same centring treatment as the why choose header. */
	.evpb-header {
		padding: 0 1.25rem;
		margin-bottom: 2.25rem;
		text-align: center;
	}

	.evpb-eyebrow { justify-content: center; }
	.evpb-eyebrow::before { display: none; }

	.evpb-rule {
		width: 3.125rem;
		margin-left: auto;
		margin-right: auto;
		background: linear-gradient(90deg, transparent, var(--wp--preset--color--gold), transparent);
	}

	.evpb-subtitle {
		font-size: 1rem;
		padding: 0 0.25rem;
		margin-left: auto;
		margin-right: auto;
	}

	.evpb-grid     { padding: 0 1.25rem; gap: 0.875rem; margin-bottom: 2rem; }
	.evpb-cta-wrap { padding: 0 1.25rem 3rem; }

	.evpb-featured-img   { height: 15rem; }
	.evpb-featured-body  { padding: 1.375rem 1.25rem 1.625rem; }
	.evpb-featured-title { font-size: 1.45rem; line-height: 1.22; }
	.evpb-excerpt        { font-size: 0.92rem; line-height: 1.8; }

	.evpb-read-more {
		font-size: 0.68rem;
		padding: 0.5rem 0 0.1875rem;
		min-height: 2.5rem;
		display: inline-flex;
		align-items: center;
	}

	.evpb-meta { font-size: 0.72rem; gap: 0.875rem; }

	.evpb-side {
		flex-direction: column;
		gap: 0.75rem;
	}

	.evpb-side-post {
		flex: none;
		flex-direction: row;
		gap: 0.875rem;
		min-height: 7.5rem;
	}

	.evpb-side-img {
		flex: 0 0 7.5rem;
		width: auto;
		height: auto;
	}

	.evpb-side-body  { padding: 0.875rem 1rem 0.875rem 0; }
	.evpb-side-title { font-size: 0.98rem; line-height: 1.3; }

	/* Column, centred and horizontally ruled at every width now, so
	   only the padding changes here. */
	.evpb-newsletter { padding: 2.75rem 1.25rem 3.5rem; }

	.evpb-cta {
		width: 100%;
		max-width: 20rem;
		padding: 1.0625rem 2.25rem;
		font-size: 0.7rem;
		justify-content: center;
		min-height: 3rem;
		-webkit-tap-highlight-color: transparent;
	}

	.evpb-cta:active { transform: scale(0.98); }
}

/* ---------- 480 and below ---------- */
@media (max-width: 480px) {
	.evpb-section  { padding: 3rem 0 0; }
	.evpb-header   { padding: 0 1rem; margin-bottom: 1.875rem; }
	.evpb-grid     { padding: 0 1rem; gap: 0.75rem; margin-bottom: 1.75rem; }
	.evpb-cta-wrap { padding: 0 1rem 2.5rem; }

	.evpb-featured-img   { height: 13.125rem; }
	.evpb-featured-body  { padding: 1.25rem 1.125rem 1.5rem; }
	.evpb-featured-title { font-size: 1.3rem; }
	.evpb-excerpt        { font-size: 0.9rem; }

	.evpb-side-img   { flex: 0 0 6.75rem; }
	.evpb-side-body  { padding: 0.75rem 0.875rem 0.75rem 0; }
	.evpb-side-title { font-size: 0.92rem; }
	.evpb-side-post  { min-height: 6.75rem; }

	.evpb-newsletter       { padding: 2.25rem 1rem 3rem; }
	.evpb-newsletter-title { font-size: 1.3rem; }

	.evpb-cta { padding: 1rem 1.75rem; font-size: 0.68rem; max-width: 18.125rem; }
}

/* ---------- 360 and below ---------- */
@media (max-width: 360px) {
	.evpb-featured-title { font-size: 1.2rem; }
	.evpb-side-img       { flex: 0 0 6rem; }
	.evpb-side-post      { min-height: 6rem; }
	.evpb-cta            { max-width: 16.875rem; padding: 0.9375rem 1.5rem; }
}

/* ---------- Focus ---------- */
.evpb-cta:focus-visible,
.evpb-featured:focus-visible,
.evpb-side-post:focus-visible,
.evpb-read-more:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: 4px;
}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
	.evpb-section .evpb-header,
	.evpb-section .evpb-featured,
	.evpb-section .evpb-side-post,
	.evpb-section .evpb-newsletter {
		transition: none;
		opacity: 1;
		transform: none;
	}

	.evpb-featured-img img,
	.evpb-side-img img { transition: none; }
}


/* ==================================================================
   EXPEDITIONS
   parts/section-expeditions.php + assets/js/expeditions.js

   Rebuilt from salvage/homepage-expeditions-LIVE-20260818.html. The
   uniqid instance prefix (evpexp-6a840621a9bab-) is gone; a template
   part renders once. This was the last uniqid in the codebase.

   Full width by default: the 100vw plus negative margin hack and the
   overflow-x: hidden that contained it are both gone. The 100vw left in
   the markup is inside sizes attributes, which is legitimate.

   Structure note: .evpexp-cards is a SIBLING of .evpexp-left, not a
   child. .evpexp-inner is a 420px / 1fr grid, so nesting the cards
   leaves the right column empty and produces a black void on desktop.
   ================================================================== */
.evpexp-section {
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 1rem;
	background: var(--wp--preset--color--bg-deep);
	color: #fff;
}

.evpexp-section *,
.evpexp-section *::before,
.evpexp-section *::after {
	box-sizing: border-box;
	margin: 0;
	padding: 0;
}

/* Scoped to the section so it outranks the universal reset above
   without reaching for !important. */
.evpexp-section .evpexp-sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.evpexp-inner {
	max-width: 87.5rem;
	margin: 0 auto;
	display: grid;
	grid-template-columns: 26.25rem 1fr;
	border-top: 1px solid rgba(255, 255, 255, 0.07);
	border-bottom: 1px solid rgba(255, 255, 255, 0.07);
}

/* ---------- Left panel ---------- */
.evpexp-left {
	padding: 3rem;
	display: flex;
	flex-direction: column;
	justify-content: center;
	border-right: 1px solid rgba(255, 255, 255, 0.07);
}

.evpwt-js .evpexp-left {
	opacity: 0;
	transform: translateX(-16px);
	transition: opacity 0.7s ease, transform 0.7s ease;
}

.evpexp-left.vis {
	opacity: 1;
	transform: translateX(0);
}

.evpexp-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	margin-bottom: 0.75rem;
}

.evpexp-eyebrow::before {
	content: '';
	width: 1.75rem;
	height: 1.5px;
	background: var(--wp--preset--color--rust);
	flex-shrink: 0;
}

.evpexp-title {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.8rem, 4vw, 4.2rem);
	font-weight: 400;
	line-height: 1;
	color: #fff;
	margin-bottom: 0.375rem;
}

.evpexp-title em {
	color: var(--wp--preset--color--rust);
	font-style: italic;
	display: block;
}

.evpexp-rule {
	width: 2rem;
	height: 1.5px;
	background: linear-gradient(90deg, var(--wp--preset--color--gold), transparent);
	margin: 1.25rem 0;
}

.evpexp-desc {
	font-size: 0.88rem;
	line-height: 1.8;
	color: rgba(255, 255, 255, 0.55);
	margin-bottom: 1.75rem;
}

.evpexp-features {
	list-style: none;
	padding-left: 0;
	margin: 0 0 2.25rem 0;
	display: flex;
	flex-direction: column;
	gap: 0.875rem;
}

.evpexp-feature {
	display: flex;
	align-items: flex-start;
	gap: 0.75rem;
	font-size: 0.82rem;
	color: rgba(255, 255, 255, 0.72);
	line-height: 1.5;
	list-style: none;
}

.evpexp-feature-dot {
	width: 0.375rem;
	height: 0.375rem;
	background: var(--wp--preset--color--rust);
	border-radius: 50%;
	flex-shrink: 0;
	margin-top: 0.375rem;
}

/* Shared button spec: 1rem 2rem, 0.72rem, -3px lift. */
.evpexp-cta {
	display: inline-flex;
	align-items: center;
	gap: 0.625rem;
	padding: 1rem 2rem;
	background: var(--wp--preset--color--rust);
	color: #fff;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	text-decoration: none;
	border-radius: 3.125rem;
	border: 2px solid var(--wp--preset--color--rust);
	box-shadow: 0 8px 28px rgba(184, 98, 27, 0.35);
	transition: all 0.3s ease;
	position: relative;
	overflow: hidden;
	width: fit-content;
	min-height: 2.75rem;
}

.evpexp-cta::before {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(135deg, var(--wp--preset--color--gold) 0%, var(--wp--preset--color--rust) 100%);
	opacity: 0;
	transition: opacity 0.3s ease;
}

.evpexp-cta:hover::before { opacity: 1; }

.evpexp-cta:hover {
	transform: translateY(-3px);
	box-shadow: 0 12px 36px rgba(184, 98, 27, 0.5);
}

.evpexp-cta > * {
	position: relative;
	z-index: 1;
}

.evpexp-cta svg {
	width: 0.9375rem;
	height: 0.9375rem;
	fill: #fff;
	flex-shrink: 0;
	transition: transform 0.3s ease;
}

.evpexp-cta:hover svg { transform: translateX(3px); }

/* ---------- Cards: desktop 2x2, featured spanning both rows ---------- */
.evpexp-cards {
	display: grid;
	grid-template-columns: 1fr 1fr;
	grid-template-rows: 1fr 1fr;
	height: 100%;
	overflow: hidden;
}

.evpwt-js .evpexp-cards {
	opacity: 0;
	transform: translateY(20px);
	transition: opacity 0.7s ease 0.15s, transform 0.7s ease 0.15s;
}

.evpexp-cards.vis {
	opacity: 1;
	transform: translateY(0);
}

/* The 2x2 grid assumes three cards. With fewer, collapse the tracks so
   there is no empty cell. */
.evpexp-cards--1 {
	grid-template-columns: 1fr;
	grid-template-rows: 1fr;
}

.evpexp-cards--2 {
	grid-template-rows: 1fr;
}

.evpexp-cards--1 .evpexp-card-featured,
.evpexp-cards--2 .evpexp-card-featured {
	grid-row: auto;
}

.evpexp-card {
	position: relative;
	overflow: hidden;
	text-decoration: none;
	color: inherit;
	border-left: 1px solid rgba(255, 255, 255, 0.07);
	border-bottom: 1px solid rgba(255, 255, 255, 0.07);
	display: block;
	min-height: 15rem;
}

.evpexp-card-featured { grid-row: 1 / 3; }

.evpexp-card-img-wrap {
	position: absolute;
	inset: 0;
	overflow: hidden;
	background: #0a0706;
}

.evpexp-card-img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	display: block;
	filter: brightness(0.82);
	transition: transform 0.8s ease, filter 0.5s ease;
}

.evpexp-card:hover .evpexp-card-img {
	transform: scale(1.06);
	filter: brightness(0.88);
}

.evpexp-card::after {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, transparent 0%, transparent 45%, rgba(10, 7, 4, 0.5) 70%, rgba(10, 7, 4, 0.92) 100%);
	pointer-events: none;
	z-index: 2;
}

.evpexp-card-badge {
	position: absolute;
	top: 1.125rem;
	left: 1.125rem;
	background: var(--wp--preset--color--rust);
	color: #fff;
	font-size: 0.58rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	padding: 0.25rem 0.6875rem;
	border-radius: 3.125rem;
	z-index: 3;
	box-shadow: 0 4px 14px rgba(184, 98, 27, 0.4);
}

.evpexp-card-duration {
	position: absolute;
	top: 1.125rem;
	right: 1.125rem;
	display: flex;
	align-items: center;
	gap: 0.3125rem;
	background: rgba(0, 0, 0, 0.55);
	backdrop-filter: blur(8px);
	border-radius: 3.125rem;
	padding: 0.25rem 0.6875rem;
	font-size: 0.58rem;
	font-weight: 600;
	color: var(--wp--preset--color--gold);
	z-index: 3;
}

.evpexp-card-duration svg {
	width: 0.625rem;
	height: 0.625rem;
	stroke: var(--wp--preset--color--gold);
	fill: none;
	stroke-width: 2;
	flex-shrink: 0;
}

.evpexp-card-body {
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
	padding: 1.375rem;
	z-index: 3;
}

.evpexp-card-featured .evpexp-card-body { padding: 1.75rem; }

.evpexp-card-destination {
	font-size: 0.56rem;
	font-weight: 700;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	margin-bottom: 0.375rem;
}

.evpexp-card-title {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.1rem;
	font-weight: 400;
	line-height: 1.2;
	color: #fff;
	margin-bottom: 0.5rem;
}

.evpexp-card-featured .evpexp-card-title {
	font-size: 1.5rem;
	margin-bottom: 0.5rem;
}

.evpexp-card-meta {
	padding-top: 0.5rem;
	border-top: 1px solid rgba(255, 255, 255, 0.1);
}

.evpexp-card-price {
	font-size: 1rem;
	font-weight: 700;
	color: var(--wp--preset--color--gold);
	line-height: 1;
}

.evpexp-card-price span {
	font-size: 0.68rem;
	font-weight: 400;
	color: rgba(255, 255, 255, 0.4);
}

/* Mobile-only UI, hidden on desktop. */
.evpexp-mob-hint,
.evpexp-mob-dots-wrap { display: none; }

@keyframes evpexpArrow {
	0%, 100% { transform: translateX(0);   opacity: 0.5; }
	50%      { transform: translateX(5px); opacity: 1; }
}

/* ---------- Focus ---------- */
.evpexp-card:focus-visible,
.evpexp-cta:focus-visible {
	outline: 3px solid var(--wp--preset--color--rust);
	outline-offset: 4px;
}

.evpexp-mob-dot:focus-visible {
	outline: 3px solid var(--wp--preset--color--rust);
	outline-offset: 2px;
}

/* ---------- 1280 and below ----------
   1280 and 1100 are off the standard ladder. Carried over from the
   reference unchanged, since the brief is to preserve breakpoints. */
@media (max-width: 1280px) {
	.evpexp-inner { grid-template-columns: 22.5rem 1fr; }
	.evpexp-left  { padding: 3rem 2.5rem; }
}

@media (max-width: 1100px) {
	.evpexp-inner { grid-template-columns: 20rem 1fr; }
	.evpexp-left  { padding: 2.5rem 2rem; }
}

/* ---------- 900 and below: grid becomes a scroll snap carousel ---------- */
@media (max-width: 900px) {
	.evpexp-inner {
		grid-template-columns: 1fr;
		overflow: visible;
	}

	.evpexp-left {
		padding: 2.75rem 1.25rem 1.5rem;
		border-right: none;
		border-bottom: 1px solid rgba(255, 255, 255, 0.07);
	}

	.evpexp-title {
		font-size: clamp(2.8rem, 5.5vw, 4.4rem);
		line-height: 1;
	}

	.evpexp-title em { display: inline; }

	.evpexp-cta {
		width: 100%;
		justify-content: center;
	}

	.evpexp-cards,
	.evpexp-cards--1,
	.evpexp-cards--2 {
		display: flex;
		flex-wrap: nowrap;
		gap: 0;
		height: auto;
		overflow-x: auto;
		overflow-y: hidden;
		-webkit-overflow-scrolling: touch;
		scroll-snap-type: x mandatory;
		scrollbar-width: none;
		-ms-overflow-style: none;
		width: 100%;
		margin: 0;
	}

	/* Cards do not reveal in the carousel; needs the .evpwt-js prefix to
	   match the specificity of the rule that hides them. */
	.evpwt-js .evpexp-cards {
		opacity: 1;
		transform: none;
		transition: none;
	}

	.evpexp-cards::-webkit-scrollbar {
		display: none;
		width: 0;
		height: 0;
	}

	.evpexp-card {
		flex: 0 0 100%;
		width: 100%;
		max-width: 100%;
		min-width: 100%;
		height: 72vw;
		min-height: 20rem;
		max-height: 30rem;
		border-left: none;
		border-bottom: none;
		scroll-snap-align: start;
		scroll-snap-stop: always;
	}

	.evpexp-card-featured { grid-row: auto; }

	.evpexp-card-body { padding: 0.5rem 0.875rem 0; }
	.evpexp-card-featured .evpexp-card-body { padding: 0.625rem 1rem 0; }

	.evpexp-card::after {
		background: linear-gradient(180deg, transparent 0%, transparent 35%, rgba(10, 7, 4, 0.55) 65%, rgba(10, 7, 4, 0.94) 100%);
	}

	.evpexp-card-destination { font-size: 0.72rem; letter-spacing: 0.16em; margin-bottom: 0.125rem; }
	.evpexp-card-title       { font-size: 1.2rem; line-height: 1.15; margin-bottom: 0.25rem; }
	.evpexp-card-featured .evpexp-card-title { font-size: 1.3rem; line-height: 1.15; margin-bottom: 0.25rem; }
	.evpexp-card-meta        { padding-top: 0.25rem; }
	.evpexp-card-badge       { font-size: 0.58rem; }
	.evpexp-card-duration    { font-size: 0.58rem; }
	.evpexp-card-price       { font-size: 1rem; }
	.evpexp-card-price span  { font-size: 0.72rem; }

	.evpexp-mob-hint,
	.evpexp-mob-dots-wrap { display: flex; }

	.evpexp-mob-hint {
		align-items: center;
		justify-content: center;
		gap: 0.375rem;
		padding: 0.875rem 0 0;
		opacity: 0;
		transition: opacity 0.4s ease;
	}

	.evpexp-mob-hint.is-visible { opacity: 1; }
	.evpexp-mob-hint.is-hidden  { opacity: 0; pointer-events: none; }

	.evpexp-mob-hint span {
		font-size: 0.62rem;
		font-weight: 600;
		letter-spacing: 0.14em;
		text-transform: uppercase;
		color: rgba(255, 255, 255, 0.35);
	}

	.evpexp-mob-hint svg {
		width: 1.125rem;
		height: 1.125rem;
		stroke: rgba(255, 255, 255, 0.35);
		fill: none;
		stroke-width: 2;
		animation: evpexpArrow 1.4s ease-in-out infinite;
	}

	/* Dots keep a 44px hit area; the visible dot is the ::before. */
	.evpexp-mob-dots-wrap {
		justify-content: center;
		padding: 1.125rem 0 2rem;
	}

	.evpexp-mob-dots {
		display: flex;
		gap: 0;
	}

	.evpexp-mob-dot {
		width: 2.75rem;
		height: 2.75rem;
		min-width: 2.75rem;
		min-height: 2.75rem;
		background: transparent;
		border: none;
		padding: 0;
		margin: 0;
		cursor: pointer;
		position: relative;
		-webkit-tap-highlight-color: rgba(184, 98, 27, 0.3);
		display: flex;
		align-items: center;
		justify-content: center;
	}

	.evpexp-mob-dot::before {
		content: '';
		width: 0.5rem;
		height: 0.5rem;
		border-radius: 50%;
		background: rgba(255, 255, 255, 0.2);
		transition: all 0.3s ease;
	}

	.evpexp-mob-dot.is-active::before,
	.evpexp-mob-dot[aria-current="true"]::before {
		background: var(--wp--preset--color--rust);
		width: 1.5rem;
		border-radius: 0.25rem;
	}
}

/* ---------- 480 and below ---------- */
@media (max-width: 480px) {
	.evpexp-left { padding: 2.75rem 1rem 1.5rem; }
	.evpexp-card { height: 85vw; }

	/*
	   No full bleed here. This was width: calc(100% + 2rem) with a -1rem
	   margin each side, the negative margin version of the 100vw hack,
	   and every ancestor of this element has zero horizontal padding, so
	   it bled past nothing and only put a horizontal scrollbar on the
	   homepage below 480. The scroller already runs the full width of
	   its column.
	*/
}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
	.evpexp-section .evpexp-left,
	.evpexp-section .evpexp-cards,
	.evpexp-section .evpexp-card {
		transition: none;
		opacity: 1;
		transform: none;
	}

	.evpexp-card-img     { transition: none; }
	.evpexp-mob-hint svg { animation: none; }
	.evpexp-cards        { scroll-behavior: auto; }
}


/* ==================================================================
   TOURS
   parts/section-tours.php + assets/js/tours.js

   Rebuilt from salvage/homepage-tours-LIVE-20260818.html. The uniqid
   instance prefix (destpg-6a83f4f30946e-) is gone; that was the last
   uniqid in the codebase. The destpg- base is kept because it is what
   every class in the reference is named after.

   THE 100vw BUG
   The reference used width/max-width: 100vw with
   margin-left: calc(-50vw + 50%) for full bleed. 100vw includes the
   scrollbar while 50% refers to the parent, so the section overflowed
   to the right and produced a horizontal scrollbar on the body. That
   was patched with an outer wrapper carrying overflow-x: hidden, then
   patched again in JS by measuring documentElement.clientWidth. All
   three are gone: a template part is full width by default. The vw
   units left in the file are card widths and sizes attributes, which
   are legitimate.

   Breakpoints here are min-width ranges rather than the usual
   max-width ladder, carried over from the reference unchanged.
   ================================================================== */
.destpg-section {
	--destpg-card-bg:   rgba(30, 25, 20, 0.97);
	--destpg-muted:     rgba(255, 255, 255, 0.45);
	--destpg-sale-gold: #e8b84b;
	--destpg-sale-dark: #1a1000;

	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 1rem;
	background: var(--wp--preset--color--bg-deep);
	display: block;
	position: relative;
}

.destpg-section * {
	margin: 0;
	padding: 0;
	box-sizing: border-box;
}

.destpg-section a {
	text-decoration: none;
	color: inherit;
}

/* Scoped to the section so it outranks the universal reset above. */
.destpg-section .destpg-sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.destpg-card-btn,
.destpg-side-btn,
.destpg-see-all-btn,
.destpg-bespoke-cta-btn {
	-webkit-tap-highlight-color: rgba(184, 98, 27, 0.3);
	cursor: pointer;
	min-height: 2.75rem;
}

/* ---------- Header ---------- */
.destpg-header {
	background: var(--wp--preset--color--bg-deep);
	padding: 4.5rem 5rem 2.5rem;
	border-bottom: 1px solid rgba(255, 255, 255, 0.07);
}

.evpwt-js .destpg-header {
	opacity: 0;
	transform: translateY(16px);
	transition: opacity 0.6s ease, transform 0.6s ease;
}

.destpg-header.visible {
	opacity: 1;
	transform: translateY(0);
}

.destpg-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	margin-bottom: 1.25rem;
}

.destpg-eyebrow::before {
	content: '';
	display: block;
	width: 1.75rem;
	height: 1.5px;
	background: var(--wp--preset--color--rust);
	flex-shrink: 0;
}

.destpg-title {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.8rem, 5.5vw, 4.4rem);
	font-weight: 400;
	line-height: 1;
	color: #fff;
	margin: 0 0 1.25rem;
}

.destpg-title em {
	color: var(--wp--preset--color--rust);
	font-style: italic;
}

.destpg-descriptor {
	font-size: 0.875rem;
	font-weight: 400;
	color: rgba(255, 255, 255, 0.38);
	line-height: 1.7;
	max-width: 28.75rem;
	margin: 0;
}

/* ---------- Carousel ---------- */
.destpg-carousel-section {
	background: var(--wp--preset--color--bg-deep);
	padding: 2rem 0 3.5rem;
	position: relative;
}

.destpg-carousel-wrapper {
	display: flex;
	align-items: center;
	justify-content: center;
	max-width: 87.5rem;
	margin: 0 auto;
	padding: 0 1.25rem;
	position: relative;
	overflow: hidden;
}

.destpg-side-btn {
	width: 3.25rem;
	height: 3.25rem;
	min-width: 3.25rem;
	background: rgba(255, 255, 255, 0.06);
	border: 1px solid rgba(255, 255, 255, 0.15);
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	color: #fff;
	transition: all 0.3s ease;
	box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
	z-index: 10;
	flex-shrink: 0;
}

.destpg-side-btn svg {
	width: 1.375rem;
	height: 1.375rem;
	stroke: #fff;
	transition: all 0.3s ease;
}

.destpg-side-btn:hover:not(:disabled) {
	background: var(--wp--preset--color--rust);
	border-color: var(--wp--preset--color--rust);
	transform: scale(1.08);
	box-shadow: 0 8px 25px rgba(184, 98, 27, 0.4);
}

.destpg-side-btn:disabled {
	opacity: 0.25;
	cursor: not-allowed;
	transform: none;
}

.destpg-side-btn-prev { margin-right: 1rem; }
.destpg-side-btn-next { margin-left: 1rem; }

.destpg-carousel {
	position: relative;
	overflow: visible;
	flex: 1;
	max-width: calc(100% - 10rem);
}

.destpg-track {
	display: flex;
	gap: 1.25rem;
	padding: 0.75rem 0 1.25rem;
	transition: transform 0.38s cubic-bezier(0.25, 0.46, 0.45, 0.94);
	will-change: transform;
	width: fit-content;
	align-items: stretch;
}

/* Declared after the base rule so it wins on source order while the
   user is dragging. */
.destpg-track.dragging { transition: none; }

/* ==================================================================
   THE TOUR CARDS OWN THEIR BOX MODEL

   This stylesheet has no global reset. Every section declares its own,
   scoped to itself: .destpg-section *, .evpco-hero *, .evpdt *, and so
   on. That works right up until a component is rendered outside the
   section it was written for, which is exactly what happened to these
   two cards.

   .destpg-card was written inside .destpg-section, which resets
   box-sizing. It is now also rendered by the destination tours
   listing, the tours listing, the destination tours carousel, the
   location page and search results, none of which are inside that
   wrapper. There it fell back to content-box, so .destpg-card-btn's
   width: 100% plus its 2rem of horizontal padding came to the card
   width plus 64px and the button crossed the card's rounded edge.
   .evpco-tour-card had the same problem for the same reason: it sits
   beside .evpco-hero rather than inside it.

   Measured at 1440, before: the button overhung the card's right edge
   by 45px in the tour grid and 39px in the featured panel, on every
   card, on five templates. Inside .destpg-section the same card sat
   19px clear. Injecting nothing but this rule brought both to a
   negative overhang.

   So the reset travels with the card instead of with whatever happens
   to be wrapping it. box-sizing only: the section resets also zero
   every margin and padding, and copying that would change type
   spacing rather than fix a box model.
   ================================================================== */

.destpg-card,
.destpg-card *,
.destpg-card *::before,
.destpg-card *::after,
.evpco-tour-card,
.evpco-tour-card *,
.evpco-tour-card *::before,
.evpco-tour-card *::after {
	box-sizing: border-box;
}

/* ---------- Card ---------- */
.destpg-card {
	flex: 0 0 20rem;
	max-width: 20rem;
	min-width: 20rem;
	background: var(--destpg-card-bg);
	border: 1px solid rgba(212, 196, 168, 0.12);
	border-radius: 1.25rem;
	overflow: hidden;
	box-shadow: 0 16px 48px rgba(0, 0, 0, 0.45);
	transition: transform 0.4s ease, box-shadow 0.4s ease, border-color 0.4s ease, opacity 0.6s ease;
	position: relative;
	display: flex;
	flex-direction: column;
	cursor: pointer;
}

/* The staggered reveal is OPT IN, and the opt in is in the markup.

   It used to be gated on .evpwt-js alone, which says only that the page
   has JavaScript, not that anything on this page will ever add
   .revealed. The class that clears it is added by tours.js, which is
   enqueued on the front page and nowhere else, so the first other
   template to render a .destpg-card got cards stuck at opacity 0. That
   was the destination tours carousel.

   A track opts in by carrying .ev-cards-animate, and only the section
   whose script does the revealing sets it. A page that renders these
   cards with no reveal script shows them, which is the state that
   should never depend on a script running. .evpwt-js stays in front so
   that no JavaScript at all also means no hidden cards. */
.evpwt-js .ev-cards-animate .destpg-card {
	opacity: 0;
	transform: translateY(30px);
}

.evpwt-js .ev-cards-animate .destpg-card.revealed {
	opacity: 1;
	transform: translateY(0);
}

.evpwt-js .ev-cards-animate .destpg-card:nth-child(1) { transition-delay: 0.05s; }
.evpwt-js .ev-cards-animate .destpg-card:nth-child(2) { transition-delay: 0.12s; }
.evpwt-js .ev-cards-animate .destpg-card:nth-child(3) { transition-delay: 0.19s; }
.evpwt-js .ev-cards-animate .destpg-card:nth-child(4) { transition-delay: 0.26s; }
.evpwt-js .ev-cards-animate .destpg-card:nth-child(5) { transition-delay: 0.33s; }
.evpwt-js .ev-cards-animate .destpg-card:nth-child(6) { transition-delay: 0.40s; }

.destpg-card:hover {
	transform: translateY(-6px);
	box-shadow: 0 24px 64px rgba(184, 98, 27, 0.25);
	border-color: rgba(184, 98, 27, 0.35);
}

/* Full card overlay link, and the visible button lifted above it so it
   stays clickable. Removing either breaks the v8a accessibility fix. */
.destpg-card-link-wrap {
	position: absolute;
	inset: 0;
	z-index: 1;
	text-decoration: none;
}

.destpg-card-cta {
	position: relative;
	z-index: 2;
}

.destpg-card-image {
	position: relative;
	width: 100%;
	height: 13.125rem;
	overflow: hidden;
	flex-shrink: 0;
	background: #0a0706;
}

.destpg-card-image img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	display: block;
	transition: transform 0.6s ease;
}

.destpg-card:hover .destpg-card-image img { transform: scale(1.04); }

.destpg-card-image::after {
	content: '';
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
	height: 7.5rem;
	background: linear-gradient(transparent, rgba(0, 0, 0, 0.75));
	pointer-events: none;
}

.destpg-card-badge {
	position: absolute;
	top: 0.875rem;
	left: 0.875rem;
	background: var(--wp--preset--color--rust);
	color: #fff;
	padding: 0.3125rem 0.8125rem;
	font-size: 0.6rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	border-radius: 3.125rem;
	z-index: 3;
	box-shadow: 0 4px 14px rgba(184, 98, 27, 0.4);
}

.destpg-card-sale-pill {
	position: absolute;
	top: 0.875rem;
	right: 0.875rem;
	display: flex;
	align-items: center;
	gap: 0.3125rem;
	background: var(--destpg-sale-gold);
	color: var(--destpg-sale-dark);
	padding: 0.3125rem 0.75rem;
	font-size: 0.6rem;
	font-weight: 800;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	border-radius: 3.125rem;
	z-index: 3;
	box-shadow: 0 4px 14px rgba(232, 184, 75, 0.5);
}

/* em on purpose: the icon scales with the pill's own font size. */
.destpg-card-sale-pill-icon {
	font-size: 1.1em;
	line-height: 1;
}

.destpg-card-body {
	padding: 1.25rem 1.25rem 1.125rem;
	display: flex;
	flex-direction: column;
	flex: 1;
}

.destpg-card-country {
	font-size: 0.6rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	margin-bottom: 0.5rem;
}

.destpg-card-title {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.45rem;
	font-weight: 500;
	color: #fff;
	line-height: 1.2;
	margin: 0 0 0.5rem;
}

.destpg-card-subtitle {
	font-size: 0.82rem;
	font-style: italic;
	color: rgba(255, 255, 255, 0.6);
	line-height: 1.45;
	margin-bottom: 0.75rem;
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
	flex: 1;
}

.destpg-card-stats {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 0.5rem;
	margin-bottom: 0.875rem;
}

.destpg-card-stat {
	padding: 0.625rem 0.75rem;
	background: rgba(255, 255, 255, 0.04);
	border: 1px solid rgba(255, 255, 255, 0.07);
	border-radius: 0.625rem;
}

.destpg-card-stat-label {
	font-size: 0.57rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--destpg-muted);
	margin-bottom: 0.25rem;
}

.destpg-card-stat-value {
	font-size: 0.87rem;
	font-weight: 700;
	color: #fff;
}

.destpg-card-stat-value.price { color: var(--wp--preset--color--gold-light); }

.destpg-card-stat.on-sale {
	background: rgba(232, 184, 75, 0.07);
	border-color: rgba(232, 184, 75, 0.28);
	position: relative;
	overflow: hidden;
}

.destpg-card-stat.on-sale::before {
	content: '';
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	height: 2px;
	background: linear-gradient(90deg, var(--destpg-sale-gold), #f5d080);
}

.destpg-sale-price-row {
	display: flex;
	align-items: baseline;
	gap: 0.375rem;
}

.destpg-sale-price-new {
	font-size: 0.87rem;
	font-weight: 700;
	color: var(--destpg-sale-gold);
}

.destpg-sale-price-old {
	font-size: 0.75rem;
	font-weight: 600;
	color: rgba(255, 255, 255, 0.3);
	text-decoration: line-through;
}

.destpg-card-btn {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	width: 100%;
	padding: 1rem 2rem;
	background: var(--wp--preset--color--rust);
	color: #fff;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	text-decoration: none;
	border: none;
	border-radius: 3.125rem;
	box-shadow: 0 6px 24px rgba(184, 98, 27, 0.4);
	transition: all 0.3s ease;
	cursor: pointer;
	position: relative;
	overflow: hidden;
}

.destpg-card-btn::before {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(135deg, var(--wp--preset--color--gold) 0%, var(--wp--preset--color--rust) 100%);
	opacity: 0;
	transition: opacity 0.3s ease;
}

.destpg-card-btn:hover::before { opacity: 1; }

.destpg-card-btn:hover {
	transform: translateY(-3px);
}

.destpg-card-btn > * {
	position: relative;
	z-index: 1;
}

.destpg-card-btn svg {
	width: 0.875rem;
	height: 0.875rem;
	fill: #fff;
	flex-shrink: 0;
	transition: transform 0.3s ease;
}

.destpg-card-btn:hover svg { transform: translateX(3px); }

/* ---------- Dots ---------- */
.destpg-dots-wrapper {
	display: flex;
	justify-content: center;
	margin-top: 0.75rem;
	padding: 0 1.25rem;
}

/* tours.js sets this when there is nothing to page through. */
.destpg-dots-wrapper.is-hidden { display: none; }

/*
   One dot per page, and on a phone a page is one card, so this row is
   as many dots as there are tours. Unwrapped and centred it was 836px
   in a 480px viewport, hanging off both sides and taking the page's
   horizontal scrollbar with it. It wraps.
*/
.destpg-dots {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	max-width: 100%;
	gap: 0;
}

.destpg-dot {
	width: 2.75rem;
	height: 2.75rem;
	min-width: 2.75rem;
	min-height: 2.75rem;
	background: transparent;
	border: none;
	padding: 0;
	margin: 0;
	cursor: pointer;
	position: relative;
	-webkit-tap-highlight-color: rgba(184, 98, 27, 0.3);
	display: flex;
	align-items: center;
	justify-content: center;
}

.destpg-dot::before {
	content: '';
	width: 0.5rem;
	height: 0.5rem;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.2);
	transition: all 0.3s ease;
}

.destpg-dot:hover::before { background: rgba(255, 255, 255, 0.35); }

.destpg-dot.active::before {
	background: var(--wp--preset--color--rust);
	width: 1.5rem;
	border-radius: 0.25rem;
}

/* ---------- See all ---------- */
.destpg-see-all-wrapper {
	background: var(--wp--preset--color--bg-deep);
	padding: 2rem 0 3rem;
	text-align: center;
}

.destpg-cta-row {
	display: flex;
	gap: 1rem;
	justify-content: center;
	align-items: center;
	flex-wrap: wrap;
}

.destpg-see-all-btn {
	display: inline-flex;
	align-items: center;
	gap: 0.625rem;
	padding: 1rem 2rem;
	background: transparent;
	color: var(--wp--preset--color--gold);
	font-size: 0.72rem;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	text-decoration: none;
	border: 1.5px solid rgba(212, 196, 168, 0.4);
	border-radius: 3.125rem;
	transition: all 0.3s ease;
	cursor: pointer;
}

.destpg-see-all-btn:hover {
	background: rgba(212, 196, 168, 0.08);
	border-color: var(--wp--preset--color--gold);
	color: #fff;
	transform: translateY(-3px);
}

.destpg-see-all-btn svg {
	width: 0.875rem;
	height: 0.875rem;
	stroke: currentColor;
	fill: none;
	stroke-width: 2.5;
	stroke-linecap: round;
	stroke-linejoin: round;
	transition: transform 0.3s ease;
}

.destpg-see-all-btn:hover svg { transform: translateX(3px); }

.destpg-see-all-btn--secondary {
	border-color: rgba(184, 98, 27, 0.5);
	color: var(--wp--preset--color--rust);
}

.destpg-see-all-btn--secondary:hover {
	background: rgba(184, 98, 27, 0.08);
	border-color: var(--wp--preset--color--rust);
	color: var(--wp--preset--color--rust);
}

/* ---------- Bespoke panel ---------- */
.destpg-bespoke {
	background: var(--wp--preset--color--bg-deep);
	border-top: 1px solid rgba(212, 196, 168, 0.08);
	padding: 4.5rem 0 5rem;
	position: relative;
}

.destpg-bespoke-divider {
	max-width: 75rem;
	margin: 0 auto 3.75rem;
	padding: 0 5rem;
}

.destpg-bespoke-divider-line {
	height: 1px;
	background: linear-gradient(90deg, transparent, rgba(212, 196, 168, 0.3), transparent);
}

.destpg-bespoke-panel {
	max-width: 75rem;
	margin: 0 auto;
	padding: 0 5rem;
}

.destpg-bespoke-grid {
	display: grid;
	grid-template-columns: 1fr 1.2fr;
	gap: 3.75rem;
	align-items: start;
}

.destpg-bespoke-visual {
	position: relative;
	border-radius: 1.5rem;
	overflow: hidden;
	box-shadow: 0 25px 60px rgba(0, 0, 0, 0.5);
}

.destpg-bespoke-visual-img {
	width: 100%;
	height: auto;
	aspect-ratio: 3 / 4;
	object-fit: cover;
	display: block;
	transition: transform 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.destpg-bespoke-visual:hover .destpg-bespoke-visual-img { transform: scale(1.05); }

.destpg-bespoke-content { padding: 0.625rem 0; }

.destpg-bespoke-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	font-size: 0.65rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	margin-bottom: 0.875rem;
}

.destpg-bespoke-eyebrow::before {
	content: '';
	display: block;
	width: 1.75rem;
	height: 1.5px;
	background: var(--wp--preset--color--rust);
	flex-shrink: 0;
}

.destpg-bespoke-content h3 {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2rem, 3.5vw, 2.6rem);
	color: #fff;
	margin-bottom: 1.25rem;
	line-height: 1.15;
	font-weight: 400;
}

.destpg-bespoke-content h3 em {
	color: var(--wp--preset--color--rust);
	font-style: italic;
}

.destpg-bespoke-intro {
	font-size: 0.9rem;
	color: rgba(255, 255, 255, 0.62);
	line-height: 1.75;
	margin-bottom: 2.1875rem;
}

.destpg-bespoke-steps {
	margin-bottom: 2.1875rem;
	list-style: none;
	padding-left: 0;
}

.destpg-bespoke-step {
	display: flex;
	align-items: flex-start;
	gap: 1.125rem;
	padding: 1.125rem 0;
	border-bottom: 1px solid rgba(212, 196, 168, 0.1);
	list-style: none;
}

.destpg-bespoke-step:last-child { border-bottom: none; }

.destpg-bespoke-step .step-num {
	width: 2.25rem;
	height: 2.25rem;
	min-width: 2.25rem;
	background: linear-gradient(135deg, var(--wp--preset--color--rust-dark) 0%, var(--wp--preset--color--rust) 100%);
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 0.9rem;
	font-weight: 700;
	color: #fff;
}

.destpg-bespoke-step .step-text h4 {
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.9rem;
	font-weight: 600;
	color: rgba(255, 255, 255, 0.9);
	margin-bottom: 0.25rem;
}

.destpg-bespoke-step .step-text p {
	font-size: 0.82rem;
	color: rgba(255, 255, 255, 0.52);
	line-height: 1.55;
	margin: 0;
}

.destpg-bespoke-cta { text-align: left; }

.destpg-bespoke-cta-btn {
	display: inline-flex;
	align-items: center;
	gap: 0.625rem;
	background: var(--wp--preset--color--rust);
	color: #fff;
	padding: 1rem 2rem;
	border-radius: 3.125rem;
	font-size: 0.72rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.14em;
	text-decoration: none;
	border: none;
	transition: all 0.3s ease;
	box-shadow: 0 8px 28px rgba(184, 98, 27, 0.4);
	position: relative;
	overflow: hidden;
}

.destpg-bespoke-cta-btn::before {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(135deg, var(--wp--preset--color--gold) 0%, var(--wp--preset--color--rust) 100%);
	opacity: 0;
	transition: opacity 0.3s ease;
}

.destpg-bespoke-cta-btn:hover::before { opacity: 1; }

.destpg-bespoke-cta-btn:hover {
	transform: translateY(-3px);
	box-shadow: 0 12px 36px rgba(184, 98, 27, 0.5);
}

.destpg-bespoke-cta-btn > * {
	position: relative;
	z-index: 1;
}

.destpg-bespoke-cta-btn svg {
	width: 0.875rem;
	height: 0.875rem;
	stroke: currentColor;
	stroke-width: 2.5;
	fill: none;
	transition: transform 0.3s ease;
}

.destpg-bespoke-cta-btn:hover svg { transform: translateX(3px); }

.destpg-bespoke-cta-note {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	margin-top: 1rem;
	font-size: 0.78rem;
	color: rgba(255, 255, 255, 0.4);
}

.destpg-bespoke-cta-note svg {
	width: 1rem;
	height: 1rem;
	stroke: #4CAF50;
	stroke-width: 2;
	fill: none;
	flex-shrink: 0;
}

/* ---------- 480 and below ---------- */
@media (max-width: 480px) {
	.destpg-header            { padding: 2.75rem 1.25rem 1.5rem; }
	.destpg-carousel-section  { padding: 1rem 0 1.5rem; }
	.destpg-carousel-wrapper  { padding: 0; overflow: hidden; }
	.destpg-track             { gap: 0.875rem; padding: 0.25rem 0 0.5rem 1rem; }
	.destpg-side-btn          { display: none; }

	.destpg-carousel {
		max-width: 100%;
		width: 100%;
		flex: none;
		overflow: visible;
	}

	.evpwt-js .ev-cards-animate .destpg-card { opacity: 1; transform: translateY(0); }

	.destpg-card {
		flex: 0 0 88vw;
		max-width: 88vw;
		min-width: 88vw;
	}

	.destpg-card-image { height: 12.5rem; }

	.destpg-card-body {
		padding: 0.75rem 1rem 0.875rem;
		flex: 1;
		display: flex;
		flex-direction: column;
	}

	.destpg-card-title    { font-size: 1.5rem; line-height: 1.2; margin-bottom: 0.625rem; }
	.destpg-card-subtitle { font-size: 0.82rem; -webkit-line-clamp: 2; margin-bottom: 0.625rem; flex: 1; }
	.destpg-card-stats    { gap: 0.4375rem; margin-bottom: 0.625rem; flex-shrink: 0; }
	.destpg-card-stat     { padding: 0.5rem 0.625rem; }
	.destpg-card-btn      { padding: 0.75rem 1rem; font-size: 0.72rem; }

	.destpg-see-all-wrapper { padding: 1.5rem 1.25rem 2.5rem; }

	.destpg-cta-row {
		flex-direction: column;
		gap: 0.75rem;
		width: 100%;
	}

	.destpg-see-all-btn { width: 100%; justify-content: center; }

	.destpg-bespoke          { padding: 2.5rem 0 3rem; }
	.destpg-bespoke-divider  { margin-bottom: 2.25rem; padding: 0 1.25rem; }
	.destpg-bespoke-panel    { padding: 0 1.25rem; }
	.destpg-bespoke-grid     { grid-template-columns: 1fr; gap: 0; }
	.destpg-bespoke-visual   { border-radius: 1.25rem 1.25rem 0 0; }
	.destpg-bespoke-visual-img { aspect-ratio: 16 / 9; }

	.destpg-bespoke-content {
		background: rgba(255, 255, 255, 0.03);
		border: 1px solid rgba(212, 196, 168, 0.08);
		padding: 1.75rem 1.375rem 2rem;
		border-radius: 0 0 1.25rem 1.25rem;
		margin-top: -1px;
	}

	.destpg-bespoke-eyebrow    { font-size: 0.6rem; }
	.destpg-bespoke-content h3 { font-size: 1.85rem; }

	.destpg-bespoke-steps {
		display: flex;
		gap: 0.75rem;
		margin-bottom: 1.75rem;
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
	}

	.destpg-bespoke-steps::-webkit-scrollbar { display: none; }

	.destpg-bespoke-step {
		flex: 0 0 auto;
		width: calc(33.33% - 0.5rem);
		min-width: 6.25rem;
		flex-direction: column;
		align-items: center;
		text-align: center;
		padding: 1.125rem 0.75rem;
		background: rgba(255, 255, 255, 0.04);
		border-radius: 1rem;
		border: 1px solid rgba(212, 196, 168, 0.08);
		gap: 0.75rem;
	}

	.destpg-bespoke-step .step-text h4 { font-size: 0.8rem; margin-bottom: 0; }
	.destpg-bespoke-step .step-text p  { display: none; }

	.destpg-bespoke-cta       { text-align: center; }
	.destpg-bespoke-cta-btn   { width: 100%; justify-content: center; }
	.destpg-bespoke-cta-note  { justify-content: center; }
}

/* ---------- 481 to 768 ---------- */
@media (min-width: 481px) and (max-width: 768px) {
	.destpg-header           { padding: 3rem 2rem 1.75rem; }
	.destpg-carousel-section { padding: 1.5rem 0 2.75rem; }
	.destpg-carousel-wrapper { padding: 0; overflow: hidden; }
	.destpg-side-btn         { display: none; }

	.destpg-carousel {
		max-width: 100%;
		width: 100%;
		flex: none;
		overflow: visible;
	}

	.destpg-track { padding-left: 1rem; }

	.evpwt-js .ev-cards-animate .destpg-card { opacity: 1; transform: translateY(0); }

	.destpg-card {
		flex: 0 0 82vw;
		max-width: 82vw;
		min-width: 82vw;
	}

	.destpg-card-image { height: 13.125rem; }

	.destpg-card-body {
		padding: 0.75rem 1rem 0.875rem;
		flex: 1;
		display: flex;
		flex-direction: column;
	}

	.destpg-card-title    { font-size: 1.5rem; line-height: 1.2; margin-bottom: 0.625rem; }
	.destpg-card-subtitle { font-size: 0.82rem; -webkit-line-clamp: 2; margin-bottom: 0.625rem; flex: 1; }
	.destpg-card-btn      { font-size: 0.72rem; padding: 0.75rem 1rem; }

	.destpg-bespoke-panel   { padding: 0 1.5625rem; }
	.destpg-bespoke-divider { padding: 0 1.5625rem; }
	.destpg-bespoke-grid    { grid-template-columns: 1fr; gap: 0; }
	.destpg-bespoke-visual  { border-radius: 1.25rem 1.25rem 0 0; }
	.destpg-bespoke-visual-img { aspect-ratio: 16 / 9; }

	.destpg-bespoke-content {
		background: rgba(255, 255, 255, 0.03);
		border: 1px solid rgba(212, 196, 168, 0.08);
		padding: 1.875rem 1.625rem 2.1875rem;
		border-radius: 0 0 1.25rem 1.25rem;
	}

	.destpg-bespoke-content h3 { font-size: 2.1rem; }
	.destpg-bespoke-cta        { text-align: center; }
	.destpg-bespoke-cta-btn    { width: 100%; justify-content: center; }
	.destpg-bespoke-cta-note   { justify-content: center; }

	.destpg-bespoke-steps { display: flex; gap: 0.875rem; }

	.destpg-bespoke-step {
		flex: 1;
		flex-direction: column;
		align-items: center;
		text-align: center;
		padding: 1.25rem 0.875rem;
		background: rgba(255, 255, 255, 0.04);
		border: 1px solid rgba(212, 196, 168, 0.08);
		border-radius: 1.125rem;
		gap: 0.75rem;
	}
}

/* ---------- 769 to 1024 ---------- */
@media (min-width: 769px) and (max-width: 1024px) {
	.destpg-header   { padding: 3.5rem 2.5rem 2rem; }
	.destpg-side-btn { width: 2.875rem; height: 2.875rem; min-width: 2.875rem; }

	.destpg-carousel         { max-width: calc(100% - 8.125rem); overflow: hidden; }
	.destpg-carousel-wrapper { overflow: hidden; }

	.destpg-card {
		flex: 0 0 18.125rem;
		max-width: 18.125rem;
		min-width: 18.125rem;
	}

	.destpg-bespoke-panel   { max-width: 59.375rem; padding: 0 2.5rem; }
	.destpg-bespoke-divider { padding: 0 2.5rem; }
	.destpg-bespoke-grid    { gap: 2.5rem; }
	.destpg-bespoke-content h3 { font-size: 2.1rem; }
}

/* ---------- 1025 and up ---------- */
@media (min-width: 1025px) {
	.destpg-carousel-wrapper { max-width: 75rem; padding: 0 1.875rem; overflow: hidden; }
	.destpg-carousel         { max-width: calc(100% - 10.5rem); overflow: hidden; }

	.destpg-side-btn     { width: 3.5rem; height: 3.5rem; min-width: 3.5rem; }
	.destpg-side-btn svg { width: 1.5rem; height: 1.5rem; }
	.destpg-side-btn-prev { margin-right: 1.5rem; }
	.destpg-side-btn-next { margin-left: 1.5rem; }

	.destpg-track { gap: 1.5rem; padding: 1rem 0 1.5rem; }

	.destpg-card {
		flex: 0 0 22.5rem;
		max-width: 22.5rem;
		min-width: 22.5rem;
	}

	.destpg-card-image { height: 11.875rem; }
	.destpg-card-body  { padding: 1rem 1.125rem 1rem; }
}

/* ---------- 1440 and up ---------- */
@media (min-width: 1440px) {
	.destpg-bespoke-panel      { max-width: 81.25rem; }
	.destpg-bespoke-grid       { gap: 5rem; }
	.destpg-bespoke-content h3 { font-size: 2.8rem; }
}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
	.destpg-section .destpg-track { transition: none; }

	.destpg-section .destpg-header,
	.evpwt-js .ev-cards-animate .destpg-card {
		transition: none;
		opacity: 1;
		transform: none;
	}

	.destpg-card-image img,
	.destpg-bespoke-visual-img { transition: none; }
}

/* ---------- Focus ---------- */
.destpg-carousel:focus-visible,
.destpg-card-link-wrap:focus-visible,
.destpg-side-btn:focus-visible,
.destpg-dot:focus-visible,
.destpg-see-all-btn:focus-visible,
.destpg-bespoke-cta-btn:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

/* ==================================================================
   DESTINATIONS MAP
   Converted from salvage/homepage-destinations-map-LIVE-20260818.html.

   Removed on the way in: 159 !important declarations, the
   width:100vw / margin-left:calc(-50vw + 50%) full bleed hack, the
   uniqid suffixed element id, and the section's private copies of the
   colour tokens. Colours now come from theme.json.

   The Leaflet overrides below carry no !important either. Leaflet's
   stylesheet is injected into the head at runtime, so it always lands
   after this file; the rules win on specificity instead, which is why
   each one names one class more than the Leaflet rule it is beating
   (.leaflet-touch .leaflet-bar a being the specific one to clear).
   ================================================================== */
.evp-dest {
	position: relative;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 1rem;
	color: #fff;
	background: var(--wp--preset--color--bg-deep);
}

.evp-dest *,
.evp-dest *::before,
.evp-dest *::after {
	box-sizing: border-box;
	margin: 0;
	padding: 0;
}

.evp-dest a {
	text-decoration: none;
	color: inherit;
}

/* ---------- Header ----------
   Left aligned, no gradient rule. Left as the frozen version had it:
   the blog and why choose alignment pass named those two sections only. */
.evp-dest-header {
	max-width: 87.5rem;
	margin: 0 auto;
	padding: 5rem 3rem 1.75rem;
	position: relative;
	z-index: 5;
}

.evpwt-js .evp-dest-header {
	opacity: 0;
	transform: translateY(1rem);
	transition: opacity 0.7s ease, transform 0.7s ease;
}

.evp-dest-header.vis {
	opacity: 1;
	transform: translateY(0);
}

.evp-dest-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	margin-bottom: 1.25rem;
}

.evp-dest-eyebrow::before {
	content: '';
	display: block;
	width: 1.75rem;
	height: 1.5px;
	background: var(--wp--preset--color--rust);
	flex-shrink: 0;
}

.evp-dest-title {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.8rem, 5.5vw, 4.4rem);
	font-weight: 400;
	line-height: 1;
	color: #fff;
	margin-bottom: 1.25rem;
}

.evp-dest-title em {
	color: var(--wp--preset--color--rust);
	font-style: italic;
}

.evp-dest-descriptor {
	font-size: 0.875rem;
	font-weight: 400;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.38);
	max-width: 28.75rem;
	margin: 0;
}

/* ---------- Continent tabs and destination buttons (desktop) ---------- */
.evp-dest-controls {
	max-width: 87.5rem;
	margin: 0 auto;
	position: relative;
	z-index: 5;
}

.evp-dest-tabs-wrap {
	display: flex;
	align-items: center;
	gap: 0;
	padding: 0 3rem;
	border-bottom: 1px solid rgba(212, 196, 168, 0.1);
	overflow-x: auto;
	scrollbar-width: none;
}

.evp-dest-tabs-wrap::-webkit-scrollbar { display: none; }

.evp-dest-tab {
	flex-shrink: 0;
	background: none;
	border: none;
	border-bottom: 2px solid transparent;
	margin-bottom: -1px;
	padding: 0.75rem 1.25rem;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.67rem;
	font-weight: 600;
	letter-spacing: 0.13em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.38);
	cursor: pointer;
	white-space: nowrap;
	transition: color 0.2s ease, border-color 0.2s ease;
}

.evp-dest-tab:hover { color: rgba(255, 255, 255, 0.72); }

.evp-dest-tab.is-active {
	color: var(--wp--preset--color--gold);
	border-bottom-color: var(--wp--preset--color--rust);
}

.evp-dest-dest-buttons {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.4375rem;
	padding: 1.125rem 3rem 1.25rem;
}

/* Available destinations render as anchors, coming soon ones as
   buttons, so this has to sit right on both element types. */
.evp-dest-dest-btn {
	display: inline-flex;
	align-items: center;
	background: transparent;
	border: 1px solid rgba(212, 196, 168, 0.18);
	border-radius: 3.125rem;
	padding: 0.375rem 0.875rem;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.66rem;
	font-weight: 500;
	letter-spacing: 0.04em;
	color: rgba(255, 255, 255, 0.65);
	cursor: pointer;
	white-space: nowrap;
	transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease, opacity 0.25s ease;
}

.evp-dest-dest-btn:hover {
	background: rgba(184, 98, 27, 0.15);
	border-color: var(--wp--preset--color--rust);
	color: var(--wp--preset--color--gold);
}

.evp-dest-dest-btn.is-soon {
	color: rgba(255, 255, 255, 0.3);
	border-color: rgba(255, 255, 255, 0.08);
}

.evp-dest-dest-btn.is-soon:hover {
	background: rgba(255, 255, 255, 0.05);
	border-color: rgba(255, 255, 255, 0.2);
	color: rgba(255, 255, 255, 0.55);
}

/* Off-continent buttons stay in the flow so the rows do not reshuffle
   on every tab change, but they are inert. */
.evp-dest-dest-btn.is-dimmed {
	opacity: 0.15;
	pointer-events: none;
}

/* ---------- Mobile only blocks, hidden on desktop ---------- */
.evp-dest-list-wrap,
.evp-dest-mobile-legend {
	display: none;
}

/* ---------- Map container ---------- */
.evp-dest-map-outer {
	max-width: 87.5rem;
	margin: 0 auto;
	padding: 1.75rem 3rem 2.5rem;
	position: relative;
	z-index: 5;
}

.evp-dest-map-container {
	position: relative;
	height: 70vh;
	min-height: 35rem;
	max-height: 55rem;
	border-radius: 1.5rem;
	overflow: hidden;
	background: rgba(0, 0, 0, 0.35);
	border: 1px solid rgba(212, 196, 168, 0.12);
	box-shadow:
		0 24px 72px rgba(0, 0, 0, 0.55),
		0 0 0 1px rgba(255, 255, 255, 0.04),
		inset 0 1px 0 rgba(255, 255, 255, 0.04);
}

.evpwt-js .evp-dest-map-container {
	opacity: 0;
	transform: translateY(1.5rem);
	transition:
		opacity 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94),
		transform 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.evp-dest-map-container.vis {
	opacity: 1;
	transform: translateY(0);
}

.evp-dest-map-canvas {
	width: 100%;
	height: 100%;
	border-radius: 1.5rem;
}

.evp-dest-map-loading {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0.875rem;
	font-size: 0.82rem;
	font-weight: 500;
	letter-spacing: 0.06em;
	color: var(--wp--preset--color--gold);
	z-index: 1000;
	pointer-events: none;
}

.evp-dest-map-loading.is-hidden { display: none; }

.evp-dest-map-loading.has-error { color: #ff6b6b; }

.evp-dest-map-spinner {
	display: block;
	width: 2.5rem;
	height: 2.5rem;
	border: 2.5px solid rgba(212, 196, 168, 0.18);
	border-top-color: var(--wp--preset--color--gold);
	border-radius: 50%;
	animation: evpDestSpin 1s linear infinite;
}

.evp-dest-map-loading.has-error .evp-dest-map-spinner { display: none; }

@keyframes evpDestSpin {
	to { transform: rotate(360deg); }
}

.evp-dest-map-legend {
	position: absolute;
	bottom: 1.375rem;
	left: 1.375rem;
	display: flex;
	flex-direction: column;
	gap: 0.625rem;
	padding: 0.875rem 1.125rem;
	background: rgba(0, 0, 0, 0.82);
	backdrop-filter: blur(12px);
	border: 1px solid rgba(212, 196, 168, 0.18);
	border-radius: 0.875rem;
	box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
	z-index: 1000;
}

.evp-dest-map-legend-item {
	display: flex;
	align-items: center;
	gap: 0.625rem;
	font-size: 0.72rem;
	color: var(--ev-soft);
}

.evp-dest-map-legend-dot {
	position: relative;
	width: 0.625rem;
	height: 0.625rem;
	border-radius: 50%;
	flex-shrink: 0;
}

.evp-dest-map-legend-dot.is-available {
	background: var(--wp--preset--color--rust);
	box-shadow: 0 0 12px rgba(184, 98, 27, 0.55);
}

.evp-dest-map-legend-dot.is-available::after {
	content: '';
	position: absolute;
	inset: -3px;
	border-radius: 50%;
	border: 1px solid rgba(184, 98, 27, 0.35);
	animation: evpDestRing 2s ease-out infinite;
}

@keyframes evpDestRing {
	0%   { transform: scale(1);   opacity: 0.8; }
	100% { transform: scale(1.8); opacity: 0; }
}

.evp-dest-map-legend-dot.is-soon {
	background: rgba(255, 255, 255, 0.22);
	border: 1px solid rgba(255, 255, 255, 0.18);
}

/* ---------- Leaflet controls ----------
   See the note at the top of this block: specificity, not !important. */
.evp-dest .leaflet-control-zoom.leaflet-bar {
	border: none;
	border-radius: 0.625rem;
	overflow: hidden;
	box-shadow: 0 4px 20px rgba(0, 0, 0, 0.5);
}

.evp-dest .leaflet-control-zoom a.leaflet-control-zoom-in,
.evp-dest .leaflet-control-zoom a.leaflet-control-zoom-out {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.25rem;
	height: 2.25rem;
	line-height: 2.25rem;
	font-size: 1.1rem;
	font-weight: 400;
	background: rgba(17, 16, 16, 0.92);
	color: var(--wp--preset--color--gold);
	border: none;
	border-bottom: 1px solid rgba(212, 196, 168, 0.1);
	text-decoration: none;
	transition: background 0.2s ease, color 0.2s ease;
}

.evp-dest .leaflet-control-zoom a.leaflet-control-zoom-out {
	border-bottom: none;
}

.evp-dest .leaflet-control-zoom a.leaflet-control-zoom-in:hover,
.evp-dest .leaflet-control-zoom a.leaflet-control-zoom-out:hover {
	background: var(--wp--preset--color--rust);
	color: #fff;
}

.evp-dest .leaflet-container .leaflet-control-attribution {
	background: rgba(17, 16, 16, 0.75);
	color: rgba(255, 255, 255, 0.35);
	font-size: 0.6rem;
	border-radius: 0.375rem 0 0 0;
}

.evp-dest .leaflet-control-attribution a { color: rgba(212, 196, 168, 0.5); }

.evp-dest .leaflet-tile-pane { filter: brightness(0.9); }

/* ---------- Hover card ---------- */
.evp-dest-hover-card {
	position: absolute;
	width: 20rem;
	background: rgba(30, 25, 20, 0.97);
	border: 1px solid rgba(212, 196, 168, 0.18);
	border-radius: 1.25rem;
	overflow: hidden;
	pointer-events: none;
	z-index: 2000;
	box-shadow:
		0 24px 56px rgba(0, 0, 0, 0.6),
		0 0 0 1px rgba(255, 255, 255, 0.04),
		inset 0 1px 0 rgba(255, 255, 255, 0.06);
	opacity: 0;
	transform: translateY(0.5rem) scale(0.97);
	transition: opacity 0.28s ease, transform 0.28s ease;
}

.evp-dest-hover-card.is-visible {
	opacity: 1;
	transform: translateY(0) scale(1);
}

.evp-dest-hover-card.is-coming-soon { border-color: rgba(255, 255, 255, 0.1); }

.evp-dest-hc-image-wrap {
	position: relative;
	width: 100%;
	height: 8.75rem;
	overflow: hidden;
}

.evp-dest-hc-image {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	display: block;
}

.evp-dest-hc-image-wrap::after {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(to bottom, transparent 30%, rgba(15, 10, 5, 0.9) 100%);
	pointer-events: none;
}

.evp-dest-hc-body {
	position: relative;
	z-index: 1;
	margin-top: -1.75rem;
	padding: 1.125rem 1.25rem 1.25rem;
}

.evp-dest-hc-name {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.55rem;
	font-weight: 500;
	line-height: 1.15;
	color: #fff;
	margin-bottom: 0.25rem;
	text-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);
}

.evp-dest-hc-tagline {
	font-size: 0.78rem;
	font-style: italic;
	color: var(--wp--preset--color--gold);
	opacity: 0.88;
	margin-bottom: 0.75rem;
}

.evp-dest-hc-desc {
	font-size: 0.82rem;
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.65);
	margin-bottom: 0.875rem;
}

.evp-dest-hc-tags {
	display: flex;
	flex-wrap: wrap;
	gap: 0.3125rem;
	margin-bottom: 0.875rem;
}

.evp-dest-hc-tag {
	background: rgba(212, 196, 168, 0.1);
	color: var(--wp--preset--color--gold);
	border: 1px solid rgba(212, 196, 168, 0.18);
	padding: 0.25rem 0.625rem;
	border-radius: 3.125rem;
	font-size: 0.62rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.08em;
}

.evp-dest-hc-footer {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding-top: 0.75rem;
	border-top: 1px solid rgba(255, 255, 255, 0.08);
}

.evp-dest-hc-cta-text {
	font-size: 0.65rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.evp-dest-hc-cta-text.is-available   { color: var(--wp--preset--color--gold); }
.evp-dest-hc-cta-text.is-coming-soon { color: rgba(255, 255, 255, 0.38); }

.evp-dest-hc-arrow {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 1.875rem;
	height: 1.875rem;
	border-radius: 50%;
}

.evp-dest-hc-arrow.is-available {
	background: linear-gradient(135deg, var(--wp--preset--color--gold) 0%, var(--wp--preset--color--rust) 100%);
	color: #fff;
}

.evp-dest-hc-arrow.is-coming-soon {
	background: rgba(255, 255, 255, 0.08);
	color: rgba(255, 255, 255, 0.3);
}

.evp-dest-hc-arrow svg {
	width: 0.8125rem;
	height: 0.8125rem;
	stroke: currentColor;
	fill: none;
	stroke-width: 2.5;
	stroke-linecap: round;
	stroke-linejoin: round;
}

/* ---------- See all button ----------
   The frozen version was an outline button unique to this section.
   Brought onto the shared spec: rust fill, gold to rust gradient on
   hover, 1rem/2rem padding, 0.72rem type, translateY(-3px). */
.evp-dest-see-all-wrap {
	display: flex;
	justify-content: center;
	padding: 2.5rem 1.25rem 4.5rem;
	position: relative;
	z-index: 5;
}

.evp-dest-see-all-btn {
	display: inline-flex;
	align-items: center;
	gap: 0.625rem;
	padding: 1rem 2rem;
	background: var(--wp--preset--color--rust);
	color: #fff;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	text-decoration: none;
	border: 2px solid var(--wp--preset--color--rust);
	border-radius: 3.125rem;
	box-shadow: 0 8px 28px rgba(184, 98, 27, 0.4);
	transition: all 0.3s ease;
	position: relative;
	overflow: hidden;
}

.evp-dest-see-all-btn::before {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(135deg, var(--wp--preset--color--gold) 0%, var(--wp--preset--color--rust) 100%);
	opacity: 0;
	transition: opacity 0.3s ease;
}

.evp-dest-see-all-btn:hover::before { opacity: 1; }

.evp-dest-see-all-btn:hover {
	transform: translateY(-3px);
	box-shadow: 0 14px 36px rgba(184, 98, 27, 0.55);
}

.evp-dest-see-all-btn > * {
	position: relative;
	z-index: 1;
}

.evp-dest-see-all-btn svg {
	width: 0.875rem;
	height: 0.875rem;
	stroke: currentColor;
	fill: none;
	stroke-width: 2.5;
	stroke-linecap: round;
	stroke-linejoin: round;
	transition: transform 0.3s ease;
}

.evp-dest-see-all-btn:hover svg { transform: translateX(3px); }

/* ---------- Coming soon modal ---------- */
.evp-dest-modal {
	position: fixed;
	inset: 0;
	display: none;
	align-items: center;
	justify-content: center;
	background: rgba(0, 0, 0, 0.88);
	backdrop-filter: blur(12px);
	z-index: 10000;
}

.evp-dest-modal.is-open { display: flex; }

.evp-dest-modal-content {
	position: relative;
	width: 92%;
	max-width: 31.25rem;
	max-height: 92vh;
	overflow-y: auto;
	background: rgba(30, 25, 20, 0.97);
	border: 1px solid rgba(212, 196, 168, 0.2);
	border-radius: 1.5rem;
	box-shadow: 0 32px 80px rgba(0, 0, 0, 0.8), 0 0 0 1px rgba(255, 255, 255, 0.04);
}

.evp-dest-modal-close {
	position: absolute;
	top: 1rem;
	right: 1rem;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	background: rgba(0, 0, 0, 0.65);
	color: #fff;
	border: 1px solid rgba(255, 255, 255, 0.12);
	border-radius: 50%;
	font-size: 1.35rem;
	cursor: pointer;
	z-index: 10001;
	transition: background 0.3s ease, border-color 0.3s ease, transform 0.3s ease;
}

.evp-dest-modal-close:hover {
	background: rgba(212, 196, 168, 0.2);
	border-color: rgba(212, 196, 168, 0.35);
	transform: rotate(90deg);
}

.evp-dest-modal-image-wrap {
	position: relative;
	width: 100%;
	height: 15rem;
	overflow: hidden;
	border-radius: 1.5rem 1.5rem 0 0;
}

.evp-dest-modal-image {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	display: block;
}

.evp-dest-modal-image-wrap::after {
	content: '';
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
	height: 6.25rem;
	background: linear-gradient(transparent, rgba(30, 25, 20, 0.97));
	pointer-events: none;
}

.evp-dest-modal-body {
	padding: 2rem;
	color: #fff;
}

.evp-dest-modal-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.625rem;
	font-size: 0.6rem;
	font-weight: 700;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	margin-bottom: 0.625rem;
}

.evp-dest-modal-eyebrow::before {
	content: '';
	display: block;
	width: 1.25rem;
	height: 1.5px;
	background: var(--wp--preset--color--rust);
	flex-shrink: 0;
}

.evp-dest-modal-title {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.4rem, 6vw, 3.2rem);
	font-weight: 400;
	line-height: 1.05;
	color: #fff;
	margin-bottom: 0.5rem;
}

.evp-dest-modal-tagline {
	font-size: 0.88rem;
	font-style: italic;
	color: var(--wp--preset--color--gold);
	opacity: 0.88;
	margin-bottom: 1.125rem;
}

.evp-dest-modal-rule {
	width: 2rem;
	height: 1.5px;
	background: linear-gradient(90deg, var(--wp--preset--color--gold), transparent);
	margin-bottom: 1.125rem;
}

.evp-dest-modal-desc {
	font-size: 0.88rem;
	line-height: 1.75;
	color: rgba(255, 255, 255, 0.68);
	margin-bottom: 1.5rem;
}

.evp-dest-modal-tags {
	display: flex;
	flex-wrap: wrap;
	gap: 0.375rem;
	margin-bottom: 1.75rem;
}

.evp-dest-modal-tag {
	background: rgba(212, 196, 168, 0.1);
	color: var(--wp--preset--color--gold);
	border: 1px solid rgba(212, 196, 168, 0.2);
	padding: 0.3125rem 0.75rem;
	border-radius: 3.125rem;
	font-size: 0.64rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.08em;
}

/* Was a <button> with cursor:default that did nothing when pressed.
   It is a status line, so it is marked up as one now. */
.evp-dest-modal-status {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 3.25rem;
	padding: 1rem 1.5rem;
	background: rgba(255, 255, 255, 0.07);
	color: rgba(255, 255, 255, 0.5);
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	text-align: center;
	border: 1.5px solid rgba(255, 255, 255, 0.12);
	border-radius: 3.125rem;
}

.evp-dest-modal-note {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.4375rem;
	margin-top: 0.875rem;
	font-size: 0.72rem;
	color: rgba(255, 255, 255, 0.32);
}

.evp-dest-modal-note svg {
	width: 0.875rem;
	height: 0.875rem;
	stroke: var(--wp--preset--color--rust);
	fill: none;
	stroke-width: 2;
	flex-shrink: 0;
}

/* ---------- Mobile accordion ---------- */
.evp-dest-accordion-section { margin-bottom: 0.5rem; }

.evp-dest-accordion-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	min-height: 3.25rem;
	padding: 0.875rem 1.125rem;
	background: rgba(255, 255, 255, 0.03);
	border: 1px solid rgba(212, 196, 168, 0.1);
	border-radius: 0.875rem;
	cursor: pointer;
	user-select: none;
	-webkit-tap-highlight-color: transparent;
	transition: background 0.25s ease;
}

.evp-dest-accordion-header:active {
	transform: scale(0.99);
	background: rgba(255, 255, 255, 0.05);
}

.evp-dest-accordion-header.is-open {
	border-radius: 0.875rem 0.875rem 0 0;
	border-bottom-color: transparent;
	background: rgba(212, 196, 168, 0.06);
}

.evp-dest-accordion-label {
	font-size: 0.78rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.14em;
	color: var(--wp--preset--color--gold);
	pointer-events: none;
}

.evp-dest-accordion-arrow {
	width: 1.125rem;
	height: 1.125rem;
	color: rgba(255, 255, 255, 0.35);
	flex-shrink: 0;
	pointer-events: none;
	transition: transform 0.28s ease, color 0.28s ease;
}

.evp-dest-accordion-header.is-open .evp-dest-accordion-arrow {
	transform: rotate(180deg);
	color: var(--wp--preset--color--gold);
}

.evp-dest-accordion-body {
	display: none;
	flex-direction: column;
	background: rgba(0, 0, 0, 0.18);
	border: 1px solid rgba(212, 196, 168, 0.1);
	border-top: none;
	border-radius: 0 0 0.875rem 0.875rem;
	overflow: hidden;
}

.evp-dest-accordion-body.is-open { display: flex; }

.evp-dest-accordion-item {
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	min-height: 3.25rem;
	padding: 0.9375rem 1.125rem;
	background: none;
	border: none;
	border-bottom: 1px solid rgba(255, 255, 255, 0.05);
	font-family: inherit;
	color: inherit;
	text-align: left;
	cursor: pointer;
	user-select: none;
	-webkit-tap-highlight-color: transparent;
	transition: background 0.2s ease;
}

.evp-dest-accordion-item:last-child { border-bottom: none; }
.evp-dest-accordion-item:active     { background: rgba(212, 196, 168, 0.08); }

.evp-dest-accordion-item-left {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	pointer-events: none;
}

.evp-dest-accordion-dot {
	width: 0.5625rem;
	height: 0.5625rem;
	border-radius: 50%;
	flex-shrink: 0;
}

.evp-dest-accordion-dot.is-available {
	background: var(--wp--preset--color--rust);
	box-shadow: 0 0 8px rgba(184, 98, 27, 0.45);
}

.evp-dest-accordion-dot.is-soon {
	background: rgba(255, 255, 255, 0.22);
	border: 1px solid rgba(255, 255, 255, 0.14);
}

.evp-dest-accordion-country {
	font-size: 0.95rem;
	font-weight: 500;
	color: #fff;
	transition: color 0.2s ease;
}

.evp-dest-accordion-item.is-coming-soon .evp-dest-accordion-country {
	color: rgba(255, 255, 255, 0.42);
}

.evp-dest-accordion-badge {
	padding: 0.1875rem 0.5625rem;
	border-radius: 0.5rem;
	background: rgba(255, 255, 255, 0.06);
	color: rgba(255, 255, 255, 0.38);
	font-size: 0.58rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	flex-shrink: 0;
	pointer-events: none;
}

.evp-dest-accordion-item-arrow {
	width: 1rem;
	height: 1rem;
	color: var(--wp--preset--color--gold);
	opacity: 0.7;
	flex-shrink: 0;
	pointer-events: none;
}

/* ---------- 1024 and up: two column modal ---------- */
@media (min-width: 1024px) {
	.evp-dest-modal-content {
		display: flex;
		flex-direction: row;
		align-items: stretch;
		max-width: 57.5rem;
		max-height: 86vh;
		overflow: hidden;
	}

	.evp-dest-modal-image-wrap {
		width: 48%;
		min-width: 48%;
		height: auto;
		min-height: 100%;
		align-self: stretch;
		flex-shrink: 0;
		border-radius: 1.5rem 0 0 1.5rem;
	}

	.evp-dest-modal-image-wrap::after { display: none; }

	.evp-dest-modal-body {
		display: flex;
		flex-direction: column;
		justify-content: flex-start;
		width: 52%;
		max-height: 86vh;
		padding: 2.25rem 2.5rem;
		overflow-y: auto;
	}

	.evp-dest-modal-close {
		top: 1.125rem;
		right: 1.125rem;
	}

	.evp-dest-modal-title { font-size: clamp(2.4rem, 3.8vw, 3.4rem); }
}

/* ---------- 769 and up: taller map ---------- */
@media (min-width: 769px) {
	.evp-dest-map-container {
		height: 78vh;
		min-height: 40rem;
	}
}

/* ---------- 1200 and below ---------- */
@media (max-width: 1200px) {
	.evp-dest-header       { padding: 5rem 1.5rem 1.75rem; }
	.evp-dest-tabs-wrap    { padding: 0 1.5rem; }
	.evp-dest-dest-buttons { padding: 1.125rem 1.5rem 1.25rem; }
	.evp-dest-map-outer    { padding: 1.75rem 1.5rem 2.5rem; }
}

/* ---------- 768 and below: accordion replaces the map ---------- */
@media (max-width: 768px) {
	.evp-dest-header {
		padding: 3.25rem 1.25rem 1.75rem;
		text-align: left;
	}

	.evp-dest-eyebrow {
		justify-content: flex-start;
		font-size: 0.6rem;
	}

	.evp-dest-descriptor {
		max-width: 100%;
		text-align: left;
	}

	/* Leaflet never loads below this width, so the map markup goes too. */
	.evp-dest-controls,
	.evp-dest-map-outer {
		display: none;
	}

	.evp-dest-list-wrap {
		display: block;
		padding: 0 1rem 0.5rem;
	}

	.evp-dest-mobile-legend {
		display: flex;
		justify-content: center;
		gap: 1.375rem;
		padding: 1rem 1rem 2rem;
		position: relative;
		z-index: 5;
	}

	.evp-dest-mobile-legend-item {
		display: flex;
		align-items: center;
		gap: 0.4375rem;
		font-size: 0.72rem;
		color: rgba(255, 255, 255, 0.55);
	}

	.evp-dest-mobile-legend-dot {
		width: 0.5rem;
		height: 0.5rem;
		border-radius: 50%;
		flex-shrink: 0;
	}

	.evp-dest-mobile-legend-dot.is-available {
		background: var(--wp--preset--color--rust);
		box-shadow: 0 0 7px rgba(184, 98, 27, 0.5);
	}

	.evp-dest-mobile-legend-dot.is-soon {
		background: rgba(255, 255, 255, 0.22);
		border: 1px solid rgba(255, 255, 255, 0.14);
	}

	.evp-dest-see-all-wrap { padding: 0.5rem 1rem 3.25rem; }

	.evp-dest-see-all-btn {
		width: 100%;
		justify-content: center;
	}
}

/* ---------- 480 and below ---------- */
@media (max-width: 480px) {
	.evp-dest-header    { padding: 2.75rem 1rem 2rem; }
	.evp-dest-list-wrap { padding: 0 0.75rem 0.5rem; }
}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
	.evp-dest-map-legend-dot.is-available::after,
	.evp-dest-map-spinner {
		animation: none;
	}

	.evpwt-js .evp-dest-header,
	.evpwt-js .evp-dest-map-container {
		transition: none;
		opacity: 1;
		transform: none;
	}

	.evp-dest-hover-card,
	.evp-dest-accordion-arrow,
	.evp-dest-see-all-btn,
	.evp-dest-see-all-btn svg,
	.evp-dest-modal-close {
		transition: none;
	}
}

/* ---------- Focus ---------- */
.evp-dest-tab:focus-visible,
.evp-dest-dest-btn:focus-visible,
.evp-dest-accordion-header:focus-visible,
.evp-dest-accordion-item:focus-visible,
.evp-dest-see-all-btn:focus-visible,
.evp-dest-modal-close:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

/* ==================================================================
   DESTINATIONS PAGE: HERO
   parts/section-destinations-hero.php + assets/js/destinations-hero.js

   Converted from salvage/destinations-hero-LIVE-20260527.html.
   Removed on the way in: 85 !important, 128 uses of the uniqid class
   prefix, and the six selector Elementor :has() container reset, which
   has no container left to reset.

   Deliberately parallel to the homepage hero rather than sharing its
   classes. The two look alike but are not the same component: this one
   has a slideshow where the homepage has a video, and coupling them
   would mean one section's change silently altering the other.
   ================================================================== */
.evpdh {
	position: relative;
	min-height: 100vh;
	display: grid;
	grid-template-columns: 45% 55%;
	overflow: hidden;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 1rem;
	color: #fff;
	background: var(--wp--preset--color--bg-deep);
	box-sizing: border-box;
}

.evpdh *,
.evpdh *::before,
.evpdh *::after {
	box-sizing: border-box;
}

/* ---------- Left content panel ---------- */
.evpdh-content {
	position: relative;
	z-index: 5;
	display: flex;
	flex-direction: column;
	justify-content: center;
	padding: 5rem 4rem 5rem 5rem;
	background: var(--wp--preset--color--bg-deep);
}

.evpdh-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	margin: 0 0 1.25rem;
	opacity: 0;
	animation: evpdhFadeUp 0.8s ease-out 0.2s forwards;
}

.evpdh-eyebrow::before {
	content: '';
	display: block;
	width: 1.75rem;
	height: 1.5px;
	background: var(--wp--preset--color--rust);
	flex-shrink: 0;
}

/* H1, the LCP text. */
.evpdh-title {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.8rem, 5.5vw, 4.4rem);
	font-weight: 400;
	line-height: 1;
	color: #fff;
	margin: 0 0 1.75rem;
	opacity: 0;
	animation: evpdhFadeUp 0.9s ease-out 0.35s forwards;
}

.evpdh-title em {
	color: var(--wp--preset--color--rust);
	font-style: italic;
	font-size: inherit;
	line-height: inherit;
}

/* Same kerning correction as the homepage H1. em, so it tracks the
   fluid clamp() size at every viewport. */
.evpdh-title-kern {
	display: inline-block;
	margin-left: -0.05em;
}

.evpdh-rule {
	display: block;
	width: 1.75rem;
	height: 1.5px;
	background: linear-gradient(90deg, var(--wp--preset--color--gold), transparent);
	margin-bottom: 1.5rem;
	opacity: 0;
	animation: evpdhFadeUp 0.7s ease-out 0.6s forwards;
}

.evpdh-subtitle {
	font-size: clamp(0.95rem, 1.6vw, 1.1rem);
	font-weight: 300;
	line-height: 1.75;
	color: var(--ev-soft);
	max-width: 28.75rem;
	margin: 0 0 2.75rem;
	opacity: 0;
	animation: evpdhFadeUp 0.8s ease-out 0.65s forwards;
}

/* ---------- Calls to action ----------
   Shared button spec: 1rem/2rem padding, 0.72rem type, 0.14em
   tracking, translateY(-3px) on hover, gold to rust gradient. */
.evpdh-cta {
	display: flex;
	flex-direction: row;
	align-items: center;
	flex-wrap: wrap;
	gap: 1rem;
	opacity: 0;
	animation: evpdhFadeUp 0.8s ease-out 0.8s forwards;
}

.evpdh-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.625rem;
	padding: 1rem 2rem;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	text-decoration: none;
	border-radius: 3.125rem;
	transition: all 0.3s ease;
	cursor: pointer;
	position: relative;
	overflow: hidden;
	min-width: 17.5rem;
	white-space: nowrap;
}

.evpdh-btn > * {
	position: relative;
	z-index: 1;
}

.evpdh-btn-primary {
	background: var(--wp--preset--color--rust);
	color: #fff;
	border: 2px solid var(--wp--preset--color--rust);
	box-shadow: 0 8px 28px rgba(184, 98, 27, 0.4);
}

.evpdh-btn-primary::before {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(135deg, var(--wp--preset--color--gold) 0%, var(--wp--preset--color--rust) 100%);
	opacity: 0;
	transition: opacity 0.3s ease;
}

.evpdh-btn-primary:hover::before { opacity: 1; }

.evpdh-btn-primary:hover {
	transform: translateY(-3px);
	box-shadow: 0 14px 36px rgba(184, 98, 27, 0.55);
}

.evpdh-btn-primary svg {
	width: 1rem;
	height: 1rem;
	fill: #fff;
	flex-shrink: 0;
	transition: transform 0.3s ease;
}

.evpdh-btn-primary:hover svg { transform: translateX(3px); }

.evpdh-btn-secondary {
	background: transparent;
	color: rgba(255, 255, 255, 0.85);
	border: 2px solid rgba(255, 255, 255, 0.35);
}

.evpdh-btn-secondary:hover {
	border-color: rgba(255, 255, 255, 0.7);
	color: #fff;
	background: rgba(255, 255, 255, 0.06);
}

.evpdh-btn-secondary svg {
	width: 1rem;
	height: 1rem;
	fill: rgba(255, 255, 255, 0.85);
	flex-shrink: 0;
	transition: transform 0.3s ease, fill 0.3s ease;
}

.evpdh-btn-secondary:hover svg {
	transform: translateX(3px);
	fill: #fff;
}

/* ---------- Scroll indicator ---------- */
.evpdh-scroll {
	position: absolute;
	bottom: 2.25rem;
	left: 5rem;
	display: flex;
	align-items: center;
	gap: 0.75rem;
	font-size: 0.6rem;
	font-weight: 600;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.32);
	opacity: 0;
	animation: evpdhFadeUp 0.8s ease-out 1.4s forwards;
}

.evpdh-scroll-line {
	display: block;
	width: 2.25rem;
	height: 1px;
	background: rgba(255, 255, 255, 0.2);
	position: relative;
	overflow: hidden;
}

/* transform, not left, so the pulse stays off the main thread. */
.evpdh-scroll-line::after {
	content: '';
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background: var(--wp--preset--color--rust);
	animation: evpdhScrollPulse 2.4s ease-in-out 2s infinite;
	will-change: transform;
}

/* ---------- Right slideshow panel ---------- */
.evpdh-media {
	position: relative;
	background: var(--wp--preset--color--bg-deep);
	overflow: hidden;
}

.evpdh-slide {
	position: absolute;
	inset: 0;
	opacity: 0;
	transition: opacity 2s ease;
}

.evpdh-slide.is-active { opacity: 1; }

/* Real img, not a background image, so the slide carries srcset and
   the browser can pick a sensible file for the viewport. */
.evpdh-slide-img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	display: block;
}

/* Left edge fade into the content panel. */
.evpdh-media::before {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(90deg,
		var(--wp--preset--color--bg-deep) 0%,
		rgba(17, 16, 16, 0.85) 4%,
		rgba(17, 16, 16, 0.30) 12%,
		rgba(17, 16, 16, 0.06) 22%,
		transparent 35%);
	z-index: 1;
	pointer-events: none;
}

.evpdh-media::after {
	content: '';
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
	height: 35%;
	background: linear-gradient(to top, rgba(17, 16, 16, 0.50) 0%, transparent 100%);
	z-index: 1;
	pointer-events: none;
}

.evpdh-caption {
	position: absolute;
	bottom: 2rem;
	right: 2rem;
	z-index: 2;
	text-align: right;
	opacity: 0;
	animation: evpdhFadeUp 0.8s ease-out 1.2s forwards;
}

.evpdh-caption-label {
	font-size: 0.55rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.2em;
	color: rgba(255, 255, 255, 0.32);
	margin: 0 0 0.25rem;
}

.evpdh-caption-name {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1rem;
	font-style: italic;
	color: rgba(255, 255, 255, 0.6);
	margin: 0;
	transition: opacity 0.4s ease;
}

/* ---------- Keyframes ---------- */
@keyframes evpdhFadeUp {
	from { opacity: 0; transform: translateY(22px); }
	to   { opacity: 1; transform: translateY(0); }
}

@keyframes evpdhScrollPulse {
	0%   { transform: translateX(-100%); }
	50%  { transform: translateX(0%); }
	100% { transform: translateX(100%); }
}

/* ---------- 1200 and below ---------- */
@media (max-width: 1200px) {
	.evpdh         { grid-template-columns: 48% 52%; }
	.evpdh-content { padding: 4.5rem 3rem 4.5rem 3.5rem; }
	.evpdh-scroll  { left: 3.5rem; }
}

/* ---------- 1024 and below ----------
   Single column, centred, slideshow behind the content. Height uses
   100lvh with a 100vh fallback, matching the homepage hero. svh and
   dvh were tried and rejected there; do not reintroduce them. */
@media (max-width: 1024px) {
	.evpdh {
		display: block;
		position: relative;
		min-height: 100vh;
		min-height: 100lvh;
		overflow: hidden;
	}

	.evpdh-media {
		position: absolute;
		inset: 0;
		width: 100%;
		height: 100%;
		z-index: 0;
		display: block;
		background: var(--wp--preset--color--bg-deep);
	}

	.evpdh-media::before {
		background: linear-gradient(180deg,
			rgba(17, 16, 16, 0.45) 0%,
			rgba(17, 16, 16, 0.40) 30%,
			rgba(17, 16, 16, 0.75) 65%,
			rgba(17, 16, 16, 0.95) 100%);
	}

	.evpdh-media::after { display: none; }

	.evpdh-caption { display: none; }

	.evpdh-content {
		position: relative;
		z-index: 5;
		background: transparent;
		min-height: 100vh;
		min-height: 100lvh;
		padding: 6.25rem 3.5rem 5rem;
		justify-content: center;
		align-items: center;
		text-align: center;
	}

	.evpdh-scroll { display: none; }

	/* Eyebrow switches to the gold line, text, line badge. */
	.evpdh-eyebrow {
		justify-content: center;
		color: var(--wp--preset--color--gold);
		font-size: 0.65rem;
		margin-bottom: 1.5rem;
	}

	.evpdh-eyebrow::before {
		width: 1.75rem;
		background: linear-gradient(90deg, transparent, var(--wp--preset--color--gold));
	}

	.evpdh-eyebrow::after {
		content: '';
		display: block;
		width: 1.75rem;
		height: 1.5px;
		background: linear-gradient(90deg, var(--wp--preset--color--gold), transparent);
		flex-shrink: 0;
	}

	.evpdh-title {
		font-size: clamp(3.2rem, 8vw, 4.6rem);
		line-height: 1.05;
		margin: 0 0 1.625rem;
		text-align: center;
		text-shadow: 0 2px 24px rgba(0, 0, 0, 0.5);
	}

	.evpdh-rule {
		width: 3.125rem;
		margin: 0 auto 1.75rem;
		background: linear-gradient(90deg, transparent, var(--wp--preset--color--gold), transparent);
	}

	.evpdh-subtitle {
		font-size: 1.05rem;
		line-height: 1.7;
		color: rgba(255, 255, 255, 0.85);
		max-width: 36.25rem;
		margin: 0 auto 2.5rem;
		text-align: center;
		text-shadow: 0 1px 12px rgba(0, 0, 0, 0.5);
	}

	.evpdh-cta {
		justify-content: center;
		gap: 0.875rem;
	}

	.evpdh-btn {
		min-width: 15rem;
		padding: 1rem 1.875rem;
		font-size: 0.7rem;
	}
}

/* ---------- 768 and below ---------- */
@media (max-width: 768px) {
	.evpdh-content { padding: 6.875rem 1.5rem 4rem; }

	.evpdh-eyebrow {
		font-size: 0.72rem;
		margin-bottom: 1.5rem;
	}

	.evpdh-eyebrow::before,
	.evpdh-eyebrow::after { width: 1.5rem; }

	.evpdh-title {
		font-size: clamp(3.2rem, 12.5vw, 4.6rem);
		margin-bottom: 1.5rem;
	}

	.evpdh-rule {
		width: 3rem;
		margin-bottom: 1.625rem;
	}

	.evpdh-subtitle {
		font-size: 1.15rem;
		margin-bottom: 2.25rem;
		max-width: 100%;
	}

	.evpdh-cta {
		flex-direction: column;
		width: 100%;
		gap: 0.75rem;
	}

	.evpdh-btn {
		width: 100%;
		min-width: 0;
		max-width: 23.75rem;
		margin: 0 auto;
		padding: 1rem 2rem;
		font-size: 0.72rem;
	}
}

/* ---------- 480 and below ---------- */
@media (max-width: 480px) {
	.evpdh-content { padding: 6rem 1.25rem 3.25rem; }

	.evpdh-title { font-size: clamp(2.9rem, 13vw, 3.9rem); }

	.evpdh-subtitle {
		font-size: 1.08rem;
		margin-bottom: 1.875rem;
	}

	.evpdh-btn {
		max-width: 20rem;
		padding: 1rem 1.75rem;
	}
}

/* ---------- 360 and below ---------- */
@media (max-width: 360px) {
	.evpdh-content { padding: 5.5rem 1rem 2.75rem; }
	.evpdh-title   { font-size: 2.7rem; }

	.evpdh-btn {
		max-width: 17.5rem;
		padding: 0.875rem 1.5rem;
		font-size: 0.7rem;
	}
}

/* ---------- Focus ---------- */
.evpdh-btn:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: 4px;
}

/* ---------- Reduced motion ----------
   The reference kept the two second slide crossfade under reduced
   motion, which is the one thing it got wrong. destinations-hero.js
   also stops advancing, so only the first slide is ever shown. */
@media (prefers-reduced-motion: reduce) {
	.evpdh-eyebrow,
	.evpdh-title,
	.evpdh-rule,
	.evpdh-subtitle,
	.evpdh-cta,
	.evpdh-scroll,
	.evpdh-caption {
		animation: none;
		opacity: 1;
		transform: none;
	}

	.evpdh-scroll-line::after {
		animation: none;
		will-change: auto;
	}

	.evpdh-slide,
	.evpdh-caption-name {
		transition: none;
	}
}

/* ==================================================================
   DESTINATIONS PAGE: INTRO PROSE
   parts/section-destinations-intro.php

   The reference captured this block's markup but not its CSS, so this
   is built to the theme's conventions rather than recovered.
   ================================================================== */
.evpdi {
	background: var(--wp--preset--color--bg-deep);
	padding: 5.5rem 3rem 4.5rem;
}

.evpdi-inner {
	max-width: 52rem;
	margin: 0 auto;
	text-align: center;
}

.evpdi-decoration {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 1rem;
	margin-bottom: 2.5rem;
}

.evpdi-line {
	display: block;
	width: 4rem;
	height: 1px;
	background: linear-gradient(90deg, transparent, rgba(212, 196, 168, 0.5));
}

.evpdi-line:last-child {
	background: linear-gradient(90deg, rgba(212, 196, 168, 0.5), transparent);
}

.evpdi-diamond {
	display: block;
	width: 0.4375rem;
	height: 0.4375rem;
	background: var(--wp--preset--color--rust);
	transform: rotate(45deg);
	flex-shrink: 0;
}

.evpdi-prose p {
	font-size: clamp(1.05rem, 1.9vw, 1.3rem);
	font-weight: 300;
	line-height: 1.85;
	color: var(--ev-soft);
	margin: 0;
}

.evpdi-prose a {
	color: var(--wp--preset--color--gold);
	text-decoration: none;
	border-bottom: 1px solid rgba(212, 196, 168, 0.35);
	transition: color 0.25s ease, border-color 0.25s ease;
}

.evpdi-prose a:hover {
	color: var(--wp--preset--color--gold-light);
	border-bottom-color: var(--wp--preset--color--gold-light);
}

.evpdi-prose a:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

.evpdi-signature {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 1.125rem;
	margin-top: 2.75rem;
}

.evpdi-signature-line {
	display: block;
	width: 2.5rem;
	height: 1px;
	background: rgba(255, 255, 255, 0.16);
	flex-shrink: 0;
}

.evpdi-signature-text {
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	white-space: nowrap;
}

@media (max-width: 1200px) {
	.evpdi { padding: 5rem 1.5rem 4rem; }
}

@media (max-width: 768px) {
	.evpdi { padding: 4rem 1.25rem 3.25rem; }

	.evpdi-decoration { margin-bottom: 2rem; }
	.evpdi-line       { width: 2.5rem; }

	.evpdi-signature      { gap: 0.75rem; margin-top: 2.25rem; }
	.evpdi-signature-line { width: 1.5rem; }
	.evpdi-signature-text { font-size: 0.58rem; letter-spacing: 0.18em; }
}

@media (max-width: 480px) {
	.evpdi { padding: 3.25rem 1rem 2.75rem; }

	.evpdi-signature-text {
		font-size: 0.55rem;
		white-space: normal;
	}
}

/* ==================================================================
   DESTINATIONS PAGE: CONTINENT SECTIONS
   parts/section-destinations-continents.php

   The content that makes this page worth having. No JS: a grid that
   needs script to appear is a grid a crawler may never see.
   ================================================================== */
.evpdc {
	background: var(--wp--preset--color--bg-deep);
	padding: 1rem 0 5rem;
}

.evpdc-continent {
	max-width: 87.5rem;
	margin: 0 auto;
	padding: 3.5rem 3rem 0;
}

.evpdc-header {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	margin-bottom: 2.5rem;
}

.evpdc-title {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2rem, 3.6vw, 2.9rem);
	font-weight: 400;
	line-height: 1.1;
	color: #fff;
	margin: 0 0 1rem;
}

.evpdc-rule {
	display: block;
	width: 1.75rem;
	height: 1.5px;
	background: linear-gradient(90deg, var(--wp--preset--color--gold), transparent);
	margin-bottom: 1rem;
}

.evpdc-count {
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	margin: 0;
}

/* auto-fill with a minimum, so one or two destinations sit at their
   natural width instead of stretching across the row. */
.evpdc-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(20rem, 22rem));
	gap: 1.75rem;
}

.evpdc-card {
	display: flex;
	flex-direction: column;
	background: rgba(255, 255, 255, 0.03);
	border: 1px solid rgba(212, 196, 168, 0.12);
	border-radius: 1rem;
	overflow: hidden;
	color: inherit;
	text-decoration: none;
	transition: transform 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease;
}

a.evpdc-card:hover {
	transform: translateY(-4px);
	border-color: rgba(212, 196, 168, 0.35);
	box-shadow: 0 18px 44px rgba(0, 0, 0, 0.45);
}

a.evpdc-card:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

.evpdc-card-media {
	position: relative;
	height: 12.5rem;
	overflow: hidden;
	background: rgba(0, 0, 0, 0.4);
	flex-shrink: 0;
}

.evpdc-card-img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	display: block;
	transition: transform 0.6s ease;
}

a.evpdc-card:hover .evpdc-card-img { transform: scale(1.05); }

.evpdc-card-media::after {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(to bottom, transparent 45%, rgba(17, 16, 16, 0.75) 100%);
	pointer-events: none;
}

.evpdc-card-badge {
	position: absolute;
	top: 0.875rem;
	left: 0.875rem;
	z-index: 1;
	padding: 0.3125rem 0.75rem;
	border-radius: 3.125rem;
	background: rgba(0, 0, 0, 0.7);
	border: 1px solid rgba(255, 255, 255, 0.16);
	color: rgba(255, 255, 255, 0.62);
	font-size: 0.58rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
}

.evpdc-card-body {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
	padding: 1.25rem 1.375rem 1.375rem;
}

.evpdc-card-title {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.5rem;
	font-weight: 500;
	line-height: 1.2;
	color: #fff;
	margin: 0 0 0.375rem;
}

.evpdc-card-tagline {
	font-size: 0.78rem;
	font-style: italic;
	color: var(--wp--preset--color--gold);
	opacity: 0.88;
	margin: 0 0 0.75rem;
}

.evpdc-card-desc {
	font-size: 0.85rem;
	line-height: 1.65;
	color: rgba(255, 255, 255, 0.6);
	margin: 0 0 1.125rem;
}

/* Pushed to the bottom so cards of differing text length still line
   their call to action up. */
.evpdc-card-more {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	margin-top: auto;
	padding-top: 0.875rem;
	border-top: 1px solid rgba(255, 255, 255, 0.08);
	font-size: 0.65rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evpdc-card-more svg {
	width: 0.8125rem;
	height: 0.8125rem;
	stroke: currentColor;
	fill: none;
	stroke-width: 2.5;
	stroke-linecap: round;
	stroke-linejoin: round;
	transition: transform 0.3s ease;
}

a.evpdc-card:hover .evpdc-card-more svg { transform: translateX(3px); }

/* Coming soon: no link, so it reads as inert rather than clickable. */
.evpdc-card--soon {
	border-style: dashed;
	border-color: rgba(255, 255, 255, 0.1);
}

.evpdc-card--soon .evpdc-card-img {
	filter: grayscale(0.7);
	opacity: 0.55;
}

.evpdc-card--soon .evpdc-card-title { color: rgba(255, 255, 255, 0.62); }
.evpdc-card--soon .evpdc-card-desc  { color: rgba(255, 255, 255, 0.42); }

@media (max-width: 1200px) {
	.evpdc-continent { padding: 3rem 1.5rem 0; }
}

@media (max-width: 768px) {
	.evpdc           { padding: 0.5rem 0 3.5rem; }
	.evpdc-continent { padding: 2.5rem 1.25rem 0; }
	.evpdc-header    { margin-bottom: 1.75rem; }

	.evpdc-grid {
		grid-template-columns: 1fr;
		gap: 1.25rem;
	}

	.evpdc-card-media { height: 11rem; }
}

@media (max-width: 480px) {
	.evpdc-continent { padding: 2rem 1rem 0; }
}

@media (prefers-reduced-motion: reduce) {
	.evpdc-card,
	.evpdc-card-img,
	.evpdc-card-more svg {
		transition: none;
	}

	a.evpdc-card:hover { transform: none; }
	a.evpdc-card:hover .evpdc-card-img { transform: none; }
}

/* ==================================================================
   MAP COMPONENT: THE DESTINATIONS PAGE VARIANTS
   The same parts/section-destinations-map.php, rendered without its
   header and without the See All button. Both of those carried the
   section's vertical padding, so it is restored here.
   ================================================================== */
.evp-dest--no-header .evp-dest-controls { padding-top: 2.5rem; }

.evp-dest--no-see-all .evp-dest-map-outer { padding-bottom: 3.5rem; }

@media (max-width: 768px) {
	.evp-dest--no-header .evp-dest-controls { padding-top: 0; }

	/* Below 768 the map is hidden and the accordion is the section, so
	   the accordion carries the bottom padding instead. */
	.evp-dest--no-see-all .evp-dest-mobile-legend { padding-bottom: 3rem; }
}

/* ==================================================================
   DESTINATION PAGE: COUNTRY OVERVIEW
   parts/section-country-overview.php + assets/js/country-overview.js

   Converted from salvage/destination-page/01-country-overview.html.
   Removed on the way in: 117 !important, the uniqid prefix on every
   selector and id, and the section's private colour tokens.

   The reference used --charcoal (#1A1A1A) as the section background.
   That is the old value; #111010 via the token is the current one.
   ================================================================== */

/* ---------- Hero ---------- */
.evpco-hero {
	position: relative;
	min-height: 100vh;
	min-height: 100lvh;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	text-align: center;
	overflow: hidden;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 1rem;
	color: #fff;
	background: var(--wp--preset--color--bg-deep);
	box-sizing: border-box;
}

.evpco-hero *,
.evpco-hero *::before,
.evpco-hero *::after {
	box-sizing: border-box;
}

.evpco-hero-bg {
	position: absolute;
	inset: 0;
	z-index: 0;
	overflow: hidden;
}

/* The reference needed !important on every one of these to defeat a
   third-party img rule forcing height:auto. There is no such rule in
   this theme, so plain declarations hold. */
.evpco-slide {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	max-width: none;
	object-fit: cover;
	object-position: center 30%;
	display: block;
	margin: 0;
	opacity: 0;
	transition: opacity 1.5s ease;
}

.evpco-slide.is-active { opacity: 1; }

.evpco-hero-bg::after {
	content: '';
	position: absolute;
	inset: 0;
	z-index: 1;
	background: linear-gradient(180deg,
		rgba(0, 0, 0, 0.30) 0%,
		rgba(0, 0, 0, 0.50) 40%,
		rgba(0, 0, 0, 0.65) 70%,
		rgba(0, 0, 0, 0.80) 100%);
	pointer-events: none;
}

.evpco-hero-content {
	position: relative;
	z-index: 2;
	width: 100%;
	padding: 0 1.25rem;
}

.evpco-breadcrumbs {
	position: absolute;
	top: 4.5rem;
	left: 1rem;
	z-index: 10;
	display: inline-flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0.375rem 0.5rem;
	max-width: calc(100% - 2rem);
	padding: 0.5625rem 1rem;
	background: rgba(0, 0, 0, 0.4);
	backdrop-filter: blur(10px);
	border: 1px solid rgba(255, 255, 255, 0.1);
	border-radius: 3.125rem;
	font-size: 0.58rem;
	font-weight: 500;
	letter-spacing: 0.1em;
	text-transform: uppercase;
}

.evpwt-js .evpco-breadcrumbs {
	opacity: 0;
	animation: evpcoFadeUp 0.8s ease-out 0.4s forwards;
}

.evpco-breadcrumbs a {
	color: rgba(255, 255, 255, 0.78);
	text-decoration: none;
	white-space: nowrap;
	transition: color 0.25s ease;
}

.evpco-breadcrumbs a:hover { color: var(--wp--preset--color--gold); }

.evpco-breadcrumbs-sep {
	color: rgba(255, 255, 255, 0.35);
	font-size: 1.1em;
	line-height: 1;
}

.evpco-breadcrumbs-current {
	color: var(--wp--preset--color--gold);
	font-weight: 600;
	white-space: nowrap;
}

.evpco-hero-badge {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.75rem;
	margin-bottom: 1.5rem;
}

.evpwt-js .evpco-hero-badge {
	opacity: 0;
	animation: evpcoFadeUp 0.9s ease-out 0.3s forwards;
}

.evpco-hero-badge-line {
	display: block;
	width: 1.75rem;
	height: 1px;
	background: linear-gradient(90deg, transparent, var(--wp--preset--color--rust));
}

.evpco-hero-badge-line:last-child {
	background: linear-gradient(90deg, var(--wp--preset--color--rust), transparent);
}

.evpco-hero-badge-text {
	font-size: 0.62rem;
	font-weight: 600;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evpco-hero-title {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.8rem, 11vw, 5.5rem);
	font-weight: 400;
	line-height: 1.1;
	color: #fff;
	margin: 0 0 1.125rem;
	text-shadow: 0 4px 20px rgba(0, 0, 0, 0.4);
}

.evpwt-js .evpco-hero-title {
	opacity: 0;
	animation: evpcoFadeUp 1s ease-out 0.5s forwards;
}

.evpco-hero-subtitle {
	font-size: clamp(0.9rem, 2.5vw, 1.05rem);
	font-weight: 300;
	color: var(--ev-soft);
	letter-spacing: 0.05em;
	margin: 0 0 2rem;
}

.evpwt-js .evpco-hero-subtitle {
	opacity: 0;
	animation: evpcoFadeUp 1s ease-out 0.7s forwards;
}

.evpco-hero-ctas {
	display: flex;
	flex-direction: column;
	align-items: stretch;
	gap: 0.75rem;
}

.evpwt-js .evpco-hero-ctas {
	opacity: 0;
	animation: evpcoFadeUp 1s ease-out 0.9s forwards;
}

/* Shared button spec: 1rem/2rem, 0.72rem type, gold to rust hover. */
.evpco-btn-primary {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.625rem;
	padding: 1rem 2rem;
	background: var(--wp--preset--color--rust);
	color: #fff;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	text-decoration: none;
	border: 2px solid var(--wp--preset--color--rust);
	border-radius: 3.125rem;
	box-shadow: 0 8px 28px rgba(184, 98, 27, 0.4);
	transition: all 0.3s ease;
	position: relative;
	overflow: hidden;
	cursor: pointer;
}

.evpco-btn-primary::before {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(135deg, var(--wp--preset--color--gold) 0%, var(--wp--preset--color--rust) 100%);
	opacity: 0;
	transition: opacity 0.3s ease;
}

.evpco-btn-primary:hover::before { opacity: 1; }

.evpco-btn-primary:hover {
	transform: translateY(-3px);
	box-shadow: 0 14px 36px rgba(184, 98, 27, 0.55);
}

.evpco-btn-primary > * {
	position: relative;
	z-index: 1;
}

.evpco-btn-primary svg {
	width: 1rem;
	height: 1rem;
	fill: #fff;
	flex-shrink: 0;
	transition: transform 0.3s ease;
}

.evpco-btn-primary:hover svg { transform: translateX(3px); }

.evpco-btn-outline {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.625rem;
	padding: 1rem 2rem;
	background: transparent;
	color: rgba(255, 255, 255, 0.85);
	font-size: 0.72rem;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	text-decoration: none;
	border: 2px solid rgba(255, 255, 255, 0.35);
	border-radius: 3.125rem;
	transition: all 0.3s ease;
}

.evpco-btn-outline:hover {
	border-color: rgba(255, 255, 255, 0.7);
	color: #fff;
	background: rgba(255, 255, 255, 0.08);
}

.evpco-scroll {
	position: absolute;
	bottom: 1.5rem;
	left: 50%;
	transform: translateX(-50%);
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0.5rem;
	font-size: 0.6rem;
	font-weight: 600;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.5);
	z-index: 2;
}

.evpwt-js .evpco-scroll {
	opacity: 0;
	animation: evpcoFadeIn 1s ease-out 1.4s forwards;
}

.evpco-scroll-line {
	display: block;
	width: 1px;
	height: 1.875rem;
	background: linear-gradient(180deg, rgba(212, 196, 168, 0.6), transparent);
	animation: evpcoScrollPulse 2s ease-in-out infinite;
}

.evpco-progress {
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
	height: 3px;
	background: rgba(255, 255, 255, 0.08);
	z-index: 3;
}

.evpco-progress-bar {
	height: 100%;
	width: 0;
	background: linear-gradient(90deg, var(--wp--preset--color--gold), var(--wp--preset--color--rust));
	transition: width 0.05s linear;
}

/* ---------- Quick nav ---------- */
.evpco-quick-nav {
	position: sticky;
	top: 0;
	z-index: 100;
	background: rgba(18, 14, 10, 0.97);
	backdrop-filter: blur(20px);
	border-bottom: 1px solid rgba(255, 255, 255, 0.06);
	font-family: var(--wp--preset--font-family--montserrat);
}

.evpco-quick-nav-inner {
	display: flex;
	align-items: center;
	justify-content: flex-start;
	overflow-x: auto;
	scrollbar-width: none;
	padding: 0 0.75rem;
}

.evpco-quick-nav-inner::-webkit-scrollbar { display: none; }

.evpco-nav-item {
	display: inline-flex;
	align-items: center;
	gap: 0.375rem;
	padding: 0.9375rem 0.875rem;
	font-size: 0.6rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.45);
	text-decoration: none;
	border-bottom: 2px solid transparent;
	white-space: nowrap;
	flex-shrink: 0;
	transition: color 0.25s ease, border-color 0.25s ease;
}

.evpco-nav-item:hover,
.evpco-nav-item.is-active {
	color: #fff;
	border-bottom-color: var(--wp--preset--color--rust);
}

.evpco-nav-item:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: -3px;
}

/* ---------- Overview panel ---------- */
.evpco-overview {
	position: relative;
	background: var(--wp--preset--color--bg-deep);
	font-family: var(--wp--preset--font-family--montserrat);
	color: #fff;
}

.evpco-overview-inner {
	max-width: 80rem;
	margin: 0 auto;
	padding: 2.5rem 1rem 3rem;
	display: flex;
	flex-direction: column;
	gap: 2.25rem;
	position: relative;
	z-index: 2;
}

.evpco-overview-left {
	width: 100%;
	min-width: 0;
}

.evpco-overview-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	font-size: 0.66rem;
	font-weight: 700;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	margin: 0 0 0.875rem;
}

.evpco-overview-eyebrow::after {
	content: '';
	flex: 1;
	max-width: 3rem;
	height: 1px;
	background: var(--wp--preset--color--rust);
	opacity: 0.5;
}

.evpco-title-row {
	display: flex;
	align-items: center;
	gap: 0.875rem;
	margin: 0 0 0.625rem;
}

.evpco-flag {
	width: 2.875rem;
	height: 1.875rem;
	object-fit: cover;
	border-radius: 4px;
	border: 2px solid rgba(255, 255, 255, 0.15);
	box-shadow: 0 3px 12px rgba(0, 0, 0, 0.4);
	flex: 0 0 2.875rem;
	display: block;
}

.evpco-overview-title {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.2rem, 9vw, 3.8rem);
	font-weight: 400;
	line-height: 1;
	color: #fff;
	margin: 0;
}

.evpco-tagline {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-style: italic;
	font-size: clamp(0.9rem, 2.5vw, 1.2rem);
	color: var(--wp--preset--color--gold);
	opacity: 0.85;
	line-height: 1.5;
	margin: 0 0 1.375rem 0.125rem;
}

.evpco-stats {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	border: 1px solid rgba(255, 255, 255, 0.08);
	border-radius: 0.75rem;
	overflow: hidden;
	margin-bottom: 1.5rem;
	background: rgba(255, 255, 255, 0.02);
}

.evpco-stat {
	padding: 0.875rem 0.75rem;
	border-right: 1px solid rgba(255, 255, 255, 0.08);
	border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}

.evpco-stat:nth-child(even) { border-right: none; }
.evpco-stat:nth-last-child(-n+2) { border-bottom: none; }

.evpco-stat-label {
	font-size: 0.58rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	opacity: 0.8;
	margin-bottom: 0.3125rem;
}

.evpco-stat-value {
	font-size: 0.88rem;
	font-weight: 600;
	color: #fff;
	line-height: 1.3;
}

.evpco-desc {
	font-size: 0.95rem;
	line-height: 1.8;
	color: rgba(255, 255, 255, 0.78);
	margin: 0 0 1.5rem;
}

.evpco-desc p { margin: 0 0 1em; }
.evpco-desc p:last-child { margin-bottom: 0; }
.evpco-desc em { color: var(--wp--preset--color--gold-light); font-style: italic; }
.evpco-desc strong { color: var(--wp--preset--color--gold-light); font-weight: 600; }

/*
   auto-fit, not a fixed two columns. The list used to be six, which
   divided into two columns as three tidy rows. It is three now, and
   two columns leaves the third tile alone on a row half the width of
   the ones above it. A 6rem minimum fits all three across at 360px,
   which is the narrowest this site is checked at, and still collapses
   to fewer columns if a destination only qualifies for one or two.
*/
.evpco-tiles {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(6rem, 1fr));
	gap: 0.625rem;
}

.evpco-tile {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	padding: 1.125rem 0.625rem;
	min-height: 4.125rem;
	background: rgba(255, 255, 255, 0.04);
	border: 1px solid rgba(255, 255, 255, 0.08);
	border-radius: 0.75rem;
	text-decoration: none;
	color: #fff;
	overflow: hidden;
	transition: transform 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease;
}

.evpco-tile::before {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(135deg, var(--wp--preset--color--gold), var(--wp--preset--color--rust));
	opacity: 0;
	transition: opacity 0.3s ease;
}

.evpco-tile:hover {
	transform: translateY(-3px);
	border-color: var(--wp--preset--color--rust);
	box-shadow: 0 10px 28px rgba(184, 98, 27, 0.3);
}

.evpco-tile:hover::before { opacity: 1; }

.evpco-tile:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

.evpco-tile-label {
	position: relative;
	z-index: 1;
	font-size: 0.66rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.12em;
	color: #fff;
}

/* ================================================
   FEATURED EXPEDITIONS CAROUSEL
   parts/section-featured-carousel.php. One component, two callers:
   the country overview and the location overview.

   This is NOT the destination tours carousel. That one is several
   20rem cards side by side in a scrolling track; this is one card per
   view, filling the track, paged by translateX. Both used to be built
   out of whatever card was to hand, which is how a 20rem card ended up
   in a full width container.

   Recovered from country_overview. The final version used rem; an
   earlier one used em and was corrected, so these are rem.
   ================================================ */

.evpfx-carousel {
	position: relative;
	/* The column this sits in is a grid or flex item, and a track of n
	   cards is n times its width. Without this the item's automatic
	   minimum is its content, so it grows past its track and takes the
	   page's horizontal scrollbar with it. */
	min-width: 0;
}

.evpfx-nav {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	margin-bottom: 0.75rem;
	padding: 0 0.125rem;
}

.evpfx-label {
	margin: 0;
	font-size: 0.63rem;
	font-weight: 700;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
}

.evpfx-arrows {
	display: flex;
	align-items: center;
	gap: 0.5rem;
}

.evpfx-arrow {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.25rem;
	height: 2.25rem;
	min-width: 2.25rem;
	padding: 0;
	border: 1px solid rgba(255, 255, 255, 0.12);
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.06);
	cursor: pointer;
	transition: background 0.25s ease, border-color 0.25s ease;
}

.evpfx-arrow:hover {
	border-color: var(--wp--preset--color--rust);
	background: var(--wp--preset--color--rust);
}

.evpfx-arrow:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

/* pointer-events with the opacity, so a disabled arrow does not take a
   hover state it cannot act on. */
.evpfx-arrow:disabled {
	opacity: 0.25;
	cursor: not-allowed;
	pointer-events: none;
}

.evpfx-arrow svg {
	width: 1rem;
	height: 1rem;
	fill: none;
	stroke: #fff;
	stroke-width: 2.5;
}

.evpfx-counter {
	margin: 0;
	min-width: 2.25rem;
	font-size: 0.78rem;
	font-weight: 600;
	text-align: center;
	color: rgba(255, 255, 255, 0.45);
}

/* The number you are on, against the total you are not. */
.evpfx-current {
	color: #fff;
}

/*
   The clip. This is the element that makes the whole thing a carousel
   rather than a row of cards spilling across the page, and it owns the
   corner radius because the cards inside are square.
*/
.evpfx-track-wrap {
	overflow: hidden;
	border-radius: 1.25rem;
}

.evpfx-track {
	display: flex;
	transition: transform 0.45s cubic-bezier(0.4, 0, 0.2, 1);
}

/*
   The track sizes its slides; the card pins nothing. That is the fix.
   A card that declares its own width is right for a scrolling track of
   several and wrong here, and having both the card and the track hold
   an opinion is how the two disagreed.
*/
.evpfx-track > * {
	flex: 0 0 100%;
	min-width: 0;
	/* There is no global border-box reset in this stylesheet, and the
	   card has a 1px border. Without this the slide is 2px wider than
	   the wrap while translateX(-100%) moves by the wrap's width, so
	   every page drifts 2px further left than the card it is meant to
	   land on. */
	box-sizing: border-box;
}

.evpfx-dots {
	display: flex;
	justify-content: center;
	gap: 0.5rem;
	margin-top: 0.75rem;
}

.evpfx-dot {
	width: 0.5rem;
	height: 0.5rem;
	min-width: 0.5rem;
	padding: 0;
	border: none;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.2);
	cursor: pointer;
	transition: background 0.3s ease, width 0.3s ease;
}

.evpfx-dot.is-active {
	width: 1.5rem;
	border-radius: 0.25rem;
	background: var(--wp--preset--color--rust);
}

.evpfx-dot:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
	.evpfx-track,
	.evpfx-arrow,
	.evpfx-dot {
		transition: none;
	}
}

@media (prefers-contrast: more) {
	.evpfx-arrow {
		border-color: #fff;
	}

	.evpfx-counter {
		color: #fff;
	}
}

/* ---------- The column the carousel sits in ---------- */
.evpco-sidebar {
	width: 100%;
	min-width: 0;
}

/* Featured tour card */
/*
   No width and no flex here. .evpfx-track sizes its own slides, so
   this card is whatever the thing holding it says it is.
*/
.evpco-tour-card {
	position: relative;
	background: linear-gradient(145deg, rgba(30, 25, 20, 0.95) 0%, rgba(20, 15, 12, 0.98) 100%);
	border: 1px solid rgba(212, 196, 168, 0.12);
	overflow: hidden;
	box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
	cursor: pointer;
}

.evpco-tour-card-link {
	position: absolute;
	inset: 0;
	z-index: 1;
}

.evpco-tour-card-link:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: -3px;
}

.evpco-card-header {
	position: relative;
	height: 12.5rem;
	overflow: hidden;
}

.evpco-card-header img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform 0.6s ease;
}

.evpco-tour-card:hover .evpco-card-header img { transform: scale(1.05); }

.evpco-card-overlay {
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, transparent 40%, rgba(0, 0, 0, 0.7) 100%);
	pointer-events: none;
}

.evpco-card-badge {
	position: absolute;
	top: 0.875rem;
	left: 0.875rem;
	padding: 0.3125rem 0.75rem;
	background: var(--wp--preset--color--rust);
	color: #fff;
	font-size: 0.6rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	border-radius: 3.125rem;
	z-index: 2;
}

.evpco-card-sale-pill {
	position: absolute;
	top: 0.875rem;
	right: 0.875rem;
	display: flex;
	align-items: center;
	gap: 0.3125rem;
	padding: 0.3125rem 0.75rem;
	background: var(--ev-sale-gold);
	color: var(--ev-sale-dark);
	font-size: 0.6rem;
	font-weight: 800;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	border-radius: 3.125rem;
	z-index: 3;
	box-shadow: 0 4px 14px rgba(232, 184, 75, 0.5);
}

.evpco-card-sale-pill-icon { font-size: 1.1em; line-height: 1; }

.evpco-card-body { padding: 1.375rem 1.25rem 1.25rem; }

.evpco-card-title {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.25rem;
	font-weight: 500;
	color: #fff;
	line-height: 1.25;
	margin: 0 0 0.875rem;
}

.evpco-mini-stats {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 0.5rem;
	margin-bottom: 1rem;
}

.evpco-mini-stat {
	padding: 0.625rem 0.75rem;
	background: rgba(255, 255, 255, 0.04);
	border: 1px solid rgba(255, 255, 255, 0.07);
	border-radius: 0.625rem;
}

.evpco-mini-stat-label {
	font-size: 0.57rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.45);
	margin-bottom: 0.25rem;
}

.evpco-mini-stat-value {
	font-size: 0.87rem;
	font-weight: 700;
	color: #fff;
}

.evpco-mini-stat-difficulty { color: var(--wp--preset--color--rust); }

.evpco-mini-stat.on-sale {
	position: relative;
	overflow: hidden;
	background: rgba(232, 184, 75, 0.07);
	border-color: rgba(232, 184, 75, 0.28);
}

.evpco-mini-stat.on-sale::before {
	content: '';
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	height: 2px;
	background: linear-gradient(90deg, var(--ev-sale-gold), #f5d080);
}

.evpco-sale-price-row {
	display: flex;
	align-items: baseline;
	gap: 0.375rem;
}

.evpco-sale-price-new {
	font-size: 0.87rem;
	font-weight: 700;
	color: var(--ev-sale-gold);
}

.evpco-sale-price-old {
	font-size: 0.75rem;
	font-weight: 600;
	color: rgba(255, 255, 255, 0.3);
}

.evpco-card-cta {
	position: relative;
	z-index: 2;
	display: flex;
	flex-direction: column;
	gap: 0.625rem;
	pointer-events: none;
}

.evpco-card-cta .evpco-btn-primary {
	width: 100%;
	justify-content: center;
}

/* The note is the one thing in the card that is its own link. */
.evpco-card-note {
	text-align: center;
	font-size: 0.68rem;
	color: rgba(255, 255, 255, 0.45);
	letter-spacing: 0.04em;
	margin: 0;
	pointer-events: auto;
}

.evpco-card-note a {
	color: var(--wp--preset--color--gold);
	text-decoration: none;
}

.evpco-card-note a:hover { text-decoration: underline; }

/* ---------- Map and gallery ---------- */
.evpco-map-gallery {
	position: relative;
	z-index: 3;
	width: 100%;
	display: flex;
	flex-direction: column;
	overflow: hidden;
	background: #0d0d0d;
	font-family: var(--wp--preset--font-family--montserrat);
	color: #fff;
}

.evpco-map-wrap {
	display: none;
	position: relative;
	background: #0d0d0d;
}

.evpco-leaflet-map {
	width: 100%;
	height: 100%;
}

@keyframes evpcoMapPulse {
	0%   { box-shadow: 0 0 0 0 rgba(184, 98, 27, 0.7); }
	70%  { box-shadow: 0 0 0 16px rgba(184, 98, 27, 0); }
	100% { box-shadow: 0 0 0 0 rgba(184, 98, 27, 0); }
}

.evpco-pulse-marker,
.evpco-loc-marker {
	width: 1.125rem;
	height: 1.125rem;
	background: var(--wp--preset--color--rust);
	border: 3px solid var(--wp--preset--color--gold);
	border-radius: 50%;
	animation: evpcoMapPulse 2s ease-out infinite;
}

.evpco-loc-marker {
	width: 1.25rem;
	height: 1.25rem;
	cursor: pointer;
	box-shadow: 0 4px 14px rgba(0, 0, 0, 0.4);
	transition: transform 0.2s ease;
}

.evpco-loc-marker:hover { transform: scale(1.15); }

/* Leaflet gives the divIcon a white box by default. */
.evpco-marker-icon {
	background: transparent;
	border: none;
}

.evpco-map-float {
	position: absolute;
	bottom: 1.25rem;
	left: 1.25rem;
	max-width: 16.25rem;
	padding: 1.25rem;
	background: rgba(10, 10, 10, 0.92);
	backdrop-filter: blur(20px);
	border: 1px solid rgba(255, 255, 255, 0.08);
	border-radius: 1.125rem;
	z-index: 1000;
}

.evpco-map-float-label {
	font-size: 0.625rem;
	font-weight: 700;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	margin: 0 0 0.375rem;
}

.evpco-map-float-title {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.1rem;
	color: #fff;
	line-height: 1.2;
	margin: 0 0 0.375rem;
}

.evpco-map-float-coords {
	font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	font-size: 0.68rem;
	color: rgba(255, 255, 255, 0.45);
	margin: 0 0 0.875rem;
}

.evpco-map-float-link {
	display: inline-flex;
	align-items: center;
	gap: 0.375rem;
	font-size: 0.68rem;
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	text-decoration: none;
	transition: color 0.2s ease;
}

.evpco-map-float-link:hover { color: #fff; }

.evpco-map-float-link svg {
	width: 0.8125rem;
	height: 0.8125rem;
	fill: currentColor;
	flex-shrink: 0;
}

/* Marker tooltip, structured mode */
.evpco-marker-tooltip {
	position: absolute;
	z-index: 1100;
	width: 16.25rem;
	background: linear-gradient(145deg, rgba(12, 8, 5, 0.98), rgba(28, 22, 16, 0.98));
	border: 1px solid rgba(212, 196, 168, 0.2);
	border-radius: 0.875rem;
	overflow: hidden;
	box-shadow: 0 16px 48px rgba(0, 0, 0, 0.6);
	opacity: 0;
	transform: translateY(6px);
	transition: opacity 0.25s ease, transform 0.25s ease;
}

.evpco-marker-tooltip.is-visible {
	opacity: 1;
	transform: translateY(0);
}

.evpco-marker-tooltip-body { padding: 0.875rem 1rem 0.75rem; }

.evpco-marker-tooltip-eyebrow {
	font-size: 0.55rem;
	font-weight: 700;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	margin: 0 0 0.375rem;
}

.evpco-marker-tooltip-name {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.05rem;
	font-weight: 500;
	color: #fff;
	line-height: 1.25;
	margin: 0 0 0.75rem;
}

.evpco-marker-tooltip-ctas {
	display: flex;
	flex-direction: column;
	gap: 0.375rem;
}

.evpco-marker-tooltip-cta {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 0.5625rem 0.75rem;
	background: rgba(184, 98, 27, 0.18);
	border: 1px solid rgba(184, 98, 27, 0.35);
	border-radius: 0.5rem;
	text-decoration: none;
	transition: background 0.2s ease, border-color 0.2s ease;
}

.evpco-marker-tooltip-cta:hover {
	background: rgba(184, 98, 27, 0.32);
	border-color: rgba(184, 98, 27, 0.6);
}

.evpco-marker-tooltip-cta.is-location {
	background: rgba(212, 196, 168, 0.08);
	border-color: rgba(212, 196, 168, 0.25);
}

.evpco-marker-tooltip-cta.is-location:hover {
	background: rgba(212, 196, 168, 0.15);
	border-color: rgba(212, 196, 168, 0.45);
}

.evpco-marker-tooltip-cta-text {
	display: flex;
	flex-direction: column;
	gap: 2px;
	min-width: 0;
}

.evpco-marker-tooltip-cta-eyebrow {
	font-size: 0.5rem;
	font-weight: 700;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: rgba(212, 196, 168, 0.7);
}

.evpco-marker-tooltip-cta-label {
	font-size: 0.78rem;
	font-weight: 600;
	color: #fff;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.evpco-marker-tooltip-cta.is-location .evpco-marker-tooltip-cta-label {
	color: var(--wp--preset--color--gold-light);
}

.evpco-marker-tooltip-cta-arrow {
	width: 1.375rem;
	height: 1.375rem;
	background: var(--wp--preset--color--rust);
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
	margin-left: 0.625rem;
	transition: transform 0.2s ease;
}

.evpco-marker-tooltip-cta.is-location .evpco-marker-tooltip-cta-arrow {
	background: rgba(212, 196, 168, 0.3);
}

.evpco-marker-tooltip-cta:hover .evpco-marker-tooltip-cta-arrow { transform: translateX(2px); }

.evpco-marker-tooltip-cta-arrow svg {
	width: 0.6875rem;
	height: 0.6875rem;
	stroke: #fff;
	fill: none;
	stroke-width: 2.5;
}

.evpco-marker-tooltip-close {
	position: absolute;
	top: 0.375rem;
	right: 0.375rem;
	width: 1.5rem;
	height: 1.5rem;
	background: rgba(255, 255, 255, 0.06);
	border: none;
	border-radius: 50%;
	color: rgba(255, 255, 255, 0.6);
	font-size: 0.875rem;
	line-height: 1;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: background 0.2s ease, color 0.2s ease;
}

.evpco-marker-tooltip-close:hover {
	background: rgba(255, 255, 255, 0.15);
	color: #fff;
}

/* Gallery */
.evpco-gallery-wrap {
	flex: 1;
	display: flex;
	flex-direction: column;
	padding: 1.25rem 0;
	min-width: 0;
	overflow: hidden;
}

.evpco-gallery {
	position: relative;
	max-width: 100%;
	width: 100%;
	margin: 0 auto;
	padding: 0 0.75rem;
}

.evpco-gallery-track-wrap {
	position: relative;
	overflow: hidden;
	border-radius: 0.875rem;
	width: 100%;
}

.evpco-gallery-track {
	display: flex;
	transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);
	touch-action: pan-x;
}

.evpco-gallery-slide {
	flex: 0 0 100%;
	position: relative;
	aspect-ratio: 3 / 2;
	width: 100%;
	background: #000;
}

.evpco-gallery-slide img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform 6s ease;
}

.evpco-gallery-slide.is-active img { transform: scale(1.04); }

.evpco-gallery-caption {
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
	padding: 2rem 1.25rem 1.125rem;
	background: linear-gradient(0deg, rgba(0, 0, 0, 0.85) 0%, transparent 100%);
	z-index: 4;
	opacity: 0;
	transition: opacity 0.4s ease;
	pointer-events: none;
}

.evpco-gallery-track-wrap:hover .evpco-gallery-caption,
.evpco-gallery-slide.is-active .evpco-gallery-caption {
	opacity: 1;
	pointer-events: auto;
}

.evpco-gallery-caption-title {
	display: block;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.05rem;
	font-style: italic;
	font-weight: 400;
	color: #fff;
	line-height: 1.3;
	margin-bottom: 0.375rem;
}

.evpco-gallery-caption-meta {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0.625rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evpco-gallery-caption-meta-sep {
	width: 3px;
	height: 3px;
	background: rgba(212, 196, 168, 0.45);
	border-radius: 50%;
	flex-shrink: 0;
}

.evpco-gallery-caption-meta a {
	color: var(--wp--preset--color--gold);
	text-decoration: none;
	border-bottom: 1px solid rgba(212, 196, 168, 0.4);
	transition: color 0.2s ease, border-color 0.2s ease;
}

.evpco-gallery-caption-meta a:hover {
	color: #fff;
	border-color: #fff;
}

.evpco-gallery-caption-meta a.evpco-meta-link-tour {
	color: #fff;
	border-bottom-color: var(--wp--preset--color--rust);
}

.evpco-gallery-caption-meta a.evpco-meta-link-tour:hover {
	color: var(--wp--preset--color--gold-light);
	border-bottom-color: var(--wp--preset--color--gold);
}

.evpco-gallery-progress {
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
	height: 3px;
	background: rgba(255, 255, 255, 0.1);
	z-index: 6;
}

.evpco-gallery-progress-bar {
	height: 100%;
	width: 0;
	background: linear-gradient(90deg, var(--wp--preset--color--gold), var(--wp--preset--color--rust));
	transition: width 0.1s linear;
}

.evpco-gallery-playpause,
.evpco-gallery-expand {
	position: absolute;
	top: 0.75rem;
	width: 2.25rem;
	height: 2.25rem;
	padding: 0;
	background: rgba(0, 0, 0, 0.55);
	backdrop-filter: blur(8px);
	border: 1px solid rgba(255, 255, 255, 0.18);
	color: #fff;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	z-index: 10;
	transition: background 0.2s ease, border-color 0.2s ease;
}

.evpco-gallery-playpause {
	left: 0.75rem;
	border-radius: 50%;
}

.evpco-gallery-expand {
	right: 0.75rem;
	border-radius: 0.5rem;
}

.evpco-gallery-playpause:hover,
.evpco-gallery-expand:hover {
	background: var(--wp--preset--color--rust);
	border-color: var(--wp--preset--color--rust);
}

.evpco-gallery-playpause svg { width: 0.875rem; height: 0.875rem; fill: currentColor; }
.evpco-gallery-expand svg { width: 1rem; height: 1rem; stroke: currentColor; stroke-width: 2; fill: none; }

.evpco-gallery-playpause .evpco-icon-play { display: none; }
.evpco-gallery-playpause .evpco-icon-pause { display: block; }
.evpco-gallery-playpause[aria-pressed="true"] .evpco-icon-play { display: block; }
.evpco-gallery-playpause[aria-pressed="true"] .evpco-icon-pause { display: none; }

.evpco-gallery-counter {
	position: absolute;
	bottom: 0.75rem;
	left: 0.75rem;
	padding: 0.3125rem 0.6875rem;
	background: rgba(0, 0, 0, 0.6);
	backdrop-filter: blur(10px);
	border-radius: 1.125rem;
	font-size: 0.75rem;
	font-weight: 500;
	color: #fff;
	z-index: 5;
}

.evpco-gallery-counter span { color: var(--wp--preset--color--gold); }

.evpco-gallery-nav {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	width: 2.375rem;
	height: 2.375rem;
	padding: 0;
	background: rgba(0, 0, 0, 0.5);
	backdrop-filter: blur(8px);
	border: 1px solid rgba(255, 255, 255, 0.2);
	border-radius: 50%;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	z-index: 10;
	transition: background 0.3s ease, transform 0.3s ease;
}

.evpco-gallery-nav:hover {
	background: rgba(255, 255, 255, 0.95);
	transform: translateY(-50%) scale(1.08);
}

.evpco-gallery-nav:hover svg { stroke: #111010; }

.evpco-gallery-nav:disabled {
	opacity: 0.3;
	cursor: not-allowed;
	pointer-events: none;
}

.evpco-gallery-nav svg {
	width: 1.125rem;
	height: 1.125rem;
	stroke: rgba(255, 255, 255, 0.9);
	stroke-width: 2.5;
	fill: none;
}

.evpco-gallery-nav.prev { left: 0.625rem; }
.evpco-gallery-nav.next { right: 0.625rem; }

.evpco-mobile-map-link {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	margin: 0.875rem 0.75rem 0;
	padding: 0.6875rem 1rem;
	background: rgba(184, 98, 27, 0.1);
	border: 1px solid rgba(184, 98, 27, 0.3);
	border-radius: 0.75rem;
	color: var(--wp--preset--color--gold);
	text-decoration: none;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	transition: background 0.25s ease, border-color 0.25s ease, color 0.25s ease;
}

.evpco-mobile-map-link:hover {
	background: rgba(184, 98, 27, 0.22);
	border-color: rgba(184, 98, 27, 0.55);
	color: #fff;
}

.evpco-mobile-map-link svg {
	width: 0.875rem;
	height: 0.875rem;
	fill: currentColor;
	flex-shrink: 0;
}

.evpco-gallery-thumbs {
	display: flex;
	gap: 0.5rem;
	margin-top: 0.75rem;
	padding: 0 0.75rem;
	flex-wrap: nowrap;
	overflow-x: auto;
	scroll-behavior: smooth;
	scrollbar-width: none;
}

.evpco-gallery-thumbs::-webkit-scrollbar { display: none; }

.evpco-gallery-thumb {
	display: block;
	width: 3.5rem;
	height: 2.5rem;
	min-width: 3.5rem;
	padding: 0;
	border-radius: 0.5rem;
	overflow: hidden;
	cursor: pointer;
	opacity: 0.4;
	border: 2px solid transparent;
	background: #000;
	flex-shrink: 0;
	text-decoration: none;
	transition: opacity 0.4s ease, border-color 0.4s ease;
}

.evpco-gallery-thumb:hover { opacity: 0.75; }

.evpco-gallery-thumb.is-active {
	opacity: 1;
	border-color: var(--wp--preset--color--gold);
}

.evpco-gallery-thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

/* Lightbox, fallback mode only */
.evpco-lightbox {
	position: fixed;
	inset: 0;
	z-index: 99999;
	background: rgba(0, 0, 0, 0.96);
	display: none;
	align-items: center;
	justify-content: center;
}

.evpco-lightbox.is-open { display: flex; }

.evpco-lightbox-inner {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
}

.evpco-lightbox-img {
	max-width: 90vw;
	max-height: 88vh;
	object-fit: contain;
	border-radius: 4px;
	box-shadow: 0 40px 120px rgba(0, 0, 0, 0.8);
	transition: opacity 0.3s ease;
}

.evpco-lightbox-caption {
	position: absolute;
	bottom: 1.25rem;
	left: 50%;
	transform: translateX(-50%);
	font-style: italic;
	font-size: 0.82rem;
	color: rgba(255, 255, 255, 0.65);
	text-align: center;
	max-width: 80vw;
	margin: 0;
}

.evpco-lightbox-close,
.evpco-lightbox-prev,
.evpco-lightbox-next {
	position: absolute;
	padding: 0;
	background: rgba(255, 255, 255, 0.1);
	border: 1px solid rgba(255, 255, 255, 0.2);
	border-radius: 50%;
	color: #fff;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	z-index: 10;
	transition: background 0.25s ease, border-color 0.25s ease;
}

.evpco-lightbox-close {
	top: 1.25rem;
	right: 1.25rem;
	width: 2.75rem;
	height: 2.75rem;
	font-size: 1.125rem;
	line-height: 1;
}

.evpco-lightbox-close:hover {
	background: var(--wp--preset--color--rust);
	border-color: var(--wp--preset--color--rust);
}

.evpco-lightbox-prev,
.evpco-lightbox-next {
	top: 50%;
	transform: translateY(-50%);
	width: 3.25rem;
	height: 3.25rem;
	background: rgba(255, 255, 255, 0.08);
	border-color: rgba(255, 255, 255, 0.25);
}

.evpco-lightbox-prev { left: 1.25rem; }
.evpco-lightbox-next { right: 1.25rem; }

.evpco-lightbox-prev:hover,
.evpco-lightbox-next:hover {
	background: rgba(255, 255, 255, 0.22);
	border-color: rgba(255, 255, 255, 0.5);
}

.evpco-lightbox-prev:disabled,
.evpco-lightbox-next:disabled { opacity: 0.3; }

.evpco-lightbox-prev svg,
.evpco-lightbox-next svg {
	width: 1.375rem;
	height: 1.375rem;
	stroke: #fff;
	stroke-width: 2.5;
	fill: none;
	pointer-events: none;
}

.evpco-lightbox-counter {
	position: absolute;
	top: 1.375rem;
	left: 50%;
	transform: translateX(-50%);
	font-size: 0.75rem;
	font-weight: 600;
	color: rgba(255, 255, 255, 0.5);
	letter-spacing: 0.1em;
}

.evpco-lightbox-counter span { color: #fff; }

/* Leaflet controls. Leaflet's stylesheet is injected at runtime so it
   lands after this file; these win on specificity, not !important. */
.evpco-map-gallery .leaflet-container { background: #0d0d0d; }

.evpco-map-gallery .leaflet-control-zoom.leaflet-bar {
	border: none;
	box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
}

.evpco-map-gallery .leaflet-control-zoom a.leaflet-control-zoom-in,
.evpco-map-gallery .leaflet-control-zoom a.leaflet-control-zoom-out {
	width: 2.25rem;
	height: 2.25rem;
	line-height: 2.25rem;
	font-size: 1.125rem;
	background: rgba(17, 16, 16, 0.9);
	color: #fff;
	border: 1px solid rgba(255, 255, 255, 0.1);
}

.evpco-map-gallery .leaflet-control-zoom a.leaflet-control-zoom-in:hover,
.evpco-map-gallery .leaflet-control-zoom a.leaflet-control-zoom-out:hover {
	background: var(--wp--preset--color--rust);
}

/* ---------- Reveal utility ---------- */
.evpwt-js .evpco-fade {
	opacity: 0;
	transform: translateY(20px);
	transition: opacity 0.7s ease, transform 0.7s ease;
}

.evpco-fade.is-visible {
	opacity: 1;
	transform: translateY(0);
}

@keyframes evpcoFadeUp {
	from { opacity: 0; transform: translateY(20px); }
	to   { opacity: 1; transform: translateY(0); }
}

@keyframes evpcoFadeIn {
	from { opacity: 0; }
	to   { opacity: 1; }
}

@keyframes evpcoScrollPulse {
	0%, 100% { transform: scaleY(1); opacity: 0.6; }
	50%      { transform: scaleY(0.7); opacity: 1; }
}

/* ---------- 768 and up ---------- */
@media (min-width: 768px) {
	.evpco-breadcrumbs {
		top: 3.5rem;
		left: 2rem;
		font-size: 0.62rem;
		padding: 0.625rem 1.125rem;
		gap: 0.5rem 0.625rem;
	}
}

/* ---------- 1101 and up: the desktop layout ---------- */
@media (min-width: 1101px) {
	.evpco-hero-content {
		padding: 0 3rem;
		max-width: 68.75rem;
	}

	.evpco-hero-ctas {
		flex-direction: row;
		align-items: center;
		justify-content: center;
	}

	.evpco-breadcrumbs {
		top: 4.375rem;
		left: 3rem;
		font-size: 0.66rem;
		padding: 0.6875rem 1.25rem;
		gap: 0.625rem;
	}

	.evpco-quick-nav-inner {
		justify-content: center;
		overflow-x: visible;
		padding: 0 3rem;
	}

	.evpco-nav-item {
		padding: 1.125rem 1.75rem;
		font-size: 0.68rem;
	}

	.evpco-overview-inner {
		display: grid;
		grid-template-columns: 1fr 27.5rem;
		gap: 5rem;
		padding: 5rem 3rem;
		align-items: start;
	}

	.evpco-overview-left { width: auto; }
	.evpco-sidebar { width: auto; }

	.evpco-desc { font-size: 1.05rem; margin-bottom: 2.25rem; }
	.evpco-tagline { font-size: 1.2rem; margin-bottom: 1.875rem; }

	.evpco-stats {
		grid-template-columns: repeat(4, 1fr);
		margin-bottom: 2rem;
	}

	.evpco-stat {
		border-bottom: none;
		border-right: 1px solid rgba(255, 255, 255, 0.08);
		padding: 1.25rem 1rem;
	}

	.evpco-stat:last-child { border-right: none; }

	/* Roomier minimum with the space to spare. Still auto-fit, because
	   the number of tiles depends on what the destination actually
	   has: anywhere from one to three. */
	.evpco-tiles { grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); }
	.evpco-tile { padding: 1.375rem 0.75rem; min-height: 4.875rem; border-radius: 0.875rem; }
	.evpco-tile-label { font-size: 0.7rem; }

	.evpfx-carousel { position: sticky; top: 5rem; }
	.evpco-card-header { height: 13.75rem; }
	.evpco-card-body { padding: 1.75rem 1.75rem 1.5rem; }
	.evpco-card-title { font-size: 1.4rem; }

	.evpco-map-gallery { flex-direction: row; min-height: 40.625rem; }

	.evpco-map-wrap {
		display: block;
		flex: 0 0 40%;
		max-width: 40%;
		min-height: 40.625rem;
	}

	.evpco-gallery-wrap {
		flex: 0 0 60%;
		max-width: 60%;
		padding: 2.5rem 0;
		justify-content: center;
	}

	.evpco-gallery { padding: 0 3.125rem; }
	.evpco-gallery-slide { aspect-ratio: 16 / 10; }
	.evpco-gallery-nav.prev { left: 3.4375rem; }
	.evpco-gallery-nav.next { right: 3.4375rem; }

	.evpco-gallery-thumbs { gap: 0.75rem; margin-top: 1.125rem; padding: 0 3.125rem; }
	.evpco-gallery-thumb { width: 5.5rem; height: 3.625rem; min-width: 5.5rem; border-radius: 0.625rem; }

	.evpco-mobile-map-link { display: none; }

	.evpco-lightbox-prev { left: 1.75rem; }
	.evpco-lightbox-next { right: 1.75rem; }
}

/* ---------- 1400 and up ---------- */
@media (min-width: 1400px) {
	.evpco-map-gallery { min-height: 46.875rem; }
	.evpco-map-wrap { min-height: 46.875rem; }
	.evpco-gallery { padding: 0 3.75rem; }
	.evpco-gallery-nav.prev { left: 4.0625rem; }
	.evpco-gallery-nav.next { right: 4.0625rem; }
	.evpco-gallery-thumb { width: 6.75rem; height: 4.375rem; min-width: 6.75rem; }
}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
	.evpco-gallery-track,
	.evpco-gallery-slide img,
	.evpco-marker-tooltip,
	.evpco-tile,
	.evpco-tour-card,
	.evpco-btn-primary {
		transition: none;
	}

	.evpwt-js .evpco-fade { transition: none; opacity: 1; transform: none; }

	.evpwt-js .evpco-breadcrumbs,
	.evpwt-js .evpco-hero-badge,
	.evpwt-js .evpco-hero-title,
	.evpwt-js .evpco-hero-subtitle,
	.evpwt-js .evpco-hero-ctas,
	.evpwt-js .evpco-scroll {
		animation: none;
		opacity: 1;
		transform: none;
	}

	.evpco-scroll-line,
	.evpco-pulse-marker,
	.evpco-loc-marker {
		animation: none;
	}

	.evpco-slide { transition: none; }
	.evpco-scroll { transform: translateX(-50%); }
}

/* ==================================================================
   DESTINATION PAGE: TOURS CAROUSEL
   parts/section-destination-tours.php + assets/js/destination-tours.js

   Converted from salvage/destination-page/02-destination-tours.html.
   Removed on the way in: 58 !important, the uniqid prefix, and the
   width:100vw / margin-left:calc(-50vw + 50%) full bleed hack.

   The cards themselves are the homepage tours cards, .destpg-, shared
   rather than restyled. Only the section chrome lives here.
   ================================================================== */
.evpdt {
	position: relative;
	display: block;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 1rem;
	background: var(--wp--preset--color--bg-deep);
	color: #fff;
}

.evpdt *,
.evpdt *::before,
.evpdt *::after {
	box-sizing: border-box;
}

.evpdt-header {
	padding: 4.5rem 5rem 2.5rem;
	border-bottom: 1px solid rgba(255, 255, 255, 0.07);
}

.evpwt-js .evpdt-header {
	opacity: 0;
	transform: translateY(16px);
	transition: opacity 0.6s ease, transform 0.6s ease;
}

.evpdt-header.is-visible {
	opacity: 1;
	transform: translateY(0);
}

.evpdt-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	margin: 0 0 1.25rem;
}

.evpdt-eyebrow::before {
	content: '';
	display: block;
	width: 1.75rem;
	height: 1.5px;
	background: var(--wp--preset--color--rust);
	flex-shrink: 0;
}

.evpdt-title {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.8rem, 5.5vw, 4.4rem);
	font-weight: 400;
	line-height: 1;
	color: #fff;
	margin: 0 0 1.25rem;
}

.evpdt-title em {
	color: var(--wp--preset--color--rust);
	font-style: italic;
}

.evpdt-descriptor {
	font-size: 0.875rem;
	font-weight: 400;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.38);
	max-width: 28.75rem;
	margin: 0;
}

.evpdt-container {
	position: relative;
	z-index: 2;
	width: 100%;
	padding: 2rem 0 1rem;
}

.evpdt-carousel {
	position: relative;
	overflow: hidden;
	width: 100%;
	padding: 0 1rem;
}

.evpdt-carousel:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: -3px;
}

.evpdt-track {
	display: flex;
	gap: 1.25rem;
	padding: 0.75rem 0 1.25rem;
	width: fit-content;
	align-items: stretch;
	transition: transform 0.38s cubic-bezier(0.25, 0.46, 0.45, 0.94);
	will-change: transform;
}

/* With three or fewer cards there is nothing to scroll, so the track
   centres rather than sitting hard left with a gap on the right. */
.evpdt-carousel--few .evpdt-track {
	width: 100%;
	justify-content: center;
	flex-wrap: wrap;
}

.evpdt-controls {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 1.25rem;
	padding: 0.5rem 1rem 0;
}

.evpdt-arrow {
	width: 2.75rem;
	height: 2.75rem;
	min-width: 2.75rem;
	padding: 0;
	background: rgba(255, 255, 255, 0.06);
	border: 1px solid rgba(255, 255, 255, 0.12);
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	transition: background 0.25s ease, border-color 0.25s ease;
}

.evpdt-arrow:hover {
	background: var(--wp--preset--color--rust);
	border-color: var(--wp--preset--color--rust);
}

.evpdt-arrow:disabled {
	opacity: 0.25;
	cursor: not-allowed;
	pointer-events: none;
}

.evpdt-arrow svg {
	width: 1rem;
	height: 1rem;
	stroke: #fff;
	stroke-width: 2.5;
	fill: none;
}

/*
   THE DOTS WRAP, because there is one per page and the page count is
   now the whole catalogue for a country rather than a capped sample.
   Bolivia has fifteen tours, which at 360px is fifteen dots plus two
   arrows on one row: 8px too wide for the viewport, and because the
   dots are built by script it only appeared once the script had run.
   The row is centred, so a wrapped second row still reads as one
   control rather than as a ragged left edge.

   min-width: 0 as well: a flex item defaults to min-width auto, which
   refuses to shrink below its content and is what lets a long row push
   its parent wider instead of wrapping.
*/
.evpdt-dots {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	min-width: 0;
	gap: 0.5rem;
}

.evpdt-dot {
	width: 0.5rem;
	height: 0.5rem;
	min-width: 0.5rem;
	padding: 0;
	border: none;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.2);
	cursor: pointer;
	transition: background 0.3s ease, width 0.3s ease;
}

.evpdt-dot.is-active {
	background: var(--wp--preset--color--rust);
	width: 1.5rem;
	border-radius: 4px;
}

.evpdt-see-all-wrap {
	display: flex;
	justify-content: center;
	padding: 2.5rem 1.25rem 4.5rem;
}

/* Shared button spec. Prominent on purpose: this link is what keeps
   this carousel and /destination/{slug}/tours/ complementary. */
.evpdt-see-all-btn {
	display: inline-flex;
	align-items: center;
	gap: 0.625rem;
	padding: 1rem 2rem;
	background: var(--wp--preset--color--rust);
	color: #fff;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	text-decoration: none;
	border: 2px solid var(--wp--preset--color--rust);
	border-radius: 3.125rem;
	box-shadow: 0 8px 28px rgba(184, 98, 27, 0.4);
	position: relative;
	overflow: hidden;
	transition: all 0.3s ease;
}

.evpdt-see-all-btn::before {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(135deg, var(--wp--preset--color--gold) 0%, var(--wp--preset--color--rust) 100%);
	opacity: 0;
	transition: opacity 0.3s ease;
}

.evpdt-see-all-btn:hover::before { opacity: 1; }

.evpdt-see-all-btn:hover {
	transform: translateY(-3px);
	box-shadow: 0 14px 36px rgba(184, 98, 27, 0.55);
}

.evpdt-see-all-btn > * {
	position: relative;
	z-index: 1;
}

.evpdt-see-all-btn svg {
	width: 0.875rem;
	height: 0.875rem;
	stroke: currentColor;
	fill: none;
	stroke-width: 2.5;
	stroke-linecap: round;
	stroke-linejoin: round;
	transition: transform 0.3s ease;
}

.evpdt-see-all-btn:hover svg { transform: translateX(3px); }

.evpdt-see-all-btn:focus-visible,
.evpdt-arrow:focus-visible,
.evpdt-dot:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

@media (max-width: 1200px) {
	.evpdt-header { padding: 4rem 1.5rem 2rem; }
}

@media (max-width: 768px) {
	.evpdt-header { padding: 3.25rem 1.25rem 1.75rem; }
	.evpdt-container { padding: 1.5rem 0 0.5rem; }
	.evpdt-see-all-wrap { padding: 2rem 1rem 3.25rem; }
	.evpdt-see-all-btn { width: 100%; max-width: 23.75rem; justify-content: center; }
}

@media (prefers-reduced-motion: reduce) {
	.evpdt-track,
	.evpdt-see-all-btn,
	.evpdt-see-all-btn svg,
	.evpdt-arrow,
	.evpdt-dot {
		transition: none;
	}

	.evpwt-js .evpdt-header { transition: none; opacity: 1; transform: none; }
	.evpdt-see-all-btn:hover { transform: none; }
}

/* ==================================================================
   DESTINATION PAGE: LOCATIONS MAP
   parts/section-destination-map.php + assets/js/destination-map.js

   Converted from salvage/destination-page/04-destination-map.html.
   Removed on the way in: 37 !important, the uniqid prefix, and the
   100vw full bleed hack.

   Not the homepage map. That one plots destinations across the world
   and lives in .evp-dest; this plots locations inside one country.
   ================================================================== */
.evpdm {
	position: relative;
	overflow: hidden;
	padding: 4.5rem 0 4rem;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 1rem;
	background: var(--wp--preset--color--bg-deep);
	color: #fff;
}

.evpdm *,
.evpdm *::before,
.evpdm *::after {
	box-sizing: border-box;
}

.evpdm-header {
	position: relative;
	z-index: 1;
	max-width: 87.5rem;
	margin: 0 auto 2rem;
	padding: 0 3rem;
}

.evpwt-js .evpdm-header {
	opacity: 0;
	transform: translateY(16px);
	transition: opacity 0.6s ease, transform 0.6s ease;
}

.evpdm-header.is-visible {
	opacity: 1;
	transform: translateY(0);
}

.evpdm-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	margin: 0 0 1.25rem;
}

.evpdm-eyebrow::before {
	content: '';
	display: block;
	width: 1.75rem;
	height: 1.5px;
	background: var(--wp--preset--color--rust);
	flex-shrink: 0;
}

.evpdm-title {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.2rem, 4.5vw, 3.6rem);
	font-weight: 400;
	line-height: 1.05;
	color: #fff;
	margin: 0;
}

.evpdm-title em {
	color: var(--wp--preset--color--rust);
	font-style: italic;
}

/* ---------- Pills ---------- */
.evpdm-pills-wrap {
	position: relative;
	z-index: 1;
	max-width: 87.5rem;
	margin: 0 auto 1.75rem;
	padding: 0 3rem;
}

.evpdm-pills-label {
	font-size: 0.58rem;
	font-weight: 700;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.35);
	margin: 0 0 0.75rem;
}

.evpdm-pills-row {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	align-items: center;
}

.evpdm-pill {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	padding: 0.5rem 0.875rem;
	background: rgba(255, 255, 255, 0.04);
	border: 1px solid rgba(212, 196, 168, 0.16);
	border-radius: 3.125rem;
	font-family: inherit;
	font-size: 0.7rem;
	font-weight: 500;
	color: rgba(255, 255, 255, 0.72);
	text-decoration: none;
	cursor: pointer;
	white-space: nowrap;
	transition: background 0.25s ease, border-color 0.25s ease, color 0.25s ease;
}

.evpdm-pill:hover {
	background: rgba(184, 98, 27, 0.15);
	border-color: var(--wp--preset--color--rust);
	color: #fff;
}

.evpdm-pill.is-active {
	background: rgba(184, 98, 27, 0.22);
	border-color: var(--wp--preset--color--rust);
	color: #fff;
}

.evpdm-pill-num {
	font-size: 0.58rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	color: var(--wp--preset--color--gold);
	opacity: 0.75;
}

/* ---------- Map ---------- */
.evpdm-map-outer {
	display: none;
	position: relative;
	z-index: 1;
	max-width: 87.5rem;
	margin: 0 auto;
	padding: 0 3rem;
}

.evpdm-map-wrapper {
	position: relative;
	height: 40rem;
	border-radius: 1.5rem;
	overflow: hidden;
	background: #0d0d0d;
	border: 1px solid rgba(212, 196, 168, 0.12);
	box-shadow: 0 24px 72px rgba(0, 0, 0, 0.55);
}

.evpdm-leaflet {
	width: 100%;
	height: 100%;
}

.evpdm-reset-btn {
	position: absolute;
	top: 1rem;
	left: 1rem;
	z-index: 1000;
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	padding: 0.5625rem 0.875rem;
	background: rgba(0, 0, 0, 0.72);
	backdrop-filter: blur(10px);
	border: 1px solid rgba(255, 255, 255, 0.16);
	border-radius: 3.125rem;
	font-family: inherit;
	font-size: 0.6rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	cursor: pointer;
	transition: background 0.25s ease, border-color 0.25s ease, color 0.25s ease;
}

.evpdm-reset-btn:hover {
	background: var(--wp--preset--color--rust);
	border-color: var(--wp--preset--color--rust);
	color: #fff;
}

.evpdm-reset-btn svg {
	width: 0.875rem;
	height: 0.875rem;
	stroke: currentColor;
	stroke-width: 2;
	fill: none;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.evpdm-legend {
	position: absolute;
	bottom: 1.25rem;
	left: 1.25rem;
	z-index: 1000;
	display: flex;
	align-items: center;
	gap: 0.625rem;
	padding: 0.625rem 1rem;
	background: rgba(0, 0, 0, 0.72);
	backdrop-filter: blur(10px);
	border: 1px solid rgba(212, 196, 168, 0.16);
	border-radius: 3.125rem;
}

.evpdm-legend-dot {
	width: 0.625rem;
	height: 0.625rem;
	border-radius: 50%;
	background: var(--wp--preset--color--rust);
	box-shadow: 0 0 12px rgba(184, 98, 27, 0.6);
	flex-shrink: 0;
}

.evpdm-legend-text {
	font-size: 0.62rem;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.62);
}

@keyframes evpdmPulse {
	0%   { box-shadow: 0 0 0 0 rgba(184, 98, 27, 0.7); }
	70%  { box-shadow: 0 0 0 16px rgba(184, 98, 27, 0); }
	100% { box-shadow: 0 0 0 0 rgba(184, 98, 27, 0); }
}

.evpdm-marker-icon {
	background: transparent;
	border: none;
}

.evpdm-marker {
	width: 1.25rem;
	height: 1.25rem;
	background: var(--wp--preset--color--rust);
	border: 3px solid var(--wp--preset--color--gold);
	border-radius: 50%;
	box-shadow: 0 4px 14px rgba(0, 0, 0, 0.4);
	cursor: pointer;
	animation: evpdmPulse 2s ease-out infinite;
	transition: transform 0.2s ease;
}

.evpdm-marker:hover,
.evpdm-marker.is-active { transform: scale(1.2); }

/* ---------- Showcase card ---------- */
.evpdm-showcase {
	position: absolute;
	top: 1rem;
	right: 1rem;
	z-index: 1001;
	width: 20rem;
	background: linear-gradient(145deg, rgba(12, 8, 5, 0.97), rgba(28, 22, 16, 0.97));
	border: 1px solid rgba(212, 196, 168, 0.18);
	border-radius: 1rem;
	overflow: hidden;
	box-shadow: 0 20px 56px rgba(0, 0, 0, 0.6);
	transition: opacity 0.3s ease, transform 0.3s ease;
}

.evpdm-showcase.is-hidden {
	opacity: 0;
	transform: translateY(-8px);
	pointer-events: none;
}

.evpdm-showcase-link {
	position: absolute;
	inset: 0;
	z-index: 1;
}

.evpdm-showcase-link:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: -3px;
}

.evpdm-sc-close {
	position: absolute;
	top: 0.5rem;
	right: 0.5rem;
	z-index: 3;
	width: 1.75rem;
	height: 1.75rem;
	padding: 0;
	background: rgba(0, 0, 0, 0.6);
	border: 1px solid rgba(255, 255, 255, 0.16);
	border-radius: 50%;
	color: rgba(255, 255, 255, 0.7);
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: background 0.2s ease, color 0.2s ease;
}

.evpdm-sc-close:hover {
	background: rgba(255, 255, 255, 0.16);
	color: #fff;
}

.evpdm-sc-close svg {
	width: 0.75rem;
	height: 0.75rem;
	stroke: currentColor;
	stroke-width: 2.5;
	fill: none;
	stroke-linecap: round;
}

.evpdm-sc-img-wrap {
	position: relative;
	height: 9.375rem;
	overflow: hidden;
	background: #000;
}

.evpdm-sc-img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.evpdm-sc-overlay {
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, transparent 40%, rgba(0, 0, 0, 0.75) 100%);
	pointer-events: none;
}

.evpdm-sc-counter {
	position: absolute;
	bottom: 0.625rem;
	left: 0.75rem;
	padding: 0.25rem 0.625rem;
	background: rgba(0, 0, 0, 0.6);
	backdrop-filter: blur(8px);
	border-radius: 1.125rem;
	font-size: 0.65rem;
	font-weight: 600;
	color: #fff;
}

.evpdm-sc-counter span { color: var(--wp--preset--color--gold); }

.evpdm-sc-progress {
	position: absolute;
	bottom: 0;
	left: 0;
	height: 3px;
	width: 0;
	background: linear-gradient(90deg, var(--wp--preset--color--gold), var(--wp--preset--color--rust));
	transition: width 0.1s linear;
}

.evpdm-sc-body { padding: 1rem 1.125rem 1.125rem; }

.evpdm-sc-name {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.15rem;
	font-weight: 500;
	color: #fff;
	line-height: 1.25;
	margin: 0 0 0.625rem;
}

.evpdm-sc-divider,
.evpdm-tt-divider,
.evpdm-mob-divider {
	display: block;
	width: 1.75rem;
	height: 1.5px;
	background: linear-gradient(90deg, var(--wp--preset--color--gold), transparent);
	margin-bottom: 0.625rem;
}

.evpdm-sc-desc {
	font-size: 0.78rem;
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.62);
	margin: 0 0 1rem;
}

.evpdm-sc-footer {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem;
}

.evpdm-sc-dots {
	position: relative;
	z-index: 2;
	display: flex;
	flex-wrap: wrap;
	gap: 0.375rem;
}

.evpdm-sc-dot {
	width: 0.4375rem;
	height: 0.4375rem;
	min-width: 0.4375rem;
	padding: 0;
	border: none;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.22);
	cursor: pointer;
	transition: background 0.3s ease, width 0.3s ease;
}

.evpdm-sc-dot.is-active {
	background: var(--wp--preset--color--rust);
	width: 1.125rem;
	border-radius: 4px;
}

.evpdm-sc-cta {
	display: inline-flex;
	align-items: center;
	gap: 0.375rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	white-space: nowrap;
}

.evpdm-sc-cta svg {
	width: 0.75rem;
	height: 0.75rem;
	stroke: currentColor;
	stroke-width: 2.5;
	fill: none;
	stroke-linecap: round;
	stroke-linejoin: round;
}

/* ---------- Hover tooltip ---------- */
.evpdm-tooltip {
	position: absolute;
	z-index: 1100;
	width: 15rem;
	background: linear-gradient(145deg, rgba(12, 8, 5, 0.98), rgba(28, 22, 16, 0.98));
	border: 1px solid rgba(212, 196, 168, 0.2);
	border-radius: 0.875rem;
	overflow: hidden;
	box-shadow: 0 16px 48px rgba(0, 0, 0, 0.6);
	opacity: 0;
	transform: translateY(6px);
	transition: opacity 0.25s ease, transform 0.25s ease;
	pointer-events: none;
}

.evpdm-tooltip.is-visible {
	opacity: 1;
	transform: translateY(0);
}

.evpdm-tt-img-wrap {
	position: relative;
	height: 6.25rem;
	overflow: hidden;
	background: #000;
}

.evpdm-tt-img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.evpdm-tt-overlay {
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, transparent 45%, rgba(0, 0, 0, 0.7) 100%);
}

.evpdm-tt-body { padding: 0.75rem 0.875rem 0.875rem; }

.evpdm-tt-name {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 0.98rem;
	font-weight: 500;
	color: #fff;
	line-height: 1.25;
	margin: 0 0 0.5rem;
}

.evpdm-tt-desc {
	font-size: 0.72rem;
	line-height: 1.55;
	color: rgba(255, 255, 255, 0.6);
	margin: 0 0 0.625rem;
}

.evpdm-tt-cta {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.5rem;
}

.evpdm-tt-cta-label {
	font-size: 0.58rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evpdm-tt-cta-arrow {
	width: 1.375rem;
	height: 1.375rem;
	background: var(--wp--preset--color--rust);
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
}

.evpdm-tt-cta-arrow svg {
	width: 0.6875rem;
	height: 0.6875rem;
	stroke: #fff;
	stroke-width: 2.5;
	fill: none;
	stroke-linecap: round;
	stroke-linejoin: round;
}

/* ---------- Mobile carousel ---------- */
.evpdm-mobile {
	position: relative;
	z-index: 1;
	padding: 0 1rem;
}

.evpdm-mob-wrap { overflow: hidden; }

.evpdm-mob-track {
	display: flex;
	transition: transform 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.evpdm-mob-card {
	position: relative;
	flex: 0 0 100%;
	background: linear-gradient(145deg, rgba(30, 25, 20, 0.95), rgba(20, 15, 12, 0.98));
	border: 1px solid rgba(212, 196, 168, 0.12);
	border-radius: 1.25rem;
	overflow: hidden;
	box-shadow: 0 16px 48px rgba(0, 0, 0, 0.45);
}

.evpdm-mob-card-link {
	position: absolute;
	inset: 0;
	z-index: 1;
}

.evpdm-mob-card-link:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: -3px;
}

.evpdm-mob-img {
	position: relative;
	height: 12rem;
	overflow: hidden;
	background: #000;
}

.evpdm-mob-img img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.evpdm-mob-body { padding: 1.125rem 1.25rem 1.25rem; }

.evpdm-mob-country {
	font-size: 0.58rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	margin: 0 0 0.375rem;
}

.evpdm-mob-name {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.35rem;
	font-weight: 500;
	color: #fff;
	line-height: 1.2;
	margin: 0 0 0.625rem;
}

.evpdm-mob-desc {
	font-size: 0.82rem;
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.6);
	margin: 0 0 1rem;
}

.evpdm-mob-cta-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem;
	padding-top: 0.75rem;
	border-top: 1px solid rgba(255, 255, 255, 0.08);
}

.evpdm-mob-cta-text {
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evpdm-mob-arrow {
	width: 1.75rem;
	height: 1.75rem;
	background: linear-gradient(135deg, var(--wp--preset--color--gold), var(--wp--preset--color--rust));
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
	color: #fff;
}

.evpdm-mob-arrow svg {
	width: 0.75rem;
	height: 0.75rem;
	stroke: currentColor;
	stroke-width: 2.5;
	fill: none;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.evpdm-mob-nav {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 1rem;
	margin-top: 1.25rem;
}

.evpdm-mob-btn {
	width: 2.5rem;
	height: 2.5rem;
	min-width: 2.5rem;
	padding: 0;
	background: rgba(255, 255, 255, 0.06);
	border: 1px solid rgba(255, 255, 255, 0.12);
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	transition: background 0.25s ease, border-color 0.25s ease;
}

.evpdm-mob-btn:hover {
	background: var(--wp--preset--color--rust);
	border-color: var(--wp--preset--color--rust);
}

.evpdm-mob-btn:disabled {
	opacity: 0.25;
	cursor: not-allowed;
	pointer-events: none;
}

.evpdm-mob-btn svg {
	width: 0.9375rem;
	height: 0.9375rem;
	stroke: #fff;
	stroke-width: 2.5;
	fill: none;
}

.evpdm-mob-dots {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 0.4375rem;
}

.evpdm-mob-dot {
	width: 0.5rem;
	height: 0.5rem;
	min-width: 0.5rem;
	padding: 0;
	border: none;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.2);
	cursor: pointer;
	transition: background 0.3s ease, width 0.3s ease;
}

.evpdm-mob-dot.is-active {
	background: var(--wp--preset--color--rust);
	width: 1.5rem;
	border-radius: 4px;
}

.evpdm-pill:focus-visible,
.evpdm-reset-btn:focus-visible,
.evpdm-sc-close:focus-visible,
.evpdm-sc-dot:focus-visible,
.evpdm-mob-btn:focus-visible,
.evpdm-mob-dot:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

/* Leaflet controls, specificity not !important. */
.evpdm .leaflet-container { background: #0d0d0d; }

.evpdm .leaflet-control-zoom.leaflet-bar {
	border: none;
	box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
}

.evpdm .leaflet-control-zoom a.leaflet-control-zoom-in,
.evpdm .leaflet-control-zoom a.leaflet-control-zoom-out {
	width: 2.25rem;
	height: 2.25rem;
	line-height: 2.25rem;
	font-size: 1.125rem;
	background: rgba(17, 16, 16, 0.9);
	color: #fff;
	border: 1px solid rgba(255, 255, 255, 0.1);
}

.evpdm .leaflet-control-zoom a.leaflet-control-zoom-in:hover,
.evpdm .leaflet-control-zoom a.leaflet-control-zoom-out:hover {
	background: var(--wp--preset--color--rust);
}

/* ---------- 1101 and up: map replaces the mobile carousel ---------- */
@media (min-width: 1101px) {
	.evpdm { padding: 5.5rem 0 5rem; }
	.evpdm-map-outer { display: block; }
	.evpdm-mobile { display: none; }
}

@media (max-width: 1200px) {
	.evpdm-header,
	.evpdm-pills-wrap,
	.evpdm-map-outer { padding-left: 1.5rem; padding-right: 1.5rem; }
}

@media (max-width: 768px) {
	.evpdm { padding: 3.5rem 0 3.5rem; }

	.evpdm-header,
	.evpdm-pills-wrap { padding-left: 1.25rem; padding-right: 1.25rem; }

	/* The pills row scrolls rather than wrapping into a tall block. */
	.evpdm-pills-row {
		flex-wrap: nowrap;
		overflow-x: auto;
		scrollbar-width: none;
		padding-bottom: 0.25rem;
	}

	.evpdm-pills-row::-webkit-scrollbar { display: none; }
}

@media (prefers-reduced-motion: reduce) {
	.evpdm-mob-track,
	.evpdm-tooltip,
	.evpdm-showcase,
	.evpdm-sc-dot,
	.evpdm-mob-dot,
	.evpdm-pill,
	.evpdm-marker {
		transition: none;
	}

	.evpdm-marker { animation: none; }
	.evpwt-js .evpdm-header { transition: none; opacity: 1; transform: none; }
}

/* ==================================================================
   DESTINATION PAGE: STORIES
   parts/section-destination-stories.php

   Converted from salvage/destination-page/06-stories-editorial.html.
   Removed on the way in: 311 !important, every one of them there only
   because the reference scoped each rule to a uniqid id, and the
   width:100vw / margin-left:calc(-50vw + 50%) full bleed hack.

   No JS. The section is static, and content that needs script to
   appear is content a crawler may never see.
   ================================================================== */
.evpds {
	position: relative;
	display: flex;
	flex-direction: column;
	min-height: 37.5rem;
	overflow: hidden;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 1rem;
	color: #fff;
	background: var(--wp--preset--color--bg-deep);
}

.evpds *,
.evpds *::before,
.evpds *::after {
	box-sizing: border-box;
}

/* The featured story's hero image, as the section ground. */
.evpds-bg {
	position: absolute;
	inset: 0;
	z-index: 0;
}

.evpds-bg img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.evpds-bg::after {
	content: '';
	position: absolute;
	inset: 0;
	background:
		linear-gradient(180deg,
			rgba(17, 16, 16, 0.55) 0%,
			rgba(17, 16, 16, 0.30) 30%,
			rgba(17, 16, 16, 0.45) 70%,
			rgba(17, 16, 16, 0.88) 100%),
		linear-gradient(90deg,
			rgba(17, 16, 16, 0.75) 0%,
			rgba(17, 16, 16, 0.25) 55%,
			rgba(17, 16, 16, 0.55) 100%);
	pointer-events: none;
}

.evpds-header {
	position: relative;
	z-index: 2;
	padding: clamp(2.5rem, 5vw, 4.5rem) clamp(1.875rem, 5vw, 5rem) 0;
}

.evpds-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	margin: 0 0 1rem;
}

.evpds-eyebrow::before {
	content: '';
	display: block;
	width: 1.75rem;
	height: 1.5px;
	background: var(--wp--preset--color--gold);
	flex-shrink: 0;
}

.evpds-heading {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.2rem, 4.5vw, 3.6rem);
	font-weight: 400;
	line-height: 1.05;
	color: #fff;
	margin: 0;
	text-shadow: 0 2px 20px rgba(0, 0, 0, 0.5);
}

.evpds-heading em {
	color: var(--wp--preset--color--rust);
	font-style: italic;
}

.evpds-content {
	position: relative;
	z-index: 2;
	flex: 1;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	justify-content: flex-end;
	gap: clamp(2rem, 4vw, 3rem);
	padding: clamp(1.875rem, 4vw, 3.125rem) clamp(1.875rem, 5vw, 5rem) clamp(2.5rem, 5vw, 3.75rem);
}

/* ---------- Featured story ---------- */
.evpds-featured {
	flex: 1;
	min-width: 0;
	max-width: 37.5rem;
}

.evpds-cat {
	display: inline-block;
	padding: 0.375rem 1rem;
	background: var(--wp--preset--color--rust);
	color: #fff;
	border-radius: 1.25rem;
	font-size: 0.65rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	margin-bottom: 1rem;
}

.evpds-feat-title {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.6rem, 3.2vw, 2.6rem);
	font-weight: 500;
	line-height: 1.15;
	color: #fff;
	margin: 0 0 0.875rem;
	text-shadow: 0 2px 16px rgba(0, 0, 0, 0.5);
}

.evpds-feat-title a {
	color: inherit;
	text-decoration: none;
	transition: color 0.25s ease;
}

.evpds-feat-title a:hover { color: var(--wp--preset--color--gold); }

.evpds-feat-meta {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 1.25rem;
	font-size: 0.72rem;
	font-weight: 500;
	color: rgba(255, 255, 255, 0.6);
	margin-bottom: 1rem;
}

.evpds-feat-meta time,
.evpds-feat-meta span {
	display: inline-flex;
	align-items: center;
	gap: 0.4375rem;
}

.evpds-feat-meta svg {
	width: 0.875rem;
	height: 0.875rem;
	stroke: var(--wp--preset--color--gold);
	fill: none;
	flex-shrink: 0;
	opacity: 0.8;
}

.evpds-feat-excerpt {
	font-size: 0.92rem;
	line-height: 1.75;
	color: rgba(255, 255, 255, 0.78);
	margin: 0 0 1.75rem;
	max-width: 34rem;
}

/* Shared button spec. */
.evpds-feat-cta {
	display: inline-flex;
	align-items: center;
	gap: 0.625rem;
	padding: 1rem 2rem;
	background: var(--wp--preset--color--rust);
	color: #fff;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	text-decoration: none;
	border: 2px solid var(--wp--preset--color--rust);
	border-radius: 3.125rem;
	box-shadow: 0 8px 28px rgba(184, 98, 27, 0.4);
	position: relative;
	overflow: hidden;
	transition: all 0.3s ease;
}

.evpds-feat-cta::before {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(135deg, var(--wp--preset--color--gold) 0%, var(--wp--preset--color--rust) 100%);
	opacity: 0;
	transition: opacity 0.3s ease;
}

.evpds-feat-cta:hover::before { opacity: 1; }

.evpds-feat-cta:hover {
	transform: translateY(-3px);
	box-shadow: 0 14px 36px rgba(184, 98, 27, 0.55);
}

.evpds-feat-cta > * {
	position: relative;
	z-index: 1;
}

.evpds-feat-cta svg {
	width: 0.875rem;
	height: 0.875rem;
	stroke: currentColor;
	fill: none;
	stroke-linecap: round;
	stroke-linejoin: round;
	transition: transform 0.3s ease;
}

.evpds-feat-cta:hover svg { transform: translateX(3px); }

/* ---------- Sidebar list ---------- */
.evpds-sidebar {
	width: 100%;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
}

.evpds-sidebar-label {
	font-size: 0.58rem;
	font-weight: 700;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.45);
	margin: 0 0 0.375rem;
}

.evpds-sidebar-card {
	display: flex;
	align-items: center;
	gap: 0.875rem;
	padding: 0.625rem;
	background: rgba(0, 0, 0, 0.4);
	backdrop-filter: blur(10px);
	border: 1px solid rgba(255, 255, 255, 0.08);
	border-radius: 0.875rem;
	text-decoration: none;
	color: inherit;
	transition: background 0.25s ease, border-color 0.25s ease, transform 0.25s ease;
}

.evpds-sidebar-card:hover {
	background: rgba(0, 0, 0, 0.6);
	border-color: rgba(212, 196, 168, 0.3);
	transform: translateX(3px);
}

.evpds-sidebar-thumb {
	display: block;
	width: 4rem;
	height: 4rem;
	border-radius: 0.625rem;
	overflow: hidden;
	flex-shrink: 0;
	background: #000;
}

.evpds-sidebar-thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform 0.4s ease;
}

.evpds-sidebar-card:hover .evpds-sidebar-thumb img { transform: scale(1.1); }

.evpds-sidebar-info {
	display: block;
	flex: 1;
	min-width: 0;
}

.evpds-sidebar-card-title {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 0.95rem;
	font-weight: 500;
	line-height: 1.3;
	color: #fff;
	margin: 0 0 0.375rem;
	/* Two lines, then ellipsis. Titles here run long. */
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.evpds-sidebar-card-meta {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0.625rem;
	font-size: 0.62rem;
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.45);
}

.evpds-sidebar-card-cat { color: var(--wp--preset--color--gold); }

.evpds-sidebar-arrow {
	width: 1rem;
	height: 1rem;
	stroke: rgba(255, 255, 255, 0.35);
	fill: none;
	flex-shrink: 0;
	transition: stroke 0.25s ease, transform 0.25s ease;
}

.evpds-sidebar-card:hover .evpds-sidebar-arrow {
	stroke: var(--wp--preset--color--gold);
	transform: translateX(2px);
}

.evpds-all {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	margin-top: 0.375rem;
	padding: 0.625rem 0.25rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	text-decoration: none;
	align-self: flex-start;
	transition: color 0.25s ease;
}

.evpds-all:hover { color: #fff; }

.evpds-all svg {
	width: 0.8125rem;
	height: 0.8125rem;
	stroke: currentColor;
	fill: none;
	stroke-linecap: round;
	stroke-linejoin: round;
	transition: transform 0.25s ease;
}

.evpds-all:hover svg { transform: translateX(3px); }

.evpds-feat-cta:focus-visible,
.evpds-feat-title a:focus-visible,
.evpds-sidebar-card:focus-visible,
.evpds-all:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

/* ---------- 1024 and up: featured beside the list ---------- */
@media (min-width: 1024px) {
	.evpds-content {
		flex-direction: row;
		align-items: flex-end;
		justify-content: space-between;
		gap: clamp(2.5rem, 6vw, 6.25rem);
	}

	.evpds-sidebar {
		width: 24rem;
		flex-shrink: 0;
	}
}

@media (prefers-reduced-motion: reduce) {
	.evpds-sidebar-card,
	.evpds-sidebar-thumb img,
	.evpds-sidebar-arrow,
	.evpds-feat-cta,
	.evpds-feat-cta svg,
	.evpds-all,
	.evpds-all svg {
		transition: none;
	}

	.evpds-sidebar-card:hover,
	.evpds-feat-cta:hover { transform: none; }

	.evpds-sidebar-card:hover .evpds-sidebar-thumb img { transform: none; }
}

/* ==================================================================
   DESTINATION PAGE: WILDLIFE
   parts/section-destination-wildlife.php
   + assets/js/destination-wildlife.js

   Converted from salvage/destination-page/07-wildlife-fauna.html.
   Removed on the way in: 20 !important, the uniqid prefix, and three
   100vw uses.

   Cards are articles, not anchors. The fauna post type is not publicly
   queryable, so a species has no URL to link to.
   ================================================================== */
.evpdw {
	position: relative;
	padding: 4.5rem 0 4rem;
	overflow: hidden;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 1rem;
	color: #fff;
	background: var(--wp--preset--color--bg-deep);
}

.evpdw *,
.evpdw *::before,
.evpdw *::after {
	box-sizing: border-box;
}

.evpdw-header {
	max-width: 87.5rem;
	margin: 0 auto 2rem;
	padding: 0 3rem;
}

.evpwt-js .evpdw-header {
	opacity: 0;
	transform: translateY(16px);
	transition: opacity 0.6s ease, transform 0.6s ease;
}

.evpdw-header.is-visible {
	opacity: 1;
	transform: translateY(0);
}

.evpdw-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	margin: 0 0 1.25rem;
}

.evpdw-eyebrow::before {
	content: '';
	display: block;
	width: 1.75rem;
	height: 1.5px;
	background: var(--wp--preset--color--rust);
	flex-shrink: 0;
}

.evpdw-title {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.2rem, 4.5vw, 3.6rem);
	font-weight: 400;
	line-height: 1.05;
	color: #fff;
	margin: 0;
}

.evpdw-title em {
	color: var(--wp--preset--color--rust);
	font-style: italic;
}

/* ---------- Carousel ---------- */
.evpdw-carousel-outer {
	max-width: 87.5rem;
	margin: 0 auto;
}

.evpdw-carousel {
	position: relative;
	overflow: hidden;
	width: 100%;
	padding: 0 3rem;
}

.evpdw-carousel:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: -3px;
}

.evpdw-track {
	display: flex;
	gap: 1.5rem;
	padding: 1rem 0.25rem 1.75rem;
	width: fit-content;
	align-items: stretch;
	transition: transform 0.38s cubic-bezier(0.25, 0.46, 0.45, 0.94);
	will-change: transform;
}

/* Three or fewer never overflow, so the row centres instead of sitting
   hard left with dead space beside it. */
.evpdw-carousel--few .evpdw-track {
	width: 100%;
	justify-content: center;
	flex-wrap: wrap;
}

.evpdw-card {
	position: relative;
	flex: 0 0 18.75rem;
	max-width: 18.75rem;
	min-width: 18.75rem;
	display: flex;
	flex-direction: column;
	background: linear-gradient(145deg, rgba(12, 8, 5, 0.98) 0%, rgba(28, 22, 16, 0.98) 100%);
	border: 1px solid rgba(212, 196, 168, 0.12);
	border-radius: 1.25rem;
	overflow: hidden;
	box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
	transition: transform 0.35s ease, box-shadow 0.35s ease, border-color 0.35s ease;
}

.evpdw-card:hover {
	transform: translateY(-4px);
	border-color: rgba(212, 196, 168, 0.3);
	box-shadow: 0 18px 44px rgba(0, 0, 0, 0.5);
}

.evpdw-card-img-wrap {
	position: relative;
	height: 13.125rem;
	overflow: hidden;
	background: #0a0706;
	flex-shrink: 0;
}

.evpdw-card-img-wrap img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform 0.6s ease;
}

.evpdw-card:hover .evpdw-card-img-wrap img { transform: scale(1.06); }

.evpdw-card-img-wrap::after {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, transparent 45%, rgba(0, 0, 0, 0.7) 100%);
	pointer-events: none;
}

/* ---------- IUCN badge ----------
   Coloured by the Red List's own scale, from the tokens in :root, so
   the eight categories cannot pick up eight one-off hex values. */
.evpdw-badge {
	position: absolute;
	bottom: 0.75rem;
	right: 0.75rem;
	z-index: 3;
	padding: 0.3125rem 0.75rem;
	border-radius: 3.125rem;
	font-size: 0.6rem;
	font-weight: 700;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: #fff;
	background: var(--ev-iucn-dd);
	box-shadow: 0 4px 14px rgba(0, 0, 0, 0.45);
}

.evpdw-badge--lc { background: var(--ev-iucn-lc); }
.evpdw-badge--nt { background: var(--ev-iucn-nt); }
.evpdw-badge--vu { background: var(--ev-iucn-vu); color: #1a1000; }
.evpdw-badge--en { background: var(--ev-iucn-en); }
.evpdw-badge--cr { background: var(--ev-iucn-cr); }
.evpdw-badge--ew { background: var(--ev-iucn-ew); }
.evpdw-badge--ex { background: var(--ev-iucn-ex); }
.evpdw-badge--dd { background: var(--ev-iucn-dd); }

.evpdw-card-body {
	display: flex;
	flex-direction: column;
	flex: 1;
	padding: 1.375rem 1.375rem 1.25rem;
}

.evpdw-card-name {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.45rem;
	font-weight: 500;
	line-height: 1.2;
	color: #fff;
	margin: 0 0 0.3125rem;
}

.evpdw-card-sci {
	font-size: 0.8rem;
	color: var(--wp--preset--color--gold);
	opacity: 0.85;
	margin: 0 0 0.75rem;
}

.evpdw-card-sci em { font-style: italic; }

.evpdw-card-divider {
	display: block;
	width: 1.75rem;
	height: 1.5px;
	background: linear-gradient(90deg, var(--wp--preset--color--gold), transparent);
	margin-bottom: 0.875rem;
}

.evpdw-card-desc {
	font-size: 0.82rem;
	line-height: 1.65;
	color: rgba(255, 255, 255, 0.62);
	margin: 0;
}

/* ---------- Controls ---------- */
.evpdw-controls {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 1rem;
	padding: 0.5rem 3rem 0;
}

.evpdw-nav-btn {
	width: 2.75rem;
	height: 2.75rem;
	min-width: 2.75rem;
	padding: 0;
	background: rgba(255, 255, 255, 0.06);
	border: 1px solid rgba(255, 255, 255, 0.12);
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	transition: background 0.25s ease, border-color 0.25s ease;
}

.evpdw-nav-btn:hover {
	background: var(--wp--preset--color--rust);
	border-color: var(--wp--preset--color--rust);
}

.evpdw-nav-btn:disabled {
	opacity: 0.25;
	cursor: not-allowed;
	pointer-events: none;
}

.evpdw-nav-btn svg {
	width: 1rem;
	height: 1rem;
	stroke: #fff;
	stroke-width: 2.5;
	fill: none;
}

.evpdw-dots {
	display: flex;
	align-items: center;
	gap: 0.5rem;
}

.evpdw-dot {
	width: 0.5rem;
	height: 0.5rem;
	min-width: 0.5rem;
	padding: 0;
	border: none;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.2);
	cursor: pointer;
	transition: background 0.3s ease, width 0.3s ease;
}

.evpdw-dot.is-active {
	background: var(--wp--preset--color--rust);
	width: 1.5rem;
	border-radius: 4px;
}

.evpdw-count {
	font-size: 0.78rem;
	font-weight: 600;
	color: rgba(255, 255, 255, 0.45);
	min-width: 3rem;
	text-align: center;
}

.evpdw-count span { color: #fff; }

.evpdw-nav-btn:focus-visible,
.evpdw-dot:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

@media (max-width: 1200px) {
	.evpdw-header,
	.evpdw-carousel,
	.evpdw-controls { padding-left: 1.5rem; padding-right: 1.5rem; }
}

@media (max-width: 768px) {
	.evpdw { padding: 3.5rem 0 3.5rem; }

	.evpdw-header,
	.evpdw-carousel,
	.evpdw-controls { padding-left: 1.25rem; padding-right: 1.25rem; }

	.evpdw-track { gap: 0.875rem; padding: 0.25rem 0 0.5rem; }

	.evpdw-card {
		flex-basis: 17rem;
		max-width: 17rem;
		min-width: 17rem;
	}
}

@media (prefers-reduced-motion: reduce) {
	.evpdw-track,
	.evpdw-card,
	.evpdw-card-img-wrap img,
	.evpdw-nav-btn,
	.evpdw-dot {
		transition: none;
	}

	.evpdw-card:hover { transform: none; }
	.evpdw-card:hover .evpdw-card-img-wrap img { transform: none; }
	.evpwt-js .evpdw-header { transition: none; opacity: 1; transform: none; }
}

/* ==================================================================
   DESTINATION PAGE: WHEN TO GO
   parts/section-when-to-go.php + assets/js/when-to-go.js

   Converted from salvage/destination-page/05-when-to-go.html, minus
   its location carousel. That per-location seasonality was dropped in
   favour of country level data, so the loc-card rules are not here.

   Removed on the way in: the uniqid prefix on every selector and the
   !important that came with it, and the 100vw hack.
   ================================================================== */
.evpwtg {
	position: relative;
	padding: 4.5rem 0 4rem;
	overflow: hidden;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 1rem;
	color: #fff;
	background: var(--wp--preset--color--bg-deep);
}

.evpwtg *,
.evpwtg *::before,
.evpwtg *::after {
	box-sizing: border-box;
}

.evpwtg-inner {
	max-width: 87.5rem;
	margin: 0 auto;
	padding: 0 3rem;
}

.evpwtg-sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* ---------- Header ---------- */
.evpwtg-header { margin-bottom: 2.5rem; }

.evpwt-js .evpwtg-header {
	opacity: 0;
	transform: translateY(16px);
	transition: opacity 0.6s ease, transform 0.6s ease;
}

.evpwtg-header.is-visible {
	opacity: 1;
	transform: translateY(0);
}

.evpwtg-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	margin: 0 0 1.25rem;
}

.evpwtg-eyebrow::before {
	content: '';
	display: block;
	width: 1.75rem;
	height: 1.5px;
	background: var(--wp--preset--color--rust);
	flex-shrink: 0;
}

.evpwtg-title {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.2rem, 4.5vw, 3.6rem);
	font-weight: 400;
	line-height: 1.05;
	color: #fff;
	margin: 0 0 1.25rem;
}

.evpwtg-title em {
	color: var(--wp--preset--color--rust);
	font-style: italic;
}

.evpwtg-descriptor {
	font-size: 0.875rem;
	font-weight: 400;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.38);
	max-width: 28.75rem;
	margin: 0;
}

/* ---------- Month timeline ---------- */
.evpwtg-timeline { margin-bottom: 2rem; }

.evpwtg-months {
	display: flex;
	gap: 0.5rem;
	overflow-x: auto;
	scrollbar-width: none;
	padding-bottom: 0.25rem;
}

.evpwtg-months::-webkit-scrollbar { display: none; }

.evpwtg-month {
	flex: 1 1 0;
	min-width: 4rem;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0.5rem;
	padding: 0.875rem 0.5rem;
	background: rgba(255, 255, 255, 0.03);
	border: 1px solid rgba(212, 196, 168, 0.1);
	border-radius: 0.75rem;
	font-family: inherit;
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.55);
	cursor: pointer;
	transition: background 0.25s ease, border-color 0.25s ease, color 0.25s ease, transform 0.25s ease;
}

.evpwtg-month:hover:not(:disabled) {
	background: rgba(255, 255, 255, 0.06);
	border-color: rgba(212, 196, 168, 0.28);
	color: #fff;
	transform: translateY(-2px);
}

.evpwtg-month.is-active {
	background: rgba(184, 98, 27, 0.18);
	border-color: var(--wp--preset--color--rust);
	color: #fff;
}

/* A month with no row is inert but still occupies its slot, so the
   strip is twelve wide on every destination. */
.evpwtg-month.is-empty {
	opacity: 0.3;
	cursor: default;
}

.evpwtg-month-dot {
	width: 0.4375rem;
	height: 0.4375rem;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.18);
	flex-shrink: 0;
}

.evpwtg-month[data-rating="peak"] .evpwtg-month-dot {
	background: var(--ev-season-peak);
	box-shadow: 0 0 6px rgba(184, 98, 27, 0.55);
}

.evpwtg-month[data-rating="great"]      .evpwtg-month-dot { background: var(--ev-season-great); }
.evpwtg-month[data-rating="good"]       .evpwtg-month-dot { background: var(--ev-season-good); }
.evpwtg-month[data-rating="shoulder"]   .evpwtg-month-dot { background: var(--ev-season-shoulder); }
.evpwtg-month[data-rating="off_season"] .evpwtg-month-dot { background: var(--ev-season-off); }

.evpwtg-swipe-hint {
	display: none;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	margin: 0.75rem 0 0;
	font-size: 0.6rem;
	font-weight: 600;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.3);
}

.evpwtg-swipe-hint svg {
	width: 0.875rem;
	height: 0.875rem;
	stroke: currentColor;
	fill: none;
	stroke-linecap: round;
	stroke-linejoin: round;
}

/* ---------- Showcase panel ---------- */
.evpwtg-showcase {
	position: relative;
	overflow: hidden;
	padding: 2.25rem 2rem 2rem;
	background: linear-gradient(145deg, rgba(12, 8, 5, 0.97) 0%, rgba(28, 22, 16, 0.97) 100%);
	border: 1px solid rgba(212, 196, 168, 0.12);
	border-radius: 1.25rem;
	box-shadow: 0 16px 48px rgba(0, 0, 0, 0.45);
}

.evpwtg-showcase:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

/* The photograph, when the month has one. Optional by design: a
   destination can ship twelve images, borrow from its gallery, or have
   neither and let the ghosted abbreviation carry the panel. */
.evpwtg-showcase-img {
	position: relative;
	margin: -2.25rem -2rem 1.5rem;
	height: 14rem;
	overflow: hidden;
	background: #000;
}

/* Slides, not one picture. The month's panel rotates through every
   location sitting at the month's top rating, cross fading on opacity
   the way the tour overview carousel does. One location at that rating
   means one slide and nothing moves. */
.evpwtg-showcase-slide {
	position: absolute;
	inset: 0;
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	opacity: 0;
	transition: opacity 1.1s ease;
}

.evpwtg-showcase-slide.is-active {
	opacity: 1;
}

.evpwtg-showcase-img::after {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(12, 8, 5, 0.25) 0%, rgba(12, 8, 5, 0.85) 100%);
	pointer-events: none;
}

/* Without a photograph the ghosted abbreviation is the panel's only
   visual anchor, so it sits large and top right. With one it steps
   back out of the way. */
.evpwtg-showcase-month-bg {
	position: absolute;
	top: -1.5rem;
	right: 1rem;
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(6rem, 16vw, 12rem);
	font-weight: 400;
	line-height: 1;
	color: rgba(212, 196, 168, 0.05);
	pointer-events: none;
	user-select: none;
}

.evpwtg-showcase-content {
	position: relative;
	z-index: 1;
}

.evpwtg-showcase-top {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0.875rem;
	margin-bottom: 0.875rem;
}

.evpwtg-showcase-month {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.8rem, 3.4vw, 2.6rem);
	font-weight: 500;
	line-height: 1.1;
	color: #fff;
	margin: 0;
}

.evpwtg-showcase-badge {
	display: inline-flex;
	align-items: center;
	gap: 0.375rem;
	padding: 0.3125rem 0.75rem;
	border-radius: 3.125rem;
	font-size: 0.6rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: #fff;
	background: var(--ev-season-off);
}

.evpwtg-showcase-badge svg {
	width: 0.625rem;
	height: 0.625rem;
	fill: currentColor;
	flex-shrink: 0;
}

.evpwtg-showcase-badge--peak       { background: var(--ev-season-peak); }
.evpwtg-showcase-badge--great      { background: var(--ev-season-great); color: #1a1000; }
.evpwtg-showcase-badge--good       { background: var(--ev-season-good); }
.evpwtg-showcase-badge--shoulder   { background: var(--ev-season-shoulder); }
.evpwtg-showcase-badge--off_season { background: var(--ev-season-off); }

.evpwtg-showcase-divider {
	display: block;
	width: 1.75rem;
	height: 1.5px;
	background: linear-gradient(90deg, var(--wp--preset--color--gold), transparent);
	margin-bottom: 1rem;
}

.evpwtg-locations-label {
	margin: 0 0 1.25rem;
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.45);
}

/*
   The location cards. These are the capture's, restored: the first
   build of this section dropped them because the destination carried
   its own seasonality and there was nothing per location to show.

   IT DOES PAGE, and the note that used to sit here saying it did not
   was wrong. Three cards fit at desktop width and a month can list
   twelve, so a plain scroll-snap track with a hidden scrollbar left
   everything past the third unreachable: no arrows, no dots, nothing
   to drag. Guyana shipped that way and its September panel offered
   five places and showed two and a half.

   Restored from the capture, which had the whole thing: arrows that
   hide at the ends rather than sitting there disabled, dots that
   rebuild when the month changes, and a page count that follows the
   breakpoint. See assets/js/when-to-go.js.
*/
.evpwtg-carousel {
	position: relative;
}

/*
   Inset rather than hung outside the track. The capture put these at
   left/right -23px, which works inside Elementor's padded column and
   would hang off the viewport here, where the showcase content has no
   horizontal padding of its own at 360.
*/
.evpwtg-arrow {
	position: absolute;
	top: calc(50% - 1.5rem);
	z-index: 2;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.875rem;
	height: 2.875rem;
	padding: 0;
	font: inherit;
	color: var(--wp--preset--color--gold);
	background: rgba(20, 18, 16, 0.82);
	border: 1px solid rgba(212, 196, 168, 0.15);
	border-radius: 50%;
	cursor: pointer;
	transition: background 0.25s ease, border-color 0.25s ease, opacity 0.25s ease;
}

.evpwtg-arrow--prev {
	left: 0.5rem;
}

.evpwtg-arrow--next {
	right: 0.5rem;
}

.evpwtg-arrow svg {
	display: block;
	width: 1rem;
	height: 1rem;
}

.evpwtg-arrow:hover {
	background: var(--wp--preset--color--rust);
	border-color: var(--wp--preset--color--rust);
	color: #fff;
}

/*
   Hidden, not disabled. A disabled control at the end of a strip is
   still a tab stop that does nothing; this one leaves the tab order.
*/
.evpwtg-arrow.is-hidden {
	display: none;
}

.evpwtg-dots {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	max-width: 100%;
	margin-top: 0.5rem;
}

/*
   The visible dot is 0.5rem and the button around it is 2.75rem, which
   is the touch target. Same treatment as .destpg-dot on this page, so
   the two carousels on one screen do not disagree. Wrapping matters:
   one dot per page and a page of one card on a phone means a month
   with twelve places is twelve dots.
*/
.evpwtg-dot {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	min-width: 2.75rem;
	height: 2.75rem;
	min-height: 2.75rem;
	padding: 0;
	margin: 0;
	font: inherit;
	background: transparent;
	border: none;
	cursor: pointer;
	-webkit-tap-highlight-color: rgba(184, 98, 27, 0.3);
}

.evpwtg-dot::before {
	content: '';
	width: 0.5rem;
	height: 0.5rem;
	background: rgba(212, 196, 168, 0.2);
	border-radius: 50%;
	transition: background 0.3s ease, width 0.3s ease, border-radius 0.3s ease;
}

.evpwtg-dot:hover::before {
	background: rgba(212, 196, 168, 0.4);
}

.evpwtg-dot.is-active::before {
	width: 1.5rem;
	background: var(--wp--preset--color--rust);
	border-radius: 0.25rem;
}

.evpwtg-arrow:focus-visible,
.evpwtg-dot:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

.evpwtg-loc-track {
	display: flex;
	gap: 1.25rem;
	margin: 0;
	padding: 0.25rem 0 0.5rem;
	list-style: none;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
}

.evpwtg-loc-track::-webkit-scrollbar {
	display: none;
}

.evpwtg-loc-item {
	display: flex;
	flex: 0 0 calc((100% - 2.5rem) / 3);
	max-width: calc((100% - 2.5rem) / 3);
	scroll-snap-align: start;
}

.evpwtg-loc-card {
	position: relative;
	display: flex;
	flex-direction: column;
	width: 100%;
	overflow: hidden;
	border: 1px solid rgba(212, 196, 168, 0.14);
	border-radius: 1.125rem;
	background: rgba(255, 255, 255, 0.03);
	transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), border-color 0.35s ease;
}

.evpwtg-loc-card:hover {
	border-color: rgba(212, 196, 168, 0.3);
	transform: translateY(-0.25rem);
}

/* One link over the whole card, and the only one in it. */
.evpwtg-loc-link {
	position: absolute;
	inset: 0;
	z-index: 2;
}

.evpwtg-loc-link:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

.evpwtg-loc-img {
	flex-shrink: 0;
	height: 10.625rem;
	overflow: hidden;
	background: #0d0d0d;
}

.evpwtg-loc-img img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.6s ease;
}

.evpwtg-loc-card:hover .evpwtg-loc-img img {
	transform: scale(1.05);
}

.evpwtg-loc-body {
	display: flex;
	flex: 1;
	flex-direction: column;
	padding: 1.25rem 1.375rem 1.375rem;
}

.evpwtg-loc-top {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 0.75rem;
	margin-bottom: 0.75rem;
}

.evpwtg-loc-name {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.1rem;
	font-weight: 500;
	line-height: 1.25;
	color: #fff;
}

/* The card's own rating, which is the one that is actually about this
   place. It borrows the showcase badge colours so the country badge
   above and the location badges below cannot drift apart. */
.evpwtg-loc-badge {
	flex-shrink: 0;
	padding: 0.2rem 0.55rem;
	border-radius: 3.125rem;
	font-size: 0.58rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	white-space: nowrap;
}

.evpwtg-loc-season {
	display: flex;
	align-items: center;
	gap: 0.3125rem;
	margin: 0 0 0.75rem;
	font-size: 0.72rem;
	font-weight: 600;
	letter-spacing: 0.04em;
	color: var(--ev-rust-text);
}

.evpwtg-loc-season svg {
	flex-shrink: 0;
	width: 0.8rem;
	height: 0.8rem;
}

.evpwtg-loc-meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.875rem;
	margin-bottom: 0.75rem;
}

.evpwtg-loc-weather {
	display: flex;
	align-items: center;
	gap: 0.3125rem;
	font-size: 0.72rem;
	font-weight: 500;
	color: rgba(255, 255, 255, 0.5);
}

.evpwtg-loc-weather svg {
	flex-shrink: 0;
	width: 0.8rem;
	height: 0.8rem;
}

/* Two lines. Season descriptions are 35 to 50 words by the content
   rules, which is a paragraph, and this is a card. */
.evpwtg-loc-desc {
	display: -webkit-box;
	-webkit-line-clamp: 2;
	line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
	margin: 0 0 0.875rem;
	font-size: 0.8rem;
	line-height: 1.65;
	color: rgba(255, 255, 255, 0.68);
}

.evpwtg-loc-more {
	display: inline-flex;
	align-items: center;
	gap: 0.375rem;
	margin-top: auto;
	padding-top: 1rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evpwtg-loc-more svg {
	width: 0.85rem;
	height: 0.85rem;
	transition: transform 0.25s ease;
}

.evpwtg-loc-card:hover .evpwtg-loc-more svg {
	transform: translateX(0.2rem);
}

/* ---------- Location cards: breakpoints ---------- */
@media (max-width: 1024px) {
	.evpwtg-loc-item {
		flex: 0 0 calc((100% - 1.25rem) / 2);
		max-width: calc((100% - 1.25rem) / 2);
	}
}

@media (max-width: 768px) {
	.evpwtg-loc-item {
		flex: 0 0 78%;
		max-width: 78%;
	}
}

@media (max-width: 480px) {
	.evpwtg-loc-item {
		flex: 0 0 88%;
		max-width: 88%;
	}
}

@media (prefers-reduced-motion: reduce) {
	.evpwtg-loc-card,
	.evpwtg-loc-img img,
	.evpwtg-loc-more svg {
		transition: none;
	}

	.evpwtg-loc-card:hover,
	.evpwtg-loc-card:hover .evpwtg-loc-img img,
	.evpwtg-loc-card:hover .evpwtg-loc-more svg {
		transform: none;
	}

	.evpwtg-loc-track {
		scroll-behavior: auto;
	}

	.evpwtg-arrow,
	.evpwtg-dot::before {
		transition: none;
	}
}

@media (prefers-contrast: more) {
	.evpwtg-loc-card {
		border-color: #fff;
	}

	.evpwtg-loc-desc,
	.evpwtg-loc-weather,
	.evpwtg-locations-label {
		color: #fff;
	}
}

/* ---------- Legend ---------- */
.evpwtg-legend {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 1.25rem;
	margin-top: 2.5rem;
	padding: 1rem 1.5rem;
	background: rgba(255, 255, 255, 0.025);
	border: 1px solid rgba(212, 196, 168, 0.06);
	border-radius: 0.75rem;
}

.evpwtg-legend-item {
	display: inline-flex;
	align-items: center;
	gap: 0.4375rem;
	font-size: 0.65rem;
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.45);
}

.evpwtg-legend-dot {
	width: 0.4375rem;
	height: 0.4375rem;
	border-radius: 50%;
	flex-shrink: 0;
}

.evpwtg-legend-dot--peak {
	background: var(--ev-season-peak);
	box-shadow: 0 0 6px rgba(184, 98, 27, 0.5);
}

.evpwtg-legend-dot--great      { background: var(--ev-season-great); }
.evpwtg-legend-dot--good       { background: var(--ev-season-good); }
.evpwtg-legend-dot--shoulder   { background: var(--ev-season-shoulder); }
.evpwtg-legend-dot--off_season { background: var(--ev-season-off); }

.evpwtg-month:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

/* ---------- 1024 and up: the image becomes a column ---------- */
@media (min-width: 1024px) {
	/*
	 * THE PANEL'S OWN PADDING IS WHY THE PICTURE SAT INSET.
	 * This used to zero padding-left only, so the grid's content box
	 * still started 2.25rem below the panel's top edge and ended 2rem
	 * above its bottom. height: 100% then filled a track that was
	 * already short, and the panel showed above and below the image.
	 * The capture pads the content, not the panel, and so does this now:
	 * the panel keeps only its right padding and the text column carries
	 * the vertical rhythm.
	 */
	.evpwtg-showcase--has-image {
		display: grid;
		grid-template-columns: 42% 1fr;
		gap: 2.25rem;
		align-items: stretch;
		padding: 0 2rem 0 0;
	}

	/*
	 * THE FADE IS A MASK, NOT A GRADIENT OVERLAY.
	 * The capture faded the image's right edge into a flat --card-bg
	 * with an ::after. This panel's background is a 145deg gradient
	 * rather than a flat colour, so any literal an overlay faded to
	 * would match at one point down the edge and seam everywhere else.
	 * Masking the column instead lets the panel's real background show
	 * through the fade, which cannot disagree with itself.
	 *
	 * 75% is the owner's "roughly a quarter of the image column",
	 * expressed as a share of the column so it holds at every width.
	 * The capture's 80px was about an eighth of it.
	 */
	.evpwtg-showcase--has-image .evpwtg-showcase-img {
		margin: 0;
		height: 100%;
		min-height: 20rem;
		-webkit-mask-image: linear-gradient(to right, #000 0, #000 75%, transparent 100%);
		mask-image: linear-gradient(to right, #000 0, #000 75%, transparent 100%);
	}

	.evpwtg-showcase--has-image .evpwtg-showcase-img::after {
		background: linear-gradient(90deg, rgba(12, 8, 5, 0.15) 0%, rgba(12, 8, 5, 0.55) 100%);
	}

	/* The vertical padding the panel gave up, so the text keeps the
	   rhythm it had while the picture runs edge to edge. */
	.evpwtg-showcase--has-image .evpwtg-showcase-content {
		padding: 2.25rem 0 2rem;
	}

	.evpwtg-showcase--has-image .evpwtg-showcase-month-bg {
		top: -1rem;
		right: 1.5rem;
		font-size: clamp(5rem, 9vw, 8rem);
	}
}

@media (max-width: 1200px) {
	.evpwtg-inner { padding: 0 1.5rem; }
}

@media (max-width: 768px) {
	.evpwtg { padding: 3.5rem 0 3.5rem; }
	.evpwtg-inner { padding: 0 1.25rem; }

	/* The strip scrolls rather than squeezing twelve months into a
	   phone width. */
	.evpwtg-month {
		flex: 0 0 4.25rem;
		min-width: 4.25rem;
	}

	.evpwtg-swipe-hint { display: flex; }

	.evpwtg-showcase { padding: 1.75rem 1.25rem 1.5rem; }
	.evpwtg-showcase-img { margin: -1.75rem -1.25rem 1.25rem; height: 11rem; }
	.evpwtg-showcase-month-bg { top: -1rem; right: 0.5rem; }
	.evpwtg-legend { gap: 0.875rem; padding: 0.875rem 1rem; }
}

@media (prefers-reduced-motion: reduce) {
	.evpwtg-month { transition: none; }
	.evpwtg-month:hover:not(:disabled) { transform: none; }
	.evpwt-js .evpwtg-header { transition: none; opacity: 1; transform: none; }

	/* The script does not rotate at all here, so this is only belt and
	   braces for the one swap it still makes: dropping a slide whose
	   file is missing and promoting the next. */
	.evpwtg-showcase-slide { transition: none; }
}

/* ==================================================================
   SINGLE TOUR, PASS 1
   Hero, highlights carousel, overview and the enquiry modal.
   Rebuilt from salvage/tour-page/01, 02, 03 and the 03-06 shared
   style block. Colours come from theme.json presets and the :root
   tokens above; nothing here redeclares a brand hex.
   ================================================================== */

/* Difficulty, as a four step scale rather than a colour picked per
   section. The reference set Moderate to the brand rust with an inline
   style, which leaves nothing to say Challenging with: this walks
   green, amber, rust, red so the four values are actually separable. */
:root {
	--ev-diff-easy: #6B8F50;
	--ev-diff-moderate: #C4A046;
	--ev-diff-challenging: #B8621B;
	--ev-diff-extreme: #b3331f;
}

/* Body scroll lock while a modal is open. Set by script, cleared by
   script, and scoped to a class so nothing else can leave the page
   unscrollable. */
.evp-scroll-locked {
	overflow: hidden;
}

/* ---------- Tour hero ---------- */

.evpth {
	position: relative;
	display: grid;
	grid-template-columns: 45% 55%;
	min-height: 100vh;
	min-height: 100svh;
	overflow: hidden;
	font-family: var(--wp--preset--font-family--montserrat);
	background: var(--wp--preset--color--bg-deep);
	color: #fff;
}

.evpth *,
.evpth *::before,
.evpth *::after {
	box-sizing: border-box;
}

.evpth-content {
	position: relative;
	z-index: 5;
	display: flex;
	flex-direction: column;
	justify-content: center;
	padding: 5rem 3.75rem 5rem 5rem;
	background: var(--wp--preset--color--bg-deep);
	overflow: hidden;
}

/* The faint diagonal hatch behind the copy. */
.evpth-content::before {
	content: '';
	position: absolute;
	inset: 0;
	background-image: repeating-linear-gradient(
		-45deg,
		transparent,
		transparent 1.75rem,
		rgba(212, 196, 168, 0.018) 1.75rem,
		rgba(212, 196, 168, 0.018) 1.8125rem
	);
	pointer-events: none;
}

.evpth-content > * {
	position: relative;
	z-index: 1;
}

.evpth-breadcrumbs {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem;
	margin: 0 0 1.5rem;
	font-size: 0.72rem;
	letter-spacing: 0.04em;
	color: rgba(255, 255, 255, 0.5);
}

.evpth-breadcrumbs a {
	color: rgba(255, 255, 255, 0.7);
	text-decoration: none;
	transition: color 0.25s ease;
}

.evpth-breadcrumbs a:hover {
	color: var(--wp--preset--color--gold);
}

.evpth-breadcrumbs-sep {
	color: rgba(255, 255, 255, 0.28);
}

.evpth-breadcrumbs-current {
	color: var(--wp--preset--color--gold);
}

.evpth-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.625rem;
	margin: 0 0 0.875rem;
	font-size: 0.6rem;
	font-weight: 700;
	letter-spacing: 0.26em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
}

.evpth-eyebrow::before {
	content: '';
	display: block;
	flex-shrink: 0;
	width: 1.5rem;
	height: 0.09375rem;
	background: var(--wp--preset--color--rust);
}

.evpth-sale {
	display: inline-flex;
	align-items: center;
	gap: 0.4375rem;
	width: fit-content;
	margin: 0 0 1rem;
	padding: 0.3125rem 0.875rem;
	border-radius: 3.125rem;
	background: var(--ev-sale-gold);
	color: var(--ev-sale-dark);
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	box-shadow: 0 0.25rem 1.125rem rgba(232, 184, 75, 0.35);
}

.evpth-sale::before {
	content: '\2736';
	font-size: 0.75em;
}

.evpth-title {
	margin: 0 0 1.25rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.5rem, 4.6vw, 4rem);
	font-weight: 400;
	line-height: 1.05;
	color: #fff;
}

.evpth-rule {
	display: block;
	width: 1.875rem;
	height: 0.09375rem;
	margin: 0 0 1.125rem;
	background: linear-gradient(90deg, var(--wp--preset--color--gold), transparent);
}

.evpth-stats {
	display: flex;
	align-items: center;
	gap: 1.75rem;
	margin: 0 0 1.375rem;
}

.evpth-stat-label {
	margin-bottom: 0.3125rem;
	font-size: 0.56rem;
	font-weight: 700;
	letter-spacing: 0.26em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	opacity: 0.7;
}

.evpth-stat-value {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.35rem;
	font-weight: 400;
	line-height: 1;
	color: #fff;
}

.evpth-stat-value s {
	margin-right: 0.375rem;
	font-size: 0.75em;
	color: rgba(255, 255, 255, 0.35);
}

.evpth-stat-divider {
	flex-shrink: 0;
	width: 1px;
	height: 2.125rem;
	background: linear-gradient(180deg, transparent, rgba(212, 196, 168, 0.45), transparent);
}

.evpth-subtitle {
	max-width: 27.5rem;
	margin: 0 0 2.375rem;
	font-size: clamp(0.88rem, 1.4vw, 1rem);
	font-weight: 300;
	line-height: 1.78;
	color: var(--ev-soft);
}

.evpth-cta {
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
}

.evpth-cta-row {
	display: flex;
	gap: 0.75rem;
}

.evpth-btn {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5625rem;
	padding: 0.875rem 1.625rem;
	border: none;
	border-radius: 3.125rem;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	text-decoration: none;
	white-space: nowrap;
	cursor: pointer;
	overflow: hidden;
	transition: transform 0.28s ease, box-shadow 0.28s ease, border-color 0.28s ease, color 0.28s ease, background 0.28s ease;
}

.evpth-btn > * {
	position: relative;
	z-index: 1;
}

.evpth-btn svg {
	flex-shrink: 0;
	width: 0.9375rem;
	height: 0.9375rem;
	transition: transform 0.28s ease;
}

.evpth-btn:hover svg {
	transform: translateX(0.1875rem);
}

.evpth-btn-primary {
	flex: 1;
	border: 2px solid var(--wp--preset--color--rust);
	background: var(--wp--preset--color--rust);
	color: #fff;
	box-shadow: 0 0.5rem 1.625rem rgba(184, 98, 27, 0.42);
}

.evpth-btn-primary::before {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(135deg, var(--wp--preset--color--gold-light) 0%, var(--wp--preset--color--rust) 70%);
	opacity: 0;
	transition: opacity 0.28s ease;
}

.evpth-btn-primary:hover::before {
	opacity: 1;
}

.evpth-btn-primary:hover {
	transform: translateY(-0.125rem);
	box-shadow: 0 0.875rem 2rem rgba(184, 98, 27, 0.52);
}

.evpth-btn-primary svg {
	fill: #fff;
}

.evpth-btn-secondary {
	flex: 1;
	border: 0.09375rem solid rgba(255, 255, 255, 0.28);
	background: transparent;
	color: rgba(255, 255, 255, 0.82);
}

.evpth-btn-secondary:hover {
	border-color: rgba(212, 196, 168, 0.65);
	background: rgba(212, 196, 168, 0.06);
	color: var(--wp--preset--color--gold-light);
}

.evpth-btn-secondary svg {
	fill: rgba(255, 255, 255, 0.7);
}

.evpth-btn-secondary:hover svg {
	fill: var(--wp--preset--color--gold-light);
}

.evpth-btn:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: 0.25rem;
}

/* A tour with no pictures at all. One column rather than a 55% band
   of empty background where the slideshow would have been. */
.evpth--nomedia {
	display: block;
	min-height: 0;
}

.evpth--nomedia .evpth-content {
	max-width: 60rem;
	margin: 0 auto;
	padding-top: 7rem;
	padding-bottom: 7rem;
}

/* Media panel. */
.evpth-media {
	position: relative;
	overflow: hidden;
	background: var(--wp--preset--color--bg-deep);
}

.evpth-slide {
	position: absolute;
	inset: 0;
	opacity: 0;
	transition: opacity 1.4s ease;
	will-change: opacity;
}

.evpth-slide.is-active {
	opacity: 1;
}

.evpth-slide-img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center 30%;
}

/* Feathered edge into the copy panel, and a floor gradient. */
.evpth-media::before {
	content: '';
	position: absolute;
	inset: 0;
	z-index: 2;
	pointer-events: none;
	background: linear-gradient(
		90deg,
		var(--wp--preset--color--bg-deep) 0%,
		rgba(17, 16, 16, 0.88) 4%,
		rgba(17, 16, 16, 0.28) 14%,
		rgba(17, 16, 16, 0.05) 26%,
		transparent 38%
	);
}

.evpth-media::after {
	content: '';
	position: absolute;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 2;
	height: 32%;
	pointer-events: none;
	background: linear-gradient(to top, rgba(17, 16, 16, 0.48), transparent);
}

.evpth-dots {
	position: absolute;
	bottom: 1.25rem;
	left: 50%;
	z-index: 5;
	display: flex;
	gap: 0.4375rem;
	transform: translateX(-50%);
}

.evpth-dot {
	width: 0.5rem;
	height: 0.5rem;
	padding: 0;
	border: none;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.28);
	cursor: pointer;
	transition: background 0.4s ease, transform 0.4s ease;
}

.evpth-dot.is-active {
	background: var(--wp--preset--color--gold);
	transform: scale(1.4);
}

.evpth-dot:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 0.1875rem;
}

.evpth-progress {
	position: absolute;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 6;
	height: 0.1875rem;
	background: rgba(255, 255, 255, 0.07);
}

.evpth-progress-bar {
	width: 0;
	height: 100%;
	background: linear-gradient(90deg, var(--wp--preset--color--gold), var(--wp--preset--color--rust));
	transition: width 0.05s linear;
}

/* The entrance animation is opt in behind a no-preference query, so
   the resting state of every element here is visible. Starting at
   opacity 0 and relying on an animation to undo it is how a section
   ends up invisible when something upstream does not run. */
@media (prefers-reduced-motion: no-preference) {
	.evpth-eyebrow,
	.evpth-sale,
	.evpth-title,
	.evpth-rule,
	.evpth-stats,
	.evpth-subtitle,
	.evpth-cta {
		animation: evpth-rise 0.8s ease-out backwards;
	}

	.evpth-eyebrow  { animation-delay: 0.2s; }
	.evpth-sale     { animation-delay: 0.35s; }
	.evpth-title    { animation-delay: 0.45s; }
	.evpth-rule     { animation-delay: 0.6s; }
	.evpth-stats    { animation-delay: 0.65s; }
	.evpth-subtitle { animation-delay: 0.75s; }
	.evpth-cta      { animation-delay: 0.9s; }
}

@keyframes evpth-rise {
	from {
		opacity: 0;
		transform: translateY(0.75rem);
	}

	to {
		opacity: 1;
		transform: translateY(0);
	}
}

/* ---------- Tour highlights ---------- */

.evptd {
	position: relative;
	display: block;
	padding: 4.5rem 0 4rem;
	overflow-x: hidden;
	font-family: var(--wp--preset--font-family--montserrat);
	background: var(--wp--preset--color--bg-deep);
}

.evptd *,
.evptd *::before,
.evptd *::after {
	box-sizing: border-box;
}

.evptd-header {
	margin-bottom: 0.5rem;
	padding: 0 1.25rem 2.5rem;
	border-bottom: 1px solid rgba(255, 255, 255, 0.07);
}

.evptd-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0 0 1.25rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
}

.evptd-eyebrow::before {
	content: '';
	display: block;
	flex-shrink: 0;
	width: 1.75rem;
	height: 0.09375rem;
	background: var(--wp--preset--color--rust);
}

.evptd-title {
	margin: 0 0 1rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.8rem, 5.5vw, 4.4rem);
	font-weight: 400;
	line-height: 1;
	color: #fff;
}

.evptd-title em {
	font-style: italic;
	color: var(--wp--preset--color--rust);
}

.evptd-descriptor {
	max-width: 28.75rem;
	margin: 0;
	font-size: 0.875rem;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.38);
}

/* The entrance is a CSS animation, not a class a script adds. Gating
   it on .evpwt-js would mean "the page has JavaScript", which is not
   the same as "this section's script loaded and ran". The difference
   is what left the tour cards at opacity 0 on the destination page. */
@media (prefers-reduced-motion: no-preference) {
	.evptd-eyebrow,
	.evptd-title,
	.evptd-descriptor {
		animation: evpth-rise 0.7s ease-out backwards;
	}

	.evptd-title      { animation-delay: 0.1s; }
	.evptd-descriptor { animation-delay: 0.2s; }
}

.evptd-carousel-wrap {
	position: relative;
	padding: 1rem 0 1.5rem;
}

.evptd-carousel {
	position: relative;
	padding: 0 1.25rem;
	overflow: hidden;
}

.evptd-carousel:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: -3px;
}

.evptd-track {
	display: flex;
	gap: 1.125rem;
	align-items: stretch;
	transition: transform 0.42s cubic-bezier(0.25, 0.46, 0.45, 0.94);
	will-change: transform;
}

/* With three or fewer cards there is nothing to scroll to, so the
   track centres rather than sitting hard left. */
.evptd-carousel--few .evptd-track {
	flex-wrap: wrap;
	justify-content: center;
}

/* Edge fades, driven by the same two facts as the arrows. */
.evptd-carousel::before,
.evptd-carousel::after {
	content: '';
	position: absolute;
	top: 0;
	bottom: 0;
	z-index: 3;
	width: 2.5rem;
	pointer-events: none;
	transition: opacity 0.3s ease;
}

.evptd-carousel::before {
	left: 0;
	background: linear-gradient(to right, var(--wp--preset--color--bg-deep), transparent);
	opacity: 0;
}

.evptd-carousel.has-prev::before {
	opacity: 1;
}

.evptd-carousel::after {
	right: 0;
	background: linear-gradient(to left, var(--wp--preset--color--bg-deep), transparent);
	opacity: 1;
}

.evptd-carousel.at-end::after,
.evptd-carousel--few::after {
	opacity: 0;
}

.evptd-arrow {
	position: absolute;
	top: 50%;
	z-index: 4;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	padding: 0;
	border: 1px solid rgba(212, 196, 168, 0.25);
	border-radius: 50%;
	background: rgba(17, 16, 16, 0.72);
	color: var(--wp--preset--color--gold);
	cursor: pointer;
	transform: translateY(-50%);
	transition: background 0.3s ease, border-color 0.3s ease, opacity 0.3s ease;
}

.evptd-arrow.prev { left: 0.5rem; }
.evptd-arrow.next { right: 0.5rem; }

.evptd-arrow svg {
	width: 1.125rem;
	height: 1.125rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.evptd-arrow:hover:not(:disabled) {
	border-color: var(--wp--preset--color--rust);
	background: var(--wp--preset--color--rust);
	color: #fff;
}

.evptd-arrow:disabled {
	opacity: 0.28;
	cursor: default;
}

.evptd-arrow:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

.evptd-card {
	position: relative;
	display: flex;
	flex: 0 0 17.5rem;
	flex-direction: column;
	min-width: 17.5rem;
	max-width: 17.5rem;
	border: 1px solid rgba(212, 196, 168, 0.12);
	border-radius: 1.25rem;
	background: rgba(30, 25, 20, 0.95);
	box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.45);
	overflow: hidden;
	transition: transform 0.4s ease, box-shadow 0.4s ease, border-color 0.4s ease;
}

.evptd-card:hover {
	border-color: rgba(184, 98, 27, 0.35);
	box-shadow: 0 1.5rem 4rem rgba(184, 98, 27, 0.25);
	transform: translateY(-0.375rem);
}

.evptd-card-img {
	position: relative;
	flex-shrink: 0;
	height: 16.25rem;
	overflow: hidden;
	background: #0d0d0d;
}

.evptd-card-img img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.5s ease;
}

.evptd-card:hover .evptd-card-img img {
	transform: scale(1.04);
}

.evptd-card-body {
	display: flex;
	flex: 1;
	align-items: flex-end;
	padding: 1.25rem 1.25rem 1.375rem;
}

/* No picture yet, so the heading is the card and needs the room the
   image would have taken. */
.evptd-card--textonly .evptd-card-body {
	min-height: 9rem;
	align-items: center;
}

.evptd-card-title {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.15rem;
	font-weight: 400;
	line-height: 1.3;
	color: #fff;
}

/* ---------- Tour overview ---------- */

.evpto {
	position: relative;
	display: block;
	overflow: hidden;
	font-family: var(--wp--preset--font-family--montserrat);
	background: var(--wp--preset--color--bg-deep);
	color: rgba(255, 255, 255, 0.78);
}

.evpto *,
.evpto *::before,
.evpto *::after {
	box-sizing: border-box;
}

.evpto-content {
	width: 100%;
	max-width: 87.5rem;
	margin: 0 auto;
	padding: 5rem clamp(1.25rem, 5vw, 5rem);
}

.evpto-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0 0 1.25rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
}

.evpto-eyebrow::before {
	content: '';
	display: block;
	flex-shrink: 0;
	width: 1.75rem;
	height: 0.09375rem;
	background: var(--wp--preset--color--rust);
}

.evpto-title {
	margin: 0 0 1rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.8rem, 5.5vw, 4.4rem);
	font-weight: 400;
	line-height: 1;
	color: #fff;
}

.evpto-subtitle {
	margin: 0 0 1.5rem 0.125rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-style: italic;
	font-size: clamp(0.95rem, 2.5vw, 1.2rem);
	line-height: 1.5;
	color: var(--wp--preset--color--gold);
	opacity: 0.85;
}

.evpto-stats {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	margin-bottom: 2.25rem;
	border: 1px solid rgba(212, 196, 168, 0.14);
	border-radius: 1rem;
	background: linear-gradient(180deg, rgba(255, 255, 255, 0.025) 0%, rgba(255, 255, 255, 0.005) 100%);
	overflow: hidden;
}

.evpto-stat {
	position: relative;
	padding: 1.375rem;
	border-right: 1px solid rgba(212, 196, 168, 0.08);
	border-bottom: 1px solid rgba(212, 196, 168, 0.08);
	transition: background 0.3s ease;
}

.evpto-stat:hover {
	background: rgba(212, 196, 168, 0.04);
}

.evpto-stat:nth-child(even) {
	border-right: none;
}

.evpto-stat:nth-last-child(-n + 2) {
	border-bottom: none;
}

.evpto-stat.on-sale {
	border-top: 2px solid var(--ev-sale-gold);
	background: linear-gradient(135deg, rgba(232, 184, 75, 0.08) 0%, rgba(232, 184, 75, 0.03) 100%);
}

.evpto-stat-label {
	margin-bottom: 0.5rem;
	font-size: 0.6rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	opacity: 0.7;
}

.evpto-stat-value {
	font-size: 1.05rem;
	font-weight: 600;
	line-height: 1.3;
	color: #fff;
}

.evpto-difficulty--easy        { color: var(--ev-diff-easy); }
.evpto-difficulty--moderate    { color: var(--ev-diff-moderate); }
.evpto-difficulty--challenging { color: var(--ev-diff-challenging); }
.evpto-difficulty--extreme     { color: var(--ev-diff-extreme); }

.evpto-sale-price-row {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem;
}

.evpto-sale-price-new {
	font-size: 0.95em;
	font-weight: 700;
	line-height: 1.2;
	color: var(--ev-sale-gold);
}

.evpto-sale-badge {
	display: inline-flex;
	align-items: center;
	padding: 0.125rem 0.5rem;
	border-radius: 3.125rem;
	background: var(--ev-sale-gold);
	color: var(--ev-sale-dark);
	font-size: 0.56em;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	white-space: nowrap;
}

.evpto-sale-price-was {
	display: block;
	margin-top: 0.0625rem;
	font-size: 0.75em;
	font-weight: 500;
	color: rgba(255, 255, 255, 0.45);
	text-decoration: line-through;
}

.evpto-body {
	display: grid;
	grid-template-columns: 1fr;
	align-items: start;
	margin-bottom: 2.25rem;
}

.evpto-body--has-carousel {
	grid-template-columns: 1fr 30rem;
	gap: 3.5rem;
}

/*
   THE DESKTOP STEP, which was missing. The capture carries a
   min-width: 1101px block over these base rules and without it the
   section stops at its tablet appearance on every screen:

     the stats bar stays the 2x2 its base rule builds, instead of
     becoming a single row of four with vertical rules between
     the image column stays at its base 480px and 56px gap instead of
     stepping up to 540px and 64px, which is why it reads narrow
     the standfirst stays at its base size

   1101 rather than 1100 or 1024 because that is the capture's own
   number, and the base rules below it are correct as they are.
*/
@media (min-width: 1101px) {
	.evpto-stats {
		grid-template-columns: repeat(4, 1fr);
		margin-bottom: 2.25rem;
	}

	.evpto-stat {
		padding: 1.25rem 1rem;
		border-right: 1px solid rgba(255, 255, 255, 0.08);
		border-bottom: none;
	}

	/*
	   The base rules strip the right border on every even cell and the
	   bottom border on the last two, which is what a 2x2 needs. In one
	   row only the last cell loses its right border, so both have to be
	   put back before that is applied.
	*/
	.evpto-stat:nth-child(even) {
		border-right: 1px solid rgba(255, 255, 255, 0.08);
	}

	.evpto-stat:nth-last-child(-n + 2) {
		border-bottom: none;
	}

	.evpto-stat:last-child {
		border-right: none;
	}

	.evpto-body--has-carousel {
		grid-template-columns: 1fr 33.75rem;
		gap: 4rem;
	}
}

.evpto-desc {
	max-width: 45rem;
	font-size: 0.95rem;
	line-height: 1.85;
	color: rgba(255, 255, 255, 0.78);
}

/* The capture's 1101 step, kept here so it lands after the base above. */
@media (min-width: 1101px) {
	.evpto-desc {
		font-size: 1.05rem;
	}
}

.evpto-desc p {
	margin: 0 0 0.75em;
}

.evpto-desc p:last-child {
	margin-bottom: 0;
}

.evpto-desc strong {
	font-weight: 600;
	color: var(--wp--preset--color--gold-light);
}

.evpto-carousel {
	position: relative;
	aspect-ratio: 3 / 2;
	width: 100%;
	border-radius: 1rem;
	background: #0d0d0d;
	overflow: hidden;
}

.evpto-carousel-slide {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	opacity: 0;
	transition: opacity 1.1s ease;
}

.evpto-carousel-slide.is-active {
	opacity: 1;
}

.evpto-cta-wrap {
	display: flex;
	justify-content: flex-start;
}

.evpto-cta-btn {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.625rem;
	padding: 1rem 2rem;
	border: 2px solid var(--wp--preset--color--rust);
	border-radius: 3.125rem;
	background: var(--wp--preset--color--rust);
	color: #fff;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	text-decoration: none;
	cursor: pointer;
	overflow: hidden;
	box-shadow: 0 0.5rem 1.625rem rgba(184, 98, 27, 0.42);
	transition: transform 0.28s ease, box-shadow 0.28s ease;
}

.evpto-cta-btn > * {
	position: relative;
	z-index: 1;
}

.evpto-cta-btn::before {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(135deg, var(--wp--preset--color--gold-light) 0%, var(--wp--preset--color--rust) 70%);
	opacity: 0;
	transition: opacity 0.28s ease;
}

.evpto-cta-btn:hover::before {
	opacity: 1;
}

.evpto-cta-btn:hover {
	transform: translateY(-0.125rem);
	box-shadow: 0 0.875rem 2rem rgba(184, 98, 27, 0.52);
}

.evpto-cta-btn svg {
	width: 1rem;
	height: 1rem;
	fill: currentColor;
}

.evpto-cta-btn:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: 0.25rem;
}

/* ---------- Enquiry modal ---------- */

.evpto-modal-overlay {
	position: fixed;
	inset: 0;
	z-index: 9000;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 1.25rem;
	background: rgba(8, 8, 8, 0.78);
	-webkit-backdrop-filter: blur(0.25rem);
	backdrop-filter: blur(0.25rem);
	overflow-y: auto;
}

.evpto-modal {
	position: relative;
	width: 100%;
	max-width: 33.75rem;
	max-height: calc(100vh - 2.5rem);
	padding: 2.5rem 2.25rem 2.25rem;
	border-radius: 1.25rem;
	background: #fdfcfa;
	color: #1a1a1a;
	box-shadow: 0 1.75rem 5rem rgba(0, 0, 0, 0.5);
	overflow-y: auto;
}

.evpto-modal-close {
	position: absolute;
	top: 0.875rem;
	right: 0.875rem;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.25rem;
	height: 2.25rem;
	padding: 0;
	border: none;
	border-radius: 50%;
	background: rgba(26, 26, 26, 0.06);
	color: #1a1a1a;
	cursor: pointer;
	transition: background 0.25s ease;
}

.evpto-modal-close:hover {
	background: rgba(26, 26, 26, 0.14);
}

.evpto-modal-close svg {
	width: 1.125rem;
	height: 1.125rem;
	fill: currentColor;
}

.evpto-modal-header {
	margin-bottom: 1.5rem;
	padding-right: 2.25rem;
}

.evpto-modal-title {
	margin: 0 0 0.5rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.75rem;
	font-weight: 400;
	line-height: 1.2;
	color: #1a1a1a;
}

.evpto-modal-subtitle {
	margin: 0;
	font-size: 0.85rem;
	line-height: 1.6;
	color: rgba(44, 62, 80, 0.75);
}

.evpto-form-group {
	margin-bottom: 1rem;
}

.evpto-form-label {
	display: block;
	margin-bottom: 0.375rem;
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: rgba(26, 26, 26, 0.7);
}

.evpto-form-required {
	color: var(--wp--preset--color--rust);
}

.evpto-form-input,
.evpto-form-textarea {
	width: 100%;
	padding: 0.75rem 0.875rem;
	border: 1px solid rgba(26, 26, 26, 0.18);
	border-radius: 0.625rem;
	background: #fff;
	color: #1a1a1a;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.9rem;
	transition: border-color 0.25s ease, box-shadow 0.25s ease;
}

.evpto-form-textarea {
	resize: vertical;
	line-height: 1.6;
}

.evpto-form-input:focus,
.evpto-form-textarea:focus {
	outline: none;
	border-color: var(--wp--preset--color--rust);
	box-shadow: 0 0 0 0.1875rem rgba(184, 98, 27, 0.16);
}

.evpto-form-error {
	margin: 0 0 1rem;
	padding: 0.75rem 0.875rem;
	border: 1px solid rgba(179, 51, 31, 0.3);
	border-radius: 0.625rem;
	background: rgba(179, 51, 31, 0.08);
	color: #8c2718;
	font-size: 0.85rem;
	line-height: 1.5;
}

.evpto-form-buttons {
	display: flex;
	gap: 0.75rem;
	margin-top: 1.25rem;
}

.evpto-modal-btn {
	flex: 1;
	padding: 0.875rem 1.25rem;
	border: none;
	border-radius: 3.125rem;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	cursor: pointer;
	transition: background 0.25s ease, color 0.25s ease, opacity 0.25s ease;
}

.evpto-modal-btn-primary {
	background: var(--wp--preset--color--rust);
	color: #fff;
}

.evpto-modal-btn-primary:hover {
	background: var(--wp--preset--color--rust-dark);
}

.evpto-modal-btn-primary:disabled {
	opacity: 0.55;
	cursor: default;
}

.evpto-modal-btn-secondary {
	border: 1px solid rgba(26, 26, 26, 0.2);
	background: transparent;
	color: rgba(26, 26, 26, 0.75);
}

.evpto-modal-btn-secondary:hover {
	background: rgba(26, 26, 26, 0.05);
}

.evpto-modal-btn:focus-visible,
.evpto-modal-close:focus-visible {
	outline: 3px solid var(--wp--preset--color--rust);
	outline-offset: 2px;
}

.evpto-form-done {
	padding: 1.25rem 0.625rem 0.625rem;
	text-align: center;
}

.evpto-form-done-mark {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 3.75rem;
	height: 3.75rem;
	margin: 0 auto 1.25rem;
	border-radius: 50%;
	background: linear-gradient(135deg, var(--wp--preset--color--gold) 0%, var(--wp--preset--color--rust) 100%);
	color: #fff;
	font-size: 1.5rem;
}

.evpto-form-done-title {
	margin: 0 0 0.75rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.5rem;
	font-weight: 400;
	color: #1a1a1a;
}

.evpto-form-done-text {
	margin: 0 0 1.75rem;
	font-size: 0.9rem;
	line-height: 1.6;
	color: rgba(44, 62, 80, 0.8);
}

/* ---------- Tour page: below 1024 ---------- */

@media (max-width: 1024px) {
	.evpto-body--has-carousel {
		grid-template-columns: 1fr;
		gap: 2rem;
	}

	.evpto-carousel {
		max-width: 34rem;
	}
}

/* ---------- Tour page: below 900, hero stacks ---------- */

@media (max-width: 900px) {
	.evpth {
		display: block;
		min-height: 100vh;
		min-height: 100svh;
	}

	/* The slideshow becomes the background of the whole section. */
	.evpth-media {
		position: absolute;
		inset: 0;
		z-index: 0;
	}

	.evpth-media::before {
		background: linear-gradient(
			180deg,
			rgba(10, 10, 10, 0.2) 0%,
			rgba(10, 10, 10, 0.18) 28%,
			rgba(10, 10, 10, 0.55) 52%,
			rgba(10, 10, 10, 0.84) 72%,
			rgba(10, 10, 10, 0.97) 100%
		);
	}

	.evpth-media::after {
		display: none;
	}

	.evpth-dots {
		display: none;
	}

	.evpth-content {
		display: flex;
		min-height: 100vh;
		min-height: 100svh;
		padding: 5rem 1.5rem calc(2.875rem + env(safe-area-inset-bottom, 0px));
		justify-content: flex-start;
		align-items: center;
		text-align: center;
		background: transparent;
	}

	.evpth-content::before {
		display: none;
	}

	.evpth-breadcrumbs {
		justify-content: center;
	}

	/* Auto margins split the free space so the title block floats
	   centred while the stats and buttons anchor to the bottom. */
	.evpth-eyebrow {
		justify-content: center;
		margin-top: auto;
		margin-bottom: 0.75rem;
		color: var(--wp--preset--color--gold);
	}

	.evpth-eyebrow::before {
		width: 1.625rem;
		background: linear-gradient(90deg, transparent, var(--wp--preset--color--gold));
	}

	.evpth-eyebrow::after {
		content: '';
		display: block;
		flex-shrink: 0;
		width: 1.625rem;
		height: 0.09375rem;
		background: linear-gradient(90deg, var(--wp--preset--color--gold), transparent);
	}

	.evpth-sale {
		margin-right: auto;
		margin-left: auto;
	}

	.evpth-title {
		margin-bottom: 0.875rem;
		font-size: clamp(2.6rem, 10vw, 3.9rem);
		line-height: 1.06;
		text-shadow: 0 0.125rem 1.75rem rgba(0, 0, 0, 0.6);
	}

	.evpth-rule {
		width: 2.375rem;
		margin: 0.125rem auto 0;
		background: linear-gradient(90deg, transparent, var(--wp--preset--color--gold), transparent);
	}

	/* Frosted pill bar, so labels stay readable over any photograph. */
	.evpth-stats {
		width: 100%;
		max-width: 25rem;
		gap: 0;
		margin: auto 0 1rem;
		padding: 0;
		border: 1px solid rgba(212, 196, 168, 0.16);
		border-radius: 0.875rem;
		background: rgba(10, 10, 10, 0.5);
		-webkit-backdrop-filter: blur(1rem);
		backdrop-filter: blur(1rem);
		align-items: stretch;
		justify-content: center;
		overflow: hidden;
	}

	.evpth-stat {
		flex: 1;
		padding: 0.8125rem 0.625rem;
		text-align: center;
	}

	.evpth-stat-label {
		margin-bottom: 0.25rem;
		font-size: 0.5rem;
		letter-spacing: 0.17em;
	}

	.evpth-stat-value {
		font-size: 1.08rem;
	}

	.evpth-stat-divider {
		width: 1px;
		height: auto;
		margin: 0.625rem 0;
		align-self: stretch;
		background: rgba(212, 196, 168, 0.16);
	}

	/* Recovers the vertical room the stats bar takes. */
	.evpth-subtitle {
		display: none;
	}

	.evpth-cta {
		width: 100%;
		max-width: 25rem;
		gap: 0.625rem;
	}

	.evpth-btn-primary {
		width: 100%;
		flex: none;
		min-height: 3.25rem;
		padding: 0.9375rem 1.5rem;
		font-size: 0.72rem;
		letter-spacing: 0.16em;
	}

	.evpth-btn-secondary {
		flex: 1;
		min-width: 0;
		min-height: 3rem;
		padding: 0.8125rem 0.625rem;
		font-size: 0.65rem;
		letter-spacing: 0.12em;
	}

	.evpth-btn-secondary svg {
		display: none;
	}
}

/* ---------- Tour page: below 768 ---------- */

@media (max-width: 768px) {
	.evptd {
		padding: 3.5rem 0 3rem;
	}

	.evptd-header {
		padding: 0 1rem 2rem;
	}

	.evptd-card {
		flex: 0 0 82vw;
		min-width: 82vw;
		max-width: 82vw;
	}

	.evptd-card-img {
		height: 13.125rem;
	}

	.evpto-content {
		padding: 3.5rem 1.25rem;
	}

	.evpto-stats {
		grid-template-columns: 1fr;
	}

	.evpto-stat {
		border-right: none;
	}

	.evpto-stat:nth-last-child(-n + 2) {
		border-bottom: 1px solid rgba(212, 196, 168, 0.08);
	}

	.evpto-stat:last-child {
		border-bottom: none;
	}

	.evpto-cta-wrap {
		justify-content: stretch;
	}

	.evpto-cta-btn {
		width: 100%;
	}

	.evpto-modal {
		padding: 2rem 1.25rem 1.5rem;
	}

	.evpto-form-buttons {
		flex-direction: column-reverse;
	}
}

/* ---------- Tour page: below 480 ---------- */

@media (max-width: 480px) {
	.evpth-content {
		padding: 4.75rem 1rem calc(2.625rem + env(safe-area-inset-bottom, 0px));
	}

	.evpth-title {
		font-size: clamp(2.4rem, 11.5vw, 3.4rem);
	}

	.evpth-stat-label {
		font-size: 0.46rem;
		letter-spacing: 0.13em;
	}

	.evpth-stat-value {
		font-size: 0.95rem;
	}

	.evptd-card {
		flex: 0 0 88vw;
		min-width: 88vw;
		max-width: 88vw;
	}
}

/* ---------- Tour page: reduced motion ---------- */

@media (prefers-reduced-motion: reduce) {
	.evpth-slide,
	.evpth-dot,
	.evpth-progress-bar,
	.evptd-track,
	.evptd-card,
	.evptd-card-img img,
	.evpto-carousel-slide,
	.evpto-cta-btn {
		transition: none;
	}

	.evpth-btn:hover,
	.evpto-cta-btn:hover,
	.evptd-card:hover {
		transform: none;
	}
}

/* ==================================================================
   

/* ---------- Inclusions ---------- */

.evptc {
	/* Top padding matches the itinerary panel, the other tab panel that
	   carries a full header. It was absent along with the header rules
	   themselves, so the eyebrow sat flush against the tab strip. */
	padding-top: clamp(3rem, 6vw, 4.5rem);
	padding-bottom: 4.5rem;
}

.evptc-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1.5rem;
	max-width: 87.5rem;
	margin: 0 auto;
	padding: 0 clamp(1.25rem, 5vw, 5rem);
	align-items: start;
}

.evptc-card {
	padding: 1.75rem;
	border: 1px solid rgba(212, 196, 168, 0.14);
	border-radius: 1.25rem;
	background: rgba(30, 25, 20, 0.72);
}

.evptc-card-head {
	display: flex;
	align-items: center;
	gap: 0.875rem;
	margin-bottom: 1.25rem;
	padding-bottom: 1rem;
	border-bottom: 1px solid rgba(212, 196, 168, 0.1);
}

.evptc-card-icon {
	display: flex;
	flex-shrink: 0;
	align-items: center;
	justify-content: center;
	width: 2.25rem;
	height: 2.25rem;
	border-radius: 50%;
}

.evptc-card-icon svg {
	width: 1.125rem;
	height: 1.125rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 2.5;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.evptc-card--yes .evptc-card-icon {
	background: rgba(107, 143, 80, 0.18);
	color: var(--ev-diff-easy);
}

.evptc-card--no .evptc-card-icon {
	background: rgba(179, 51, 31, 0.16);
	color: var(--ev-diff-extreme);
}

.evptc-card-title {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.35rem;
	font-weight: 400;
	color: #fff;
}

.evptc-list {
	margin: 0;
	padding: 0;
	list-style: none;
}

.evptc-list-item {
	position: relative;
	padding: 0 0 0.75rem 1.25rem;
	font-size: 0.875rem;
	line-height: 1.65;
	color: rgba(255, 255, 255, 0.74);
}

.evptc-list-item::before {
	content: '';
	position: absolute;
	top: 0.6em;
	left: 0;
	width: 0.375rem;
	height: 0.375rem;
	border-radius: 50%;
}

.evptc-card--yes .evptc-list-item::before {
	background: var(--ev-diff-easy);
}

.evptc-card--no .evptc-list-item::before {
	background: rgba(255, 255, 255, 0.25);
}

.evptc-list-item:last-child {
	padding-bottom: 0;
}

.evptc-empty {
	margin: 0;
	font-size: 0.875rem;
	font-style: italic;
	line-height: 1.65;
	color: rgba(255, 255, 255, 0.4);
}

/* ---------- Pricing ---------- */

.evptp {
	padding-bottom: 5rem;
}

.evptp-body {
	max-width: 87.5rem;
	margin: 0 auto;
	padding: 0 clamp(1.25rem, 5vw, 5rem);
}

/*
   THE PRICE CARD AND THE RATES SIT SIDE BY SIDE. The card was capped
   at 22rem and left in normal flow, so it stood alone against half a
   page of empty background with the rate table stacked below it. The
   capture has them as one grid, auto and 1fr: the card takes the width
   it needs and the table takes the rest.

   Only when both exist. A tour with no group_rates has no second
   column to fill, and a lone card in a 1fr track would stretch to the
   full page width, so the grid is declared on the pair rather than on
   the container.
*/
.evptp-showcase-grid {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: clamp(1.25rem, 3vw, 2.5rem);
	align-items: stretch;
	margin-bottom: 2rem;
}

.evptp-showcase {
	min-width: 17.5rem;
	max-width: 22rem;
	margin-bottom: 2rem;
	padding: 1.75rem;
	border: 1px solid rgba(212, 196, 168, 0.18);
	border-radius: 1.25rem;
	background: linear-gradient(160deg, rgba(255, 255, 255, 0.045) 0%, rgba(255, 255, 255, 0.008) 100%);
}

/* Inside the grid the gap does the spacing. */
.evptp-showcase-grid .evptp-showcase,
.evptp-showcase-grid .evptp-rates {
	margin-bottom: 0;
}

/* The quiet half of price_basis, under the figure. */
.evptp-showcase-note {
	/* Capture: card-note margin-bottom 22px, card-divider 18px. */
	margin: 0.25rem 0 1.375rem;
	font-size: 0.78rem;
	line-height: 1.5;
	color: rgba(255, 255, 255, 0.45);
}

.evptp-showcase-divider {
	display: block;
	width: 100%;
	height: 1px;
	margin: 0 0 1.125rem;
	background: linear-gradient(90deg, rgba(212, 196, 168, 0.2), transparent);
}

/*
   The notes cell is two lines: a static basis label, then the row's
   own note beneath it.
*/
.evptp-rate-notes {
	line-height: 1.45;
}

.evptp-rate-basis {
	display: block;
}

.evptp-showcase.is-on-sale {
	border-top: 2px solid var(--ev-sale-gold);
}

.evptp-showcase-label {
	margin: 0 0 0.625rem;
	font-size: 0.6rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	opacity: 0.7;
}

.evptp-showcase-amount {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.5rem, 5vw, 3.25rem);
	font-weight: 400;
	line-height: 1;
	color: #fff;
}

.evptp-showcase.is-on-sale .evptp-showcase-amount {
	color: var(--ev-sale-gold);
}

.evptp-symbol {
	margin-right: 0.125rem;
	font-size: 0.5em;
	vertical-align: 0.55em;
}

.evptp-showcase-was {
	display: flex;
	align-items: center;
	gap: 0.625rem;
	margin: 0.625rem 0 0;
	font-size: 0.85rem;
	color: rgba(255, 255, 255, 0.45);
}

.evptp-showcase-off {
	padding: 0.125rem 0.5rem;
	border-radius: 3.125rem;
	background: var(--ev-sale-gold);
	color: var(--ev-sale-dark);
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
}

.evptp-showcase-stats {
	margin: 1.25rem 0 0;
	padding-top: 1rem;
	border-top: 1px solid rgba(212, 196, 168, 0.12);
}

.evptp-showcase-stat {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 1rem;
	padding: 0.375rem 0;
}

/* Capture: 0.58rem, 700, 0.12em, uppercase, --muted. */
.evptp-showcase-stat dt {
	font-size: 0.58rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.45);
}

/* Capture: Playfair Display, 1rem, 500. It is a figure, not a label. */
.evptp-showcase-stat dd {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1rem;
	font-weight: 500;
	color: #fff;
}

.evptp-rates-title {
	margin: 0 0 1rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.5rem;
	font-weight: 400;
	color: #fff;
}

/* Wide tables scroll inside their own box rather than the page. */
/*
   No outer border and no radius. The capture's table is
   border-collapse: collapse with border: none and border-spacing: 0,
   and the only rule on it is the border-bottom under each row. The box
   this used to draw around the whole thing was not in the design.
*/
.evptp-table-wrap {
	overflow-x: auto;
}

.evptp-table {
	width: 100%;
	border-collapse: collapse;
	font-size: 0.875rem;
}

.evptp-table th,
.evptp-table td {
	padding: 0.875rem 1.125rem;
	text-align: left;
	border-bottom: 1px solid rgba(212, 196, 168, 0.08);
}

.evptp-table thead th {
	font-size: 0.6rem;
	font-weight: 700;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	white-space: nowrap;
}

.evptp-table tbody th {
	font-weight: 500;
	color: #fff;
}

.evptp-table tbody tr:last-child th,
.evptp-table tbody tr:last-child td {
	border-bottom: none;
}

.evptp-rate-price {
	font-weight: 600;
	color: var(--wp--preset--color--gold-light);
	white-space: nowrap;
}

.evptp-rate-note {
	display: block;
	color: rgba(255, 255, 255, 0.55);
}

/*
   ONE COLUMN BELOW 768. The capture has no rule for this, because
   Elementor was stacking the columns for it. Card first, rates under
   it: the figure is the answer to "how much", and the table is the
   detail behind it. The card drops its width cap so it does not sit
   as a narrow box against a full width table.
*/
@media (max-width: 768px) {
	.evptp-showcase-grid {
		grid-template-columns: 1fr;
	}

	.evptp-showcase-grid .evptp-showcase {
		min-width: 0;
		max-width: none;
	}
}

.evptp-footnotes {
	margin: 1.75rem 0 0;
	padding: 0;
	list-style: none;
	counter-reset: none;
}

.evptp-footnote {
	display: flex;
	gap: 0.75rem;
	margin-bottom: 0.75rem;
	font-size: 0.8rem;
	line-height: 1.65;
	color: rgba(255, 255, 255, 0.6);
}

.evptp-footnote-marker {
	display: flex;
	flex-shrink: 0;
	align-items: center;
	justify-content: center;
	width: 1.25rem;
	height: 1.25rem;
	border-radius: 50%;
	background: rgba(212, 196, 168, 0.16);
	color: var(--wp--preset--color--gold);
	font-size: 0.62rem;
	font-weight: 700;
}

.evptp-cta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 1.25rem;
	margin-top: 2.25rem;
	padding-top: 1.75rem;
	border-top: 1px solid rgba(212, 196, 168, 0.12);
}

.evptp-cta-text {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.35rem;
	color: #fff;
}

.evptp-cta-btn {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.625rem;
	padding: 1rem 2rem;
	border: 2px solid var(--wp--preset--color--rust);
	border-radius: 3.125rem;
	background: var(--wp--preset--color--rust);
	color: #fff;
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	text-decoration: none;
	overflow: hidden;
	box-shadow: 0 0.5rem 1.625rem rgba(184, 98, 27, 0.42);
	transition: transform 0.28s ease, box-shadow 0.28s ease;
}

.evptp-cta-btn > * {
	position: relative;
	z-index: 1;
}

.evptp-cta-btn::before {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(135deg, var(--wp--preset--color--gold-light) 0%, var(--wp--preset--color--rust) 70%);
	opacity: 0;
	transition: opacity 0.28s ease;
}

.evptp-cta-btn:hover::before {
	opacity: 1;
}

.evptp-cta-btn:hover {
	transform: translateY(-0.125rem);
	box-shadow: 0 0.875rem 2rem rgba(184, 98, 27, 0.52);
}

.evptp-cta-btn svg {
	width: 0.9375rem;
	height: 0.9375rem;
	fill: currentColor;
}

.evptp-cta-btn:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: 0.25rem;
}

/* ---------- Pass 2: below 1024, the map column goes ---------- */

/* ---------- Pass 2: below 768 ---------- */

@media (max-width: 768px) {

	.evptc-grid {
		grid-template-columns: minmax(0, 1fr);
	}

	.evptp-showcase {
		max-width: none;
	}

	.evptp-cta {
		flex-direction: column;
		align-items: stretch;
	}

	.evptp-cta-btn {
		justify-content: center;
	}
}

/* ---------- Pass 2: below 480 ---------- */

/* ---------- Pass 2: reduced motion ---------- */


/* ==================================================================
   TOUR TABS + ITINERARY
   The tab container, and the itinerary rebuilt from
   salvage/tour-page/RECOVERED-tour_itinerary_map-v3.3.3.php.
   Stripped from the original: 100vw full bleed, every !important, the
   uniqid prefix and the per-component token block.
   ================================================================== */

/* ---------- Tab container ---------- */

.evptt {
	position: relative;
	display: block;
	font-family: var(--wp--preset--font-family--montserrat);
	background: var(--wp--preset--color--bg-deep);

	/*
	 * THE STICKY STACK IS TWO NUMBERS, AND EVERYTHING ELSE IS DERIVED.
	 * The site header is fixed at the viewport top, so the tab bar has
	 * to stick below it rather than at 0, and anything sticky inside a
	 * panel has to clear both. The recovered capture kept the header
	 * and bar heights as variables and computed every other offset from
	 * them. The rebuild had lifted two of those computed numbers out as
	 * literals and dropped the variables, which is why the bar stuck at
	 * 0 behind the header and the itinerary map stuck 11px under it.
	 *
	 * Each header value is one pixel under the measured header height,
	 * which is deliberate: the header then covers the bar's hairline
	 * top border instead of leaving a seam above it. The header
	 * measures 81 / 71 / 65 at desktop / 768 / 480 and this ladder
	 * steps with it.
	 */
	--ev-header-h: 5rem;
	--ev-tab-bar-h: 4rem;

	/*
	 * The two offsets the itinerary reads for its sticky map column and
	 * its mobile day nav. Both clear the header and the bar together.
	 * The itinerary keeps the recovered file's own fallbacks, so it
	 * still works when used outside these tabs.
	 */
	--ev-itin-desktop-map-top: calc(var(--ev-header-h) + var(--ev-tab-bar-h));
	--ev-itin-mobile-day-nav-top: calc(var(--ev-header-h) + var(--ev-tab-bar-h));
}

.evptt *,
.evptt *::before,
.evptt *::after {
	box-sizing: border-box;
}

.evptt-bar {
	position: sticky;
	top: var(--ev-header-h);
	z-index: 300;
	display: flex;
	align-items: center;
	height: var(--ev-tab-bar-h);
	border-top: 1px solid rgba(212, 196, 168, 0.06);
	border-bottom: 1px solid rgba(212, 196, 168, 0.12);
	background: linear-gradient(180deg, #161412 0%, #1c1a17 100%);
	box-shadow: 0 0.375rem 1.375rem rgba(0, 0, 0, 0.35);
}

.evptt-bar-inner {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	width: 100%;
	height: 100%;
	max-width: 87.5rem;
	margin: 0 auto;
	padding: 0 clamp(1.25rem, 5vw, 3rem);
	overflow-x: auto;
	overflow-y: hidden;
	-webkit-overflow-scrolling: touch;
	scroll-behavior: smooth;
	scrollbar-width: none;
}

.evptt-bar-inner::-webkit-scrollbar {
	display: none;
}

.evptt-tab {
	display: inline-flex;
	flex: 0 0 auto;
	align-items: center;
	justify-content: center;
	min-height: 2.5rem;
	padding: 0.6875rem 1.625rem;
	border: 1px solid rgba(212, 196, 168, 0.14);
	border-radius: 3.125rem;
	background: rgba(255, 255, 255, 0.035);
	color: rgba(255, 255, 255, 0.72);
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	white-space: nowrap;
	cursor: pointer;
	transition: background 0.25s ease, border-color 0.25s ease, color 0.25s ease, box-shadow 0.25s ease, transform 0.15s ease;
}

.evptt-tab:hover {
	border-color: rgba(212, 196, 168, 0.32);
	background: rgba(212, 196, 168, 0.09);
	color: #fff;
}

.evptt-tab:active {
	transform: scale(0.97);
}

.evptt-tab.is-selected,
.evptt-tab[aria-selected="true"] {
	border-color: var(--wp--preset--color--rust);
	background: linear-gradient(135deg, var(--wp--preset--color--rust) 0%, var(--wp--preset--color--rust-dark) 100%);
	color: #fff;
	box-shadow: 0 0.25rem 1rem rgba(184, 98, 27, 0.45), inset 0 1px 0 rgba(255, 255, 255, 0.08);
}

.evptt-tab.is-selected:hover,
.evptt-tab[aria-selected="true"]:hover {
	border-color: #c97224;
	background: linear-gradient(135deg, #c97224 0%, #a85a18 100%);
}

.evptt-tab:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

.evptt-panel:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: -3px;
}

/*
 * Centring and overflow together clip the left edge the moment the
 * pills stop fitting, so below this width the strip scrolls from the
 * start and snaps instead, with a fade on the right to say so.
 *
 * 900 is not on the site's 1200/1024/768/480 ladder and is left where
 * the capture put it: it is the width at which five pills stop fitting
 * in the bar, not a layout step.
 */
@media (max-width: 900px) {
	.evptt-bar {
		-webkit-mask-image: linear-gradient(to right, #000 0, #000 calc(100% - 1.75rem), transparent 100%);
		mask-image: linear-gradient(to right, #000 0, #000 calc(100% - 1.75rem), transparent 100%);
	}

	.evptt-bar-inner {
		justify-content: flex-start;
		scroll-snap-type: x proximity;
	}

	.evptt-tab {
		scroll-snap-align: center;
	}
}

@media (max-width: 768px) {
	.evptt {
		--ev-header-h: 4.375rem;
		--ev-tab-bar-h: 3.625rem;
	}

	.evptt-bar-inner {
		gap: 0.375rem;
		padding: 0 1rem;
	}

	.evptt-tab {
		min-height: 2.375rem;
		padding: 0.625rem 1.125rem;
		font-size: 0.7rem;
		letter-spacing: 0.12em;
	}
}

@media (max-width: 480px) {
	.evptt {
		--ev-header-h: 4rem;
		--ev-tab-bar-h: 3.5rem;
	}

	.evptt-bar-inner {
		gap: 0.3125rem;
		padding: 0 0.75rem;
	}

	.evptt-tab {
		min-height: 2.25rem;
		padding: 0.5625rem 0.9375rem;
		font-size: 0.66rem;
		letter-spacing: 0.1em;
	}
}

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

	.evptt-bar-inner {
		scroll-behavior: auto;
	}
}

/* ---------- Itinerary ---------- */

.evpti {
	position: relative;
	display: block;
	font-family: var(--wp--preset--font-family--montserrat);
	background: var(--wp--preset--color--bg-deep);
	color: rgba(255, 255, 255, 0.78);
}

.evpti *,
.evpti *::before,
.evpti *::after {
	box-sizing: border-box;
}

.evpti-sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	border: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
}

.evpti-header-inner {
	max-width: 87.5rem;
	margin: 0 auto;
	padding: clamp(3rem, 6vw, 4.5rem) clamp(1.25rem, 5vw, 5rem) 2.5rem;
}

.evpti-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0 0 1.25rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
}

.evpti-eyebrow::before {
	content: '';
	display: block;
	flex-shrink: 0;
	width: 1.75rem;
	height: 0.09375rem;
	background: var(--wp--preset--color--rust);
}

.evpti-title {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.4rem, 5vw, 3.75rem);
	font-weight: 400;
	line-height: 1.05;
	color: #fff;
}

.evpti-title em {
	font-style: italic;
	color: var(--wp--preset--color--rust);
}

/* Desktop 55/45 split. The map is sticky beside a scrolling panel. */
.evpti-layout {
	position: relative;
	display: flex;
	flex-direction: row;
	width: 100%;
	background: var(--wp--preset--color--bg-deep);
}

.evpti-map-section {
	position: sticky;
	top: var(--ev-itin-desktop-map-top, 4.375rem);
	z-index: 100;
	align-self: flex-start;
	width: 55%;
	height: calc(100vh - var(--ev-itin-desktop-map-top, 4.375rem));
	background: #0d0d0d;
	overflow: hidden;
}

.evpti-panel {
	display: flex;
	flex-direction: column;
	width: 45%;
	border-left: 1px solid rgba(212, 196, 168, 0.1);
	background: var(--wp--preset--color--bg-deep);
}

.evpti-layout--nomap .evpti-panel {
	width: 100%;
	max-width: 60rem;
	margin: 0 auto;
	border-left: none;
}

.evpti-map-leaflet {
	width: 100%;
	height: 100%;
}

.evpti-map-controls {
	position: absolute;
	top: 1.25rem;
	right: 1.25rem;
	z-index: 1001;
}

.evpti-reset {
	padding: 0.625rem 1.125rem;
	border: 1px solid rgba(212, 196, 168, 0.3);
	border-radius: 3.125rem;
	background: rgba(17, 16, 16, 0.88);
	-webkit-backdrop-filter: blur(0.5rem);
	backdrop-filter: blur(0.5rem);
	color: var(--wp--preset--color--gold);
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	cursor: pointer;
	transition: background 0.25s ease, color 0.25s ease, border-color 0.25s ease;
}

.evpti-reset:hover {
	border-color: var(--wp--preset--color--rust);
	background: var(--wp--preset--color--rust);
	color: #fff;
}

.evpti-reset:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

/* The minimap belongs to mobile; desktop has the real map. */
.evpti-minimap-wrap {
	display: none;
}

/* Day cards. */
.evpti-day-item {
	position: relative;
	display: block;
	width: 100%;
	border-bottom: 1px solid rgba(212, 196, 168, 0.08);
	background: var(--wp--preset--color--bg-deep);
	cursor: pointer;
	transition: background 0.35s ease, box-shadow 0.35s ease;
}

.evpti-day-item::before {
	content: '';
	position: absolute;
	top: 0;
	bottom: 0;
	left: 0;
	width: 0.1875rem;
	background: linear-gradient(180deg, var(--wp--preset--color--gold) 0%, var(--wp--preset--color--rust) 100%);
	opacity: 0;
	transition: opacity 0.3s ease;
}

.evpti-day-item:hover::before,
.evpti-day-item.is-active::before {
	opacity: 1;
}

.evpti-day-item:hover {
	background: rgba(255, 255, 255, 0.03);
}

.evpti-day-item.is-active {
	background: rgba(255, 255, 255, 0.04);
	box-shadow: inset 0 0 1.875rem rgba(212, 196, 168, 0.04);
}

.evpti-day-item:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: -2px;
}

.evpti-day-header {
	position: relative;
	z-index: 2;
	display: flex;
	align-items: center;
	gap: 1rem;
	padding: 1.5rem 1.75rem 0;
}

.evpti-day-number {
	display: flex;
	flex-shrink: 0;
	align-items: center;
	justify-content: center;
	width: 2.625rem;
	height: 2.625rem;
	border-radius: 50%;
	background: linear-gradient(135deg, var(--wp--preset--color--rust), var(--wp--preset--color--gold));
	color: #fff;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 1rem;
	font-weight: 700;
	box-shadow: 0 0.25rem 0.9375rem rgba(184, 98, 27, 0.35);
}

.evpti-day-header-info {
	min-width: 0;
}

.evpti-day-header-text {
	margin-bottom: 0.25rem;
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	opacity: 0.75;
}

.evpti-day-title {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.5rem;
	font-weight: 400;
	line-height: 1.25;
	color: #fff;
}

.evpti-day-content {
	position: relative;
	z-index: 2;
	padding: 1.5rem 1.75rem 1.875rem;
}

.evpti-day-description {
	margin-bottom: 1.25rem;
	font-size: 0.92rem;
	line-height: 1.85;
	color: rgba(255, 255, 255, 0.74);
}

.evpti-day-description p {
	margin: 0 0 0.75em;
}

.evpti-day-description p:last-child {
	margin-bottom: 0;
}

/* Gallery. has-3 puts a hero image beside two stacked, which is the
   recovered file's 1.5fr/1fr grid. */
.evpti-gallery-grid {
	position: relative;
	display: grid;
	gap: 0.5rem;
	height: 16.25rem;
	border-radius: 1rem;
	box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.5);
	overflow: hidden;
}

.evpti-gallery-grid.has-1 {
	grid-template-columns: 1fr;
	grid-template-rows: 1fr;
}

.evpti-gallery-grid.has-2 {
	grid-template-columns: 1fr 1fr;
	grid-template-rows: 1fr;
}

.evpti-gallery-grid.has-3 {
	grid-template-columns: 1.5fr 1fr;
	grid-template-rows: 1fr 1fr;
}

.evpti-gallery-grid.has-3 .evpti-gallery-image:nth-child(1) { grid-row: 1 / 3; grid-column: 1; }
.evpti-gallery-grid.has-3 .evpti-gallery-image:nth-child(2) { grid-row: 1; grid-column: 2; }
.evpti-gallery-grid.has-3 .evpti-gallery-image:nth-child(3) { grid-row: 2; grid-column: 2; }

.evpti-gallery-image {
	position: relative;
	display: block;
	color: inherit;
	text-decoration: none;
	cursor: pointer;
	overflow: hidden;
	transition: transform 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94), box-shadow 0.4s ease;
}

.evpti-gallery-image img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.4s ease;
}

.evpti-gallery-image::before {
	content: '';
	position: absolute;
	inset: 0;
	z-index: 1;
	background: rgba(0, 0, 0, 0);
	pointer-events: none;
	transition: background 0.3s ease;
}

.evpti-gallery-image:hover {
	z-index: 10;
	transform: scale(1.03);
	box-shadow: 0 0.5rem 1.5625rem rgba(184, 98, 27, 0.25);
}

.evpti-gallery-image:hover::before {
	background: rgba(0, 0, 0, 0.15);
}

.evpti-gallery-image:hover img {
	transform: scale(1.02);
}

.evpti-gallery-image:focus-visible {
	z-index: 11;
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: -3px;
}

.evpti-image-gallery {
	margin-bottom: 1.25rem;
}

/* Lodge trigger. */
.evpti-lodge {
	position: relative;
	display: block;
	width: 100%;
	margin-bottom: 1.25rem;
	padding: 1.5rem;
	border: 1px solid rgba(212, 196, 168, 0.14);
	border-radius: 1rem;
	background: rgba(255, 255, 255, 0.04);
	color: inherit;
	font: inherit;
	text-align: left;
	cursor: pointer;
	overflow: hidden;
	transition: background 0.35s ease, border-color 0.35s ease, transform 0.35s ease, box-shadow 0.35s ease;
}

.evpti-lodge::before {
	content: '';
	position: absolute;
	top: 0;
	right: 0;
	left: 0;
	height: 0.125rem;
	background: linear-gradient(90deg, var(--wp--preset--color--gold), var(--wp--preset--color--rust));
	opacity: 0;
	transition: opacity 0.3s ease;
}

.evpti-lodge:hover {
	border-color: rgba(212, 196, 168, 0.28);
	background: rgba(255, 255, 255, 0.06);
	transform: translateY(-0.125rem);
	box-shadow: 0 0.75rem 2rem rgba(0, 0, 0, 0.4);
}

.evpti-lodge:hover::before {
	opacity: 1;
}

.evpti-lodge:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

.evpti-lodge-category {
	display: block;
	margin-bottom: 0.375rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	opacity: 0.75;
}

.evpti-lodge-name {
	display: block;
	margin-bottom: 0.5rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.25rem;
	color: #fff;
}

.evpti-lodge-description {
	display: block;
	margin-bottom: 0.75rem;
	font-size: 0.875rem;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.66);
}

.evpti-lodge-hint {
	display: inline-block;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	opacity: 0.85;
	transition: opacity 0.3s ease;
}

.evpti-lodge:hover .evpti-lodge-hint {
	opacity: 1;
}

.evpti-day-meals {
	display: flex;
	align-items: baseline;
	gap: 0.625rem;
	margin: 0;
	padding-top: 0.875rem;
	border-top: 1px solid rgba(212, 196, 168, 0.1);
}

.evpti-day-meals-label {
	font-size: 0.56rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	opacity: 0.7;
}

.evpti-day-meals-value {
	font-size: 0.85rem;
	color: rgba(255, 255, 255, 0.78);
}

/* Day pills. Desktop hides them; the sticky map is the wayfinding. */
.evpti-day-nav {
	display: none;
}

/* Leaflet markers, scoped so other maps keep theirs. */
.evpti-marker {
	background: none;
	border: none;
}

.evpti-marker .evpti-marker-dot {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.125rem;
	height: 2.125rem;
	border: 0.125rem solid rgba(255, 255, 255, 0.9);
	border-radius: 50%;
	background: linear-gradient(135deg, var(--wp--preset--color--rust), var(--wp--preset--color--gold));
	color: #fff;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.78rem;
	font-weight: 700;
	box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.45);
	transition: transform 0.25s ease;
}

.evpti-marker.is-active .evpti-marker-dot {
	transform: scale(1.22);
	box-shadow: 0 0.375rem 1.125rem rgba(184, 98, 27, 0.6);
}

.evpti-mini-marker span {
	display: block;
	width: 0.875rem;
	height: 0.875rem;
	border: 0.15625rem solid rgba(255, 255, 255, 0.9);
	border-radius: 50%;
	background: var(--wp--preset--color--rust);
	box-shadow: 0 0.125rem 0.375rem rgba(0, 0, 0, 0.4);
}

/* Modals. */
.evpti-modal {
	position: fixed;
	inset: 0;
	z-index: 9000;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 1.25rem;
	background: rgba(6, 6, 6, 0.9);
	-webkit-backdrop-filter: blur(0.25rem);
	backdrop-filter: blur(0.25rem);
}

.evpti-modal-inner {
	position: relative;
	width: 62.5rem;
	max-width: 90vw;
	max-height: 90vh;
	border: 1px solid rgba(212, 196, 168, 0.16);
	border-radius: 1.25rem;
	background: #14120f;
	overflow: hidden;
}

.evpti-modal-display {
	width: 100%;
	aspect-ratio: 3 / 2;
	background: #0d0d0d;
}

.evpti-modal-display img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: contain;
}

.evpti-modal-caption {
	padding: 1.25rem 1.5rem 1.5rem;
}

.evpti-modal-title {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0.75rem;
	margin: 0 0 0.5rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.25rem;
	color: #fff;
}

.evpti-modal-day {
	padding: 0.1875rem 0.625rem;
	border-radius: 3.125rem;
	background: var(--wp--preset--color--rust);
	color: #fff;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.6rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.evpti-modal-text {
	margin: 0;
	font-size: 0.875rem;
	line-height: 1.75;
	color: rgba(255, 255, 255, 0.68);
}

.evpti-modal-counter {
	position: absolute;
	top: 1.125rem;
	left: 1.125rem;
	z-index: 3;
	margin: 0;
	padding: 0.3125rem 0.75rem;
	border-radius: 3.125rem;
	background: rgba(0, 0, 0, 0.6);
	color: rgba(255, 255, 255, 0.8);
	font-size: 0.68rem;
	font-weight: 600;
}

.evpti-modal-close {
	position: absolute;
	top: 1.125rem;
	right: 1.125rem;
	z-index: 3;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.25rem;
	height: 2.25rem;
	border: none;
	border-radius: 50%;
	background: rgba(0, 0, 0, 0.6);
	color: #fff;
	font-size: 1.5rem;
	line-height: 1;
	cursor: pointer;
	transition: background 0.25s ease;
}

.evpti-modal-close:hover {
	background: var(--wp--preset--color--rust);
}

.evpti-modal-nav {
	position: absolute;
	top: 30%;
	z-index: 3;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	border: none;
	border-radius: 50%;
	background: rgba(0, 0, 0, 0.55);
	color: #fff;
	font-size: 1.75rem;
	line-height: 1;
	cursor: pointer;
	transition: background 0.25s ease;
}

.evpti-modal-nav.prev { left: 1.125rem; }
.evpti-modal-nav.next { right: 1.125rem; }

.evpti-modal-nav:hover {
	background: var(--wp--preset--color--rust);
}

.evpti-modal-close:focus-visible,
.evpti-modal-nav:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

/* ---------- Tour tabs and itinerary: 768 and below ---------- */

@media (max-width: 768px) {
	.evptt-tab {
		padding: 0.9375rem 0.75rem;
		font-size: 0.66rem;
		letter-spacing: 0.1em;
	}

	/* The desktop map is not shown, so it is not built either. */
	.evpti-map-section {
		display: none;
	}

	.evpti-layout {
		flex-direction: column;
	}

	.evpti-panel {
		width: 100%;
		border-left: none;
	}

	.evpti-day-nav {
		position: sticky;
		top: var(--ev-itin-mobile-day-nav-top, 0);
		z-index: 200;
		display: flex;
		gap: 0.5rem;
		padding: 0.75rem 1rem;
		border-bottom: 1px solid rgba(212, 196, 168, 0.12);
		background: var(--wp--preset--color--bg-deep);
		box-shadow: 0 0.25rem 1.25rem rgba(0, 0, 0, 0.4);
		overflow-x: auto;
		scrollbar-width: none;
		-webkit-overflow-scrolling: touch;
	}

	.evpti-day-nav::-webkit-scrollbar {
		display: none;
	}

	.evpti-day-pill {
		flex-shrink: 0;
		padding: 0.5rem 1.125rem;
		border: 1px solid rgba(212, 196, 168, 0.15);
		border-radius: 3.125rem;
		background: rgba(255, 255, 255, 0.05);
		color: rgba(255, 255, 255, 0.45);
		font-family: var(--wp--preset--font-family--montserrat);
		font-size: 0.78rem;
		font-weight: 600;
		letter-spacing: 0.06em;
		white-space: nowrap;
		cursor: pointer;
		transition: background 0.25s ease, border-color 0.25s ease, color 0.25s ease;
	}

	.evpti-day-pill.is-active {
		border-color: var(--wp--preset--color--rust);
		background: var(--wp--preset--color--rust);
		color: #fff;
		box-shadow: 0 0.25rem 0.875rem rgba(184, 98, 27, 0.4);
	}

	.evpti-day-pill:focus-visible {
		outline: 2px solid var(--wp--preset--color--gold);
		outline-offset: 2px;
	}

	.evpti-minimap-wrap {
		position: relative;
		display: block;
		background: var(--wp--preset--color--bg-deep);
	}

	.evpti-minimap {
		display: block;
		width: 100%;
		height: 15rem;
		background: #0d0d0d;
	}

	.evpti-minimap-wrap::after {
		content: '';
		position: absolute;
		right: 0;
		bottom: 0;
		left: 0;
		z-index: 500;
		height: 3.75rem;
		background: linear-gradient(to bottom, transparent, var(--wp--preset--color--bg-deep));
		pointer-events: none;
	}

	.evpti-minimap-label {
		position: absolute;
		top: 0.875rem;
		left: 0.875rem;
		z-index: 600;
		display: flex;
		align-items: center;
		gap: 0.625rem;
		padding: 0.4375rem 1rem;
		border: 1px solid rgba(212, 196, 168, 0.2);
		border-radius: 3.125rem;
		background: rgba(18, 14, 10, 0.88);
		-webkit-backdrop-filter: blur(0.625rem);
		backdrop-filter: blur(0.625rem);
	}

	.evpti-minimap-eyebrow {
		font-size: 0.68rem;
		font-weight: 700;
		letter-spacing: 0.12em;
		text-transform: uppercase;
		color: var(--wp--preset--color--gold);
	}

	.evpti-minimap-count {
		font-size: 0.68rem;
		font-weight: 500;
		letter-spacing: 0.04em;
		color: rgba(255, 255, 255, 0.45);
	}

	.evpti-minimap .leaflet-control-container {
		display: none;
	}

	/*
	 * Mobile reorders the day: description, gallery, lodge, then meals.
	 * The recovered file puts badges last; that slot is kept for when
	 * activity_badges gets a field.
	 */
	.evpti-day-content {
		display: flex;
		flex-direction: column;
		padding: 1.25rem 1.25rem 1.75rem;
	}

	.evpti-day-description { order: 1; }
	.evpti-image-gallery   { order: 2; }
	.evpti-lodge           { order: 3; }
	.evpti-day-meals       { order: 4; }

	.evpti-day-header {
		gap: 0.875rem;
		padding: 1rem 1.25rem 0;
	}

	.evpti-day-number {
		width: 2.375rem;
		height: 2.375rem;
		font-size: 0.94rem;
	}

	/* Deliberately larger than desktop. Reading a day on a phone is the
	   primary use, not a compressed version of the desktop card. */
	.evpti-day-title       { font-size: 1.65rem; line-height: 1.2; }
	.evpti-day-header-text { font-size: 0.85rem; }
	.evpti-day-description { font-size: 1.15rem; line-height: 1.85; }
	.evpti-lodge-category  { font-size: 0.85rem; }
	.evpti-lodge-name      { font-size: 1.5rem; }
	.evpti-lodge-description { font-size: 1.15rem; line-height: 1.85; }

	/* The grid becomes a scroll-snap carousel at 78% card width. */
	.evpti-gallery-grid,
	.evpti-gallery-grid.has-1,
	.evpti-gallery-grid.has-2,
	.evpti-gallery-grid.has-3 {
		display: flex;
		height: auto;
		gap: 0.625rem;
		border-radius: 0;
		box-shadow: none;
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		scrollbar-width: none;
		-webkit-overflow-scrolling: touch;
	}

	.evpti-gallery-grid::-webkit-scrollbar {
		display: none;
	}

	.evpti-gallery-grid.has-3 .evpti-gallery-image:nth-child(1),
	.evpti-gallery-grid.has-3 .evpti-gallery-image:nth-child(2),
	.evpti-gallery-grid.has-3 .evpti-gallery-image:nth-child(3) {
		grid-row: auto;
		grid-column: auto;
	}

	.evpti-gallery-image {
		flex: 0 0 78%;
		aspect-ratio: 4 / 3;
		border-radius: 0.875rem;
		scroll-snap-align: center;
		overflow: hidden;
	}

	.evpti-modal-nav {
		top: auto;
		bottom: 1.125rem;
	}
}

/* ---------- Tour tabs and itinerary: reduced motion ---------- */

@media (prefers-reduced-motion: reduce) {
	.evpti-day-item,
	.evpti-day-item::before,
	.evpti-gallery-image,
	.evpti-gallery-image img,
	.evpti-lodge,
	.evpti-day-pill,
	.evpti-reset,
	.evpti-marker .evpti-marker-dot,
	.evptt-tab,
	.evptt-tab::after {
		transition: none;
	}

	.evpti-gallery-image:hover,
	.evpti-lodge:hover,
	.evpti-gallery-image:hover img {
		transform: none;
	}
}

/* ---------- Itinerary: activity badges and lodge amenities ---------- */

.evpti-badges {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.evpti-badge {
	display: inline-flex;
	align-items: center;
	padding: 0.4375rem 0.8125rem;
	border: 1px solid rgba(212, 196, 168, 0.2);
	border-radius: 3.125rem;
	background: rgba(212, 196, 168, 0.08);
	color: var(--wp--preset--color--gold);
	font-size: 0.68rem;
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	transition: background 0.25s ease, border-color 0.25s ease;
}

.evpti-badge:hover {
	border-color: rgba(212, 196, 168, 0.4);
	background: rgba(212, 196, 168, 0.15);
}

/* The lodge modal's checklist. */
.evpti-amenities {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0.5rem 1.25rem;
	margin: 1.125rem 0 0;
	padding: 1.125rem 0 0;
	border-top: 1px solid rgba(212, 196, 168, 0.12);
	list-style: none;
}

.evpti-amenity {
	position: relative;
	padding-left: 1.25rem;
	font-size: 0.85rem;
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.72);
}

.evpti-amenity::before {
	content: '';
	position: absolute;
	top: 0.45em;
	left: 0;
	width: 0.5rem;
	height: 0.3125rem;
	border-left: 0.125rem solid var(--wp--preset--color--gold);
	border-bottom: 0.125rem solid var(--wp--preset--color--gold);
	transform: rotate(-45deg);
}

@media (max-width: 768px) {
	.evpti-badges {
		order: 5;
		margin-top: 0.25rem;
	}

	.evpti-badge {
		padding: 0.4375rem 0.875rem;
		font-size: 0.85rem;
	}

	.evpti-amenities {
		grid-template-columns: minmax(0, 1fr);
	}
}

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

/* ==================================================================
   TOUR MOSAIC GALLERY
   Behaviour from tour_mosaic_gallery v3's changelog, appearance from
   the v2 capture's CSS, which v3 did not change. The three grid
   patterns are lifted from it exactly.
   Stripped: 100vw full bleed, !important, the global .mosaic-item
   names that collided when two instances shared a page, and the
   per-component token block.
   ================================================================== */

.evptg {
	position: relative;
	display: block;
	overflow: hidden;
	font-family: var(--wp--preset--font-family--montserrat);
	background: var(--wp--preset--color--bg-deep);
	color: #fff;
	line-height: 1.6;
}

.evptg *,
.evptg *::before,
.evptg *::after {
	box-sizing: border-box;
}

.evptg-sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	border: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
}

.evptg-body {
	position: relative;
	background: var(--wp--preset--color--bg-deep);
}

/* A page never exceeds the screen. */
.evptg-viewport {
	position: relative;
	height: 78vh;
	min-height: 28.125rem;
	max-height: 56.25rem;
	overflow: hidden;
}

.evptg-track {
	display: flex;
	height: 100%;
	transition: transform 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94);
	will-change: transform;
}

.evptg-page {
	display: grid;
	flex: 0 0 100%;
	width: 100%;
	height: 100%;
	gap: 0.25rem;
	padding: 0.25rem;
}

/* Pattern A: large top-left, two small top-right, wide mid-right,
   two across the bottom. */
.evptg-page--a {
	grid-template-columns: 2fr 1fr 1fr;
	grid-template-rows: 1fr 1fr 1fr;
}

.evptg-page--a .evptg-item:nth-child(1) { grid-column: 1;     grid-row: 1 / 3; }
.evptg-page--a .evptg-item:nth-child(2) { grid-column: 2;     grid-row: 1; }
.evptg-page--a .evptg-item:nth-child(3) { grid-column: 3;     grid-row: 1; }
.evptg-page--a .evptg-item:nth-child(4) { grid-column: 2 / 4; grid-row: 2; }
.evptg-page--a .evptg-item:nth-child(5) { grid-column: 1 / 2; grid-row: 3; }
.evptg-page--a .evptg-item:nth-child(6) { grid-column: 2 / 4; grid-row: 3; }

/* Pattern B: mirrored, large top-right. */
.evptg-page--b {
	grid-template-columns: 1fr 1fr 2fr;
	grid-template-rows: 1fr 1fr 1fr;
}

.evptg-page--b .evptg-item:nth-child(1) { grid-column: 1;     grid-row: 1; }
.evptg-page--b .evptg-item:nth-child(2) { grid-column: 2;     grid-row: 1; }
.evptg-page--b .evptg-item:nth-child(3) { grid-column: 3;     grid-row: 1 / 3; }
.evptg-page--b .evptg-item:nth-child(4) { grid-column: 1 / 3; grid-row: 2; }
.evptg-page--b .evptg-item:nth-child(5) { grid-column: 1 / 3; grid-row: 3; }
.evptg-page--b .evptg-item:nth-child(6) { grid-column: 3;     grid-row: 3; }

/* Pattern C: wide top-right, wide mid-left, large bottom-right. The
   third row is taller, which is what makes the bottom tile read as the
   large one. */
.evptg-page--c {
	grid-template-columns: 1fr 1fr 1fr;
	grid-template-rows: 1fr 1fr 1.2fr;
}

.evptg-page--c .evptg-item:nth-child(1) { grid-column: 1;     grid-row: 1; }
.evptg-page--c .evptg-item:nth-child(2) { grid-column: 2 / 4; grid-row: 1; }
.evptg-page--c .evptg-item:nth-child(3) { grid-column: 1 / 3; grid-row: 2; }
.evptg-page--c .evptg-item:nth-child(4) { grid-column: 3;     grid-row: 2; }
.evptg-page--c .evptg-item:nth-child(5) { grid-column: 1;     grid-row: 3; }
.evptg-page--c .evptg-item:nth-child(6) { grid-column: 2 / 4; grid-row: 3; }

/* A partial last page.

   The mosaic places every tile explicitly, so a page holding four
   images would leave two tile-shaped holes in the middle of the grid.
   v3's answer was to emit no placeholder cells, which stops the black
   squares but not the holes. These fills replace the pattern entirely
   for a short page, so the images that are there use the whole
   viewport. The pattern class is still on the element, so the override
   has to beat it: it is later in the file and equally specific. */
.evptg-page--fill-1,
.evptg-page--fill-2,
.evptg-page--fill-3,
.evptg-page--fill-4,
.evptg-page--fill-5 {
	grid-template-columns: repeat(6, 1fr);
	grid-template-rows: 1fr 1fr;
}

.evptg-page--fill-1 .evptg-item:nth-child(1) { grid-column: 1 / 7; grid-row: 1 / 3; }

.evptg-page--fill-2 .evptg-item:nth-child(1) { grid-column: 1 / 4; grid-row: 1 / 3; }
.evptg-page--fill-2 .evptg-item:nth-child(2) { grid-column: 4 / 7; grid-row: 1 / 3; }

.evptg-page--fill-3 .evptg-item:nth-child(1) { grid-column: 1 / 4; grid-row: 1 / 3; }
.evptg-page--fill-3 .evptg-item:nth-child(2) { grid-column: 4 / 7; grid-row: 1; }
.evptg-page--fill-3 .evptg-item:nth-child(3) { grid-column: 4 / 7; grid-row: 2; }

.evptg-page--fill-4 .evptg-item:nth-child(1) { grid-column: 1 / 4; grid-row: 1; }
.evptg-page--fill-4 .evptg-item:nth-child(2) { grid-column: 4 / 7; grid-row: 1; }
.evptg-page--fill-4 .evptg-item:nth-child(3) { grid-column: 1 / 4; grid-row: 2; }
.evptg-page--fill-4 .evptg-item:nth-child(4) { grid-column: 4 / 7; grid-row: 2; }

.evptg-page--fill-5 .evptg-item:nth-child(1) { grid-column: 1 / 4; grid-row: 1; }
.evptg-page--fill-5 .evptg-item:nth-child(2) { grid-column: 4 / 7; grid-row: 1; }
.evptg-page--fill-5 .evptg-item:nth-child(3) { grid-column: 1 / 3; grid-row: 2; }
.evptg-page--fill-5 .evptg-item:nth-child(4) { grid-column: 3 / 5; grid-row: 2; }
.evptg-page--fill-5 .evptg-item:nth-child(5) { grid-column: 5 / 7; grid-row: 2; }

/* Tiles. */
.evptg-item {
	position: relative;
	display: block;
	background: #111;
	color: inherit;
	text-decoration: none;
	cursor: pointer;
	overflow: hidden;
}

.evptg-item img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.evptg-item::after {
	content: '';
	position: absolute;
	inset: 0;
	z-index: 1;
	background: linear-gradient(180deg, transparent 60%, rgba(0, 0, 0, 0.3) 100%);
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.3s ease;
}

.evptg-item:hover img,
.evptg-item:focus-visible img {
	transform: scale(1.05);
}

.evptg-item:hover::after,
.evptg-item:focus-visible::after {
	opacity: 1;
}

.evptg-item:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: -3px;
	z-index: 3;
}

/* Captions slide up on hover, from the attachment caption. */
.evptg-caption {
	position: absolute;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 2;
	padding: 1rem;
	color: #fff;
	font-size: 0.85rem;
	font-weight: 500;
	letter-spacing: 0.02em;
	transform: translateY(100%);
	transition: transform 0.3s ease;
}

.evptg-item:hover .evptg-caption,
.evptg-item:focus-visible .evptg-caption {
	transform: translateY(0);
}

/* Controls. */
.evptg-controls {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 1.25rem;
	padding: 1.5rem 1.25rem 2rem;
}

.evptg-nav {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.5rem;
	height: 2.5rem;
	padding: 0;
	border: 0.09375rem solid rgba(212, 196, 168, 0.4);
	border-radius: 50%;
	background: transparent;
	color: var(--wp--preset--color--gold);
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 1rem;
	line-height: 1;
	cursor: pointer;
	transition: background 0.3s ease, border-color 0.3s ease, opacity 0.3s ease;
}

.evptg-nav:hover:not(:disabled) {
	border-color: var(--wp--preset--color--gold);
	background: rgba(212, 196, 168, 0.15);
}

.evptg-nav:disabled {
	opacity: 0.2;
	cursor: not-allowed;
}

.evptg-nav:focus-visible,
.evptg-dot:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

.evptg-dots {
	display: flex;
	align-items: center;
	gap: 0.375rem;
}

.evptg-dot {
	width: 0.5rem;
	height: 0.5rem;
	padding: 0;
	border: none;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.25);
	cursor: pointer;
	transition: background 0.3s ease, transform 0.3s ease;
}

.evptg-dot.is-active {
	background: var(--wp--preset--color--gold);
	transform: scale(1.35);
}

/* Lightbox. */
.evptg-lightbox {
	position: fixed;
	inset: 0;
	z-index: 9500;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 3.5rem 1.25rem 4.5rem;
	background: rgba(4, 4, 4, 0.94);
}

.evptg-lightbox-img {
	max-width: 100%;
	max-height: 100%;
	object-fit: contain;
}

.evptg-lightbox-close {
	position: absolute;
	top: 1.125rem;
	right: 1.125rem;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	padding: 0;
	border: none;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.1);
	color: #fff;
	font-size: 1.75rem;
	line-height: 1;
	cursor: pointer;
	transition: background 0.25s ease;
}

.evptg-lightbox-close:hover {
	background: var(--wp--preset--color--rust);
}

.evptg-lightbox-nav {
	position: absolute;
	top: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	padding: 0;
	border: none;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.1);
	color: #fff;
	font-size: 1.5rem;
	line-height: 1;
	cursor: pointer;
	transform: translateY(-50%);
	transition: background 0.25s ease;
}

.evptg-lightbox-nav.prev { left: 1.25rem; }
.evptg-lightbox-nav.next { right: 1.25rem; }

.evptg-lightbox-nav:hover {
	background: var(--wp--preset--color--rust);
}

.evptg-lightbox-close:focus-visible,
.evptg-lightbox-nav:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

.evptg-lightbox-counter {
	position: absolute;
	bottom: 1.5rem;
	left: 50%;
	margin: 0;
	color: rgba(255, 255, 255, 0.7);
	font-size: 0.8rem;
	font-weight: 600;
	letter-spacing: 0.08em;
	transform: translateX(-50%);
}

/* ---------- Gallery: 768 and below ---------- */

@media (max-width: 768px) {
	.evptg-viewport {
		height: 65vh;
		min-height: 23.75rem;
	}

	.evptg-page {
		gap: 0.1875rem;
		padding: 0.1875rem;
	}
}

/* ---------- Gallery: 480 and below ---------- */

@media (max-width: 480px) {
	.evptg-viewport {
		height: 68vh;
		min-height: 21.25rem;
	}

	/*
	 * Two columns, four tiles. The fifth and sixth of each page are not
	 * dropped from the document, only from the grid: the lightbox walks
	 * the whole gallery, so they are still reachable by swiping from the
	 * fourth. See the report.
	 */
	.evptg-page--a,
	.evptg-page--b,
	.evptg-page--c {
		grid-template-columns: 1fr 1fr;
		grid-template-rows: 1fr 1fr 1fr;
	}

	.evptg-page--a .evptg-item:nth-child(1),
	.evptg-page--b .evptg-item:nth-child(1),
	.evptg-page--c .evptg-item:nth-child(1) { grid-column: 1 / 3; grid-row: 1; }

	.evptg-page--a .evptg-item:nth-child(2),
	.evptg-page--b .evptg-item:nth-child(2),
	.evptg-page--c .evptg-item:nth-child(2) { grid-column: 1; grid-row: 2; }

	.evptg-page--a .evptg-item:nth-child(3),
	.evptg-page--b .evptg-item:nth-child(3),
	.evptg-page--c .evptg-item:nth-child(3) { grid-column: 2; grid-row: 2; }

	.evptg-page--a .evptg-item:nth-child(4),
	.evptg-page--b .evptg-item:nth-child(4),
	.evptg-page--c .evptg-item:nth-child(4) { grid-column: 1 / 3; grid-row: 3; }

	.evptg-page--a .evptg-item:nth-child(n + 5),
	.evptg-page--b .evptg-item:nth-child(n + 5),
	.evptg-page--c .evptg-item:nth-child(n + 5) {
		display: none;
	}

	/* A short page has no fifth or sixth tile to hide, so it keeps its
	   fill layout and simply stacks. */
	.evptg-page--fill-1,
	.evptg-page--fill-2,
	.evptg-page--fill-3,
	.evptg-page--fill-4,
	.evptg-page--fill-5 {
		grid-template-columns: 1fr 1fr;
		grid-template-rows: repeat(3, 1fr);
	}

	.evptg-page--fill-1 .evptg-item,
	.evptg-page--fill-2 .evptg-item,
	.evptg-page--fill-3 .evptg-item,
	.evptg-page--fill-4 .evptg-item,
	.evptg-page--fill-5 .evptg-item {
		grid-column: auto;
		grid-row: auto;
	}

	.evptg-page--fill-1 .evptg-item:nth-child(1),
	.evptg-page--fill-3 .evptg-item:nth-child(1),
	.evptg-page--fill-5 .evptg-item:nth-child(1) {
		grid-column: 1 / 3;
	}

	.evptg-controls {
		padding: 1rem 0.9375rem 1.5rem;
	}

	.evptg-lightbox-nav {
		width: 2.25rem;
		height: 2.25rem;
		font-size: 1.25rem;
	}

	.evptg-lightbox-nav.prev { left: 0.625rem; }
	.evptg-lightbox-nav.next { right: 0.625rem; }

	/* The caption has nowhere to hover on a touch screen, so it sits
	   open rather than being unreachable. */
	.evptg-caption {
		padding: 0.625rem;
		font-size: 0.72rem;
		transform: translateY(0);
		background: linear-gradient(180deg, transparent, rgba(0, 0, 0, 0.72));
	}
}

/* ---------- Gallery: reduced motion and high contrast ---------- */

@media (prefers-reduced-motion: reduce) {
	.evptg-track,
	.evptg-item img,
	.evptg-caption,
	.evptg-dot,
	.evptg-nav {
		transition: none;
	}

	.evptg-item:hover img,
	.evptg-item:focus-visible img {
		transform: none;
	}
}

@media (prefers-contrast: more) {
	.evptg-item {
		border: 1px solid #fff;
	}

	.evptg-nav {
		border-color: #fff;
		color: #fff;
	}
}

/* ================================================
   SINGLE TOUR, PASS 3
   Booking, the floating CTA's modal, locations and the FAQ.
   Rebuilt from salvage/tour-page/08, 11, 12 and 13. Testimonials and
   related tours have no rules here: both reuse a component that is
   already styled, section-testimonials and the destination tours
   carousel respectively.
   ================================================================== */

/* Form validation red. Deliberately its own token rather than
   borrowing --ev-iucn-cr: that scale is data encoding for Red List
   categories, and its own comment says nobody should be picking those
   values as a colour. An invalid email is not a critically endangered
   species. */
:root {
	--ev-form-error: #d9534f;
}

/* ---------- Shared tour section header ----------

   One block for four sections rather than four near identical copies.
   The pricing section shipped in pass 2 with these four classes in its
   markup and no rules at all behind them, so its heading was rendering
   at browser defaults; adding evptp here is that fix as well as the
   base for the three new sections.

   The What's Included tab panel joined in pass 4. It had the identical
   defect and for the identical reason: header markup written, header
   rules never. Its grid below already uses this exact max-width and
   gutter, so the header now lines up with the cards under it.

   Deliberately not merged with .evptd-*, the highlights header. That
   one is full bleed with a rule under it and a much larger title, and
   collapsing the two would mean one of them changing appearance. The
   overview and itinerary tab panels keep their own headers for the
   same reason. */

.evptc-header,
.evptp-header,
.evptb-header,
.evptl-header,
.evptf-header {
	max-width: 87.5rem;
	margin: 0 auto 3rem;
	padding: 0 clamp(1.25rem, 5vw, 5rem);
}

.evptc-eyebrow,
.evptp-eyebrow,
.evptb-eyebrow,
.evptl-eyebrow,
.evptf-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0 0 1.25rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
}

.evptc-eyebrow::before,
.evptp-eyebrow::before,
.evptb-eyebrow::before,
.evptl-eyebrow::before,
.evptf-eyebrow::before {
	content: '';
	display: block;
	flex-shrink: 0;
	width: 1.75rem;
	height: 0.09375rem;
	background: var(--wp--preset--color--rust);
}

.evptc-title,
.evptp-title,
.evptb-title,
.evptl-title,
.evptf-title {
	margin: 0 0 1rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2rem, 4vw, 3rem);
	font-weight: 400;
	line-height: 1.1;
	color: #fff;
}

.evptc-title em,
.evptp-title em,
.evptb-title em,
.evptl-title em,
.evptf-title em {
	font-style: italic;
	color: var(--wp--preset--color--rust);
}

.evptc-descriptor,
.evptp-descriptor,
.evptb-descriptor,
.evptl-descriptor,
.evptf-descriptor {
	max-width: 38rem;
	margin: 0;
	font-size: 0.9rem;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.45);
}

/*
   THE PRICING AND BOOKING STANDFIRSTS ARE SET, not body copy. Both
   captures give them the same treatment and the shared rule above was
   rendering them as upright grey sans:

     .tp-…-header-sub  EB Garamond italic, gold, clamp(1rem,2vw,1.2rem),
                       max-width 600px, line-height 1.5
     .bk-…-desc        EB Garamond italic, gold at 0.85, 1.1em,
                       max-width 380px, line-height 1.7

   PLAYFAIR, NOT EB GARAMOND. The capture's stack is 'EB Garamond',
   'Playfair Display', serif, and EB Garamond is not loaded on this
   site and never was: functions.php enqueues Playfair Display with its
   italics and Montserrat, and nothing else. So the capture's own stack
   falls through to Playfair here, which is what this says outright
   rather than naming a face the browser will not find.

   Scoped to these two rather than folded into the rule above, because
   that rule also dresses evptc, evptl and evptf and I have not checked
   their captures. If those want the same treatment it is one more
   selector here, not a change to the shared default.
*/
.evptp-descriptor,
.evptb-descriptor {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-style: italic;
	color: var(--wp--preset--color--gold);
}

.evptp-descriptor {
	max-width: 37.5rem;
	font-size: clamp(1rem, 2vw, 1.2rem);
	line-height: 1.5;
}

.evptb-descriptor {
	max-width: 23.75rem;
	font-size: 1.1rem;
	line-height: 1.7;
	opacity: 0.85;
}

.evptf-descriptor a {
	color: var(--wp--preset--color--gold);
	text-decoration: underline;
	text-underline-offset: 0.2em;
}

.evptf-descriptor a:hover {
	color: var(--wp--preset--color--gold-light);
}

/* ================================================
   BOOK YOUR ADVENTURE
   ================================================ */

/* ==================================================================
   THE BOOKING FORM OWNS ITS BOX MODEL

   Same reason the tour cards do: this stylesheet has no global reset,
   only per section ones, and nothing here declared a box-sizing.

   .evptb-input is width: 100% with 0.9rem of horizontal padding and a
   1px border. In content-box that came to the cell width plus 30.8px,
   measured at 31px, on the name, email, phone and textarea. The
   selects were unaffected because Chrome's own stylesheet already
   makes a select border-box, which is why only some controls looked
   wrong.

   That 31px is the "stray vertical bar". The left column's input
   overran its cell by more than the 1.25rem grid gap, so the rounded
   right end of Full Name came to rest immediately left of Email, and
   the right end of Phone immediately left of the travel toggle. A
   light hairline the height of an input, on the right column only,
   because only the right column has something overflowing into it.

   Scoped to the two wrappers rather than to a page, so it travels with
   the form: the inline section and the floating CTA modal render the
   same fragment.
   ================================================================== */

.evptb,
.evptb *,
.evptb *::before,
.evptb *::after,
.evptb-modal-overlay,
.evptb-modal-overlay *,
.evptb-modal-overlay *::before,
.evptb-modal-overlay *::after {
	box-sizing: border-box;
}

.evptb {
	padding: 1rem 0 5rem;
}

.evptb-trust {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem 2rem;
	margin: 1.75rem 0 0;
	padding: 0;
	list-style: none;
}

.evptb-trust-item {
	display: flex;
	align-items: center;
	gap: 0.625rem;
	font-size: 0.8rem;
	line-height: 1.5;
	color: rgba(255, 255, 255, 0.55);
}

.evptb-trust-icon {
	display: flex;
	flex-shrink: 0;
	align-items: center;
	justify-content: center;
	width: 1.75rem;
	height: 1.75rem;
	border: 1px solid rgba(212, 196, 168, 0.2);
	border-radius: 50%;
	color: var(--wp--preset--color--gold);
}

.evptb-trust-icon svg {
	width: 0.875rem;
	height: 0.875rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 1.6;
	stroke-linecap: round;
	stroke-linejoin: round;
}

/*
   THE HEADER SITS BESIDE THE FORM, not above it. Both were full width
   blocks, the header capped at 87.5rem and the card centred at 52rem,
   so the copy explaining the form was stacked above a card floating
   alone in the middle of the page. The capture has one grid at 1fr and
   1.4fr with the columns centred against each other.

   The header and card keep their own rules for the stacked case; the
   grid overrides the widths and padding it now owns.
*/
.evptb-inner {
	display: grid;
	grid-template-columns: 1fr 1.4fr;
	gap: 4rem;
	align-items: center;
	max-width: 75rem;
	margin: 0 auto;
	padding: 0 clamp(1.25rem, 5vw, 5rem);
}

/*
   LEFT ALIGNED ON DESKTOP. I put text-align: center here as a base
   rule and that was wrong: in the capture it is not a base rule at all,
   it lives in @media (min-width: 769px) and (max-width: 1024px)
   alongside the eyebrow centring and the single 680px column. It is
   what the header does when the two columns collapse, not what it does
   beside the form.
*/
.evptb-inner .evptb-header {
	max-width: none;
	margin: 0;
	padding: 0;
}

.evptb-inner .evptb-card {
	max-width: none;
	margin: 0;
}

.evptb-card {
	max-width: 52rem;
	margin: 0 auto;
	padding: clamp(1.5rem, 4vw, 2.75rem);
	border: 1px solid rgba(212, 196, 168, 0.18);
	border-radius: 1.25rem;
	background: linear-gradient(160deg, rgba(255, 255, 255, 0.045) 0%, rgba(255, 255, 255, 0.008) 100%);
}

/*
   THE TABLET COLLAPSE, verbatim from the capture. One 680px column,
   40px gap, and the header centres itself only here: the eyebrow's
   leading rule centres with it, the standfirst takes auto margins and
   the trust list turns into a centred wrapping row.

   This is the block I previously hoisted into the base rule, which
   left the desktop header centred beside the form when it should be
   flush left.
*/
@media (min-width: 769px) and (max-width: 1024px) {
	.evptb-inner {
		grid-template-columns: 1fr;
		gap: 2.5rem;
		max-width: 42.5rem;
	}

	.evptb-inner .evptb-header {
		text-align: center;
	}

	.evptb-inner .evptb-eyebrow {
		justify-content: center;
	}

	.evptb-inner .evptb-descriptor {
		margin-left: auto;
		margin-right: auto;
	}

	.evptb-inner .evptb-trust {
		flex-direction: row;
		justify-content: center;
		flex-wrap: wrap;
		gap: 1.5rem;
	}
}

/*
   ONE COLUMN BELOW 768, left aligned. The capture has no rule for this
   because Elementor stacked it. Header first: it says what the form is
   for and what happens after you send it, which is what a visitor
   needs before deciding to fill it in.
*/
@media (max-width: 768px) {
	.evptb-inner {
		grid-template-columns: 1fr;
		gap: 2.5rem;
	}
}

.evptb-noscript {
	margin: 0 0 1.5rem;
	padding: 0.875rem 1rem;
	border: 1px solid rgba(184, 98, 27, 0.5);
	border-radius: 0.5rem;
	font-size: 0.85rem;
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.8);
}

.evptb-noscript a {
	color: var(--wp--preset--color--gold);
}

/* ---------- The form ---------- */

.evptb-row {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 1.25rem;
	margin-bottom: 1.25rem;
}

.evptb-row--full {
	grid-template-columns: 1fr;
}

.evptb-field {
	display: flex;
	flex-direction: column;
	min-width: 0;
}

.evptb-label {
	display: block;
	margin-bottom: 0.5rem;
	padding: 0;
	font-size: 0.68rem;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.6);
}

.evptb-required {
	color: var(--wp--preset--color--rust);
}

.evptb-input {
	width: 100%;
	padding: 0.8rem 0.9rem;
	border: 1px solid rgba(255, 255, 255, 0.14);
	border-radius: 0.5rem;
	background: rgba(0, 0, 0, 0.25);
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.9rem;
	color: #fff;
	transition: border-color 0.2s ease, background 0.2s ease;
}

.evptb-input::placeholder {
	color: rgba(255, 255, 255, 0.3);
}

.evptb-input:hover {
	border-color: rgba(255, 255, 255, 0.24);
}

.evptb-input:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
	border-color: transparent;
}

.evptb-input[aria-invalid='true'] {
	border-color: var(--ev-form-error);
}

/* The native arrow is replaced rather than left to the platform,
   because on a dark ground the system control paints its own light
   background and breaks the row. */
.evptb-select {
	appearance: none;
	padding-right: 2.25rem;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23D4C4A8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 0.75rem center;
	background-size: 1rem;
}

.evptb-select option {
	background: var(--wp--preset--color--bg-deep);
	color: #fff;
}

.evptb-select option:disabled {
	color: rgba(255, 255, 255, 0.35);
}

.evptb-textarea {
	resize: vertical;
	min-height: 5.5rem;
	line-height: 1.6;
}

/* A date input's own indicator is a dark glyph on a dark ground.
   Inverting it is the only way to see it without replacing the whole
   control. */
.evptb-input[type='date']::-webkit-calendar-picker-indicator {
	filter: invert(1);
	opacity: 0.6;
	cursor: pointer;
}

.evptb-field-error {
	display: block;
	min-height: 1rem;
	margin-top: 0.375rem;
	font-size: 0.75rem;
	line-height: 1.4;
	color: var(--ev-form-error);
}

/* ---------- The scheduled / private toggle ----------

   Only ever on the page when the tour has both. There is no rule here
   that hides it, because in a single mode state it is not rendered. */

/* No bottom margin. It sits in its own row now and the row spaces it. */
.evptb-toggle {
	margin: 0;
	padding: 0;
	border: 0;
}

/*
   Capped. The toggle's row is full width, and a two option segmented
   control stretched across 52rem reads as a banner rather than a
   control.
*/
.evptb-toggle-options {
	display: grid;
	grid-template-columns: 1fr 1fr;
	max-width: 26rem;
	gap: 0.25rem;
	padding: 0.25rem;
	border: 1px solid rgba(255, 255, 255, 0.14);
	border-radius: 0.5rem;
	background: rgba(0, 0, 0, 0.25);
}

.evptb-toggle-option {
	margin: 0;
	cursor: pointer;
}

/* The radio itself is the control and stays in the accessibility tree
   and in the tab order. It is only visually replaced by the label
   beside it, which is why this is not display:none. */
.evptb-toggle-option input {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}

.evptb-toggle-option span {
	display: block;
	padding: 0.6rem 0.5rem;
	border-radius: 0.375rem;
	font-size: 0.75rem;
	font-weight: 600;
	letter-spacing: 0.06em;
	text-align: center;
	color: rgba(255, 255, 255, 0.55);
	transition: background 0.2s ease, color 0.2s ease;
}

.evptb-toggle-option input:checked + span {
	background: var(--wp--preset--color--rust);
	color: #fff;
}

.evptb-toggle-option input:focus-visible + span {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

.evptb-toggle-option:hover input:not(:checked) + span {
	color: rgba(255, 255, 255, 0.85);
}

/* The date panes. The inactive one carries hidden and disabled from
   the markup; [hidden] is already handled globally, so there is
   nothing to declare for the closed state. */
.evptb-pane {
	margin: 0;
	padding: 0;
	border: 0;
	min-width: 0;
}

.evptb-total {
	display: block;
	margin: 0 0 1.25rem;
	font-size: 0.8rem;
	font-weight: 600;
	letter-spacing: 0.08em;
	color: var(--wp--preset--color--gold);
}

.evptb-turnstile-wrap {
	margin-bottom: 1.25rem;
}

.evptb-error {
	margin: 0 0 1rem;
	padding: 0.75rem 0.9rem;
	border: 1px solid var(--ev-form-error);
	border-radius: 0.5rem;
	font-size: 0.85rem;
	line-height: 1.55;
	color: #fff;
}

.evptb-submit {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	padding: 0.95rem 1.5rem;
	border: 0;
	border-radius: 0.5rem;
	background: var(--wp--preset--color--rust);
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.78rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: #fff;
	cursor: pointer;
	transition: background 0.25s ease, transform 0.25s ease;
}

.evptb-submit:hover {
	background: var(--wp--preset--color--rust-dark);
	transform: translateY(-1px);
}

.evptb-submit:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

.evptb-submit:disabled {
	opacity: 0.6;
	cursor: default;
	transform: none;
}

/* ---------- The success panel ---------- */

.evptb-done {
	padding: 2rem 1rem;
	text-align: center;
}

.evptb-done:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 4px;
}

.evptb-done-mark {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 3rem;
	height: 3rem;
	margin: 0 auto 1.25rem;
	border: 1px solid rgba(212, 196, 168, 0.35);
	border-radius: 50%;
	font-size: 1.25rem;
	color: var(--wp--preset--color--gold);
}

.evptb-done-title {
	margin: 0 0 0.75rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.5rem;
	font-weight: 400;
	color: #fff;
}

.evptb-done-text {
	max-width: 30rem;
	margin: 0 auto;
	font-size: 0.9rem;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.55);
}

/* ================================================
   THE BOOKING MODAL
   The floating button itself reuses .ev-floating-cta.
   ================================================ */

.evptb-modal-overlay {
	position: fixed;
	inset: 0;
	z-index: 1000;
	display: flex;
	align-items: flex-start;
	justify-content: center;
	padding: clamp(1rem, 4vh, 3rem) 1rem;
	overflow-y: auto;
	background: rgba(0, 0, 0, 0.8);
}

.evptb-modal {
	position: relative;
	width: 100%;
	max-width: 40rem;
	margin: auto;
	padding: clamp(1.5rem, 4vw, 2.5rem);
	border: 1px solid rgba(212, 196, 168, 0.2);
	border-radius: 1.25rem;
	background: var(--wp--preset--color--bg-deep);
}

.evptb-modal-close {
	position: absolute;
	top: 0.875rem;
	right: 0.875rem;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.25rem;
	height: 2.25rem;
	padding: 0;
	border: 1px solid rgba(255, 255, 255, 0.14);
	border-radius: 50%;
	background: transparent;
	color: rgba(255, 255, 255, 0.6);
	cursor: pointer;
	transition: color 0.2s ease, border-color 0.2s ease;
}

.evptb-modal-close svg {
	width: 1rem;
	height: 1rem;
	fill: currentColor;
}

.evptb-modal-close:hover {
	border-color: rgba(212, 196, 168, 0.4);
	color: #fff;
}

.evptb-modal-close:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

.evptb-modal-header {
	margin-bottom: 1.75rem;
	padding-right: 2.5rem;
}

.evptb-modal-eyebrow {
	margin: 0 0 0.625rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	opacity: 0.75;
}

.evptb-modal-title {
	margin: 0 0 0.625rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.6rem, 3.5vw, 2.1rem);
	font-weight: 400;
	line-height: 1.15;
	color: #fff;
}

.evptb-modal-title em {
	font-style: italic;
	color: var(--wp--preset--color--rust);
}

.evptb-modal-desc {
	margin: 0;
	font-size: 0.85rem;
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.45);
}

/* ================================================
   EXPLORE THE PLACES YOU'LL VISIT
   ================================================ */

.evptl {
	padding: 1rem 0 5rem;
}

.evptl-country-wrap {
	max-width: 87.5rem;
	margin: 0 auto 2.5rem;
	padding: 0 clamp(1.25rem, 5vw, 5rem);
}

.evptl-country {
	position: relative;
	display: block;
	overflow: hidden;
	border-radius: 1.25rem;
	text-decoration: none;
	isolation: isolate;
}

.evptl-country-img {
	display: block;
	width: 100%;
	height: clamp(14rem, 32vw, 22rem);
	object-fit: cover;
	transition: transform 0.6s ease;
}

.evptl-country-overlay {
	position: absolute;
	inset: 0;
	background: linear-gradient(to top, rgba(0, 0, 0, 0.85) 0%, rgba(0, 0, 0, 0.35) 55%, rgba(0, 0, 0, 0.1) 100%);
}

.evptl-country-content {
	position: absolute;
	right: 0;
	bottom: 0;
	left: 0;
	padding: clamp(1.25rem, 3vw, 2.5rem);
}

.evptl-country-rule {
	display: block;
	width: 2.5rem;
	height: 0.125rem;
	margin-bottom: 1rem;
	background: var(--wp--preset--color--rust);
}

.evptl-country-name {
	margin: 0 0 0.625rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.75rem, 4vw, 2.75rem);
	line-height: 1.1;
	color: #fff;
}

.evptl-country-desc {
	max-width: 40rem;
	margin: 0 0 1rem;
	font-size: 0.875rem;
	line-height: 1.65;
	color: var(--ev-soft);
}

.evptl-country-cta {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evptl-country-cta svg {
	width: 0.875rem;
	height: 0.875rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
	transition: transform 0.3s ease;
}

.evptl-country:hover .evptl-country-img {
	transform: scale(1.04);
}

.evptl-country:hover .evptl-country-cta svg {
	transform: translate(0.15rem, -0.15rem);
}

.evptl-country:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

/* ---------- The locations strip ---------- */

.evptl-carousel-wrap {
	max-width: 87.5rem;
	margin: 0 auto;
	padding: 0 clamp(1.25rem, 5vw, 5rem);
}

.evptl-carousel {
	position: relative;
}

.evptl-track {
	display: flex;
	gap: 1.25rem;
	margin: 0;
	padding: 0 0 0.5rem;
	list-style: none;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
}

.evptl-track::-webkit-scrollbar {
	display: none;
}

.evptl-item {
	flex: 0 0 20rem;
	max-width: 20rem;
	scroll-snap-align: start;
}

.evptl-card {
	display: flex;
	flex-direction: column;
	height: 100%;
	overflow: hidden;
	border: 1px solid rgba(212, 196, 168, 0.14);
	border-radius: 1rem;
	background: rgba(255, 255, 255, 0.025);
	text-decoration: none;
	transition: border-color 0.3s ease, transform 0.3s ease;
}

.evptl-card:hover {
	border-color: rgba(212, 196, 168, 0.35);
	transform: translateY(-0.25rem);
}

.evptl-card:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

.evptl-card-img {
	position: relative;
	display: block;
	overflow: hidden;
	aspect-ratio: 16 / 10;
}

.evptl-card-img img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.5s ease;
}

.evptl-card:hover .evptl-card-img img {
	transform: scale(1.05);
}

.evptl-card-badge {
	position: absolute;
	top: 0.75rem;
	left: 0.75rem;
	padding: 0.25rem 0.625rem;
	border-radius: 3.125rem;
	background: rgba(0, 0, 0, 0.65);
	font-size: 0.6rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evptl-card-body {
	display: flex;
	flex: 1;
	flex-direction: column;
	gap: 0.75rem;
	justify-content: space-between;
	padding: 1.125rem 1.25rem 1.25rem;
}

.evptl-card-name {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.1rem;
	line-height: 1.3;
	color: #fff;
}

.evptl-card-cta {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	font-size: 0.65rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evptl-card-cta svg {
	width: 0.75rem;
	height: 0.75rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.evptl-arrow {
	position: absolute;
	top: 35%;
	z-index: 2;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	padding: 0;
	border: 1px solid rgba(212, 196, 168, 0.3);
	border-radius: 50%;
	background: rgba(17, 16, 16, 0.9);
	color: var(--wp--preset--color--gold);
	cursor: pointer;
	transition: background 0.2s ease, border-color 0.2s ease, opacity 0.2s ease;
}

.evptl-arrow.prev {
	left: calc(clamp(1.25rem, 5vw, 5rem) - 1.375rem);
}

.evptl-arrow.next {
	right: calc(clamp(1.25rem, 5vw, 5rem) - 1.375rem);
}

.evptl-arrow svg {
	width: 1.125rem;
	height: 1.125rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.evptl-arrow:hover:not(:disabled) {
	border-color: var(--wp--preset--color--gold);
	background: var(--wp--preset--color--rust);
	color: #fff;
}

.evptl-arrow:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

.evptl-arrow:disabled {
	opacity: 0.3;
	cursor: default;
}

/* ================================================
   FREQUENTLY ASKED QUESTIONS
   ================================================ */

.evptf {
	padding: 1rem 0 5rem;
}

.evptf-groups {
	display: grid;
	gap: 3rem;
	max-width: 56rem;
	margin: 0 auto;
	padding: 0 clamp(1.25rem, 5vw, 5rem);
}

.evptf-group-title {
	margin: 0 0 0.5rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.35rem;
	font-weight: 400;
	color: var(--wp--preset--color--gold);
}

.evptf-group-intro {
	margin: 0 0 1.25rem;
	font-size: 0.85rem;
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.4);
}

.evptf-items {
	display: grid;
	gap: 0.625rem;
}

.evptf-item {
	border: 1px solid rgba(212, 196, 168, 0.14);
	border-radius: 0.75rem;
	background: rgba(255, 255, 255, 0.02);
	transition: border-color 0.25s ease;
}

.evptf-item:hover {
	border-color: rgba(212, 196, 168, 0.28);
}

/* The heading exists so the questions are a real document outline.
   It carries none of the heading styling: the button inside it is the
   visible thing. */
.evptf-question-heading {
	margin: 0;
	font: inherit;
}

.evptf-question {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	width: 100%;
	padding: 1.05rem 1.25rem;
	border: 0;
	border-radius: 0.75rem;
	background: transparent;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.925rem;
	font-weight: 500;
	line-height: 1.5;
	text-align: left;
	color: #fff;
	cursor: pointer;
}

.evptf-question:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: -2px;
}

.evptf-question[aria-expanded='true'] {
	color: var(--wp--preset--color--gold);
}

/* Takes the slack so a long question wraps inside the button instead of
   pushing the icon off the end of the row. */
.evptf-question-text {
	flex: 1 1 auto;
	min-width: 0;
}

.evptf-icon {
	display: flex;
	flex-shrink: 0;
	align-items: center;
	justify-content: center;
	width: 1.5rem;
	height: 1.5rem;
	border: 1px solid rgba(212, 196, 168, 0.3);
	border-radius: 50%;
	color: var(--wp--preset--color--gold);
	transition: transform 0.3s ease, background 0.3s ease;
}

.evptf-icon svg {
	width: 0.75rem;
	height: 0.75rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
}

/* The plus becomes a minus by rotation, so there is one icon in the
   markup rather than two swapped by script. The vertical stroke turns
   onto the horizontal one and disappears behind it. */
.evptf-question[aria-expanded='true'] .evptf-icon {
	transform: rotate(45deg);
	background: rgba(184, 98, 27, 0.2);
}

/* The open and close animation. grid-template-rows going 0fr to 1fr
   animates to the content's real height without anything measuring it
   in JavaScript. The closed state is the hidden attribute, which the
   global [hidden][hidden] rule already handles, so this rule only ever
   applies to a panel that is on its way open or shut. */
.evptf-answer {
	display: grid;
	grid-template-rows: 0fr;
	transition: grid-template-rows 0.3s ease;
}

.evptf-answer.is-open {
	grid-template-rows: 1fr;
}

.evptf-answer-inner {
	overflow: hidden;
	min-height: 0;
}

.evptf-answer-inner > :first-child {
	margin-top: 0;
}

.evptf-answer-inner > :last-child {
	margin-bottom: 0;
}

.evptf-answer-inner p {
	margin: 0 0 0.875rem;
	padding: 0 1.25rem;
	font-size: 0.875rem;
	line-height: 1.75;
	color: rgba(255, 255, 255, 0.55);
}

.evptf-answer-inner p:last-child {
	margin-bottom: 1.25rem;
}

.evptf-answer-inner a {
	color: var(--wp--preset--color--gold);
	text-decoration: underline;
	text-underline-offset: 0.2em;
}

.evptf-answer-inner ul,
.evptf-answer-inner ol {
	margin: 0 0 1.25rem;
	padding: 0 1.25rem 0 2.5rem;
	font-size: 0.875rem;
	line-height: 1.75;
	color: rgba(255, 255, 255, 0.55);
}

/* ================================================
   PASS 3: BREAKPOINTS
   ================================================ */

@media (max-width: 1024px) {
	.evptl-item {
		flex: 0 0 18rem;
		max-width: 18rem;
	}
}

@media (max-width: 768px) {
	.evptb-row {
		grid-template-columns: 1fr;
	}

	.evptb-trust {
		gap: 0.75rem 1.25rem;
	}

	.evptl-item {
		flex: 0 0 75vw;
		max-width: 75vw;
	}

	/* Off the card edges and into the gutter is not available at this
	   width, so the arrows come inside the track. */
	.evptl-arrow.prev {
		left: 0.25rem;
	}

	.evptl-arrow.next {
		right: 0.25rem;
	}

	.evptf-groups {
		gap: 2.25rem;
	}
}

@media (max-width: 480px) {
	.evptb,
	.evptl,
	.evptf {
		padding-bottom: 3.5rem;
	}

	.evptb-card {
		padding: 1.25rem;
		border-radius: 1rem;
	}

	.evptb-trust {
		flex-direction: column;
	}

	.evptb-modal {
		padding: 1.25rem;
	}

	.evptb-modal-header {
		margin-bottom: 1.25rem;
	}

	.evptf-question {
		padding: 0.9rem 1rem;
		font-size: 0.875rem;
	}

	.evptf-answer-inner p,
	.evptf-answer-inner ul,
	.evptf-answer-inner ol {
		padding-left: 1rem;
		padding-right: 1rem;
	}

	.evptf-answer-inner ul,
	.evptf-answer-inner ol {
		padding-left: 2.25rem;
	}
}

/* ================================================
   PASS 3: REDUCED MOTION AND CONTRAST
   ================================================ */

@media (prefers-reduced-motion: reduce) {
	.evptb-submit,
	.evptb-input,
	.evptb-toggle-option span,
	.evptl-card,
	.evptl-card-img img,
	.evptl-country-img,
	.evptl-country-cta svg,
	.evptl-arrow,
	.evptf-item,
	.evptf-icon,
	.evptf-answer {
		transition: none;
	}

	.evptb-submit:hover,
	.evptl-card:hover,
	.evptl-card:hover .evptl-card-img img,
	.evptl-country:hover .evptl-country-img,
	.evptl-country:hover .evptl-country-cta svg {
		transform: none;
	}

	.evptl-track {
		scroll-behavior: auto;
	}
}

@media (prefers-contrast: more) {
	.evptb-card,
	.evptb-input,
	.evptb-toggle-options,
	.evptl-card,
	.evptf-item {
		border-color: #fff;
	}

	.evptb-trust-item,
	.evptb-descriptor,
	.evptl-descriptor,
	.evptf-descriptor,
	.evptf-group-intro,
	.evptf-answer-inner p,
	.evptf-answer-inner ul,
	.evptf-answer-inner ol {
		color: #fff;
	}
}

/* ================================================
   DESTINATION PAGE: BESPOKE TOURS
   Rebuilt from salvage/destination-page/03-bespoke-tours.html, which is
   bespoke_tours v3. Dropped on the way in: the uniqid class prefix, the
   width:100vw / margin-left:calc(-50vw + 50%) full bleed hack on the
   mosaic, and roughly forty !important.
   ================================================================== */

.evpbt {
	padding: clamp(3.5rem, 7vw, 6rem) 0 clamp(3.5rem, 7vw, 6rem);
	background: var(--wp--preset--color--bg-deep);
}

.evpbt-inner {
	max-width: 87.5rem;
	margin: 0 auto;
	padding: 0 clamp(1.25rem, 5vw, 5rem);
}

/* ---------- Hero ---------- */

.evpbt-hero {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	gap: clamp(2rem, 5vw, 4.5rem);
	align-items: center;
}

.evpbt-pill {
	display: inline-flex;
	align-items: center;
	margin: 0 0 1.5rem;
	padding: 0.4rem 0.9rem;
	border: 1px solid rgba(212, 196, 168, 0.28);
	border-radius: 3.125rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evpbt-title {
	margin: 0 0 1.25rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.2rem, 4.4vw, 3.4rem);
	font-weight: 400;
	line-height: 1.1;
	color: #fff;
}

.evpbt-title em {
	display: block;
	font-style: italic;
	color: var(--wp--preset--color--rust);
}

.evpbt-hero-desc {
	max-width: 34rem;
	margin: 0 0 2rem;
	font-size: 0.95rem;
	line-height: 1.75;
	color: rgba(255, 255, 255, 0.5);
}

.evpbt-stats {
	display: flex;
	flex-wrap: wrap;
	gap: 1.5rem 2.5rem;
	margin: 0 0 2.25rem;
	padding-top: 1.75rem;
	border-top: 1px solid rgba(212, 196, 168, 0.14);
}

.evpbt-stat-num {
	margin: 0 0 0.25rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.65rem;
	line-height: 1;
	color: var(--wp--preset--color--gold);
}

.evpbt-stat-label {
	margin: 0;
	font-size: 0.62rem;
	font-weight: 600;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.4);
}

.evpbt-hero-btn,
.evpbt-bottom-btn {
	display: inline-flex;
	align-items: center;
	gap: 0.75rem;
	padding: 0.95rem 1.75rem;
	border: 0;
	border-radius: 0.5rem;
	background: var(--wp--preset--color--rust);
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: #fff;
	cursor: pointer;
	transition: background 0.25s ease, transform 0.25s ease;
}

.evpbt-hero-btn svg,
.evpbt-bottom-btn svg {
	width: 1rem;
	height: 1rem;
	fill: currentColor;
	transition: transform 0.25s ease;
}

.evpbt-hero-btn:hover,
.evpbt-bottom-btn:hover {
	background: var(--wp--preset--color--rust-dark);
	transform: translateY(-1px);
}

.evpbt-hero-btn:hover svg,
.evpbt-bottom-btn:hover svg {
	transform: translateX(0.2rem);
}

.evpbt-hero-btn:focus-visible,
.evpbt-bottom-btn:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

/* ---------- The stacked visual ---------- */

.evpbt-visual {
	position: relative;
	min-height: 26rem;
}

.evpbt-img-stack {
	position: absolute;
	overflow: hidden;
	border-radius: 1rem;
	box-shadow: 0 1.5rem 3rem rgba(0, 0, 0, 0.55);
}

.evpbt-img-stack img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.evpbt-img-1 {
	top: 0;
	left: 0;
	width: 62%;
	height: 58%;
	z-index: 1;
}

.evpbt-img-2 {
	right: 0;
	bottom: 0;
	width: 58%;
	height: 56%;
	z-index: 3;
}

.evpbt-img-3 {
	top: 22%;
	right: 8%;
	width: 44%;
	height: 40%;
	z-index: 2;
	border: 1px solid rgba(212, 196, 168, 0.2);
}

/* ---------- Experiences header ---------- */

.evpbt-experiences {
	margin-top: clamp(3rem, 6vw, 5rem);
}

.evpbt-exp-header {
	margin-bottom: 2.5rem;
	text-align: center;
}

.evpbt-eyebrow {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.75rem;
	margin: 0 0 1rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
}

.evpbt-eyebrow::before,
.evpbt-eyebrow::after {
	content: '';
	display: block;
	width: 1.75rem;
	height: 0.09375rem;
	background: var(--wp--preset--color--rust);
}

.evpbt-exp-title {
	margin: 0 0 0.625rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.7rem, 3.2vw, 2.4rem);
	font-weight: 400;
	line-height: 1.15;
	color: #fff;
}

.evpbt-exp-subtitle {
	margin: 0;
	font-size: 0.85rem;
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.4);
}

/* ---------- Experience cards ---------- */

.evpbt-carousel {
	position: relative;
}

.evpbt-track {
	display: flex;
	gap: 1.25rem;
	margin: 0;
	padding: 0 0 0.5rem;
	list-style: none;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
}

.evpbt-track::-webkit-scrollbar {
	display: none;
}

.evpbt-item {
	flex: 0 0 calc((100% - 2.5rem) / 3);
	max-width: calc((100% - 2.5rem) / 3);
	scroll-snap-align: start;
	display: flex;
}

.evpbt-card {
	position: relative;
	display: flex;
	flex-direction: column;
	width: 100%;
	padding: 0;
	overflow: hidden;
	border: 1px solid rgba(212, 196, 168, 0.1);
	border-radius: 1.25rem;
	background: rgba(255, 255, 255, 0.025);
	font: inherit;
	color: inherit;
	text-align: left;
	cursor: pointer;
	transition: transform 0.4s ease, border-color 0.35s ease, box-shadow 0.4s ease;
}

.evpbt-card::before {
	content: '';
	position: absolute;
	top: 0;
	right: 0;
	left: 0;
	z-index: 4;
	height: 0.125rem;
	background: linear-gradient(90deg, var(--wp--preset--color--gold), var(--wp--preset--color--rust));
	opacity: 0;
	transition: opacity 0.35s ease;
}

.evpbt-card:hover::before,
.evpbt-card:focus-visible::before {
	opacity: 1;
}

.evpbt-card:hover {
	transform: translateY(-0.5rem);
	border-color: rgba(212, 196, 168, 0.24);
	box-shadow: 0 2rem 4rem rgba(0, 0, 0, 0.6);
}

.evpbt-card:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

.evpbt-card-photo {
	position: relative;
	display: block;
	flex: 0 0 auto;
	overflow: hidden;
	aspect-ratio: 16 / 10;
	background: rgba(255, 255, 255, 0.04);
}

.evpbt-card-photo img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.6s ease;
}

.evpbt-card:hover .evpbt-card-photo img {
	transform: scale(1.05);
}

/* The gradient that carries the photo into the body below it. */
.evpbt-card-photo::after {
	content: '';
	position: absolute;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 2;
	height: 3rem;
	background: linear-gradient(to bottom, transparent, rgba(17, 16, 16, 0.9));
	pointer-events: none;
}

.evpbt-card-num {
	position: absolute;
	top: 0.9rem;
	left: 0.9rem;
	z-index: 3;
	padding: 0.3rem 0.55rem;
	border: 1px solid rgba(255, 255, 255, 0.16);
	border-radius: 0.375rem;
	background: rgba(0, 0, 0, 0.4);
	font-size: 0.58rem;
	font-weight: 800;
	letter-spacing: 0.08em;
	line-height: 1;
	color: #fff;
}

.evpbt-card-icon {
	position: absolute;
	top: 0.8rem;
	right: 0.8rem;
	z-index: 3;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.125rem;
	height: 2.125rem;
	border: 1px solid rgba(255, 255, 255, 0.18);
	border-radius: 50%;
	background: rgba(0, 0, 0, 0.42);
	transition: background 0.3s ease, border-color 0.3s ease, transform 0.3s ease;
}

.evpbt-card-icon svg {
	width: 0.8rem;
	height: 0.8rem;
	fill: none;
	stroke: rgba(255, 255, 255, 0.85);
	stroke-width: 2;
	stroke-linecap: round;
}

.evpbt-card:hover .evpbt-card-icon {
	border-color: var(--wp--preset--color--rust);
	background: var(--wp--preset--color--rust);
	transform: rotate(45deg);
}

.evpbt-card-body {
	position: relative;
	z-index: 2;
	display: flex;
	flex: 1;
	flex-direction: column;
	padding: 1.375rem 1.5rem 1.625rem;
}

.evpbt-card-title {
	display: block;
	margin-bottom: 0.75rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.1rem, 0.95rem + 0.5vw, 1.35rem);
	font-weight: 500;
	line-height: 1.25;
	color: #fff;
}

.evpbt-card-divider {
	display: block;
	width: 2rem;
	height: 0.125rem;
	margin-bottom: 0.75rem;
	border-radius: 0.125rem;
	background: linear-gradient(90deg, var(--wp--preset--color--gold), var(--wp--preset--color--rust));
	transition: width 0.35s ease;
}

.evpbt-card:hover .evpbt-card-divider {
	width: 3.25rem;
}

.evpbt-card-desc {
	display: block;
	margin-bottom: 1.25rem;
	font-size: 0.825rem;
	line-height: 1.65;
	color: rgba(255, 255, 255, 0.5);
}

.evpbt-card-cta {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	margin-top: auto;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evpbt-card-cta-line {
	display: block;
	width: 1.25rem;
	height: 0.0625rem;
	background: var(--wp--preset--color--gold);
	transition: width 0.35s ease;
}

.evpbt-card:hover .evpbt-card-cta-line {
	width: 2.25rem;
}

.evpbt-card-cta svg {
	width: 0.75rem;
	height: 0.75rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

/* ---------- Carousel controls ---------- */

.evpbt-arrow {
	position: absolute;
	top: 40%;
	z-index: 2;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	padding: 0;
	border: 1px solid rgba(212, 196, 168, 0.3);
	border-radius: 50%;
	background: rgba(17, 16, 16, 0.92);
	color: var(--wp--preset--color--gold);
	cursor: pointer;
	transition: background 0.2s ease, border-color 0.2s ease, opacity 0.2s ease;
}

.evpbt-arrow.prev {
	left: -1.375rem;
}

.evpbt-arrow.next {
	right: -1.375rem;
}

.evpbt-arrow svg {
	width: 1.125rem;
	height: 1.125rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.evpbt-arrow:hover:not(:disabled) {
	border-color: var(--wp--preset--color--gold);
	background: var(--wp--preset--color--rust);
	color: #fff;
}

.evpbt-arrow:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

.evpbt-arrow:disabled {
	opacity: 0.3;
	cursor: default;
}

.evpbt-dots {
	display: flex;
	justify-content: center;
	gap: 0.5rem;
	margin-top: 1.75rem;
}

.evpbt-dot {
	width: 0.5rem;
	height: 0.5rem;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: rgba(212, 196, 168, 0.28);
	cursor: pointer;
	transition: background 0.25s ease, width 0.25s ease;
}

.evpbt-dot.is-active {
	width: 1.5rem;
	border-radius: 0.25rem;
	background: var(--wp--preset--color--rust);
}

.evpbt-dot:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

/* ---------- Mosaic ---------- */

.evpbt-mosaic {
	margin-top: clamp(3rem, 6vw, 5rem);
}

.evpbt-mosaic-grid {
	display: grid;
	grid-template-columns: repeat(12, 1fr);
	gap: 0.75rem;
	margin-bottom: 2.5rem;
}

.evpbt-mosaic-tile {
	position: relative;
	margin: 0;
	overflow: hidden;
	border-radius: 1rem;
}

.evpbt-mosaic-tile img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.7s ease;
}

.evpbt-mosaic-tile:hover img {
	transform: scale(1.05);
}

.evpbt-mosaic-tile::after {
	content: '';
	position: absolute;
	inset: 0;
	z-index: 1;
	background: linear-gradient(to top, rgba(5, 5, 5, 0.9) 0%, rgba(5, 5, 5, 0.3) 40%, transparent 70%);
	pointer-events: none;
}

.evpbt-mosaic-tile::before {
	content: '';
	position: absolute;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 4;
	height: 0.1875rem;
	background: linear-gradient(90deg, var(--wp--preset--color--gold), var(--wp--preset--color--rust));
	transform: scaleX(0);
	transform-origin: left;
	transition: transform 0.5s ease;
}

.evpbt-mosaic-tile:hover::before {
	transform: scaleX(1);
}

.evpbt-mosaic-caption {
	position: absolute;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 2;
	padding: 1.25rem;
}

.evpbt-mosaic-label {
	display: block;
	margin-bottom: 0.3125rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.05rem, 0.9rem + 0.5vw, 1.3rem);
	font-weight: 600;
	line-height: 1.2;
	color: #fff;
}

.evpbt-mosaic-desc {
	display: block;
	max-width: 21rem;
	font-size: 0.8rem;
	line-height: 1.5;
	color: rgba(255, 255, 255, 0.6);
	opacity: 0;
	transform: translateY(0.375rem);
	transition: opacity 0.35s ease 0.1s, transform 0.35s ease 0.1s;
}

.evpbt-mosaic-tile:hover .evpbt-mosaic-desc {
	opacity: 1;
	transform: translateY(0);
}

/* Tile placement by count, so a mosaic of two and a mosaic of six are
   both deliberate compositions rather than a grid with holes in it. */
.evpbt-mc-1 .evpbt-mosaic-tile:nth-child(1) { grid-column: 1 / 13; height: 20rem; }

.evpbt-mc-2 .evpbt-mosaic-tile:nth-child(1) { grid-column: 1 / 8;  height: 20rem; }
.evpbt-mc-2 .evpbt-mosaic-tile:nth-child(2) { grid-column: 8 / 13; height: 20rem; }

.evpbt-mc-3 .evpbt-mosaic-tile:nth-child(1) { grid-column: 1 / 6;   height: 18.75rem; }
.evpbt-mc-3 .evpbt-mosaic-tile:nth-child(2) { grid-column: 6 / 10;  height: 18.75rem; }
.evpbt-mc-3 .evpbt-mosaic-tile:nth-child(3) { grid-column: 10 / 13; height: 18.75rem; }

.evpbt-mc-4 .evpbt-mosaic-tile:nth-child(1) { grid-column: 1 / 8;  height: 17.5rem; }
.evpbt-mc-4 .evpbt-mosaic-tile:nth-child(2) { grid-column: 8 / 13; height: 17.5rem; }
.evpbt-mc-4 .evpbt-mosaic-tile:nth-child(3) { grid-column: 1 / 6;  height: 16.25rem; }
.evpbt-mc-4 .evpbt-mosaic-tile:nth-child(4) { grid-column: 6 / 13; height: 16.25rem; }

.evpbt-mc-5 .evpbt-mosaic-tile:nth-child(1) { grid-column: 1 / 6;   height: 17.5rem; }
.evpbt-mc-5 .evpbt-mosaic-tile:nth-child(2) { grid-column: 6 / 10;  height: 17.5rem; }
.evpbt-mc-5 .evpbt-mosaic-tile:nth-child(3) { grid-column: 10 / 13; height: 17.5rem; }
.evpbt-mc-5 .evpbt-mosaic-tile:nth-child(4) { grid-column: 1 / 7;   height: 16.25rem; }
.evpbt-mc-5 .evpbt-mosaic-tile:nth-child(5) { grid-column: 7 / 13;  height: 16.25rem; }

.evpbt-mc-6 .evpbt-mosaic-tile:nth-child(1) { grid-column: 1 / 6;   height: 17.5rem; }
.evpbt-mc-6 .evpbt-mosaic-tile:nth-child(2) { grid-column: 6 / 10;  height: 17.5rem; }
.evpbt-mc-6 .evpbt-mosaic-tile:nth-child(3) { grid-column: 10 / 13; height: 17.5rem; }
.evpbt-mc-6 .evpbt-mosaic-tile:nth-child(4) { grid-column: 1 / 4;   height: 16.25rem; }
.evpbt-mc-6 .evpbt-mosaic-tile:nth-child(5) { grid-column: 4 / 8;   height: 16.25rem; }
.evpbt-mc-6 .evpbt-mosaic-tile:nth-child(6) { grid-column: 8 / 13;  height: 16.25rem; }

.evpbt-mosaic-footer {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 1.25rem;
	margin: 0;
}

.evpbt-mosaic-rule {
	display: block;
	width: 3.75rem;
	height: 0.0625rem;
	background: linear-gradient(90deg, transparent, rgba(212, 196, 168, 0.35), transparent);
}

.evpbt-mosaic-footer-text {
	font-size: 0.62rem;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: rgba(212, 196, 168, 0.4);
}

/* ---------- Bottom call to action ---------- */

.evpbt-bottom {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 1.5rem;
	margin-top: clamp(3rem, 6vw, 5rem);
	padding: clamp(1.75rem, 4vw, 2.75rem);
	border: 1px solid rgba(212, 196, 168, 0.16);
	border-radius: 1.25rem;
	background: linear-gradient(160deg, rgba(255, 255, 255, 0.045) 0%, rgba(255, 255, 255, 0.008) 100%);
}

.evpbt-bottom-title {
	margin: 0 0 0.375rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.4rem, 2.6vw, 1.9rem);
	font-weight: 400;
	line-height: 1.2;
	color: #fff;
}

.evpbt-bottom-title em {
	font-style: italic;
	color: var(--wp--preset--color--rust);
}

.evpbt-bottom-sub {
	margin: 0;
	font-size: 0.85rem;
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.45);
}

/* ================================================
   BESPOKE: MODALS
   ================================================ */

.evpbt-modal-overlay {
	position: fixed;
	inset: 0;
	z-index: 1000;
	display: flex;
	align-items: flex-start;
	justify-content: center;
	padding: clamp(1rem, 4vh, 3rem) 1rem;
	overflow-y: auto;
	background: rgba(0, 0, 0, 0.8);
}

.evpbt-modal {
	position: relative;
	width: 100%;
	margin: auto;
	padding: clamp(1.5rem, 4vw, 2.5rem);
	border: 1px solid rgba(212, 196, 168, 0.2);
	border-radius: 1.25rem;
	background: var(--wp--preset--color--bg-deep);
}

.evpbt-booking {
	max-width: 38rem;
}

.evpbt-detail {
	max-width: 52rem;
}

.evpbt-modal-close {
	position: absolute;
	top: 0.875rem;
	right: 0.875rem;
	z-index: 5;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.25rem;
	height: 2.25rem;
	padding: 0;
	border: 1px solid rgba(255, 255, 255, 0.14);
	border-radius: 50%;
	background: rgba(17, 16, 16, 0.85);
	color: rgba(255, 255, 255, 0.6);
	cursor: pointer;
	transition: color 0.2s ease, border-color 0.2s ease;
}

.evpbt-modal-close svg {
	width: 1rem;
	height: 1rem;
	fill: currentColor;
}

.evpbt-modal-close:hover {
	border-color: rgba(212, 196, 168, 0.4);
	color: #fff;
}

.evpbt-modal-close:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

/* ---------- Detail modal ---------- */

.evpbt-detail {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	gap: 0;
	padding: 0;
	overflow: hidden;
}

.evpbt-detail-img {
	position: relative;
	min-height: 18rem;
	background: rgba(255, 255, 255, 0.04);
}

.evpbt-detail-img img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.evpbt-detail-content {
	padding: clamp(1.5rem, 4vw, 2.5rem);
}

.evpbt-detail-eyebrow {
	margin: 0 0 0.75rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evpbt-detail-title {
	margin: 0 0 1rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.5rem, 3vw, 2rem);
	font-weight: 400;
	line-height: 1.2;
	color: #fff;
}

.evpbt-detail-divider {
	display: block;
	width: 2.5rem;
	height: 0.125rem;
	margin-bottom: 1.25rem;
	background: linear-gradient(90deg, var(--wp--preset--color--gold), var(--wp--preset--color--rust));
}

.evpbt-detail-desc {
	margin: 0 0 1.75rem;
	font-size: 0.9rem;
	line-height: 1.75;
	color: rgba(255, 255, 255, 0.55);
}

.evpbt-detail-cta {
	display: inline-flex;
	align-items: center;
	gap: 0.625rem;
	padding: 0.8rem 1.4rem;
	border: 1px solid var(--wp--preset--color--gold);
	border-radius: 0.5rem;
	background: transparent;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	cursor: pointer;
	transition: background 0.25s ease, color 0.25s ease;
}

.evpbt-detail-cta svg {
	width: 0.9rem;
	height: 0.9rem;
	fill: currentColor;
}

.evpbt-detail-cta:hover {
	background: var(--wp--preset--color--gold);
	color: var(--wp--preset--color--bg-deep);
}

.evpbt-detail-cta:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

/* ---------- Enquiry modal ---------- */

.evpbt-modal-header {
	margin-bottom: 1.25rem;
	padding-right: 2.5rem;
}

.evpbt-modal-title {
	margin: 0 0 0.5rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.5rem, 3vw, 2rem);
	font-weight: 400;
	line-height: 1.2;
	color: #fff;
}

.evpbt-modal-sub {
	margin: 0;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evpbt-modal-tag {
	display: inline-block;
	margin: 0.75rem 0 0;
	padding: 0.35rem 0.75rem;
	border: 1px solid rgba(184, 98, 27, 0.5);
	border-radius: 3.125rem;
	background: rgba(184, 98, 27, 0.14);
	font-size: 0.7rem;
	font-weight: 600;
	color: var(--wp--preset--color--gold-light);
}

.evpbt-modal-note {
	margin: 0 0 1.5rem;
	font-size: 0.85rem;
	line-height: 1.65;
	color: rgba(255, 255, 255, 0.45);
}

.evpbt-fg {
	margin-bottom: 1rem;
}

.evpbt-fl {
	display: block;
	margin-bottom: 0.4rem;
	font-size: 0.68rem;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.6);
}

.evpbt-req {
	color: var(--wp--preset--color--rust);
}

.evpbt-fi {
	width: 100%;
	padding: 0.8rem 0.9rem;
	border: 1px solid rgba(255, 255, 255, 0.14);
	border-radius: 0.5rem;
	background: rgba(0, 0, 0, 0.25);
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.9rem;
	color: #fff;
	transition: border-color 0.2s ease;
}

.evpbt-fi::placeholder {
	color: rgba(255, 255, 255, 0.3);
}

.evpbt-fi:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
	border-color: transparent;
}

.evpbt-fs {
	appearance: none;
	padding-right: 2.25rem;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23D4C4A8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 0.75rem center;
	background-size: 1rem;
}

.evpbt-fs option {
	background: var(--wp--preset--color--bg-deep);
	color: #fff;
}

.evpbt-ft {
	resize: vertical;
	min-height: 5rem;
	line-height: 1.6;
}

.evpbt-form-error {
	margin: 0 0 1rem;
	padding: 0.75rem 0.9rem;
	border: 1px solid var(--ev-form-error);
	border-radius: 0.5rem;
	font-size: 0.85rem;
	line-height: 1.55;
	color: #fff;
}

.evpbt-form-btns {
	display: flex;
	gap: 0.75rem;
	justify-content: flex-end;
	margin-top: 1.5rem;
}

.evpbt-btn {
	padding: 0.85rem 1.5rem;
	border: 1px solid transparent;
	border-radius: 0.5rem;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	cursor: pointer;
	transition: background 0.25s ease, color 0.25s ease, border-color 0.25s ease;
}

.evpbt-btn-primary {
	background: var(--wp--preset--color--rust);
	color: #fff;
}

.evpbt-btn-primary:hover {
	background: var(--wp--preset--color--rust-dark);
}

.evpbt-btn-primary:disabled {
	opacity: 0.6;
	cursor: default;
}

.evpbt-btn-secondary {
	border-color: rgba(255, 255, 255, 0.2);
	background: transparent;
	color: rgba(255, 255, 255, 0.65);
}

.evpbt-btn-secondary:hover {
	border-color: rgba(212, 196, 168, 0.5);
	color: #fff;
}

.evpbt-btn:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

.evpbt-done {
	padding: 1.5rem 0.5rem;
	text-align: center;
}

.evpbt-done-mark {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 3rem;
	height: 3rem;
	margin: 0 auto 1.25rem;
	border: 1px solid rgba(212, 196, 168, 0.35);
	border-radius: 50%;
	font-size: 1.25rem;
	color: var(--wp--preset--color--gold);
}

.evpbt-done-title {
	margin: 0 0 0.75rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.5rem;
	font-weight: 400;
	color: #fff;
}

.evpbt-done-text {
	margin: 0 0 1.5rem;
	font-size: 0.9rem;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.55);
}

/* ================================================
   BESPOKE: BREAKPOINTS
   ================================================ */

@media (max-width: 1024px) {
	.evpbt-hero {
		grid-template-columns: minmax(0, 1fr);
	}

	.evpbt-visual {
		min-height: 20rem;
	}

	.evpbt-item {
		flex: 0 0 calc((100% - 1.25rem) / 2);
		max-width: calc((100% - 1.25rem) / 2);
	}

	/* Off the card edges is not available once the gutter narrows, so
	   the arrows come inside the track. */
	.evpbt-arrow.prev {
		left: 0.25rem;
	}

	.evpbt-arrow.next {
		right: 0.25rem;
	}

	.evpbt-detail {
		grid-template-columns: minmax(0, 1fr);
	}

	.evpbt-detail-img {
		min-height: 14rem;
	}
}

@media (max-width: 768px) {
	.evpbt-item {
		flex: 0 0 82%;
		max-width: 82%;
	}

	.evpbt-mosaic-grid {
		grid-template-columns: repeat(2, 1fr);
		gap: 0.625rem;
	}

	/* One composition on a phone, whatever the tile count, because the
	   twelve column placements above all collapse to the same thing. */
	.evpbt-mosaic-grid[class*='evpbt-mc-'] .evpbt-mosaic-tile {
		grid-column: auto;
		height: 12.5rem;
	}

	.evpbt-mosaic-grid[class*='evpbt-mc-'] .evpbt-mosaic-tile:nth-child(1) {
		grid-column: 1 / 3;
		height: 13.75rem;
	}

	/* The hover caption cannot be reached by touch, so it is always
	   shown and the accent line is always drawn. */
	.evpbt-mosaic-tile::before {
		transform: scaleX(1);
	}

	.evpbt-mosaic-desc {
		display: none;
	}

	.evpbt-bottom {
		flex-direction: column;
		align-items: flex-start;
	}
}

@media (max-width: 480px) {
	.evpbt-item {
		flex: 0 0 88%;
		max-width: 88%;
	}

	.evpbt-stats {
		gap: 1.25rem 1.75rem;
	}

	.evpbt-form-btns {
		flex-direction: column-reverse;
	}

	.evpbt-btn {
		width: 100%;
	}

	.evpbt-mosaic-grid[class*='evpbt-mc-'] .evpbt-mosaic-tile {
		height: 10.3125rem;
	}
}

/* ================================================
   BESPOKE: REDUCED MOTION AND CONTRAST
   ================================================ */

@media (prefers-reduced-motion: reduce) {
	.evpbt-card,
	.evpbt-card::before,
	.evpbt-card-photo img,
	.evpbt-card-divider,
	.evpbt-card-cta-line,
	.evpbt-card-icon,
	.evpbt-arrow,
	.evpbt-dot,
	.evpbt-hero-btn,
	.evpbt-bottom-btn,
	.evpbt-hero-btn svg,
	.evpbt-bottom-btn svg,
	.evpbt-mosaic-tile img,
	.evpbt-mosaic-tile::before,
	.evpbt-mosaic-desc,
	.evpbt-fi,
	.evpbt-btn {
		transition: none;
	}

	.evpbt-card:hover,
	.evpbt-hero-btn:hover,
	.evpbt-bottom-btn:hover,
	.evpbt-card:hover .evpbt-card-photo img,
	.evpbt-mosaic-tile:hover img,
	.evpbt-card:hover .evpbt-card-icon {
		transform: none;
	}

	.evpbt-track {
		scroll-behavior: auto;
	}
}

@media (prefers-contrast: more) {
	.evpbt-card,
	.evpbt-fi,
	.evpbt-bottom,
	.evpbt-modal {
		border-color: #fff;
	}

	.evpbt-hero-desc,
	.evpbt-exp-subtitle,
	.evpbt-card-desc,
	.evpbt-bottom-sub,
	.evpbt-modal-note,
	.evpbt-detail-desc,
	.evpbt-stat-label {
		color: #fff;
	}
}

/* ================================================
   DESTINATION TOURS LISTING
   /destination/{slug}/tours/. No reference capture exists for this
   route, so nothing here is recovered markup. It is assembled from
   parts the design system already has: the shared section header
   treatment, the .destpg- card, and the gold-on-dark control styling
   the enquiry and booking forms established.
   ================================================================== */

.evpdl-page {
	display: block;
	padding: clamp(6rem, 12vw, 9rem) 0 clamp(4rem, 8vw, 6rem);
	background: var(--wp--preset--color--bg-deep);
}

.evpdl-page-head,
.evpdl-listing {
	max-width: 87.5rem;
	margin: 0 auto;
	padding: 0 clamp(1.25rem, 5vw, 5rem);
}

/* ---------- Breadcrumbs ---------- */

.evpdl-crumbs {
	margin-bottom: 1.5rem;
}

.evpdl-crumbs-list {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin: 0;
	padding: 0;
	list-style: none;
	font-size: 0.72rem;
	letter-spacing: 0.06em;
	color: rgba(255, 255, 255, 0.4);
}

.evpdl-crumbs-list li + li::before {
	content: '/';
	margin-right: 0.5rem;
	color: rgba(255, 255, 255, 0.25);
}

.evpdl-crumbs-list a {
	color: rgba(255, 255, 255, 0.55);
	text-decoration: none;
}

.evpdl-crumbs-list a:hover {
	color: var(--wp--preset--color--gold);
}

.evpdl-crumbs-list a:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

.evpdl-crumbs-list [aria-current='page'] {
	color: var(--wp--preset--color--gold);
}

/* ---------- Head ---------- */

.evpdl-page-title {
	margin: 0 0 1rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.2rem, 5vw, 3.6rem);
	font-weight: 400;
	line-height: 1.05;
	color: #fff;
}

.evpdl-page-intro {
	max-width: 42rem;
	margin: 0 0 1.5rem;
	font-size: 0.95rem;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.5);
}

.evpdl-page-back {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	text-decoration: none;
}

.evpdl-page-back svg {
	width: 0.9rem;
	height: 0.9rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
	transition: transform 0.25s ease;
}

.evpdl-page-back:hover svg {
	transform: translateX(-0.2rem);
}

.evpdl-page-back:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

/* ---------- Controls ---------- */

.evpdl-controls {
	margin: 2.5rem 0 1.25rem;
	padding: 1.25rem clamp(1rem, 2.5vw, 1.75rem);
	border: 1px solid rgba(212, 196, 168, 0.14);
	border-radius: 1rem;
	background: rgba(255, 255, 255, 0.02);
}

.evpdl-sort {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	margin-bottom: 1rem;
}

.evpdl-sort-label {
	flex-shrink: 0;
	font-size: 0.68rem;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.6);
}

.evpdl-sort-select {
	appearance: none;
	min-width: 14rem;
	padding: 0.6rem 2.25rem 0.6rem 0.9rem;
	border: 1px solid rgba(255, 255, 255, 0.14);
	border-radius: 0.5rem;
	background-color: rgba(0, 0, 0, 0.25);
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23D4C4A8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 0.75rem center;
	background-size: 1rem;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.85rem;
	color: #fff;
}

.evpdl-sort-select option {
	background: var(--wp--preset--color--bg-deep);
	color: #fff;
}

.evpdl-sort-select:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

/* The panel is open on desktop and collapsed on small screens, decided
   here rather than by script so it is right on first paint. */
.evpdl-filters {
	border-top: 1px solid rgba(212, 196, 168, 0.12);
	padding-top: 1rem;
}

.evpdl-filters-summary {
	display: flex;
	align-items: center;
	gap: 0.625rem;
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	cursor: pointer;
	list-style: none;
}

.evpdl-filters-summary::-webkit-details-marker {
	display: none;
}

.evpdl-filters-summary svg {
	width: 0.9rem;
	height: 0.9rem;
	margin-left: auto;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
	transition: transform 0.25s ease;
}

.evpdl-filters[open] .evpdl-filters-summary svg {
	transform: rotate(180deg);
}

.evpdl-filters-summary:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

.evpdl-filters-count {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 1.25rem;
	height: 1.25rem;
	padding: 0 0.375rem;
	border-radius: 3.125rem;
	background: var(--wp--preset--color--rust);
	font-size: 0.65rem;
	color: #fff;
}

.evpdl-filters-body {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
	gap: 1.25rem 1.75rem;
	padding-top: 1.25rem;
}

.evpdl-facet {
	margin: 0;
	padding: 0;
	border: 0;
	min-width: 0;
}

.evpdl-facet-legend {
	padding: 0;
	margin-bottom: 0.625rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.45);
}

.evpdl-facet-options {
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
}

/* Twelve months read as a wrapping row rather than a tall column. */
.evpdl-facet-options--months {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0.5rem 0.75rem;
}

.evpdl-check {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	font-size: 0.8rem;
	line-height: 1.35;
	color: rgba(255, 255, 255, 0.7);
	cursor: pointer;
}

.evpdl-check input {
	flex-shrink: 0;
	width: 1rem;
	height: 1rem;
	margin: 0;
	accent-color: var(--wp--preset--color--rust);
	cursor: pointer;
}

.evpdl-check:hover {
	color: #fff;
}

.evpdl-check input:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

.evpdl-reset {
	justify-self: start;
	align-self: end;
	padding: 0.55rem 1rem;
	border: 1px solid rgba(255, 255, 255, 0.2);
	border-radius: 0.5rem;
	background: transparent;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.65rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.65);
	cursor: pointer;
	transition: border-color 0.2s ease, color 0.2s ease;
}

.evpdl-reset:hover {
	border-color: var(--wp--preset--color--gold);
	color: #fff;
}

.evpdl-reset:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

/* ---------- Count ---------- */

.evpdl-count {
	margin: 0 0 1.5rem;
	font-size: 0.75rem;
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.4);
}

/* ---------- Grid ---------- */

.evpdl-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 1.5rem;
	align-items: stretch;
	transition: opacity 0.2s ease;
}

.is-loading .evpdl-grid {
	opacity: 0.45;
}

/* The card is the shared .destpg-card. The carousel pins it to 20rem so
   the track can scroll; in a grid the cell decides, so the modifier
   releases the three width declarations and nothing else. */
.destpg-card--grid {
	flex: 1 1 auto;
	min-width: 0;
	max-width: none;
	height: 100%;
}

/* ---------- Empty states ---------- */

.evpdl-empty,
.evpdl-noresults {
	max-width: 34rem;
	margin: 3rem auto;
	padding: 2.5rem 1.75rem;
	border: 1px solid rgba(212, 196, 168, 0.16);
	border-radius: 1.25rem;
	background: rgba(255, 255, 255, 0.02);
	text-align: center;
}

.evpdl-empty-title,
.evpdl-noresults-title {
	margin: 0 0 0.75rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.5rem;
	font-weight: 400;
	color: #fff;
}

.evpdl-empty-text,
.evpdl-noresults-text {
	margin: 0 0 1.75rem;
	font-size: 0.9rem;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.5);
}

.evpdl-empty-btn,
.evpdl-noresults-btn {
	display: inline-flex;
	align-items: center;
	gap: 0.625rem;
	padding: 0.85rem 1.5rem;
	border: 0;
	border-radius: 0.5rem;
	background: var(--wp--preset--color--rust);
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: #fff;
	text-decoration: none;
	cursor: pointer;
	transition: background 0.25s ease;
}

.evpdl-empty-btn svg {
	width: 1rem;
	height: 1rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.evpdl-empty-btn:hover,
.evpdl-noresults-btn:hover {
	background: var(--wp--preset--color--rust-dark);
}

.evpdl-empty-btn:focus-visible,
.evpdl-noresults-btn:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

/* ---------- Pagination ---------- */

.evpdl-pagination {
	margin-top: 3rem;
}

.evpdl-pagination-list {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 0.5rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.evpdl-pagination-list .page-numbers {
	display: flex;
	align-items: center;
	justify-content: center;
	min-width: 2.75rem;
	height: 2.75rem;
	padding: 0 0.875rem;
	border: 1px solid rgba(212, 196, 168, 0.2);
	border-radius: 0.5rem;
	font-size: 0.8rem;
	font-weight: 600;
	color: rgba(255, 255, 255, 0.7);
	text-decoration: none;
	transition: border-color 0.2s ease, background 0.2s ease, color 0.2s ease;
}

.evpdl-pagination-list a.page-numbers:hover {
	border-color: var(--wp--preset--color--gold);
	color: #fff;
}

.evpdl-pagination-list a.page-numbers:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

.evpdl-pagination-list .page-numbers.current {
	border-color: var(--wp--preset--color--rust);
	background: var(--wp--preset--color--rust);
	color: #fff;
}

.evpdl-pagination-list .page-numbers.dots {
	border-color: transparent;
	color: rgba(255, 255, 255, 0.35);
}

/* ================================================
   404
   The theme had none, so every missing URL rendered a header and a
   footer with nothing between them.
   ================================================ */

.evp-404 {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 60vh;
	padding: clamp(6rem, 12vw, 9rem) clamp(1.25rem, 5vw, 5rem) clamp(4rem, 8vw, 6rem);
	background: var(--wp--preset--color--bg-deep);
}

.evp-404-inner {
	max-width: 34rem;
	text-align: center;
}

.evp-404-code {
	margin: 0 0 1rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(3.5rem, 10vw, 6rem);
	line-height: 1;
	color: rgba(212, 196, 168, 0.22);
}

.evp-404-title {
	margin: 0 0 1rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.75rem, 4vw, 2.5rem);
	font-weight: 400;
	color: #fff;
}

.evp-404-text {
	margin: 0 0 2rem;
	font-size: 0.95rem;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.5);
}

.evp-404-links {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 1.25rem;
}

.evp-404-btn {
	display: inline-flex;
	align-items: center;
	gap: 0.625rem;
	padding: 0.9rem 1.6rem;
	border-radius: 0.5rem;
	background: var(--wp--preset--color--rust);
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: #fff;
	text-decoration: none;
	transition: background 0.25s ease;
}

.evp-404-btn svg {
	width: 1rem;
	height: 1rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.evp-404-btn:hover {
	background: var(--wp--preset--color--rust-dark);
}

.evp-404-link {
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evp-404-btn:focus-visible,
.evp-404-link:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

/* ================================================
   TOURS LISTING: BREAKPOINTS
   ================================================ */

@media (max-width: 1024px) {
	.evpdl-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 768px) {
	.evpdl-sort {
		flex-direction: column;
		align-items: stretch;
		gap: 0.5rem;
	}

	.evpdl-sort-select {
		min-width: 0;
		width: 100%;
	}

	/* Collapsed by default on a phone, where the panel would otherwise
	   push the first card below the fold. */
	.evpdl-filters:not([open]) .evpdl-filters-body {
		display: none;
	}

	.evpdl-filters-body {
		grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
	}
}

@media (max-width: 480px) {
	.evpdl-grid {
		grid-template-columns: minmax(0, 1fr);
	}

	.evpdl-pagination-list .page-numbers {
		min-width: 2.25rem;
		height: 2.25rem;
		padding: 0 0.5rem;
	}
}

@media (prefers-reduced-motion: reduce) {
	.evpdl-grid,
	.evpdl-page-back svg,
	.evpdl-filters-summary svg,
	.evpdl-reset,
	.evpdl-pagination-list .page-numbers,
	.evpdl-empty-btn,
	.evpdl-noresults-btn,
	.evp-404-btn {
		transition: none;
	}

	.evpdl-page-back:hover svg {
		transform: none;
	}
}

@media (prefers-contrast: more) {
	.evpdl-controls,
	.evpdl-empty,
	.evpdl-noresults,
	.evpdl-pagination-list .page-numbers {
		border-color: #fff;
	}

	.evpdl-page-intro,
	.evpdl-count,
	.evpdl-check,
	.evpdl-empty-text,
	.evpdl-noresults-text,
	.evp-404-text {
		color: #fff;
	}
}

/* ================================================
   SCHEDULED DEPARTURES
   /scheduled-departures/. Rebuilt from
   salvage/scheduled-departures-LIVE-20260511.html. Dropped on the way
   in: the uniqid prefix, the !important on the empty state, and the
   CSS background-image the cards used for photography.
   ================================================================== */

/* Availability colours. Tokens rather than three one-off hex values,
   for the reason the IUCN scale is tokenised: they encode a state, they
   appear on the badge, the dot and the card, and three places is three
   chances for them to drift apart. */
:root {
	--ev-dep-available: #6fcf97;
	--ev-dep-limited: #f1c40f;
	--ev-dep-full: #e07070;
}

.evpsd {
	display: block;
	background: var(--wp--preset--color--bg-deep);
}

/* ---------- Hero ---------- */

.evpsd-hero {
	padding: clamp(7rem, 13vw, 10rem) 0 clamp(2.5rem, 5vw, 4rem);
	border-bottom: 1px solid rgba(212, 196, 168, 0.12);
}

.evpsd-hero-inner,
.evpsd-filterbar-inner,
.evpsd-list,
.evpsd-cta-inner {
	max-width: 87.5rem;
	margin: 0 auto;
	padding: 0 clamp(1.25rem, 5vw, 5rem);
}

.evpsd-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0 0 1.25rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
}

.evpsd-eyebrow::before {
	content: '';
	display: block;
	flex-shrink: 0;
	width: 1.75rem;
	height: 0.09375rem;
	background: var(--wp--preset--color--rust);
}

.evpsd-title {
	margin: 0 0 1rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.2rem, 5vw, 3.6rem);
	font-weight: 400;
	line-height: 1.05;
	color: #fff;
}

.evpsd-title em {
	font-style: italic;
	color: var(--wp--preset--color--rust);
}

.evpsd-hero-sub {
	max-width: 44rem;
	margin: 0;
	font-size: 0.95rem;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.5);
}

/* ---------- Filter bar ---------- */

.evpsd-filterbar {
	position: sticky;
	top: 0;
	z-index: 10;
	padding: 1rem 0;
	border-bottom: 1px solid rgba(212, 196, 168, 0.12);
	background: rgba(17, 16, 16, 0.94);
	backdrop-filter: blur(0.75rem);
}

.evpsd-filterbar-inner {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.75rem 1.25rem;
}

.evpsd-filter-label {
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.4);
}

.evpsd-pills {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
}

.evpsd-pill {
	padding: 0.45rem 0.9rem;
	border: 1px solid rgba(212, 196, 168, 0.2);
	border-radius: 3.125rem;
	background: transparent;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.72rem;
	font-weight: 600;
	letter-spacing: 0.04em;
	color: rgba(255, 255, 255, 0.6);
	cursor: pointer;
	transition: border-color 0.2s ease, background 0.2s ease, color 0.2s ease;
}

.evpsd-pill:hover {
	border-color: rgba(212, 196, 168, 0.45);
	color: #fff;
}

.evpsd-pill.is-active {
	border-color: var(--wp--preset--color--rust);
	background: var(--wp--preset--color--rust);
	color: #fff;
}

.evpsd-pill:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

.evpsd-toggle {
	display: flex;
	align-items: center;
	gap: 0.625rem;
	margin-left: auto;
	font-size: 0.75rem;
	color: rgba(255, 255, 255, 0.6);
	cursor: pointer;
}

/* The checkbox stays in the tab order and the accessibility tree; only
   its appearance is replaced by the track beside it. */
.evpsd-toggle input {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}

.evpsd-toggle-track {
	position: relative;
	display: block;
	flex-shrink: 0;
	width: 2.25rem;
	height: 1.25rem;
	border: 1px solid rgba(212, 196, 168, 0.25);
	border-radius: 3.125rem;
	background: rgba(0, 0, 0, 0.3);
	transition: background 0.25s ease, border-color 0.25s ease;
}

.evpsd-toggle-track::after {
	content: '';
	position: absolute;
	top: 0.1875rem;
	left: 0.1875rem;
	width: 0.75rem;
	height: 0.75rem;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.6);
	transition: transform 0.25s ease, background 0.25s ease;
}

.evpsd-toggle input:checked + .evpsd-toggle-track {
	border-color: var(--wp--preset--color--rust);
	background: var(--wp--preset--color--rust);
}

.evpsd-toggle input:checked + .evpsd-toggle-track::after {
	transform: translateX(1rem);
	background: #fff;
}

.evpsd-toggle input:focus-visible + .evpsd-toggle-track {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

/* ---------- Month groups ---------- */

.evpsd-list {
	padding-top: clamp(2.5rem, 5vw, 4rem);
	padding-bottom: clamp(3rem, 6vw, 5rem);
}

.evpsd-month + .evpsd-month {
	margin-top: clamp(2.5rem, 5vw, 4rem);
}

.evpsd-month-header {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0.75rem 1.25rem;
	margin-bottom: 1.5rem;
	padding-bottom: 0.875rem;
	border-bottom: 1px solid rgba(212, 196, 168, 0.14);
}

.evpsd-month-name {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.5rem, 3vw, 2.1rem);
	font-weight: 400;
	color: #fff;
}

.evpsd-month-name em {
	font-style: italic;
	color: var(--wp--preset--color--gold);
}

.evpsd-month-count {
	margin: 0;
	font-size: 0.68rem;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.4);
}

.evpsd-cards {
	display: grid;
	gap: 1rem;
}

/* ---------- Card ---------- */

.evpsd-card {
	display: grid;
	grid-template-columns: 16rem minmax(0, 1fr) 14rem;
	overflow: hidden;
	border: 1px solid rgba(212, 196, 168, 0.12);
	border-radius: 1.25rem;
	background: rgba(255, 255, 255, 0.02);
	transition: transform 0.35s ease, border-color 0.35s ease;
}

.evpsd-card:hover {
	transform: translateY(-0.25rem);
	border-color: rgba(212, 196, 168, 0.3);
}

.evpsd-card.is-full {
	opacity: 0.55;
}

.evpsd-card.is-full:hover {
	transform: none;
	border-color: rgba(212, 196, 168, 0.12);
}

.evpsd-card-image {
	position: relative;
	overflow: hidden;
	background: rgba(255, 255, 255, 0.04);
	min-height: 11rem;
}

.evpsd-card-image img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.6s ease;
}

.evpsd-card:not(.is-full):hover .evpsd-card-image img {
	transform: scale(1.05);
}

.evpsd-card-body {
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 0.5rem;
	padding: 1.5rem;
}

.evpsd-card-country {
	margin: 0;
	font-size: 0.6rem;
	font-weight: 700;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evpsd-card-title {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.15rem, 2vw, 1.4rem);
	font-weight: 500;
	line-height: 1.25;
}

.evpsd-card-title a {
	color: #fff;
	text-decoration: none;
}

.evpsd-card-title a:hover {
	color: var(--wp--preset--color--gold);
}

.evpsd-card-title a:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

.evpsd-card-dates {
	margin: 0;
	font-size: 0.9rem;
	color: rgba(255, 255, 255, 0.75);
}

.evpsd-card-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 1rem;
	margin: 0;
}

.evpsd-card-meta-item {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	font-size: 0.78rem;
	color: rgba(255, 255, 255, 0.45);
}

.evpsd-card-meta-item svg {
	width: 0.85rem;
	height: 0.85rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 1.8;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.evpsd-card-aside {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	justify-content: center;
	gap: 0.75rem;
	padding: 1.5rem;
	border-left: 1px solid rgba(212, 196, 168, 0.1);
}

/* ---------- Availability badge ---------- */

.evpsd-badge {
	display: inline-flex;
	align-items: center;
	gap: 0.45rem;
	margin: 0;
	padding: 0.3rem 0.7rem;
	border-radius: 3.125rem;
	font-size: 0.65rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
}

.evpsd-badge-dot {
	display: block;
	width: 0.4rem;
	height: 0.4rem;
	border-radius: 50%;
	background: currentColor;
}

.evpsd-badge--available {
	border: 1px solid rgba(111, 207, 151, 0.28);
	background: rgba(111, 207, 151, 0.12);
	color: var(--ev-dep-available);
}

.evpsd-badge--limited {
	border: 1px solid rgba(241, 196, 15, 0.28);
	background: rgba(241, 196, 15, 0.12);
	color: var(--ev-dep-limited);
}

.evpsd-badge--full {
	border: 1px solid rgba(224, 112, 112, 0.28);
	background: rgba(224, 112, 112, 0.12);
	color: var(--ev-dep-full);
}

/* Only the limited dot pulses, and only when motion is welcome. It is
   the one state that is telling you to hurry. */
@media (prefers-reduced-motion: no-preference) {
	.evpsd-badge--limited .evpsd-badge-dot {
		animation: evpsd-pulse 2s ease-in-out infinite;
	}
}

@keyframes evpsd-pulse {
	0%, 100% { opacity: 1; }
	50% { opacity: 0.35; }
}

/* ---------- Price ---------- */

.evpsd-price {
	margin: 0;
}

.evpsd-price-from,
.evpsd-price-pp {
	display: block;
	font-size: 0.58rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.35);
}

.evpsd-price-amount {
	display: block;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.5rem;
	line-height: 1.2;
	color: #fff;
}

.evpsd-price.is-on-sale .evpsd-price-amount {
	color: var(--ev-sale-gold);
}

.evpsd-price-was {
	margin-left: 0.4em;
	font-size: 0.62em;
	color: rgba(255, 255, 255, 0.4);
}

/* ---------- Book button ---------- */

.evpsd-book-btn {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	width: 100%;
	padding: 0.7rem 1.1rem;
	border: 0;
	border-radius: 0.5rem;
	background: var(--wp--preset--color--rust);
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.65rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: #fff;
	text-decoration: none;
	cursor: pointer;
	transition: background 0.25s ease;
}

.evpsd-book-btn svg {
	width: 0.9rem;
	height: 0.9rem;
	margin-left: auto;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
	transition: transform 0.25s ease;
}

.evpsd-book-btn:hover {
	background: var(--wp--preset--color--rust-dark);
}

.evpsd-book-btn:hover svg {
	transform: translateX(0.2rem);
}

.evpsd-book-btn:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

.evpsd-book-btn:disabled {
	border: 1px solid rgba(255, 255, 255, 0.16);
	background: transparent;
	color: rgba(255, 255, 255, 0.4);
	cursor: default;
}

/* ---------- Empty states ---------- */

.evpsd-empty {
	max-width: 34rem;
	margin: 3rem auto;
	padding: 3rem 1.75rem;
	border: 1px solid rgba(212, 196, 168, 0.16);
	border-radius: 1.25rem;
	background: rgba(255, 255, 255, 0.02);
	text-align: center;
}

.evpsd-empty--none {
	margin-top: clamp(3rem, 6vw, 5rem);
	margin-bottom: clamp(3rem, 6vw, 5rem);
}

.evpsd-empty-title {
	margin: 0 0 0.75rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.6rem;
	font-weight: 400;
	color: #fff;
}

.evpsd-empty-text {
	margin: 0 auto 1.75rem;
	max-width: 30rem;
	font-size: 0.9rem;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.5);
}

.evpsd-empty-btn {
	display: inline-flex;
	align-items: center;
	gap: 0.625rem;
	padding: 0.85rem 1.5rem;
	border: 0;
	border-radius: 0.5rem;
	background: var(--wp--preset--color--rust);
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: #fff;
	text-decoration: none;
	cursor: pointer;
	transition: background 0.25s ease;
}

.evpsd-empty-btn svg {
	width: 1rem;
	height: 1rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.evpsd-empty-btn:hover {
	background: var(--wp--preset--color--rust-dark);
}

.evpsd-empty-btn:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

/* ---------- Footer CTA ---------- */

.evpsd-cta {
	padding: clamp(3rem, 7vw, 5rem) 0 clamp(4rem, 8vw, 6rem);
	border-top: 1px solid rgba(212, 196, 168, 0.12);
	background: linear-gradient(160deg, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.005) 100%);
}

.evpsd-cta-inner {
	max-width: 48rem;
	text-align: center;
}

.evpsd-cta-eyebrow {
	margin: 0 0 1rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evpsd-cta-title {
	margin: 0 0 1rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.6rem, 3.4vw, 2.4rem);
	font-weight: 400;
	line-height: 1.2;
	color: #fff;
}

.evpsd-cta-title em {
	font-style: italic;
	color: var(--wp--preset--color--rust);
}

.evpsd-cta-text {
	margin: 0 auto 2rem;
	max-width: 38rem;
	font-size: 0.9rem;
	line-height: 1.75;
	color: rgba(255, 255, 255, 0.5);
}

.evpsd-cta-btn {
	display: inline-flex;
	align-items: center;
	gap: 0.75rem;
	padding: 1rem 1.9rem;
	border-radius: 0.5rem;
	background: var(--wp--preset--color--rust);
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: #fff;
	text-decoration: none;
	transition: background 0.25s ease, transform 0.25s ease;
}

.evpsd-cta-btn svg {
	width: 1rem;
	height: 1rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.evpsd-cta-btn:hover {
	background: var(--wp--preset--color--rust-dark);
	transform: translateY(-1px);
}

.evpsd-cta-btn:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

/* ================================================
   SCHEDULED DEPARTURES: BREAKPOINTS
   ================================================ */

@media (max-width: 1024px) {
	.evpsd-card {
		grid-template-columns: 12rem minmax(0, 1fr) 12rem;
	}

	.evpsd-card-body,
	.evpsd-card-aside {
		padding: 1.25rem;
	}
}

@media (max-width: 768px) {
	/* The three column card becomes one column: picture, then the
	   detail, then the price and the button. */
	.evpsd-card {
		grid-template-columns: minmax(0, 1fr);
	}

	.evpsd-card-image {
		min-height: 0;
		aspect-ratio: 16 / 9;
	}

	.evpsd-card-aside {
		flex-direction: row;
		flex-wrap: wrap;
		align-items: center;
		gap: 0.75rem 1rem;
		border-top: 1px solid rgba(212, 196, 168, 0.1);
		border-left: 0;
	}

	.evpsd-book-btn {
		width: auto;
		margin-left: auto;
	}

	.evpsd-toggle {
		margin-left: 0;
	}

	.evpsd-filterbar {
		position: static;
	}
}

@media (max-width: 480px) {
	.evpsd-card-aside {
		flex-direction: column;
		align-items: stretch;
	}

	.evpsd-book-btn {
		width: 100%;
		margin-left: 0;
		justify-content: center;
	}

	.evpsd-book-btn svg {
		margin-left: 0;
	}
}

@media (prefers-reduced-motion: reduce) {
	.evpsd-card,
	.evpsd-card-image img,
	.evpsd-pill,
	.evpsd-toggle-track,
	.evpsd-toggle-track::after,
	.evpsd-book-btn,
	.evpsd-book-btn svg,
	.evpsd-empty-btn,
	.evpsd-cta-btn {
		transition: none;
	}

	.evpsd-card:hover,
	.evpsd-cta-btn:hover,
	.evpsd-card:not(.is-full):hover .evpsd-card-image img,
	.evpsd-book-btn:hover svg {
		transform: none;
	}
}

@media (prefers-contrast: more) {
	.evpsd-card,
	.evpsd-pill,
	.evpsd-empty,
	.evpsd-toggle-track {
		border-color: #fff;
	}

	.evpsd-hero-sub,
	.evpsd-card-meta-item,
	.evpsd-month-count,
	.evpsd-empty-text,
	.evpsd-cta-text,
	.evpsd-price-from,
	.evpsd-price-pp {
		color: #fff;
	}
}

/* ================================================
   LOCATION PAGE: OVERVIEW
   Rebuilt from salvage/location-page/01-location-overview.html, which
   is location_overview v8.3. Dropped on the way in: the uniqid prefix,
   the 100vw full bleed hack, and the ninety-odd !important the hero
   slides carried to defeat third-party img rules, which are not needed
   here because nothing else on this site styles a bare img.
   ================================================================== */

/*
   v8.3 CONTRAST SPLIT
   The version notes record the brand rust measuring about 3.98:1 on
   charcoal, which fails AA for small text. v8.3 split the token: a
   lighter rust for small text on dark, and a darker one for surfaces
   carrying white text. The brand rust stays what it is and is still
   correct for borders, fills and large display type.
*/
:root {
	--ev-rust-text: #D2762E;
	--ev-rust-btn: #A85614;
}

/* ---------- Hero ---------- */

.evplo-hero {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	min-height: 100vh;
	/* svh wins where it is supported: on iOS, vh includes the toolbar
	   that is about to slide away, so a 100vh hero is short by its
	   height the moment anyone scrolls. */
	min-height: 100svh;
	overflow: hidden;
	text-align: center;
	background: var(--wp--preset--color--bg-deep);
}

/*
   The background stack. Absolutely positioned real images, NOT
   background-attachment: fixed, which blanks the whole element on iOS.
   The script translates this container for the parallax; will-change
   keeps that on the compositor.
*/
.evplo-hero-bg {
	position: absolute;
	inset: 0;
	z-index: 0;
	overflow: hidden;
	will-change: transform;
}

.evplo-slide {
	position: absolute;
	inset: 0;
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center 30%;
	opacity: 0;
	transition: opacity 1.5s ease;
}

.evplo-slide.is-active {
	opacity: 1;
}

.evplo-hero-scrim {
	position: absolute;
	inset: 0;
	background:
		linear-gradient(to bottom, rgba(17, 16, 16, 0.55) 0%, rgba(17, 16, 16, 0.35) 40%, rgba(17, 16, 16, 0.92) 100%),
		radial-gradient(ellipse at center, transparent 30%, rgba(17, 16, 16, 0.5) 100%);
}

.evplo-crumbs {
	position: absolute;
	top: clamp(6rem, 11vw, 8.5rem);
	left: 0;
	right: 0;
	z-index: 2;
	padding: 0 clamp(1.25rem, 5vw, 5rem);
}

.evplo-crumbs-list {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 0.5rem;
	margin: 0;
	padding: 0;
	list-style: none;
	font-size: 0.72rem;
	color: rgba(255, 255, 255, 0.5);
}

.evplo-crumbs-list li + li::before {
	content: '/';
	margin-right: 0.5rem;
	color: rgba(255, 255, 255, 0.3);
}

.evplo-crumbs-list a {
	color: rgba(255, 255, 255, 0.7);
	text-decoration: none;
}

.evplo-crumbs-list a:hover {
	color: var(--wp--preset--color--gold);
}

.evplo-crumbs-list a:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

.evplo-crumbs-list [aria-current='page'] {
	color: var(--wp--preset--color--gold);
}

.evplo-hero-content {
	position: relative;
	z-index: 2;
	max-width: 56rem;
	padding: 0 clamp(1.25rem, 5vw, 5rem);
}

.evplo-hero-badge {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 1rem;
	margin: 0 0 1.5rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	/* Small rust text on a dark ground: the AA-safe token, not the
	   brand rust. See the note at the top of this block. */
	color: var(--ev-rust-text);
}

.evplo-hero-badge-line {
	display: block;
	width: 2.5rem;
	height: 0.0625rem;
	background: currentColor;
	opacity: 0.6;
}

.evplo-hero-title {
	margin: 0 0 1.25rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.4rem, 6vw, 4.5rem);
	font-weight: 400;
	line-height: 1.05;
	color: #fff;
}

.evplo-hero-subtitle {
	max-width: 42rem;
	margin: 0 auto 2rem;
	font-size: clamp(1rem, 2.2vw, 1.25rem);
	line-height: 1.6;
	color: var(--ev-soft);
}

.evplo-hero-ctas {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 1rem;
}

.evplo-btn {
	display: inline-flex;
	align-items: center;
	gap: 0.625rem;
	padding: 0.95rem 1.75rem;
	border: 1px solid transparent;
	border-radius: 0.5rem;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	text-decoration: none;
	transition: background 0.25s ease, border-color 0.25s ease, transform 0.25s ease;
}

/* White on rust: the darker token, which carries white at AA. */
.evplo-btn--primary {
	background: var(--ev-rust-btn);
	color: #fff;
}

.evplo-btn--primary:hover {
	background: var(--wp--preset--color--rust-dark);
	transform: translateY(-1px);
}

.evplo-btn--outline {
	border-color: rgba(255, 255, 255, 0.3);
	color: #fff;
}

.evplo-btn--outline:hover {
	border-color: var(--wp--preset--color--gold);
	color: var(--wp--preset--color--gold);
}

.evplo-btn:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

.evplo-scroll {
	position: absolute;
	bottom: 2rem;
	left: 50%;
	z-index: 2;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0.75rem;
	transform: translateX(-50%);
}

.evplo-scroll-label {
	font-size: 0.55rem;
	font-weight: 700;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.4);
}

.evplo-scroll-line {
	display: block;
	width: 0.0625rem;
	height: 3rem;
	background: linear-gradient(to bottom, rgba(212, 196, 168, 0.6), transparent);
}

/* ---------- Quick nav ---------- */

.evplo-quicknav {
	position: sticky;
	top: 0;
	z-index: 20;
	border-bottom: 1px solid rgba(212, 196, 168, 0.12);
	background: rgba(17, 16, 16, 0.94);
	backdrop-filter: blur(0.75rem);
}

.evplo-quicknav-inner {
	display: flex;
	gap: 0.25rem;
	max-width: 87.5rem;
	margin: 0 auto;
	padding: 0 clamp(1.25rem, 5vw, 5rem);
	overflow-x: auto;
	scrollbar-width: none;
}

.evplo-quicknav-inner::-webkit-scrollbar {
	display: none;
}

.evplo-navitem {
	flex-shrink: 0;
	padding: 1.1rem 1rem;
	border-bottom: 0.125rem solid transparent;
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.5);
	text-decoration: none;
	transition: color 0.2s ease, border-color 0.2s ease;
}

.evplo-navitem:hover {
	color: #fff;
}

.evplo-navitem.is-active {
	border-bottom-color: var(--wp--preset--color--rust);
	color: var(--wp--preset--color--gold);
}

.evplo-navitem:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: -2px;
}

/* ---------- Overview ---------- */

.evplo-overview {
	padding: clamp(3.5rem, 7vw, 6rem) 0;
	background: var(--wp--preset--color--bg-deep);
}

.evplo-overview-inner {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 24rem;
	gap: clamp(2rem, 5vw, 4rem);
	max-width: 87.5rem;
	margin: 0 auto;
	padding: 0 clamp(1.25rem, 5vw, 5rem);
	align-items: start;
}

/*
   The reveal. The content is fully visible by default and only
   animates when the script says the hero has scrolled far enough,
   which is what keeps it readable with no JavaScript: the class is
   never added, and the default is the finished state.
*/
@media (prefers-reduced-motion: no-preference) {
	.evplo-overview-left > *,
	.evplo-sidebar {
		opacity: 0;
		transform: translateY(1rem);
		transition: opacity 0.6s ease, transform 0.6s ease;
	}

	.evplo-revealed .evplo-overview-left > *,
	.evplo-revealed .evplo-sidebar {
		opacity: 1;
		transform: translateY(0);
	}

	.evplo-overview-left > :nth-child(2) { transition-delay: 0.06s; }
	.evplo-overview-left > :nth-child(3) { transition-delay: 0.12s; }
	.evplo-overview-left > :nth-child(4) { transition-delay: 0.18s; }
	.evplo-overview-left > :nth-child(5) { transition-delay: 0.24s; }
	.evplo-sidebar { transition-delay: 0.18s; }
}

/* No left column, so the carousel is the section and takes the width. */
.evplo-overview-inner--tours-only {
	grid-template-columns: minmax(0, 1fr);
	max-width: 32rem;
}

.evplo-overview-eyebrow {
	margin: 0 0 1rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--ev-rust-text);
}

.evplo-title-row {
	display: flex;
	align-items: center;
	gap: 1rem;
	margin-bottom: 0.75rem;
}

/* The parent country's flag. 46x30 is the aspect the capture uses. */
.evplo-flag {
	flex: 0 0 2.875rem;
	width: 2.875rem;
	height: 1.875rem;
	object-fit: cover;
	border: 0.125rem solid rgba(255, 255, 255, 0.15);
	border-radius: 0.25rem;
}

.evplo-overview-title {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.9rem, 4vw, 2.9rem);
	font-weight: 400;
	line-height: 1.1;
	color: #fff;
}

.evplo-tagline {
	margin: 0 0 1.5rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1rem, 2.2vw, 1.2rem);
	font-style: italic;
	line-height: 1.5;
	color: var(--wp--preset--color--gold);
	opacity: 0.85;
}

.evplo-stats {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0;
	margin: 0 0 1.75rem;
	overflow: hidden;
	border: 1px solid rgba(255, 255, 255, 0.08);
	border-radius: 0.75rem;
	background: rgba(255, 255, 255, 0.02);
}

.evplo-stat {
	padding: 0.9rem 0.75rem;
	border-right: 1px solid rgba(255, 255, 255, 0.08);
	border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}

.evplo-stat:nth-child(even) {
	border-right: 0;
}

.evplo-stat:nth-last-child(-n+2) {
	border-bottom: 0;
}

.evplo-stat-label {
	margin: 0 0 0.3rem;
	font-size: 0.58rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	opacity: 0.8;
}

.evplo-stat-value {
	margin: 0;
	font-size: 0.88rem;
	font-weight: 600;
	line-height: 1.3;
	color: #fff;
}

.evplo-desc {
	margin: 0 0 1.75rem;
	font-size: 0.95rem;
	line-height: 1.8;
	color: rgba(255, 255, 255, 0.78);
}

.evplo-desc p {
	margin: 0 0 1rem;
}

.evplo-desc p:last-child {
	margin-bottom: 0;
}

.evplo-desc strong {
	font-weight: 600;
	color: var(--wp--preset--color--gold-light);
}

.evplo-desc a {
	color: var(--wp--preset--color--gold);
	text-decoration: underline;
	text-underline-offset: 0.2em;
}

/* Features: a wrapping row of pills, one short string each. */
.evplo-features {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.evplo-feature {
	display: inline-flex;
	align-items: center;
	padding: 0.45rem 0.8rem;
	border: 1px solid rgba(212, 196, 168, 0.2);
	border-radius: 3.125rem;
	background: rgba(212, 196, 168, 0.08);
	font-size: 0.73rem;
	font-weight: 500;
	letter-spacing: 0.03em;
	color: var(--wp--preset--color--gold);
}

/* ---------- Featured tours carousel ---------- */

/*
   The panel only. The carousel inside it is the shared
   .evpfx- component, which this page does not restyle: the location
   copy of that chrome was a second implementation of one thing, and
   the one it was a copy of had the clip that this one was missing.
*/
.evplo-carousel-panel {
	position: sticky;
	top: 5rem;
	padding: 1.25rem;
	border: 1px solid rgba(212, 196, 168, 0.14);
	border-radius: 1.25rem;
	background: rgba(255, 255, 255, 0.02);
}

/* The sidebar is a grid item beside a minmax(0, 1fr) column. Its own
   automatic minimum still has to be told to be zero. */
.evplo-sidebar {
	min-width: 0;
}

/* ---------- Map and gallery ---------- */

.evplo-mapgallery {
	display: grid;
	grid-template-columns: 40% 60%;
	gap: 1.25rem;
	max-width: 87.5rem;
	margin: 0 auto;
	padding: 0 clamp(1.25rem, 5vw, 5rem) clamp(3.5rem, 7vw, 6rem);
	align-items: stretch;
}

.evplo-map-wrap {
	position: relative;
	min-height: 30rem;
	overflow: hidden;
	border: 1px solid rgba(212, 196, 168, 0.14);
	border-radius: 1.25rem;
}

.evplo-map {
	position: absolute;
	inset: 0;
	background: rgba(255, 255, 255, 0.03);
}

.evplo-map-float {
	position: absolute;
	right: 1rem;
	bottom: 1rem;
	left: 1rem;
	/* Above Leaflet's own panes, which sit in the 400s. */
	z-index: 500;
	padding: 1.1rem 1.25rem;
	border: 1px solid rgba(212, 196, 168, 0.2);
	border-radius: 0.875rem;
	background: rgba(17, 16, 16, 0.92);
	backdrop-filter: blur(0.5rem);
}

.evplo-map-float-label {
	margin: 0 0 0.3rem;
	font-size: 0.55rem;
	font-weight: 700;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--ev-rust-text);
}

.evplo-map-float-title {
	margin: 0 0 0.3rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.15rem;
	font-weight: 400;
	color: #fff;
}

.evplo-map-float-coords {
	margin: 0 0 0.75rem;
	font-size: 0.72rem;
	color: rgba(255, 255, 255, 0.45);
}

.evplo-map-float-link {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	font-size: 0.65rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	text-decoration: none;
}

.evplo-map-float-link svg {
	width: 0.85rem;
	height: 0.85rem;
	fill: currentColor;
}

.evplo-map-float-link:hover {
	color: var(--wp--preset--color--gold-light);
}

.evplo-map-float-link:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

/* A grid child defaults to min-width:auto, which refuses to shrink
   below its content and pushes the whole row wide. */
.evplo-gallery-wrap {
	min-width: 0;
}

.evplo-gallery-wrap--full {
	grid-column: 1 / -1;
}

.evplo-gallery {
	position: relative;
	overflow: hidden;
	border: 1px solid rgba(212, 196, 168, 0.14);
	border-radius: 1.25rem;
	background: rgba(255, 255, 255, 0.03);
}

.evplo-gallery-track {
	position: relative;
	aspect-ratio: 3 / 2;
}

.evplo-gallery-slide {
	position: absolute;
	inset: 0;
	margin: 0;
	opacity: 0;
	transition: opacity 0.5s ease, transform 0.25s ease;
	pointer-events: none;
}

.evplo-gallery-slide.is-active {
	opacity: 1;
	pointer-events: auto;
}

.evplo-gallery-slide img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.evplo-gallery-track.is-dragging .evplo-gallery-slide {
	transition: opacity 0.5s ease;
}

.evplo-gallery-caption {
	position: absolute;
	right: 0;
	bottom: 0;
	left: 0;
	padding: 2.5rem 1.25rem 1.1rem;
	background: linear-gradient(to top, rgba(5, 5, 5, 0.9), transparent);
	font-size: 0.78rem;
	line-height: 1.5;
	color: rgba(255, 255, 255, 0.85);
}

.evplo-gallery-counter {
	position: absolute;
	top: 1rem;
	right: 1rem;
	z-index: 2;
	margin: 0;
	padding: 0.3rem 0.65rem;
	border-radius: 3.125rem;
	background: rgba(0, 0, 0, 0.55);
	font-size: 0.65rem;
	font-weight: 600;
	color: #fff;
}

.evplo-gallery-nav {
	position: absolute;
	top: 50%;
	z-index: 2;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.5rem;
	height: 2.5rem;
	padding: 0;
	border: 1px solid rgba(212, 196, 168, 0.3);
	border-radius: 50%;
	background: rgba(17, 16, 16, 0.85);
	color: var(--wp--preset--color--gold);
	cursor: pointer;
	transform: translateY(-50%);
	transition: background 0.2s ease, border-color 0.2s ease;
}

.evplo-gallery-nav svg {
	width: 1rem;
	height: 1rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.evplo-gallery-nav.prev { left: 0.75rem; }
.evplo-gallery-nav.next { right: 0.75rem; }

.evplo-gallery-nav:hover {
	border-color: var(--wp--preset--color--gold);
	background: var(--ev-rust-btn);
	color: #fff;
}

.evplo-gallery-nav:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

/* One scrollable row, never a wrapping grid. */
.evplo-thumbs {
	display: flex;
	gap: 0.5rem;
	margin-top: 0.75rem;
	padding-bottom: 0.25rem;
	overflow-x: auto;
	scrollbar-width: none;
}

.evplo-thumbs::-webkit-scrollbar {
	display: none;
}

.evplo-thumb {
	flex: 0 0 5rem;
	width: 5rem;
	height: 3.25rem;
	padding: 0;
	overflow: hidden;
	border: 1px solid rgba(212, 196, 168, 0.16);
	border-radius: 0.5rem;
	background: transparent;
	cursor: pointer;
	opacity: 0.55;
	transition: opacity 0.2s ease, border-color 0.2s ease;
}

.evplo-thumb img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.evplo-thumb:hover {
	opacity: 0.85;
}

.evplo-thumb.is-active {
	border-color: var(--wp--preset--color--gold);
	opacity: 1;
}

.evplo-thumb:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

/* ================================================
   LOCATION OVERVIEW: BREAKPOINTS
   ================================================ */

@media (max-width: 1200px) {
	/*
	   :not(), because this rule and the --tours-only modifier have the
	   same specificity and this one is further down the file, so it was
	   winning. A location with nothing but a tours carousel carries
	   --tours-only, which asks for one column inside a 32rem cap; this
	   rule handed it two, and the 20rem second column left the first
	   one 132px wide. The carousel, the track and the featured card all
	   collapsed to fit, and the card's own button then stood 7px proud
	   of it. Only between 1025 and 1200: at 1024 the next rule happens
	   to ask for one column anyway, which is why it looked fine either
	   side of the band.
	*/
	.evplo-overview-inner:not(.evplo-overview-inner--tours-only) {
		grid-template-columns: minmax(0, 1fr) 20rem;
	}
}

@media (max-width: 1024px) {
	.evplo-overview-inner {
		grid-template-columns: minmax(0, 1fr);
	}

	.evplo-carousel-panel {
		position: static;
	}

	/* The map column is gone below this width, and the script checks
	   the same number before it fetches Leaflet, so a phone never
	   downloads the library for a column it will not show. */
	.evplo-mapgallery {
		grid-template-columns: minmax(0, 1fr);
	}

	.evplo-map-wrap {
		display: none;
	}
}

@media (max-width: 768px) {
	.evplo-stats {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.evplo-hero-ctas {
		flex-direction: column;
		align-items: stretch;
	}

	.evplo-btn {
		justify-content: center;
	}

	.evplo-gallery-track {
		aspect-ratio: 4 / 3;
	}
}

@media (min-width: 1025px) {
	.evplo-stats {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}

	.evplo-stat {
		border-bottom: 0;
	}

	.evplo-stat:nth-child(even) {
		border-right: 1px solid rgba(255, 255, 255, 0.08);
	}

	.evplo-stat:last-child {
		border-right: 0;
	}
}

@media (max-width: 480px) {
	.evplo-crumbs {
		display: none;
	}

	.evplo-thumb {
		flex-basis: 4rem;
		width: 4rem;
		height: 2.75rem;
	}
}

@media (prefers-reduced-motion: reduce) {
	.evplo-slide,
	.evplo-btn,
	.evplo-navitem,
	.evplo-gallery-slide,
	.evplo-gallery-nav,
	.evplo-thumb {
		transition: none;
	}

	.evplo-btn--primary:hover {
		transform: none;
	}

	/* No parallax, and the stack stays where the markup put it. */
	.evplo-hero-bg {
		transform: none;
	}

	.evplo-thumbs {
		scroll-behavior: auto;
	}
}

@media (prefers-contrast: more) {
	.evplo-stats,
	.evplo-feature,
	.evplo-carousel-panel,
	.evplo-gallery,
	.evplo-map-wrap,
	.evplo-thumb {
		border-color: #fff;
	}

	.evplo-hero-subtitle,
	.evplo-desc,
	.evplo-map-float-coords {
		color: #fff;
	}
}

/* ================================================
   LOCATION PAGE: A CLOSER LOOK
   The field journal. Rebuilt from
   salvage/location-page/04-a-closer-look.html. Dropped on the way in:
   the uniqid prefix and the 100vw full bleed hack.

   Nothing else on the site does this, so unlike the tours and bespoke
   sections beside it there was nothing to reuse.
   ================================================================== */

.evpal {
	padding: clamp(3.5rem, 7vw, 6rem) 0;
	background: var(--wp--preset--color--bg-deep);
}

.evpal-wrap {
	max-width: 87.5rem;
	margin: 0 auto;
	padding: 0 clamp(1.25rem, 5vw, 5rem);
}

.evpal-head {
	margin-bottom: clamp(2rem, 4vw, 3rem);
}

.evpal-eyebrow {
	margin: 0 0 0.75rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(0.9rem, 2vw, 1.1rem);
	font-style: italic;
	color: var(--wp--preset--color--gold);
	opacity: 0.85;
}

.evpal-heading {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.9rem, 4vw, 3rem);
	font-weight: 400;
	line-height: 1.1;
	color: #fff;
}

.evpal-heading em {
	font-style: italic;
	color: var(--wp--preset--color--rust);
}

/*
   Plate, prose, index. The row height is fixed so the prose scrolls
   inside its column rather than the whole section growing with the
   longest chapter, which is what makes the plate stay put while you
   read and what the scroll affordance below refers to.
*/
.evpal-grid {
	display: grid;
	grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr) 14rem;
	gap: clamp(1.25rem, 3vw, 2.5rem);
	align-items: stretch;
	height: clamp(34rem, 68vh, 44rem);
}

/* ---------- The plate ---------- */

.evpal-plate {
	position: relative;
	overflow: hidden;
	border: 1px solid rgba(212, 196, 168, 0.16);
	border-radius: 1.25rem;
	background: rgba(255, 255, 255, 0.03);
}

/*
   Two images, one slot. Both are stacked and transparent; whichever
   carries is-front is the one you see. The incoming image is decoded
   before the class moves, so the crossfade never lands half painted.
*/
.evpal-plate-img {
	position: absolute;
	inset: 0;
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	opacity: 0;
	transition: opacity 0.6s ease;
}

.evpal-plate-img.is-front {
	opacity: 1;
}

.evpal-plate-cap {
	position: absolute;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 2;
	display: flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0;
	padding: 3rem 1.25rem 1.1rem;
	background: linear-gradient(to top, rgba(5, 5, 5, 0.9), transparent);
}

.evpal-plate-line {
	display: block;
	flex: 0 0 1.75rem;
	width: 1.75rem;
	height: 0.0625rem;
	background: var(--wp--preset--color--gold);
	opacity: 0.7;
}

.evpal-plate-loc {
	font-size: 0.68rem;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.75);
}

/* ---------- The reading column ---------- */

.evpal-read {
	display: flex;
	flex-direction: column;
	min-width: 0;
	min-height: 0;
}

.evpal-read:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 0.5rem;
}

.evpal-count {
	flex: 0 0 auto;
	margin: 0 0 1.25rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.4);
}

.evpal-count b {
	font-weight: 700;
	color: var(--ev-rust-text);
}

.evpal-of {
	color: rgba(255, 255, 255, 0.3);
}

.evpal-body {
	position: relative;
	flex: 1 1 auto;
	min-height: 0;
}

.evpal-chapter {
	display: flex;
	flex-direction: column;
	height: 100%;
	min-height: 0;
}

.evpal-title {
	flex: 0 0 auto;
	margin: 0 0 1rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.4rem, 2.6vw, 1.9rem);
	font-weight: 400;
	line-height: 1.2;
	color: #fff;
}

/* The prose is the thing that scrolls. */
.evpal-prose {
	flex: 1 1 auto;
	min-height: 0;
	padding-right: 1rem;
	overflow-y: auto;
	font-size: 0.95rem;
	line-height: 1.8;
	color: rgba(242, 236, 226, 0.66);
	scrollbar-width: thin;
	scrollbar-color: rgba(212, 196, 168, 0.3) transparent;
}

.evpal-prose p {
	margin: 0 0 1.1rem;
}

.evpal-prose p:last-child {
	margin-bottom: 0;
}

.evpal-prose strong {
	font-weight: 600;
	color: var(--wp--preset--color--gold-light);
}

.evpal-prose a {
	color: var(--wp--preset--color--gold);
	text-decoration: underline;
	text-underline-offset: 0.2em;
}

/*
   The scroll affordance. Hidden by default and revealed by the class
   the script adds only while the active prose can scroll further, so
   it is never a gradient over finished text. Not an entrance
   animation, whatever the class name in the capture suggested.
*/
.evpal-fade {
	position: absolute;
	right: 1rem;
	bottom: 0;
	left: 0;
	height: 4.5rem;
	background: linear-gradient(to top, var(--wp--preset--color--bg-deep) 10%, transparent);
	opacity: 0;
	transition: opacity 0.25s ease;
	pointer-events: none;
}

.evpal-body.show-fade .evpal-fade {
	opacity: 1;
}

/* ---------- The index ---------- */

.evpal-index {
	display: flex;
	flex-direction: column;
	gap: 0.875rem;
	min-width: 0;
	padding-left: 1.25rem;
	border-left: 1px solid rgba(212, 196, 168, 0.16);
}

.evpal-index-label {
	font-size: 0.55rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.35);
}

.evpal-index-inner {
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
	min-width: 0;
	overflow: hidden;
}

.evpal-item {
	display: flex;
	align-items: baseline;
	gap: 0.75rem;
	padding: 0.7rem 0.5rem 0.7rem 0;
	border: 0;
	border-bottom: 1px solid rgba(212, 196, 168, 0.1);
	background: transparent;
	font-family: var(--wp--preset--font-family--montserrat);
	text-align: left;
	cursor: pointer;
	transition: color 0.2s ease, border-color 0.2s ease;
}

.evpal-item-num {
	flex: 0 0 auto;
	font-size: 0.6rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	color: rgba(255, 255, 255, 0.3);
	transition: color 0.2s ease;
}

.evpal-item-title {
	min-width: 0;
	font-size: 0.82rem;
	line-height: 1.4;
	color: rgba(255, 255, 255, 0.55);
	transition: color 0.2s ease;
}

.evpal-item:hover .evpal-item-title {
	color: #fff;
}

.evpal-item[aria-selected='true'] {
	border-bottom-color: var(--wp--preset--color--rust);
}

.evpal-item[aria-selected='true'] .evpal-item-num {
	color: var(--ev-rust-text);
}

.evpal-item[aria-selected='true'] .evpal-item-title {
	color: var(--wp--preset--color--gold);
}

.evpal-item:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

/* ================================================
   A CLOSER LOOK: BREAKPOINTS
   ================================================ */

@media (max-width: 1200px) {
	.evpal-grid {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) 11rem;
	}
}

@media (max-width: 1024px) {
	/*
	   One column: the index becomes a horizontal strip above the
	   plate, then the plate, then the prose. The fixed row height goes
	   with it, because nothing is sitting beside anything any more.
	*/
	.evpal-grid {
		grid-template-columns: minmax(0, 1fr);
		height: auto;
	}

	.evpal-plate {
		order: 2;
		aspect-ratio: 3 / 2;
	}

	.evpal-read {
		order: 3;
	}

	.evpal-index {
		order: 1;
		flex-direction: column;
		gap: 0.625rem;
		padding-left: 0;
		padding-bottom: 0.875rem;
		border-left: 0;
		border-bottom: 1px solid rgba(212, 196, 168, 0.16);
	}

	.evpal-index-inner {
		flex-direction: row;
		gap: 0.5rem;
		overflow-x: auto;
		scrollbar-width: none;
	}

	.evpal-index-inner::-webkit-scrollbar {
		display: none;
	}

	.evpal-item {
		flex: 0 0 auto;
		align-items: center;
		padding: 0.55rem 0.9rem;
		border: 1px solid rgba(212, 196, 168, 0.2);
		border-radius: 3.125rem;
	}

	.evpal-item[aria-selected='true'] {
		border-color: var(--wp--preset--color--rust);
		background: rgba(184, 98, 27, 0.14);
	}

	/* The prose scrolls with the page here, not inside a fixed box. */
	.evpal-prose {
		padding-right: 0;
		overflow-y: visible;
	}

	.evpal-chapter {
		height: auto;
	}

	.evpal-fade {
		display: none;
	}
}

@media (max-width: 480px) {
	.evpal-item-title {
		font-size: 0.75rem;
	}

	.evpal-plate {
		aspect-ratio: 4 / 3;
	}
}

@media (prefers-reduced-motion: reduce) {
	.evpal-plate-img,
	.evpal-fade,
	.evpal-item,
	.evpal-item-num,
	.evpal-item-title {
		transition: none;
	}

	.evpal-index-inner {
		scroll-behavior: auto;
	}
}

@media (prefers-contrast: more) {
	.evpal-plate,
	.evpal-index,
	.evpal-item {
		border-color: #fff;
	}

	.evpal-prose,
	.evpal-item-title,
	.evpal-plate-loc {
		color: #fff;
	}
}


/* ================================================
   LOCATION PAGE: STORIES
   location_blog_section v2.1. A different component from the
   destination page's stories, not the same one twice: there the
   featured story's picture IS the section background and the others
   are a thumbnail row; here the featured story is a 44/56 horizontal
   card and the others are a three-up carousel.
   ================================================================== */

.evpls {
	padding: clamp(3.5rem, 7vw, 6rem) 0;
	background: var(--wp--preset--color--bg-deep);
}

.evpls-inner {
	max-width: 87.5rem;
	margin: 0 auto;
	padding: 0 clamp(1.25rem, 5vw, 5rem);
}

.evpls-header {
	margin-bottom: clamp(2rem, 4vw, 3rem);
}

.evpls-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0 0 1.25rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--ev-rust-text);
}

.evpls-eyebrow::before {
	content: '';
	display: block;
	flex-shrink: 0;
	width: 1.75rem;
	height: 0.09375rem;
	background: var(--wp--preset--color--rust);
}

.evpls-title {
	margin: 0 0 1rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.9rem, 4vw, 3rem);
	font-weight: 400;
	line-height: 1.1;
	color: #fff;
}

.evpls-title em {
	font-style: italic;
	color: var(--wp--preset--color--rust);
}

/* v2.1 raised this from 0.38 to 0.72 alpha for AA. */
.evpls-descriptor {
	max-width: 42rem;
	margin: 0;
	font-size: 0.9rem;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.72);
}

/* ---------- The featured story ---------- */

.evpls-featured {
	position: relative;
	display: grid;
	grid-template-columns: 44% 56%;
	margin-bottom: 1.5rem;
	overflow: hidden;
	border: 1px solid rgba(212, 196, 168, 0.14);
	border-radius: 1.25rem;
	background: rgba(255, 255, 255, 0.025);
	transition: border-color 0.3s ease, transform 0.3s ease;
}

.evpls-featured:hover {
	border-color: rgba(212, 196, 168, 0.3);
	transform: translateY(-0.25rem);
}

/*
   The whole card is one link, laid over it. The heading is not a
   second anchor to the same place, so the card is announced once.
*/
.evpls-featured-link,
.evpls-card-link {
	position: absolute;
	inset: 0;
	z-index: 2;
}

.evpls-featured-link:focus-visible,
.evpls-card-link:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

.evpls-featured-media {
	position: relative;
	overflow: hidden;
	min-height: 18rem;
}

.evpls-featured-media img,
.evpls-card-media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.6s ease;
}

.evpls-featured:hover .evpls-featured-media img,
.evpls-card:hover .evpls-card-media img {
	transform: scale(1.04);
}

.evpls-featured-body {
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 0.875rem;
	padding: clamp(1.5rem, 3vw, 2.5rem);
}

.evpls-meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.75rem;
	margin: 0;
	font-size: 0.6rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
}

.evpls-cat {
	color: var(--wp--preset--color--gold);
}

.evpls-read {
	color: rgba(255, 255, 255, 0.4);
}

.evpls-featured-title {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.3rem, 2.6vw, 1.9rem);
	font-weight: 400;
	line-height: 1.25;
	color: #fff;
}

/* v2.1 raised excerpts from 0.55 to 0.68 alpha for AA. */
.evpls-featured-excerpt,
.evpls-card-excerpt {
	margin: 0;
	font-size: 0.875rem;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.68);
}

.evpls-more {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	font-size: 0.65rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evpls-more svg {
	width: 0.9rem;
	height: 0.9rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
	transition: transform 0.25s ease;
}

.evpls-featured:hover .evpls-more svg {
	transform: translateX(0.2rem);
}

/* ---------- The carousel ---------- */

.evpls-carousel {
	position: relative;
}

.evpls-track {
	display: flex;
	gap: 1.25rem;
	margin: 0;
	padding: 0 0 0.5rem;
	list-style: none;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
}

.evpls-track::-webkit-scrollbar {
	display: none;
}

.evpls-item {
	flex: 0 0 calc((100% - 2.5rem) / 3);
	max-width: calc((100% - 2.5rem) / 3);
	scroll-snap-align: start;
	display: flex;
}

.evpls-card {
	position: relative;
	display: flex;
	flex-direction: column;
	width: 100%;
	overflow: hidden;
	border: 1px solid rgba(212, 196, 168, 0.12);
	border-radius: 1rem;
	background: rgba(255, 255, 255, 0.02);
	transition: border-color 0.3s ease, transform 0.3s ease;
}

.evpls-card:hover {
	border-color: rgba(212, 196, 168, 0.28);
	transform: translateY(-0.25rem);
}

.evpls-card-media {
	overflow: hidden;
	aspect-ratio: 16 / 10;
}

.evpls-card-body {
	display: flex;
	flex: 1;
	flex-direction: column;
	gap: 0.625rem;
	padding: 1.125rem 1.25rem 1.375rem;
}

.evpls-card-title {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.05rem;
	font-weight: 400;
	line-height: 1.3;
	color: #fff;
}

.evpls-arrow {
	position: absolute;
	top: 35%;
	z-index: 3;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	padding: 0;
	border: 1px solid rgba(212, 196, 168, 0.3);
	border-radius: 50%;
	background: rgba(17, 16, 16, 0.92);
	color: var(--wp--preset--color--gold);
	cursor: pointer;
	transition: background 0.2s ease, border-color 0.2s ease, opacity 0.2s ease;
}

.evpls-arrow.prev { left: -1.375rem; }
.evpls-arrow.next { right: -1.375rem; }

.evpls-arrow svg {
	width: 1.125rem;
	height: 1.125rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.evpls-arrow:hover:not(:disabled) {
	border-color: var(--wp--preset--color--gold);
	background: var(--ev-rust-btn);
	color: #fff;
}

.evpls-arrow:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

.evpls-arrow:disabled {
	opacity: 0.3;
	cursor: default;
}

.evpls-dots {
	display: flex;
	justify-content: center;
	gap: 0.5rem;
	margin-top: 1.5rem;
}

.evpls-dot {
	width: 0.5rem;
	height: 0.5rem;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: rgba(212, 196, 168, 0.28);
	cursor: pointer;
	transition: background 0.25s ease, width 0.25s ease;
}

.evpls-dot.is-active {
	width: 1.5rem;
	border-radius: 0.25rem;
	background: var(--wp--preset--color--rust);
}

.evpls-dot:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

.evpls-all {
	margin: 2rem 0 0;
	text-align: center;
}

.evpls-all-link {
	display: inline-flex;
	align-items: center;
	gap: 0.625rem;
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	text-decoration: none;
}

.evpls-all-link svg {
	width: 1rem;
	height: 1rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.evpls-all-link:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

/* ================================================
   LOCATION PAGE: BEST TIME TO VISIT
   The single source of seasonal data on the site.
   ================================================ */

/*
   No new rating palette. --ev-season-* already exists for the
   destination page's When to Go, and the whole point of this section
   is that seasonal data has one source; two palettes for one fact is
   the same drift in colour form. When When to Go is rebuilt to
   aggregate from locations it will still be reading these.
*/

.evpbtv {
	position: relative;
	background: var(--wp--preset--color--bg-deep);
}

.evpbtv-layout {
	position: relative;
	display: grid;
	grid-template-columns: 45% 55%;
	min-height: 44rem;
}

/* The image panel is absolute inside its column so the crossfading
   stack can sit on top of each other without the column collapsing. */
.evpbtv-image-side {
	position: relative;
	overflow: hidden;
}

.evpbtv-panel {
	position: absolute;
	inset: 0;
	opacity: 0;
	transition: opacity 0.7s ease;
}

.evpbtv-panel.is-active {
	opacity: 1;
}

.evpbtv-panel img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.evpbtv-scrim {
	position: absolute;
	inset: 0;
	background: linear-gradient(to right, rgba(17, 16, 16, 0.25), rgba(17, 16, 16, 0.75));
}

.evpbtv-content {
	padding: clamp(3rem, 6vw, 5rem) clamp(1.25rem, 4vw, 4rem);
}

/* Centred, which is the capture's, and the one header on the page that
   is: it sits in a narrow column beside the image rather than across
   the full width, so left-aligning it would leave it hanging. */
.evpbtv-header {
	margin-bottom: 2rem;
	text-align: center;
}

.evpbtv-eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0 0 1rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--ev-rust-text);
}

.evpbtv-eyebrow::before {
	content: '';
	display: block;
	flex-shrink: 0;
	width: 1.75rem;
	height: 0.09375rem;
	background: var(--wp--preset--color--rust);
}

.evpbtv-title {
	margin: 0 0 0.75rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.8rem, 3.6vw, 2.7rem);
	font-weight: 400;
	line-height: 1.1;
	color: #fff;
}

.evpbtv-title em {
	font-style: italic;
	color: var(--wp--preset--color--rust);
}

.evpbtv-subtitle {
	max-width: 34rem;
	margin: 0 auto;
	font-size: 0.95rem;
	line-height: 1.65;
	color: rgba(255, 255, 255, 0.6);
}

/* ---------- Season accordion ---------- */

.evpbtv-seasons {
	display: grid;
	gap: 0.625rem;
	margin-bottom: 2.5rem;
}

.evpbtv-season {
	border: 1px solid rgba(212, 196, 168, 0.14);
	border-radius: 0.875rem;
	background: rgba(255, 255, 255, 0.02);
	transition: border-color 0.25s ease;
}

.evpbtv-season.is-open {
	border-color: rgba(212, 196, 168, 0.3);
}

.evpbtv-season-heading {
	margin: 0;
	font: inherit;
}

.evpbtv-season-btn {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto auto;
	align-items: center;
	gap: 1rem;
	width: 100%;
	padding: 1rem 1.25rem;
	border: 0;
	border-radius: 0.875rem;
	background: transparent;
	font-family: var(--wp--preset--font-family--montserrat);
	text-align: left;
	cursor: pointer;
}

.evpbtv-season-btn:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: -2px;
}

.evpbtv-season-name-group {
	min-width: 0;
}

.evpbtv-season-name {
	display: block;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.15rem;
	line-height: 1.25;
	color: #fff;
}

.evpbtv-season-months {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	margin-top: 0.25rem;
	font-size: 0.7rem;
	color: rgba(255, 255, 255, 0.45);
}

.evpbtv-season-months svg {
	width: 0.8rem;
	height: 0.8rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.evpbtv-weather {
	display: flex;
	flex-wrap: wrap;
	gap: 0.375rem;
}

.evpbtv-pill {
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
	padding: 0.25rem 0.55rem;
	border: 1px solid rgba(255, 255, 255, 0.12);
	border-radius: 3.125rem;
	font-size: 0.65rem;
	color: rgba(255, 255, 255, 0.6);
}

.evpbtv-pill svg {
	width: 0.7rem;
	height: 0.7rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.evpbtv-badge {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	padding: 0.28rem 0.65rem;
	border-radius: 3.125rem;
	font-size: 0.6rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	white-space: nowrap;
	color: #fff;
}

.evpbtv-badge-dot {
	display: block;
	width: 0.4rem;
	height: 0.4rem;
	border-radius: 50%;
	background: currentColor;
}

/*
   Same five treatments as the destination page's badges, including the
   dark text on gold, which is there because white on #C4A046 does not
   reach AA. The legend swatch carries the same modifier, so the
   swatch and the badge cannot disagree.
*/
.evpbtv-badge--peak       { background: var(--ev-season-peak); }
.evpbtv-badge--great      { background: var(--ev-season-great); color: #1a1000; }
.evpbtv-badge--good       { background: var(--ev-season-good); }
.evpbtv-badge--shoulder   { background: var(--ev-season-shoulder); }
.evpbtv-badge--off_season { background: var(--ev-season-off); }

.evpbtv-detail {
	padding: 0 1.25rem 1.25rem;
}

.evpbtv-season-desc {
	margin: 0;
	font-size: 0.875rem;
	line-height: 1.75;
	color: rgba(255, 255, 255, 0.68);
}

/* What the season is actually good for. Short pills, same shape as a
   tour day's activity badges. */
.evpbtv-tags {
	display: flex;
	flex-wrap: wrap;
	gap: 0.375rem;
	margin: 0.875rem 0 0;
	padding: 0;
	list-style: none;
}

.evpbtv-tag {
	display: inline-flex;
	align-items: center;
	gap: 0.25rem;
	padding: 0.1875rem 0.625rem;
	border-radius: 3.125rem;
	background: rgba(212, 196, 168, 0.12);
	font-size: 0.72rem;
	font-weight: 500;
	color: rgba(255, 255, 255, 0.85);
}

.evpbtv-tag svg {
	width: 0.6875rem;
	height: 0.6875rem;
	fill: none;
	stroke: var(--wp--preset--color--gold);
	stroke-width: 2.5;
	stroke-linecap: round;
	stroke-linejoin: round;
}

/* ---------- The twelve month bar ---------- */

.evpbtv-months-label {
	margin: 0 0 0.5rem;
	font-size: 0.58rem;
	font-weight: 700;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.35);
}

.evpbtv-climate {
	margin: 0 0 1rem;
	font-size: 0.85rem;
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.55);
}

.evpbtv-months {
	margin-bottom: 1.25rem;
}

.evpbtv-month-bar {
	width: 100%;
	border-collapse: collapse;
	table-layout: fixed;
}

.evpbtv-month-cell {
	padding: 0.5rem 0.2rem 0.55rem;
	border-bottom: 0.1875rem solid rgba(255, 255, 255, 0.08);
	font-weight: 600;
	text-align: center;
	vertical-align: bottom;
}

.evpbtv-month-name {
	display: block;
	font-size: 0.6rem;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.55);
}

/*
   The dot is decoration; the rating is also in the cell as text for a
   screen reader, so colour is never the only thing carrying it.
*/
.evpbtv-month-dot {
	display: block;
	width: 0.35rem;
	height: 0.35rem;
	margin: 0.35rem auto 0;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.2);
}

.evpbtv-month-cell.is-peak       { border-bottom-color: var(--ev-season-peak); }
.evpbtv-month-cell.is-great      { border-bottom-color: var(--ev-season-great); }
.evpbtv-month-cell.is-good       { border-bottom-color: var(--ev-season-good); }
.evpbtv-month-cell.is-shoulder   { border-bottom-color: var(--ev-season-shoulder); }
.evpbtv-month-cell.is-off_season { border-bottom-color: var(--ev-season-off); }

.evpbtv-month-cell.is-peak       .evpbtv-month-dot { background: var(--ev-season-peak); }
.evpbtv-month-cell.is-great      .evpbtv-month-dot { background: var(--ev-season-great); }
.evpbtv-month-cell.is-good       .evpbtv-month-dot { background: var(--ev-season-good); }
.evpbtv-month-cell.is-shoulder   .evpbtv-month-dot { background: var(--ev-season-shoulder); }
.evpbtv-month-cell.is-off_season .evpbtv-month-dot { background: var(--ev-season-off); }

.evpbtv-month-temp {
	padding: 0.45rem 0.2rem 0;
	font-size: 0.65rem;
	text-align: center;
	color: rgba(255, 255, 255, 0.42);
}

.evpbtv-legend {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem 1rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.evpbtv-legend-item {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	font-size: 0.62rem;
	letter-spacing: 0.06em;
	color: rgba(255, 255, 255, 0.45);
}

/* Shape only. The evpbtv-badge-- modifier alongside it is what paints
   the swatch, which is why the legend cannot drift from the badges. */
.evpbtv-legend-dot {
	display: block;
	width: 0.55rem;
	height: 0.55rem;
	border-radius: 50%;
}

/* ================================================
   LOCATION PAGE: GETTING THERE
   ================================================ */

.evpgt {
	background: var(--wp--preset--color--bg-deep);
}

.evpgt-inner {
	max-width: 87.5rem;
	margin: 0 auto;
	padding: clamp(3.5rem, 7vw, 6rem) clamp(1.25rem, 5vw, 5rem) 0;
}

.evpgt-header {
	margin-bottom: 2.5rem;
}

.evpgt-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0 0 1.25rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--ev-rust-text);
}

.evpgt-eyebrow::before {
	content: '';
	display: block;
	flex-shrink: 0;
	width: 1.75rem;
	height: 0.09375rem;
	background: var(--wp--preset--color--rust);
}

.evpgt-title {
	margin: 0 0 1rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.9rem, 4vw, 3rem);
	font-weight: 400;
	line-height: 1.1;
	color: #fff;
}

.evpgt-title em {
	font-style: italic;
	color: var(--wp--preset--color--rust);
}

.evpgt-desc {
	max-width: 38rem;
	margin: 0;
	font-size: 0.9rem;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.55);
}

/* ---------- Route tabs ---------- */

.evpgt-tabs {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin-bottom: 1.5rem;
}

.evpgt-tab {
	padding: 0.7rem 1.2rem;
	border: 1px solid rgba(212, 196, 168, 0.2);
	border-radius: 3.125rem;
	background: transparent;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.72rem;
	font-weight: 600;
	letter-spacing: 0.06em;
	color: rgba(255, 255, 255, 0.6);
	cursor: pointer;
	transition: border-color 0.2s ease, background 0.2s ease, color 0.2s ease;
}

.evpgt-tab:hover {
	border-color: rgba(212, 196, 168, 0.45);
	color: #fff;
}

.evpgt-tab[aria-selected='true'] {
	border-color: var(--wp--preset--color--rust);
	background: var(--ev-rust-btn);
	color: #fff;
}

.evpgt-tab:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

/* One panel is shown; the rest carry the hidden attribute, which the
   global [hidden][hidden] rule already turns off. */
.evpgt-panels {
	margin: 0;
}

.evpgt-tab-name {
	display: inline-block;
}

.evpgt-panel {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 40%;
	gap: 0;
	overflow: hidden;
	border: 1px solid rgba(212, 196, 168, 0.14);
	border-radius: 1.25rem;
	background: rgba(255, 255, 255, 0.02);
}

.evpgt-panel:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

.evpgt-panel-content {
	padding: clamp(1.5rem, 3vw, 2.5rem);
}

.evpgt-panel-title {
	margin: 0 0 1.25rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.3rem, 2.4vw, 1.7rem);
	font-weight: 400;
	line-height: 1.25;
	color: #fff;
}

.evpgt-stats {
	display: flex;
	flex-wrap: wrap;
	gap: 1.25rem 2.5rem;
	margin: 0 0 1.5rem;
	padding-bottom: 1.25rem;
	border-bottom: 1px solid rgba(212, 196, 168, 0.12);
}

.evpgt-stat-label {
	margin: 0 0 0.3rem;
	font-size: 0.58rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	opacity: 0.8;
}

.evpgt-stat-value {
	margin: 0;
	font-size: 0.875rem;
	font-weight: 600;
	line-height: 1.4;
	color: #fff;
}

.evpgt-panel-body {
	margin-bottom: 1.5rem;
	font-size: 0.9rem;
	line-height: 1.8;
	color: rgba(255, 255, 255, 0.68);
}

.evpgt-panel-body p {
	margin: 0 0 1rem;
}

.evpgt-panel-body p:last-child {
	margin-bottom: 0;
}

.evpgt-tip {
	padding: 1rem 1.1rem;
	border-left: 0.1875rem solid var(--wp--preset--color--rust);
	border-radius: 0 0.5rem 0.5rem 0;
	background: rgba(184, 98, 27, 0.1);
}

.evpgt-tip-label {
	margin: 0 0 0.35rem;
	font-size: 0.58rem;
	font-weight: 700;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--ev-rust-text);
}

.evpgt-tip-text {
	margin: 0;
	font-size: 0.85rem;
	line-height: 1.65;
	color: rgba(255, 255, 255, 0.72);
}

.evpgt-panel-visual {
	position: relative;
	min-height: 20rem;
	overflow: hidden;
}

.evpgt-panel-visual img,
.evpgt-cta-visual img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.evpgt-panel-scrim {
	position: absolute;
	inset: 0;
	background: linear-gradient(to right, rgba(17, 16, 16, 0.65), transparent 60%);
}

/* ---------- Mobile route strip ---------- */

.evpgt-mobile {
	display: none;
}

.evpgt-mob-track {
	display: flex;
	gap: 1rem;
	margin: 0;
	padding: 0 0 0.5rem;
	list-style: none;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
}

.evpgt-mob-track::-webkit-scrollbar {
	display: none;
}

.evpgt-mob-item {
	flex: 0 0 86%;
	max-width: 86%;
	scroll-snap-align: start;
}

.evpgt-mob-card {
	overflow: hidden;
	border: 1px solid rgba(212, 196, 168, 0.14);
	border-radius: 1rem;
	background: rgba(255, 255, 255, 0.02);
}

.evpgt-mob-media {
	position: relative;
	aspect-ratio: 16 / 9;
}

.evpgt-mob-media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.evpgt-mob-dur {
	position: absolute;
	left: 0.75rem;
	bottom: 0.75rem;
	margin: 0;
	padding: 0.3rem 0.65rem;
	border-radius: 3.125rem;
	background: rgba(0, 0, 0, 0.65);
	font-size: 0.62rem;
	font-weight: 600;
	color: #fff;
}

.evpgt-mob-body {
	display: grid;
	gap: 0.75rem;
	padding: 1.1rem 1.25rem 1.375rem;
}

.evpgt-mob-title {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.1rem;
	font-weight: 400;
	line-height: 1.3;
	color: #fff;
}

.evpgt-mob-desc {
	margin: 0;
	font-size: 0.85rem;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.68);
}

.evpgt-mob-stats {
	margin: 0;
}

.evpgt-mob-stat dt {
	font-size: 0.55rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	opacity: 0.8;
}

.evpgt-mob-stat dd {
	margin: 0.2rem 0 0;
	font-size: 0.8rem;
	font-weight: 600;
	color: #fff;
}

.evpgt-mob-tip {
	padding: 0.75rem 0.9rem;
	border-left: 0.1875rem solid var(--wp--preset--color--rust);
	border-radius: 0 0.375rem 0.375rem 0;
	background: rgba(184, 98, 27, 0.1);
}

.evpgt-mob-tip-label {
	margin: 0 0 0.25rem;
	font-size: 0.55rem;
	font-weight: 700;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--ev-rust-text);
}

.evpgt-mob-tip-text {
	margin: 0;
	font-size: 0.8rem;
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.72);
}

.evpgt-mob-dots {
	display: flex;
	justify-content: center;
	gap: 0.5rem;
	margin-top: 1.25rem;
}

.evpgt-mob-dot {
	width: 0.5rem;
	height: 0.5rem;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: rgba(212, 196, 168, 0.28);
	cursor: pointer;
	transition: background 0.25s ease, width 0.25s ease;
}

.evpgt-mob-dot.is-active {
	width: 1.5rem;
	border-radius: 0.25rem;
	background: var(--wp--preset--color--rust);
}

.evpgt-mob-dot:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

/* ---------- Plan your trip ---------- */

/* The card is inset from the page gutter, not full bleed. */
.evpgt-cta {
	margin-top: clamp(3rem, 6vw, 5rem);
	padding: 0 clamp(1.25rem, 5vw, 5rem) clamp(3.5rem, 7vw, 6rem);
}

.evpgt-cta-inner {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 40%;
	max-width: 87.5rem;
	margin: 0 auto;
	overflow: hidden;
	border: 1px solid rgba(212, 196, 168, 0.16);
	border-radius: 1.25rem;
	background: linear-gradient(160deg, rgba(255, 255, 255, 0.045) 0%, rgba(255, 255, 255, 0.008) 100%);
}

.evpgt-cta-left {
	padding: clamp(1.75rem, 4vw, 3rem);
}

.evpgt-cta-eyebrow {
	margin: 0 0 0.875rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evpgt-cta-title {
	margin: 0 0 1rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.5rem, 3vw, 2.1rem);
	font-weight: 400;
	line-height: 1.2;
	color: #fff;
}

.evpgt-cta-title em {
	font-style: italic;
	color: var(--wp--preset--color--rust);
}

.evpgt-cta-body {
	margin: 0 0 1.5rem;
	font-size: 0.9rem;
	line-height: 1.75;
	color: rgba(255, 255, 255, 0.68);
}

.evpgt-cta-features {
	display: grid;
	gap: 0.75rem;
	margin: 0 0 2rem;
	padding: 0;
	list-style: none;
}

.evpgt-cta-feature {
	position: relative;
	padding-left: 1.5rem;
	font-size: 0.85rem;
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.7);
}

.evpgt-cta-feature::before {
	content: '';
	position: absolute;
	top: 0.5rem;
	left: 0;
	width: 0.45rem;
	height: 0.45rem;
	border-radius: 50%;
	background: var(--wp--preset--color--rust);
}

.evpgt-cta-btn {
	display: inline-flex;
	align-items: center;
	gap: 0.75rem;
	padding: 0.95rem 1.75rem;
	border: 0;
	border-radius: 0.5rem;
	background: var(--ev-rust-btn);
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: #fff;
	cursor: pointer;
	transition: background 0.25s ease, transform 0.25s ease;
}

.evpgt-cta-btn svg {
	width: 1rem;
	height: 1rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.evpgt-cta-btn:hover {
	background: var(--wp--preset--color--rust-dark);
	transform: translateY(-1px);
}

.evpgt-cta-btn:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

.evpgt-cta-visual {
	position: relative;
	min-height: 18rem;
	overflow: hidden;
}

.evpgt-cta-scrim {
	position: absolute;
	inset: 0;
	background: linear-gradient(to right, rgba(17, 16, 16, 0.6), transparent 55%);
}

/* ---------- The enquiry modal ---------- */

.evpgt-modal-overlay {
	position: fixed;
	inset: 0;
	z-index: 1000;
	display: flex;
	align-items: flex-start;
	justify-content: center;
	padding: clamp(1rem, 4vh, 3rem) 1rem;
	overflow-y: auto;
	background: rgba(0, 0, 0, 0.8);
}

.evpgt-modal {
	position: relative;
	width: 100%;
	max-width: 36rem;
	margin: auto;
	padding: clamp(1.5rem, 4vw, 2.5rem);
	border: 1px solid rgba(212, 196, 168, 0.2);
	border-radius: 1.25rem;
	background: var(--wp--preset--color--bg-deep);
}

.evpgt-modal-close {
	position: absolute;
	top: 0.875rem;
	right: 0.875rem;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.25rem;
	height: 2.25rem;
	padding: 0;
	border: 1px solid rgba(255, 255, 255, 0.14);
	border-radius: 50%;
	background: transparent;
	color: rgba(255, 255, 255, 0.6);
	cursor: pointer;
	transition: color 0.2s ease, border-color 0.2s ease;
}

.evpgt-modal-close svg {
	width: 1rem;
	height: 1rem;
	fill: currentColor;
}

.evpgt-modal-close:hover {
	border-color: rgba(212, 196, 168, 0.4);
	color: #fff;
}

.evpgt-modal-close:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

.evpgt-modal-header {
	margin-bottom: 1rem;
	padding-right: 2.5rem;
}

.evpgt-modal-eyebrow {
	margin: 0 0 0.5rem;
	font-size: 0.6rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evpgt-modal-title {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.4rem, 3vw, 1.9rem);
	font-weight: 400;
	line-height: 1.2;
	color: #fff;
}

.evpgt-modal-note {
	margin: 0 0 1.5rem;
	font-size: 0.85rem;
	line-height: 1.65;
	color: rgba(255, 255, 255, 0.45);
}

.evpgt-fg {
	margin-bottom: 1rem;
}

.evpgt-fl {
	display: block;
	margin-bottom: 0.4rem;
	font-size: 0.68rem;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.6);
}

.evpgt-req {
	color: var(--wp--preset--color--rust);
}

.evpgt-fi {
	width: 100%;
	padding: 0.8rem 0.9rem;
	border: 1px solid rgba(255, 255, 255, 0.14);
	border-radius: 0.5rem;
	background: rgba(0, 0, 0, 0.25);
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.9rem;
	color: #fff;
	transition: border-color 0.2s ease;
}

.evpgt-fi::placeholder {
	color: rgba(255, 255, 255, 0.3);
}

.evpgt-fi:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
	border-color: transparent;
}

.evpgt-ft {
	resize: vertical;
	min-height: 5rem;
	line-height: 1.6;
}

.evpgt-turnstile {
	margin: 1.25rem 0 0;
}

.evpgt-error {
	margin: 0 0 1rem;
	padding: 0.75rem 0.9rem;
	border: 1px solid var(--ev-form-error);
	border-radius: 0.5rem;
	font-size: 0.85rem;
	line-height: 1.55;
	color: #fff;
}

.evpgt-form-btns {
	display: flex;
	gap: 0.75rem;
	justify-content: flex-end;
	margin-top: 1.5rem;
}

.evpgt-btn {
	padding: 0.85rem 1.5rem;
	border: 1px solid transparent;
	border-radius: 0.5rem;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	cursor: pointer;
	transition: background 0.25s ease, color 0.25s ease, border-color 0.25s ease;
}

.evpgt-btn-primary {
	background: var(--ev-rust-btn);
	color: #fff;
}

.evpgt-btn-primary:hover {
	background: var(--wp--preset--color--rust-dark);
}

.evpgt-btn-primary:disabled {
	opacity: 0.6;
	cursor: default;
}

.evpgt-btn-secondary {
	border-color: rgba(255, 255, 255, 0.2);
	background: transparent;
	color: rgba(255, 255, 255, 0.65);
}

.evpgt-btn-secondary:hover {
	border-color: rgba(212, 196, 168, 0.5);
	color: #fff;
}

.evpgt-btn:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

.evpgt-done {
	padding: 1.5rem 0.5rem;
	text-align: center;
}

.evpgt-done-mark {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 3rem;
	height: 3rem;
	margin: 0 auto 1.25rem;
	border: 1px solid rgba(212, 196, 168, 0.35);
	border-radius: 50%;
	font-size: 1.25rem;
	color: var(--wp--preset--color--gold);
}

.evpgt-done-title {
	margin: 0 0 0.75rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.5rem;
	font-weight: 400;
	color: #fff;
}

.evpgt-done-text {
	margin: 0 0 1.5rem;
	font-size: 0.9rem;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.55);
}

/* ================================================
   OTHER COUNTRY LOCATIONS
   The shared destination map, plus the links back out that only a
   location page needs.
   ================================================ */

.evpdm-links {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem 1.5rem;
	margin: 1rem 0 0;
}

.evpdm-link {
	display: inline-flex;
	align-items: center;
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	text-decoration: none;
}

.evpdm-link:hover {
	color: var(--wp--preset--color--gold-light);
}

.evpdm-link:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

/* ================================================
   PASS 3: BREAKPOINTS
   ================================================ */

@media (max-width: 1024px) {
	.evpls-item {
		flex: 0 0 calc((100% - 1.25rem) / 2);
		max-width: calc((100% - 1.25rem) / 2);
	}

	.evpls-arrow.prev { left: 0.25rem; }
	.evpls-arrow.next { right: 0.25rem; }

	/*
	   BTV drops the two column split for a dark overlay: the image
	   becomes the section's background and the content sits on it.
	*/
	.evpbtv-layout {
		grid-template-columns: minmax(0, 1fr);
		min-height: 0;
	}

	.evpbtv-image-side {
		position: absolute;
		inset: 0;
	}

	.evpbtv-scrim {
		background: linear-gradient(to bottom, rgba(17, 16, 16, 0.86), rgba(17, 16, 16, 0.94));
	}

	.evpbtv-content {
		position: relative;
		z-index: 1;
	}

	/* Tabs are hidden below here and the card strip is the section. */
	.evpgt-desktop {
		display: none;
	}

	.evpgt-mobile {
		display: block;
	}

	.evpgt-cta-inner {
		grid-template-columns: minmax(0, 1fr);
	}

	.evpgt-cta-visual {
		order: -1;
		min-height: 14rem;
	}

	.evpgt-cta-scrim {
		background: linear-gradient(to top, rgba(17, 16, 16, 0.7), transparent 60%);
	}
}

@media (max-width: 768px) {
	.evpls-featured {
		grid-template-columns: minmax(0, 1fr);
	}

	.evpls-featured-media {
		min-height: 0;
		aspect-ratio: 16 / 9;
	}

	.evpls-item {
		flex: 0 0 82%;
		max-width: 82%;
	}

	/* Arrows are hidden on a phone: the strip is swiped. */
	.evpls-arrow {
		display: none;
	}

	.evpbtv-season-btn {
		grid-template-columns: minmax(0, 1fr);
		gap: 0.625rem;
	}

	.evpbtv-month-name {
		font-size: 0.5rem;
	}

	.evpbtv-month-temp {
		font-size: 0.55rem;
	}
}

@media (max-width: 480px) {
	.evpls-inner,
	.evpgt-inner {
		padding-left: 1rem;
		padding-right: 1rem;
	}

	.evpls-item {
		flex: 0 0 88%;
		max-width: 88%;
	}

	.evpgt-form-btns {
		flex-direction: column-reverse;
	}

	.evpgt-btn {
		width: 100%;
	}

	/* Twelve columns will not fit legibly, so the bar scrolls. */
	.evpbtv-months {
		overflow-x: auto;
	}

	.evpbtv-month-bar {
		min-width: 30rem;
	}
}

@media (prefers-reduced-motion: reduce) {
	.evpls-featured,
	.evpls-card,
	.evpls-featured-media img,
	.evpls-card-media img,
	.evpls-more svg,
	.evpls-arrow,
	.evpls-dot,
	.evpbtv-panel,
	.evpbtv-season,
	.evpgt-tab,
	.evpgt-mob-dot,
	.evpgt-cta-btn,
	.evpgt-fi,
	.evpgt-btn {
		transition: none;
	}

	.evpls-featured:hover,
	.evpls-card:hover,
	.evpls-featured:hover .evpls-featured-media img,
	.evpls-card:hover .evpls-card-media img,
	.evpls-featured:hover .evpls-more svg,
	.evpgt-cta-btn:hover {
		transform: none;
	}

	.evpls-track,
	.evpgt-mob-track {
		scroll-behavior: auto;
	}
}

@media (prefers-contrast: more) {
	.evpls-featured,
	.evpls-card,
	.evpbtv-season,
	.evpgt-panel,
	.evpgt-mob-card,
	.evpgt-cta-inner,
	.evpgt-fi,
	.evpgt-tab {
		border-color: #fff;
	}

	.evpls-descriptor,
	.evpls-featured-excerpt,
	.evpls-card-excerpt,
	.evpbtv-subtitle,
	.evpbtv-season-desc,
	.evpbtv-climate,
	.evpgt-desc,
	.evpgt-panel-body,
	.evpgt-cta-body,
	.evpgt-cta-feature {
		color: #fff;
	}
}


/* ================================================
   VISUALLY HIDDEN, GLOBALLY

   WordPress core emits .screen-reader-text itself, in gallery captions,
   comment forms and skip links, and expects the theme to define it.
   Nothing here did, so a table caption and twelve month ratings on the
   location page were being read out AND shown. Sections that already
   have their own *-sr-only keep it; new markup uses this.

   clip-path over the old clip: the rectangle stays a rectangle, and
   `clip` is deprecated. Both are set, oldest last, for browsers that
   ignore the new one.
   ================================================ */

.screen-reader-text {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	border: 0;
	overflow: hidden;
	white-space: nowrap;
	clip-path: inset(50%);
	clip: rect(1px, 1px, 1px, 1px);
}

/* A skip link is the one that has to come back. */
.screen-reader-text:focus {
	z-index: 100000;
	top: 0.3125rem;
	left: 0.3125rem;
	width: auto;
	height: auto;
	padding: 0.9375rem 1.4375rem;
	border-radius: 0.1875rem;
	background: var(--wp--preset--color--bg-deep);
	color: #fff;
	font-size: 0.875rem;
	text-decoration: none;
	white-space: normal;
	clip-path: none;
	clip: auto;
}

/* ================================================
   BLOG ARTICLE

   THE ONLY LIGHT PAGE ON THE SITE. White ground, #333 text, with
   exactly two dark blocks: the hero and the end-of-article booking
   block. Everything between is light, including the in-column tour
   highlight, which is the whole point of the v3.1 redesign: the
   article does not go dark to sell something halfway through.

   Rebuilt from salvage/blog-page/RECOVERED-blog-post-template-v3.4.php.
   Dropped on the way in: the per-render wp_rand() selector prefix, the
   !important on nearly every declaration, the width:100vw full bleed,
   and the CSS background images on every tour card.

   NO FULL BLEED HACK. The old template needed width:100vw with
   margin-left:calc(-50vw + 50%) because Elementor wrapped its content
   in a max-width container. Nothing wraps these parts, so the hero and
   the booking block are already the width of the page and their inner
   elements carry the max-width. 100vw would also overshoot by the
   scrollbar, which is what the standing rule against it is about.

   The page-level tokens are scoped to .evb rather than :root, because
   they are a light palette and every other page on the site is dark.
   ================================================ */

/*
   THE LIGHT PALETTE, SHARED BY THE TWO READING TEMPLATES.
   single-blog.php and page.php. Everything else on the site is dark;
   these two are the pages somebody sits and reads, and they were given
   a light ground for that reason. Defining it once means the prose
   rules below can serve both without re-tuning a single colour.
*/
.evb,
.evp-page {
	/* Light palette, the reading templates only. */
	--evb-ink: #333;
	--evb-ink-strong: #1a1a1a;
	--evb-ink-soft: #5b5b5b;
	--evb-ink-mute: #8a8a8a;
	--evb-line: rgba(0, 0, 0, 0.08);
	--evb-line-warm: rgba(212, 196, 168, 0.4);
	--evb-warm: #faf8f5;

	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 1rem;
	line-height: 1.7;
	color: var(--evb-ink);
	background: #fff;

	/*
	   CLIP, NOT HIDDEN. overflow:hidden creates a scroll container,
	   which makes position:sticky stick to that box instead of the
	   viewport and killed the desktop contents sidebar once. clip does
	   the same containment without the scroll context. hidden stays
	   underneath for anything that does not know clip.
	*/
	overflow-x: hidden;
	overflow-x: clip;
}

/* The sheet locks the page behind it. */
body.evb-locked {
	overflow: hidden;
}

/* ---------- Reading progress ---------- */

.evb-progress {
	position: fixed;
	top: 0;
	left: 0;
	z-index: 60;
	width: 100%;
	height: 0.1875rem;
	background: transparent;
	pointer-events: none;
}

.evb-progress-bar {
	width: 0;
	height: 100%;
	background: linear-gradient(90deg, var(--wp--preset--color--rust), var(--wp--preset--color--gold));
	transition: width 0.1s linear;
}

/* ---------- Hero ---------- */

.evb-hero {
	position: relative;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	min-height: 62vh;
	min-height: 62svh;
	overflow: hidden;
	background: var(--wp--preset--color--bg-deep);
}

/*
   No !important on the size. The old rule needed it to beat Astra and
   Elementor's img { height:auto !important }; neither ships on this
   site any more.
*/
.evb-hero-bg {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
}

.evb-hero-scrim {
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(17, 16, 16, 0.35) 0%, rgba(17, 16, 16, 0.55) 45%, rgba(17, 16, 16, 0.92) 100%);
}

.evb-hero-inner {
	position: relative;
	width: 100%;
	max-width: 75rem;
	margin: 0 auto;
	padding: clamp(3rem, 8vw, 6rem) clamp(1.25rem, 5vw, 3rem) clamp(2.5rem, 5vw, 3.5rem);
}

.evb-breadcrumb {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem;
	margin-bottom: 1.5rem;
	font-size: 0.7rem;
	letter-spacing: 0.06em;
	color: rgba(255, 255, 255, 0.62);
}

.evb-breadcrumb a {
	color: rgba(255, 255, 255, 0.62);
	text-decoration: none;
	transition: color 0.2s ease;
}

.evb-breadcrumb a:hover {
	color: var(--wp--preset--color--gold);
}

.evb-breadcrumb a:focus-visible,
.evb-hero a:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

.evb-breadcrumb-sep {
	color: rgba(255, 255, 255, 0.3);
}

.evb-breadcrumb-current {
	max-width: 40ch;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	color: rgba(255, 255, 255, 0.85);
}

.evb-category {
	display: inline-flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0 0 1rem;
	font-size: 0.63rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evb-category::before {
	content: '';
	display: block;
	width: 1.875rem;
	height: 0.0625rem;
	background: var(--wp--preset--color--rust);
}

.evb-title {
	max-width: 18ch;
	margin: 0 0 1.5rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2rem, 5vw, 3.6rem);
	font-weight: 400;
	line-height: 1.08;
	color: #fff;
}

.evb-meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.875rem;
}

.evb-meta-item {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	margin: 0;
	font-size: 0.78rem;
	color: rgba(255, 255, 255, 0.72);
}

.evb-meta-item svg {
	width: 0.9375rem;
	height: 0.9375rem;
	fill: none;
	stroke: var(--wp--preset--color--gold);
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.evb-meta-dot {
	width: 0.1875rem;
	height: 0.1875rem;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.3);
}

/* ---------- Share bar ---------- */

.evb-share {
	position: relative;
	z-index: 2;
	border-bottom: 1px solid var(--evb-line);
	background: #fff;
	padding: 1.125rem 0;
}

.evb-share-inner {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	max-width: 75rem;
	margin: 0 auto;
	padding: 0 clamp(1.25rem, 5vw, 3rem);
}

.evb-share-label {
	display: inline-flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0;
	font-size: 0.63rem;
	font-weight: 700;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--evb-ink-mute);
}

.evb-share-label::before {
	content: '';
	display: block;
	width: 1.75rem;
	height: 0.0625rem;
	background: var(--wp--preset--color--rust);
}

.evb-share-btns {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem;
}

/* 44px, which is the smallest a touch target should be. */
.evb-share-btn {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	padding: 0;
	border: 1px solid var(--evb-line);
	border-radius: 50%;
	background: #fff;
	color: var(--evb-ink-soft);
	cursor: pointer;
	transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}

.evb-share-btn svg {
	width: 1rem;
	height: 1rem;
	fill: currentColor;
}

.evb-share-btn[href^='mailto'] svg,
#evb-copy svg {
	fill: none;
	stroke: currentColor;
}

.evb-share-btn:hover {
	border-color: var(--wp--preset--color--rust);
	background: var(--wp--preset--color--rust);
	color: #fff;
}

.evb-share-btn:focus-visible {
	outline: 2px solid var(--wp--preset--color--rust);
	outline-offset: 2px;
}

.evb-share-btn.is-copied {
	border-color: var(--wp--preset--color--rust);
	color: var(--wp--preset--color--rust);
}

/* ---------- The article container ---------- */

.evb-container {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 18.75rem;
	gap: clamp(2.5rem, 5vw, 4.5rem);
	max-width: 75rem;
	margin: 0 auto;
	padding: clamp(3rem, 6vw, 5rem) clamp(1.25rem, 5vw, 3rem) 3.5rem;
}

.evb-article,
.evp-prose {
	min-width: 0;
	font-size: 1.02rem;
	line-height: 1.85;
	color: var(--evb-ink);
}

.evb-lead,
.evp-lead {
	position: relative;
	margin-bottom: 2.5rem;
	padding-left: 1.5rem;
	font-size: 1.15rem;
	font-style: italic;
	line-height: 1.75;
	color: var(--evb-ink-strong);
}

.evb-lead::before,
.evp-lead::before {
	content: '';
	position: absolute;
	top: 0.35rem;
	bottom: 0.35rem;
	left: 0;
	width: 0.1875rem;
	border-radius: 0.125rem;
	background: var(--wp--preset--color--rust);
}

.evb-lead p:last-child,
.evp-lead p:last-child {
	margin-bottom: 0;
}

.evb-empty {
	margin: 0;
	font-style: italic;
	color: var(--evb-ink-mute);
}

.evb-article h2,
.evp-prose h2 {
	position: relative;
	margin: 3rem 0 1.25rem;
	padding-top: 1.25rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.5rem, 3vw, 2.1rem);
	font-weight: 500;
	line-height: 1.2;
	color: var(--evb-ink-strong);
	/* The anchor sits under a fixed header when jumped to. */
	scroll-margin-top: 5rem;
}

.evb-article h2::before,
.evp-prose h2::before {
	content: '';
	position: absolute;
	top: 0;
	left: 0;
	width: 2.25rem;
	height: 0.125rem;
	background: var(--wp--preset--color--rust);
}

.evb-article h3,
.evp-prose h3 {
	margin: 2.25rem 0 0.875rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.25rem;
	font-weight: 500;
	color: var(--evb-ink-strong);
}

.evb-article p,
.evp-prose p {
	margin: 0 0 1.375rem;
}

.evb-article a,
.evp-prose a {
	color: var(--ev-rust-text);
	text-decoration: underline;
	text-underline-offset: 0.15em;
}

.evb-article a:hover,
.evp-prose a:hover {
	color: var(--wp--preset--color--rust-dark);
}

.evb-article a:focus-visible,
.evp-prose a:focus-visible {
	outline: 2px solid var(--wp--preset--color--rust);
	outline-offset: 2px;
}

.evb-article ul,
.evb-article ol,
.evp-prose ul,
.evp-prose ol {
	margin: 0 0 1.375rem;
	padding-left: 1.25rem;
}

.evb-article li,
.evp-prose li {
	margin-bottom: 0.5rem;
}

.evb-article img,
.evp-prose img {
	max-width: 100%;
	height: auto;
}

.evb-article strong,
.evp-prose strong {
	color: var(--evb-ink-strong);
}

/* Highlight box */
.evb-callout {
	position: relative;
	margin: 2.5rem 0;
	padding: 1.75rem 1.75rem 1.75rem 2.25rem;
	overflow: hidden;
	border-radius: 1rem;
	background: var(--evb-warm);
}

.evb-callout::before {
	content: '';
	position: absolute;
	top: 0;
	bottom: 0;
	left: 0;
	width: 0.3125rem;
	background: var(--wp--preset--color--rust);
}

.evb-callout-title {
	margin: 0 0 0.625rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.15rem;
	font-weight: 500;
	color: var(--evb-ink-strong);
}

.evb-callout p:last-child {
	margin-bottom: 0;
}

/* Pull quote */
.evb-quote {
	position: relative;
	margin: 3rem 0;
	padding: 0 0 0 3rem;
}

.evb-quote::before {
	content: '\201C';
	position: absolute;
	top: -1rem;
	left: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 4.5rem;
	line-height: 1;
	color: var(--wp--preset--color--gold);
}

.evb-quote blockquote,
.evp-prose blockquote {
	margin: 0;
}

.evb-quote blockquote p,
.evp-prose blockquote p {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.2rem, 2.4vw, 1.5rem);
	font-style: italic;
	line-height: 1.5;
	color: var(--evb-ink-strong);
}

.evb-quote figcaption {
	margin-top: 0.875rem;
	font-size: 0.75rem;
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--evb-ink-mute);
}

/* In-article image */
.evb-figure {
	margin: 3rem 0;
}

.evb-figure img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: 1rem;
}

.evb-figure figcaption {
	margin-top: 0.75rem;
	font-size: 0.8rem;
	font-style: italic;
	color: var(--evb-ink-mute);
}

/* ---------- In-column tour highlight: light, no price ---------- */

.evb-inline-head {
	margin: 3rem 0 1.25rem;
}

.evb-inline-eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 0.625rem;
	margin: 0 0 0.5rem;
	font-size: 0.6rem;
	font-weight: 700;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--ev-rust-text);
}

.evb-inline-eyebrow::before {
	content: '';
	display: block;
	width: 1.5rem;
	height: 0.0625rem;
	background: var(--wp--preset--color--rust);
}

.evb-inline-htitle {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.4rem;
	font-weight: 500;
	color: var(--evb-ink-strong);
}

.evb-inline-hero,
.evb-inline-card {
	position: relative;
	overflow: hidden;
	border: 1px solid rgba(184, 98, 27, 0.22);
	border-radius: 1.25rem;
	background: var(--evb-warm);
	color: inherit;
	text-decoration: none;
	transition: transform 0.35s ease, border-color 0.35s ease, box-shadow 0.35s ease;
}

.evb-inline-hero:hover,
.evb-inline-card:hover {
	border-color: var(--wp--preset--color--rust);
	box-shadow: 0 0.875rem 2.5rem rgba(0, 0, 0, 0.08);
	transform: translateY(-0.1875rem);
}

.evb-inline-hero:focus-visible,
.evb-inline-card:focus-visible,
.evb-region-card:focus-visible,
.evb-book-hero:focus-visible,
.evb-book-card:focus-visible {
	outline: 2px solid var(--wp--preset--color--rust);
	outline-offset: 3px;
}

.evb-inline-hero {
	display: flex;
	align-items: stretch;
	margin: 3.25rem 0;
}

.evb-inline-hero-img {
	position: relative;
	flex: 0 0 13.125rem;
	overflow: hidden;
}

.evb-inline-hero-img img,
.evb-inline-card-img img,
.evb-book-hero-img img,
.evb-book-card-img img,
.evb-region-card-img img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.6s ease;
}

.evb-inline-hero:hover .evb-inline-hero-img img,
.evb-inline-card:hover .evb-inline-card-img img,
.evb-book-hero:hover .evb-book-hero-img img,
.evb-book-card:hover .evb-book-card-img img,
.evb-region-card:hover .evb-region-card-img img {
	transform: scale(1.04);
}

.evb-inline-hero-body {
	display: flex;
	flex: 1;
	flex-direction: column;
	gap: 0.5rem;
	min-width: 0;
	padding: 1.75rem;
}

.evb-inline-name {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.3rem;
	font-weight: 500;
	line-height: 1.25;
	color: var(--evb-ink-strong);
}

.evb-inline-desc {
	max-width: 52ch;
	font-size: 0.875rem;
	line-height: 1.65;
	color: var(--evb-ink-soft);
}

.evb-inline-link {
	display: inline-flex;
	align-self: flex-start;
	align-items: center;
	gap: 0.5rem;
	margin-top: 0.375rem;
	font-size: 0.65rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--ev-rust-text);
}

.evb-inline-link svg {
	width: 0.875rem;
	height: 0.875rem;
	fill: currentColor;
	transition: transform 0.25s ease;
}

.evb-inline-hero:hover .evb-inline-link svg,
.evb-inline-card:hover .evb-inline-link svg {
	transform: translateX(0.2rem);
}

.evb-inline-grid {
	display: grid;
	gap: 1.125rem;
	margin: 0 0 3.25rem;
}

.evb-inline-grid.evb-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.evb-inline-grid.evb-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }

.evb-inline-card {
	display: flex;
	flex-direction: column;
}

.evb-inline-card-img {
	aspect-ratio: 16 / 10;
	overflow: hidden;
}

.evb-inline-card-body {
	display: flex;
	flex: 1;
	flex-direction: column;
	gap: 0.5rem;
	padding: 1.125rem 1.25rem 1.375rem;
}

/* ---------- The contents sidebar ---------- */

.evb-sidebar {
	position: sticky;
	top: 6.25rem;
	/* Without this the sidebar stretches to the row height and there is
	   nothing left to stick. */
	align-self: start;
	max-height: calc(100vh - 8rem);
}

.evb-toc {
	max-height: calc(100vh - 8rem);
	padding: 1.75rem 1.5rem;
	overflow-y: auto;
	border: 1px solid var(--evb-line-warm);
	border-radius: 1.125rem;
	background: #fff;
	box-shadow: 0 0.625rem 2rem rgba(0, 0, 0, 0.05);
}

.evb-toc-eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	margin: 0 0 0.375rem;
	font-size: 0.58rem;
	font-weight: 700;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--ev-rust-text);
}

.evb-toc-eyebrow::before {
	content: '';
	display: block;
	width: 1.25rem;
	height: 0.0625rem;
	background: var(--wp--preset--color--rust);
}

/*
   A paragraph, not a heading. Navigation chrome in the outline is
   what the v3.4 pass demoted, and the mobile sheet's heading is the
   same decision.
*/
.evb-toc-title {
	margin: 0 0 1rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.05rem;
	font-weight: 500;
	color: var(--evb-ink-strong);
}

.evb-toc-list {
	margin: 0 0 1.25rem;
	padding: 0;
	list-style: none;
}

.evb-toc-list a {
	display: flex;
	gap: 0.625rem;
	padding: 0.5rem 0.625rem;
	border-radius: 0.5rem;
	font-size: 0.82rem;
	line-height: 1.45;
	color: var(--evb-ink-soft);
	text-decoration: none;
	transition: background 0.2s ease, color 0.2s ease;
}

.evb-toc-list a:hover {
	background: var(--evb-warm);
	color: var(--evb-ink-strong);
}

.evb-toc-list a.is-active {
	background: var(--evb-warm);
	color: var(--ev-rust-text);
	font-weight: 600;
}

.evb-toc-list a:focus-visible,
.evb-toc-sheet-list a:focus-visible {
	outline: 2px solid var(--wp--preset--color--rust);
	outline-offset: 2px;
}

.evb-toc-num {
	min-width: 1rem;
	font-size: 0.65rem;
	font-weight: 700;
	color: var(--wp--preset--color--gold);
}

.evb-toc-progress {
	padding-top: 1rem;
	border-top: 1px solid var(--evb-line);
}

.evb-toc-progress-label {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin: 0 0 0.5rem;
	font-size: 0.62rem;
	font-weight: 600;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--evb-ink-mute);
}

.evb-toc-progress-bar {
	height: 0.25rem;
	overflow: hidden;
	border-radius: 0.125rem;
	background: var(--evb-line);
}

.evb-toc-progress-fill {
	width: 0;
	height: 100%;
	background: linear-gradient(90deg, var(--wp--preset--color--rust), var(--wp--preset--color--gold));
	transition: width 0.1s linear;
}

/* ---------- End-of-article booking block: dark, priced ---------- */

.evb-book {
	background: var(--wp--preset--color--bg-deep);
	color: #fff;
	padding: clamp(3.5rem, 7vw, 5.5rem) 0 clamp(4rem, 7vw, 6rem);
}

.evb-book-inner {
	max-width: 75rem;
	margin: 0 auto;
	padding: 0 clamp(1.25rem, 5vw, 3rem);
}

.evb-book-header {
	max-width: 40rem;
	margin-bottom: 2.5rem;
}

.evb-book-eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0 0 0.875rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--ev-rust-text);
}

.evb-book-eyebrow::before {
	content: '';
	display: block;
	width: 1.75rem;
	height: 0.0625rem;
	background: var(--wp--preset--color--rust);
}

.evb-book-title {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.8rem, 4vw, 2.8rem);
	font-weight: 400;
	line-height: 1.1;
	color: #fff;
}

.evb-book-title em {
	font-style: italic;
	color: var(--wp--preset--color--rust);
}

.evb-book-hero,
.evb-book-card {
	position: relative;
	overflow: hidden;
	border: 1px solid rgba(212, 196, 168, 0.14);
	border-radius: 1.25rem;
	background: rgba(255, 255, 255, 0.03);
	color: inherit;
	text-decoration: none;
	transition: transform 0.35s ease, border-color 0.35s ease;
}

.evb-book-hero:hover,
.evb-book-card:hover {
	border-color: rgba(212, 196, 168, 0.35);
	transform: translateY(-0.1875rem);
}

.evb-book-hero {
	display: flex;
	align-items: stretch;
}

.evb-book-hero-img {
	position: relative;
	flex: 0 0 23.75rem;
	overflow: hidden;
}

.evb-book-pill {
	position: absolute;
	top: 1rem;
	left: 1rem;
	padding: 0.35rem 0.75rem;
	border-radius: 3.125rem;
	background: var(--ev-rust-btn);
	font-size: 0.68rem;
	font-weight: 700;
	color: #fff;
}

.evb-book-hero-body,
.evb-book-card-body {
	display: flex;
	flex: 1;
	flex-direction: column;
	gap: 0.625rem;
	min-width: 0;
	padding: 1.75rem;
}

.evb-book-country {
	font-size: 0.6rem;
	font-weight: 700;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evb-book-name {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.35rem;
	font-weight: 400;
	line-height: 1.25;
	color: #fff;
}

.evb-book-desc {
	max-width: 50ch;
	font-size: 0.875rem;
	line-height: 1.65;
	color: rgba(255, 255, 255, 0.68);
}

.evb-book-stats {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0.625rem;
	margin-top: 0.375rem;
}

.evb-book-stats.is-single {
	grid-template-columns: minmax(0, 1fr);
}

.evb-chip {
	display: flex;
	flex-direction: column;
	gap: 0.2rem;
	padding: 0.625rem 0.75rem;
	border: 1px solid rgba(255, 255, 255, 0.07);
	border-radius: 0.625rem;
	background: rgba(255, 255, 255, 0.04);
}

.evb-chip-l {
	font-size: 0.55rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.45);
}

.evb-chip-v {
	font-size: 0.85rem;
	font-weight: 700;
	color: #fff;
}

.evb-chip-v.is-price {
	color: var(--wp--preset--color--gold);
}

.evb-book-cta {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	margin-top: auto;
	padding: 0.75rem 1.25rem;
	border-radius: 0.5rem;
	background: var(--ev-rust-btn);
	font-size: 0.65rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: #fff;
	transition: background 0.25s ease;
}

.evb-book-hero:hover .evb-book-cta,
.evb-book-card:hover .evb-book-cta {
	background: var(--wp--preset--color--rust-dark);
}

.evb-book-cta svg {
	width: 0.8rem;
	height: 0.8rem;
	fill: currentColor;
}

.evb-book-hero .evb-book-cta {
	align-self: flex-start;
	margin-top: 0.5rem;
}

.evb-book-grid {
	display: grid;
	gap: 1.5rem;
}

.evb-book-grid.evb-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.evb-book-grid.evb-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }

.evb-book-card {
	display: flex;
	flex-direction: column;
}

.evb-book-card-img {
	position: relative;
	aspect-ratio: 16 / 10;
	overflow: hidden;
}

.evb-book-footer {
	margin: 2.5rem 0 0;
	text-align: center;
}

.evb-book-viewall {
	display: inline-flex;
	align-items: center;
	gap: 0.625rem;
	padding: 0.9rem 1.75rem;
	border: 1px solid rgba(212, 196, 168, 0.35);
	border-radius: 3.125rem;
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	text-decoration: none;
	transition: border-color 0.25s ease, background 0.25s ease, color 0.25s ease;
}

.evb-book-viewall:hover {
	border-color: var(--wp--preset--color--rust);
	background: var(--ev-rust-btn);
	color: #fff;
}

.evb-book-viewall:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

.evb-book-viewall svg {
	width: 0.875rem;
	height: 0.875rem;
}

/* ---------- Carousel dots, both themes ---------- */

/*
   Built by the script, and only meaningful once the grid has become a
   scroll-snap track, which is a breakpoint thing. Hidden up here so
   building them unconditionally costs nothing.
*/
.evb-dots {
	display: none;
}

.evb-dot {
	width: 1.75rem;
	height: 1.5rem;
	padding: 0;
	border: 0;
	background: none;
	cursor: pointer;
}

.evb-dot::before {
	content: '';
	display: block;
	width: 0.5rem;
	height: 0.5rem;
	margin: 0 auto;
	border-radius: 50%;
	transition: background 0.25s ease, width 0.25s ease;
}

.evb-dots.is-light .evb-dot::before { background: rgba(0, 0, 0, 0.18); }
.evb-dots.is-dark  .evb-dot::before { background: rgba(255, 255, 255, 0.22); }

.evb-dot.is-active::before {
	width: 1.25rem;
	border-radius: 0.25rem;
	background: var(--wp--preset--color--rust);
}

.evb-dot:focus-visible {
	outline: 2px solid var(--wp--preset--color--rust);
	outline-offset: 2px;
}

/* ---------- More from this region ---------- */

.evb-region {
	max-width: 75rem;
	margin: 0 auto;
	padding: clamp(3rem, 6vw, 5rem) clamp(1.25rem, 5vw, 3rem) clamp(3.5rem, 6vw, 6rem);
}

.evb-region-header {
	max-width: 40rem;
	margin-bottom: 2rem;
}

.evb-region-eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0 0 0.75rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--ev-rust-text);
}

.evb-region-eyebrow::before {
	content: '';
	display: block;
	width: 1.75rem;
	height: 0.0625rem;
	background: var(--wp--preset--color--rust);
}

.evb-region-title {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.6rem, 3.4vw, 2.3rem);
	font-weight: 400;
	line-height: 1.15;
	color: var(--evb-ink-strong);
}

.evb-region-grid {
	display: grid;
	gap: 1.25rem;
}

.evb-region-grid.evb-cols-1 {
	grid-template-columns: minmax(0, 1fr);
	max-width: 35rem;
}

.evb-region-grid.evb-cols-2 {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

.evb-region-card {
	display: flex;
	flex-direction: column;
	overflow: hidden;
	border: 1px solid var(--evb-line-warm);
	border-radius: 1.125rem;
	background: #fff;
	color: inherit;
	text-decoration: none;
	transition: transform 0.35s ease, border-color 0.35s ease, box-shadow 0.35s ease;
}

.evb-region-card:hover {
	border-color: var(--wp--preset--color--rust);
	box-shadow: 0 0.875rem 2.5rem rgba(0, 0, 0, 0.08);
	transform: translateY(-0.1875rem);
}

.evb-region-card-img {
	aspect-ratio: 16 / 9;
	overflow: hidden;
	background: var(--evb-warm);
}

.evb-region-card-body {
	display: flex;
	flex: 1;
	flex-direction: column;
	gap: 0.625rem;
	padding: 1.25rem 1.375rem 1.5rem;
}

.evb-region-card-name {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.25rem;
	font-weight: 500;
	color: var(--evb-ink-strong);
}

.evb-region-card-desc {
	flex: 1;
	font-size: 0.85rem;
	line-height: 1.65;
	color: var(--evb-ink-soft);
}

.evb-region-link {
	display: inline-flex;
	align-self: flex-start;
	align-items: center;
	gap: 0.5rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--ev-rust-text);
}

.evb-region-link svg {
	width: 0.8125rem;
	height: 0.8125rem;
	fill: currentColor;
	transition: transform 0.25s ease;
}

.evb-region-card:hover .evb-region-link svg {
	transform: translateX(0.2rem);
}

/* ---------- Previous and next ---------- */

.evb-post-nav {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1.25rem;
	max-width: 75rem;
	margin: 0 auto 3.5rem;
	padding: 0 clamp(1.25rem, 5vw, 3rem);
}

.evb-post-nav.is-single {
	grid-template-columns: minmax(0, 1fr);
	max-width: 43rem;
}

.evb-post-nav-card {
	display: flex;
	align-items: center;
	gap: 1rem;
	padding: 1.25rem 1.375rem;
	border: 1px solid var(--evb-line);
	border-radius: 1rem;
	background: #fff;
	color: inherit;
	text-decoration: none;
	transition: border-color 0.25s ease, background 0.25s ease;
}

.evb-post-nav-card.is-next {
	flex-direction: row-reverse;
	text-align: right;
}

.evb-post-nav-card:hover {
	border-color: var(--wp--preset--color--rust);
	background: var(--evb-warm);
}

.evb-post-nav-card:focus-visible {
	outline: 2px solid var(--wp--preset--color--rust);
	outline-offset: 3px;
}

.evb-post-nav-arrow {
	display: flex;
	flex-shrink: 0;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	border: 1px solid var(--evb-line);
	border-radius: 50%;
	color: var(--ev-rust-text);
}

.evb-post-nav-arrow svg {
	width: 1.125rem;
	height: 1.125rem;
}

.evb-post-nav-body {
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
	min-width: 0;
}

.evb-post-nav-label {
	font-size: 0.58rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--evb-ink-mute);
}

.evb-post-nav-title {
	overflow: hidden;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1rem;
	line-height: 1.3;
	color: var(--evb-ink-strong);
	display: -webkit-box;
	-webkit-line-clamp: 2;
	line-clamp: 2;
	-webkit-box-orient: vertical;
}

/* ---------- Mobile contents sheet, and back to top ---------- */

/*
   The button is display:none up here, not just visually absent: above
   the breakpoint the sidebar is the contents list, and a second control
   for the same thing would be a second thing to tab through.
*/
.evb-toc-fab {
	display: none;
	position: fixed;
	right: 1.25rem;
	bottom: 5.25rem;
	z-index: 55;
	align-items: center;
	justify-content: center;
	width: 3.25rem;
	height: 3.25rem;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: var(--ev-rust-btn);
	color: #fff;
	box-shadow: 0 0.5rem 1.5rem rgba(0, 0, 0, 0.25);
	cursor: pointer;
}

.evb-toc-fab svg {
	width: 1.375rem;
	height: 1.375rem;
}

.evb-toc-fab:focus-visible,
.evb-to-top:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

.evb-toc-backdrop {
	position: fixed;
	inset: 0;
	z-index: 90;
	background: rgba(0, 0, 0, 0.5);
	opacity: 0;
	transition: opacity 0.3s ease;
}

.evb-toc-backdrop.is-open {
	opacity: 1;
}

.evb-toc-sheet {
	position: fixed;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 95;
	max-height: 75vh;
	padding: 0.75rem 1.25rem 1.5rem;
	overflow-y: auto;
	border-radius: 1.25rem 1.25rem 0 0;
	background: #fff;
	transform: translateY(100%);
	transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.evb-toc-sheet.is-open {
	transform: translateY(0);
}

.evb-toc-handle {
	display: block;
	width: 2.75rem;
	height: 0.25rem;
	margin: 0 auto 0.75rem;
	border-radius: 0.125rem;
	background: rgba(0, 0, 0, 0.15);
}

.evb-toc-sheet-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	margin-bottom: 0.75rem;
}

.evb-toc-sheet-heading {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.1rem;
	font-weight: 500;
	color: var(--evb-ink-strong);
}

.evb-toc-sheet-close {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	padding: 0;
	border: 1px solid var(--evb-line);
	border-radius: 50%;
	background: #fff;
	color: var(--evb-ink-soft);
	cursor: pointer;
}

.evb-toc-sheet-close svg {
	width: 1.125rem;
	height: 1.125rem;
}

.evb-toc-sheet-close:focus-visible {
	outline: 2px solid var(--wp--preset--color--rust);
	outline-offset: 2px;
}

.evb-toc-sheet-list {
	margin: 0;
	padding: 0;
	list-style: none;
}

.evb-toc-sheet-list a {
	display: flex;
	gap: 0.75rem;
	padding: 0.875rem 0.5rem;
	border-bottom: 1px solid var(--evb-line);
	font-size: 0.9rem;
	color: var(--evb-ink);
	text-decoration: none;
}

.evb-toc-sheet-list a.is-active {
	color: var(--ev-rust-text);
	font-weight: 600;
}

.evb-toc-sheet-num {
	min-width: 1.25rem;
	font-size: 0.7rem;
	font-weight: 700;
	color: var(--wp--preset--color--gold);
}

.evb-to-top {
	position: fixed;
	right: 1.25rem;
	bottom: 1.25rem;
	z-index: 55;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	padding: 0;
	border: 1px solid var(--evb-line-warm);
	border-radius: 50%;
	background: #fff;
	color: var(--ev-rust-text);
	box-shadow: 0 0.375rem 1.25rem rgba(0, 0, 0, 0.12);
	cursor: pointer;
}

.evb-to-top svg {
	width: 1.25rem;
	height: 1.25rem;
}

/* ================================================
   BLOG ARTICLE: BREAKPOINTS
   ================================================ */

@media (max-width: 1024px) {
	/* The sidebar goes; the sheet takes over below here. */
	.evb-container {
		grid-template-columns: minmax(0, 1fr);
	}

	.evb-sidebar {
		display: none;
	}

	.evb-toc-fab {
		display: flex;
	}
}

@media (max-width: 900px) {
	/*
	   Two and three tour grids become scroll-snap tracks with the next
	   card peeking. The dots appear with them.
	*/
	.evb-inline-grid.evb-cols-2,
	.evb-inline-grid.evb-cols-3,
	.evb-book-grid.evb-cols-2,
	.evb-book-grid.evb-cols-3 {
		display: flex;
		grid-template-columns: none;
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		scrollbar-width: none;
	}

	.evb-inline-grid::-webkit-scrollbar,
	.evb-book-grid::-webkit-scrollbar {
		display: none;
	}

	.evb-inline-grid.evb-cols-2 > .evb-inline-card,
	.evb-inline-grid.evb-cols-3 > .evb-inline-card,
	.evb-book-grid.evb-cols-2 > .evb-book-card,
	.evb-book-grid.evb-cols-3 > .evb-book-card {
		flex: 0 0 84%;
		scroll-snap-align: start;
	}

	.evb-dots {
		display: flex;
		justify-content: center;
		gap: 0.25rem;
		margin-top: 1rem;
	}

	.evb-region-grid.evb-cols-2 {
		grid-template-columns: minmax(0, 1fr);
	}
}

@media (max-width: 768px) {
	.evb-title {
		max-width: 100%;
	}

	.evb-breadcrumb-current {
		max-width: 24ch;
	}

	/* Both horizontal cards stack. */
	.evb-inline-hero,
	.evb-book-hero {
		flex-direction: column;
	}

	.evb-inline-hero-img,
	.evb-book-hero-img {
		flex: none;
		aspect-ratio: 16 / 9;
	}

	.evb-book-hero .evb-book-cta,
	.evb-book-cta {
		align-self: stretch;
	}

	.evb-post-nav {
		grid-template-columns: minmax(0, 1fr);
	}

	.evb-post-nav-card.is-next {
		flex-direction: row;
		text-align: left;
	}

	.evb-share-inner {
		justify-content: flex-start;
	}
}

@media (max-width: 480px) {
	.evb-inline-grid.evb-cols-2 > .evb-inline-card,
	.evb-inline-grid.evb-cols-3 > .evb-inline-card,
	.evb-book-grid.evb-cols-2 > .evb-book-card,
	.evb-book-grid.evb-cols-3 > .evb-book-card {
		flex: 0 0 88%;
	}

	.evb-quote {
		padding-left: 2rem;
	}

	.evb-quote::before {
		font-size: 3.25rem;
	}

	.evb-toc-fab {
		width: 3rem;
		height: 3rem;
	}
}

@media (prefers-reduced-motion: reduce) {
	.evb-progress-bar,
	.evb-toc-progress-fill,
	.evb-inline-hero,
	.evb-inline-card,
	.evb-book-hero,
	.evb-book-card,
	.evb-region-card,
	.evb-share-btn,
	.evb-post-nav-card,
	.evb-toc-sheet,
	.evb-toc-backdrop,
	.evb-dot::before,
	.evb-inline-hero-img img,
	.evb-inline-card-img img,
	.evb-book-hero-img img,
	.evb-book-card-img img,
	.evb-region-card-img img,
	.evb-inline-link svg,
	.evb-region-link svg,
	.evb-book-cta {
		transition: none;
	}

	.evb-inline-hero:hover,
	.evb-inline-card:hover,
	.evb-book-hero:hover,
	.evb-book-card:hover,
	.evb-region-card:hover,
	.evb-inline-hero:hover .evb-inline-hero-img img,
	.evb-inline-card:hover .evb-inline-card-img img,
	.evb-book-hero:hover .evb-book-hero-img img,
	.evb-book-card:hover .evb-book-card-img img,
	.evb-region-card:hover .evb-region-card-img img,
	.evb-inline-hero:hover .evb-inline-link svg,
	.evb-inline-card:hover .evb-inline-link svg,
	.evb-region-card:hover .evb-region-link svg {
		transform: none;
	}

	.evb-inline-grid,
	.evb-book-grid {
		scroll-behavior: auto;
	}
}

@media (prefers-contrast: more) {
	.evb-inline-hero,
	.evb-inline-card,
	.evb-region-card,
	.evb-post-nav-card,
	.evb-toc,
	.evb-share-btn {
		border-color: var(--evb-ink);
	}

	.evb-inline-desc,
	.evb-region-card-desc,
	.evb-toc-list a {
		color: var(--evb-ink);
	}

	.evb-book-hero,
	.evb-book-card {
		border-color: #fff;
	}

	.evb-book-desc {
		color: #fff;
	}
}


/* ================================================
   THE /tours/ PAGE

   Rebuilt from the three captures in salvage/tours-page/. Dropped on
   the way in: the wp_rand() selector prefix, the !important on every
   declaration including the custom property definitions, the 100vw
   full bleed, and the CSS background images.

   NOT TABBED. Curated Experiences and Custom Adventures were panels
   behind a "Choose Your Path" prompt until April 2026. Continuous
   scroll now, so there are no panel or tab rules here at all.

   --ev-deep is the capture's --deep #141211, a shade between bg-deep
   and charcoal used for the alternating section grounds. It is here
   rather than in theme.json's palette because theme.json colours
   appear in the editor's colour picker, and this is structural: it is
   the ground two sections sit on, not a colour anybody should be
   painting a paragraph with.
   ================================================ */

:root {
	--ev-deep: #141211;
	--ev-charcoal: #1a1a1a;
}

.evo {
	background: var(--wp--preset--color--bg-deep);
	color: #fff;
}

.evo-eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0 0 1rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--ev-rust-text);
}

.evo-eyebrow::before {
	content: '';
	display: block;
	width: 1.75rem;
	height: 0.0625rem;
	background: var(--wp--preset--color--rust);
}

/* ---------- Hero ---------- */

.evo-hero {
	position: relative;
	display: flex;
	align-items: flex-end;
	min-height: 36.25rem;
	overflow: hidden;
	background: var(--wp--preset--color--bg-deep);
	padding: clamp(3rem, 6vw, 3.75rem) clamp(1.25rem, 5vw, 3.75rem) clamp(2.5rem, 5vw, 4rem);
}

/*
   A real image, not a background. The capture used background-image on
   a div, which the preload scanner cannot see and which cannot carry a
   srcset, so a phone downloaded the 2000px file.
*/
.evo-hero-bg {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	filter: brightness(0.35) saturate(0.8);
}

.evo-hero-overlay {
	position: absolute;
	inset: 0;
	background: linear-gradient(to top, rgba(17, 16, 16, 0.92) 0%, rgba(17, 16, 16, 0.35) 45%, transparent 100%);
}

.evo-float {
	position: absolute;
	z-index: 0;
	opacity: 0.035;
	color: var(--wp--preset--color--gold);
	pointer-events: none;
}

.evo-float-1 {
	top: 8%;
	right: 6%;
	width: 8.125rem;
	height: 8.125rem;
	animation: evo-float 20s ease-in-out infinite;
}

.evo-float-2 {
	bottom: 18%;
	left: 4%;
	width: 5.625rem;
	height: 5.625rem;
	animation: evo-float 24s ease-in-out infinite reverse;
}

@keyframes evo-float {
	0%, 100% { transform: translate(0, 0) rotate(0deg); }
	50%      { transform: translate(-1.25rem, -1.875rem) rotate(8deg); }
}

.evo-hero-inner {
	position: relative;
	z-index: 2;
	width: 100%;
	max-width: 87.5rem;
	margin: 0 auto;
}

.evo-hero-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0 0 1.25rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--ev-rust-text);
}

.evo-hero-eyebrow::before {
	content: '';
	display: block;
	width: 1.75rem;
	height: 0.0625rem;
	background: var(--wp--preset--color--rust);
}

.evo-hero-title {
	margin: 0 0 1.375rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.6rem, 7vw, 5.8rem);
	font-weight: 400;
	line-height: 1.05;
	color: #fff;
}

.evo-hero-title em {
	font-style: italic;
	color: var(--wp--preset--color--rust);
}

.evo-hero-desc {
	max-width: 37.5rem;
	margin: 0 0 2rem;
	font-size: 0.95rem;
	line-height: 1.75;
	color: rgba(255, 255, 255, 0.7);
}

.evo-hero-tags {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin: 0 0 2.25rem;
	padding: 0;
	list-style: none;
}

.evo-hero-tag {
	padding: 0.3125rem 0.875rem;
	border: 1px solid rgba(212, 196, 168, 0.35);
	border-radius: 3.125rem;
	font-size: 0.68rem;
	font-weight: 600;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evo-hero-stats {
	display: flex;
	gap: 3rem;
	margin: 0;
}

.evo-hero-stat-number {
	margin: 0 0 0.375rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 2.2rem;
	font-weight: 400;
	line-height: 1;
	color: var(--wp--preset--color--gold);
}

.evo-hero-stat-label {
	margin: 0;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	line-height: 1.4;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.45);
}

/* ---------- Curated experiences ---------- */

.evo-cur {
	background: var(--ev-deep);
	padding: clamp(3.5rem, 7vw, 6rem) 0;
	scroll-margin-top: 5rem;
}

.evo-cur-inner {
	max-width: 87.5rem;
	margin: 0 auto;
	padding: 0 clamp(1.25rem, 5vw, 3.75rem);
}

.evo-cur-header {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	justify-content: space-between;
	gap: 1rem;
	margin-bottom: 2rem;
}

.evo-cur-eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0 0 0.875rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--ev-rust-text);
}

.evo-cur-eyebrow::before {
	content: '';
	display: block;
	width: 1.75rem;
	height: 0.0625rem;
	background: var(--wp--preset--color--rust);
}

.evo-cur-heading {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.9rem, 4.5vw, 3.2rem);
	font-weight: 400;
	line-height: 1.1;
	color: #fff;
}

.evo-cur-heading em {
	font-style: italic;
	color: var(--wp--preset--color--rust);
}

.evo-cur-count {
	margin: 0;
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

/* ---------- The filter bar ---------- */

.evo-cur-filters {
	display: grid;
	grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) minmax(0, 1fr) auto;
	gap: 1rem;
	align-items: end;
	margin-bottom: 1.5rem;
	padding: 1.25rem;
	border: 1px solid rgba(212, 196, 168, 0.14);
	border-radius: 1rem;
	background: rgba(0, 0, 0, 0.28);
}

.evo-cur-filter {
	min-width: 0;
}

.evo-cur-filter-label {
	display: block;
	margin-bottom: 0.4rem;
	font-size: 0.58rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.45);
}

.evo-cur-search-wrap {
	position: relative;
	display: block;
}

.evo-cur-search-wrap svg {
	position: absolute;
	top: 50%;
	left: 0.875rem;
	width: 0.9rem;
	height: 0.9rem;
	transform: translateY(-50%);
	color: rgba(255, 255, 255, 0.35);
	pointer-events: none;
}

.evo-cur-search,
.evo-cur-select {
	width: 100%;
	padding: 0.75rem 0.875rem;
	border: 1px solid rgba(255, 255, 255, 0.12);
	border-radius: 0.5rem;
	background: rgba(0, 0, 0, 0.3);
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.85rem;
	color: #fff;
	transition: border-color 0.2s ease;
}

.evo-cur-search {
	padding-left: 2.25rem;
}

.evo-cur-search::placeholder {
	color: rgba(255, 255, 255, 0.3);
}

.evo-cur-search:hover,
.evo-cur-select:hover {
	border-color: rgba(212, 196, 168, 0.3);
}

.evo-cur-search:focus-visible,
.evo-cur-select:focus-visible,
.evo-cur-slider:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

.evo-cur-slider-wrap {
	display: block;
}

.evo-cur-slider {
	width: 100%;
	accent-color: var(--wp--preset--color--rust);
}

.evo-cur-price-out {
	display: block;
	margin-top: 0.25rem;
	font-size: 0.75rem;
	font-weight: 600;
	color: var(--wp--preset--color--gold);
}

.evo-cur-clear {
	padding: 0.75rem 1.125rem;
	border: 1px solid rgba(212, 196, 168, 0.25);
	border-radius: 0.5rem;
	background: transparent;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	cursor: pointer;
	transition: border-color 0.2s ease, background 0.2s ease, color 0.2s ease;
}

.evo-cur-clear:hover {
	border-color: var(--wp--preset--color--rust);
	background: var(--ev-rust-btn);
	color: #fff;
}

.evo-cur-clear:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

.evo-cur-results {
	margin: 0 0 1.25rem;
	font-size: 0.78rem;
	color: rgba(255, 255, 255, 0.55);
}

/* ---------- The grid ---------- */

.evo-cur-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(18rem, 1fr));
	gap: 1.5rem;
}

.evo-cur-empty {
	padding: 3rem 1.25rem;
	text-align: center;
}

.evo-cur-empty-title {
	margin: 0 0 0.5rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.35rem;
	color: #fff;
}

.evo-cur-empty-text {
	margin: 0;
	font-size: 0.875rem;
	color: rgba(255, 255, 255, 0.55);
}

/* ---------- Pagination ---------- */

/*
   Real anchors to real URLs, one per page, each self-canonical. The
   version this replaces rendered every tour and toggled a hidden class
   that used display:none !important to beat the card's own
   display:block. Nothing here needs to win a specificity fight because
   nothing here is hiding anything.
*/
.evo-cur-pager {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 0.375rem;
	margin-top: 2.5rem;
}

.evo-cur-page {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 2.75rem;
	height: 2.75rem;
	padding: 0 0.5rem;
	border: 1px solid rgba(212, 196, 168, 0.2);
	border-radius: 0.5rem;
	font-size: 0.82rem;
	font-weight: 600;
	color: rgba(255, 255, 255, 0.72);
	text-decoration: none;
	transition: border-color 0.2s ease, background 0.2s ease, color 0.2s ease;
}

.evo-cur-page:hover {
	border-color: var(--wp--preset--color--gold);
	color: #fff;
}

.evo-cur-page:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

.evo-cur-page.is-current {
	border-color: var(--wp--preset--color--rust);
	background: var(--ev-rust-btn);
	color: #fff;
}

.evo-cur-page.is-disabled {
	opacity: 0.25;
}

.evo-cur-page svg {
	width: 1rem;
	height: 1rem;
}

.evo-cur-showing {
	margin: 1rem 0 0;
	font-size: 0.72rem;
	text-align: center;
	color: rgba(255, 255, 255, 0.4);
}

/* ---------- What's included ---------- */

.evo-inc {
	background: var(--ev-charcoal);
	padding: clamp(3.5rem, 7vw, 6rem) 0;
	scroll-margin-top: 5rem;
}

.evo-inc-inner,
.evo-steps-inner {
	max-width: 87.5rem;
	margin: 0 auto;
	padding: 0 clamp(1.25rem, 5vw, 3.75rem);
}

.evo-inc-header,
.evo-steps-header {
	max-width: 44rem;
	margin: 0 auto clamp(2.5rem, 5vw, 3.5rem);
	text-align: center;
}

.evo-inc-header .evo-eyebrow,
.evo-steps-header .evo-eyebrow {
	justify-content: center;
}

.evo-inc-heading,
.evo-steps-heading {
	margin: 0 0 1rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.9rem, 4.5vw, 3.2rem);
	font-weight: 400;
	line-height: 1.1;
	color: #fff;
}

.evo-inc-heading em,
.evo-steps-heading em,
.evo-final-heading em {
	font-style: italic;
	color: var(--wp--preset--color--rust);
}

.evo-inc-desc,
.evo-steps-desc {
	margin: 0;
	font-size: 0.95rem;
	line-height: 1.75;
	color: rgba(255, 255, 255, 0.62);
}

/*
   Real photography and no icons. That was a deliberate call in the
   April rebuild: an icon set on top of a photograph set was two visual
   languages doing the same job.
*/
.evo-inc-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
	gap: 1.25rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.evo-inc-card {
	display: flex;
	flex-direction: column;
	overflow: hidden;
	border: 1px solid rgba(212, 196, 168, 0.12);
	border-radius: 1rem;
	background: rgba(255, 255, 255, 0.02);
	transition: border-color 0.3s ease, transform 0.3s ease;
}

.evo-inc-card:hover {
	border-color: rgba(212, 196, 168, 0.3);
	transform: translateY(-0.25rem);
}

.evo-inc-card-img {
	display: block;
	aspect-ratio: 4 / 3;
	overflow: hidden;
}

.evo-inc-card-img img,
.evo-step-photo img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.6s ease;
}

.evo-inc-card:hover .evo-inc-card-img img {
	transform: scale(1.04);
}

.evo-inc-card-body {
	display: flex;
	flex: 1;
	flex-direction: column;
	gap: 0.5rem;
	padding: 1.25rem 1.375rem 1.5rem;
}

.evo-inc-card-title {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.15rem;
	font-weight: 500;
	line-height: 1.3;
	color: #fff;
}

.evo-inc-card-text {
	font-size: 0.85rem;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.62);
}

/* ---------- How it works ---------- */

.evo-steps {
	background: var(--ev-deep);
	padding: clamp(3.5rem, 7vw, 6rem) 0;
}

.evo-steps-list {
	display: grid;
	gap: clamp(1.5rem, 3vw, 2.5rem);
	margin: 0;
	padding: 0;
	list-style: none;
	counter-reset: none;
}

.evo-step {
	display: grid;
	grid-template-columns: 26rem minmax(0, 1fr);
	gap: clamp(1.5rem, 3vw, 3rem);
	align-items: center;
	overflow: hidden;
	border: 1px solid rgba(212, 196, 168, 0.12);
	border-radius: 1.25rem;
	background: rgba(255, 255, 255, 0.02);
}

/* Alternating, by class rather than :nth-child, so removing a step in
   the admin cannot leave two photographs side by side. */
.evo-step.is-flipped {
	grid-template-columns: minmax(0, 1fr) 26rem;
}

.evo-step.is-flipped .evo-step-photo {
	order: 2;
}

.evo-step-photo {
	align-self: stretch;
	min-height: 18rem;
	overflow: hidden;
}

.evo-step-body {
	padding: clamp(1.5rem, 3vw, 2.5rem) clamp(1.5rem, 3vw, 2.5rem) clamp(1.5rem, 3vw, 2.5rem) 0;
}

.evo-step.is-flipped .evo-step-body {
	padding-right: 0;
	padding-left: clamp(1.5rem, 3vw, 2.5rem);
}

.evo-step-number {
	margin: 0 0 0.5rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 2.5rem;
	line-height: 1;
	color: rgba(212, 196, 168, 0.28);
}

.evo-step-title {
	margin: 0 0 0.375rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.3rem, 2.6vw, 1.7rem);
	font-weight: 400;
	line-height: 1.25;
	color: #fff;
}

.evo-step-role {
	margin: 0 0 1rem;
	font-size: 0.68rem;
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--ev-rust-text);
}

.evo-step-rule {
	display: block;
	width: 2.25rem;
	height: 0.125rem;
	margin-bottom: 1rem;
	background: var(--wp--preset--color--rust);
}

.evo-step-text {
	margin: 0 0 1.25rem;
	font-size: 0.9rem;
	line-height: 1.8;
	color: rgba(255, 255, 255, 0.68);
}

.evo-step-features {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.evo-step-feature {
	padding: 0.3rem 0.75rem;
	border: 1px solid rgba(212, 196, 168, 0.2);
	border-radius: 3.125rem;
	font-size: 0.68rem;
	font-weight: 600;
	color: rgba(255, 255, 255, 0.72);
}

/* ---------- Final CTA ---------- */

.evo-final {
	position: relative;
	overflow: hidden;
	background: var(--wp--preset--color--bg-deep);
	padding: clamp(4rem, 8vw, 7rem) clamp(1.25rem, 5vw, 3.75rem);
	text-align: center;
}

.evo-final-bg {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	filter: brightness(0.3) saturate(0.8);
}

.evo-final-overlay {
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(17, 16, 16, 0.75), rgba(17, 16, 16, 0.92));
}

.evo-final-inner {
	position: relative;
	z-index: 2;
	max-width: 44rem;
	margin: 0 auto;
}

.evo-final-inner .evo-eyebrow {
	justify-content: center;
}

.evo-final-heading {
	margin: 0 0 1rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.9rem, 4.5vw, 3rem);
	font-weight: 400;
	line-height: 1.15;
	color: #fff;
}

.evo-final-desc {
	margin: 0 0 2rem;
	font-size: 0.95rem;
	line-height: 1.75;
	color: rgba(255, 255, 255, 0.68);
}

.evo-final-btn {
	display: inline-flex;
	align-items: center;
	gap: 0.75rem;
	padding: 1rem 2rem;
	border: 0;
	border-radius: 0.5rem;
	background: var(--ev-rust-btn);
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: #fff;
	text-decoration: none;
	cursor: pointer;
	transition: background 0.25s ease, transform 0.25s ease;
}

.evo-final-btn:hover {
	background: var(--wp--preset--color--rust-dark);
	transform: translateY(-1px);
}

.evo-final-btn:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

.evo-final-btn svg {
	width: 1rem;
	height: 1rem;
	fill: currentColor;
}

.evo-final-note {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	margin: 1.25rem 0 0;
	font-size: 0.72rem;
	color: rgba(255, 255, 255, 0.45);
}

.evo-final-note svg {
	width: 0.85rem;
	height: 0.85rem;
}

/* ================================================
   THE SHARED ENQUIRY MODAL
   parts/section-enquiry-modal.php. The fourth enquiry form on the site
   and the first shared one; the tour booking modal, the bespoke modal
   and Getting There are still their own copies and should move here.
   ================================================ */

.evem-overlay {
	position: fixed;
	inset: 0;
	z-index: 1000;
	display: flex;
	align-items: flex-start;
	justify-content: center;
	padding: clamp(1rem, 4vh, 3rem) 1rem;
	overflow-y: auto;
	background: rgba(0, 0, 0, 0.8);
}

body.evem-locked {
	overflow: hidden;
}

.evem {
	position: relative;
	width: 100%;
	max-width: 36rem;
	margin: auto;
	padding: clamp(1.5rem, 4vw, 2.5rem);
	border: 1px solid rgba(212, 196, 168, 0.2);
	border-radius: 1.25rem;
	background: var(--wp--preset--color--bg-deep);
	color: #fff;
}

.evem-close {
	position: absolute;
	top: 0.875rem;
	right: 0.875rem;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.25rem;
	height: 2.25rem;
	padding: 0;
	border: 1px solid rgba(255, 255, 255, 0.14);
	border-radius: 50%;
	background: transparent;
	color: rgba(255, 255, 255, 0.6);
	cursor: pointer;
	transition: border-color 0.2s ease, color 0.2s ease;
}

.evem-close svg {
	width: 1rem;
	height: 1rem;
}

.evem-close:hover {
	border-color: rgba(212, 196, 168, 0.4);
	color: #fff;
}

.evem-close:focus-visible,
.evem-fi:focus-visible,
.evem-btn:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

.evem-header {
	margin-bottom: 0.75rem;
	padding-right: 2.5rem;
}

.evem-eyebrow {
	margin: 0 0 0.5rem;
	font-size: 0.6rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evem-title {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.4rem, 3vw, 1.9rem);
	font-weight: 400;
	line-height: 1.2;
	color: #fff;
}

.evem-note {
	margin: 0 0 1.5rem;
	font-size: 0.85rem;
	line-height: 1.65;
	color: rgba(255, 255, 255, 0.45);
}

.evem-fg {
	margin-bottom: 1rem;
}

.evem-fl {
	display: block;
	margin-bottom: 0.4rem;
	font-size: 0.68rem;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.6);
}

.evem-req {
	color: var(--wp--preset--color--rust);
}

.evem-fi {
	width: 100%;
	padding: 0.8rem 0.9rem;
	border: 1px solid rgba(255, 255, 255, 0.14);
	border-radius: 0.5rem;
	background: rgba(0, 0, 0, 0.25);
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.9rem;
	color: #fff;
}

.evem-fi::placeholder {
	color: rgba(255, 255, 255, 0.3);
}

.evem-ft {
	min-height: 5rem;
	line-height: 1.6;
	resize: vertical;
}

.evem-turnstile {
	margin-top: 0.25rem;
}

.evem-error {
	margin: 0 0 1rem;
	padding: 0.75rem 0.9rem;
	border: 1px solid var(--ev-form-error);
	border-radius: 0.5rem;
	font-size: 0.85rem;
	line-height: 1.55;
	color: #fff;
}

.evem-btns {
	display: flex;
	justify-content: flex-end;
	gap: 0.75rem;
	margin-top: 1.5rem;
}

.evem-btn {
	padding: 0.85rem 1.5rem;
	border: 1px solid transparent;
	border-radius: 0.5rem;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	cursor: pointer;
	transition: background 0.25s ease, border-color 0.25s ease, color 0.25s ease;
}

.evem-btn-primary {
	background: var(--ev-rust-btn);
	color: #fff;
}

.evem-btn-primary:hover {
	background: var(--wp--preset--color--rust-dark);
}

.evem-btn-primary:disabled {
	opacity: 0.6;
	cursor: default;
}

.evem-btn-secondary {
	border-color: rgba(255, 255, 255, 0.2);
	background: transparent;
	color: rgba(255, 255, 255, 0.65);
}

.evem-btn-secondary:hover {
	border-color: rgba(212, 196, 168, 0.5);
	color: #fff;
}

.evem-done {
	padding: 1.5rem 0.5rem;
	text-align: center;
}

.evem-done-mark {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 3rem;
	height: 3rem;
	margin: 0 auto 1.25rem;
	border: 1px solid rgba(212, 196, 168, 0.35);
	border-radius: 50%;
	font-size: 1.25rem;
	color: var(--wp--preset--color--gold);
}

.evem-done-title {
	margin: 0 0 0.75rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.5rem;
	color: #fff;
}

.evem-done-text {
	margin: 0 0 1.5rem;
	font-size: 0.9rem;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.55);
}

/* ================================================
   TOURS PAGE: BREAKPOINTS
   ================================================ */

@media (max-width: 1024px) {
	.evo-float {
		display: none;
	}

	.evo-cur-filters {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.evo-cur-clear {
		grid-column: 1 / -1;
	}

	.evo-step,
	.evo-step.is-flipped {
		grid-template-columns: minmax(0, 1fr);
	}

	.evo-step.is-flipped .evo-step-photo {
		order: 0;
	}

	.evo-step-photo {
		min-height: 0;
		aspect-ratio: 16 / 9;
	}

	.evo-step-body,
	.evo-step.is-flipped .evo-step-body {
		padding: clamp(1.5rem, 3vw, 2.5rem);
	}
}

@media (max-width: 768px) {
	.evo-hero {
		min-height: 65vh;
		padding-top: 8.75rem;
	}

	.evo-hero-bg {
		filter: brightness(0.3) saturate(0.75);
	}

	.evo-hero-overlay {
		background: linear-gradient(to top, rgba(17, 16, 16, 0.95) 0%, rgba(17, 16, 16, 0.6) 40%, rgba(17, 16, 16, 0.15) 70%, transparent 100%);
	}

	/* Hidden to keep the hero punchy, which is what the capture did. */
	.evo-hero-desc {
		display: none;
	}

	.evo-hero-tag {
		min-height: 2.25rem;
		display: inline-flex;
		align-items: center;
		padding: 0.4375rem 1rem;
		font-size: 0.72rem;
	}

	.evo-hero-stats {
		gap: 0;
		justify-content: space-between;
		width: 100%;
	}

	.evo-hero-stat {
		flex: 1;
		text-align: center;
	}

	.evo-cur-filters {
		grid-template-columns: minmax(0, 1fr);
	}

	.evo-cur-header {
		align-items: flex-start;
	}
}

@media (max-width: 480px) {
	.evo-hero {
		min-height: 60vh;
	}

	.evo-hero-stat-number {
		font-size: 1.5rem;
	}

	.evo-hero-stat-label {
		font-size: 0.58rem;
	}

	.evo-cur-grid {
		grid-template-columns: minmax(0, 1fr);
	}

	.evem-btns {
		flex-direction: column-reverse;
	}

	.evem-btn {
		width: 100%;
	}
}

@media (prefers-reduced-motion: reduce) {
	.evo-float {
		animation: none;
	}

	.evo-inc-card,
	.evo-inc-card-img img,
	.evo-step-photo img,
	.evo-final-btn,
	.evo-cur-page,
	.evo-cur-clear,
	.evo-cur-search,
	.evo-cur-select,
	.evem-btn,
	.evem-close {
		transition: none;
	}

	.evo-inc-card:hover,
	.evo-inc-card:hover .evo-inc-card-img img,
	.evo-final-btn:hover {
		transform: none;
	}
}

@media (prefers-contrast: more) {
	.evo-inc-card,
	.evo-step,
	.evo-step-feature,
	.evo-cur-page,
	.evo-cur-filters,
	.evo-cur-search,
	.evo-cur-select,
	.evem,
	.evem-fi {
		border-color: #fff;
	}

	.evo-inc-card-text,
	.evo-step-text,
	.evo-hero-desc,
	.evo-inc-desc,
	.evo-steps-desc,
	.evo-final-desc,
	.evo-cur-results {
		color: #fff;
	}
}


/* ================================================
   THE /inspiration/ PAGE

   Rebuilt from salvage/inspiration-page/inspiration-page-LIVE-20260611.html.
   Dropped on the way in: the per-render uniqid in every selector and
   every id, the !important, and the 100vw.

   Two things in here are load-bearing rather than decorative:

   .evi-hero-bg has an aspect ratio, so the hero image arriving does not
   move the page. The 1 June review listed that as already correct and
   it stays correct.

   .evi-filters is display:none until the script unhides it. Filtering
   is client driven, so the controls do nothing without it.
   ================================================ */

.evi {
	background: var(--wp--preset--color--bg-deep);
	color: #fff;
}

/* ---------- Hero ---------- */

.evi-hero {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	min-height: 82vh;
	min-height: 82svh;
	overflow: hidden;
	padding: clamp(5rem, 12vh, 9rem) clamp(1.25rem, 5vw, 3.75rem) clamp(4rem, 8vh, 6rem);
	text-align: center;
	background: var(--wp--preset--color--bg-deep);
}

/*
   The aspect ratio is what stops the layout shifting when the
   photograph lands. Absolutely positioned images have no intrinsic
   contribution to their parent, so without it the hero is only as tall
   as its text until the file arrives.
*/
.evi-hero-bg {
	position: absolute;
	inset: 0;
	aspect-ratio: 16 / 9;
	min-height: 100%;
}

.evi-hero-img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	filter: brightness(0.42) saturate(0.85);
}

.evi-hero-scrim {
	position: absolute;
	inset: 0;
	background:
		radial-gradient(ellipse at center, transparent 0%, rgba(17, 16, 16, 0.55) 100%),
		linear-gradient(to bottom, rgba(17, 16, 16, 0.55) 0%, rgba(17, 16, 16, 0.25) 40%, rgba(17, 16, 16, 0.9) 100%);
}

.evi-hero-content {
	position: relative;
	z-index: 2;
	max-width: 52rem;
}

.evi-hero-badge {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.875rem;
	margin: 0 0 1.5rem;
}

.evi-hero-badge-line {
	display: block;
	width: clamp(1.5rem, 6vw, 3rem);
	height: 0.0625rem;
	background: rgba(212, 196, 168, 0.5);
}

.evi-hero-badge-text {
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.28em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evi-hero-title {
	margin: 0 0 1.5rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.8rem, 8vw, 6rem);
	font-weight: 400;
	line-height: 1.02;
	color: #fff;
}

.evi-hero-title em {
	font-style: italic;
	color: var(--wp--preset--color--rust);
}

.evi-hero-rule {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.75rem;
	margin: 0 0 1.75rem;
}

.evi-hero-rule-line {
	display: block;
	width: clamp(2rem, 8vw, 4.5rem);
	height: 0.0625rem;
	background: linear-gradient(90deg, transparent, rgba(212, 196, 168, 0.55));
}

.evi-hero-rule-line:last-of-type {
	background: linear-gradient(90deg, rgba(212, 196, 168, 0.55), transparent);
}

.evi-hero-rule-diamond {
	display: block;
	width: 0.375rem;
	height: 0.375rem;
	background: var(--wp--preset--color--gold);
	transform: rotate(45deg);
}

.evi-hero-subtitle {
	max-width: 40rem;
	margin: 0 auto;
	font-size: 0.98rem;
	line-height: 1.8;
	color: rgba(255, 255, 255, 0.72);
}

.evi-hero-scroll {
	position: relative;
	z-index: 2;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0.75rem;
	margin-top: clamp(2.5rem, 6vh, 4rem);
	font-size: 0.58rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.5);
	text-decoration: none;
	transition: color 0.25s ease;
}

.evi-hero-scroll:hover {
	color: var(--wp--preset--color--gold);
}

.evi-hero-scroll:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 4px;
}

.evi-hero-scroll-line {
	display: block;
	width: 0.0625rem;
	height: 2.5rem;
	background: linear-gradient(to bottom, rgba(212, 196, 168, 0.6), transparent);
}

/* ---------- The intro prose ---------- */

/*
   The block that did not exist. Narrow measure, because it is the only
   thing on the page anybody is expected to read as prose rather than
   scan as a grid.
*/
.evi-intro {
	background: var(--ev-deep);
	padding: clamp(3.5rem, 7vw, 5.5rem) clamp(1.25rem, 5vw, 3.75rem) clamp(2rem, 4vw, 3rem);
}

.evi-intro-inner {
	max-width: 46rem;
	margin: 0 auto;
}

.evi-intro-title {
	margin: 0 0 1.25rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.5rem, 3vw, 2.1rem);
	font-weight: 400;
	line-height: 1.2;
	color: #fff;
}

.evi-intro-body {
	font-size: 1rem;
	line-height: 1.85;
	color: rgba(255, 255, 255, 0.72);
}

.evi-intro-body p {
	margin: 0 0 1.25rem;
}

.evi-intro-body p:last-child {
	margin-bottom: 0;
}

.evi-intro-body a {
	color: var(--wp--preset--color--gold);
	text-decoration: underline;
	text-underline-offset: 0.15em;
	text-decoration-thickness: 0.0625rem;
	transition: color 0.2s ease;
}

.evi-intro-body a:hover {
	color: var(--wp--preset--color--gold-light);
}

.evi-intro-body a:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

/* ---------- The listing ---------- */

.evi-main {
	background: var(--ev-deep);
	padding: clamp(2rem, 4vw, 3rem) 0 clamp(3.5rem, 7vw, 6rem);
	scroll-margin-top: 5rem;
}

.evi-main-inner {
	max-width: 87.5rem;
	margin: 0 auto;
	padding: 0 clamp(1.25rem, 5vw, 3.75rem);
}

.evi-header {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	justify-content: space-between;
	gap: 1rem;
	margin-bottom: 1.75rem;
}

.evi-eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0 0 0.875rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--ev-rust-text);
}

.evi-eyebrow::before {
	content: '';
	display: block;
	width: 1.75rem;
	height: 0.0625rem;
	background: var(--wp--preset--color--rust);
}

.evi-title {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.9rem, 4.5vw, 3.2rem);
	font-weight: 400;
	line-height: 1.1;
	color: #fff;
}

.evi-title em {
	font-style: italic;
	color: var(--wp--preset--color--rust);
}

/* The heading takes focus when the grid changes, and a focus ring on a
   heading nobody clicked is confusing, so it is only shown to keyboard
   navigation, which is what focus-visible already means. */
.evi-title:focus {
	outline: none;
}

.evi-title:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 4px;
}

.evi-count {
	margin: 0;
	font-size: 0.75rem;
	color: rgba(255, 255, 255, 0.45);
}

/* ---------- Filters ---------- */

.evi-filters {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin-bottom: 2rem;
}

.evi-filter {
	padding: 0.6rem 1.1rem;
	border: 1px solid rgba(212, 196, 168, 0.2);
	border-radius: 3.125rem;
	background: transparent;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.7rem;
	font-weight: 600;
	letter-spacing: 0.08em;
	color: rgba(255, 255, 255, 0.62);
	cursor: pointer;
	transition: border-color 0.2s ease, background 0.2s ease, color 0.2s ease;
}

.evi-filter:hover {
	border-color: rgba(212, 196, 168, 0.45);
	color: #fff;
}

.evi-filter.is-active {
	border-color: var(--wp--preset--color--rust);
	background: var(--ev-rust-btn);
	color: #fff;
}

.evi-filter:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

/* ---------- The grid ---------- */

.evi-grid-wrap {
	position: relative;
}

/*
   Three across, then two, then one. auto-fill rather than a fixed
   three, so a last row of one or two does not stretch to fill.
*/
.evi-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 1.5rem;
}

/* While a fetch is in flight. Not a spinner: the cards are still there
   and still readable, they are simply about to be replaced. */
.evi.is-loading .evi-grid {
	opacity: 0.45;
	transition: opacity 0.2s ease;
}

.evi-card {
	display: flex;
	flex-direction: column;
	overflow: hidden;
	border: 1px solid rgba(212, 196, 168, 0.12);
	border-radius: 1rem;
	background: rgba(255, 255, 255, 0.02);
	color: inherit;
	text-decoration: none;
	transition: border-color 0.3s ease, transform 0.3s ease;
}

.evi-card:hover {
	border-color: rgba(212, 196, 168, 0.32);
	transform: translateY(-0.25rem);
}

.evi-card:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

.evi-card-img {
	position: relative;
	display: block;
	aspect-ratio: 16 / 10;
	overflow: hidden;
	background: rgba(0, 0, 0, 0.3);
}

.evi-card-img img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.6s ease;
}

.evi-card:hover .evi-card-img img {
	transform: scale(1.04);
}

.evi-card-badge {
	position: absolute;
	top: 0.875rem;
	left: 0.875rem;
	padding: 0.3rem 0.7rem;
	border-radius: 3.125rem;
	background: rgba(17, 16, 16, 0.78);
	font-size: 0.58rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evi-card-body {
	display: flex;
	flex: 1;
	flex-direction: column;
	padding: 1.25rem 1.375rem 1.5rem;
}

.evi-card-meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 1rem;
	margin-bottom: 0.75rem;
	font-size: 0.68rem;
	color: rgba(255, 255, 255, 0.42);
}

.evi-card-date,
.evi-card-read {
	display: inline-flex;
	align-items: center;
	gap: 0.375rem;
}

.evi-card-meta svg {
	width: 0.8rem;
	height: 0.8rem;
	color: var(--wp--preset--color--gold);
	opacity: 0.7;
}

.evi-card-title {
	margin: 0 0 0.875rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.2rem;
	font-weight: 500;
	line-height: 1.3;
	color: #fff;
}

.evi-card-rule {
	display: block;
	width: 2rem;
	height: 0.125rem;
	margin-bottom: 0.875rem;
	background: var(--wp--preset--color--rust);
}

.evi-card-excerpt {
	display: -webkit-box;
	-webkit-line-clamp: 3;
	line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
	margin-bottom: 1.25rem;
	font-size: 0.85rem;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.62);
}

.evi-card-more {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	margin-top: auto;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evi-card-more svg {
	width: 0.85rem;
	height: 0.85rem;
	transition: transform 0.25s ease;
}

.evi-card:hover .evi-card-more svg {
	transform: translateX(0.2rem);
}

.evi-empty {
	padding: 4rem 1.25rem;
	text-align: center;
}

.evi-empty-title {
	margin: 0 0 0.5rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.4rem;
	color: #fff;
}

.evi-empty-text {
	max-width: 32rem;
	margin: 0 auto;
	font-size: 0.9rem;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.55);
}

/* ---------- Pagination ---------- */

.evi-pager {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 0.375rem;
	margin-top: 2.5rem;
}

.evi-page {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 2.75rem;
	height: 2.75rem;
	padding: 0 0.5rem;
	border: 1px solid rgba(212, 196, 168, 0.2);
	border-radius: 0.5rem;
	font-size: 0.82rem;
	font-weight: 600;
	color: rgba(255, 255, 255, 0.72);
	text-decoration: none;
	transition: border-color 0.2s ease, background 0.2s ease, color 0.2s ease;
}

.evi-page:hover {
	border-color: var(--wp--preset--color--gold);
	color: #fff;
}

.evi-page:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

.evi-page.is-current {
	border-color: var(--wp--preset--color--rust);
	background: var(--ev-rust-btn);
	color: #fff;
}

.evi-page svg {
	width: 1rem;
	height: 1rem;
}

.evi-page-gap {
	padding: 0 0.25rem;
	color: rgba(255, 255, 255, 0.3);
}

/* ---------- Newsletter ---------- */

.evi-news {
	background: var(--ev-charcoal);
	padding: clamp(3rem, 6vw, 4.5rem) clamp(1.25rem, 5vw, 3.75rem);
}

.evi-news-inner {
	position: relative;
	max-width: 46rem;
	margin: 0 auto;
	padding: clamp(2rem, 4vw, 3rem);
	border: 1px solid rgba(212, 196, 168, 0.16);
	border-radius: 1.25rem;
	background: rgba(255, 255, 255, 0.02);
	text-align: center;
}

.evi-news-line {
	position: absolute;
	top: 0;
	left: 50%;
	width: 4rem;
	height: 0.125rem;
	background: var(--wp--preset--color--rust);
	transform: translateX(-50%);
}

.evi-news-eyebrow {
	margin: 0 0 0.75rem;
	font-size: 0.6rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evi-news-title {
	margin: 0 0 1rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.5rem, 3.2vw, 2.1rem);
	font-weight: 400;
	color: #fff;
}

.evi-news-title em {
	font-style: italic;
	color: var(--wp--preset--color--rust);
}

.evi-news-desc {
	max-width: 34rem;
	margin: 0 auto 1.75rem;
	font-size: 0.9rem;
	line-height: 1.75;
	color: rgba(255, 255, 255, 0.62);
}

.evi-news-btn {
	display: inline-flex;
	align-items: center;
	gap: 0.625rem;
	padding: 0.9rem 1.75rem;
	border-radius: 0.5rem;
	background: var(--ev-rust-btn);
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: #fff;
	text-decoration: none;
	transition: background 0.25s ease, transform 0.25s ease;
}

.evi-news-btn:hover {
	background: var(--wp--preset--color--rust-dark);
	transform: translateY(-1px);
}

.evi-news-btn:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

.evi-news-btn svg {
	width: 1rem;
	height: 1rem;
	fill: currentColor;
}

/* ---------- Final CTA ---------- */

.evi-cta {
	position: relative;
	overflow: hidden;
	padding: clamp(4rem, 8vw, 6.5rem) clamp(1.25rem, 5vw, 3.75rem);
	background: var(--wp--preset--color--bg-deep);
	text-align: center;
}

.evi-cta-bg {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	filter: brightness(0.3) saturate(0.8);
}

.evi-cta-overlay {
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(17, 16, 16, 0.78), rgba(17, 16, 16, 0.93));
}

.evi-cta-inner {
	position: relative;
	z-index: 2;
	max-width: 44rem;
	margin: 0 auto;
}

.evi-cta-eyebrow {
	margin: 0 0 1rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--ev-rust-text);
}

.evi-cta-title {
	margin: 0 0 1rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.9rem, 4.5vw, 3rem);
	font-weight: 400;
	line-height: 1.15;
	color: #fff;
}

.evi-cta-title em {
	font-style: italic;
	color: var(--wp--preset--color--rust);
}

.evi-cta-desc {
	margin: 0 0 2rem;
	font-size: 0.95rem;
	line-height: 1.75;
	color: rgba(255, 255, 255, 0.68);
}

.evi-cta-actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 1.25rem;
	margin: 0;
}

.evi-cta-btn {
	display: inline-flex;
	align-items: center;
	gap: 0.75rem;
	padding: 1rem 2rem;
	border-radius: 0.5rem;
	background: var(--ev-rust-btn);
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: #fff;
	text-decoration: none;
	transition: background 0.25s ease, transform 0.25s ease;
}

.evi-cta-btn:hover {
	background: var(--wp--preset--color--rust-dark);
	transform: translateY(-1px);
}

.evi-cta-btn:focus-visible,
.evi-cta-link:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

.evi-cta-btn svg {
	width: 1rem;
	height: 1rem;
	fill: currentColor;
}

.evi-cta-link {
	font-size: 0.72rem;
	font-weight: 600;
	letter-spacing: 0.1em;
	color: var(--wp--preset--color--gold);
	text-decoration: underline;
	text-underline-offset: 0.25em;
}

.evi-cta-link:hover {
	color: var(--wp--preset--color--gold-light);
}

/* ================================================
   INSPIRATION: BREAKPOINTS
   ================================================ */

@media (max-width: 1024px) {
	.evi-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 768px) {
	.evi-hero {
		min-height: 70vh;
		min-height: 70svh;
	}

	.evi-header {
		align-items: flex-start;
	}
}

@media (max-width: 640px) {
	.evi-grid {
		grid-template-columns: minmax(0, 1fr);
	}
}

@media (max-width: 480px) {
	.evi-hero-subtitle {
		font-size: 0.9rem;
	}

	.evi-cta-actions {
		flex-direction: column;
		gap: 1rem;
	}

	.evi-cta-btn {
		width: 100%;
		justify-content: center;
	}
}

@media (prefers-reduced-motion: reduce) {
	.evi-card,
	.evi-card-img img,
	.evi-card-more svg,
	.evi-filter,
	.evi-page,
	.evi-news-btn,
	.evi-cta-btn,
	.evi-hero-scroll,
	.evi.is-loading .evi-grid {
		transition: none;
	}

	.evi-card:hover,
	.evi-card:hover .evi-card-img img,
	.evi-card:hover .evi-card-more svg,
	.evi-news-btn:hover,
	.evi-cta-btn:hover {
		transform: none;
	}
}

@media (prefers-contrast: more) {
	.evi-card,
	.evi-filter,
	.evi-page,
	.evi-news-inner {
		border-color: #fff;
	}

	.evi-card-excerpt,
	.evi-card-meta,
	.evi-count,
	.evi-hero-subtitle,
	.evi-intro-body,
	.evi-news-desc,
	.evi-cta-desc {
		color: #fff;
	}
}


/* ================================================
   THE /contact/ PAGE

   The 25 March redesign, from
   salvage/contact-page/contact-page-LIVE-20260527.html. Dark charcoal
   editorial, compact header, three-column horizontal form, contact
   methods as a strip below it.

   Dropped on the way in: the !important on nearly every declaration,
   which the March work added to beat the old theme and which Astra and
   Elementor's removal made pointless; the width:100vw with
   margin-left:calc(-50vw + 50%) full bleed, which is unnecessary
   because these parts are direct children of body; and the em font
   sizes, which were not load-bearing.

   NO HERO RULES. The capture's own notes describe one; the file has
   neither the markup nor a single selector for it. See
   parts/section-contact-header.php.

   THE SELECT ARROW TRAP
   The March fix, preserved: the shared select rule must set
   background-color, never the `background` shorthand. The shorthand
   resets background-image, which is where the arrow lives, and the
   selects fall back to the browser's own control.
   ================================================ */

.evc {
	background: var(--ev-charcoal);
	color: #fff;
}

body.evc-locked {
	overflow: hidden;
}

/* ---------- Header ---------- */

.evc-header {
	border-bottom: 1px solid rgba(255, 255, 255, 0.07);
}

.evc-header-inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 2.5rem;
	max-width: 87.5rem;
	margin: 0 auto;
	padding: clamp(3.5rem, 8vw, 5rem) clamp(1.25rem, 5vw, 3rem) clamp(2.5rem, 5vw, 3.5rem);
}

.evc-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0 0 1.25rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--ev-rust-text);
}

.evc-eyebrow-line {
	display: block;
	width: 1.75rem;
	height: 0.0625rem;
	background: var(--wp--preset--color--rust);
}

.evc-title {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.4rem, 5.5vw, 4.4rem);
	font-weight: 400;
	line-height: 1;
	color: #fff;
}

.evc-title em {
	font-style: italic;
	color: var(--wp--preset--color--rust);
}

.evc-header-logo {
	flex-shrink: 0;
}

.evc-header-logo img {
	display: block;
	width: auto;
	max-width: 11rem;
	height: auto;
}

/* ---------- The form ---------- */

.evc-form-section {
	border-bottom: 1px solid rgba(255, 255, 255, 0.07);
}

.evc-form-inner {
	max-width: 87.5rem;
	margin: 0 auto;
	padding: clamp(2.5rem, 5vw, 3.5rem) clamp(1.25rem, 5vw, 3rem) clamp(3rem, 5vw, 4rem);
}

.evc-form-intro {
	max-width: 46rem;
	margin: 0 0 2.5rem;
	font-size: 1rem;
	line-height: 1.75;
	color: rgba(255, 255, 255, 0.7);
}

.evc-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 1.5rem 2rem;
}

.evc-span-3 {
	grid-column: 1 / -1;
}

.evc-field {
	display: flex;
	flex-direction: column;
	min-width: 0;
}

.evc-label {
	margin-bottom: 0.625rem;
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.18em;
	line-height: 1.4;
	text-transform: uppercase;
	color: var(--ev-rust-text);
}

.evc-req {
	color: var(--wp--preset--color--rust);
}

.evc-input {
	display: block;
	width: 100%;
	/*
	   There is no global border-box reset in this stylesheet, and this
	   control is width:100% with 1.25rem of padding and a border. Without
	   this it is its container plus 2.6rem, which overflowed the page
	   below 900px where the grid stops being three columns.
	*/
	box-sizing: border-box;
	min-height: 3.375rem;
	padding: 1rem 1.25rem;
	/*
	   background-COLOR, not the shorthand. The shorthand resets
	   background-image, and the select below paints its arrow there.
	*/
	background-color: rgba(255, 255, 255, 0.04);
	border: 1px solid rgba(255, 255, 255, 0.07);
	border-radius: 0.625rem;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.95rem;
	line-height: 1.4;
	color: #fff;
	transition: border-color 0.3s ease, background-color 0.3s ease;
}

.evc-input::placeholder {
	color: rgba(255, 255, 255, 0.3);
}

.evc-input:hover {
	border-color: rgba(212, 196, 168, 0.28);
}

.evc-input:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
	border-color: transparent;
	background-color: rgba(255, 255, 255, 0.06);
}

.evc-input.has-error {
	border-color: var(--ev-form-error);
	background-color: rgba(239, 68, 68, 0.06);
}

.evc-select {
	padding-right: 2.75rem;
	background-image: url('data:image/svg+xml;charset=US-ASCII,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%23B8621B" stroke-width="2"><polyline points="6,9 12,15 18,9"/></svg>');
	background-repeat: no-repeat;
	background-position: right 1rem center;
	background-size: 1rem;
	appearance: none;
	cursor: pointer;
	text-overflow: ellipsis;
}

/* The open list is the browser's, and on a dark control it needs a
   dark ground or the options come back white on white. */
.evc-select option {
	background-color: var(--ev-charcoal);
	color: #fff;
}

.evc-textarea {
	min-height: 8.5rem;
	line-height: 1.65;
	resize: vertical;
}

.evc-error {
	margin: 0.5rem 0 0;
	font-size: 0.75rem;
	line-height: 1.4;
	color: var(--ev-form-error);
}

.evc-turnstile {
	margin-top: 0.25rem;
}

.evc-submit-row {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 1.5rem;
	margin-top: 0.5rem;
}

.evc-submit-note {
	max-width: 34rem;
	margin: 0;
	font-size: 0.8rem;
	line-height: 1.65;
	color: rgba(255, 255, 255, 0.45);
}

.evc-submit {
	display: inline-flex;
	flex-shrink: 0;
	align-items: center;
	gap: 0.625rem;
	padding: 1.0625rem 2.25rem;
	border: 2px solid var(--wp--preset--color--rust);
	border-radius: 3.125rem;
	background: var(--ev-rust-btn);
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	line-height: 1.4;
	text-transform: uppercase;
	white-space: nowrap;
	color: #fff;
	cursor: pointer;
	box-shadow: 0 0.5rem 1.75rem rgba(184, 98, 27, 0.3);
	transition: background 0.3s ease, border-color 0.3s ease, transform 0.3s ease;
}

.evc-submit:hover {
	background: var(--wp--preset--color--rust-dark);
	border-color: var(--wp--preset--color--rust-dark);
	transform: translateY(-1px);
}

.evc-submit:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

.evc-submit:disabled {
	opacity: 0.6;
	cursor: default;
	transform: none;
}

.evc-submit svg {
	width: 1rem;
	height: 1rem;
	fill: currentColor;
}

.evc-submit.is-sending span::after {
	content: '\2026';
}

.evc-form-msg {
	margin: 1.5rem 0 0;
	padding: 0.875rem 1rem;
	border: 1px solid var(--ev-form-error);
	border-radius: 0.5rem;
	font-size: 0.875rem;
	line-height: 1.55;
	color: #fff;
}

/* ---------- Connect With Us ---------- */

.evc-connect {
	padding: clamp(3rem, 6vw, 4.5rem) 0 clamp(4rem, 7vw, 6rem);
}

.evc-connect-inner {
	max-width: 87.5rem;
	margin: 0 auto;
	padding: 0 clamp(1.25rem, 5vw, 3rem);
}

.evc-connect-header {
	margin-bottom: 2rem;
}

.evc-connect-title {
	margin: 0 0 0.5rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.5rem, 3vw, 2.1rem);
	font-weight: 400;
	color: #fff;
}

.evc-connect-subtitle {
	margin: 0;
	font-size: 0.9rem;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.5);
}

.evc-methods {
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	margin: 0;
	padding: 0;
	overflow: hidden;
	border: 1px solid rgba(255, 255, 255, 0.07);
	border-radius: 1rem;
	list-style: none;
}

.evc-method {
	display: flex;
	flex-direction: column;
	gap: 1rem;
	padding: 2rem 1.75rem;
	border-right: 1px solid rgba(255, 255, 255, 0.07);
	transition: background 0.3s ease;
}

.evc-method:last-child {
	border-right: 0;
}

.evc-method:hover {
	background: rgba(255, 255, 255, 0.02);
}

.evc-method-icon {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	border-radius: 50%;
	background: rgba(184, 98, 27, 0.14);
	color: var(--wp--preset--color--gold);
}

.evc-method-icon.is-instagram {
	background: rgba(225, 48, 108, 0.14);
	color: #e1306c;
}

.evc-method-icon.is-facebook {
	background: rgba(24, 119, 242, 0.14);
	color: #1877f2;
}

.evc-method-icon svg {
	width: 1.1rem;
	height: 1.1rem;
}

.evc-method-body {
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
	min-width: 0;
}

.evc-method-label {
	font-size: 0.58rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.45);
}

.evc-method-value {
	font-size: 0.85rem;
	line-height: 1.5;
	color: #fff;
	overflow-wrap: anywhere;
}

/* No underline. It was removed deliberately and the hover colour is
   what carries the affordance. */
.evc-method-link {
	color: inherit;
	text-decoration: none;
	transition: color 0.2s ease;
}

.evc-method-link:hover {
	color: var(--wp--preset--color--gold);
}

.evc-method-link:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

/* ---------- The confirmation ---------- */

.evc-modal-overlay {
	position: fixed;
	inset: 0;
	z-index: 1000;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 1.25rem;
	background: rgba(0, 0, 0, 0.7);
	backdrop-filter: blur(0.625rem);
}

.evc-modal {
	position: relative;
	width: 100%;
	max-width: 30rem;
	padding: clamp(2rem, 5vw, 3.4375rem) clamp(1.5rem, 4vw, 3.125rem);
	border: 1px solid rgba(255, 255, 255, 0.07);
	border-radius: 1.5rem;
	background: var(--ev-charcoal);
	box-shadow: 0 2.5rem 5rem rgba(0, 0, 0, 0.6);
	text-align: center;
}

.evc-modal-close {
	position: absolute;
	top: 1rem;
	right: 1rem;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.25rem;
	height: 2.25rem;
	padding: 0;
	border: 1px solid rgba(255, 255, 255, 0.14);
	border-radius: 50%;
	background: transparent;
	color: rgba(255, 255, 255, 0.6);
	cursor: pointer;
	transition: border-color 0.2s ease, color 0.2s ease;
}

.evc-modal-close:hover {
	border-color: rgba(212, 196, 168, 0.4);
	color: #fff;
}

.evc-modal-close svg {
	width: 1rem;
	height: 1rem;
}

.evc-modal-close:focus-visible,
.evc-modal-btn:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

.evc-modal-icon {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 3.5rem;
	height: 3.5rem;
	margin: 0 auto 1.5rem;
	border: 1px solid rgba(212, 196, 168, 0.35);
	border-radius: 50%;
	color: var(--wp--preset--color--gold);
}

.evc-modal-icon svg {
	width: 1.5rem;
	height: 1.5rem;
}

.evc-modal-title {
	margin: 0 0 0.875rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.4rem, 3vw, 1.8rem);
	font-weight: 400;
	color: #fff;
}

.evc-modal-text {
	margin: 0 0 1.75rem;
	font-size: 0.9rem;
	line-height: 1.75;
	color: rgba(255, 255, 255, 0.62);
}

.evc-modal-btn {
	padding: 0.9rem 1.75rem;
	border: 0;
	border-radius: 3.125rem;
	background: var(--ev-rust-btn);
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: #fff;
	cursor: pointer;
	transition: background 0.25s ease;
}

.evc-modal-btn:hover {
	background: var(--wp--preset--color--rust-dark);
}

/* ================================================
   CONTACT: BREAKPOINTS
   ================================================ */

@media (max-width: 1024px) {
	.evc-methods {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}

	.evc-method:nth-child(3) {
		border-right: 0;
	}
}

@media (max-width: 900px) {
	.evc-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.evc-header-inner {
		align-items: flex-start;
	}

	.evc-header-logo img {
		max-width: 8rem;
	}
}

@media (max-width: 768px) {
	.evc-header-inner {
		flex-direction: column;
		align-items: flex-start;
		gap: 1.5rem;
	}

	.evc-grid {
		grid-template-columns: minmax(0, 1fr);
	}

	.evc-methods {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.evc-method {
		border-right: 0;
		border-bottom: 1px solid rgba(255, 255, 255, 0.07);
	}

	.evc-method:last-child {
		border-bottom: 0;
	}

	.evc-submit-row {
		flex-direction: column;
		align-items: stretch;
	}

	.evc-submit {
		justify-content: center;
		width: 100%;
	}
}

@media (max-width: 480px) {
	.evc-methods {
		grid-template-columns: minmax(0, 1fr);
	}

	.evc-input {
		font-size: 1rem;
	}
}

@media (max-width: 360px) {
	.evc-title {
		font-size: 2.1rem;
	}

	.evc-form-intro {
		font-size: 0.9rem;
	}
}

@media (prefers-reduced-motion: reduce) {
	.evc-input,
	.evc-submit,
	.evc-method,
	.evc-method-link,
	.evc-modal-close,
	.evc-modal-btn {
		transition: none;
	}

	.evc-submit:hover {
		transform: none;
	}
}

@media (prefers-contrast: more) {
	.evc-input,
	.evc-methods,
	.evc-method,
	.evc-modal {
		border-color: #fff;
	}

	.evc-form-intro,
	.evc-submit-note,
	.evc-connect-subtitle,
	.evc-method-label,
	.evc-modal-text {
		color: #fff;
	}
}

/* ================================================
   STATIC PAGES, SEARCH FORM, SEARCH RESULTS

   page.php is light and shares the blog's prose rules; the palette is
   declared once for .evb and .evp-page together, further up. Only the
   page furniture is here.

   search.php and the 404 stay dark. The line: long-form prose is
   light, navigation surfaces are dark.
   ================================================ */

/* ---------- page.php: the header ---------- */

.evp-head {
	border-bottom: 1px solid var(--evb-line);
	background: var(--evb-warm);
}

.evp-head-inner {
	max-width: 48rem;
	margin: 0 auto;
	padding: clamp(3rem, 7vw, 5rem) clamp(1.25rem, 5vw, 3rem) clamp(2rem, 4vw, 3rem);
}

.evp-crumbs {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem;
	margin-bottom: 1.5rem;
	font-size: 0.7rem;
	letter-spacing: 0.06em;
	color: var(--evb-ink-mute);
}

.evp-crumbs a {
	color: var(--evb-ink-soft);
	text-decoration: none;
	transition: color 0.2s ease;
}

.evp-crumbs a:hover {
	color: var(--ev-rust-text);
}

.evp-crumbs a:focus-visible {
	outline: 2px solid var(--wp--preset--color--rust);
	outline-offset: 3px;
}

.evp-crumbs-sep {
	color: var(--evb-ink-mute);
}

.evp-crumbs-current {
	max-width: 40ch;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	color: var(--evb-ink-strong);
}

.evp-title {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2rem, 5vw, 3rem);
	font-weight: 400;
	line-height: 1.15;
	color: var(--evb-ink-strong);
}

.evp-subtitle {
	max-width: 46ch;
	margin: 1rem 0 0;
	font-size: 1.05rem;
	font-style: italic;
	line-height: 1.7;
	color: var(--evb-ink-soft);
}

.evp-updated {
	margin: 1.5rem 0 0;
	font-size: 0.72rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--evb-ink-mute);
}

/* ---------- page.php: the reading column ---------- */

.evp-body {
	max-width: 48rem;
	margin: 0 auto;
	padding: clamp(2.5rem, 5vw, 4rem) clamp(1.25rem, 5vw, 3rem) clamp(4rem, 8vw, 6rem);
}

/*
   70 to 75 characters. The measure is set here rather than on
   .evb-article, which is a grid column beside a sticky sidebar and is
   sized by the grid.
*/
.evp-prose {
	max-width: 72ch;
}

/* The first heading in the body should not push away from the header. */
.evp-prose > *:first-child {
	margin-top: 0;
}

.evp-prose > *:last-child {
	margin-bottom: 0;
}

/*
   the_content() emits block markup, which the blog's flexible content
   never does. These are the block wrappers a text page actually
   produces; everything inside them is already covered by the shared
   prose rules.
*/
.evp-prose figure {
	margin: 2rem 0;
}

.evp-prose figcaption {
	margin-top: 0.75rem;
	font-size: 0.82rem;
	line-height: 1.6;
	color: var(--evb-ink-mute);
}

.evp-prose hr {
	margin: 3rem 0;
	border: 0;
	border-top: 1px solid var(--evb-line);
}

.evp-prose table {
	width: 100%;
	margin: 0 0 1.75rem;
	border-collapse: collapse;
	font-size: 0.95rem;
}

.evp-prose th,
.evp-prose td {
	padding: 0.75rem 0.9rem;
	border: 1px solid var(--evb-line);
	text-align: left;
	vertical-align: top;
}

.evp-prose th {
	background: var(--evb-warm);
	font-weight: 600;
	color: var(--evb-ink-strong);
}

/* A wide table scrolls in its own box rather than the page. */
.evp-prose .wp-block-table {
	overflow-x: auto;
}

.evp-prose code {
	padding: 0.1em 0.35em;
	border-radius: 0.25rem;
	background: var(--evb-warm);
	font-size: 0.92em;
}

/* ---------- The search form ---------- */

.evp-searchform {
	display: flex;
	flex-wrap: wrap;
	gap: 0.625rem;
	width: 100%;
}

.evp-searchform-field {
	box-sizing: border-box;
	flex: 1 1 12rem;
	min-width: 0;
	padding: 0.85rem 1rem;
	border: 1px solid rgba(255, 255, 255, 0.16);
	border-radius: 0.5rem;
	background-color: rgba(255, 255, 255, 0.04);
	font-family: inherit;
	font-size: 0.95rem;
	color: #fff;
	transition: border-color 0.2s ease, background-color 0.2s ease;
}

.evp-searchform-field::placeholder {
	color: rgba(255, 255, 255, 0.38);
}

.evp-searchform-field:focus {
	border-color: var(--wp--preset--color--gold);
	background-color: rgba(255, 255, 255, 0.07);
	outline: none;
}

.evp-searchform-submit {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	padding: 0.85rem 1.4rem;
	border: 0;
	border-radius: 0.5rem;
	background: var(--wp--preset--color--rust);
	font-family: inherit;
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: #fff;
	cursor: pointer;
	transition: background 0.25s ease;
}

.evp-searchform-submit svg {
	width: 1rem;
	height: 1rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
}

.evp-searchform-submit:hover {
	background: var(--wp--preset--color--rust-dark);
}

.evp-searchform-field:focus-visible,
.evp-searchform-submit:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

/* ---------- 404: the search box ---------- */

.evp-404-search {
	max-width: 26rem;
	margin: 0 auto 2rem;
	text-align: left;
}

/* ---------- Search results ---------- */

.evps {
	min-height: 60vh;
	padding: clamp(4rem, 9vw, 7rem) clamp(1.25rem, 5vw, 5rem) clamp(4rem, 8vw, 6rem);
	background: var(--wp--preset--color--bg-deep);
}

.evps-inner {
	max-width: 64rem;
	margin: 0 auto;
}

.evps-head {
	padding-bottom: clamp(2rem, 4vw, 3rem);
	border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

.evps-eyebrow {
	margin: 0 0 0.75rem;
	font-size: 0.63rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evps-title {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.75rem, 4vw, 2.5rem);
	font-weight: 400;
	line-height: 1.2;
	color: #fff;
	/*
	   A search term is somebody's typing, not our copy: it can be one
	   unbroken 80-character string, and without this it would push the
	   page sideways.
	*/
	overflow-wrap: anywhere;
}

.evps-title em {
	font-style: italic;
	color: var(--wp--preset--color--gold);
}

.evps-count {
	margin: 0.875rem 0 0;
	font-size: 0.85rem;
	color: rgba(255, 255, 255, 0.5);
}

.evps-count-page::before {
	content: '·';
	margin: 0 0.5rem;
	color: rgba(255, 255, 255, 0.3);
}

.evps-form {
	max-width: 30rem;
	margin-top: 1.75rem;
}

.evps-group {
	margin-top: clamp(2.25rem, 5vw, 3rem);
}

.evps-group-title {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0 0 1rem;
	font-size: 0.66rem;
	font-weight: 700;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.55);
}

.evps-group-count {
	padding: 0.15rem 0.5rem;
	border-radius: 0.75rem;
	background: rgba(255, 255, 255, 0.07);
	font-size: 0.65rem;
	letter-spacing: 0.06em;
	color: rgba(255, 255, 255, 0.7);
}

/*
   The grid the reused cards sit in. A layout rule, not a card: the
   tour card and the blog card are exactly the ones the tours listing
   and the inspiration grid render, and this only decides how many fit
   across.
*/
.evps-cards {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(18rem, 1fr));
	gap: 1.5rem;
}

.evps-list {
	margin: 0;
	padding: 0;
	list-style: none;
}

.evps-result + .evps-result {
	border-top: 1px solid rgba(255, 255, 255, 0.07);
}

.evps-result-link {
	display: flex;
	align-items: center;
	gap: 1rem;
	padding: 1.1rem 0.75rem;
	border-radius: 0.5rem;
	text-decoration: none;
	transition: background-color 0.2s ease;
}

.evps-result-link:hover {
	background-color: rgba(255, 255, 255, 0.04);
}

.evps-result-link:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

.evps-result-media {
	flex: 0 0 auto;
	width: 4.5rem;
	height: 4.5rem;
	overflow: hidden;
	border-radius: 0.375rem;
	background: rgba(255, 255, 255, 0.05);
}

.evps-result-media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.evps-result-body {
	flex: 1 1 auto;
	min-width: 0;
}

.evps-result-title {
	display: block;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.15rem;
	line-height: 1.35;
	color: #fff;
}

.evps-result-text {
	display: block;
	margin-top: 0.35rem;
	font-size: 0.86rem;
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.45);
}

.evps-result-arrow {
	flex: 0 0 auto;
	color: rgba(255, 255, 255, 0.25);
	transition: color 0.2s ease, transform 0.2s ease;
}

.evps-result-arrow svg {
	display: block;
	width: 1.1rem;
	height: 1.1rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.evps-result-link:hover .evps-result-arrow {
	color: var(--wp--preset--color--gold);
	transform: translateX(0.2rem);
}

/* ---------- Search: pagination ---------- */

.evps-pagination {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin-top: clamp(2.5rem, 5vw, 3.5rem);
	padding-top: 2rem;
	border-top: 1px solid rgba(255, 255, 255, 0.1);
}

.evps-pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 2.5rem;
	padding: 0.55rem 0.85rem;
	border: 1px solid rgba(255, 255, 255, 0.14);
	border-radius: 0.375rem;
	font-size: 0.8rem;
	color: rgba(255, 255, 255, 0.7);
	text-decoration: none;
	transition: border-color 0.2s ease, color 0.2s ease;
}

.evps-pagination a.page-numbers:hover {
	border-color: var(--wp--preset--color--gold);
	color: #fff;
}

.evps-pagination .page-numbers.current {
	border-color: var(--wp--preset--color--rust);
	background: var(--wp--preset--color--rust);
	color: #fff;
}

.evps-pagination .page-numbers.dots {
	border-color: transparent;
	color: rgba(255, 255, 255, 0.35);
}

.evps-pagination a.page-numbers:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

/* ---------- Search: nothing found ---------- */

.evps-empty {
	margin-top: clamp(2.5rem, 5vw, 3.5rem);
}

.evps-empty-title {
	margin: 0 0 0.75rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.35rem, 3vw, 1.75rem);
	font-weight: 400;
	color: #fff;
}

.evps-empty-text {
	max-width: 44ch;
	margin: 0 0 2rem;
	font-size: 0.95rem;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.5);
}

.evps-empty-links {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 1.25rem;
}

.evps-empty-btn {
	display: inline-flex;
	align-items: center;
	gap: 0.625rem;
	padding: 0.9rem 1.6rem;
	border-radius: 0.5rem;
	background: var(--wp--preset--color--rust);
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: #fff;
	text-decoration: none;
	transition: background 0.25s ease;
}

.evps-empty-btn svg {
	width: 1rem;
	height: 1rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.evps-empty-btn:hover {
	background: var(--wp--preset--color--rust-dark);
}

.evps-empty-link {
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evps-empty-btn:focus-visible,
.evps-empty-link:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

@media (max-width: 600px) {
	.evps-result-media {
		width: 3.5rem;
		height: 3.5rem;
	}

	.evps-result-title {
		font-size: 1.02rem;
	}

	.evps-result-arrow {
		display: none;
	}
}

@media (prefers-reduced-motion: reduce) {
	.evp-searchform-field,
	.evp-searchform-submit,
	.evps-result-link,
	.evps-result-arrow,
	.evps-pagination .page-numbers,
	.evps-empty-btn {
		transition: none;
	}

	.evps-result-link:hover .evps-result-arrow {
		transform: none;
	}
}

@media (prefers-contrast: more) {
	.evp-searchform-field,
	.evps-pagination .page-numbers {
		border-color: #fff;
	}

	.evps-count,
	.evps-group-title,
	.evps-result-text,
	.evps-empty-text {
		color: #fff;
	}
}

/* ================================================
   THE ABOUT PAGE

   Ported from six raw-HTML captures written for Elementor HTML
   widgets, each carrying its own style block. Everything below was
   rewritten on the way in: no !important anywhere, rem throughout, and
   the Elementor :has() wrapper override deleted rather than
   propagated.

   THE GROUNDS ALTERNATE. The captures had Mission and What We Do both
   on bg-deep and adjacent, so the seam between them vanished. Mission
   moves to charcoal, which fixes that seam and happens to give the
   whole page a clean ladder:

       hero        bg-deep
       mission     charcoal
       what we do  bg-deep
       our story   charcoal
       why         bg-deep

   BREAKPOINTS ARE THE HERO'S LADDER, 1200 / 1024 / 768 / 480 / 360.
   Why EcoVoyager and What We Do shipped with a single 768 rule, so
   their two-column grids held all the way down to 769px. The missing
   steps are added here.

   REVEALS ARE GATED ON .evpwt-js, the class a tiny inline snippet in
   wp_head puts on <html>. The hidden state only exists when the script
   that undoes it can run, so with JS off the page renders complete.
   The hero's entrance animations are not gated: they are pure CSS
   keyframes and finish on their own.

   STAGGERS USE --ev-i, an index the template sets on each card. The
   captures hardcoded nth-child(2), (3) and (4), so a fifth card would
   have revealed with no delay and arrived ahead of the rest.
   ================================================ */

:root {
	/*
	   The raised panel behind a Why EcoVoyager card. Lighter than
	   bg-deep so the cards read as lifted without needing a shadow
	   until hover. Not a theme.json palette entry: it is a structural
	   surface, not a colour anybody should paint text with.
	*/
	--ev-panel: #181818;
}

/* ================================================
   HERO
   ================================================ */

.ev-about-hero {
	position: relative;
	display: grid;
	grid-template-columns: 45% 55%;
	min-height: 100vh;
	/* clip, not hidden: hidden creates a scroll context and breaks
	   position: sticky on any descendant. */
	overflow: clip;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 1rem;
	color: #fff;
	background: var(--wp--preset--color--bg-deep);
	box-sizing: border-box;
}

.ev-about-hero *,
.ev-about-hero *::before,
.ev-about-hero *::after {
	box-sizing: border-box;
}

/* ---------- Left: the content panel ---------- */

/*
   The solid background here is what hides the video underneath on
   desktop. There is no clipping involved.
*/
.ev-about-hero__content {
	position: relative;
	z-index: 5;
	display: flex;
	flex-direction: column;
	justify-content: center;
	padding: 5rem 4rem 5rem 5rem;
	background: var(--wp--preset--color--bg-deep);
}

.ev-about-hero__eyebrow {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0 0 1.25rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	opacity: 0;
	animation: evAboutHeroFadeUp 0.8s ease-out 0.2s forwards;
}

.ev-about-hero__eyebrow::before {
	content: '';
	display: block;
	flex-shrink: 0;
	width: 1.75rem;
	height: 0.09375rem;
	background: var(--wp--preset--color--rust);
}

/* The LCP element. Nothing above it is deferred. */
.ev-about-hero__title {
	margin: 0 0 1.75rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.8rem, 5.5vw, 4.4rem);
	font-weight: 400;
	line-height: 1;
	color: #fff;
}

.ev-about-hero__title em {
	font-style: italic;
	font-size: inherit;
	line-height: inherit;
	color: var(--wp--preset--color--rust);
}

.ev-about-hero__rule {
	display: block;
	width: 1.75rem;
	height: 0.09375rem;
	margin-bottom: 1.5rem;
	background: linear-gradient(90deg, var(--wp--preset--color--gold), transparent);
	opacity: 0;
	animation: evAboutHeroFadeUp 0.7s ease-out 0.6s forwards;
}

.ev-about-hero__subtitle {
	max-width: 28.75rem;
	margin: 0 0 2.75rem;
	font-size: clamp(0.95rem, 1.6vw, 1.1rem);
	font-weight: 300;
	line-height: 1.75;
	color: var(--ev-soft);
	opacity: 0;
	animation: evAboutHeroFadeUp 0.8s ease-out 0.65s forwards;
}

.ev-about-hero__cta {
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
	align-items: center;
	gap: 1rem;
	opacity: 0;
	animation: evAboutHeroFadeUp 0.8s ease-out 0.8s forwards;
}

/*
   THIS IS THE CANONICAL BUTTON SPEC for the site: 1rem 2rem padding,
   0.72rem type, a 3.125rem radius, and the gold-to-rust gradient
   revealed on hover by a ::before rather than by swapping background.
*/
.ev-about-hero__btn {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.625rem;
	min-width: 17.5rem;
	padding: 1rem 2rem;
	overflow: hidden;
	border-radius: 3.125rem;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	text-decoration: none;
	cursor: pointer;
	transition: transform 0.3s ease, background 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease, color 0.3s ease;
}

.ev-about-hero__btn > * {
	position: relative;
	z-index: 1;
}

.ev-about-hero__btn svg {
	flex-shrink: 0;
	width: 1rem;
	height: 1rem;
	transition: transform 0.3s ease, fill 0.3s ease;
}

.ev-about-hero__btn--primary {
	border: 2px solid var(--wp--preset--color--rust);
	background: var(--wp--preset--color--rust);
	color: #fff;
	box-shadow: 0 0.5rem 1.75rem rgba(184, 98, 27, 0.4);
}

.ev-about-hero__btn--primary::before {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(135deg, var(--wp--preset--color--gold) 0%, var(--wp--preset--color--rust) 100%);
	opacity: 0;
	transition: opacity 0.3s ease;
}

.ev-about-hero__btn--primary svg {
	fill: #fff;
}

.ev-about-hero__btn--primary:hover::before {
	opacity: 1;
}

.ev-about-hero__btn--primary:hover {
	transform: translateY(-0.1875rem);
	box-shadow: 0 0.875rem 2.25rem rgba(184, 98, 27, 0.55);
}

.ev-about-hero__btn--primary:hover svg {
	transform: translateX(0.1875rem);
}

.ev-about-hero__btn--secondary {
	border: 2px solid rgba(255, 255, 255, 0.35);
	background: transparent;
	color: rgba(255, 255, 255, 0.85);
}

.ev-about-hero__btn--secondary svg {
	fill: rgba(255, 255, 255, 0.85);
}

.ev-about-hero__btn--secondary:hover {
	border-color: rgba(255, 255, 255, 0.7);
	background: rgba(255, 255, 255, 0.06);
	color: #fff;
}

.ev-about-hero__btn--secondary:hover svg {
	transform: translateX(0.1875rem);
	fill: #fff;
}

.ev-about-hero__btn:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: 4px;
}

.ev-about-hero__scroll {
	position: absolute;
	bottom: 2.25rem;
	left: 5rem;
	display: flex;
	align-items: center;
	gap: 0.75rem;
	font-size: 0.6rem;
	font-weight: 600;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.32);
	opacity: 0;
	animation: evAboutHeroFadeUp 0.8s ease-out 1.4s forwards;
}

.ev-about-hero__scroll-line {
	position: relative;
	display: block;
	width: 2.25rem;
	height: 0.0625rem;
	overflow: clip;
	background: rgba(255, 255, 255, 0.2);
}

/*
   translateX, not the left property, so the pulse stays on the
   compositor thread instead of laying out every frame. will-change
   promotes it before the animation starts.

   This is the only animation on the page that loops forever, and it
   is on a pseudo-element, which is why pausing it off screen is a
   class on the section rather than a style set from script. The
   capture set animationPlayState on the section itself and that
   pauses nothing: the property is not inherited and the section has
   no animation of its own.
*/
.ev-about-hero__scroll-line::after {
	content: '';
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background: var(--wp--preset--color--rust);
	animation: evAboutHeroScrollPulse 2.4s ease-in-out 2s infinite;
	will-change: transform;
}

.ev-about-hero.is-offscreen .ev-about-hero__scroll-line::after {
	animation-play-state: paused;
}

@keyframes evAboutHeroScrollPulse {
	0% {
		transform: translateX(-100%);
	}

	50% {
		transform: translateX(0);
	}

	100% {
		transform: translateX(100%);
	}
}

@keyframes evAboutHeroFadeUp {
	from {
		opacity: 0;
		transform: translateY(1.375rem);
	}

	to {
		opacity: 1;
		transform: translateY(0);
	}
}

/* ---------- Right: the video panel ---------- */

.ev-about-hero__media {
	position: relative;
	overflow: clip;
	background: var(--wp--preset--color--bg-deep);
}

.ev-about-hero__video {
	position: absolute;
	inset: 0;
	z-index: 0;
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	pointer-events: none;
}

/* The left edge fades into the content panel. */
.ev-about-hero__media::before {
	content: '';
	position: absolute;
	inset: 0;
	z-index: 1;
	background: linear-gradient(90deg,
		var(--wp--preset--color--bg-deep) 0%,
		rgba(17, 16, 16, 0.85) 4%,
		rgba(17, 16, 16, 0.3) 12%,
		rgba(17, 16, 16, 0.06) 22%,
		transparent 35%);
	pointer-events: none;
}

.ev-about-hero__media::after {
	content: '';
	position: absolute;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 1;
	height: 35%;
	background: linear-gradient(to top, rgba(17, 16, 16, 0.5) 0%, transparent 100%);
	pointer-events: none;
}

/* ================================================
   MISSION
   ================================================ */

.ev-mission {
	padding: 5.625rem 0;
	border-top: 1px solid rgba(255, 255, 255, 0.07);
	overflow: clip;
	font-family: var(--wp--preset--font-family--montserrat);
	color: #fff;
	background: var(--ev-charcoal);
}

.ev-mission *,
.ev-mission *::before,
.ev-mission *::after {
	box-sizing: border-box;
}

.ev-mission__wrap {
	max-width: 75rem;
	margin: 0 auto;
	padding: 0 1.5rem;
}

.ev-mission__panel {
	position: relative;
	display: flex;
	align-items: center;
	min-height: 35rem;
	overflow: clip;
	border-radius: 1.625rem;
	box-shadow: 0 1.875rem 4.375rem rgba(0, 0, 0, 0.55);
}

/* ---------- The carousel ---------- */

.ev-mission__bg {
	position: absolute;
	inset: 0;
	z-index: 0;
}

.ev-mission__slide {
	position: absolute;
	inset: 0;
	z-index: 0;
	opacity: 0;
	transition: opacity 1.4s ease;
}

/*
   The first slide carries is-active in the markup, so the right image
   is on screen before any script runs and stays there if none does.
*/
.ev-mission__slide.is-active {
	opacity: 1;
	z-index: 1;
}

/*
   The zoom runs continuously on every slide rather than restarting on
   each change, which is what stops a visible snap at the crossfade.
*/
.ev-mission__img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	transform: scale(1.05);
	animation: evMissionKen 18s ease-in-out infinite alternate;
}

@keyframes evMissionKen {
	0% {
		transform: scale(1.05);
	}

	100% {
		transform: scale(1.2);
	}
}

/*
   The gradient sits above the slides and below the card. Move it
   either way and the copy loses its contrast or the photograph
   disappears. It runs 0.92 where the card sits down to 0.1 on the open
   side, so the image stays readable.
*/
.ev-mission__panel::after {
	content: '';
	position: absolute;
	inset: 0;
	z-index: 2;
	background: linear-gradient(100deg,
		rgba(17, 16, 16, 0.92) 0%,
		rgba(17, 16, 16, 0.72) 38%,
		rgba(17, 16, 16, 0.25) 70%,
		rgba(17, 16, 16, 0.1) 100%);
	pointer-events: none;
}

/* ---------- The card ---------- */

.ev-mission__card {
	position: relative;
	z-index: 3;
	max-width: 33.75rem;
	margin: 0 0 0 6%;
	padding: 2.875rem 2.875rem 3.125rem;
	border: 1px solid rgba(212, 196, 168, 0.14);
	border-radius: 1.25rem;
	background: rgba(17, 16, 16, 0.55);
	backdrop-filter: blur(6px);
}

.evpwt-js .ev-mission__card {
	opacity: 0;
	transform: translateY(1.75rem);
	transition: opacity 0.8s ease, transform 0.8s ease;
}

.ev-mission.is-in .ev-mission__card {
	opacity: 1;
	transform: translateY(0);
}

.ev-mission__eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0 0 1.25rem;
	font-size: 0.76rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.ev-mission__eyebrow::before {
	content: '';
	display: block;
	width: 1.75rem;
	height: 0.09375rem;
	background: linear-gradient(90deg, transparent, var(--wp--preset--color--gold));
}

.ev-mission__title {
	margin: 0 0 1.375rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2rem, 3.2vw, 2.7rem);
	font-weight: 400;
	line-height: 1.18;
	color: #fff;
	text-shadow: 0 2px 20px rgba(0, 0, 0, 0.4);
}

.ev-mission__title em {
	font-style: italic;
	color: var(--wp--preset--color--rust);
}

.ev-mission__statement {
	margin: 0 0 1.75rem;
	font-size: 1rem;
	line-height: 1.85;
	color: rgba(255, 255, 255, 0.82);
}

.ev-mission__tagline {
	display: inline-flex;
	align-items: center;
	gap: 0.875rem;
	font-size: 0.9rem;
	font-weight: 600;
	color: var(--wp--preset--color--gold);
}

.ev-mission__tagline::before {
	content: '';
	display: block;
	width: 1.875rem;
	height: 0.125rem;
	background: linear-gradient(90deg, var(--wp--preset--color--rust), var(--wp--preset--color--gold));
}

/* ================================================
   WHAT WE DO

   --ev-wwd-gutter is read by both the wrap's padding and the mobile
   carousel's negative margin. They have to be the same number for the
   strip to reach the viewport edge, and two literals drift.
   ================================================ */

.ev-wwd {
	--ev-wwd-gutter: 1.5rem;

	padding: 6.25rem 0;
	border-top: 1px solid rgba(255, 255, 255, 0.07);
	overflow: clip;
	font-family: var(--wp--preset--font-family--montserrat);
	color: #fff;
	background: var(--wp--preset--color--bg-deep);
}

.ev-wwd *,
.ev-wwd *::before,
.ev-wwd *::after {
	box-sizing: border-box;
}

.ev-wwd__wrap {
	max-width: 75rem;
	margin: 0 auto;
	padding: 0 var(--ev-wwd-gutter);
}

.ev-wwd__head {
	margin-bottom: 3.375rem;
	text-align: center;
}

.evpwt-js .ev-wwd__head {
	opacity: 0;
	transform: translateY(1.5rem);
	transition: opacity 0.7s ease, transform 0.7s ease;
}

.ev-wwd.is-in .ev-wwd__head {
	opacity: 1;
	transform: translateY(0);
}

.ev-wwd__eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 0.875rem;
	margin: 0 0 1.125rem;
	font-size: 0.82rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
}

.ev-wwd__eyebrow::before,
.ev-wwd__eyebrow::after {
	content: '';
	display: block;
	width: 2.125rem;
	height: 0.09375rem;
}

.ev-wwd__eyebrow::before {
	background: linear-gradient(90deg, transparent, var(--wp--preset--color--rust));
}

.ev-wwd__eyebrow::after {
	background: linear-gradient(90deg, var(--wp--preset--color--rust), transparent);
}

.ev-wwd__title {
	margin: 0 0 1.125rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.4rem, 4.2vw, 3.6rem);
	font-weight: 400;
	line-height: 1.12;
	color: #fff;
}

.ev-wwd__title em {
	font-style: italic;
	color: var(--wp--preset--color--rust);
}

.ev-wwd__sub {
	max-width: 37.5rem;
	margin: 0 auto;
	font-size: 1.02rem;
	line-height: 1.8;
	color: rgba(255, 255, 255, 0.6);
}

.ev-wwd__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1.625rem;
}

.ev-wwd__card {
	position: relative;
	height: 26.25rem;
	overflow: clip;
	border-radius: 1.375rem;
	transition: box-shadow 0.4s ease;
}

.evpwt-js .ev-wwd__card {
	opacity: 0;
	transform: translateY(1.875rem);
	transition: opacity 0.6s ease, transform 0.6s ease, box-shadow 0.4s ease;
}

.ev-wwd.is-in .ev-wwd__card {
	opacity: 1;
	transform: translateY(0);
	/* Index driven, so a fifth card keeps the sequence. */
	transition-delay: calc(var(--ev-i, 0) * 0.08s);
}

.ev-wwd__card:hover {
	box-shadow: 0 1.25rem 3.125rem rgba(0, 0, 0, 0.4);
}

/*
   A real img, not a background. These four files are the ones whose
   CSS backgrounds rendered broken once already.
*/
.ev-wwd__img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	transition: transform 0.8s ease;
}

.ev-wwd__card:hover .ev-wwd__img {
	transform: scale(1.08);
}

.ev-wwd__scrim {
	position: absolute;
	inset: 0;
	background: linear-gradient(0deg, rgba(0, 0, 0, 0.9) 0%, rgba(0, 0, 0, 0.55) 45%, rgba(0, 0, 0, 0.15) 100%);
	transition: background 0.4s ease;
	pointer-events: none;
}

.ev-wwd__card:hover .ev-wwd__scrim {
	background: linear-gradient(0deg, rgba(184, 98, 27, 0.92) 0%, rgba(184, 98, 27, 0.5) 45%, rgba(0, 0, 0, 0.2) 100%);
}

.ev-wwd__body {
	position: absolute;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 2;
	padding: 2.25rem;
}

.ev-wwd__num {
	display: block;
	margin-bottom: 0.625rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 3.4rem;
	line-height: 1;
	color: rgba(212, 196, 168, 0.35);
	transition: color 0.4s ease;
}

.ev-wwd__card:hover .ev-wwd__num {
	color: rgba(255, 255, 255, 0.55);
}

.ev-wwd__card-title {
	margin: 0 0 0.75rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.7rem;
	font-weight: 500;
	color: #fff;
}

.ev-wwd__uline {
	display: block;
	width: 3rem;
	height: 0.125rem;
	margin-bottom: 0.875rem;
	background: linear-gradient(90deg, var(--wp--preset--color--gold), transparent);
	transition: width 0.4s ease, background 0.4s ease;
}

.ev-wwd__card:hover .ev-wwd__uline {
	width: 5.625rem;
	background: linear-gradient(90deg, #fff, transparent);
}

.ev-wwd__text {
	margin: 0;
	font-size: 0.92rem;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.85);
}

/* ================================================
   OUR STORY
   ================================================ */

.ev-story {
	position: relative;
	display: grid;
	grid-template-columns: 1fr 1fr;
	min-height: 42.5rem;
	border-top: 1px solid rgba(255, 255, 255, 0.07);
	overflow: clip;
	font-family: var(--wp--preset--font-family--montserrat);
	color: #fff;
	background: var(--ev-charcoal);
}

.ev-story *,
.ev-story *::before,
.ev-story *::after {
	box-sizing: border-box;
}

.ev-story__pic {
	position: relative;
	overflow: clip;
}

.ev-story__img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	transform: scale(1.04);
	animation: evStoryKen 24s ease-in-out infinite alternate;
}

@keyframes evStoryKen {
	0% {
		transform: scale(1.04) translateY(0);
	}

	100% {
		transform: scale(1.12) translateY(-0.75rem);
	}
}

/* The photo dissolves into the panel rather than meeting it at a line. */
.ev-story__pic::after {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(to right,
		rgba(26, 26, 26, 0) 0%,
		rgba(26, 26, 26, 0.12) 35%,
		rgba(26, 26, 26, 0.5) 70%,
		rgba(26, 26, 26, 0.9) 90%,
		rgba(26, 26, 26, 1) 100%);
	pointer-events: none;
}

.ev-story__cap {
	position: absolute;
	bottom: 1.75rem;
	left: 2rem;
	z-index: 2;
	display: inline-flex;
	align-items: center;
	gap: 0.625rem;
	font-size: 0.66rem;
	font-weight: 600;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.7);
}

.ev-story__cap::before {
	content: '';
	display: block;
	width: 1.375rem;
	height: 0.09375rem;
	background: var(--wp--preset--color--gold);
}

.ev-story__content {
	position: relative;
	z-index: 2;
	display: flex;
	align-items: center;
	padding: 6.25rem 5rem 6.25rem 3rem;
}

.ev-story__inner {
	max-width: 35rem;
}

.evpwt-js .ev-story__inner {
	opacity: 0;
	transform: translateX(2.5rem);
	transition: opacity 1s ease, transform 1s ease;
}

.ev-story.is-in .ev-story__inner {
	opacity: 1;
	transform: translateX(0);
}

.ev-story__eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0 0 1.75rem;
	font-size: 0.8rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
}

.ev-story__eyebrow::after {
	content: '';
	display: block;
	width: 3.125rem;
	height: 0.09375rem;
	background: linear-gradient(90deg, var(--wp--preset--color--rust), transparent);
}

/*
   There is deliberately no divider ornament between this and the
   paragraphs. The earlier build had one and the rewrite removed it.
*/
.ev-story__opening {
	margin: 0 0 2rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.5rem, 2.2vw, 1.95rem);
	font-weight: 400;
	line-height: 1.4;
	color: #fff;
}

.ev-story__opening em {
	font-style: italic;
	color: var(--wp--preset--color--rust);
}

.ev-story__paras {
	display: flex;
	flex-direction: column;
	gap: 1.375rem;
}

.ev-story__paras p {
	margin: 0;
	font-size: 1rem;
	line-height: 1.85;
	color: rgba(255, 255, 255, 0.65);
}

.evpwt-js .ev-story__paras p {
	opacity: 0;
	transform: translateY(1.125rem);
	transition: opacity 0.6s ease, transform 0.6s ease;
}

.ev-story.is-in .ev-story__paras p {
	opacity: 1;
	transform: translateY(0);
	/* 0.25s, then 0.15s per paragraph. Index driven, so a fourth
	   paragraph does not arrive ahead of the third. */
	transition-delay: calc(0.25s + var(--ev-i, 0) * 0.15s);
}

.ev-story__closing {
	margin-top: 2.5rem;
	padding-top: 1.875rem;
	border-top: 1px solid rgba(212, 196, 168, 0.15);
}

.evpwt-js .ev-story__closing {
	opacity: 0;
	transform: translateY(1.125rem);
	transition: opacity 0.6s ease 0.7s, transform 0.6s ease 0.7s;
}

.ev-story.is-in .ev-story__closing {
	opacity: 1;
	transform: translateY(0);
}

.ev-story__tagline {
	margin: 0 0 1.375rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.25rem;
	font-weight: 400;
	color: var(--wp--preset--color--rust);
}

.ev-story__cta {
	display: inline-flex;
	align-items: center;
	gap: 0.75rem;
	font-size: 0.85rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	text-decoration: none;
	transition: gap 0.3s ease, color 0.3s ease;
}

.ev-story__cta:hover {
	gap: 1.125rem;
	color: #fff;
}

.ev-story__cta svg {
	width: 1.125rem;
	height: 1.125rem;
	fill: currentColor;
	transition: transform 0.3s ease;
}

.ev-story__cta:hover svg {
	transform: translateX(0.1875rem);
}

.ev-story__cta:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: 4px;
	border-radius: 2px;
}

/* ================================================
   WHY ECOVOYAGER

   Shipped as captured. One revision exists after this and could not be
   recovered: the user asked for a gradient so the text panel stopped
   hiding the photographs, and the reply is empty in the transcript.
   The gradient below is the one that was already there when that was
   said. Nothing has been invented to replace it.
   ================================================ */

.ev-why {
	padding: 6.875rem 0;
	border-top: 1px solid rgba(255, 255, 255, 0.07);
	overflow: clip;
	font-family: var(--wp--preset--font-family--montserrat);
	color: #fff;
	background: var(--wp--preset--color--bg-deep);
}

.ev-why *,
.ev-why *::before,
.ev-why *::after {
	box-sizing: border-box;
}

.ev-why__wrap {
	max-width: 71.25rem;
	margin: 0 auto;
	padding: 0 1.5rem;
}

.ev-why__head {
	margin-bottom: 3.75rem;
	text-align: center;
}

.evpwt-js .ev-why__head {
	opacity: 0;
	transform: translateY(1.5rem);
	transition: opacity 0.7s ease, transform 0.7s ease;
}

.ev-why.is-in .ev-why__head {
	opacity: 1;
	transform: translateY(0);
}

.ev-why__eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 0.875rem;
	margin: 0 0 1.125rem;
	font-size: 0.8rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
}

.ev-why__eyebrow::before,
.ev-why__eyebrow::after {
	content: '';
	display: block;
	width: 2.125rem;
	height: 0.09375rem;
}

.ev-why__eyebrow::before {
	background: linear-gradient(90deg, transparent, var(--wp--preset--color--rust));
}

.ev-why__eyebrow::after {
	background: linear-gradient(90deg, var(--wp--preset--color--rust), transparent);
}

.ev-why__title {
	margin: 0 0 1rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2rem, 3.6vw, 3rem);
	font-weight: 400;
	color: #fff;
}

.ev-why__title em {
	font-style: italic;
	color: var(--wp--preset--color--rust);
}

.ev-why__sub {
	max-width: 37.5rem;
	margin: 0 auto;
	font-size: 1rem;
	line-height: 1.8;
	color: rgba(255, 255, 255, 0.6);
}

.ev-why__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1.75rem;
}

/* Lighter than the section ground, so a card reads as raised without
   a shadow until hover. */
.ev-why__card {
	overflow: clip;
	border: 1px solid rgba(212, 196, 168, 0.1);
	border-radius: 1.25rem;
	background: var(--ev-panel);
	transition: box-shadow 0.45s ease, border-color 0.45s ease;
}

.evpwt-js .ev-why__card {
	opacity: 0;
	transform: translateY(2rem);
	transition: opacity 0.6s ease, transform 0.6s ease, box-shadow 0.45s ease, border-color 0.45s ease;
}

.ev-why.is-in .ev-why__card {
	opacity: 1;
	transform: translateY(0);
	transition-delay: calc(var(--ev-i, 0) * 0.09s);
}

.ev-why__card:hover {
	border-color: rgba(184, 98, 27, 0.32);
	box-shadow: 0 1.5rem 3.4375rem rgba(0, 0, 0, 0.4);
}

.ev-why__media {
	position: relative;
	height: 14.375rem;
	overflow: clip;
}

.ev-why__img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	transition: transform 0.7s ease;
}

.ev-why__card:hover .ev-why__img {
	transform: scale(1.07);
}

.ev-why__media::after {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(to bottom, rgba(24, 24, 24, 0) 50%, rgba(24, 24, 24, 0.85) 100%);
	pointer-events: none;
}

.ev-why__body {
	padding: 2rem 2rem 2.25rem;
}

.ev-why__body h3 {
	margin: 0 0 0.875rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.45rem;
	font-weight: 500;
	color: #fff;
}

.ev-why__rule {
	display: block;
	width: 2.625rem;
	height: 0.125rem;
	margin-bottom: 1rem;
	background: linear-gradient(90deg, var(--wp--preset--color--rust), var(--wp--preset--color--gold));
}

.ev-why__body p {
	margin: 0;
	font-size: 0.95rem;
	line-height: 1.78;
	color: rgba(255, 255, 255, 0.64);
}

/* ================================================
   ABOUT: BREAKPOINTS
   The hero's ladder, applied to every section.
   ================================================ */

@media (max-width: 1200px) {
	.ev-about-hero {
		grid-template-columns: 48% 52%;
	}

	.ev-about-hero__content {
		padding: 4.5rem 3rem 4.5rem 3.5rem;
	}

	.ev-about-hero__scroll {
		left: 3.5rem;
	}

	.ev-story__content {
		padding: 5rem 3.5rem 5rem 2.5rem;
	}
}

@media (max-width: 1024px) {
	/* ---- Hero: the media fills the section, content sits over it ---- */

	.ev-about-hero {
		display: block;
		position: relative;
		min-height: 100vh;
		/*
		   lvh, NOT dvh. dvh makes the bar shift while the iOS Safari
		   URL bar shows and hides. The known cost of lvh is a slightly
		   below-fold edge on first paint. Deliberate.
		*/
		min-height: 100lvh;
	}

	.ev-about-hero__media {
		position: absolute;
		inset: 0;
		z-index: 0;
		display: block;
	}

	.ev-about-hero__media::before {
		background: linear-gradient(180deg,
			rgba(17, 16, 16, 0.45) 0%,
			rgba(17, 16, 16, 0.4) 30%,
			rgba(17, 16, 16, 0.75) 65%,
			rgba(17, 16, 16, 0.95) 100%);
	}

	.ev-about-hero__media::after {
		display: none;
	}

	.ev-about-hero__content {
		position: relative;
		z-index: 5;
		min-height: 100vh;
		min-height: 100lvh;
		padding: 6.25rem 3.5rem 5rem;
		justify-content: center;
		align-items: center;
		text-align: center;
		background: transparent;
	}

	.ev-about-hero__scroll {
		display: none;
	}

	.ev-about-hero__eyebrow {
		justify-content: center;
		margin-bottom: 1.5rem;
		font-size: 0.65rem;
		color: var(--wp--preset--color--gold);
	}

	.ev-about-hero__eyebrow::before {
		width: 1.75rem;
		background: linear-gradient(90deg, transparent, var(--wp--preset--color--gold));
	}

	.ev-about-hero__eyebrow::after {
		content: '';
		display: block;
		flex-shrink: 0;
		width: 1.75rem;
		height: 0.09375rem;
		background: linear-gradient(90deg, var(--wp--preset--color--gold), transparent);
	}

	.ev-about-hero__title {
		margin: 0 0 1.625rem;
		font-size: clamp(3.2rem, 8vw, 4.6rem);
		line-height: 1.05;
		text-align: center;
		text-shadow: 0 2px 24px rgba(0, 0, 0, 0.5);
	}

	.ev-about-hero__rule {
		width: 3.125rem;
		margin: 0 auto 1.75rem;
		background: linear-gradient(90deg, transparent, var(--wp--preset--color--gold), transparent);
	}

	.ev-about-hero__subtitle {
		max-width: 36.25rem;
		margin: 0 auto 2.5rem;
		font-size: 1.05rem;
		line-height: 1.7;
		color: rgba(255, 255, 255, 0.85);
		text-align: center;
		text-shadow: 0 1px 12px rgba(0, 0, 0, 0.5);
	}

	.ev-about-hero__cta {
		flex-direction: row;
		flex-wrap: wrap;
		justify-content: center;
		gap: 0.875rem;
		width: auto;
	}

	.ev-about-hero__btn {
		min-width: 15rem;
		padding: 1rem 1.875rem;
		font-size: 0.7rem;
	}

	/* ---- Mission ---- */

	.ev-mission {
		padding: 4.375rem 0;
	}

	.ev-mission__panel {
		min-height: 0;
	}

	.ev-mission__card {
		width: 100%;
		max-width: none;
		margin: 0;
	}

	.ev-mission__panel::after {
		background: linear-gradient(180deg, rgba(17, 16, 16, 0.55) 0%, rgba(17, 16, 16, 0.78) 100%);
	}

	/*
	   ---- What We Do ----
	   The capture had no 1024 rule at all, so a 2x2 grid of 26rem cards
	   held down to 769px.
	*/

	.ev-wwd {
		padding: 5.5rem 0;
	}

	.ev-wwd__head {
		margin-bottom: 2.75rem;
	}

	.ev-wwd__grid {
		gap: 1.25rem;
	}

	.ev-wwd__card {
		height: 23.75rem;
	}

	.ev-wwd__body {
		padding: 1.75rem;
	}

	.ev-wwd__num {
		font-size: 2.8rem;
	}

	.ev-wwd__card-title {
		font-size: 1.5rem;
	}

	/* ---- Our Story: stacks ---- */

	.ev-story {
		grid-template-columns: minmax(0, 1fr);
		min-height: 0;
	}

	.ev-story__pic {
		height: 27.5rem;
	}

	.ev-story__pic::after {
		background: linear-gradient(to bottom,
			rgba(26, 26, 26, 0) 0%,
			rgba(26, 26, 26, 0.55) 60%,
			rgba(26, 26, 26, 1) 100%);
	}

	.ev-story__content {
		padding: 4rem 2.5rem 5rem;
		justify-content: center;
		text-align: center;
	}

	.ev-story__inner {
		max-width: 43.75rem;
	}

	.evpwt-js .ev-story__inner {
		transform: translateY(1.875rem);
	}

	.ev-story.is-in .ev-story__inner {
		transform: translateY(0);
	}

	.ev-story__eyebrow {
		justify-content: center;
	}

	.ev-story__eyebrow::after {
		display: none;
	}

	.ev-story__closing {
		display: flex;
		flex-direction: column;
		align-items: center;
	}

	/*
	   ---- Why EcoVoyager ----
	   Same missing step as What We Do. The grid stays two across but
	   the cards stop being cramped.
	*/

	.ev-why {
		padding: 5.5rem 0;
	}

	.ev-why__head {
		margin-bottom: 3rem;
	}

	.ev-why__grid {
		gap: 1.25rem;
	}

	.ev-why__media {
		height: 12.5rem;
	}

	.ev-why__body {
		padding: 1.625rem 1.625rem 1.875rem;
	}

	.ev-why__body h3 {
		font-size: 1.3rem;
	}
}

@media (max-width: 768px) {
	/* ---- Hero ---- */

	.ev-about-hero__content {
		padding: 6.875rem 1.5rem 4rem;
	}

	.ev-about-hero__eyebrow {
		margin-bottom: 1.5rem;
		font-size: 0.72rem;
	}

	.ev-about-hero__eyebrow::before,
	.ev-about-hero__eyebrow::after {
		width: 1.5rem;
	}

	.ev-about-hero__title {
		margin-bottom: 1.5rem;
		font-size: clamp(3.2rem, 12.5vw, 4.6rem);
	}

	.ev-about-hero__rule {
		width: 3rem;
		margin-bottom: 1.625rem;
	}

	.ev-about-hero__subtitle {
		max-width: 100%;
		margin-bottom: 2.25rem;
		font-size: 1.15rem;
		line-height: 1.7;
	}

	.ev-about-hero__cta {
		flex-direction: column;
		gap: 0.75rem;
		width: 100%;
	}

	.ev-about-hero__btn {
		width: 100%;
		min-width: 0;
		max-width: 23.75rem;
		margin: 0 auto;
		padding: 1.0625rem 2rem;
		font-size: 0.72rem;
	}

	/* ---- Mission ---- */

	.ev-mission__wrap {
		padding: 0 0.875rem;
	}

	.ev-mission__card {
		padding: 2.25rem 1.625rem 2.5rem;
		backdrop-filter: blur(4px);
	}

	/* ---- What We Do: the grid becomes a swipeable strip ---- */

	.ev-wwd {
		padding: 5rem 0;
	}

	.ev-wwd__head {
		margin-bottom: 2.5rem;
	}

	.ev-wwd__eyebrow {
		font-size: 0.85rem;
	}

	/*
	   The mobile minimum is LARGER than the desktop minimum. That is
	   deliberate and was asked for; it is not a typo.
	*/
	.ev-wwd__title {
		font-size: clamp(2.7rem, 11vw, 3.6rem);
	}

	.ev-wwd__sub {
		font-size: 1.08rem;
	}

	.ev-wwd__grid {
		display: flex;
		grid-template-columns: none;
		gap: 1rem;
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
		/* Bleeds to the viewport edge against the wrap's own padding.
		   Both read the same custom property so they cannot drift. */
		margin: 0 calc(var(--ev-wwd-gutter) * -1);
		padding: 0.25rem var(--ev-wwd-gutter) 0.875rem;
	}

	.ev-wwd__grid::-webkit-scrollbar {
		display: none;
	}

	/* 84%, so the next card peeks and signals that the strip moves. */
	.ev-wwd__card {
		flex: 0 0 84%;
		height: 26.25rem;
		scroll-snap-align: center;
	}

	.ev-wwd__body {
		padding: 1.875rem;
	}

	.ev-wwd__num {
		font-size: 3.4rem;
	}

	.ev-wwd__card-title {
		font-size: 1.7rem;
	}

	/* ---- Our Story ---- */

	.ev-story__pic {
		height: 22.5rem;
	}

	.ev-story__content {
		padding: 3.25rem 1.5rem 4rem;
	}

	.ev-story__opening {
		font-size: clamp(1.35rem, 5vw, 1.6rem);
	}

	.ev-story__cap {
		bottom: 1.375rem;
		left: 1.375rem;
	}

	/* ---- Why EcoVoyager: one column ---- */

	.ev-why {
		padding: 5rem 0;
	}

	.ev-why__grid {
		grid-template-columns: minmax(0, 1fr);
		gap: 1.375rem;
	}

	.ev-why__media {
		height: 13.75rem;
	}

	.ev-why__body {
		padding: 2rem 2rem 2.25rem;
	}

	.ev-why__body h3 {
		font-size: 1.45rem;
	}
}

@media (max-width: 480px) {
	/* ---- Hero ---- */

	.ev-about-hero__content {
		padding: 6rem 1.25rem 3.25rem;
	}

	.ev-about-hero__eyebrow {
		margin-bottom: 1.25rem;
		font-size: 0.66rem;
	}

	.ev-about-hero__eyebrow::before,
	.ev-about-hero__eyebrow::after {
		width: 1.25rem;
	}

	.ev-about-hero__title {
		margin-bottom: 1.375rem;
		font-size: clamp(2.9rem, 13vw, 3.9rem);
	}

	.ev-about-hero__rule {
		width: 2.5rem;
		margin-bottom: 1.375rem;
	}

	.ev-about-hero__subtitle {
		margin-bottom: 1.875rem;
		font-size: 1.08rem;
	}

	.ev-about-hero__btn {
		max-width: 20rem;
		padding: 1rem 1.75rem;
	}

	/* ---- Mission ---- */

	.ev-mission {
		padding: 3.5rem 0;
	}

	.ev-mission__panel {
		border-radius: 1.25rem;
	}

	.ev-mission__card {
		padding: 1.875rem 1.25rem 2.125rem;
	}

	.ev-mission__title {
		font-size: 1.85rem;
	}

	.ev-mission__statement {
		font-size: 0.95rem;
		line-height: 1.8;
	}

	/* ---- What We Do ---- */

	.ev-wwd {
		--ev-wwd-gutter: 1.25rem;

		padding: 4rem 0;
	}

	.ev-wwd__title {
		font-size: clamp(2.2rem, 11vw, 2.9rem);
	}

	.ev-wwd__sub {
		font-size: 1rem;
	}

	.ev-wwd__card {
		flex-basis: 86%;
		height: 24rem;
	}

	.ev-wwd__body {
		padding: 1.5rem;
	}

	.ev-wwd__num {
		font-size: 2.8rem;
	}

	.ev-wwd__card-title {
		font-size: 1.45rem;
	}

	/* ---- Our Story ---- */

	.ev-story__pic {
		height: 18rem;
	}

	.ev-story__content {
		padding: 2.75rem 1.25rem 3.5rem;
	}

	.ev-story__eyebrow {
		font-size: 0.72rem;
	}

	/* ---- Why EcoVoyager ---- */

	.ev-why {
		padding: 4rem 0;
	}

	.ev-why__wrap {
		padding: 0 1.25rem;
	}

	.ev-why__head {
		margin-bottom: 2.5rem;
	}

	.ev-why__media {
		height: 12rem;
	}

	.ev-why__body {
		padding: 1.625rem 1.5rem 1.875rem;
	}

	.ev-why__body h3 {
		font-size: 1.3rem;
	}
}

@media (max-width: 360px) {
	.ev-about-hero__content {
		padding: 5.5rem 1rem 2.75rem;
	}

	.ev-about-hero__title {
		font-size: 2.7rem;
	}

	.ev-about-hero__subtitle {
		font-size: 1rem;
	}

	.ev-about-hero__btn {
		max-width: 17.5rem;
		padding: 0.875rem 1.5rem;
		font-size: 0.7rem;
	}

	.ev-mission__card {
		padding: 1.625rem 1.125rem 1.875rem;
	}

	.ev-mission__title {
		font-size: 1.65rem;
	}

	.ev-wwd__title {
		font-size: 2.1rem;
	}

	.ev-wwd__card {
		height: 22.5rem;
	}

	.ev-wwd__num {
		font-size: 2.4rem;
	}

	.ev-story__pic {
		height: 15rem;
	}

	.ev-story__opening {
		font-size: 1.25rem;
	}

	.ev-why__media {
		height: 10.5rem;
	}

	.ev-why__body h3 {
		font-size: 1.2rem;
	}
}

/* ================================================
   ABOUT: REDUCED MOTION

   Last, so these win on equal specificity without !important.

   The hero becomes a static poster: the video is paused from script
   and every entrance animation is off. Mission holds on its first
   image, because the script returns before it ever starts the
   interval. Every reveal is forced visible.
   ================================================ */

@media (prefers-reduced-motion: reduce) {
	.ev-about-hero__eyebrow,
	.ev-about-hero__rule,
	.ev-about-hero__subtitle,
	.ev-about-hero__cta,
	.ev-about-hero__scroll {
		animation: none;
		opacity: 1;
		transform: none;
	}

	.ev-about-hero__scroll-line::after {
		animation: none;
		will-change: auto;
	}

	.ev-about-hero__btn,
	.ev-about-hero__btn svg,
	.ev-about-hero__btn--primary::before {
		transition: none;
	}

	.ev-about-hero__btn--primary:hover {
		transform: none;
	}

	.ev-mission__img {
		animation: none;
		transform: scale(1.04);
	}

	.ev-mission__slide {
		transition: none;
	}

	.evpwt-js .ev-mission__card,
	.evpwt-js .ev-wwd__head,
	.evpwt-js .ev-wwd__card,
	.evpwt-js .ev-story__inner,
	.evpwt-js .ev-story__paras p,
	.evpwt-js .ev-story__closing,
	.evpwt-js .ev-why__head,
	.evpwt-js .ev-why__card {
		opacity: 1;
		transform: none;
		transition: none;
	}

	.ev-wwd__img,
	.ev-wwd__scrim,
	.ev-wwd__num,
	.ev-wwd__uline,
	.ev-why__img,
	.ev-story__cta,
	.ev-story__cta svg {
		transition: none;
	}

	.ev-story__img {
		animation: none;
		transform: scale(1.04);
	}

	.ev-wwd__card:hover .ev-wwd__img,
	.ev-why__card:hover .ev-why__img {
		transform: none;
	}
}

/* ================================================
   THE FAQ PAGE

   Ported from faq-page/faq-page-recovered.html, raw HTML written for
   an Elementor HTML widget. No !important survives, rem throughout,
   and the three things the capture's own header called out are fixed.

   NO 100vw. The capture went full bleed with
   width: 100vw; margin-left: calc(-50vw + 50%), which measures the
   viewport including the vertical scrollbar and pushes the page
   sideways by however wide that is. Nothing replaces it: the page
   template puts this section straight in the document flow and no
   ancestor constrains it, which is how every other full width section
   on this site works now.

   overflow-x IS clip, NOT hidden, AND THAT ONE IS LOAD BEARING.
   hidden on a block coerces overflow-y to auto, which makes a scroll
   container, which makes position: sticky stick to that box instead of
   the viewport. The left category rail is sticky. With the 100vw gone
   there is nothing left to clip anyway, but clip is what the rule says
   and clip cannot break the rail.

   ONE OFFSET, NOT THREE. --evp-faq-offset replaces three separate
   hardcoded 100px values: the sticky top, the scroll-margin-top on
   each category, and the scroll offset in faq.js, which reads this
   property rather than carrying its own copy. The site header is
   fixed and measures 81px on desktop, 71px at 768 and 65px at 480, so
   the offset steps down with it.
   ================================================ */

.evp-faq {
	--evp-faq-offset: 6.25rem;

	position: relative;
	overflow-x: clip;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 1rem;
	color: #fff;
	background: var(--ev-charcoal);
}

.evp-faq *,
.evp-faq *::before,
.evp-faq *::after {
	box-sizing: border-box;
}

.evp-faq button {
	font-family: inherit;
	cursor: pointer;
}

/*
   One rule where the capture had three blocks of overrides. They were
   beating Astra's link underlines; Astra is gone, so the base style is
   simply correct and the answer links opt back in below.
*/
.evp-faq a {
	color: inherit;
	text-decoration: none;
}

/* ---------- Header ---------- */

.evp-faq-header {
	max-width: 87.5rem;
	margin: 0 auto;
	padding: 5rem 3rem 2.5rem;
	text-align: center;
}

.evpwt-js .evp-faq-header {
	opacity: 0;
	transform: translateY(1rem);
	transition: opacity 0.7s ease, transform 0.7s ease;
}

.evp-faq-header.vis {
	opacity: 1;
	transform: translateY(0);
}

.evp-faq-eyebrow {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.875rem;
	margin: 0 0 1.25rem;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
}

.evp-faq-eyebrow::before,
.evp-faq-eyebrow::after {
	content: '';
	flex-shrink: 0;
	width: 1.75rem;
	height: 0.09375rem;
	background: var(--wp--preset--color--rust);
}

.evp-faq-title {
	margin: 0 0 1.5rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.8rem, 5.5vw, 4.4rem);
	font-weight: 400;
	line-height: 1;
	color: #fff;
}

.evp-faq-title em {
	font-style: italic;
	color: var(--wp--preset--color--rust);
}

.evp-faq-rule {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 1.125rem;
	margin-bottom: 1.5rem;
}

.evp-faq-rule-line {
	width: 4.5rem;
	height: 1px;
	background: linear-gradient(90deg, transparent, rgba(212, 196, 168, 0.75), transparent);
}

.evp-faq-rule-diamond {
	width: 0.5625rem;
	height: 0.5625rem;
	background: var(--wp--preset--color--gold);
	transform: rotate(45deg);
	box-shadow: 0 0 0.875rem rgba(212, 196, 168, 0.55);
}

.evp-faq-subtitle {
	max-width: 40rem;
	margin: 0 auto;
	font-size: clamp(0.95rem, 1.6vw, 1.1rem);
	font-weight: 300;
	line-height: 1.75;
	color: var(--ev-soft);
}

/* ---------- The filter box ---------- */

.evp-faq-search-wrap {
	position: relative;
	max-width: 45rem;
	margin: 0 auto 3.5rem;
	padding: 0 3rem;
}

.evpwt-js .evp-faq-search-wrap {
	opacity: 0;
	transform: translateY(0.75rem);
	transition: opacity 0.6s ease 0.1s, transform 0.6s ease 0.1s;
}

.evp-faq-search-wrap.vis {
	opacity: 1;
	transform: translateY(0);
}

.evp-faq-search-inner {
	position: relative;
	display: flex;
	align-items: center;
	border: 1px solid rgba(212, 196, 168, 0.18);
	border-radius: 3.125rem;
	background-color: rgba(255, 255, 255, 0.04);
	transition: border-color 0.25s ease, background-color 0.25s ease;
}

.evp-faq-search-inner:focus-within {
	border-color: rgba(212, 196, 168, 0.45);
	background-color: rgba(255, 255, 255, 0.06);
	box-shadow: 0 0 0 3px rgba(184, 98, 27, 0.12);
}

.evp-faq-search-icon {
	position: absolute;
	left: 1.375rem;
	width: 1.125rem;
	height: 1.125rem;
	fill: none;
	stroke: rgba(212, 196, 168, 0.6);
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
	pointer-events: none;
}

.evp-faq-search-input {
	width: 100%;
	padding: 1.125rem 3.5rem;
	border: none;
	outline: none;
	background: transparent;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.95rem;
	font-weight: 400;
	letter-spacing: 0.01em;
	color: #fff;
}

.evp-faq-search-input::placeholder {
	font-weight: 300;
	color: rgba(255, 255, 255, 0.4);
}

.evp-faq-search-clear {
	position: absolute;
	right: 1.125rem;
	display: none;
	align-items: center;
	justify-content: center;
	width: 1.75rem;
	height: 1.75rem;
	border: none;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.08);
	color: rgba(255, 255, 255, 0.6);
	transition: background 0.2s ease, color 0.2s ease;
	-webkit-tap-highlight-color: transparent;
}

.evp-faq-search-clear.visible {
	display: flex;
}

.evp-faq-search-clear:hover {
	background: rgba(255, 255, 255, 0.14);
	color: #fff;
}

.evp-faq-search-clear svg {
	width: 0.75rem;
	height: 0.75rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 2.5;
}

.evp-faq-search-meta {
	display: none;
	margin-top: 0.875rem;
	font-size: 0.7rem;
	letter-spacing: 0.1em;
	text-align: center;
	color: rgba(255, 255, 255, 0.45);
}

.evp-faq-search-meta.visible {
	display: block;
}

.evp-faq-search-meta strong {
	font-weight: 600;
	color: var(--wp--preset--color--gold);
}

/* ---------- Layout ---------- */

.evp-faq-layout {
	display: grid;
	grid-template-columns: 17.5rem minmax(0, 1fr);
	gap: 3.5rem;
	align-items: start;
	max-width: 87.5rem;
	margin: 0 auto;
	padding: 0 3rem;
}

/* ---------- The category rail ---------- */

.evp-faq-nav {
	position: sticky;
	top: var(--evp-faq-offset);
	align-self: start;
	padding-right: 0.5rem;
}

.evpwt-js .evp-faq-nav {
	opacity: 0;
	transform: translateX(-0.75rem);
	transition: opacity 0.6s ease 0.15s, transform 0.6s ease 0.15s;
}

.evp-faq-nav.vis {
	opacity: 1;
	transform: translateX(0);
}

.evp-faq-nav-label {
	margin: 0 0 1.125rem;
	padding-left: 1.125rem;
	font-size: 0.58rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
}

.evp-faq-nav-list {
	display: flex;
	flex-direction: column;
	gap: 0.125rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.evp-faq-nav-item {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.625rem;
	padding: 0.75rem 1.125rem;
	border-left: 2px solid transparent;
	font-size: 0.82rem;
	font-weight: 500;
	letter-spacing: 0.01em;
	line-height: 1.4;
	color: rgba(255, 255, 255, 0.62);
	cursor: pointer;
	transition: color 0.25s ease, border-color 0.25s ease, background 0.25s ease;
	-webkit-tap-highlight-color: transparent;
}

.evp-faq-nav-item:hover {
	background: rgba(255, 255, 255, 0.02);
	color: rgba(255, 255, 255, 0.9);
}

.evp-faq-nav-item.active {
	border-left-color: var(--wp--preset--color--rust);
	background: rgba(184, 98, 27, 0.06);
	font-weight: 600;
	color: var(--wp--preset--color--gold);
}

.evp-faq-nav-count {
	flex-shrink: 0;
	font-size: 0.68rem;
	font-variant-numeric: tabular-nums;
	color: rgba(255, 255, 255, 0.32);
}

.evp-faq-nav-item.active .evp-faq-nav-count {
	color: rgba(212, 196, 168, 0.7);
}

/* ---------- Categories ---------- */

.evp-faq-content {
	min-width: 0;
}

.evp-faq-category {
	margin-bottom: 3.5rem;
	scroll-margin-top: var(--evp-faq-offset);
}

.evp-faq-category:last-child {
	margin-bottom: 0;
}

/*
   A class, not an inline style. The capture set cat.style.display from
   the filter, which beats every stylesheet rule and cannot be
   overridden by a media query or a print sheet.
*/
.evp-faq-category.is-empty {
	display: none;
}

.evp-faq-category-header {
	margin-bottom: 1.5rem;
	padding-bottom: 1.125rem;
	border-bottom: 1px solid rgba(255, 255, 255, 0.07);
}

.evp-faq-category-label {
	margin: 0 0 0.5rem;
	font-size: 0.58rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
}

.evp-faq-category-title {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.6rem, 2.2vw, 1.95rem);
	font-weight: 400;
	line-height: 1.15;
	color: #fff;
}

/* ---------- The accordion ---------- */

.evp-faq-items {
	display: flex;
	flex-direction: column;
	gap: 0.375rem;
}

.evp-faq-item {
	overflow: clip;
	border: 1px solid rgba(255, 255, 255, 0.06);
	border-radius: 0.875rem;
	background: rgba(255, 255, 255, 0.025);
	transition: border-color 0.3s ease, background 0.3s ease;
}

.evp-faq-item:hover {
	border-color: rgba(212, 196, 168, 0.14);
}

.evp-faq-item.open {
	border-color: rgba(184, 98, 27, 0.28);
	background: rgba(255, 255, 255, 0.04);
}

.evp-faq-item.hidden {
	display: none;
}

.evp-faq-question {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1.125rem;
	width: 100%;
	min-height: 3.75rem;
	padding: 1.25rem 1.5rem;
	border: none;
	background: transparent;
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.98rem;
	font-weight: 600;
	line-height: 1.45;
	letter-spacing: 0.005em;
	text-align: left;
	color: #fff;
	transition: color 0.25s ease;
	-webkit-tap-highlight-color: transparent;
}

.evp-faq-question:hover,
.evp-faq-item.open .evp-faq-question {
	color: var(--wp--preset--color--gold);
}

.evp-faq-chevron {
	flex-shrink: 0;
	width: 1.25rem;
	height: 1.25rem;
	color: var(--wp--preset--color--rust);
	transition: transform 0.32s cubic-bezier(0.25, 0.1, 0.25, 1), color 0.25s ease;
}

.evp-faq-chevron svg {
	width: 100%;
	height: 100%;
	fill: none;
	stroke: currentColor;
	stroke-width: 2.5;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.evp-faq-item.open .evp-faq-chevron {
	transform: rotate(180deg);
	color: var(--wp--preset--color--gold);
}

/*
   NO MAGIC MAX-HEIGHT. The capture opened to max-height: 1200px, which
   silently clips any answer taller than that, and the two longest
   answers on this page were already close to it. A grid row animating
   from 0fr to 1fr collapses and expands to whatever the content
   actually is, with no number to outgrow.
*/
.evp-faq-answer {
	display: grid;
	grid-template-rows: 0fr;
	transition: grid-template-rows 0.4s cubic-bezier(0.25, 0.1, 0.25, 1);
}

.evp-faq-item.open .evp-faq-answer {
	grid-template-rows: 1fr;
}

.evp-faq-answer-inner {
	overflow: hidden;
	padding: 0 1.5rem;
}

/*
   The divider only exists when the panel is open. On a zero height
   grid row a border still paints, which would leave a hairline under
   every closed question.
*/
.evp-faq-item.open .evp-faq-answer-inner {
	padding-bottom: 1.5rem;
	border-top: 1px solid rgba(255, 255, 255, 0.05);
}

.evp-faq-answer-inner p {
	margin: 1.125rem 0 0;
	font-size: 0.92rem;
	line-height: 1.75;
	color: rgba(255, 255, 255, 0.72);
}

.evp-faq-answer-inner a {
	padding-bottom: 1px;
	border-bottom: 1px solid rgba(212, 196, 168, 0.32);
	color: var(--wp--preset--color--gold);
	transition: color 0.2s ease, border-color 0.2s ease;
}

.evp-faq-answer-inner a:hover {
	border-bottom-color: rgba(255, 255, 255, 0.6);
	color: #fff;
}

/* ---------- Nothing matched ---------- */

.evp-faq-no-results {
	display: none;
	padding: 3.5rem 2rem;
	border: 1px solid rgba(255, 255, 255, 0.06);
	border-radius: 1rem;
	background: rgba(255, 255, 255, 0.02);
	text-align: center;
}

.evp-faq-no-results.visible {
	display: block;
}

.evp-faq-no-results-icon {
	width: 2.75rem;
	height: 2.75rem;
	margin: 0 auto 1.125rem;
	opacity: 0.3;
}

.evp-faq-no-results-icon svg {
	width: 100%;
	height: 100%;
	fill: none;
	stroke: var(--wp--preset--color--gold);
	stroke-width: 1.5;
}

.evp-faq-no-results-title {
	margin: 0 0 0.5rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.3rem;
	font-weight: 400;
	color: #fff;
}

.evp-faq-no-results-text {
	margin: 0 0 1.25rem;
	font-size: 0.88rem;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.5);
}

.evp-faq-no-results-btn {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	padding: 0.6875rem 1.375rem;
	border: 1.5px solid rgba(212, 196, 168, 0.4);
	border-radius: 3.125rem;
	background: transparent;
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	transition: border-color 0.3s ease, background 0.3s ease, color 0.3s ease;
}

.evp-faq-no-results-btn:hover {
	border-color: var(--wp--preset--color--gold);
	background: rgba(212, 196, 168, 0.08);
	color: #fff;
}

/* ---------- Closing call to action ---------- */

.evp-faq-cta {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 3rem;
	max-width: 87.5rem;
	margin: 5.5rem auto 0;
	padding: 4rem 3rem;
	border-top: 1px solid rgba(255, 255, 255, 0.07);
	border-bottom: 1px solid rgba(255, 255, 255, 0.07);
}

.evpwt-js .evp-faq-cta {
	opacity: 0;
	transform: translateY(1rem);
	transition: opacity 0.7s ease, transform 0.7s ease;
}

.evp-faq-cta.vis {
	opacity: 1;
	transform: translateY(0);
}

.evp-faq-cta-body {
	flex: 1;
}

.evp-faq-cta-eyebrow {
	margin: 0 0 0.75rem;
	font-size: 0.6rem;
	font-weight: 700;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
}

.evp-faq-cta-title {
	margin: 0 0 0.75rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.5rem, 2.4vw, 2.1rem);
	font-weight: 400;
	line-height: 1.2;
	color: #fff;
}

.evp-faq-cta-title em {
	font-style: italic;
	color: var(--wp--preset--color--rust);
}

.evp-faq-cta-text {
	max-width: 33.75rem;
	margin: 0;
	font-size: 0.92rem;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.6);
}

.evp-faq-cta-btn {
	position: relative;
	display: inline-flex;
	flex-shrink: 0;
	align-items: center;
	gap: 0.625rem;
	padding: 1rem 2rem;
	overflow: clip;
	border: 2px solid var(--wp--preset--color--rust);
	border-radius: 3.125rem;
	background: var(--wp--preset--color--rust);
	font-family: var(--wp--preset--font-family--montserrat);
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	white-space: nowrap;
	color: #fff;
	box-shadow: 0 0.5rem 1.75rem rgba(184, 98, 27, 0.4);
	transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.evp-faq-cta-btn::before {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(135deg, var(--wp--preset--color--gold) 0%, var(--wp--preset--color--rust) 100%);
	opacity: 0;
	transition: opacity 0.3s ease;
}

.evp-faq-cta-btn > * {
	position: relative;
	z-index: 1;
}

.evp-faq-cta-btn:hover::before {
	opacity: 1;
}

.evp-faq-cta-btn:hover {
	transform: translateY(-0.1875rem);
	box-shadow: 0 0.875rem 2.25rem rgba(184, 98, 27, 0.55);
}

.evp-faq-cta-btn svg {
	flex-shrink: 0;
	width: 1rem;
	height: 1rem;
	fill: #fff;
	transition: transform 0.3s ease;
}

.evp-faq-cta-btn:hover svg {
	transform: translateX(0.1875rem);
}

/* ---------- Focus ---------- */

.evp-faq-question:focus-visible,
.evp-faq-nav-item:focus-visible,
.evp-faq-search-clear:focus-visible,
.evp-faq-cta-btn:focus-visible,
.evp-faq-no-results-btn:focus-visible,
.evp-faq-answer-inner a:focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

/*
   The ring goes on the pill, not on the input inside it. An outline on
   the input alone draws a rectangle inside a rounded border, which
   looks like a rendering fault; the wrapper takes it so the shape
   matches. The :focus-within tint stays underneath as the fallback for
   anything that does not know :has().
*/
.evp-faq-search-input:focus-visible {
	outline: none;
}

.evp-faq-search-inner:has(.evp-faq-search-input:focus-visible) {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
}

/* ================================================
   FAQ: BREAKPOINTS
   The capture had 1024 / 768 / 480 only. 1200 and 360 are the steps
   the rest of the site uses.
   ================================================ */

@media (max-width: 1200px) {
	.evp-faq-header {
		padding: 4.5rem 2.5rem 2.25rem;
	}

	.evp-faq-search-wrap {
		padding: 0 2.5rem;
	}

	.evp-faq-layout {
		grid-template-columns: 15rem minmax(0, 1fr);
		gap: 2.75rem;
		padding: 0 2.5rem;
	}

	.evp-faq-cta {
		gap: 2.5rem;
		padding: 3.5rem 2.5rem;
	}
}

@media (max-width: 1024px) {
	/* The rail stops being a rail and becomes a scrollable chip row. */
	.evp-faq-header {
		padding: 4rem 2.5rem 2rem;
	}

	.evp-faq-search-wrap {
		margin-bottom: 2.5rem;
		padding: 0 2.5rem;
	}

	.evp-faq-layout {
		grid-template-columns: minmax(0, 1fr);
		gap: 2rem;
		padding: 0 2.5rem;
	}

	.evp-faq-nav {
		position: static;
		padding: 0 0 0.5rem;
		border-bottom: 1px solid rgba(255, 255, 255, 0.07);
	}

	.evp-faq-nav-label {
		margin-bottom: 0.875rem;
		padding-left: 0;
	}

	.evp-faq-nav-list {
		flex-direction: row;
		gap: 0.5rem;
		overflow-x: auto;
		padding-bottom: 0.75rem;
		scrollbar-width: none;
		-ms-overflow-style: none;
	}

	.evp-faq-nav-list::-webkit-scrollbar {
		display: none;
	}

	.evp-faq-nav-item {
		flex-shrink: 0;
		padding: 0.625rem 1.125rem;
		border: 1px solid rgba(255, 255, 255, 0.08);
		border-radius: 3.125rem;
		background: rgba(255, 255, 255, 0.04);
		font-size: 0.78rem;
		white-space: nowrap;
	}

	.evp-faq-nav-item.active {
		border-color: rgba(184, 98, 27, 0.45);
		background: rgba(184, 98, 27, 0.18);
	}

	.evp-faq-cta {
		flex-direction: column;
		align-items: center;
		gap: 1.75rem;
		margin-top: 4rem;
		padding: 3.25rem 2.5rem;
		text-align: center;
	}

	.evp-faq-cta-text {
		margin: 0 auto;
	}
}

@media (max-width: 768px) {
	.evp-faq {
		--evp-faq-offset: 5.25rem;
	}

	.evp-faq-header {
		padding: 3.25rem 1.25rem 1.75rem;
	}

	.evp-faq-rule-line {
		width: 3.125rem;
	}

	.evp-faq-search-wrap {
		margin-bottom: 2rem;
		padding: 0 1.25rem;
	}

	.evp-faq-search-input {
		padding: 1rem 3.125rem;
		font-size: 0.92rem;
	}

	.evp-faq-search-icon {
		left: 1.125rem;
		width: 1rem;
		height: 1rem;
	}

	.evp-faq-search-clear {
		right: 0.875rem;
		width: 1.625rem;
		height: 1.625rem;
	}

	.evp-faq-layout {
		gap: 1.75rem;
		padding: 0 1rem;
	}

	.evp-faq-category {
		margin-bottom: 2.75rem;
	}

	.evp-faq-category-header {
		margin-bottom: 1.125rem;
		padding-bottom: 0.875rem;
	}

	.evp-faq-question {
		gap: 0.875rem;
		min-height: 3.5rem;
		padding: 1.125rem 1.25rem;
		font-size: 0.95rem;
	}

	.evp-faq-answer-inner {
		padding: 0 1.25rem;
	}

	.evp-faq-item.open .evp-faq-answer-inner {
		padding-bottom: 1.375rem;
	}

	.evp-faq-answer-inner p {
		font-size: 0.9rem;
	}

	.evp-faq-cta {
		gap: 1.5rem;
		margin-top: 3.25rem;
		padding: 2.75rem 1.25rem;
	}

	.evp-faq-cta-text {
		font-size: 0.88rem;
	}

	.evp-faq-cta-btn {
		justify-content: center;
		width: 100%;
		max-width: 20rem;
		min-height: 3rem;
		padding: 1rem 1.75rem;
		font-size: 0.7rem;
	}
}

@media (max-width: 480px) {
	.evp-faq {
		--evp-faq-offset: 4.75rem;
	}

	.evp-faq-header {
		padding: 2.75rem 1rem 1.5rem;
	}

	.evp-faq-search-wrap {
		padding: 0 1rem;
	}

	.evp-faq-question {
		padding: 1rem 1.125rem;
		font-size: 0.92rem;
	}

	.evp-faq-answer-inner {
		padding: 0 1.125rem;
	}

	.evp-faq-item.open .evp-faq-answer-inner {
		padding-bottom: 1.25rem;
	}

	.evp-faq-cta-btn {
		max-width: 17.5rem;
		padding: 0.9375rem 1.5rem;
	}
}

@media (max-width: 360px) {
	.evp-faq-header {
		padding: 2.5rem 0.875rem 1.25rem;
	}

	.evp-faq-title {
		font-size: 2.4rem;
	}

	.evp-faq-search-wrap {
		padding: 0 0.875rem;
	}

	.evp-faq-search-input {
		padding: 0.875rem 2.875rem;
	}

	.evp-faq-layout {
		padding: 0 0.875rem;
	}

	.evp-faq-question {
		padding: 0.9375rem 1rem;
		font-size: 0.88rem;
	}

	.evp-faq-cta-btn {
		max-width: 100%;
	}
}

/* ================================================
   FAQ: REDUCED MOTION
   Last, so these win on equal specificity without !important. The
   accordion still opens, it just snaps.
   ================================================ */

@media (prefers-reduced-motion: reduce) {
	.evpwt-js .evp-faq-header,
	.evpwt-js .evp-faq-search-wrap,
	.evpwt-js .evp-faq-nav,
	.evpwt-js .evp-faq-cta {
		opacity: 1;
		transform: none;
		transition: none;
	}

	.evp-faq-answer,
	.evp-faq-chevron,
	.evp-faq-item,
	.evp-faq-question,
	.evp-faq-nav-item,
	.evp-faq-search-inner,
	.evp-faq-search-clear,
	.evp-faq-no-results-btn,
	.evp-faq-cta-btn,
	.evp-faq-cta-btn::before,
	.evp-faq-cta-btn svg,
	.evp-faq-answer-inner a {
		transition: none;
	}

	.evp-faq-cta-btn:hover {
		transform: none;
	}

	.evp-faq-cta-btn:hover svg {
		transform: none;
	}
}

/* ================================================
   THE MEMBERSHIPS AND ASSOCIATIONS PAGE

   Ported from salvage/memberships-page/, a Wayback capture of the
   final shipped page. It shipped inside an Elementor HTML widget with
   its own reset and its own font link, and it carried roughly 200
   !important declarations fighting Astra and Elementor. Both are gone,
   so all of them are gone. rem throughout, tokens rather than hex.

   ONE GROUND. Unlike the About page this section ladder does not
   alternate: hero, memberships and closing are all bg-deep, with a
   hairline rule at the top of each lower section doing the separating.
   That is how it shipped and the rules are what make it read.

   BOX SIZING IS SCOPED HERE, because main.css has no global reset and
   two bugs on this project have come from assuming otherwise. It is
   scoped to the page wrapper so it travels with the page.

   REVEALS ARE GATED ON .evpwt-js, the class a tiny inline snippet in
   wp_head puts on <html>. The hidden state only exists when the script
   that undoes it can run, so with JS off the page renders complete.
   The hero's entrance animations are not gated: they are pure CSS
   keyframes and finish on their own.

   THE CAROUSEL HINT ORDER IS LOAD BEARING. In the capture the base
   rule .evpm-carousel-hint { display: none } sat AFTER the 768 media
   query that shows it, and only won on desktop because the media
   query used !important. Strip the !important and source order alone
   would hide it at every width. The base rule is above the media
   query here, which is what actually makes it correct.
   ================================================ */

.ev-memberships,
.ev-memberships *,
.ev-memberships *::before,
.ev-memberships *::after {
	box-sizing: border-box;
}

.ev-memberships {
	font-family: var(--wp--preset--font-family--montserrat);
	color: #fff;
	background: var(--wp--preset--color--bg-deep);
}

.ev-memberships a {
	text-decoration: none;
}

/* ================================================
   HERO
   ================================================ */

.evpm-hero {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 100vh;
	/*
	   lvh, NOT dvh. dvh makes the bar shift while the iOS Safari URL
	   bar shows and hides. The known cost of lvh is a slightly below
	   fold edge on first paint. Deliberate, and the same call the
	   About hero and the homepage hero already made.
	*/
	min-height: 100lvh;
	padding: 2.5rem;
	text-align: center;
	/* clip, not hidden: hidden creates a scroll context and would
	   break position: sticky on any descendant. */
	overflow: clip;
	background-color: #1c2a1c;
}

/* ---------- The photograph ---------- */

/*
   A real img with object-fit, never background-image. The capture
   painted this with background-image and Smush lazy loading had
   rewritten it into data-bg-image, so as captured it rendered nothing.
*/
.evpm-hero-media {
	position: absolute;
	inset: 0;
	z-index: 0;
}

.evpm-hero-img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center center;
}

.evpm-hero-media::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(
		180deg,
		rgba(17, 16, 16, 0.55) 0%,
		rgba(17, 16, 16, 0.6) 50%,
		rgba(17, 16, 16, 0.85) 100%);
}

.evpm-hero-inner {
	position: relative;
	z-index: 2;
	display: flex;
	flex-direction: column;
	align-items: center;
	max-width: 56.25rem;
}

.evpm-hero-eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 0.875rem;
	margin: 0 0 1.75rem;
	font-size: 0.65rem;
	font-weight: 700;
	letter-spacing: 0.26em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	opacity: 0;
	animation: evpmFadeUp 0.8s ease-out 0.2s forwards;
}

.evpm-hero-eyebrow::before,
.evpm-hero-eyebrow::after {
	content: "";
	display: block;
	width: 1.75rem;
	height: 0.09375rem;
	background: var(--wp--preset--color--rust);
}

.evpm-hero-title {
	margin: 0 0 2rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(3.5rem, 7vw, 7rem);
	font-weight: 400;
	line-height: 1.05;
	letter-spacing: -0.01em;
	color: #fff;
	text-shadow: 0 0.125rem 1.25rem rgba(0, 0, 0, 0.35);
	opacity: 0;
	animation: evpmFadeUp 0.8s ease-out 0.4s forwards;
}

.evpm-hero-divider {
	display: flex;
	align-items: center;
	gap: 0.875rem;
	margin-bottom: 2rem;
	opacity: 0;
	animation: evpmFadeUp 0.7s ease-out 0.6s forwards;
	-webkit-user-select: none;
	user-select: none;
}

.evpm-hero-divider .evpm-dline-l,
.evpm-hero-divider .evpm-dline-r {
	display: block;
	width: 3rem;
	height: 1px;
}

.evpm-hero-divider .evpm-dline-l {
	background: linear-gradient(90deg, transparent, var(--wp--preset--color--rust));
}

.evpm-hero-divider .evpm-dline-r {
	background: linear-gradient(90deg, var(--wp--preset--color--rust), transparent);
}

.evpm-hero-divider .evpm-ddiamond {
	display: block;
	width: 0.4375rem;
	height: 0.4375rem;
	background: var(--wp--preset--color--gold);
	transform: rotate(45deg);
}

.evpm-hero-subtitle {
	max-width: 38.75rem;
	margin: 0;
	font-size: 1.1rem;
	font-weight: 300;
	line-height: 1.75;
	color: rgba(255, 255, 255, 0.75);
	text-shadow: 0 1px 0.75rem rgba(0, 0, 0, 0.4);
	opacity: 0;
	animation: evpmFadeUp 0.8s ease-out 0.65s forwards;
}

@keyframes evpmFadeUp {
	from { opacity: 0; transform: translateY(1.5rem); }
	to   { opacity: 1; transform: translateY(0); }
}

/* ================================================
   MEMBERSHIP DETAILS
   ================================================ */

.evpm-memberships {
	position: relative;
	padding: 6.25rem 5rem;
	overflow: clip;
	background: var(--wp--preset--color--bg-deep);
}

.evpm-memberships::before {
	content: "";
	position: absolute;
	top: 0;
	left: 5rem;
	right: 5rem;
	height: 1px;
	background: rgba(255, 255, 255, 0.07);
}

/* ---------- Header ---------- */

.evpm-header {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 0 5rem;
	align-items: end;
	margin-bottom: 4.5rem;
}

.evpwt-js .evpm-header {
	opacity: 0;
	transform: translateY(1.5rem);
	transition: opacity 0.8s ease, transform 0.8s ease;
}

.evpm-header.revealed {
	opacity: 1;
	transform: translateY(0);
}

.evpm-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.625rem;
	margin: 0 0 1rem;
	font-size: 0.65rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
}

.evpm-eyebrow::before {
	content: "";
	display: inline-block;
	flex-shrink: 0;
	width: 1.5rem;
	height: 0.09375rem;
	background: var(--wp--preset--color--rust);
}

.evpm-title {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.4rem, 4vw, 3.8rem);
	font-weight: 400;
	line-height: 1.1;
	color: #fff;
}

.evpm-note {
	margin: 0;
	font-size: 0.95rem;
	font-weight: 300;
	line-height: 1.85;
	color: rgba(255, 255, 255, 0.45);
}

/* ---------- Sub divider ---------- */

.evpm-sub-divider {
	display: flex;
	align-items: center;
	gap: 1rem;
	margin-bottom: 1.75rem;
}

.evpwt-js .evpm-sub-divider {
	opacity: 0;
	transition: opacity 0.6s ease;
}

.evpm-sub-divider.revealed {
	opacity: 1;
}

.evpm-sub-divider-line {
	display: block;
	flex: 1;
	height: 1px;
	background: rgba(255, 255, 255, 0.07);
	-webkit-user-select: none;
	user-select: none;
}

.evpm-sub-divider-label {
	font-size: 0.58rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.22);
	white-space: nowrap;
}

/* ---------- Spotlight cards ---------- */

.evpm-spotlights {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 1.25rem;
}

.evpwt-js .evpm-spotlights {
	opacity: 0;
	transform: translateY(1.25rem);
	transition: opacity 0.7s ease 0.15s, transform 0.7s ease 0.15s;
}

.evpm-spotlights.revealed {
	opacity: 1;
	transform: translateY(0);
}

.evpm-spotlight {
	position: relative;
	display: flex;
	flex-direction: column;
	overflow: clip;
	border: 1px solid rgba(212, 196, 168, 0.1);
	border-radius: 1.125rem;
	background: rgba(28, 22, 16, 0.97);
	transition: border-color 0.35s ease, box-shadow 0.35s ease, transform 0.35s ease;
	-webkit-tap-highlight-color: transparent;
}

.evpm-spotlight::before {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	z-index: 2;
	height: 0.1875rem;
	background: linear-gradient(90deg, var(--wp--preset--color--rust), var(--wp--preset--color--gold));
	opacity: 0;
	transition: opacity 0.35s ease;
}

.evpm-spotlight:hover {
	border-color: rgba(184, 98, 27, 0.3);
	box-shadow: 0 1.125rem 3.125rem rgba(184, 98, 27, 0.12);
	transform: translateY(-0.25rem);
}

.evpm-spotlight:hover::before {
	opacity: 1;
}

/*
   The logo panel. A light plate behind a transparent PNG, with the
   image contained rather than covered: cropping a logo is worse than
   letterboxing it.
*/
.evpm-spotlight-logo {
	position: relative;
	flex-shrink: 0;
	height: 11.25rem;
	padding: 1.875rem;
	background-color: #faf8f5;
}

.evpm-spotlight-img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: contain;
	object-position: center;
	-webkit-user-drag: none;
}

.evpm-spotlight-tag {
	position: absolute;
	top: 1.125rem;
	left: 1.375rem;
	z-index: 3;
	margin: 0;
	padding: 0.375rem 0.625rem;
	border-radius: 0.25rem;
	font-size: 0.52rem;
	font-weight: 700;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	background: rgba(255, 255, 255, 0.9);
	-webkit-user-select: none;
	user-select: none;
}

.evpm-spotlight-body {
	display: flex;
	flex: 1;
	flex-direction: column;
	padding: 1.75rem 1.75rem 2rem;
}

.evpm-spotlight-acronym {
	display: block;
	margin: 0 0 0.625rem;
	font-size: 0.55rem;
	font-weight: 700;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
}

.evpm-spotlight-name {
	margin: 0 0 1rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.2rem;
	font-weight: 500;
	line-height: 1.25;
	color: #fff;
}

.evpm-spotlight-desc {
	margin: 0 0 1.25rem;
	font-size: 0.85rem;
	font-weight: 300;
	line-height: 1.75;
	color: rgba(255, 255, 255, 0.5);
}

.evpm-commitments {
	margin: 0 0 1.5rem;
	padding: 1.125rem 0 0;
	list-style: none;
	border-top: 1px solid rgba(255, 255, 255, 0.06);
}

.evpm-commitments li {
	display: flex;
	align-items: flex-start;
	gap: 0.625rem;
	margin: 0 0 0.625rem;
	padding: 0;
	font-size: 0.78rem;
	font-weight: 400;
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.65);
}

.evpm-commitments li:last-child {
	margin-bottom: 0;
}

.evpm-commitments li::before {
	content: "";
	flex-shrink: 0;
	width: 0.375rem;
	height: 0.375rem;
	margin-top: 0.5rem;
	border-radius: 50%;
	background: var(--wp--preset--color--rust);
}

.evpm-spotlight-link {
	display: inline-flex;
	align-items: center;
	gap: 0.4375rem;
	margin-top: auto;
	font-size: 0.66rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	transition: gap 0.3s ease, color 0.3s ease;
	-webkit-tap-highlight-color: transparent;
}

.evpm-spotlight-link:hover {
	gap: 0.8125rem;
	color: var(--wp--preset--color--gold);
}

.evpm-spotlight-link svg {
	flex-shrink: 0;
	width: 0.8125rem;
	height: 0.8125rem;
	stroke: currentColor;
	fill: none;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.evpm-spotlight-link:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 0.25rem;
	border-radius: 0.1875rem;
}

/* ---------- The swipe hint ----------
   Hidden by default and shown only where the spotlights become a
   carousel. This base rule must stay ABOVE the 768 media query: in the
   capture it sat below it and only lost because the media query
   carried !important. */
.evpm-carousel-hint {
	display: none;
}

/* ================================================
   CLOSING CTA
   ================================================ */

.evpm-closing {
	position: relative;
	padding: 6.25rem 5rem 7.5rem;
	text-align: center;
	background: var(--wp--preset--color--bg-deep);
}

.evpm-closing::before {
	content: "";
	position: absolute;
	top: 0;
	left: 5rem;
	right: 5rem;
	height: 1px;
	background: rgba(255, 255, 255, 0.07);
}

.evpm-closing-inner {
	max-width: 45rem;
	margin: 0 auto;
}

.evpwt-js .evpm-closing-inner {
	opacity: 0;
	transform: translateY(1.5rem);
	transition: opacity 0.8s ease, transform 0.8s ease;
}

.evpm-closing-inner.revealed {
	opacity: 1;
	transform: translateY(0);
}

.evpm-closing-eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0 0 1.5rem;
	font-size: 0.65rem;
	font-weight: 700;
	letter-spacing: 0.26em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
}

.evpm-closing-eyebrow::before,
.evpm-closing-eyebrow::after {
	content: "";
	display: block;
	width: 1.75rem;
	height: 0.09375rem;
	background: var(--wp--preset--color--rust);
}

.evpm-closing-title {
	margin: 0 0 1.5rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2rem, 3.5vw, 3rem);
	font-weight: 400;
	line-height: 1.15;
	color: #fff;
}

.evpm-closing-body {
	margin: 0 0 2.5rem;
	font-size: 1rem;
	font-weight: 300;
	line-height: 1.85;
	color: rgba(255, 255, 255, 0.55);
}

.evpm-closing-cta {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: 0.625rem;
	overflow: clip;
	padding: 1rem 2.125rem;
	border-radius: 3.125rem;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: #fff;
	background: var(--wp--preset--color--rust);
	box-shadow: 0 0.5rem 1.75rem rgba(184, 98, 27, 0.4);
	transition: transform 0.3s ease, box-shadow 0.3s ease;
	-webkit-tap-highlight-color: transparent;
}

.evpm-closing-cta::before {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(135deg, var(--wp--preset--color--gold) 0%, var(--wp--preset--color--rust) 100%);
	opacity: 0;
	transition: opacity 0.3s ease;
}

.evpm-closing-cta:hover {
	transform: translateY(-0.1875rem);
	box-shadow: 0 0.875rem 2.5rem rgba(184, 98, 27, 0.55);
}

.evpm-closing-cta:hover::before {
	opacity: 1;
}

.evpm-closing-cta span,
.evpm-closing-cta svg {
	position: relative;
	z-index: 1;
}

.evpm-closing-cta svg {
	width: 0.9375rem;
	height: 0.9375rem;
	stroke: #fff;
	fill: none;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
	transition: transform 0.3s ease;
}

.evpm-closing-cta:hover svg {
	transform: translateX(0.25rem);
}

.evpm-closing-cta:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 0.25rem;
}

/* ================================================
   1200 AND BELOW
   ================================================ */
@media (max-width: 1200px) {
	.evpm-memberships { padding: 6.25rem 3.5rem; }
	.evpm-memberships::before { left: 3.5rem; right: 3.5rem; }
	.evpm-header { gap: 0 3.5rem; }
	.evpm-closing { padding: 6.25rem 3.5rem 7.5rem; }
	.evpm-closing::before { left: 3.5rem; right: 3.5rem; }
}

/* ================================================
   1024 AND BELOW
   The header's two columns stack here rather than at 900, which is
   where the capture put it. 900 is not one of this site's breakpoints
   and it left the two columns squeezed through the whole tablet range.
   ================================================ */
@media (max-width: 1024px) {
	.evpm-header {
		grid-template-columns: minmax(0, 1fr);
		gap: 1.5rem;
		margin-bottom: 3.5rem;
	}
}

/* ================================================
   768 AND BELOW
   The three cards become a snapping horizontal carousel.
   ================================================ */
@media (max-width: 768px) {
	.evpm-hero {
		padding: 2.5rem 1.5rem;
	}

	.evpm-hero-img {
		/* Portrait phones crop a landscape photograph hard. Bias the
		   focus up so the horizon survives. */
		object-position: center 40%;
	}

	.evpm-hero-eyebrow {
		margin-bottom: 1.375rem;
		font-size: 0.62rem;
		letter-spacing: 0.22em;
		color: var(--wp--preset--color--gold);
	}

	.evpm-hero-eyebrow::before,
	.evpm-hero-eyebrow::after {
		width: 1.375rem;
		background: var(--wp--preset--color--gold);
	}

	.evpm-hero-title {
		margin-bottom: 1.625rem;
		font-size: clamp(3rem, 11vw, 4.5rem);
	}

	.evpm-hero-divider { margin-bottom: 1.625rem; }
	.evpm-hero-divider .evpm-dline-l,
	.evpm-hero-divider .evpm-dline-r { width: 2.25rem; }

	.evpm-hero-subtitle {
		font-size: 1rem;
		line-height: 1.7;
		color: rgba(255, 255, 255, 0.85);
	}

	.evpm-memberships { padding: 4.5rem 0; }
	.evpm-memberships::before { left: 1.375rem; right: 1.375rem; }

	.evpm-header { margin-bottom: 3rem; padding: 0 1.375rem; }
	.evpm-title { font-size: clamp(2rem, 8vw, 2.8rem); }
	.evpm-note { font-size: 0.9rem; line-height: 1.75; }

	.evpm-sub-divider { margin: 0 1.375rem 1.375rem; gap: 0.75rem; }

	.evpm-spotlights {
		display: flex;
		gap: 0.875rem;
		padding: 0 1.375rem 0.25rem;
		overflow-x: auto;
		overflow-y: hidden;
		scroll-snap-type: x mandatory;
		scroll-padding-inline-start: 1.375rem;
		overscroll-behavior-x: contain;
		touch-action: pan-x;
		scrollbar-width: none;
		-webkit-overflow-scrolling: touch;
	}

	.evpm-spotlights::-webkit-scrollbar { display: none; }

	.evpm-spotlight {
		flex: 0 0 86%;
		border-radius: 0.875rem;
		scroll-snap-align: start;
	}

	.evpm-spotlight-logo { height: 10rem; padding: 1.625rem; }
	.evpm-spotlight-body { padding: 1.5rem 1.375rem 1.75rem; }
	.evpm-spotlight-name { margin-bottom: 0.875rem; font-size: 1.15rem; }
	.evpm-spotlight-desc { font-size: 0.83rem; line-height: 1.7; }

	/* 44px minimum tap target, without moving the link visually. */
	.evpm-spotlight-link {
		min-height: 2.75rem;
		margin-top: -0.75rem;
		margin-bottom: -0.25rem;
		padding: 0.75rem 0;
	}

	.evpm-carousel-hint {
		display: flex;
		align-items: center;
		justify-content: center;
		gap: 0.5rem;
		margin: 1.125rem 1.375rem 0;
		font-size: 0.55rem;
		font-weight: 600;
		letter-spacing: 0.18em;
		text-transform: uppercase;
		color: rgba(255, 255, 255, 0.3);
		-webkit-user-select: none;
		user-select: none;
	}

	.evpm-carousel-hint svg {
		width: 0.875rem;
		height: 0.875rem;
		stroke: currentColor;
		fill: none;
		stroke-width: 2;
		stroke-linecap: round;
		stroke-linejoin: round;
	}

	.evpm-closing { padding: 4.5rem 1.75rem 5.625rem; }
	.evpm-closing::before { left: 1.75rem; right: 1.75rem; }
}

/* ================================================
   480 AND BELOW
   ================================================ */
@media (max-width: 480px) {
	.evpm-hero { padding: 2.5rem 1.25rem; }
	.evpm-hero-title { font-size: clamp(2.6rem, 12vw, 3.6rem); }
	.evpm-hero-subtitle { font-size: 0.95rem; }

	.evpm-memberships::before { left: 1.125rem; right: 1.125rem; }
	.evpm-header { padding: 0 1.125rem; }
	.evpm-title { font-size: clamp(1.9rem, 9vw, 2.5rem); }
	.evpm-note { font-size: 0.88rem; }
	.evpm-sub-divider { margin: 0 1.125rem 1.375rem; }

	.evpm-spotlights {
		padding: 0 1.125rem 0.25rem;
		scroll-padding-inline-start: 1.125rem;
	}

	.evpm-spotlight { flex-basis: 90%; }
	.evpm-carousel-hint { margin: 1.125rem 1.125rem 0; }

	.evpm-closing { padding: 3.75rem 1.25rem 4.5rem; }
	.evpm-closing-title { font-size: clamp(1.8rem, 7.5vw, 2.2rem); }
	.evpm-closing-body { margin-bottom: 2rem; font-size: 0.95rem; line-height: 1.75; }

	.evpm-closing-cta {
		display: flex;
		justify-content: center;
		width: 100%;
		padding: 1.125rem 1.75rem;
	}
}

/* ================================================
   360 AND BELOW
   The card at 90% of a 360 viewport leaves 1.125rem of padding either
   side and no room for the snap gutter, so the basis comes down and
   the body padding with it.
   ================================================ */
@media (max-width: 360px) {
	.evpm-spotlight { flex-basis: 88%; }
	.evpm-spotlight-body { padding: 1.375rem 1.125rem 1.5rem; }
	.evpm-hero-title { font-size: clamp(2.2rem, 13vw, 3rem); }
}

/* ================================================
   TOUCH DEVICES
   Hover states stick on touch, so they are turned off where there is
   no hover, and a small active state replaces them.
   ================================================ */
@media (hover: none) {
	.evpm-spotlight:hover {
		border-color: rgba(212, 196, 168, 0.1);
		box-shadow: none;
		transform: none;
	}

	.evpm-spotlight:hover::before { opacity: 0; }

	.evpm-spotlight-link:hover {
		gap: 0.4375rem;
		color: var(--wp--preset--color--rust);
	}

	.evpm-closing-cta:hover {
		transform: none;
		box-shadow: 0 0.5rem 1.75rem rgba(184, 98, 27, 0.4);
	}

	.evpm-closing-cta:hover::before { opacity: 0; }
	.evpm-closing-cta:hover svg { transform: none; }

	.evpm-spotlight:active {
		transform: scale(0.995);
		transition: transform 0.15s ease;
	}

	.evpm-spotlight-link:active { color: var(--wp--preset--color--gold); }

	.evpm-closing-cta:active {
		transform: scale(0.98);
		transition: transform 0.15s ease;
	}
}

/* ================================================
   REDUCED MOTION
   Everything visible, nothing moving. The reveal targets are listed
   with the .evpwt-js prefix because that is where their hidden state
   is defined, and a rule without it would not reach them.
   ================================================ */
@media (prefers-reduced-motion: reduce) {
	.evpm-hero-eyebrow,
	.evpm-hero-title,
	.evpm-hero-divider,
	.evpm-hero-subtitle {
		opacity: 1;
		transform: none;
		animation: none;
	}

	.evpwt-js .evpm-header,
	.evpwt-js .evpm-sub-divider,
	.evpwt-js .evpm-spotlights,
	.evpwt-js .evpm-closing-inner {
		opacity: 1;
		transform: none;
		transition: none;
	}

	.evpm-spotlight,
	.evpm-spotlight::before,
	.evpm-spotlight-link,
	.evpm-closing-cta,
	.evpm-closing-cta::before,
	.evpm-closing-cta svg {
		transition: none;
	}
}

/* ================================================
   THE GIVING BACK AND SUSTAINABILITY PAGE

   Ported from four captures in salvage/giving-back-page/, recovered
   from chat history rather than from Wayback. Each shipped as a
   standalone HTML document with its own reset and font link.

   ONE BREAKPOINT LADDER, 1200 / 1024 / 768 / 480 / 360.

   The four captures had four ladders and no two shared a mobile
   transition point, so the page reflowed in four separate stages as the
   viewport narrowed:

       hero        1100 / 900 / 480
       philosophy  1100 / 768
       partners    1200 / 900 / 768 / 480
       gallery      900 / 600 / 380

   Everything below is on the site standard, the same one the About
   hero uses. The mapping: 1100 and 900 both became 1024 where they
   were the single column switch, 600 became 768, 380 became 480, and
   the missing steps were added.

   The one place the ladder is not simply renumbered is the hero. Its
   capture switched to the overlay layout at 900, and the partners wall
   dropped from six columns to three at 1200. Both are kept at the
   width that suits the content: the hero overlay at 1024, the wall at
   1200. Same ladder, different rungs used.

   NO !important ANYWHERE IN THIS BLOCK.

   The partners capture was saturated with it, roughly every
   declaration. That was not stylistic: the section was overridden by
   WordPress when first placed on the page and rebuilt with !important
   throughout to defeat Astra and Elementor. Both are gone. The hero,
   philosophy and gallery captures had none and were already correct.

   THE SWIPE HINT ORDERING IS LOAD BEARING. In the captures the base
   rule that hides it sat at the very bottom of the stylesheet and the
   768 query re-showed it with !important. Strip the !important and
   source order alone would hide it at every width. The base rule is
   above the media query here, which is what actually makes it correct.

   BOX SIZING IS SCOPED to the page wrapper, because main.css has no
   global reset and three bugs on this project have come from assuming
   otherwise.

   REVEALS ARE GATED ON .evpwt-js, the class a tiny inline snippet in
   wp_head puts on <html>, so with JS off nothing is ever hidden. The
   hero's entrance animations are not gated: they are pure CSS
   keyframes and finish on their own.
   ================================================ */

.ev-giving,
.ev-giving *,
.ev-giving *::before,
.ev-giving *::after {
	box-sizing: border-box;
}

.ev-giving {
	font-family: var(--wp--preset--font-family--montserrat);
	color: #fff;
	background: var(--wp--preset--color--bg-deep);
}

.ev-giving a {
	text-decoration: none;
}

/* Shared divider ornament, used by the hero and the philosophy block. */
.ev-giving .evp-gb-dline {
	display: block;
	width: 3rem;
	height: 1px;
	background: linear-gradient(90deg, var(--wp--preset--color--rust), transparent);
}

.ev-giving .evp-gb-ddiamond {
	display: block;
	width: 0.4375rem;
	height: 0.4375rem;
	background: var(--wp--preset--color--gold);
	transform: rotate(45deg);
}

@keyframes evpGbFadeUp {
	from { opacity: 0; transform: translateY(1.5rem); }
	to   { opacity: 1; transform: translateY(0); }
}

@keyframes evpGbScrollPulse {
	0%   { left: -100%; }
	50%  { left: 0; }
	100% { left: 100%; }
}

/* ================================================
   HERO
   ================================================ */

.evp-gb-hero {
	position: relative;
	display: grid;
	grid-template-columns: 45% 55%;
	min-height: 100vh;
	/* clip, not hidden: hidden creates a scroll context and would break
	   position: sticky on any descendant. */
	overflow: clip;
}

.evp-gb-hero-content {
	position: relative;
	z-index: 5;
	display: flex;
	flex-direction: column;
	justify-content: center;
	padding: 5rem 4rem 5rem 5rem;
	background: var(--wp--preset--color--bg-deep);
}

.evp-gb-hero-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0 0 1.75rem;
	font-size: 0.65rem;
	font-weight: 700;
	letter-spacing: 0.26em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	opacity: 0;
	animation: evpGbFadeUp 0.8s ease-out 0.2s forwards;
}

.evp-gb-hero-eyebrow::before {
	content: "";
	display: block;
	flex-shrink: 0;
	width: 1.75rem;
	height: 0.09375rem;
	background: var(--wp--preset--color--rust);
}

.evp-gb-hero-title {
	margin: 0 0 1.75rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(3rem, 4.5vw, 5.2rem);
	font-weight: 400;
	line-height: 1.08;
	letter-spacing: -0.01em;
	color: #fff;
	opacity: 0;
	animation: evpGbFadeUp 0.8s ease-out 0.4s forwards;
}

.evp-gb-hero-title em {
	color: var(--wp--preset--color--rust);
	font-style: italic;
}

.evp-gb-hero-divider {
	display: flex;
	align-items: center;
	gap: 0.875rem;
	margin-bottom: 2rem;
	opacity: 0;
	animation: evpGbFadeUp 0.7s ease-out 0.6s forwards;
	-webkit-user-select: none;
	user-select: none;
}

.evp-gb-hero-subtitle {
	max-width: 26.25rem;
	margin: 0 0 3rem;
	font-size: 1rem;
	font-weight: 300;
	line-height: 1.75;
	color: rgba(255, 255, 255, 0.6);
	opacity: 0;
	animation: evpGbFadeUp 0.8s ease-out 0.65s forwards;
}

.evp-gb-hero-actions {
	opacity: 0;
	animation: evpGbFadeUp 0.8s ease-out 0.8s forwards;
}

.evp-gb-hero-cta {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: 0.625rem;
	overflow: clip;
	padding: 1rem 2.125rem;
	border-radius: 3.125rem;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: #fff;
	background: var(--wp--preset--color--rust);
	box-shadow: 0 0.5rem 1.75rem rgba(184, 98, 27, 0.4);
	transition: transform 0.3s ease, box-shadow 0.3s ease;
	-webkit-tap-highlight-color: transparent;
}

.evp-gb-hero-cta::before {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(135deg, var(--wp--preset--color--gold) 0%, var(--wp--preset--color--rust) 100%);
	opacity: 0;
	transition: opacity 0.3s ease;
}

.evp-gb-hero-cta:hover {
	transform: translateY(-0.1875rem);
	box-shadow: 0 0.875rem 2.5rem rgba(184, 98, 27, 0.55);
}

.evp-gb-hero-cta:hover::before {
	opacity: 1;
}

.evp-gb-hero-cta span,
.evp-gb-hero-cta svg {
	position: relative;
	z-index: 1;
}

.evp-gb-hero-cta svg {
	width: 0.9375rem;
	height: 0.9375rem;
	stroke: #fff;
	fill: none;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
	transition: transform 0.3s ease;
}

.evp-gb-hero-cta:hover svg {
	transform: translateX(0.25rem);
}

.evp-gb-hero-cta:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 0.25rem;
}

/* The partners section is the CTA's scroll target and takes focus. */
.evp-gb-partners:focus {
	outline: none;
}

.evp-gb-partners:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: -0.5rem;
}

.evp-gb-hero-scroll {
	position: absolute;
	bottom: 2.25rem;
	left: 5rem;
	display: flex;
	align-items: center;
	gap: 0.625rem;
	font-size: 0.6rem;
	font-weight: 600;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.3);
	opacity: 0;
	animation: evpGbFadeUp 0.8s ease-out 1.4s forwards;
}

.evp-gb-scroll-line {
	position: relative;
	display: block;
	overflow: clip;
	width: 2rem;
	height: 1px;
	background: rgba(255, 255, 255, 0.2);
}

.evp-gb-scroll-line::after {
	content: "";
	position: absolute;
	top: 0;
	left: -100%;
	width: 100%;
	height: 100%;
	background: var(--wp--preset--color--rust);
	animation: evpGbScrollPulse 2s ease-in-out 1.8s infinite;
}

/* ---------- The slideshow ---------- */

.evp-gb-hero-media {
	position: relative;
	background-color: #1c2a1c;
}

/*
   Five stacked images, one visible. The capture swapped a background on
   one panel and cross-faded a second over it on a 1300ms timeout tied
   to this 1.2s transition. One class toggle instead, and no timeout to
   keep in step.
*/
.evp-gb-hero-slide {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	opacity: 0;
	transition: opacity 1.2s ease-in-out;
}

.evp-gb-hero-slide.is-active {
	opacity: 1;
}

.evp-gb-hero-media::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	background: linear-gradient(
		90deg,
		#111010 0%,
		rgba(17, 16, 16, 0.85) 4%,
		rgba(17, 16, 16, 0.3) 12%,
		rgba(17, 16, 16, 0.06) 22%,
		transparent 35%);
}

.evp-gb-hero-media::after {
	content: "";
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
	z-index: 1;
	height: 35%;
	background: linear-gradient(to top, rgba(17, 16, 16, 0.55) 0%, transparent 100%);
}

.evp-gb-hero-tag {
	position: absolute;
	right: 2.5rem;
	bottom: 2.75rem;
	z-index: 3;
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: 0.375rem;
	opacity: 0;
	animation: evpGbFadeUp 0.8s ease-out 1.2s forwards;
}

.evp-gb-tag-region {
	font-size: 0.58rem;
	font-weight: 700;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evp-gb-tag-name {
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.3rem;
	font-weight: 400;
	color: #fff;
	text-shadow: 0 0.125rem 0.75rem rgba(0, 0, 0, 0.5);
}

.evp-gb-tag-line {
	width: 2rem;
	height: 0.09375rem;
	margin-left: auto;
	background: var(--wp--preset--color--rust);
}

/* ================================================
   PHILOSOPHY
   ================================================ */

.evp-gb-phil {
	position: relative;
	padding: 6.25rem 5rem;
	overflow: clip;
	background: var(--wp--preset--color--bg-deep);
}

/* The hairline is inset to match the section padding, so it aligns
   with the content rather than spanning the viewport. Re-inset at each
   breakpoint; keep the two in step. */
.evp-gb-phil::before {
	content: "";
	position: absolute;
	top: 0;
	left: 5rem;
	right: 5rem;
	height: 1px;
	background: rgba(255, 255, 255, 0.07);
}

.evp-gb-phil-inner {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 0 5rem;
	align-items: start;
	margin-bottom: 3.5rem;
}

.evpwt-js .evp-gb-phil-left {
	opacity: 0;
	transform: translateY(1.5rem);
	transition: opacity 0.8s ease, transform 0.8s ease;
}

.evp-gb-phil-left.revealed {
	opacity: 1;
	transform: translateY(0);
}

.evp-gb-phil-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.625rem;
	margin: 0 0 1rem;
	font-size: 0.65rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
}

.evp-gb-phil-eyebrow::before {
	content: "";
	display: inline-block;
	flex-shrink: 0;
	width: 1.5rem;
	height: 0.09375rem;
	background: var(--wp--preset--color--rust);
}

.evp-gb-phil-title {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.4rem, 4vw, 3.8rem);
	font-weight: 400;
	line-height: 1.1;
	color: #fff;
}

.evp-gb-phil-title em {
	color: var(--wp--preset--color--rust);
	font-style: italic;
}

.evp-gb-phil-right {
	padding-top: 0.5rem;
}

.evpwt-js .evp-gb-phil-right {
	opacity: 0;
	transform: translateY(1.5rem);
	transition: opacity 0.8s ease 0.15s, transform 0.8s ease 0.15s;
}

.evp-gb-phil-right.revealed {
	opacity: 1;
	transform: translateY(0);
}

.evp-gb-phil-divider {
	display: flex;
	align-items: center;
	gap: 0.875rem;
	margin-bottom: 1.75rem;
	-webkit-user-select: none;
	user-select: none;
}

.evp-gb-phil-body {
	margin: 0;
	font-size: 1rem;
	font-weight: 300;
	line-height: 1.85;
	color: rgba(255, 255, 255, 0.5);
}

.evp-gb-phil-images {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 0.75rem;
}

.evpwt-js .evp-gb-phil-images {
	opacity: 0;
	transform: translateY(1.5rem);
	transition: opacity 0.8s ease 0.3s, transform 0.8s ease 0.3s;
}

.evp-gb-phil-images.revealed {
	opacity: 1;
	transform: translateY(0);
}

.evp-gb-phil-img {
	display: block;
	width: 100%;
	height: 23.75rem;
	object-fit: cover;
	object-position: center;
	border-radius: 0.75rem;
}

/* ================================================
   PARTNERS AND INITIATIVES
   ================================================ */

.evp-gb-partners {
	position: relative;
	padding: 6.25rem 5rem;
	overflow: clip;
	background: var(--wp--preset--color--bg-deep);
}

.evp-gb-partners::before {
	content: "";
	position: absolute;
	top: 0;
	left: 5rem;
	right: 5rem;
	height: 1px;
	background: rgba(255, 255, 255, 0.07);
}

.evp-gb-header {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 0 5rem;
	align-items: end;
	margin-bottom: 4.5rem;
}

.evpwt-js .evp-gb-header {
	opacity: 0;
	transform: translateY(1.5rem);
	transition: opacity 0.8s ease, transform 0.8s ease;
}

.evp-gb-header.revealed {
	opacity: 1;
	transform: translateY(0);
}

.evp-gb-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.625rem;
	margin: 0 0 1rem;
	font-size: 0.65rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
}

.evp-gb-eyebrow::before {
	content: "";
	display: inline-block;
	flex-shrink: 0;
	width: 1.5rem;
	height: 0.09375rem;
	background: var(--wp--preset--color--rust);
}

.evp-gb-title {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.4rem, 4vw, 3.8rem);
	font-weight: 400;
	line-height: 1.1;
	color: #fff;
}

.evp-gb-title em {
	color: var(--wp--preset--color--rust);
	font-style: italic;
}

.evp-gb-note {
	margin: 0;
	font-size: 0.95rem;
	font-weight: 300;
	line-height: 1.85;
	color: rgba(255, 255, 255, 0.45);
}

/* ---------- Sub dividers ---------- */

.evp-gb-sub-divider {
	display: flex;
	align-items: center;
	gap: 1rem;
	margin-bottom: 1.75rem;
}

.evpwt-js .evp-gb-sub-divider {
	opacity: 0;
	transition: opacity 0.6s ease;
}

.evp-gb-sub-divider.revealed {
	opacity: 1;
}

.evp-gb-sub-divider-line {
	display: block;
	flex: 1;
	height: 1px;
	background: rgba(255, 255, 255, 0.07);
	-webkit-user-select: none;
	user-select: none;
}

.evp-gb-sub-divider-label {
	font-size: 0.58rem;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.22);
	white-space: nowrap;
}

/* ---------- Partner wall ---------- */

.evp-gb-wall {
	display: grid;
	grid-template-columns: repeat(6, minmax(0, 1fr));
	margin: 0 0 4rem;
	padding: 0;
	list-style: none;
	overflow: clip;
	border: 1px solid rgba(255, 255, 255, 0.07);
	border-radius: 1rem;
}

.evpwt-js .evp-gb-wall {
	opacity: 0;
	transform: translateY(1.25rem);
	transition: opacity 0.7s ease 0.1s, transform 0.7s ease 0.1s;
}

.evp-gb-wall.revealed {
	opacity: 1;
	transform: translateY(0);
}

.evp-gb-wall-item {
	display: flex;
	min-width: 0;
}

.evp-gb-cell {
	position: relative;
	display: flex;
	flex: 1;
	flex-direction: column;
	justify-content: flex-end;
	overflow: clip;
	height: 11.25rem;
	padding: 1.125rem;
	text-align: left;
	border-right: 1px solid rgba(255, 255, 255, 0.07);
	-webkit-tap-highlight-color: transparent;
}

.evp-gb-wall-item:last-child .evp-gb-cell {
	border-right: none;
}

/*
   The picture sits in its own layer under the scrim. A logo is
   contained rather than covered: cover cropped the four logo cells,
   which was survivable at 180px in a six column grid and is not once a
   cell can be 78% of a phone. The plate colour behind it comes from the
   registry, because the logos have transparent areas.
*/
.evp-gb-cell-media {
	position: absolute;
	inset: 0;
	z-index: 0;
	display: block;
}

.evp-gb-cell-img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
}

.evp-gb-cell-media.is-logo {
	padding: 1.75rem;
}

.evp-gb-cell-media.is-logo .evp-gb-cell-img {
	object-fit: contain;
}

.evp-gb-cell::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	background: linear-gradient(
		180deg,
		rgba(17, 16, 16, 0.35) 0%,
		rgba(17, 16, 16, 0.75) 60%,
		rgba(17, 16, 16, 0.88) 100%);
	transition: opacity 0.4s ease;
}

.evp-gb-cell:hover::before {
	opacity: 0.6;
}

.evp-gb-cell::after {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	z-index: 2;
	height: 0.1875rem;
	background: linear-gradient(90deg, var(--wp--preset--color--rust), var(--wp--preset--color--gold));
	opacity: 0;
	transition: opacity 0.35s ease;
}

.evp-gb-cell:hover::after {
	opacity: 1;
}

.evp-gb-cell:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: -2px;
}

.evp-gb-cell-text {
	position: relative;
	z-index: 3;
}

.evp-gb-cell-name {
	display: block;
	margin: 0 0 0.25rem;
	font-size: 0.66rem;
	font-weight: 600;
	line-height: 1.45;
	color: rgba(255, 255, 255, 0.9);
}

.evp-gb-cell-region {
	display: block;
	font-size: 0.52rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
}

/* ---------- Spotlights ---------- */

.evp-gb-spotlights {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 1.25rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.evpwt-js .evp-gb-spotlights {
	opacity: 0;
	transform: translateY(1.25rem);
	transition: opacity 0.7s ease 0.15s, transform 0.7s ease 0.15s;
}

.evp-gb-spotlights.revealed {
	opacity: 1;
	transform: translateY(0);
}

.evp-gb-spotlight {
	position: relative;
	display: flex;
	flex-direction: column;
	overflow: clip;
	border: 1px solid rgba(212, 196, 168, 0.1);
	border-radius: 1.125rem;
	background: rgba(28, 22, 16, 0.97);
	transition: border-color 0.35s ease, box-shadow 0.35s ease, transform 0.35s ease;
}

.evp-gb-spotlight::before {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	z-index: 2;
	height: 0.1875rem;
	background: linear-gradient(90deg, var(--wp--preset--color--rust), var(--wp--preset--color--gold));
	opacity: 0;
	transition: opacity 0.35s ease;
}

.evp-gb-spotlight:hover {
	border-color: rgba(184, 98, 27, 0.3);
	box-shadow: 0 1.125rem 3.125rem rgba(184, 98, 27, 0.12);
	transform: translateY(-0.25rem);
}

.evp-gb-spotlight:hover::before {
	opacity: 1;
}

.evp-gb-spotlight-media {
	position: relative;
	display: block;
	flex-shrink: 0;
	height: 12.5rem;
}

.evp-gb-spotlight-img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
}

/* Two of the three are framed better from the top of the picture. */
.evp-gb-spotlight-img.evp-gb-img-top {
	object-position: center top;
}

.evp-gb-spotlight-media::after {
	content: "";
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
	height: 5rem;
	background: linear-gradient(transparent, rgba(28, 22, 16, 0.97));
}

.evp-gb-spotlight-tag {
	position: absolute;
	bottom: 1rem;
	left: 1.5rem;
	z-index: 3;
	margin: 0;
	font-size: 0.55rem;
	font-weight: 700;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evp-gb-spotlight-body {
	display: flex;
	flex: 1;
	flex-direction: column;
	padding: 1.375rem 1.5rem 1.75rem;
}

.evp-gb-spotlight-region {
	display: block;
	margin: 0 0 0.625rem;
	font-size: 0.55rem;
	font-weight: 700;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
}

.evp-gb-spotlight-name {
	margin: 0 0 0.875rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.15rem;
	font-weight: 500;
	line-height: 1.25;
	color: #fff;
}

.evp-gb-spotlight-desc {
	flex: 1;
	margin: 0 0 1.375rem;
	font-size: 0.82rem;
	font-weight: 300;
	line-height: 1.75;
	color: rgba(255, 255, 255, 0.48);
}

.evp-gb-spotlight-link {
	display: inline-flex;
	align-items: center;
	gap: 0.4375rem;
	margin-top: auto;
	font-size: 0.66rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
	transition: gap 0.3s ease, color 0.3s ease;
	-webkit-tap-highlight-color: transparent;
}

.evp-gb-spotlight-link:hover {
	gap: 0.8125rem;
	color: var(--wp--preset--color--gold);
}

.evp-gb-spotlight-link svg {
	flex-shrink: 0;
	width: 0.8125rem;
	height: 0.8125rem;
	stroke: currentColor;
	fill: none;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.evp-gb-spotlight-link:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 0.25rem;
	border-radius: 0.1875rem;
}

/* ---------- The swipe hint ----------
   Hidden by default and shown only where a row becomes a carousel.
   This base rule must stay ABOVE the 768 media query: in the captures
   it sat below and only lost on desktop by way of !important. */
.evp-gb-hint {
	display: none;
}

/* ================================================
   GALLERY MOSAIC
   ================================================ */

.evp-gb-gallery {
	position: relative;
	padding: 6.25rem 5rem;
	background: var(--wp--preset--color--bg-deep);
}

.evp-gb-gallery::before {
	content: "";
	position: absolute;
	top: 0;
	left: 5rem;
	right: 5rem;
	height: 1px;
	background: rgba(255, 255, 255, 0.07);
}

/*
    +---------------+-------+-------+
    |               |   2   |   3   |   row 1, 280px
    |       1       +-------+-------+
    |               |       4       |   row 2, 280px
    +---------------+---------------+
      col 1     2       3       4
*/
.evp-gb-gal-grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	grid-template-rows: 17.5rem 17.5rem;
	gap: 0.75rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.evp-gb-gal-cell {
	position: relative;
	overflow: clip;
	min-height: 0;
	border-radius: 0.875rem;
}

.evp-gb-gal-cell:nth-child(1) { grid-column: 1 / 3; grid-row: 1 / 3; }
.evp-gb-gal-cell:nth-child(2) { grid-column: 3 / 4; grid-row: 1 / 2; }
.evp-gb-gal-cell:nth-child(3) { grid-column: 4 / 5; grid-row: 1 / 2; }
.evp-gb-gal-cell:nth-child(4) { grid-column: 3 / 5; grid-row: 2 / 3; }

.evp-gb-gal-img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
}

.evp-gb-gal-cell::after {
	content: "";
	position: absolute;
	inset: 0;
	pointer-events: none;
	background: linear-gradient(180deg, transparent 40%, rgba(17, 16, 16, 0.85) 100%);
}

/*
   THE LABELS ARE ALWAYS VISIBLE. They used to be opacity 0 until hover,
   which meant a keyboard user never saw them at all and a touch user
   only did because touch has no hover. The cells are photographs rather
   than controls now, so there is no hover state left to reveal them
   with, and no reason to hide them in the first place.
*/
.evp-gb-gal-label {
	position: absolute;
	bottom: 1.125rem;
	left: 1.25rem;
	z-index: 2;
	display: block;
}

.evp-gb-gal-region {
	display: block;
	margin-bottom: 0.1875rem;
	font-size: 0.5rem;
	font-weight: 700;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
}

.evp-gb-gal-caption {
	display: block;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 0.95rem;
	color: #fff;
}

.evp-gb-gal-cell:nth-child(1) .evp-gb-gal-caption { font-size: 1.3rem; }
.evp-gb-gal-cell:nth-child(4) .evp-gb-gal-caption { font-size: 1.1rem; }

/* ================================================
   1200 AND BELOW
   ================================================ */
@media (max-width: 1200px) {
	.evp-gb-hero-content { padding: 4.5rem 3rem 4.5rem 3.5rem; }
	.evp-gb-hero-scroll { left: 3.5rem; }

	.evp-gb-phil { padding: 6.25rem 3.5rem; }
	.evp-gb-phil::before { left: 3.5rem; right: 3.5rem; }
	.evp-gb-phil-inner { gap: 0 3.5rem; }

	.evp-gb-partners { padding: 6.25rem 3.5rem; }
	.evp-gb-partners::before { left: 3.5rem; right: 3.5rem; }
	.evp-gb-header { gap: 0 3.5rem; }

	/* Six logos across stops reading well before the layout breaks. */
	.evp-gb-wall { grid-template-columns: repeat(3, minmax(0, 1fr)); }

	.evp-gb-gallery { padding: 6.25rem 3.5rem; }
	.evp-gb-gallery::before { left: 3.5rem; right: 3.5rem; }
}

/* ================================================
   1024 AND BELOW
   The hero becomes a single full bleed block with the content
   overlaid and anchored to the bottom, where thumbs reach.
   ================================================ */
@media (max-width: 1024px) {
	.evp-gb-hero {
		display: block;
		position: relative;
		min-height: 100vh;
		/*
		   lvh, NOT dvh. The capture used dvh, which makes the layout
		   shift while the iOS Safari URL bar shows and hides. The About
		   hero settled on lvh two months later and that decision
		   supersedes this file. The known cost is a slightly below fold
		   edge on first paint. Deliberate.
		*/
		min-height: 100lvh;
		overflow: clip;
	}

	.evp-gb-hero-media {
		position: absolute;
		inset: 0;
		z-index: 0;
		width: 100%;
		height: 100%;
	}

	.evp-gb-hero-media::before {
		background: linear-gradient(
			180deg,
			rgba(17, 16, 16, 0.55) 0%,
			rgba(17, 16, 16, 0.4) 30%,
			rgba(17, 16, 16, 0.75) 65%,
			rgba(17, 16, 16, 0.95) 100%);
	}

	.evp-gb-hero-media::after { display: none; }

	.evp-gb-hero-content {
		position: relative;
		z-index: 5;
		min-height: 100vh;
		min-height: 100lvh;
		padding: 7.5rem 1.5rem 3.75rem;
		justify-content: flex-end;
		background: transparent;
	}

	.evp-gb-hero-scroll { display: none; }
	.evp-gb-hero-tag { display: none; }

	.evp-gb-hero-eyebrow {
		margin-bottom: 1.125rem;
		font-size: 0.62rem;
		letter-spacing: 0.22em;
		color: var(--wp--preset--color--gold);
	}

	.evp-gb-hero-eyebrow::before {
		width: 1.375rem;
		background: var(--wp--preset--color--gold);
	}

	.evp-gb-hero-title {
		margin-bottom: 1.375rem;
		font-size: clamp(2.6rem, 10vw, 3.8rem);
		line-height: 1.05;
		text-shadow: 0 0.125rem 1.25rem rgba(0, 0, 0, 0.4);
	}

	.evp-gb-hero-divider { margin-bottom: 1.375rem; }
	.evp-gb-hero-divider .evp-gb-dline { width: 2.25rem; }

	.evp-gb-hero-subtitle {
		max-width: none;
		margin-bottom: 2rem;
		font-size: 0.95rem;
		line-height: 1.7;
		color: rgba(255, 255, 255, 0.85);
		text-shadow: 0 1px 0.75rem rgba(0, 0, 0, 0.5);
	}

	.evp-gb-hero-actions { width: 100%; }

	.evp-gb-hero-cta {
		display: flex;
		justify-content: center;
		width: 100%;
		padding: 1.125rem 1.75rem;
	}

	/* The header's two columns stack here rather than at 900, which is
	   not a breakpoint this site uses anywhere else. */
	.evp-gb-header {
		grid-template-columns: minmax(0, 1fr);
		gap: 1.5rem;
		margin-bottom: 3.5rem;
	}

	.evp-gb-phil-inner {
		grid-template-columns: minmax(0, 1fr);
		gap: 3rem 0;
	}

	/* The mosaic becomes a carousel here, one rung earlier than the
	   capture's 900, so it changes with the rest of the page. */
	.evp-gb-gallery { padding: 5rem 0; }
	.evp-gb-gallery::before { left: 1.375rem; right: 1.375rem; }

	.evp-gb-gal-grid {
		display: flex;
		grid-template-columns: none;
		grid-template-rows: none;
		gap: 0.875rem;
		padding: 0 1.375rem;
		overflow-x: auto;
		overflow-y: hidden;
		scroll-snap-type: x mandatory;
		scroll-padding-inline-start: 1.375rem;
		overscroll-behavior-x: contain;
		touch-action: pan-x;
		scrollbar-width: none;
		-webkit-overflow-scrolling: touch;
	}

	.evp-gb-gal-grid::-webkit-scrollbar { display: none; }

	.evp-gb-gal-cell,
	.evp-gb-gal-cell:nth-child(1),
	.evp-gb-gal-cell:nth-child(2),
	.evp-gb-gal-cell:nth-child(3),
	.evp-gb-gal-cell:nth-child(4) {
		grid-column: auto;
		grid-row: auto;
		flex: 0 0 82%;
		height: 23.75rem;
		scroll-snap-align: start;
	}

	.evp-gb-gal-label { bottom: 1.375rem; left: 1.5rem; }
	.evp-gb-gal-region { font-size: 0.55rem; }

	.evp-gb-gal-caption,
	.evp-gb-gal-cell:nth-child(1) .evp-gb-gal-caption,
	.evp-gb-gal-cell:nth-child(4) .evp-gb-gal-caption { font-size: 1.2rem; }

	.evp-gb-gallery .evp-gb-hint {
		margin: 1.125rem 1.375rem 0;
	}
}

/* ================================================
   768 AND BELOW
   Both partner rows become snapping carousels that bleed to the
   viewport edge.
   ================================================ */
@media (max-width: 768px) {
	.evp-gb-phil { padding: 5rem 1.75rem; }
	.evp-gb-phil::before { left: 1.75rem; right: 1.75rem; }
	.evp-gb-phil-images { grid-template-columns: minmax(0, 1fr); }
	.evp-gb-phil-img { height: 16.25rem; }

	.evp-gb-partners { padding: 4.5rem 0; }
	.evp-gb-partners::before { left: 1.375rem; right: 1.375rem; }

	.evp-gb-header { margin-bottom: 3rem; padding: 0 1.375rem; }
	.evp-gb-title { font-size: clamp(2rem, 8vw, 2.8rem); }
	.evp-gb-note { font-size: 0.9rem; line-height: 1.75; }

	.evp-gb-sub-divider { margin: 0 1.375rem 1.375rem; gap: 0.75rem; }

	.evp-gb-wall {
		display: flex;
		grid-template-columns: none;
		gap: 0.75rem;
		margin: 0 0 1rem;
		padding: 0 1.375rem;
		border: none;
		border-radius: 0;
		overflow-x: auto;
		overflow-y: hidden;
		scroll-snap-type: x mandatory;
		scroll-padding-inline-start: 1.375rem;
		overscroll-behavior-x: contain;
		touch-action: pan-x;
		scrollbar-width: none;
		-webkit-overflow-scrolling: touch;
	}

	.evp-gb-wall::-webkit-scrollbar { display: none; }

	.evp-gb-wall-item { flex: 0 0 78%; scroll-snap-align: start; }

	.evp-gb-cell,
	.evp-gb-wall-item:last-child .evp-gb-cell {
		height: 12.5rem;
		padding: 1.25rem;
		border: 1px solid rgba(255, 255, 255, 0.07);
		border-radius: 0.875rem;
	}

	.evp-gb-cell-name { font-size: 0.78rem; }
	.evp-gb-cell-region { font-size: 0.55rem; }

	.evp-gb-spotlights {
		display: flex;
		grid-template-columns: none;
		gap: 0.875rem;
		padding: 0 1.375rem;
		overflow-x: auto;
		overflow-y: hidden;
		scroll-snap-type: x mandatory;
		scroll-padding-inline-start: 1.375rem;
		overscroll-behavior-x: contain;
		touch-action: pan-x;
		scrollbar-width: none;
		-webkit-overflow-scrolling: touch;
	}

	.evp-gb-spotlights::-webkit-scrollbar { display: none; }

	.evp-gb-spotlight {
		flex: 0 0 85%;
		scroll-snap-align: start;
		border-radius: 0.875rem;
	}

	.evp-gb-spotlight-media { height: 11.25rem; }
	.evp-gb-spotlight-tag { bottom: 0.875rem; left: 1.25rem; }
	.evp-gb-spotlight-body { padding: 1.25rem 1.25rem 1.5rem; }
	.evp-gb-spotlight-name { margin-bottom: 0.75rem; font-size: 1.1rem; }
	.evp-gb-spotlight-desc { margin-bottom: 1.125rem; font-size: 0.82rem; line-height: 1.7; }

	/* 44px minimum tap target, without moving the link visually. */
	.evp-gb-spotlight-link {
		min-height: 2.75rem;
		margin-top: -0.75rem;
		margin-bottom: -0.25rem;
		padding: 0.75rem 0;
	}

	.evp-gb-hint {
		display: flex;
		align-items: center;
		justify-content: center;
		gap: 0.5rem;
		font-size: 0.55rem;
		font-weight: 600;
		letter-spacing: 0.18em;
		text-transform: uppercase;
		color: rgba(255, 255, 255, 0.3);
		-webkit-user-select: none;
		user-select: none;
	}

	.evp-gb-hint svg {
		width: 0.875rem;
		height: 0.875rem;
		stroke: currentColor;
		fill: none;
		stroke-width: 2;
		stroke-linecap: round;
		stroke-linejoin: round;
	}

	.evp-gb-partners .evp-gb-hint {
		margin: 0 0 3.25rem;
		padding: 0 1.375rem;
	}
}

/* ================================================
   480 AND BELOW
   ================================================ */
@media (max-width: 480px) {
	.evp-gb-hero-content { padding: 6.875rem 1.25rem 3rem; }
	.evp-gb-hero-title { font-size: clamp(2.3rem, 11vw, 3.2rem); }
	.evp-gb-hero-subtitle { margin-bottom: 1.75rem; font-size: 0.9rem; }

	.evp-gb-phil { padding: 4rem 1.25rem; }
	.evp-gb-phil::before { left: 1.25rem; right: 1.25rem; }

	.evp-gb-partners::before { left: 1.125rem; right: 1.125rem; }
	.evp-gb-header { padding: 0 1.125rem; }
	.evp-gb-title { font-size: clamp(1.9rem, 9vw, 2.5rem); }
	.evp-gb-note { font-size: 0.88rem; }
	.evp-gb-sub-divider { margin: 0 1.125rem 1.375rem; }
	.evp-gb-sub-divider-label { font-size: 0.55rem; letter-spacing: 0.2em; }

	.evp-gb-wall,
	.evp-gb-spotlights {
		padding: 0 1.125rem;
		scroll-padding-inline-start: 1.125rem;
	}

	.evp-gb-partners .evp-gb-hint { padding: 0 1.125rem; }
	.evp-gb-wall-item { flex-basis: 82%; }
	.evp-gb-cell { height: 11.25rem; }
	.evp-gb-spotlight { flex-basis: 88%; }

	.evp-gb-gallery::before { left: 1.125rem; right: 1.125rem; }

	.evp-gb-gal-grid {
		padding: 0 1.125rem;
		scroll-padding-inline-start: 1.125rem;
	}

	.evp-gb-gallery .evp-gb-hint { margin: 1.125rem 1.125rem 0; }

	.evp-gb-gal-cell,
	.evp-gb-gal-cell:nth-child(1),
	.evp-gb-gal-cell:nth-child(2),
	.evp-gb-gal-cell:nth-child(3),
	.evp-gb-gal-cell:nth-child(4) {
		flex-basis: 86%;
		height: 21.25rem;
	}
}

/* ================================================
   360 AND BELOW
   A card at 82% of a 360 viewport leaves no room for the snap
   gutter, so the basis comes down with the card heights.
   ================================================ */
@media (max-width: 360px) {
	.evp-gb-hero-title { font-size: clamp(2.1rem, 12vw, 2.8rem); }

	.evp-gb-wall-item { flex-basis: 86%; }
	.evp-gb-spotlight { flex-basis: 90%; }
	.evp-gb-spotlight-body { padding: 1.125rem 1.125rem 1.375rem; }

	.evp-gb-gal-cell,
	.evp-gb-gal-cell:nth-child(1),
	.evp-gb-gal-cell:nth-child(2),
	.evp-gb-gal-cell:nth-child(3),
	.evp-gb-gal-cell:nth-child(4) {
		flex-basis: 88%;
		height: 18.75rem;
	}
}

/* ================================================
   TOUCH DEVICES
   Hover sticks on touch, so it is turned off where there is no
   hover and a small active state replaces it.
   ================================================ */
@media (hover: none) {
	.evp-gb-hero-cta:hover {
		transform: none;
		box-shadow: 0 0.5rem 1.75rem rgba(184, 98, 27, 0.4);
	}

	.evp-gb-hero-cta:hover::before { opacity: 0; }
	.evp-gb-hero-cta:hover svg { transform: none; }
	.evp-gb-hero-cta:active { transform: scale(0.98); transition: transform 0.15s ease; }

	.evp-gb-cell:hover::before { opacity: 1; }
	.evp-gb-cell:hover::after { opacity: 0; }

	.evp-gb-spotlight:hover {
		border-color: rgba(212, 196, 168, 0.1);
		box-shadow: none;
		transform: none;
	}

	.evp-gb-spotlight:hover::before { opacity: 0; }

	.evp-gb-spotlight-link:hover {
		gap: 0.4375rem;
		color: var(--wp--preset--color--rust);
	}

	.evp-gb-spotlight-link:active { color: var(--wp--preset--color--gold); }
}

/* ================================================
   REDUCED MOTION
   Everything visible, nothing moving. The slideshow holds on the
   first slide: giving-back.js never starts its timer under reduced
   motion, so no crossfade runs at all.
   ================================================ */
@media (prefers-reduced-motion: reduce) {
	.evp-gb-hero-eyebrow,
	.evp-gb-hero-title,
	.evp-gb-hero-divider,
	.evp-gb-hero-subtitle,
	.evp-gb-hero-actions,
	.evp-gb-hero-scroll,
	.evp-gb-hero-tag {
		opacity: 1;
		transform: none;
		animation: none;
	}

	.evp-gb-scroll-line::after { animation: none; }

	.evp-gb-hero-slide { transition: none; }

	.evpwt-js .evp-gb-phil-left,
	.evpwt-js .evp-gb-phil-right,
	.evpwt-js .evp-gb-phil-images,
	.evpwt-js .evp-gb-header,
	.evpwt-js .evp-gb-sub-divider,
	.evpwt-js .evp-gb-wall,
	.evpwt-js .evp-gb-spotlights {
		opacity: 1;
		transform: none;
		transition: none;
	}

	.evp-gb-hero-cta,
	.evp-gb-hero-cta::before,
	.evp-gb-hero-cta svg,
	.evp-gb-cell::before,
	.evp-gb-cell::after,
	.evp-gb-spotlight,
	.evp-gb-spotlight::before,
	.evp-gb-spotlight-link {
		transition: none;
	}
}



/* ================================================
   THE MISSION PAGE

   Ported from mission-page/RECOVERED-mission-page.html, a Wayback
   capture of 11 June 2026.

   IT WAS A LIGHT PAGE AND IT IS DARK NOW.

   The capture is cream and white with #333 text: --cream #F8F6F3,
   body background #fff. Every other page on this site is #111010 with
   white text, and the header and footer are dark on every route, so a
   cream body would have been sandwiched between two dark bars and read
   as a rendering fault rather than a design.

   This is the documented rebuild rule rather than a preference. Every
   recovered section on this project carries the same instruction:
   "Background #111010 via token. Buttons use the shared spec." The
   page is old enough to predate the dark redesign, which is the likely
   reason it was still light.

   Reverting is one block: swap the ground and text tokens below.

   186 !important REMOVED. The recovery notes say "No !important
   anywhere, which is correct. Do not add any." That is wrong about
   this file: the stylesheet carries 186 of them. None survive.

   ONE BREAKPOINT LADDER, 1200 / 1024 / 768 / 480 / 360. The capture
   had 1024 / 768 / 480, which is the site ladder missing its top and
   bottom rungs, so this only adds the two.

   STAGGERS USE --ev-i, an index the template sets on each card, rather
   than the JS transitionDelay the capture wrote. Same behaviour, works
   for any number of cards, and nothing about initial state is applied
   by script.

   REVEALS ARE GATED ON .evpwt-js, the class a tiny inline snippet in
   wp_head puts on <html>, so with JS off nothing is ever hidden. The
   hero's entrance is pure CSS keyframes and is not gated.
   ================================================ */

.ev-mission-page,
.ev-mission-page *,
.ev-mission-page *::before,
.ev-mission-page *::after {
	box-sizing: border-box;
}

.ev-mission-page {
	font-family: var(--wp--preset--font-family--montserrat);
	color: #fff;
	background: var(--wp--preset--color--bg-deep);
}

.ev-mission-page a {
	text-decoration: none;
}

/* The two grounds the section rhythm alternates between. */
.evpms-statement,
.evpms-impact {
	background: #181818;
}

.evpms-pillars,
.evpms-cta {
	background: var(--wp--preset--color--bg-deep);
}

.evpms-inner {
	max-width: 75rem;
	margin: 0 auto;
	padding: 0 1.25rem;
}

@keyframes evpmsFadeUp {
	from { opacity: 0; transform: translateY(1.25rem); }
	to   { opacity: 1; transform: translateY(0); }
}

@keyframes evpmsDiamond {
	0%, 100% { transform: rotate(45deg) scale(1); opacity: 1; }
	50%      { transform: rotate(45deg) scale(1.2); opacity: 0.7; }
}

/* ================================================
   HERO
   ================================================ */

.evpms-hero {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 70vh;
	padding: 9rem 1.25rem 5rem;
	text-align: center;
	/*
	   NO PHOTOGRAPH. The captured hero was a darkened Unsplash stock
	   image, one of five placeholders on the page. A token gradient
	   until there is a real picture for it.
	*/
	background:
		radial-gradient(120% 80% at 50% 0%, rgba(184, 98, 27, 0.16) 0%, transparent 60%),
		var(--wp--preset--color--bg-deep);
}

.evpms-hero-inner {
	max-width: 56.25rem;
	padding: 0 1.25rem;
}

.evpms-hero-eyebrow {
	margin: 0 0 1.5rem;
	font-size: 0.85rem;
	font-weight: 600;
	letter-spacing: 0.25em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
	opacity: 0;
	animation: evpmsFadeUp 0.6s ease forwards;
}

.evpms-hero-title {
	margin: 0 0 1.875rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.4rem, 6vw, 5rem);
	font-weight: 400;
	line-height: 1.15;
	color: #fff;
	text-wrap: balance;
	opacity: 0;
	animation: evpmsFadeUp 0.6s ease 0.1s forwards;
}

.evpms-hero-subtitle {
	max-width: 43.75rem;
	margin: 0 auto;
	font-size: clamp(1.05rem, 2.5vw, 1.4rem);
	font-weight: 300;
	line-height: 1.8;
	color: rgba(255, 255, 255, 0.75);
	opacity: 0;
	animation: evpmsFadeUp 0.6s ease 0.2s forwards;
}

/* ================================================
   SHARED SECTION HEADER
   ================================================ */

.evpms-header {
	margin-bottom: 4.375rem;
	text-align: center;
}

.evpms-eyebrow {
	margin: 0 0 1.25rem;
	font-size: 0.85rem;
	font-weight: 600;
	letter-spacing: 0.25em;
	text-transform: uppercase;
	color: var(--wp--preset--color--rust);
}

.evpwt-js .evpms-eyebrow {
	opacity: 0;
	transform: translateY(1.25rem);
	transition: opacity 0.6s ease, transform 0.6s ease;
}

.evpms-header.revealed .evpms-eyebrow {
	opacity: 1;
	transform: translateY(0);
}

.evpms-title {
	position: relative;
	margin: 0 0 1.5rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2rem, 5vw, 3.5rem);
	font-weight: 400;
	line-height: 1.2;
	color: #fff;
	text-wrap: balance;
}

.evpwt-js .evpms-title {
	opacity: 0;
	transform: translateY(1.875rem);
	transition: opacity 0.8s ease 0.1s, transform 0.8s ease 0.1s;
}

.evpms-header.revealed .evpms-title {
	opacity: 1;
	transform: translateY(0);
}

.evpms-highlight {
	position: relative;
	color: var(--wp--preset--color--rust);
}

/*
   The underline sits BEHIND the word but IN FRONT of the section.
   The capture used z-index -1, which on a section with its own
   background paints it behind that background and makes it invisible.
   A positioned ::after at z-index 0 under text at z-index 1 does the
   same job without leaving the stacking context.
*/
.evpms-highlight::after {
	content: "";
	position: absolute;
	bottom: 0.3125rem;
	left: 0;
	z-index: 0;
	width: 0;
	height: 0.625rem;
	background: rgba(212, 196, 168, 0.28);
	transition: width 0.8s ease 0.6s;
}

.evpms-header.revealed .evpms-highlight::after {
	width: 100%;
}

.evpms-title,
.evpms-highlight {
	isolation: isolate;
}

.evpms-highlight {
	z-index: 1;
}

.evpms-rule {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 1.25rem;
	margin-bottom: 1.875rem;
	-webkit-user-select: none;
	user-select: none;
}

.evpwt-js .evpms-rule {
	opacity: 0;
	transition: opacity 0.6s ease 0.3s;
}

.evpms-header.revealed .evpms-rule {
	opacity: 1;
}

.evpms-rule-line {
	width: 3.75rem;
	height: 1px;
	background: linear-gradient(90deg, transparent, var(--wp--preset--color--rust), transparent);
}

.evpms-rule-diamond {
	width: 0.625rem;
	height: 0.625rem;
	background: var(--wp--preset--color--rust);
	transform: rotate(45deg);
	animation: evpmsDiamond 2s ease-in-out infinite;
}

.evpms-subtitle {
	max-width: 40.625rem;
	margin: 0 auto;
	font-size: 1.1rem;
	font-weight: 300;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.55);
}

.evpwt-js .evpms-subtitle {
	opacity: 0;
	transform: translateY(1.25rem);
	transition: opacity 0.6s ease 0.4s, transform 0.6s ease 0.4s;
}

.evpms-header.revealed .evpms-subtitle {
	opacity: 1;
	transform: translateY(0);
}

/* ================================================
   MISSION STATEMENT
   ================================================ */

.evpms-statement {
	padding: 6.25rem 0;
}

.evpms-statement-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 3.75rem;
	align-items: center;
}

.evpms-quote {
	position: relative;
	margin: 0;
}

.evpwt-js .evpms-quote {
	opacity: 0;
	transform: translateY(1.875rem);
	transition: opacity 0.8s ease, transform 0.8s ease;
}

.evpms-quote.revealed {
	opacity: 1;
	transform: translateY(0);
}

.evpms-quote::before {
	content: "\201C";
	position: absolute;
	top: -1.875rem;
	left: -0.5rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 6rem;
	line-height: 1;
	color: rgba(184, 98, 27, 0.28);
	pointer-events: none;
}

.evpms-quote-text {
	position: relative;
	margin: 0 0 1.5rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(1.25rem, 2.2vw, 1.75rem);
	font-weight: 400;
	font-style: italic;
	line-height: 1.6;
	color: #fff;
}

.evpms-quote-author {
	font-size: 0.85rem;
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evpms-shots {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 0.75rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.evpwt-js .evpms-shots {
	opacity: 0;
	transform: translateY(1.875rem);
	transition: opacity 0.8s ease 0.15s, transform 0.8s ease 0.15s;
}

.evpms-shots.revealed {
	opacity: 1;
	transform: translateY(0);
}

/* The first photograph spans both columns, the other two sit beneath. */
.evpms-shot {
	position: relative;
	overflow: clip;
	height: 11.25rem;
	border-radius: 0.75rem;
	background: rgba(255, 255, 255, 0.04);
}

.evpms-shot:first-child {
	grid-column: 1 / -1;
	height: 15rem;
}

.evpms-shot-img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
}

.evpms-shot::after {
	content: "";
	position: absolute;
	inset: 0;
	pointer-events: none;
	background: linear-gradient(to top, rgba(17, 16, 16, 0.8) 0%, transparent 55%);
}

.evpms-shot-label {
	position: absolute;
	bottom: 0.875rem;
	left: 1rem;
	right: 1rem;
	z-index: 2;
	font-size: 0.72rem;
	font-weight: 600;
	letter-spacing: 0.08em;
	color: rgba(255, 255, 255, 0.9);
}

/* ================================================
   PILLARS
   ================================================ */

.evpms-pillars {
	padding: 6.25rem 0;
}

.evpms-pillar-grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 1.25rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.evpms-pillar {
	display: flex;
	flex-direction: column;
	overflow: clip;
	border: 1px solid rgba(212, 196, 168, 0.1);
	border-radius: 1rem;
	background: rgba(28, 22, 16, 0.6);
	transition: border-color 0.35s ease, transform 0.35s ease, box-shadow 0.35s ease;
}

.evpwt-js .evpms-pillar {
	opacity: 0;
	transform: translateY(1.5rem);
	/* The stagger, from the index the template sets. */
	transition:
		opacity 0.7s ease calc( var( --ev-i, 0 ) * 0.1s ),
		transform 0.7s ease calc( var( --ev-i, 0 ) * 0.1s ),
		border-color 0.35s ease,
		box-shadow 0.35s ease;
}

.evpms-pillar-grid.revealed .evpms-pillar {
	opacity: 1;
	transform: translateY(0);
}

.evpms-pillar:hover {
	border-color: rgba(184, 98, 27, 0.3);
	box-shadow: 0 1.125rem 3.125rem rgba(184, 98, 27, 0.12);
	transform: translateY(-0.25rem);
}

.evpms-pillar-media {
	display: block;
	flex-shrink: 0;
	height: 10rem;
}

.evpms-pillar-img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.evpms-pillar-body {
	padding: 1.75rem;
}

.evpms-pillar-title {
	margin: 0 0 0.875rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.2rem;
	font-weight: 500;
	line-height: 1.3;
	color: #fff;
}

.evpms-pillar-desc {
	margin: 0;
	font-size: 0.85rem;
	font-weight: 300;
	line-height: 1.75;
	color: rgba(255, 255, 255, 0.5);
}

/* ================================================
   IMPACT
   ================================================ */

.evpms-impact {
	padding: 6.25rem 0;
}

.evpms-impact-intro {
	max-width: 46.875rem;
	margin: 0 auto 3.75rem;
	font-size: 1.1rem;
	font-weight: 300;
	line-height: 1.85;
	text-align: center;
	color: rgba(255, 255, 255, 0.6);
}

.evpms-impact-intro strong {
	font-weight: 600;
	color: var(--wp--preset--color--gold);
}

.evpwt-js .evpms-impact-intro {
	opacity: 0;
	transform: translateY(1.25rem);
	transition: opacity 0.7s ease, transform 0.7s ease;
}

.evpms-impact-intro.revealed {
	opacity: 1;
	transform: translateY(0);
}

.evpms-impact-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 1.25rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.evpms-impact-card {
	display: flex;
	flex-direction: column;
	overflow: clip;
	border: 1px solid rgba(212, 196, 168, 0.1);
	border-radius: 1.125rem;
	background: rgba(28, 22, 16, 0.97);
	transition: border-color 0.35s ease, transform 0.35s ease, box-shadow 0.35s ease;
}

.evpwt-js .evpms-impact-card {
	opacity: 0;
	transform: translateY(1.5rem);
	transition:
		opacity 0.7s ease calc( var( --ev-i, 0 ) * 0.15s ),
		transform 0.7s ease calc( var( --ev-i, 0 ) * 0.15s ),
		border-color 0.35s ease,
		box-shadow 0.35s ease;
}

.evpms-impact-grid.revealed .evpms-impact-card {
	opacity: 1;
	transform: translateY(0);
}

.evpms-impact-card:hover {
	border-color: rgba(184, 98, 27, 0.3);
	box-shadow: 0 1.125rem 3.125rem rgba(184, 98, 27, 0.12);
	transform: translateY(-0.25rem);
}

.evpms-impact-media {
	display: block;
	flex-shrink: 0;
	height: 12.5rem;
	background: rgba(255, 255, 255, 0.04);
}

.evpms-impact-img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
}

.evpms-impact-body {
	padding: 1.5rem 1.5rem 1.75rem;
}

.evpms-impact-title {
	margin: 0 0 0.75rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.15rem;
	font-weight: 500;
	line-height: 1.25;
	color: #fff;
}

.evpms-impact-desc {
	margin: 0;
	font-size: 0.85rem;
	font-weight: 300;
	line-height: 1.75;
	color: rgba(255, 255, 255, 0.5);
}

/* ================================================
   CLOSING CTA
   ================================================ */

.evpms-cta {
	padding: 6.25rem 0 7.5rem;
	text-align: center;
}

.evpms-cta-buttons {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 1rem;
}

.evpwt-js .evpms-cta-buttons {
	opacity: 0;
	transform: translateY(1.25rem);
	transition: opacity 0.7s ease, transform 0.7s ease;
}

.evpms-cta-buttons.revealed {
	opacity: 1;
	transform: translateY(0);
}

.evpms-btn {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: 0.625rem;
	overflow: clip;
	padding: 1rem 2.125rem;
	border-radius: 3.125rem;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	transition: transform 0.3s ease, box-shadow 0.3s ease, background-color 0.3s ease, color 0.3s ease;
	-webkit-tap-highlight-color: transparent;
}

.evpms-btn svg {
	width: 0.9375rem;
	height: 0.9375rem;
	stroke: currentColor;
	fill: none;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
	transition: transform 0.3s ease;
}

.evpms-btn:hover svg {
	transform: translateX(0.25rem);
}

.evpms-btn--primary {
	color: #fff;
	background: var(--wp--preset--color--rust);
	box-shadow: 0 0.5rem 1.75rem rgba(184, 98, 27, 0.4);
}

.evpms-btn--primary:hover {
	transform: translateY(-0.1875rem);
	box-shadow: 0 0.875rem 2.5rem rgba(184, 98, 27, 0.55);
}

.evpms-btn--secondary {
	color: var(--wp--preset--color--gold);
	border: 1px solid rgba(212, 196, 168, 0.35);
}

.evpms-btn--secondary:hover {
	color: var(--wp--preset--color--bg-deep);
	background: var(--wp--preset--color--gold);
	transform: translateY(-0.1875rem);
}

.evpms-btn:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 0.25rem;
}

/* ================================================
   1200 AND BELOW
   ================================================ */
@media (max-width: 1200px) {
	.evpms-statement-grid { gap: 2.5rem; }
	.evpms-pillar-body { padding: 1.5rem; }
}

/* ================================================
   1024 AND BELOW
   ================================================ */
@media (max-width: 1024px) {
	.evpms-hero { min-height: 60vh; padding: 8rem 1.25rem 4rem; }

	.evpms-statement-grid { grid-template-columns: minmax(0, 1fr); gap: 3rem; }

	.evpms-pillar-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.evpms-impact-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }

	.evpms-header { margin-bottom: 3.5rem; }
}

/* ================================================
   768 AND BELOW
   ================================================ */
@media (max-width: 768px) {
	.evpms-hero { padding: 7rem 1.25rem 3.5rem; }

	.evpms-statement,
	.evpms-pillars,
	.evpms-impact { padding: 4.5rem 0; }

	.evpms-cta { padding: 4.5rem 0 5.625rem; }

	.evpms-impact-grid { grid-template-columns: minmax(0, 1fr); }

	.evpms-quote::before { font-size: 4.5rem; top: -1.25rem; }

	.evpms-impact-intro { margin-bottom: 2.5rem; font-size: 1rem; }

	.evpms-btn { justify-content: center; width: 100%; max-width: 22rem; }
}

/* ================================================
   480 AND BELOW
   ================================================ */
@media (max-width: 480px) {
	.evpms-inner { padding: 0 1.125rem; }

	.evpms-hero { padding: 6.5rem 1.125rem 3rem; }
	.evpms-hero-inner { padding: 0; }

	.evpms-pillar-grid { grid-template-columns: minmax(0, 1fr); }

	.evpms-shots { grid-template-columns: minmax(0, 1fr); }
	.evpms-shot,
	.evpms-shot:first-child { height: 12.5rem; }

	.evpms-pillar-body { padding: 1.375rem; }
	.evpms-impact-body { padding: 1.375rem 1.25rem 1.5rem; }
}

/* ================================================
   360 AND BELOW
   ================================================ */
@media (max-width: 360px) {
	.evpms-hero-title { font-size: clamp(2rem, 11vw, 2.6rem); }
	.evpms-quote-text { font-size: 1.15rem; }
	.evpms-shot,
	.evpms-shot:first-child { height: 11rem; }
}

/* ================================================
   TOUCH DEVICES
   ================================================ */
@media (hover: none) {
	.evpms-pillar:hover,
	.evpms-impact-card:hover {
		border-color: rgba(212, 196, 168, 0.1);
		box-shadow: none;
		transform: none;
	}

	.evpms-btn--primary:hover {
		transform: none;
		box-shadow: 0 0.5rem 1.75rem rgba(184, 98, 27, 0.4);
	}

	.evpms-btn--secondary:hover {
		color: var(--wp--preset--color--gold);
		background: none;
		transform: none;
	}

	.evpms-btn:hover svg { transform: none; }
	.evpms-btn:active { transform: scale(0.98); transition: transform 0.15s ease; }
}

/* ================================================
   REDUCED MOTION

   SCOPED TO THIS PAGE. The capture ended with a universal
   *, *::before, *::after rule carrying !important and no scoping.
   Harmless in a standalone document; in a theme stylesheet it would
   have killed every animation and transition on every page for any
   visitor with reduced motion set, including the components that
   already handle it properly.
   ================================================ */
@media (prefers-reduced-motion: reduce) {
	.evpms-hero-eyebrow,
	.evpms-hero-title,
	.evpms-hero-subtitle {
		opacity: 1;
		transform: none;
		animation: none;
	}

	.evpms-rule-diamond { animation: none; }

	.evpwt-js .evpms-eyebrow,
	.evpwt-js .evpms-title,
	.evpwt-js .evpms-rule,
	.evpwt-js .evpms-subtitle,
	.evpwt-js .evpms-quote,
	.evpwt-js .evpms-shots,
	.evpwt-js .evpms-pillar,
	.evpwt-js .evpms-impact-intro,
	.evpwt-js .evpms-impact-card,
	.evpwt-js .evpms-cta-buttons {
		opacity: 1;
		transform: none;
		transition: none;
	}

	.evpms-highlight::after { width: 100%; transition: none; }

	.evpms-pillar,
	.evpms-impact-card,
	.evpms-btn,
	.evpms-btn svg { transition: none; }
}



/* ================================================
   CUSTOMER SERVICE EXCELLENCE PAGE

   Ported from salvage/service-excellence-page/RECOVERED-service-excellence-page.html,
   built 8 February 2026 and never published.

   THE NAMESPACE. The capture's own recovery notes call it the worst on
   the project and they are right: .container, .highlight, .quote,
   .btn-primary, .section-header, .line, .diamond, .card-title, .author
   and two dozen more, all unscoped, several of them written as
   descendant selectors so they only looked scoped. Every one of them
   is evpse- here. Nothing in this block can match anything outside the
   page.

   THE REDUCED MOTION RULE. The capture ended with

       @media (prefers-reduced-motion: reduce) {
           *, *::before, *::after { ... !important }
       }

   Harmless in a standalone document. Dropped into a theme stylesheet
   it would have killed every animation and transition on every page
   for any visitor with reduced motion set, including the components
   that already handle it properly. The version at the bottom of this
   block names this page's elements and carries no !important.

   IT WAS A LIGHT PAGE AND IT IS DARK NOW, ALTERNATING.

   The capture alternated a cream (#F5F3EF to #E8E4DC) against a near
   black (#1a1a1a to #2d2d2d), section by section, and the alternation
   is doing real work: it separates the three phases so they read as
   three, and it lands the commitments on their own ground. Flattening
   it to one colour would lose that.

   So the alternation is kept and the palette is the site's: the deep
   ground for the odd sections, a raised #181818 for the even ones,
   which is the same pair the mission page uses. Cream against near
   black becomes raised against deep. The header and footer are dark on
   every route, so cream sections here would have read as a rendering
   fault rather than a design.

   The shared testimonials part sits between the commitments and the
   closing CTA and paints its own deep ground, which is why the
   commitments are raised and the CTA is raised: the rhythm still
   alternates across the part this page does not own.

   ONE BREAKPOINT LADDER, 1200 / 1024 / 768 / 480 / 360. The capture
   had 1024 / 900 / 768 / 480, where 900 existed only for the
   testimonials component that is not here any more.

   STAGGERS USE --ev-i, an index the template sets on each card. The
   capture used nth-child hardcoded to five cards per grid and six
   commitment items, so a sixth card would have appeared with no delay.

   THE GRAIN TEXTURE was five inline SVG data URIs with five different
   pattern ids, one per section. One rule now, on one class.

   THE FLOATING LINE DRAWINGS were eight full copies of the same two
   SVGs, redrawn at each section with different stroke colours. One
   <symbol> each in parts/service-icons.php, coloured here through
   currentColor.
   ================================================ */

.ev-service-page,
.ev-service-page *,
.ev-service-page *::before,
.ev-service-page *::after {
	box-sizing: border-box;
}

.ev-service-page {
	font-family: var(--wp--preset--font-family--montserrat);
	color: #fff;
	background: var(--wp--preset--color--bg-deep);
}

.ev-service-page a {
	text-decoration: none;
}

.evpse-sprite {
	position: absolute;
	width: 0;
	height: 0;
	overflow: hidden;
}

/* The two grounds the section rhythm alternates between. */
.evpse-philosophy,
.evpse-phase--raised,
.evpse-commitments,
.evpse-cta {
	background: #181818;
}

.evpse-phase--deep {
	background: var(--wp--preset--color--bg-deep);
}

.evpse-philosophy,
.evpse-phase,
.evpse-commitments,
.evpse-cta {
	position: relative;
	overflow: clip;
}

/*
   The grain. One rule, one data URI, replacing five that differed only
   in the pattern id they declared and then never reused.
*/
.evpse-philosophy::before,
.evpse-phase::before,
.evpse-commitments::before,
.evpse-cta::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 0;
	pointer-events: none;
	opacity: 0.5;
	background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><circle cx="25" cy="25" r="0.5" fill="%23fff" opacity="0.03"/><circle cx="75" cy="75" r="0.3" fill="%23fff" opacity="0.02"/></svg>') repeat;
}

.evpse-inner {
	position: relative;
	z-index: 2;
	max-width: 75rem;
	margin: 0 auto;
	padding: 0 2.5rem;
}

.evpse-inner--narrow {
	max-width: 53.125rem;
}

@keyframes evpseFadeUp {
	from { opacity: 0; transform: translateY(1.875rem); }
	to   { opacity: 1; transform: translateY(0); }
}

@keyframes evpseFloatRotate {
	0%, 100% { transform: translateY(0) rotate(0deg); }
	50%      { transform: translateY(-1.25rem) rotate(8deg); }
}

@keyframes evpseFloatSway {
	0%, 100% { transform: translateX(0); }
	50%      { transform: translateX(0.75rem); }
}

@keyframes evpseDiamond {
	0%, 100% { transform: rotate(45deg) scale(1); opacity: 1; }
	50%      { transform: rotate(45deg) scale(1.2); opacity: 0.7; }
}

/* ================================================
   FLOATING LINE DRAWINGS

   Decoration. aria-hidden in the markup, pointer-events none here, and
   hidden outright below 768 where there is no margin for them to sit
   in.
   ================================================ */

.evpse-float {
	position: absolute;
	z-index: 1;
	pointer-events: none;
	color: var(--wp--preset--color--gold);
	opacity: 0.07;
}

.evpse-float--compass {
	top: 10%;
	right: 5%;
	width: 6.875rem;
	height: 6.875rem;
	animation: evpseFloatRotate 20s ease-in-out infinite;
}

.evpse-float--globe {
	bottom: 15%;
	left: 4%;
	width: 5.625rem;
	height: 5.625rem;
	animation: evpseFloatSway 18s ease-in-out infinite;
}

.evpse-phase--raised .evpse-float {
	color: var(--wp--preset--color--rust);
	opacity: 0.1;
}

/* ================================================
   HERO
   ================================================ */

.evpse-hero {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 70vh;
	padding: 9rem 1.25rem 5rem;
	overflow: clip;
	text-align: center;
	background: var(--wp--preset--color--bg-deep);
}

.evpse-hero-img {
	position: absolute;
	inset: 0;
	z-index: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
}

/*
   The capture stacked a gradient and an inset box-shadow vignette as
   two absolutely positioned elements. One element, both effects: the
   shadow needs a box and the gradient needs a background, and a single
   span can carry each.
*/
.evpse-hero-scrim {
	position: absolute;
	inset: 0;
	z-index: 1;
	pointer-events: none;
	background: linear-gradient(180deg, rgba(17, 16, 16, 0.55) 0%, rgba(17, 16, 16, 0.7) 50%, rgba(17, 16, 16, 0.85) 100%);
	box-shadow: inset 0 0 9.375rem rgba(0, 0, 0, 0.4);
}

.evpse-hero .evpse-float {
	z-index: 2;
	opacity: 0.1;
}

.evpse-hero .evpse-float--compass {
	top: 15%;
	right: 8%;
	width: 7.5rem;
	height: 7.5rem;
}

.evpse-hero .evpse-float--globe {
	bottom: 20%;
	left: 6%;
	width: 6.25rem;
	height: 6.25rem;
}

.evpse-hero-inner {
	position: relative;
	z-index: 3;
	max-width: 56.25rem;
	padding: 0 1.25rem;
}

.evpse-hero-eyebrow {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.9375rem;
	margin: 0 0 1.5625rem;
	opacity: 0;
	animation: evpseFadeUp 0.8s ease 0.2s forwards;
}

.evpse-hero-eyebrow-line {
	width: 2.5rem;
	height: 1px;
	background: var(--wp--preset--color--gold);
}

.evpse-hero-eyebrow-text {
	font-size: 0.75rem;
	font-weight: 600;
	letter-spacing: 0.25em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evpse-hero-title {
	margin: 0;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2.4rem, 5vw, 4rem);
	font-weight: 400;
	line-height: 1.2;
	color: #fff;
	text-wrap: balance;
	opacity: 0;
	animation: evpseFadeUp 0.8s ease 0.4s forwards;
}

.evpse-hero-title .evpse-highlight {
	color: var(--wp--preset--color--gold);
}

/* The hero highlight is colour only, with no underline to draw. */
.evpse-hero-title .evpse-highlight::after {
	content: none;
}

/* ================================================
   PHILOSOPHY
   ================================================ */

.evpse-philosophy {
	padding: 5rem 0;
}

.evpse-philosophy-text {
	margin: 0;
	font-size: 1.15rem;
	font-weight: 300;
	line-height: 1.9;
	text-align: center;
	color: rgba(255, 255, 255, 0.7);
}

.evpwt-js .evpse-philosophy-text {
	opacity: 0;
	transform: translateY(1.875rem);
	transition: opacity 0.8s ease, transform 0.8s ease;
}

.evpse-philosophy-text.revealed {
	opacity: 1;
	transform: translateY(0);
}

/* ================================================
   SHARED SECTION HEADER
   ================================================ */

.evpse-header {
	margin-bottom: 4.375rem;
	text-align: center;
}

.evpse-cta .evpse-header {
	margin-bottom: 2.5rem;
}

.evpse-eyebrow {
	display: block;
	margin: 0 0 1.25rem;
	font-size: 0.75rem;
	font-weight: 600;
	letter-spacing: 0.25em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.evpse-phase--raised .evpse-eyebrow,
.evpse-commitments .evpse-eyebrow {
	color: var(--wp--preset--color--rust);
}

.evpwt-js .evpse-eyebrow {
	opacity: 0;
	transform: translateY(1.25rem);
	transition: opacity 0.6s ease, transform 0.6s ease;
}

.evpse-header.revealed .evpse-eyebrow {
	opacity: 1;
	transform: translateY(0);
}

.evpse-title {
	margin: 0 0 1.5625rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: clamp(2rem, 3.5vw, 3rem);
	font-weight: 400;
	line-height: 1.2;
	color: #fff;
	text-wrap: balance;
	isolation: isolate;
}

.evpwt-js .evpse-title {
	opacity: 0;
	transform: translateY(1.875rem);
	transition: opacity 0.8s ease 0.1s, transform 0.8s ease 0.1s;
}

.evpse-header.revealed .evpse-title {
	opacity: 1;
	transform: translateY(0);
}

/*
   THE UNDERLINE SITS BEHIND THE WORD, NOT BEHIND THE SECTION. The
   capture used z-index -1, which on a section that paints its own
   background puts the underline behind that background and makes it
   invisible. A positioned ::after at z-index 0 under text at z-index 1
   does the same job inside the heading's own stacking context.
*/
.evpse-highlight {
	position: relative;
	z-index: 1;
	color: var(--wp--preset--color--gold);
}

.evpse-phase--raised .evpse-highlight,
.evpse-commitments .evpse-highlight,
.evpse-cta .evpse-highlight {
	color: var(--wp--preset--color--rust);
}

.evpse-highlight::after {
	content: "";
	position: absolute;
	bottom: 0.3125rem;
	left: 0;
	z-index: 0;
	width: 0;
	height: 0.5rem;
	background: rgba(184, 98, 27, 0.4);
	transition: width 0.8s ease 0.6s;
}

.evpse-phase--raised .evpse-highlight::after,
.evpse-commitments .evpse-highlight::after,
.evpse-cta .evpse-highlight::after {
	background: rgba(212, 196, 168, 0.3);
}

.evpse-header.revealed .evpse-highlight::after {
	width: 100%;
}

.evpse-rule {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 1.25rem;
	margin-bottom: 1.875rem;
	-webkit-user-select: none;
	user-select: none;
}

.evpwt-js .evpse-rule {
	opacity: 0;
	transition: opacity 0.6s ease 0.3s;
}

.evpse-header.revealed .evpse-rule {
	opacity: 1;
}

.evpse-rule-line {
	width: 3.75rem;
	height: 1px;
	background: linear-gradient(90deg, transparent, var(--wp--preset--color--gold), transparent);
}

.evpse-rule-diamond {
	width: 0.5rem;
	height: 0.5rem;
	background: var(--wp--preset--color--gold);
	transform: rotate(45deg);
	animation: evpseDiamond 2s ease-in-out infinite;
}

.evpse-phase--raised .evpse-rule-line,
.evpse-commitments .evpse-rule-line {
	background: linear-gradient(90deg, transparent, var(--wp--preset--color--rust), transparent);
}

.evpse-phase--raised .evpse-rule-diamond,
.evpse-commitments .evpse-rule-diamond {
	background: var(--wp--preset--color--rust);
}

.evpse-intro {
	max-width: 43.75rem;
	margin: 0 auto;
	font-size: 1.15rem;
	font-weight: 300;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.6);
}

.evpwt-js .evpse-intro {
	opacity: 0;
	transform: translateY(1.25rem);
	transition: opacity 0.6s ease 0.4s, transform 0.6s ease 0.4s;
}

.evpse-header.revealed .evpse-intro {
	opacity: 1;
	transform: translateY(0);
}

/* ================================================
   PHASE CARDS
   ================================================ */

.evpse-phase {
	padding: 6.25rem 0;
}

.evpse-cards {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(19rem, 1fr));
	gap: 1.875rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.evpse-card,
.evpse-commit {
	position: relative;
	overflow: clip;
	border-radius: 1.5rem;
	transition: transform 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94), border-color 0.5s ease, box-shadow 0.5s ease;
}

.evpse-card {
	padding: 2.5rem 2.1875rem;
	border: 1px solid rgba(212, 196, 168, 0.12);
	background: rgba(255, 255, 255, 0.04);
}

.evpse-phase--raised .evpse-card {
	border-color: rgba(184, 98, 27, 0.16);
	background: rgba(28, 22, 16, 0.7);
}

.evpwt-js .evpse-card {
	opacity: 0;
	transform: translateY(2.5rem);
	/* The stagger, from the index the template sets. */
	transition:
		opacity 0.7s ease calc( var( --ev-i, 0 ) * 0.08s ),
		transform 0.7s ease calc( var( --ev-i, 0 ) * 0.08s ),
		border-color 0.5s ease,
		box-shadow 0.5s ease;
}

.evpse-cards.revealed .evpse-card {
	opacity: 1;
	transform: translateY(0);
}

/* The hover wash. One rule for both card kinds. */
.evpse-card::before,
.evpse-commit::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 0;
	pointer-events: none;
	opacity: 0;
	background: linear-gradient(135deg, rgba(212, 196, 168, 0.1), rgba(184, 98, 27, 0.05));
	transition: opacity 0.4s ease;
}

.evpse-card:hover::before,
.evpse-commit:hover::before {
	opacity: 1;
}

.evpse-card:hover {
	transform: translateY(-0.5rem);
	border-color: rgba(212, 196, 168, 0.25);
	box-shadow: 0 1.25rem 3.125rem rgba(0, 0, 0, 0.3);
}

.evpse-phase--raised .evpse-card:hover {
	border-color: rgba(184, 98, 27, 0.3);
	box-shadow: 0 1.25rem 3.125rem rgba(184, 98, 27, 0.14);
}

.evpse-card-icon,
.evpse-commit-icon {
	position: relative;
	z-index: 1;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 3.125rem;
	height: 3.125rem;
	border-radius: 0.875rem;
	background: rgba(212, 196, 168, 0.12);
}

.evpse-card-icon {
	margin-bottom: 1.375rem;
}

.evpse-phase--raised .evpse-card-icon,
.evpse-commit-icon {
	background: rgba(184, 98, 27, 0.14);
}

.evpse-card-icon svg,
.evpse-commit-icon svg {
	width: 1.5rem;
	height: 1.5rem;
	fill: var(--wp--preset--color--gold);
}

.evpse-phase--raised .evpse-card-icon svg,
.evpse-commit-icon svg {
	fill: var(--wp--preset--color--rust);
}

.evpse-card-title {
	position: relative;
	z-index: 1;
	margin: 0 0 0.9375rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.35rem;
	font-weight: 500;
	line-height: 1.3;
	color: #fff;
}

.evpse-card-text {
	position: relative;
	z-index: 1;
	margin: 0;
	font-size: 0.95rem;
	font-weight: 300;
	line-height: 1.8;
	color: rgba(255, 255, 255, 0.62);
}

/* ================================================
   COMMITMENTS
   ================================================ */

.evpse-commitments {
	padding: 6.25rem 0;
}

.evpse-commit-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 1.875rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.evpse-commit {
	padding: 2.1875rem 1.875rem;
	border: 1px solid rgba(184, 98, 27, 0.16);
	background: rgba(28, 22, 16, 0.9);
	text-align: center;
}

.evpwt-js .evpse-commit {
	opacity: 0;
	transform: translateY(2.5rem);
	transition:
		opacity 0.7s ease calc( var( --ev-i, 0 ) * 0.06s ),
		transform 0.7s ease calc( var( --ev-i, 0 ) * 0.06s ),
		border-color 0.5s ease,
		box-shadow 0.5s ease;
}

.evpse-commit-grid.revealed .evpse-commit {
	opacity: 1;
	transform: translateY(0);
}

.evpse-commit:hover {
	transform: translateY(-0.5rem);
	border-color: rgba(184, 98, 27, 0.3);
	box-shadow: 0 1.5625rem 3.75rem rgba(184, 98, 27, 0.14);
}

.evpse-commit-icon {
	margin: 0 auto 1.25rem;
}

.evpse-commit-title {
	position: relative;
	z-index: 1;
	margin: 0 0 0.75rem;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 1.2rem;
	font-weight: 500;
	line-height: 1.3;
	color: #fff;
}

.evpse-commit-text {
	position: relative;
	z-index: 1;
	margin: 0;
	font-size: 0.93rem;
	font-weight: 300;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.6);
}

/* ================================================
   CLOSING CTA
   ================================================ */

.evpse-cta {
	padding: 6.25rem 0;
	text-align: center;
}

.evpse-cta-buttons {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 1.25rem;
}

.evpwt-js .evpse-cta-buttons {
	opacity: 0;
	transform: translateY(1.25rem);
	transition: opacity 0.7s ease, transform 0.7s ease;
}

.evpse-cta-buttons.revealed {
	opacity: 1;
	transform: translateY(0);
}

.evpse-btn {
	display: inline-flex;
	align-items: center;
	gap: 0.625rem;
	padding: 1rem 2.25rem;
	border-radius: 3.125rem;
	font-size: 0.9rem;
	font-weight: 600;
	letter-spacing: 0.03em;
	transition: transform 0.4s ease, box-shadow 0.4s ease, background-color 0.4s ease, border-color 0.4s ease, color 0.4s ease;
	-webkit-tap-highlight-color: transparent;
}

.evpse-btn svg {
	width: 1rem;
	height: 1rem;
	fill: currentColor;
	transition: transform 0.3s ease;
}

.evpse-btn:hover svg {
	transform: translateX(0.25rem);
}

.evpse-btn--primary {
	color: #fff;
	background: var(--wp--preset--color--rust);
	box-shadow: 0 0.5rem 1.5625rem rgba(184, 98, 27, 0.35);
}

.evpse-btn--primary:hover {
	transform: translateY(-0.1875rem);
	box-shadow: 0 0.75rem 2.1875rem rgba(184, 98, 27, 0.5);
}

.evpse-btn--secondary {
	color: var(--wp--preset--color--gold);
	border: 2px solid rgba(212, 196, 168, 0.35);
}

.evpse-btn--secondary:hover {
	color: var(--wp--preset--color--bg-deep);
	background: var(--wp--preset--color--gold);
	border-color: var(--wp--preset--color--gold);
	transform: translateY(-0.1875rem);
}

.evpse-btn:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 0.25rem;
}

/* ================================================
   1200 AND BELOW
   ================================================ */
@media (max-width: 1200px) {
	.evpse-card { padding: 2.1875rem 1.875rem; }
	.evpse-inner { padding: 0 2rem; }
}

/* ================================================
   1024 AND BELOW
   ================================================ */
@media (max-width: 1024px) {
	.evpse-hero { min-height: 60vh; padding: 8rem 1.25rem 4rem; }

	.evpse-commit-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }

	.evpse-header { margin-bottom: 3.5rem; }

	.evpse-phase,
	.evpse-commitments,
	.evpse-cta { padding: 5rem 0; }
}

/* ================================================
   768 AND BELOW
   ================================================ */
@media (max-width: 768px) {
	.evpse-hero { min-height: 55vh; padding: 7rem 1.25rem 3.5rem; }

	.evpse-inner { padding: 0 1.5625rem; }

	.evpse-philosophy { padding: 3.75rem 0; }
	.evpse-philosophy-text { font-size: 1.05rem; }

	.evpse-phase,
	.evpse-commitments,
	.evpse-cta { padding: 4.375rem 0; }

	.evpse-header { margin-bottom: 3.125rem; }

	.evpse-cards { grid-template-columns: minmax(0, 1fr); gap: 1.25rem; }
	.evpse-commit-grid { grid-template-columns: minmax(0, 1fr); gap: 1.25rem; }

	.evpse-card { padding: 1.875rem 1.5625rem; }

	/* No margin for them to float in at this width. */
	.evpse-float { display: none; }
}

/* ================================================
   480 AND BELOW
   ================================================ */
@media (max-width: 480px) {
	.evpse-hero { min-height: 50vh; padding: 6.5rem 1.125rem 3rem; }
	.evpse-hero-inner { padding: 0; }
	.evpse-hero-eyebrow-line { width: 1.75rem; }

	.evpse-inner { padding: 0 1.125rem; }

	.evpse-philosophy { padding: 3.125rem 0; }
	.evpse-philosophy-text { font-size: 1rem; line-height: 1.8; }

	.evpse-phase,
	.evpse-commitments,
	.evpse-cta { padding: 3.5rem 0; }

	.evpse-header { margin-bottom: 2.1875rem; }
	.evpse-intro { font-size: 1rem; }

	.evpse-card { padding: 1.5625rem 1.25rem; }
	.evpse-card-title { font-size: 1.2rem; }
	.evpse-card-text { font-size: 0.9rem; }

	.evpse-commit { padding: 1.5625rem 1.25rem; }

	.evpse-btn { justify-content: center; width: 100%; max-width: 22rem; }
}

/* ================================================
   360 AND BELOW
   ================================================ */
@media (max-width: 360px) {
	.evpse-hero-title { font-size: clamp(1.9rem, 10vw, 2.4rem); }
	.evpse-hero-eyebrow { gap: 0.625rem; }
	.evpse-hero-eyebrow-text { font-size: 0.7rem; letter-spacing: 0.2em; }
	.evpse-card-icon,
	.evpse-commit-icon { width: 2.75rem; height: 2.75rem; }
}

/* ================================================
   TOUCH DEVICES
   ================================================ */
@media (hover: none) {
	.evpse-card:hover,
	.evpse-commit:hover {
		transform: none;
		box-shadow: none;
	}

	.evpse-card:hover::before,
	.evpse-commit:hover::before { opacity: 0; }

	.evpse-phase--deep .evpse-card:hover { border-color: rgba(212, 196, 168, 0.12); }
	.evpse-phase--raised .evpse-card:hover,
	.evpse-commit:hover { border-color: rgba(184, 98, 27, 0.16); }

	.evpse-btn--primary:hover {
		transform: none;
		box-shadow: 0 0.5rem 1.5625rem rgba(184, 98, 27, 0.35);
	}

	.evpse-btn--secondary:hover {
		color: var(--wp--preset--color--gold);
		background: none;
		border-color: rgba(212, 196, 168, 0.35);
		transform: none;
	}

	.evpse-btn:hover svg { transform: none; }
	.evpse-btn:active { transform: scale(0.98); transition: transform 0.15s ease; }
}

/* ================================================
   REDUCED MOTION

   SCOPED TO THIS PAGE. See the note at the top of this block for what
   the capture had here and why it could not be ported.
   ================================================ */
@media (prefers-reduced-motion: reduce) {
	.evpse-hero-eyebrow,
	.evpse-hero-title {
		opacity: 1;
		transform: none;
		animation: none;
	}

	.evpse-float,
	.evpse-rule-diamond { animation: none; }

	.evpwt-js .evpse-philosophy-text,
	.evpwt-js .evpse-eyebrow,
	.evpwt-js .evpse-title,
	.evpwt-js .evpse-rule,
	.evpwt-js .evpse-intro,
	.evpwt-js .evpse-card,
	.evpwt-js .evpse-commit,
	.evpwt-js .evpse-cta-buttons {
		opacity: 1;
		transform: none;
		transition: none;
	}

	.evpse-highlight::after { width: 100%; transition: none; }

	.evpse-card,
	.evpse-commit,
	.evpse-card::before,
	.evpse-commit::before,
	.evpse-btn,
	.evpse-btn svg { transition: none; }
}
