/*
Theme Name: Galápagos Redefined Travels
Theme URI: https://galapagosredefinedtravels.com
Author: LOSTOVA
Description: Thème sur-mesure pour Galápagos Redefined Travels — croisières de luxe aux Galápagos. Direction artistique "Naturalist Elegance".
Version: 0.2.0
Requires at least: 6.4
Requires PHP: 8.0
Text Domain: galapagos-redefined-travels
*/

:root {
	--color-ivory: #FAF8F5;
	--color-paper: #F3EFE7;
	--color-forest: #1F3D2B;
	--color-forest-dark: #16291D;
	--color-ocean: #4A6B7A;
	--color-terracotta: #C17F52;
	--color-terracotta-soft: #E0B594;
	--color-terracotta-dark: #7A3F24;
	--color-ink: #23241F;
	--color-ink-soft: #55564E;
	--color-border: #E4DFD5;

	--font-serif: "Playfair Display", Georgia, "Times New Roman", serif;
	--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;

	--space-xs: 0.5rem;
	--space-sm: 1rem;
	--space-md: 2rem;
	--space-lg: 5.5rem;
	--space-xl: 11rem;

	--container-max: 1400px;
	--measure: 68ch;
}

* {
	box-sizing: border-box;
}

html {
	scroll-behavior: smooth;
}

body {
	margin: 0;
	background-color: var(--color-ivory);
	color: var(--color-ink);
	font-family: var(--font-sans);
	font-size: 1.05rem;
	line-height: 1.7;
	-webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4 {
	font-family: var(--font-serif);
	font-weight: 500;
	line-height: 1.1;
	letter-spacing: -0.01em;
	color: var(--color-forest);
	margin: 0 0 var(--space-sm);
	text-wrap: balance;
}

h1 { font-size: clamp(2.4rem, 5.4vw, 4.6rem); font-weight: 400; }
h2 { font-size: clamp(1.7rem, 2.8vw, 2.4rem); font-weight: 400; }
h3 { font-size: 1.15rem; letter-spacing: 0; }

/* No blanket max-width on every <p> — it was silently capping paragraph
   width to ~60ch everywhere (FAQ answers, static pages) regardless of how
   wide their container actually was, which is why widening a page's
   container alone didn't visibly change anything. --measure is now applied
   only where a narrow reading column is actually wanted (long-form blog
   articles), scoped below. */

a {
	color: var(--color-forest);
}

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

.container {
	max-width: var(--container-max);
	margin-inline: auto;
	padding-inline: var(--space-md);
}

@media (max-width: 782px) {
	.container { padding-inline: var(--space-sm); }
	h1 { font-size: clamp(2.1rem, 9vw, 3rem); }
}

/* --- Editorial vocabulary shared across sections --- */

.kicker {
	display: block;
	font-family: var(--font-sans);
	font-size: 0.72rem;
	font-weight: 500;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--color-terracotta);
	margin-bottom: 1.1rem;
}

.kicker::before {
	content: "";
	display: inline-block;
	width: 28px;
	height: 1px;
	background: var(--color-terracotta);
	margin-right: 0.9em;
	vertical-align: middle;
	transform: translateY(-2px);
}

.hairline {
	border: none;
	border-top: 1px solid var(--color-border);
	margin: 0;
}

.index-number {
	font-family: var(--font-serif);
	font-size: 1rem;
	color: var(--color-terracotta);
	letter-spacing: 0.05em;
}

.lede {
	font-family: var(--font-serif);
	font-style: italic;
	font-size: clamp(1.3rem, 2vw, 1.65rem);
	line-height: 1.55;
	color: var(--color-forest);
	font-weight: 400;
	max-width: 34ch;
}

/* --- Buttons / links --- */

.btn-primary {
	display: inline-block;
	background-color: transparent;
	color: var(--color-terracotta);
	font-family: var(--font-sans);
	letter-spacing: 0.1em;
	text-transform: uppercase;
	font-size: 0.72rem;
	font-weight: 500;
	padding-bottom: 0.4em;
	border: none;
	border-bottom: 1px solid currentColor;
	text-decoration: none;
	opacity: 0.85;
	transition: opacity 0.3s ease;
}

.btn-primary:hover {
	opacity: 1;
}

.btn-primary--invert {
	color: var(--color-terracotta-soft);
}

/* --- Glass (glassmorphism) CTA — the one prominent, pill-shaped button used
   for the primary "Découvrir les croisières" call to action, over the hero
   and the closing CTA block. Everywhere else stays the quiet text-link
   style above; this one is deliberately a moment of presence. --- */
.btn-glass {
	display: inline-flex;
	align-items: center;
	gap: 0.6em;
	/* A near-opaque gradient, not a light tint: over a photo/video this still
	   reads as glass (blur + bright edge + sheen), but unlike a low-opacity
	   fill it stays reliably green even over a solid, non-neutral background
	   (e.g. the terracotta-dark CTA block), where a 30-40% tint just blends
	   into whatever colour sits behind it. */
	background: linear-gradient(135deg, rgba(31, 61, 43, 0.94), rgba(22, 41, 29, 0.88));
	backdrop-filter: blur(12px);
	-webkit-backdrop-filter: blur(12px);
	border: 1px solid rgba(255, 255, 255, 0.4);
	border-radius: 999px;
	color: var(--color-ivory);
	font-family: var(--font-sans);
	font-size: 0.78rem;
	font-weight: 500;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	text-decoration: none;
	padding: 0.95em 2em;
	box-shadow: 0 4px 24px rgba(0, 0, 0, 0.25), inset 0 1px 0 rgba(255, 255, 255, 0.2);
	transition: background 0.3s ease, border-color 0.3s ease, transform 0.3s ease;
}

.btn-glass:hover {
	background: linear-gradient(135deg, rgba(41, 78, 55, 0.96), rgba(31, 61, 43, 0.92));
	border-color: rgba(255, 255, 255, 0.6);
	transform: translateY(-1px);
}

/* --- Site header --- */

/* Solid, legible header by default on every page — the transparent overlay
   look further down is deliberately scoped to the front page's hero only.
   (An earlier version made transparent-over-dark-hero the default everywhere,
   which made the nav unreadable on every page that doesn't have a dark hero
   under it — i.e. every page except the homepage.) */
/* Keep the fixed header below the wp-admin toolbar for logged-in previews
   (Val checking the live site while signed in) — WP's admin bar is 32px
   tall above 782px and 46px below it, and without this the two fixed bars
   overlap and fight for the same vertical space. Anonymous visitors never
   see the admin bar, so this has no effect on the real front-end audience. */
body.admin-bar .site-header {
	top: 32px;
}

@media (max-width: 782px) {
	body.admin-bar .site-header {
		top: 46px;
	}
}

.site-header {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	z-index: 50;
	padding: 1rem 0;
	background-color: rgba(250, 248, 245, 0.92);
	backdrop-filter: blur(6px);
	box-shadow: 0 1px 0 var(--color-border);
	transition: padding 0.4s ease, background-color 0.4s ease, box-shadow 0.4s ease;
}

.site-header .container {
	display: flex;
	align-items: center;
	justify-content: space-between;
}

.site-header__logo {
	position: relative;
	display: inline-flex;
	align-items: center;
	text-decoration: none;
}

/* The wordmark logo (icon + script "Redefined") replaces the old icon+text
   lockup. !important survives WooCommerce's ".woocommerce img { max-width:
   100%; height: auto }" overriding this back to the file's native size on
   shop/product pages — the same fix the old icon needed. Two color variants
   (forest for the normal solid header, ivory for the transparent-over-hero
   state) are stacked and cross-faded via opacity rather than swapped with
   JS, mirroring how the old text logo just changed color via CSS. */
.site-header__wordmark {
	height: 42px !important;
	width: auto !important;
	max-width: none !important;
	display: block;
}

.site-header__wordmark--light {
	position: absolute;
	top: 0;
	left: 0;
	opacity: 0;
	transition: opacity 0.4s ease;
}

@media (max-width: 400px) {
	.site-header__wordmark { height: 32px !important; }
}

.primary-menu {
	display: flex;
	gap: 1.6rem;
	margin: 0;
	padding: 0;
	list-style: none;
	flex-wrap: wrap;
	justify-content: flex-end;
}

.primary-menu a {
	color: var(--color-forest);
	font-size: 0.72rem;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	text-decoration: none;
	opacity: 0.8;
	transition: color 0.4s ease, opacity 0.3s ease;
	white-space: nowrap;
}

.primary-menu a:hover {
	opacity: 1;
}

.primary-menu .menu-item--cta a {
	opacity: 1;
	color: var(--color-forest);
	font-weight: 600;
	border: 1px solid currentColor;
	border-radius: 999px;
	padding: 0.5em 1.1em;
}

@media (max-width: 1100px) {
	.primary-menu { display: none; }
}

/* --- Dropdown sub-menus (Vessels, Plan Your Trip) — desktop hover --- */

.primary-menu li {
	position: relative;
}

.primary-menu .sub-menu {
	display: none;
	position: absolute;
	top: 100%;
	left: 0;
	margin: 0;
	padding: 0.5rem 0;
	list-style: none;
	min-width: 190px;
	background-color: rgba(250, 248, 245, 0.98);
	backdrop-filter: blur(6px);
	box-shadow: 0 12px 28px rgba(0, 0, 0, 0.12);
	z-index: 60;
}

.primary-menu li:hover > .sub-menu,
.primary-menu li:focus-within > .sub-menu {
	display: block;
}

.primary-menu .sub-menu a {
	display: block;
	padding: 0.65em 1.3em;
	white-space: nowrap;
	color: var(--color-forest) !important;
	opacity: 1 !important;
}

.primary-menu .sub-menu a:hover {
	background-color: var(--color-paper);
}

/* A parent item with children is a hover trigger, not a real destination
   (its link is "#") — a small chevron signals that instead of pretending
   it goes somewhere. */
.primary-menu li:has(> .sub-menu) > a::after {
	content: "";
	display: inline-block;
	width: 5px;
	height: 5px;
	border-right: 1px solid currentColor;
	border-bottom: 1px solid currentColor;
	transform: rotate(45deg);
	margin-left: 0.5em;
	opacity: 0.6;
}

/* --- Mobile menu: hamburger toggle + full-width dropdown panel --- */

.mobile-menu-toggle {
	display: none;
	flex-direction: column;
	justify-content: center;
	gap: 5px;
	width: 32px;
	height: 32px;
	background: none;
	border: none;
	padding: 0;
	cursor: pointer;
}

.mobile-menu-toggle span {
	display: block;
	width: 100%;
	height: 2px;
	background: var(--color-forest);
	transition: background 0.4s ease, transform 0.3s ease, opacity 0.3s ease;
}

body.home .site-header:not(.is-scrolled) .mobile-menu-toggle span {
	background: var(--color-ivory);
}

.mobile-menu-toggle.is-open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.mobile-menu-toggle.is-open span:nth-child(2) { opacity: 0; }
.mobile-menu-toggle.is-open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
.mobile-menu-toggle.is-open span { background: var(--color-forest) !important; }

@media (max-width: 1100px) {
	.mobile-menu-toggle { display: flex; }
}

.mobile-menu {
	display: none;
	max-height: 0;
	overflow: hidden;
	background-color: rgba(250, 248, 245, 0.98);
	backdrop-filter: blur(6px);
	transition: max-height 0.35s ease;
}

@media (max-width: 1100px) {
	.mobile-menu { display: block; }
}

.mobile-menu.is-open {
	max-height: 80vh;
	overflow-y: auto;
	box-shadow: 0 8px 16px rgba(0, 0, 0, 0.08);
}

.mobile-menu__list {
	list-style: none;
	margin: 0;
	padding: var(--space-sm) var(--space-md) var(--space-md);
	display: flex;
	flex-direction: column;
}

.mobile-menu__list a {
	display: block;
	padding: 0.85em 0;
	border-bottom: 1px solid var(--color-border);
	color: var(--color-forest);
	font-size: 0.85rem;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	text-decoration: none;
}

.mobile-menu__list .menu-item--cta a {
	color: var(--color-terracotta);
	font-weight: 600;
}

/* Sub-menus (Vessels, Plan Your Trip) render inline, always expanded — no
   hover on touch, so a second tap-to-expand interaction isn't worth adding. */
.mobile-menu__list .sub-menu {
	list-style: none;
	margin: 0 0 0 1rem;
	padding: 0;
}

.mobile-menu__list .sub-menu a {
	font-size: 0.78rem;
	opacity: 0.7;
	padding: 0.65em 0;
}

.mobile-menu__list li > a[href="#"] {
	opacity: 0.55;
	pointer-events: none;
}

.lang-switcher {
	display: flex;
	gap: 0.5em;
	font-size: 0.72rem;
	letter-spacing: 0.1em;
}

.lang-switcher a {
	color: var(--color-forest);
	opacity: 0.55;
	text-decoration: none;
	transition: color 0.4s ease;
}

.lang-switcher a.current-lang,
.lang-switcher a:hover {
	opacity: 1;
}

/* The cinematic "transparent over video" header — front page only, before
   scrolling. Everywhere else (and here too, once scrolled) the solid
   default above applies. */
/* WordPress's own body class for the static front page is "home" (not
   "front-page" — that was a wrong assumption on the first pass, and it
   quietly made this whole rule never match, so the header just fell back
   to whatever loaded last). */
body.home .site-header:not(.is-scrolled) {
	padding: 1.75rem 0;
	background-color: transparent;
	box-shadow: none;
}

body.home .site-header:not(.is-scrolled) .primary-menu a,
body.home .site-header:not(.is-scrolled) .primary-menu .menu-item--cta a,
body.home .site-header:not(.is-scrolled) .lang-switcher a {
	color: var(--color-ivory);
}

body.home .site-header:not(.is-scrolled) .site-header__wordmark--dark {
	opacity: 0;
}

body.home .site-header:not(.is-scrolled) .site-header__wordmark--light {
	opacity: 1;
}

body.home .site-header:not(.is-scrolled) .lang-switcher a {
	opacity: 0.65;
}

body.home .site-header:not(.is-scrolled) .lang-switcher a.current-lang,
body.home .site-header:not(.is-scrolled) .lang-switcher a:hover {
	opacity: 1;
}

/* --- Placeholder blocks for media awaiting selection --- */
/* Deliberately quiet — never a loud color fill — so the layout can be
   judged on its own terms before real photography arrives. */
.media-placeholder {
	display: flex;
	align-items: center;
	justify-content: center;
	text-align: center;
	background-color: var(--color-paper);
	border: 1px solid var(--color-border);
	color: var(--color-ink-soft);
	font-family: var(--font-serif);
	font-style: italic;
	font-size: 0.9rem;
	letter-spacing: 0.01em;
	padding: var(--space-md);
}

.site-footer a {
	color: var(--color-ivory);
	opacity: 0.8;
	text-decoration: none;
}

.site-footer a:hover {
	opacity: 1;
}

/* --- Alternating "vessel" rows --- */

.vessel-row {
	display: grid;
	grid-template-columns: 1.35fr 1fr;
	gap: var(--space-lg);
	align-items: center;
}

.vessel-row.is-reversed {
	grid-template-columns: 1fr 1.35fr;
}

.vessel-row.is-reversed .vessel-row__media { order: 2; }
.vessel-row.is-reversed .vessel-row__text { order: 1; }

.vessel-row__media .media-placeholder,
.vessel-row__media img { aspect-ratio: 5/4; width: 100%; object-fit: cover; }

/* --- Rounded corners + a subtle hover zoom on every "card" photo across
   the site (Knowledge Hub grid, vessel rows, story rows) — a small,
   consistent touch that reads as considered rather than a generic CMS
   grid. Kept restrained (6px radius, gentle scale) to stay editorial
   rather than "app UI". --- */

.kh-card__media,
.vessel-row__media,
.story-row__media {
	border-radius: 6px;
	overflow: hidden;
}

.kh-related-row {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--space-md);
	margin-top: var(--space-sm);
}

@media (max-width: 700px) {
	.kh-related-row {
		grid-template-columns: none;
		grid-auto-flow: column;
		grid-auto-columns: 72%;
		gap: 1rem;
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		padding-bottom: 0.5rem;
	}
	.kh-related-row > * {
		scroll-snap-align: start;
	}
}

.history-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: var(--space-lg);
}

@media (max-width: 700px) {
	.history-grid {
		grid-template-columns: 1fr;
		gap: var(--space-md);
	}
}

/* --- How It Works: visual timeline --- */
.hiw-steps {
	list-style: none;
	padding: 0;
	margin: var(--space-md) 0 0;
	display: grid;
	grid-template-columns: repeat(5, 1fr);
	gap: var(--space-md);
	position: relative;
}

.hiw-steps::before {
	content: "";
	position: absolute;
	top: 1.4rem;
	left: 1.4rem;
	right: 1.4rem;
	height: 1px;
	background: var(--color-terracotta-soft);
}

.hiw-step {
	position: relative;
}

.hiw-step__number {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.8rem;
	height: 2.8rem;
	border-radius: 50%;
	background: var(--color-ivory);
	border: 1px solid var(--color-terracotta);
	color: var(--color-terracotta);
	font-family: var(--font-serif);
	font-size: 1rem;
	margin-bottom: 1.2rem;
}

.hiw-step h3 {
	font-size: 1.1rem;
	margin-bottom: 0.5rem;
}

.hiw-step p,
.hiw-note {
	color: var(--color-ink-soft);
	font-size: 0.95rem;
	margin: 0;
}

.hiw-note {
	margin-top: var(--space-md);
}

.hiw-compare {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: var(--space-md);
	margin-top: var(--space-md);
}

.hiw-compare__card {
	border: 1px solid rgba(250, 248, 245, 0.22);
	border-radius: 10px;
	padding: var(--space-md);
	background: rgba(250, 248, 245, 0.04);
}

.hiw-compare__card p {
	color: var(--color-ivory);
	opacity: 0.85;
	margin: 0;
}

.hiw-compare__label {
	display: block;
	font-size: 0.72rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--color-terracotta-soft);
	margin-bottom: 0.8rem;
}

.hiw-compare__card .hiw-compare__figure,
.hiw-scale__figure {
	font-family: var(--font-serif);
	font-size: clamp(2.6rem, 5vw, 3.6rem);
	line-height: 1;
	opacity: 1;
	margin: 0 0 0.6rem;
}

.hiw-compare__foot {
	font-size: 0.88rem;
	opacity: 0.75;
	margin: var(--space-md) 0 0;
	max-width: 70ch;
}

.hiw-scale {
	display: grid;
	grid-template-columns: 1fr 1fr;
	margin-top: var(--space-md);
	border-radius: 10px;
	overflow: hidden;
	border: 1px solid var(--color-border);
}

.hiw-scale__segment {
	padding: var(--space-md);
	background: #fff;
}

.hiw-scale__segment--late {
	background: var(--color-paper);
	border-left: 1px solid var(--color-border);
}

.hiw-scale__segment .hiw-compare__label {
	color: var(--color-terracotta);
}

.hiw-scale__figure {
	color: var(--color-forest);
}

.hiw-scale__segment p:last-child {
	color: var(--color-ink-soft);
	margin: 0;
}

@media (max-width: 900px) {
	.hiw-steps {
		grid-template-columns: 1fr;
		gap: var(--space-sm);
	}
	.hiw-steps::before {
		top: 1.4rem;
		bottom: 1.4rem;
		left: 1.4rem;
		right: auto;
		width: 1px;
		height: auto;
	}
	.hiw-step {
		padding-left: 4rem;
		min-height: 2.8rem;
	}
	.hiw-step__number {
		position: absolute;
		left: 0;
		top: 0;
	}
	.hiw-compare,
	.hiw-scale {
		grid-template-columns: 1fr;
	}
	.hiw-scale__segment--late {
		border-left: none;
		border-top: 1px solid var(--color-border);
	}
}

/* --- FAQ accordion --- */
.faq-group + .faq-group {
	margin-top: var(--space-lg);
}

.faq-item {
	border-top: 1px solid var(--color-border);
}

.faq-item:last-child {
	border-bottom: 1px solid var(--color-border);
}

.faq-item summary {
	list-style: none;
	cursor: pointer;
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 1rem;
	padding: 1.3rem 0;
	font-family: var(--font-serif);
	font-size: 1.15rem;
	color: var(--color-forest);
}

.faq-item summary::-webkit-details-marker {
	display: none;
}

.faq-item summary::after {
	content: "+";
	font-family: var(--font-sans);
	font-weight: 300;
	font-size: 1.4rem;
	color: var(--color-terracotta);
	transition: transform 0.3s ease;
	flex-shrink: 0;
}

.faq-item[open] summary::after {
	transform: rotate(45deg);
}

.faq-item__answer {
	padding: 0 0 1.4rem;
	color: var(--color-ink-soft);
	font-size: 1rem;
	max-width: 68ch;
}

.faq-item__answer p {
	margin: 0 0 0.6rem;
}

/* --- Vessel gallery: mosaic (main photo + 2×2) and full-screen viewer --- */
.vessel-gallery {
	position: relative;
	display: grid;
	grid-template-columns: 2fr 1fr 1fr;
	grid-template-rows: repeat(2, minmax(0, 1fr));
	gap: 0.6rem;
	height: clamp(360px, 42vw, 560px);
	border-radius: 10px;
	overflow: hidden;
}

.vessel-gallery.is-count-1 { grid-template-columns: 1fr; }
.vessel-gallery.is-count-2,
.vessel-gallery.is-count-3 { grid-template-columns: 2fr 1fr; }
.vessel-gallery.is-count-2 .vessel-gallery__tile:nth-child(2),
.vessel-gallery.is-count-4 .vessel-gallery__tile:nth-child(4) { grid-row: span 2; }

.vessel-gallery__tile {
	position: relative;
	padding: 0;
	border: 0;
	margin: 0;
	background: var(--color-paper);
	cursor: zoom-in;
	overflow: hidden;
	min-height: 0;
}

.vessel-gallery__tile--main {
	grid-row: span 2;
}

.vessel-gallery__tile img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.6s ease, filter 0.3s ease;
}

.vessel-gallery__tile:hover img {
	transform: scale(1.04);
	filter: brightness(0.92);
}

.vessel-gallery__more {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	background: rgba(22, 41, 29, 0.55);
	color: var(--color-ivory);
	font-family: var(--font-serif);
	font-size: 1.4rem;
	pointer-events: none;
}

.vessel-gallery__more--mobile {
	display: none;
}

.vessel-gallery__all {
	position: absolute;
	right: 1rem;
	bottom: 1rem;
	border: 1px solid rgba(255, 255, 255, 0.5);
	border-radius: 999px;
	background: rgba(250, 248, 245, 0.92);
	color: var(--color-forest);
	font-family: var(--font-sans);
	font-size: 0.72rem;
	font-weight: 500;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	padding: 0.7em 1.3em;
	cursor: pointer;
	backdrop-filter: blur(6px);
}

.gallery-lightbox {
	width: 100vw;
	height: 100vh;
	max-width: none;
	max-height: none;
	margin: 0;
	padding: 0;
	border: 0;
	background: rgba(12, 20, 15, 0.96);
	color: var(--color-ivory);
}

.gallery-lightbox[open] {
	display: flex;
	align-items: center;
	justify-content: center;
}

.gallery-lightbox::backdrop {
	background: rgba(12, 20, 15, 0.96);
}

.gallery-lightbox__figure {
	margin: 0;
	flex: 1;
	height: 100%;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	padding: 4rem 1rem 2rem;
}

.gallery-lightbox__figure img {
	max-width: min(1400px, 100%);
	max-height: calc(100vh - 9rem);
	width: auto;
	height: auto;
	object-fit: contain;
	border-radius: 6px;
}

.gallery-lightbox figcaption {
	display: flex;
	gap: 1.5rem;
	justify-content: space-between;
	width: min(1400px, 100%);
	margin-top: 1rem;
	font-size: 0.85rem;
	opacity: 0.8;
}

.gallery-lightbox__close,
.gallery-lightbox__nav {
	background: none;
	border: 0;
	color: var(--color-ivory);
	cursor: pointer;
	font-size: 2.6rem;
	line-height: 1;
	padding: 1rem;
	opacity: 0.75;
	transition: opacity 0.2s ease;
}

.gallery-lightbox__close:hover,
.gallery-lightbox__nav:hover {
	opacity: 1;
}

.gallery-lightbox__close {
	position: absolute;
	top: 0.5rem;
	right: 1rem;
	z-index: 2;
}

@media (max-width: 700px) {
	.vessel-gallery {
		grid-template-columns: 1fr 1fr;
		grid-template-rows: auto auto;
		height: auto;
	}
	.vessel-gallery .vessel-gallery__tile--main {
		grid-column: 1 / -1;
		grid-row: auto;
		aspect-ratio: 4 / 3;
	}
	.vessel-gallery .vessel-gallery__tile {
		aspect-ratio: 4 / 3;
		grid-row: auto !important;
	}
	.vessel-gallery .vessel-gallery__tile:nth-child(n+4) {
		display: none;
	}
	.vessel-gallery.is-count-2 .vessel-gallery__tile:nth-child(2) {
		grid-column: 1 / -1;
	}
	.vessel-gallery__more--mobile {
		display: flex;
	}
	.vessel-gallery__all {
		display: none;
	}
	.vessel-gallery__all {
		right: 0.6rem;
		bottom: 0.6rem;
	}
	.gallery-lightbox__nav {
		position: absolute;
		bottom: 1rem;
		font-size: 2.2rem;
	}
	.gallery-lightbox__nav--prev { left: 1rem; }
	.gallery-lightbox__nav--next { right: 1rem; }
	.gallery-lightbox__figure {
		padding: 3.5rem 0.75rem 5rem;
	}
}

.photo-credits {
	margin-top: var(--space-md);
	font-size: 0.75rem;
	color: var(--color-ink-soft);
	opacity: 0.8;
}

.photo-credits a {
	color: inherit;
}

.photo-frame {
	border-radius: 8px;
	overflow: hidden;
}

.kh-card__media img,
.vessel-row__media img,
.story-row__media img {
	transition: transform 0.6s ease;
}

.kh-card:hover .kh-card__media img,
.vessel-row:hover .vessel-row__media img,
.story-row:hover .story-row__media img {
	transform: scale(1.06);
}

/* --- Knowledge Hub species fiche content (2026-09-26 brief §9): 12-section
   structure written as plain H2 headings in the post content, styled here
   for rhythm, plus a distinct callout for the "Naturalist Insight" box. --- */

.kh-fiche-content h2 {
	margin-top: var(--space-lg);
	padding-top: var(--space-md);
	border-top: 1px solid var(--color-border);
	font-size: 1.35rem;
	color: var(--color-forest);
}

.kh-fiche-content h2:first-of-type {
	margin-top: var(--space-md);
}

.kh-fiche-content p {
	color: var(--color-ink-soft);
	max-width: 72ch;
}

.kh-fiche-content .naturalist-insight {
	margin-top: var(--space-lg);
	padding: var(--space-md);
	background-color: var(--color-paper);
	border-left: 3px solid var(--color-terracotta);
}

.kh-fiche-content .naturalist-insight h2 {
	margin-top: 0;
	padding-top: 0;
	border-top: none;
	font-size: 1.1rem;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var(--color-terracotta);
}

.kh-fiche-content .naturalist-insight p {
	font-style: italic;
	margin: 0;
	max-width: none;
}

.kh-fiche-meta {
	display: flex;
	gap: var(--space-md);
	flex-wrap: wrap;
	margin: var(--space-sm) 0 var(--space-lg);
	padding: var(--space-sm) 0;
	border-top: 1px solid var(--color-border);
	border-bottom: 1px solid var(--color-border);
}

.kh-fiche-meta__item {
	font-size: 0.8rem;
}

.kh-fiche-meta__item strong {
	display: block;
	font-size: 0.68rem;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--color-terracotta);
	margin-bottom: 0.3rem;
}

.kh-quick-facts {
	width: 100%;
	border-collapse: collapse;
	margin-top: var(--space-sm);
}

.kh-quick-facts tr {
	border-bottom: 1px solid var(--color-border);
}

.kh-quick-facts th,
.kh-quick-facts td {
	text-align: left;
	padding: 0.7em 1em 0.7em 0;
	font-size: 0.92rem;
	font-weight: 400;
}

.kh-quick-facts th {
	width: 40%;
	color: var(--color-forest);
	font-family: var(--font-sans);
	font-size: 0.75rem;
	letter-spacing: 0.06em;
	text-transform: uppercase;
}

.kh-quick-facts td {
	color: var(--color-ink-soft);
}

.kh-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
	gap: var(--space-lg);
}

.kh-filter-bar {
	display: flex;
	flex-wrap: wrap;
	gap: 0.6rem;
	margin-top: var(--space-md);
}

.kh-filter {
	background: none;
	border: 1px solid var(--color-border);
	border-radius: 999px;
	padding: 0.5em 1.2em;
	font-family: var(--font-sans);
	font-size: 0.72rem;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--color-ink-soft);
	cursor: pointer;
	transition: background 0.25s ease, color 0.25s ease, border-color 0.25s ease;
}

.kh-filter:hover {
	border-color: var(--color-terracotta);
	color: var(--color-terracotta);
}

.kh-filter.is-active {
	background-color: var(--color-forest);
	border-color: var(--color-forest);
	color: var(--color-ivory);
}

/* Itinerary tabs (product pages with more than one route, e.g. La Pinta) */
.grt-itin-tabs {
	display: flex;
	flex-wrap: wrap;
	gap: 0.6rem;
	margin: var(--space-md) 0;
}

.grt-itin-tab {
	background: none;
	border: 1px solid var(--color-border);
	border-radius: 999px;
	padding: 0.6em 1.4em;
	font-family: var(--font-sans);
	font-size: 0.8rem;
	letter-spacing: 0.02em;
	color: var(--color-ink-soft);
	cursor: pointer;
	transition: background 0.25s ease, color 0.25s ease, border-color 0.25s ease;
}

.grt-itin-tab:hover {
	border-color: var(--color-terracotta);
	color: var(--color-terracotta);
}

.grt-itin-tab.is-active {
	background-color: var(--color-forest);
	border-color: var(--color-forest);
	color: var(--color-ivory);
}

.grt-itin-panel {
	display: none;
}

.grt-itin-panel.is-active {
	display: block;
}

.grt-wildlife-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem;
	margin-top: 0.6rem;
}

.grt-wildlife-chip,
.grt-wildlife-chip--plain {
	display: inline-block;
	font-size: 0.72rem;
	letter-spacing: 0.02em;
	padding: 0.3em 0.8em;
	border-radius: 999px;
	background: var(--color-ivory-dark, #F1ECE4);
	color: var(--color-forest);
	text-decoration: none;
	border: 1px solid var(--color-border);
}

.grt-wildlife-chip {
	transition: background 0.2s ease, color 0.2s ease;
}

.grt-wildlife-chip:hover {
	background: var(--color-forest);
	color: var(--color-ivory);
}

.grt-wildlife-chip--plain {
	opacity: 0.7;
	cursor: default;
}

.grt-amenity-list {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: 0.5rem 1.5rem;
	list-style: none;
	padding: 0;
	margin: 1rem 0;
}

.grt-amenity-list li {
	position: relative;
	padding-left: 1.3rem;
	color: var(--color-ink-soft);
}

.grt-map-label {
	background: none !important;
	border: none !important;
	box-shadow: none !important;
	padding: 0 !important;
	font-family: var(--font-serif);
	font-size: 0.85rem;
	color: var(--color-forest);
	text-shadow: 0 1px 2px rgba(255,255,255,.9), 0 -1px 2px rgba(255,255,255,.9), 1px 0 2px rgba(255,255,255,.9), -1px 0 2px rgba(255,255,255,.9);
}

.grt-map-label::before {
	display: none !important;
}

.grt-departure-months {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin-bottom: 0.8rem;
}

.grt-departure-month {
	background: none;
	border: 1px solid var(--color-border);
	border-radius: 999px;
	padding: 0.4em 1em;
	font-family: var(--font-sans);
	font-size: 0.72rem;
	letter-spacing: 0.02em;
	color: var(--color-ink-soft);
	cursor: pointer;
	transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}

.grt-departure-month:hover {
	border-color: var(--color-terracotta);
	color: var(--color-terracotta);
}

.grt-departure-month.is-active {
	background-color: var(--color-forest);
	border-color: var(--color-forest);
	color: var(--color-ivory);
}

.grt-departure-month-panel {
	display: none;
}

.grt-departure-month-panel.is-active {
	display: block;
}

.grt-departure-dates {
	display: flex;
	flex-wrap: wrap;
	gap: 0.6rem;
}

.grt-departure-date {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	min-width: 64px;
	padding: 0.6rem 0.4rem;
	border: 1px solid var(--color-border);
	border-radius: 8px;
	background: #fff;
}

.grt-departure-date__day {
	font-family: var(--font-serif);
	font-size: 1.3rem;
	color: var(--color-forest);
	line-height: 1;
}

.grt-departure-date__month {
	font-size: 0.68rem;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--color-ink-soft);
	margin-top: 0.25rem;
}

.grt-content-photo-row {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 1rem;
	margin: var(--space-md) 0;
}

.grt-content-photo {
	width: 100%;
	aspect-ratio: 4/3;
	object-fit: cover;
	border-radius: 6px;
	transition: transform 0.4s ease;
}

.grt-content-photo:hover {
	transform: scale(1.03);
}

@media (max-width: 600px) {
	.grt-content-photo-row {
		grid-template-columns: 1fr;
	}
}

.grt-amenity-list li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.55em;
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--color-terracotta);
}

@media (max-width: 900px) {
	.grt-product-layout {
		grid-template-columns: 1fr !important;
	}

	.vessel-row,
	.vessel-row.is-reversed {
		grid-template-columns: 1fr;
	}
	.vessel-row.is-reversed .vessel-row__media,
	.vessel-row.is-reversed .vessel-row__text {
		order: initial;
	}
}

/* --- WooCommerce buttons: match the site, not WooCommerce's own pink/blue
   defaults. WooCommerce's own stylesheet loads after the theme and targets
   these same selectors with comparable specificity, so !important is the
   pragmatic, commonly-used way to win that fight without fighting load order. --- */
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit,
.woocommerce-page a.button,
.woocommerce-page button.button,
.single_add_to_cart_button {
	background-color: var(--color-forest) !important;
	background: var(--color-forest) !important;
	color: var(--color-ivory) !important;
	border-radius: 999px !important;
	border: none !important;
	font-family: var(--font-sans) !important;
	font-size: 0.75rem !important;
	font-weight: 500 !important;
	letter-spacing: 0.08em !important;
	text-transform: uppercase !important;
	padding: 0.9em 2em !important;
	transition: background 0.3s ease, transform 0.3s ease !important;
}

.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.single_add_to_cart_button:hover {
	background-color: var(--color-forest-dark) !important;
	transform: translateY(-1px);
}

/* --- Editorial "story" row: an asymmetric image + text block, left-aligned
   (never centered), reusing the vessel-row grid for visual consistency. --- */
.story-row {
	display: grid;
	grid-template-columns: 1fr 1.2fr;
	gap: var(--space-lg);
	align-items: center;
}

.story-row.is-reversed { grid-template-columns: 1.2fr 1fr; }
.story-row.is-reversed .story-row__media { order: 2; }
.story-row.is-reversed .story-row__text { order: 1; }

.story-row__media img {
	width: 100%;
	aspect-ratio: 4/5;
	object-fit: cover;
}

@media (max-width: 900px) {
	.story-row,
	.story-row.is-reversed {
		grid-template-columns: 1fr;
	}
	.story-row.is-reversed .story-row__media,
	.story-row.is-reversed .story-row__text {
		order: initial;
	}
}

/* --- Homepage sections: tighter rhythm than the generic --space-xl blocks --- */
.home-section {
	padding: var(--space-lg) 0;
}

.home-section__intro {
	max-width: 760px;
	margin-bottom: var(--space-md);
}

.home-section__intro h2 {
	max-width: 22ch;
}

.home-section__intro p {
	color: var(--color-ink-soft);
	font-size: 1.05rem;
}

.fleet-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr));
	gap: var(--space-md) var(--space-lg);
	max-width: 1150px;
}

.fleet-card h3 {
	font-size: 1.6rem;
	margin: 0.4rem 0 0.3rem;
}

.fleet-card p {
	color: var(--color-ink-soft);
	font-size: 0.98rem;
}

.fleet-card__meta {
	font-size: 0.72rem !important;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--color-terracotta) !important;
	margin-bottom: 0.6rem;
}

.fleet-card__media,
.expertise-card__media,
.kh-teaser__media {
	display: block;
	border-radius: 6px;
	overflow: hidden;
	margin-bottom: 1rem;
}

.fleet-card__media img,
.expertise-card__media img,
.kh-teaser__media img {
	width: 100%;
	aspect-ratio: 3/2;
	object-fit: cover;
	transition: transform 0.6s ease;
}

.final-cta {
	padding-bottom: 0 !important;
}

.final-cta .container::after {
	content: "";
	display: block;
	height: 1px;
	margin-top: var(--space-lg);
	background: linear-gradient(90deg, transparent, rgba(224, 181, 148, 0.55), transparent);
}

.fleet-card:hover .fleet-card__media img,
.kh-teaser:hover .kh-teaser__media img,
.expertise-card:hover .expertise-card__media img {
	transform: scale(1.05);
}

.fleet-card__actions {
	display: flex;
	align-items: center;
	gap: 1.5rem;
	flex-wrap: wrap;
	margin-top: 1rem;
}

.expertise-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--space-md);
}

.expertise-card h3 {
	font-size: 1.15rem;
	margin-bottom: 0.5rem;
}

.expertise-card p {
	color: var(--color-ink-soft);
	font-size: 0.95rem;
	margin: 0;
}

.kh-teaser {
	display: grid;
	grid-template-columns: 1fr 1.1fr;
	gap: var(--space-lg);
	align-items: center;
	max-width: 1100px;
}

.kh-teaser__media {
	margin-bottom: 0;
}

.kh-teaser__media img {
	aspect-ratio: 4/3;
}

.partners-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
	gap: var(--space-sm);
}

.partner-card {
	border-top: 2px solid var(--color-forest);
	padding-top: 1rem;
}

.partner-card__logo {
	height: 68px;
	width: auto;
	max-width: 160px;
	object-fit: contain;
	margin-bottom: 1rem;
	filter: grayscale(1);
	opacity: 0.85;
	transition: filter 0.3s ease, opacity 0.3s ease;
}

.partner-card:hover .partner-card__logo {
	filter: none;
	opacity: 1;
}

.partner-card h3 {
	font-size: 1.05rem;
	margin-bottom: 0.5rem;
}

.partner-card p {
	color: var(--color-ink-soft);
	font-size: 0.9rem;
	margin: 0;
}

@media (max-width: 900px) {
	.home-section {
		padding: 3.5rem 0;
	}
	.expertise-grid,
	.kh-teaser {
		grid-template-columns: 1fr;
		gap: var(--space-md);
	}
}

/* --- Our Story --- */
.our-story__text {
	color: var(--color-ink-soft);
	font-size: 1.05rem;
}

.our-story__hero {
	aspect-ratio: 16/9;
	max-height: 560px;
	width: 100%;
	border-radius: 6px;
	overflow: hidden;
}

.our-story__hero img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center 40%;
}

.our-story .story-row__media img {
	aspect-ratio: 4/3;
	object-position: center 35%;
}

.our-story__origins {
	display: grid;
	grid-template-columns: 0.9fr 1.1fr;
	gap: var(--space-lg);
	align-items: start;
	padding-top: var(--space-md);
	padding-bottom: var(--space-md);
	border-top: 1px solid var(--color-border);
	border-bottom: 1px solid var(--color-border);
}

.our-story__origins-statement p {
	font-family: var(--font-serif);
	font-size: clamp(2rem, 3.6vw, 3rem);
	line-height: 1.15;
	color: var(--color-forest);
	margin: 0;
	max-width: 12ch;
}

.our-story__figures {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--space-sm);
	margin: var(--space-md) 0 0;
}

.our-story__figures dt {
	font-family: var(--font-serif);
	font-size: 2.2rem;
	color: var(--color-terracotta);
	line-height: 1;
	margin-bottom: 0.4rem;
}

.our-story__figures dd {
	margin: 0;
	font-size: 0.82rem;
	color: var(--color-ink-soft);
}

@media (max-width: 900px) {
	.our-story__origins {
		grid-template-columns: 1fr;
		gap: var(--space-md);
	}
}

.our-story__pillars {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--space-lg);
	margin-top: var(--space-lg);
}

.our-story__pillars h3 {
	color: var(--color-ivory);
	font-size: 1.15rem;
	margin-bottom: 0.6rem;
}

.our-story__pillars p {
	color: var(--color-ivory);
	opacity: 0.82;
	font-size: 0.98rem;
	margin: 0;
}

.our-story__book {
	display: grid;
	grid-template-columns: 180px 1fr;
	gap: var(--space-lg);
	align-items: start;
	padding: var(--space-lg);
}

.our-story__portrait img {
	width: 180px;
	height: 180px;
	border-radius: 50%;
	object-fit: cover;
	display: block;
}

@media (max-width: 900px) {
	.our-story__pillars {
		grid-template-columns: 1fr;
		gap: var(--space-md);
	}
	.our-story__book {
		grid-template-columns: 1fr;
		padding: var(--space-md);
	}
	.our-story__portrait img {
		width: 120px;
		height: 120px;
	}
}

/* --- Glassmorphism utilities ---
   Deliberately restrained: frosted surfaces used only where they read as
   depth/ocean/refinement (cards, overlays, footer, forms), never as a
   generic "tech UI" effect. Two variants: light glass for use over photos
   or pale gradients, dark glass (forest-tinted) for use over darker
   backgrounds, matching .btn-glass already used on the hero CTA. */
.glass-card {
	background: rgba(255, 255, 255, 0.45);
	backdrop-filter: blur(18px) saturate(140%);
	-webkit-backdrop-filter: blur(18px) saturate(140%);
	border: 1px solid rgba(255, 255, 255, 0.6);
	box-shadow: 0 24px 60px -24px rgba(31, 61, 43, 0.28);
}

.glass-card--dark {
	background: rgba(22, 41, 29, 0.4);
	border-color: rgba(255, 255, 255, 0.16);
	color: var(--color-ivory);
	box-shadow: 0 24px 60px -24px rgba(0, 0, 0, 0.45);
}

.glass-card--dark h3,
.glass-card--dark .lede,
.glass-card--dark p { color: var(--color-ivory); }

.container--wide { max-width: 1680px; }

/* Long-form reading column — blog articles only. Everywhere else, paragraph
   width is simply whatever the surrounding container allows. */
.blog-article p { max-width: var(--measure); }

/* --- Journal (blog) --- */
.journal__filters {
	margin: var(--space-md) 0 var(--space-lg);
}

.journal-card__meta {
	font-size: 0.72rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--color-terracotta);
	margin: 0 0 0.6rem;
}

.journal-feature {
	display: grid;
	grid-template-columns: 1.3fr 1fr;
	gap: var(--space-lg);
	align-items: center;
	margin-bottom: var(--space-xl);
}

.journal-feature__media,
.journal-card__media {
	display: block;
	border-radius: 8px;
	overflow: hidden;
	background: var(--color-paper);
}

.journal-feature__media img,
.journal-card__media img {
	width: 100%;
	aspect-ratio: 3 / 2;
	object-fit: cover;
	transition: transform 0.6s ease;
}

.journal-feature:hover .journal-feature__media img,
.journal-card:hover .journal-card__media img {
	transform: scale(1.04);
}

.journal-feature h2 {
	font-size: clamp(1.8rem, 3vw, 2.6rem);
}

.journal-feature h2 a,
.journal-card h3 a {
	color: inherit;
	text-decoration: none;
}

.journal-feature p:not(.journal-card__meta) {
	color: var(--color-ink-soft);
	font-size: 1.05rem;
}

.journal-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(300px, 100%), 1fr));
	gap: var(--space-lg) var(--space-md);
	margin-top: var(--space-sm);
}

.journal-card__media {
	margin-bottom: 1rem;
}

.journal-card__placeholder {
	display: flex;
	align-items: center;
	justify-content: center;
	aspect-ratio: 3 / 2;
	font-family: var(--font-serif);
	font-size: 3rem;
	color: var(--color-terracotta-soft);
}

.journal-card h3 {
	font-size: 1.3rem;
	margin-bottom: 0.5rem;
}

.journal-card p:not(.journal-card__meta) {
	color: var(--color-ink-soft);
	font-size: 0.95rem;
	margin: 0;
}

.journal-pagination {
	margin-top: var(--space-lg);
}

.journal-pagination .nav-links {
	display: flex;
	gap: 0.6rem;
	justify-content: center;
	flex-wrap: wrap;
}

.journal-pagination .page-numbers {
	padding: 0.5em 0.9em;
	border: 1px solid var(--color-border);
	border-radius: 999px;
	text-decoration: none;
	color: var(--color-forest);
	font-size: 0.85rem;
}

.journal-pagination .page-numbers.current {
	background: var(--color-forest);
	border-color: var(--color-forest);
	color: var(--color-ivory);
}

.journal-empty {
	text-align: center;
	padding: var(--space-lg) 0;
	border-top: 1px solid var(--color-border);
}

.journal-empty .lede {
	margin-inline: auto;
}

.journal-article__body {
	font-size: 1.1rem;
	color: var(--color-ink);
	line-height: 1.8;
}

.journal-article__body > p:first-of-type::first-letter {
	float: left;
	font-family: var(--font-serif);
	font-size: 3.6em;
	line-height: 0.85;
	padding: 0.08em 0.12em 0 0;
	color: var(--color-forest);
}

.journal-article__body h2 {
	font-size: 1.7rem;
	margin: var(--space-md) 0 0.8rem;
}

.journal-article__body h3 {
	font-size: 1.3rem;
	margin: var(--space-md) 0 0.6rem;
}

.journal-article__body blockquote {
	margin: var(--space-md) 0;
	padding: 0 0 0 1.5rem;
	border-left: 2px solid var(--color-terracotta);
	font-family: var(--font-serif);
	font-style: italic;
	font-size: 1.35rem;
	color: var(--color-forest);
}

.journal-article__body img,
.journal-article__body figure img {
	border-radius: 8px;
}

.journal-article__body figure {
	margin: var(--space-md) 0;
}

.journal-article__body figcaption {
	font-size: 0.8rem;
	color: var(--color-ink-soft);
	margin-top: 0.5rem;
}

.journal-article__body ul,
.journal-article__body ol {
	padding-left: 1.3rem;
}

.journal-author {
	margin-top: var(--space-lg);
	padding: var(--space-md);
	border-top: 2px solid var(--color-forest);
	background: var(--color-paper);
	border-radius: 0 0 8px 8px;
}

.journal-author p {
	color: var(--color-ink-soft);
	font-size: 0.98rem;
}

.journal-cta {
	text-align: center;
	padding: var(--space-lg) var(--space-md);
	border-top: 1px solid var(--color-border);
}

.journal-cta .lede {
	margin-inline: auto;
}

@media (max-width: 900px) {
	.journal-feature {
		grid-template-columns: 1fr;
		gap: var(--space-md);
	}
}

/* --- Trust pillars --- */

.pillars-section {
	background: linear-gradient(160deg, var(--color-paper) 0%, #EEE8DB 100%);
}

.pillars-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--space-sm);
}

.pillar-card {
	padding: var(--space-md) var(--space-sm);
}

.pillar-card h3 {
	font-size: 1.05rem;
	margin-bottom: 0.6rem;
}

.pillar-card p {
	color: var(--color-ink-soft);
	font-size: 0.92rem;
	margin: 0;
}

@media (max-width: 900px) {
	.pillars-grid { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 600px) {
	.pillars-grid { grid-template-columns: 1fr; }
}

/* --- Testimonials: editorial cards, not ecommerce review widgets ---
   A wrapping grid, not a horizontal-scroll row: on desktop all cards should
   be visible at once, no scrolling required to read them. */

.testimonials-row {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(340px, 100%), 1fr));
	gap: var(--space-sm);
}

.testimonial-card {
	padding: var(--space-md) var(--space-sm);
	display: flex;
	flex-direction: column;
}

.testimonial-card blockquote {
	font-family: var(--font-serif);
	font-style: italic;
	font-weight: 400;
	font-size: clamp(1rem, 1.3vw, 1.15rem);
	line-height: 1.5;
	margin: 0 0 var(--space-sm);
}

.testimonial-card cite {
	display: block;
	font-style: normal;
	font-size: 0.75rem;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	opacity: 0.75;
	margin-top: auto;
}

/* --- Footer: wide, multi-column --- */

.site-footer .footer-grid {
	display: grid;
	grid-template-columns: 1.5fr 1fr 1fr 1fr 1fr;
	gap: var(--space-md);
	margin-bottom: var(--space-lg);
}

.footer-brand__logo { display: inline-block; }

.footer-brand__logo img {
	height: 48px !important;
	width: auto !important;
	max-width: none !important;
	display: block;
}

.footer-contacts li {
	margin-bottom: 0.7rem;
}

.footer-contacts a span {
	display: block;
	font-size: 0.8rem;
	opacity: 0.7;
}

.footer-contacts small {
	display: block;
	font-size: 0.72rem;
	letter-spacing: 0.06em;
	color: var(--color-terracotta-soft);
}

.footer-legal {
	max-width: 70ch;
	line-height: 1.5;
}

/* --- PayPal pay-for-order / confirmation --- */
.grt-pay .woocommerce-notices-wrapper:empty {
	display: none;
}

.grt-pay__card #payment {
	margin-top: var(--space-md);
	padding-top: var(--space-sm);
	border-top: 1px solid var(--color-border);
}

.grt-pay__card .wc_payment_methods {
	list-style: none;
	margin: 0 0 var(--space-sm);
	padding: 0;
}

.grt-pay__card .wc_payment_method {
	padding: 0.9rem 1rem;
	border: 1px solid var(--color-border);
	border-radius: 8px;
	margin-bottom: 0.6rem;
	background: var(--color-ivory);
}

.grt-pay__card .wc_payment_method label {
	font-weight: 500;
	color: var(--color-forest);
}

.grt-pay__card .payment_box {
	font-size: 0.9rem;
	color: var(--color-ink-soft);
	margin-top: 0.5rem;
}

.grt-pay__unavailable {
	padding: 1rem 1.2rem;
	border-left: 3px solid var(--color-terracotta);
	background: var(--color-paper);
	color: var(--color-ink-soft);
	font-size: 0.95rem;
	line-height: 1.6;
}

.grt-pay__card #place_order {
	margin-top: 0.5rem;
}

.grt-pay__legal {
	margin-top: var(--space-md);
	font-size: 0.75rem;
	color: var(--color-ink-soft);
	opacity: 0.8;
}

/* --- Suite cards (vessel pages) --- */
.suite-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(220px, 100%), 1fr));
	gap: var(--space-md);
	margin-top: var(--space-sm);
}

.suite-card__media {
	border-radius: 8px;
	overflow: hidden;
	margin-bottom: 0.9rem;
}

.suite-card__media img {
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	transition: transform 0.6s ease;
}

.suite-card:hover .suite-card__media img {
	transform: scale(1.04);
}

.suite-card h3 {
	font-size: 1.15rem;
	margin-bottom: 0.3rem;
}

.suite-card__price {
	font-size: 0.78rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--color-terracotta);
	margin: 0 0 0.5rem;
}

.suite-card__desc {
	font-size: 0.92rem;
	color: var(--color-ink-soft);
	margin: 0 0 0.7rem;
}

/* --- When to go calendar --- */
.wtg {
	--wtg-warm: #C17F52;
	--wtg-cool: #4A6B7A;
	background: #fff;
	border: 1px solid var(--color-border);
	border-radius: 10px;
	padding: var(--space-md);
}

.wtg__legend {
	display: flex;
	flex-wrap: wrap;
	gap: 0.6rem 1.5rem;
	font-size: 0.82rem;
	color: var(--color-ink-soft);
	margin-bottom: var(--space-sm);
}

.wtg__key::before {
	content: "";
	display: inline-block;
	width: 10px;
	height: 10px;
	border-radius: 50%;
	margin-right: 0.5rem;
	vertical-align: middle;
}

.wtg__key--warm::before { background: var(--wtg-warm); }
.wtg__key--cool::before { background: var(--wtg-cool); }

.wtg__months {
	display: grid;
	grid-template-columns: repeat(12, 1fr);
	gap: 4px;
	margin-bottom: var(--space-md);
}

.wtg__month {
	position: relative;
	padding: 0.9rem 0 0.7rem;
	border: 0;
	border-radius: 6px;
	background: var(--color-paper);
	font-family: var(--font-sans);
	font-size: 0.78rem;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--color-ink-soft);
	cursor: pointer;
	transition: background 0.2s ease, color 0.2s ease;
}

.wtg__month::before {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	height: 4px;
	border-radius: 6px 6px 0 0;
}

.wtg__month--warm::before { background: var(--wtg-warm); }
.wtg__month--cool::before { background: var(--wtg-cool); }

.wtg__month:hover {
	color: var(--color-forest);
}

.wtg__month.is-active {
	background: var(--color-forest);
	color: var(--color-ivory);
}

.wtg__head {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0.5rem 1rem;
	margin-bottom: 0.8rem;
}

.wtg__head h3 {
	font-size: 1.6rem;
	margin: 0;
}

.wtg__season {
	font-size: 0.72rem;
	letter-spacing: 0.1em;
	text-transform: uppercase;
}

.wtg__season--warm { color: var(--wtg-warm); }
.wtg__season--cool { color: var(--wtg-cool); }

.wtg__facts {
	display: flex;
	gap: var(--space-md);
	margin: 0 0 0.8rem;
}

.wtg__facts dt {
	font-size: 0.7rem;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--color-ink-soft);
}

.wtg__facts dd {
	margin: 0.15rem 0 0;
	font-family: var(--font-serif);
	color: var(--color-forest);
}

.wtg__highlights {
	margin: 0 0 1rem;
	padding-left: 1.1rem;
	color: var(--color-ink-soft);
}

.wtg__highlights li {
	margin-bottom: 0.3rem;
}

.wtg__species {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin-bottom: var(--space-sm);
}

@media (max-width: 700px) {
	.wtg {
		padding: var(--space-sm);
	}
	.wtg__months {
		grid-template-columns: repeat(6, 1fr);
	}
}

/* --- Floating WhatsApp contact --- */
.wa-float {
	position: fixed;
	right: 1.25rem;
	bottom: 1.25rem;
	z-index: 900;
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: 0.75rem;
}

.wa-float__toggle {
	width: 56px;
	height: 56px;
	border-radius: 50%;
	border: 1px solid rgba(255, 255, 255, 0.35);
	background: var(--color-forest);
	color: var(--color-ivory);
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	box-shadow: 0 10px 30px -10px rgba(22, 41, 29, 0.6);
	transition: transform 0.25s ease, background 0.25s ease;
}

.wa-float__toggle:hover {
	transform: translateY(-2px);
	background: var(--color-forest-dark);
}

.wa-float__panel {
	width: 260px;
	background: #fff;
	border: 1px solid var(--color-border);
	border-top: 3px solid var(--color-forest);
	border-radius: 10px;
	padding: 1rem;
	box-shadow: 0 30px 60px -30px rgba(31, 61, 43, 0.35);
}

.wa-float__panel[hidden] {
	display: none;
}

.wa-float__title {
	font-family: var(--font-serif);
	font-size: 1.05rem;
	color: var(--color-forest);
	margin: 0 0 0.6rem;
}

.wa-float__contact {
	display: block;
	padding: 0.65rem 0.75rem;
	border-radius: 6px;
	text-decoration: none;
	color: var(--color-ink);
	transition: background 0.2s ease;
}

.wa-float__contact:hover {
	background: var(--color-paper);
}

.wa-float__contact strong {
	display: block;
	font-weight: 500;
}

.wa-float__contact span {
	font-size: 0.8rem;
	color: var(--color-ink-soft);
}

@media (max-width: 600px) {
	.wa-float {
		right: 0.9rem;
		bottom: 0.9rem;
	}
	.wa-float__toggle {
		width: 50px;
		height: 50px;
	}
}

.footer-brand p {
	color: rgba(250, 248, 245, 0.7);
	font-size: 0.92rem;
	max-width: 30ch;
	margin-top: 1rem;
}

.footer-col h4 {
	font-family: var(--font-sans);
	font-size: 0.7rem;
	font-weight: 500;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: rgba(250, 248, 245, 0.5);
	margin: 0 0 1.3rem;
}

.footer-col ul {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
}

.footer-col a {
	font-size: 0.88rem;
}

.footer-base {
	display: flex;
	justify-content: space-between;
	align-items: center;
	flex-wrap: wrap;
	gap: 0.5rem;
	padding-top: var(--space-md);
	border-top: 1px solid rgba(250, 248, 245, 0.14);
}

@media (max-width: 900px) {
	.site-footer .footer-grid { grid-template-columns: 1fr 1fr; }
	.footer-brand { grid-column: 1 / -1; }
}

@media (max-width: 560px) {
	.site-footer .footer-grid { grid-template-columns: 1fr; }
}

/* --- Timeline (Galápagos history page) --- */

.timeline {
	position: relative;
	margin-top: var(--space-lg);
	padding-left: 2.5rem;
	border-left: 1px solid var(--color-border);
}

.timeline-item {
	position: relative;
	padding-bottom: var(--space-lg);
}

.timeline-item:last-child {
	padding-bottom: 0;
}

.timeline-item::before {
	content: "";
	position: absolute;
	left: -2.6rem;
	top: 0.3rem;
	width: 9px;
	height: 9px;
	border-radius: 50%;
	background: var(--color-terracotta);
}

.timeline-item__date {
	display: block;
	font-family: var(--font-sans);
	font-size: 0.75rem;
	font-weight: 600;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--color-terracotta);
	margin-bottom: 0.5rem;
}

.timeline-item h3 {
	font-size: 1.25rem;
	margin-bottom: 0.5rem;
}

.timeline-item p {
	color: var(--color-ink-soft);
	margin: 0;
	max-width: 62ch;
}

/* --- Forms (book request, proposal request) --- */

.grt-form {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: var(--space-sm) var(--space-md);
}

.grt-form .form-field--full { grid-column: 1 / -1; }

.grt-form label {
	display: block;
	font-size: 0.75rem;
	font-weight: 500;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--color-forest);
	margin-bottom: 0.5rem;
}

.grt-form input[type="text"],
.grt-form input[type="email"],
.grt-form input[type="number"],
.grt-form select,
.grt-form textarea {
	width: 100%;
	font-family: var(--font-sans);
	font-size: 0.95rem;
	color: var(--color-ink);
	background: #fff;
	border: 1px solid var(--color-border);
	border-radius: 2px;
	padding: 0.75em 0.9em;
}

.grt-form input:focus,
.grt-form select:focus,
.grt-form textarea:focus {
	outline: none;
	border-color: var(--color-terracotta);
}

.grt-form textarea { resize: vertical; min-height: 120px; }

.grt-form .form-actions { grid-column: 1 / -1; margin-top: 0.5rem; }

.grt-form-wrap {
	max-width: 720px;
}

.form-honeypot { position: absolute; left: -9999px; top: -9999px; }

.form-notice {
	padding: 1.2rem 1.4rem;
	border-left: 3px solid var(--color-forest);
	background: var(--color-paper);
	margin-bottom: var(--space-md);
}

.form-notice p { margin: 0; color: var(--color-ink-soft); }

.form-notice--error { border-left-color: #a33; }

@media (max-width: 700px) {
	.grt-form { grid-template-columns: 1fr; }
}

.grt-form fieldset {
	border: none;
	margin: 0;
	padding: 0;
}

.grt-form legend {
	font-family: var(--font-serif);
	font-size: 1.1rem;
	color: var(--color-forest);
	margin-bottom: 0.5rem;
	padding: 0;
}

.grt-checkbox-group {
	display: flex;
	flex-wrap: wrap;
	gap: 0.6rem 1.4rem;
}

.grt-checkbox-group label {
	display: flex;
	align-items: center;
	gap: 0.5em;
	text-transform: none;
	letter-spacing: normal;
	font-weight: 400;
	font-size: 0.92rem;
	color: var(--color-ink);
}

.grt-checkbox-group input[type="checkbox"] {
	width: auto;
}

.grt-form .form-section-title {
	grid-column: 1 / -1;
	margin-top: var(--space-sm);
}

.grt-form .form-section-title:first-child { margin-top: 0; }

/* --- Elevated form card (quote + ebook): the form is the page's focal point --- */
.form-page {
	display: grid;
	grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.4fr);
	gap: var(--space-lg);
	align-items: start;
	max-width: 1200px;
}

.form-page__aside {
	position: sticky;
	top: 8rem;
}

.form-page__aside img {
	width: 100%;
	aspect-ratio: 4/3;
	object-fit: cover;
	border-radius: 8px;
	margin-bottom: var(--space-md);
}

.form-steps {
	list-style: none;
	padding: 0;
	margin: 0;
	counter-reset: step;
}

.form-steps li {
	counter-increment: step;
	position: relative;
	padding-left: 2.6rem;
	margin-bottom: 1.2rem;
	color: var(--color-ink-soft);
	font-size: 0.95rem;
}

.form-steps li::before {
	content: counter(step, decimal-leading-zero);
	position: absolute;
	left: 0;
	top: 0.1rem;
	font-family: var(--font-serif);
	font-size: 1.1rem;
	color: var(--color-terracotta);
}

.form-steps strong {
	display: block;
	color: var(--color-forest);
	font-weight: 500;
	margin-bottom: 0.2rem;
}

/* --- Track Your Request result --- */
.track-result {
	margin-top: var(--space-md);
}

.track-result__ref {
	font-size: 0.72rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--color-terracotta);
	margin: 0 0 0.6rem;
}

.track-result__title {
	font-size: clamp(1.5rem, 2.6vw, 2rem);
	margin-bottom: var(--space-sm);
}

.track-result__summary {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(150px, 100%), 1fr));
	gap: 1rem;
	margin: 0 0 var(--space-sm);
	padding: 1rem 0;
	border-top: 1px solid var(--color-border);
	border-bottom: 1px solid var(--color-border);
}

.track-result__summary dt {
	font-size: 0.7rem;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--color-ink-soft);
}

.track-result__summary dd {
	margin: 0.2rem 0 0;
	font-family: var(--font-serif);
	color: var(--color-forest);
}

.track-result__schedule {
	width: 100%;
	border-collapse: collapse;
	margin-bottom: var(--space-sm);
	font-size: 0.95rem;
}

.track-result__schedule th,
.track-result__schedule td {
	text-align: left;
	padding: 0.7rem 0;
	border-bottom: 1px solid var(--color-border);
	font-weight: 400;
}

.track-result__schedule td:last-child {
	text-align: right;
	color: var(--color-ink-soft);
}

.track-result__schedule tr.is-paid td:last-child {
	color: var(--color-forest);
}

.track-result__due {
	font-family: var(--font-serif);
	font-size: 1.3rem;
	color: var(--color-forest);
	margin: var(--space-sm) 0;
}

.track-result__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 1rem;
}

.track-result__paypal {
	display: inline-flex;
	align-items: center;
	border: 1px solid var(--color-forest);
	border-radius: 999px;
	padding: 1em 2em;
	font-size: 0.78rem;
	font-weight: 500;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--color-forest);
	text-decoration: none;
}

.track-result__paypal:hover {
	background: var(--color-forest);
	color: var(--color-ivory);
}

.book-author {
	display: flex;
	align-items: center;
	gap: 1.2rem;
	margin-bottom: var(--space-md);
}

.form-page__aside .book-author img {
	width: 110px;
	height: 110px;
	aspect-ratio: 1;
	border-radius: 50%;
	margin: 0;
	flex-shrink: 0;
}

.book-author strong {
	display: block;
	font-family: var(--font-serif);
	font-size: 1.25rem;
	font-weight: 400;
	color: var(--color-forest);
}

.book-author span {
	font-size: 0.85rem;
	color: var(--color-ink-soft);
}

.book-contents {
	margin-bottom: var(--space-md);
}

.grt-form-card {
	background: #fff;
	border: 1px solid var(--color-border);
	border-top: 3px solid var(--color-forest);
	border-radius: 10px;
	box-shadow: 0 30px 60px -30px rgba(31, 61, 43, 0.28), 0 8px 20px -12px rgba(31, 61, 43, 0.12);
	padding: var(--space-md) clamp(1.25rem, 4vw, 3rem) clamp(1.5rem, 4vw, 3rem);
}

.grt-form-card .form-section-title {
	font-size: 1.3rem;
	display: flex;
	align-items: baseline;
	gap: 0.8rem;
	padding-bottom: 0.7rem;
	border-bottom: 1px solid var(--color-border);
}

.grt-form-card .form-section-title span {
	font-size: 0.9rem;
	color: var(--color-terracotta);
}

.grt-form-card input[type="text"],
.grt-form-card input[type="email"],
.grt-form-card input[type="number"],
.grt-form-card select,
.grt-form-card textarea {
	background: var(--color-ivory);
	border-radius: 6px;
	padding: 0.85em 1em;
}

.grt-form-card select:disabled {
	opacity: 0.55;
	cursor: not-allowed;
}

.grt-journey-picker {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: var(--space-sm) var(--space-md);
}

.form-hint {
	font-size: 0.82rem;
	color: var(--color-ink-soft);
	margin: 0.5rem 0 0;
}

.grt-submit {
	border: none;
	cursor: pointer;
	font-family: var(--font-sans);
	font-size: 0.78rem;
	font-weight: 500;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	padding: 1.05em 2.2em;
}

@media (max-width: 900px) {
	.form-page {
		grid-template-columns: 1fr;
		gap: var(--space-md);
	}
	.form-page__aside {
		position: static;
		order: 2;
	}
}

@media (max-width: 700px) {
	.grt-journey-picker {
		grid-template-columns: 1fr;
	}
}

/* --- Admin pipeline meta box (wp-admin only) --- */

.grt-pipeline-status {
	display: inline-block;
	font-size: 0.72rem;
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	padding: 0.3em 0.8em;
	border-radius: 999px;
	background: var(--color-paper);
	color: var(--color-forest);
	margin-bottom: 1rem;
}

.grt-pipeline-status--paid { background: var(--color-forest); color: var(--color-ivory); }

.journal-article__hero {
	max-width: 1100px;
	margin: var(--space-lg) auto;
}

@media (max-width: 700px) {
	.journal-article__hero {
		margin: var(--space-md) auto;
	}
}
