:root {
	--nicolas-blue: #003d5c;
	--nicolas-blue-dark: #002a3f;
	--nicolas-orange: #ff8c42;
	--nicolas-orange-dark: #e6741f;
	--nicolas-bg: #ffffff;
	--nicolas-bg-soft: #f5f8fa;
	--nicolas-text: #17262d;
	--nicolas-text-muted: #5b6f78;
	--font-heading: 'Open Sans', sans-serif;
	--font-body: 'Montserrat', sans-serif;
}

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

/* En mobile, sin esto, WebKit/Chrome pintan un flash gris/blanco translúcido
   encima de CUALQUIER link o botón al tocarlo (más notorio sobre fondos de
   color, como la barra azul del mega-menú) antes de que se vea el color de
   hover/focus real que definimos más abajo — se ve como si el elemento
   "cambiara a blanco" un instante. */
a,
button,
input,
select,
textarea,
[type="button"],
[type="submit"] {
	-webkit-tap-highlight-color: transparent;
}

body {
	font-family: var(--font-body);
	color: var(--nicolas-text);
}

h1, h2, h3, h4, h5, h6 {
	font-family: var(--font-heading);
}

/*
 * Hello Elementor (tema padre) trae un reset.css genérico que pinta:
 *  - cualquier <a> en hover/active de azul-violeta (#336)
 *  - cualquier <button>/[type=button]/[type=submit] en hover/focus de
 *    rosa/magenta (#c36) con texto blanco
 * Como nuestro main.css se carga después (depende de la hoja del padre),
 * con la misma o mayor especificidad ya le ganamos sin necesitar !important.
 * Acá dejamos la base de marca; cada componente puede seguir afinando su
 * propio color de hover/focus más abajo en este archivo.
 */
a {
	color: var(--nicolas-blue);
}

a:hover,
a:active,
a:focus {
	color: var(--nicolas-orange);
	text-decoration: none;
}

button,
[type="button"],
[type="submit"] {
	font-family: var(--font-body);
}

button:hover,
button:focus,
[type="button"]:hover,
[type="button"]:focus,
[type="submit"]:hover,
[type="submit"]:focus {
	background-color: var(--nicolas-blue);
	color: #fff;
}

input[type="date"]:focus,
input[type="email"]:focus,
input[type="number"]:focus,
input[type="password"]:focus,
input[type="search"]:focus,
input[type="tel"]:focus,
input[type="text"]:focus,
input[type="time"]:focus,
input[type="url"]:focus,
select:focus,
textarea:focus {
	border-color: var(--nicolas-orange);
	outline: none;
}

:focus-visible {
	outline: 2px solid var(--nicolas-orange);
	outline-offset: 2px;
}

.skip-link:focus {
	background: var(--nicolas-blue);
	color: #fff;
}

#nicolas-home {
	font-family: var(--font-body);
	color: var(--nicolas-text);
	background: var(--nicolas-bg);
}

#nicolas-home h1,
#nicolas-home h2,
#nicolas-home h3 {
	font-family: var(--font-heading);
	color: var(--nicolas-blue);
	margin: 0 0 .5em;
}

/* ===== Header: fila superior (buscador, cuenta, carrito) ===== */
.nicolas-site-header {
	position: sticky;
	top: 0;
	z-index: 100;
	box-shadow: 0 2px 12px rgba(0, 0, 0, .12);
	border-bottom: 3px solid var(--nicolas-orange);
}

.nicolas-topbar {
	background: #fff;
	border-bottom: 1px solid #eef2f4;
}

.nicolas-topbar-inner {
	display: flex;
	align-items: center;
	gap: 24px;
	min-height: 64px;
}

.nicolas-logo {
	display: flex;
	align-items: center;
	text-decoration: none;
}

.nicolas-logo img {
	max-height: 58px;
	width: auto;
	display: block;
}

.nicolas-drawer-head img {
	max-height: 44px;
	width: auto;
	display: block;
}

.nicolas-logo-text {
	font-family: var(--font-heading);
	font-weight: 800;
	color: var(--nicolas-blue);
	font-size: 1.3rem;
}

.nicolas-topbar-nav ul {
	display: flex;
	align-items: center;
	gap: 20px;
	list-style: none;
	margin: 0;
	padding: 0;
}

.nicolas-topbar-nav a {
	color: var(--nicolas-blue);
	text-decoration: none;
	font-weight: 600;
	font-size: .88rem;
	white-space: nowrap;
}

.nicolas-topbar-nav a:hover,
.nicolas-topbar-nav a:focus {
	color: var(--nicolas-orange);
}

.nicolas-topbar-switchers {
	display: flex;
	align-items: center;
	gap: 8px;
}

.nicolas-topbar-switchers select {
	border: 1px solid #d7e2e6;
	border-radius: 8px;
	padding: 5px 8px;
	font-family: var(--font-body);
	font-size: .82rem;
	color: var(--nicolas-blue);
	background: #fff;
	cursor: pointer;
}

.nicolas-topbar-switchers select:hover,
.nicolas-topbar-switchers select:focus {
	border-color: var(--nicolas-orange);
}

.nicolas-search {
	flex: 1;
	max-width: 460px;
}

.nicolas-topbar-actions {
	display: flex;
	align-items: center;
	gap: 22px;
	margin-left: auto;
}

.nicolas-topbar-link {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	color: var(--nicolas-blue);
	text-decoration: none;
	font-weight: 600;
	font-size: .88rem;
	white-space: nowrap;
}

.nicolas-topbar-link i {
	font-size: .85rem;
}

.nicolas-topbar-link:hover,
.nicolas-topbar-link:focus {
	color: var(--nicolas-orange);
}

.nicolas-cart-link {
	position: relative;
	display: flex;
	align-items: center;
	color: var(--nicolas-blue);
	font-size: 1.1rem;
}

.nicolas-cart-count {
	position: absolute;
	top: -8px;
	right: -10px;
	background: var(--nicolas-orange);
	color: #fff;
	font-size: .65rem;
	font-weight: 700;
	min-width: 18px;
	height: 18px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 0 4px;
}

/* Carrito lateral (plugin "Side Cart for WooCommerce", shortcode [xoo_wsc_cart]
   en .nicolas-cart-link) — mismo color/tamaño que el resto de íconos del
   topbar, el mismo naranja de marca para el contador. El panel deslizable en
   sí (fuera de .nicolas-cart-link) lo pinta el plugin solo, vía wp_footer. */
.nicolas-cart-link .xoo-wsc-sc-bki {
	font-size: 1.1rem;
	color: var(--nicolas-blue);
}

.nicolas-cart-link .xoo-wsc-sc-count {
	background: var(--nicolas-orange);
	color: #fff;
	font-size: .65rem;
	font-weight: 700;
}

.nicolas-cart-link .xoo-wsc-sc-subt {
	font-family: var(--font-body);
	font-size: .8rem;
	color: var(--nicolas-blue);
	margin-right: 6px;
}

/* ===== Header: mega menú ===== */
.nicolas-megabar {
	position: relative;
	background: var(--nicolas-blue);
}

.nicolas-megabar-inner {
	/* Sin position:relative a propósito: si esto queda posicionado, se
	   vuelve el contenedor de referencia de `.nicolas-mega-panel` en vez
	   de `.nicolas-megabar` (full-bleed) — el panel quedaría acotado a
	   los 1440px de este contenedor en vez de ocupar todo el viewport. */
}

.nicolas-mega-list {
	display: flex;
	align-items: center;
	gap: 2px;
	list-style: none;
	margin: 0;
	padding: 0;
}

.nicolas-mega-item {
	/* El panel ya no se ancla acá — ver `.nicolas-megabar` (posicionado) +
	   `.nicolas-mega-panel { left:0; right:0 }` para que se estire a todo
	   el ancho de pantalla en vez de quedar pegado al botón. */
}

/* El trigger se separó en 2 controles: `.nicolas-mega-trigger-label` (link
   real a la categoría, para que hacer click en el nombre navegue) y
   `.nicolas-mega-trigger-toggle` (solo la fecha, abre/cierra el panel) —
   antes era un único <button> sin href, así que el nombre de la categoría
   nunca llevaba a ningún lado. */
.nicolas-mega-trigger {
	display: flex;
	align-items: stretch;
	margin: 6px 0;
	border-radius: 999px;
	transition: background-color .15s ease;
}

.nicolas-mega-trigger:hover,
.nicolas-mega-trigger:focus-within,
.nicolas-mega-item.is-open .nicolas-mega-trigger {
	background: rgba(255, 255, 255, .14);
}

.nicolas-mega-trigger-label {
	display: flex;
	align-items: center;
	color: #eaf1f5;
	font-family: var(--font-body);
	font-weight: 600;
	font-size: .9rem;
	text-decoration: none;
	padding: 11px 4px 11px 16px;
	transition: color .15s ease;
}

.nicolas-mega-trigger:hover .nicolas-mega-trigger-label,
.nicolas-mega-trigger:focus-within .nicolas-mega-trigger-label,
.nicolas-mega-item.is-open .nicolas-mega-trigger-label {
	color: #fff;
}

.nicolas-mega-trigger-toggle {
	display: flex;
	align-items: center;
	justify-content: center;
	background: none;
	border: none;
	color: #eaf1f5;
	padding: 11px 16px 11px 4px;
	cursor: pointer;
	transition: color .15s ease;
}

.nicolas-mega-trigger:hover .nicolas-mega-trigger-toggle,
.nicolas-mega-trigger:focus-within .nicolas-mega-trigger-toggle,
.nicolas-mega-item.is-open .nicolas-mega-trigger-toggle {
	color: #fff;
}

.nicolas-mega-trigger-toggle i {
	font-size: .7rem;
	transition: transform .15s ease;
}

.nicolas-mega-item:hover .nicolas-mega-trigger-toggle i,
.nicolas-mega-item.is-open .nicolas-mega-trigger-toggle i {
	transform: rotate(180deg);
}

.nicolas-mega-item-simple > a {
	display: block;
	color: #eaf1f5;
	font-weight: 600;
	font-size: .9rem;
	padding: 11px 16px;
	margin: 6px 0;
	border-radius: 999px;
	text-decoration: none;
	transition: background-color .15s ease, color .15s ease;
}

.nicolas-mega-item-simple > a:hover,
.nicolas-mega-item-simple > a:focus {
	background: rgba(255, 255, 255, .14);
	color: #fff;
}

/* Panel del mega-menú v3 — a todo el ancho de pantalla (patrón típico de
   mega-menú real: Amazon, tiendas grandes), no un dropdown angosto pegado
   al botón. `.nicolas-mega-panel` se posiciona respecto de `.nicolas-megabar`
   (full-bleed, ver más arriba) con `left:0; right:0`, y adentro
   `.nicolas-mega-panel-container` (clase `nicolas-container`, mismo
   max-width:1440px que el resto del header) centra el contenido para que
   no quede estirado de punta a punta en pantallas muy anchas.
   Columna izquierda: foto grande del primer tour real con nombre+bajada
   superpuestos (mismo recurso que el banner de producto y el CTA final con
   foto). Columna derecha: hasta 3 tours en fila horizontal, mismo patrón
   visual que las sugerencias de FiboSearch (thumb + texto en fila). */
.nicolas-mega-panel {
	position: absolute;
	top: 100%;
	left: 0;
	right: 0;
	width: 100%;
	background: #fff;
	border-top: 3px solid var(--nicolas-orange);
	box-shadow: 0 18px 34px rgba(0, 0, 0, .18);
	padding: 30px 0;
	opacity: 0;
	visibility: hidden;
	transform: translateY(-6px);
	transition: opacity .15s ease, transform .15s ease, visibility .15s ease;
	z-index: 50;
}

.nicolas-mega-item:hover .nicolas-mega-panel,
.nicolas-mega-item.is-open .nicolas-mega-panel {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}

.nicolas-mega-panel-inner {
	display: flex;
	justify-content: center;
	gap: 28px;
}

.nicolas-mega-visual {
	position: relative;
	flex: 0 0 200px;
	min-height: 250px;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	border-radius: 12px;
	overflow: hidden;
	background-color: var(--nicolas-bg-soft);
	background-size: cover;
	background-position: center;
	padding: 18px;
	text-decoration: none;
}

.nicolas-mega-visual::before {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(0, 20, 30, 0) 35%, rgba(0, 20, 30, .82) 100%);
}

.nicolas-mega-visual-name,
.nicolas-mega-visual-bajada,
.nicolas-mega-visual-cta {
	position: relative;
	z-index: 1;
}

.nicolas-mega-visual-name {
	display: block;
	color: #fff;
	font-family: var(--font-heading);
	font-weight: 700;
	font-size: 1.1rem;
	line-height: 1.25;
}

.nicolas-mega-visual-bajada {
	display: block;
	color: rgba(255, 255, 255, .85);
	font-size: .82rem;
	margin-top: 4px;
}

.nicolas-mega-visual-cta {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	color: var(--nicolas-orange);
	font-weight: 700;
	font-size: .82rem;
	margin-top: 10px;
}

.nicolas-mega-visual:hover .nicolas-mega-visual-cta,
.nicolas-mega-visual:focus .nicolas-mega-visual-cta {
	color: #fff;
}

.nicolas-mega-products {
	flex: 0 0 280px;
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 4px;
	list-style: none;
	margin: 0;
	padding: 0;
}

.nicolas-mega-product a {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 8px;
	border-radius: 10px;
	text-decoration: none;
	transition: background-color .15s ease;
}

.nicolas-mega-product a:hover,
.nicolas-mega-product a:focus {
	background: var(--nicolas-bg-soft);
}

.nicolas-mega-product-img {
	flex: 0 0 56px;
	width: 56px;
	height: 56px;
	border-radius: 8px;
	overflow: hidden;
	background: var(--nicolas-bg-soft);
}

.nicolas-mega-product-img img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.nicolas-mega-product-text {
	flex: 1;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.nicolas-mega-product-title {
	color: var(--nicolas-text);
	font-size: .85rem;
	font-weight: 600;
	line-height: 1.3;
}

.nicolas-mega-product a:hover .nicolas-mega-product-title,
.nicolas-mega-product a:focus .nicolas-mega-product-title {
	color: var(--nicolas-blue);
}

.nicolas-mega-product-price {
	color: var(--nicolas-orange-dark);
	font-weight: 700;
	font-size: .82rem;
}

/* Columna de destacados — llena el espacio que sobra a la derecha del
   panel full-width (Decisión 35) con 4 razones de venta acordes a la
   categoría, en grilla 2x2 (texto editable en el panel, ícono fijo por
   categoría, ver nicolas_mega_menu_highlight_icons() en
   woocommerce-setup.php). Ancho propio (no flex:1) para que el grupo
   completo (visual + tours + destacados) quede centrado dentro del panel
   en vez de pegado al borde izquierdo. */
.nicolas-mega-highlights {
	flex: 0 0 260px;
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	align-content: center;
	gap: 16px 18px;
	padding-left: 24px;
	border-left: 1px solid #eef1f2;
}

.nicolas-mega-highlight {
	display: flex;
	align-items: center;
	gap: 10px;
}

.nicolas-mega-highlight-icon {
	flex: 0 0 34px;
	width: 34px;
	height: 34px;
	border-radius: 50%;
	background: var(--nicolas-bg-soft);
	color: var(--nicolas-orange);
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: .85rem;
}

.nicolas-mega-highlight-text {
	color: var(--nicolas-blue);
	font-family: var(--font-body);
	font-weight: 600;
	font-size: .8rem;
	line-height: 1.3;
}

/* ===== Menú mobile: panel lateral desde la izquierda ===== */
.nicolas-drawer-toggle-input {
	display: none;
}

.nicolas-hamburger {
	display: none;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	border-radius: 50%;
	color: var(--nicolas-blue);
	font-size: 1.1rem;
	cursor: pointer;
}

.nicolas-hamburger:hover {
	background: var(--nicolas-bg-soft);
}

.nicolas-drawer-overlay {
	position: fixed;
	inset: 0;
	background: rgba(0, 20, 30, .55);
	opacity: 0;
	visibility: hidden;
	transition: opacity .25s ease, visibility .25s ease;
	z-index: 200;
}

.nicolas-drawer {
	position: fixed;
	top: 0;
	left: 0;
	height: 100vh;
	width: min(320px, 85vw);
	background: #fff;
	z-index: 201;
	display: flex;
	flex-direction: column;
	transform: translateX(-100%);
	transition: transform .3s ease;
	box-shadow: 12px 0 32px rgba(0, 0, 0, .2);
	overflow-y: auto;
}

.nicolas-drawer-toggle-input:checked ~ .nicolas-drawer-overlay {
	opacity: 1;
	visibility: visible;
}

.nicolas-drawer-toggle-input:checked ~ .nicolas-drawer {
	transform: translateX(0);
}

.nicolas-drawer-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 14px 20px;
	border-bottom: 1px solid #eef2f4;
}

.nicolas-drawer-head .nicolas-logo-text {
	color: var(--nicolas-blue);
}

.nicolas-drawer-close {
	color: var(--nicolas-blue);
	font-size: 1.2rem;
	cursor: pointer;
	width: 32px;
	height: 32px;
	display: flex;
	align-items: center;
	justify-content: center;
	border-radius: 50%;
}

.nicolas-drawer-close:hover {
	background: var(--nicolas-bg-soft);
	color: var(--nicolas-orange);
}

.nicolas-drawer-search {
	max-width: none;
	padding: 10px 20px 0;
}

.nicolas-drawer-nav {
	flex: 1;
	padding: 4px 20px;
}

.nicolas-drawer-nav .nicolas-mega-list {
	flex-direction: column;
	align-items: stretch;
	gap: 0;
}

.nicolas-drawer-nav .nicolas-mega-trigger,
.nicolas-drawer-nav .nicolas-mega-item-simple > a {
	width: 100%;
	justify-content: space-between;
	margin: 0;
	border-radius: 0;
	border-bottom: 1px solid #eef2f4;
}

.nicolas-drawer-nav .nicolas-mega-trigger:hover,
.nicolas-drawer-nav .nicolas-mega-item.is-open .nicolas-mega-trigger {
	background: transparent;
}

.nicolas-drawer-nav .nicolas-mega-trigger-label,
.nicolas-drawer-nav .nicolas-mega-item-simple > a {
	padding: 12px 2px;
	color: var(--nicolas-blue);
}

.nicolas-drawer-nav .nicolas-mega-trigger-toggle {
	padding: 12px 8px;
	color: var(--nicolas-blue);
}

.nicolas-drawer-nav .nicolas-mega-trigger-label:hover,
.nicolas-drawer-nav .nicolas-mega-trigger-label:focus-visible,
.nicolas-drawer-nav .nicolas-mega-trigger-toggle:hover,
.nicolas-drawer-nav .nicolas-mega-trigger-toggle:focus-visible,
.nicolas-drawer-nav .nicolas-mega-item-simple > a:hover,
.nicolas-drawer-nav .nicolas-mega-item-simple > a:focus {
	color: var(--nicolas-orange);
}

.nicolas-drawer-nav .nicolas-mega-panel {
	position: static;
	width: auto;
	opacity: 1;
	visibility: visible;
	transform: none;
	box-shadow: none;
	border-radius: 10px;
	border-top: none;
	background: var(--nicolas-bg-soft);
	padding: 4px 16px 14px;
	margin: 4px 0 8px;
	display: none;
}

/* El wrapper `.nicolas-container` que centra el panel a 1440px en escritorio
   sobraría acá (el drawer ya es angosto y trae su propio padding arriba) —
   se anula para no duplicar el padding lateral. */
.nicolas-drawer-nav .nicolas-mega-panel-container {
	max-width: none;
	margin: 0;
	padding: 0;
}

.nicolas-drawer-nav .nicolas-mega-item.is-open .nicolas-mega-panel {
	display: block;
}

/* El drawer es angosto — se saca la foto grande de categoría (no entra bien
   en un panel angosto) y se deja solo la lista de tours en fila, que ya es
   mobile-friendly de por sí. */
.nicolas-drawer-nav .nicolas-mega-visual,
.nicolas-drawer-nav .nicolas-mega-highlights {
	display: none;
}

.nicolas-drawer-nav .nicolas-mega-panel-inner {
	display: block;
}

.nicolas-drawer-nav .nicolas-mega-products {
	gap: 2px;
}

.nicolas-drawer-nav .nicolas-mega-product a {
	padding: 8px 2px;
}

.nicolas-drawer-foot {
	padding: 14px 20px;
	border-top: 1px solid #eef2f4;
}

.nicolas-drawer-switchers {
	display: flex;
	gap: 10px;
	margin-bottom: 10px;
}

.nicolas-drawer-switchers .nicolas-currency-switcher-form,
.nicolas-drawer-switchers .nicolas-lang-switcher {
	flex: 1;
}

.nicolas-drawer-switchers select {
	width: 100%;
	border: 1px solid #d7e2e6;
	border-radius: 8px;
	padding: 8px 10px;
	font-family: var(--font-body);
	font-size: .85rem;
	color: var(--nicolas-blue);
	background: #fff;
}

.nicolas-drawer-foot .nicolas-btn {
	width: 100%;
}

.nicolas-drawer-account {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	margin-top: 10px;
	color: var(--nicolas-blue);
	font-weight: 600;
	font-size: .9rem;
}

.nicolas-drawer-account:hover,
.nicolas-drawer-account:focus {
	color: var(--nicolas-orange);
}

@media (max-width: 900px) {
	.nicolas-hamburger {
		display: flex;
	}

	.nicolas-topbar-nav,
	.nicolas-topbar-switchers,
	.nicolas-account-link,
	.nicolas-topbar-search {
		display: none;
	}

	.nicolas-topbar-inner {
		flex-wrap: wrap;
		min-height: auto;
		padding: 14px 24px;
	}

	.nicolas-megabar {
		display: none;
	}
}

@media (min-width: 901px) {
	.nicolas-hamburger,
	.nicolas-drawer,
	.nicolas-drawer-overlay {
		display: none !important;
	}
}

/* ===== Footer ===== */
.nicolas-site-footer {
	background: var(--nicolas-blue-dark);
	color: #cfe1e9;
	padding-top: 56px;
}

.nicolas-footer-grid {
	display: grid;
	grid-template-columns: 1.4fr repeat(4, 1fr) auto;
	gap: 32px;
	padding-bottom: 40px;
}

.nicolas-footer-social {
	display: flex;
	gap: 12px;
}

.nicolas-footer-social a {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	border-radius: 50%;
	border: 1px solid rgba(255, 255, 255, .3);
	color: #fff;
	text-decoration: none;
	font-size: 1rem;
}

.nicolas-footer-social a:hover,
.nicolas-footer-social a:focus {
	background: var(--nicolas-orange);
	border-color: var(--nicolas-orange);
	color: #fff;
}

.nicolas-footer-col-badge {
	text-align: center;
}

.nicolas-footer-col-badge h3 {
	font-size: clamp(0.7rem, calc(0.56rem + 0.2vw), 0.88rem);
	text-transform: uppercase;
	max-width: 140px;
	margin: 0 auto 14px;
}

.nicolas-footer-badge {
	max-height: 56px;
	width: auto;
}

.nicolas-footer-col h3 {
	color: #fff;
	font-size: clamp(0.95rem, calc(0.58rem + 0.39vw), 1.21rem);
}

.nicolas-footer-col p {
	color: #b9cdd6;
	font-size: clamp(0.9rem, calc(0.7rem + 0.25vw), 1.1rem);
	margin-bottom: 20px;
}

.nicolas-footer-logo {
	display: block;
	margin-bottom: 12px;
}

.nicolas-footer-logo img {
	max-height: 76px;
	width: auto;
}

/* Fallback si `nicolas_footer_logo_html()` no encuentra el archivo blanco
   real y cae al logo normal (azul marino, invisible sobre el footer oscuro):
   lo pasamos a blanco con un filtro. No se aplica al logo blanco real
   (que ya trae la clase `nicolas-logo-img-white` y no la necesita). */
.nicolas-footer-logo img:not(.nicolas-logo-img-white) {
	filter: brightness(0) invert(1);
}

.nicolas-footer-logo .nicolas-logo-text {
	color: #fff;
}

.nicolas-footer-links {
	list-style: none;
	margin: 0;
	padding: 0;
}

.nicolas-footer-links li + li {
	margin-top: 10px;
}

.nicolas-footer-links a {
	color: #cfe1e9;
	text-decoration: none;
}

.nicolas-footer-links a:hover,
.nicolas-footer-links a:focus {
	color: var(--nicolas-orange);
}

.nicolas-footer-links-icon li {
	display: flex;
	align-items: flex-start;
	gap: 12px;
}

.nicolas-footer-links-icon i {
	color: var(--nicolas-orange);
	font-size: 1.1rem;
	margin-top: 3px;
}

.nicolas-footer-links-icon span {
	display: block;
}

.nicolas-footer-links-icon strong {
	display: block;
	color: #fff;
	font-size: .82rem;
	text-transform: uppercase;
	letter-spacing: .02em;
	margin-bottom: 2px;
}

.nicolas-footer-links-icon a {
	color: #cfe1e9;
	text-decoration: none;
}

.nicolas-footer-links-icon a:hover,
.nicolas-footer-links-icon a:focus {
	color: var(--nicolas-orange);
}

.nicolas-footer-libro {
	display: inline-flex;
	flex-direction: column;
	align-items: center;
	gap: 8px;
	margin-top: 24px;
	color: #fff;
	text-decoration: none;
	text-align: center;
	font-size: .8rem;
	font-weight: 600;
	text-transform: uppercase;
}

.nicolas-footer-libro i {
	font-size: 1.6rem;
	color: #fff;
}

.nicolas-footer-libro:hover,
.nicolas-footer-libro:focus {
	color: var(--nicolas-orange);
}

.nicolas-footer-libro:hover i,
.nicolas-footer-libro:focus i {
	color: var(--nicolas-orange);
}

.nicolas-footer-bottom {
	border-top: 1px solid rgba(255, 255, 255, .12);
	padding: 18px 0;
	margin-top: 8px;
}

.nicolas-footer-bottom p {
	margin: 0;
	color: #9db3bc;
	font-size: clamp(0.75rem, calc(0.6rem + 0.21vw), 0.94rem);
	text-align: center;
}

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

.nicolas-container {
	max-width: 1440px;
	margin: 0 auto;
	padding: 0 24px;
}

/* Botones */
.nicolas-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 14px 28px;
	border-radius: 999px;
	font-weight: 600;
	text-decoration: none;
	transition: transform .15s ease, background-color .15s ease, color .15s ease;
	white-space: nowrap;
}

.nicolas-btn-primary {
	background: var(--nicolas-orange);
	color: #fff;
}

.nicolas-btn-primary:hover,
.nicolas-btn-primary:focus {
	background: var(--nicolas-orange-dark);
	transform: translateY(-2px);
	color: #fff;
}

.nicolas-btn-outline {
	background: transparent;
	color: #fff;
	border: 2px solid #fff;
}

.nicolas-btn-outline:hover,
.nicolas-btn-outline:focus {
	background: #fff;
	color: var(--nicolas-blue);
	transform: translateY(-2px);
}

.nicolas-btn-ghost {
	background: transparent;
	color: var(--nicolas-blue);
	border: 2px solid var(--nicolas-blue);
	padding: 10px 22px;
}

.nicolas-btn-ghost:hover,
.nicolas-btn-ghost:focus {
	background: var(--nicolas-blue);
	color: #fff;
}

.nicolas-section-more {
	text-align: center;
	margin-top: 32px;
}

/* Hero slider (motor: Swiper.js, self-hosted en assets/vendor/swiper) */
.nicolas-hero {
	position: relative;
	isolation: isolate;
}

.nicolas-hero-swiper {
	overflow: hidden;
}

.nicolas-hero-slide {
	position: relative;
	/* z-index explícito para que el slide forme su propio contexto de
	   apilamiento — si no, el `z-index:-1` del video (más abajo) se escapa a
	   compararse con elementos de afuera del slide en vez de quedar
	   contenido acá adentro (mismo bug/arreglo documentado en la Decisión 43). */
	z-index: 0;
	background-color: var(--nicolas-blue);
	background-size: cover;
	background-position: center;
	min-height: min(640px, 88vh);
	display: flex;
	align-items: center;
	padding: 120px 0 90px;
	overflow: hidden;
}

/*
 * Overlay más suave sobre la foto (antes .75/.55, se veía muy oscuro y
 * tapaba la imagen). Va en un ::before separado de la imagen de fondo para
 * poder ajustar la opacidad acá sin tocar el HTML.
 */
.nicolas-hero-slide::before {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(0, 41, 61, .45), rgba(0, 41, 61, .2));
	z-index: 0;
}

/* Video de fondo del slide (alternativa a la foto, ver panel Nicolas →
   Inicio → Hero) — mismo lugar que ocuparía la imagen de fondo, pero como
   es un elemento real (no un `background-image`) necesita z-index negativo
   propio para quedar detrás del overlay oscuro y del texto. */
.nicolas-hero-slide-video {
	position: absolute;
	inset: 0;
	z-index: -1;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.nicolas-hero-slide > .nicolas-container {
	position: relative;
	z-index: 1;
}

.nicolas-hero-inner {
	text-align: center;
	max-width: 760px;
	margin: 0 auto;
}

/*
 * Con #id (#nicolas-home h1 más arriba) le gana en especificidad a una
 * clase normal aunque esta esté declarada después: por eso el título del
 * hero salía azul en vez de blanco. Acá lo calificamos con el mismo #id
 * para empatar y ganar por orden de declaración.
 */
#nicolas-home .nicolas-hero-inner h1,
#nicolas-home .nicolas-hero-inner h2 {
	color: #fff;
	font-size: clamp(2rem, calc(1.28rem + 1.6vw), 3.84rem);
	font-weight: 800;
}

.nicolas-hero-inner p {
	color: #eaf1f5;
	font-size: clamp(1rem, calc(0.63rem + 0.43vw), 1.32rem);
	margin-bottom: 2em;
}

.nicolas-hero-ctas {
	display: flex;
	gap: 16px;
	flex-wrap: wrap;
	justify-content: center;
}

.nicolas-hero-badge {
	display: inline-block;
	background: rgba(0, 0, 0, .35);
	color: #fff;
	font-size: .72rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .04em;
	padding: 8px 16px;
	border-radius: 999px;
	margin-bottom: 18px;
}

/* Tarjeta flotante "Tour destacado" — vive fuera del track, su contenido
   se actualiza por JS (hero-slider.js) cuando cambia el slide activo */
.nicolas-hero-feature {
	position: absolute;
	right: 32px;
	bottom: 32px;
	z-index: 6;
	width: 250px;
	background: rgba(0, 29, 43, .74);
	backdrop-filter: blur(6px);
	color: #fff;
	padding: 22px 24px;
	border-radius: 16px;
}

.nicolas-hero-feature-eyebrow {
	display: block;
	font-size: .7rem;
	text-transform: uppercase;
	letter-spacing: .06em;
	color: #9fd8c2;
	font-weight: 700;
	margin-bottom: 8px;
}

.nicolas-hero-feature-title {
	display: block;
	font-family: var(--font-heading);
	font-size: 1.05rem;
	line-height: 1.35;
	margin-bottom: 14px;
}

.nicolas-hero-feature-link {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	color: var(--nicolas-orange);
	font-weight: 700;
	font-size: .85rem;
	text-decoration: none;
	margin-bottom: 18px;
}

.nicolas-hero-feature-link:hover,
.nicolas-hero-feature-link:focus {
	color: #fff;
}

.nicolas-hero-feature-controls {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	border-top: 1px solid rgba(255, 255, 255, .18);
	padding-top: 14px;
}

.nicolas-hero-arrow {
	flex: 0 0 auto;
	width: 32px;
	height: 32px;
	border-radius: 50%;
	border: none;
	background: rgba(255, 255, 255, .16);
	color: #fff;
	font-size: .85rem;
	cursor: pointer;
	transition: background-color .15s ease;
}

.nicolas-hero-arrow:hover,
.nicolas-hero-arrow:focus-visible {
	background: rgba(255, 255, 255, .32);
}

.nicolas-hero-dots {
	display: flex;
	gap: 8px;
}

.nicolas-hero-dot {
	width: 8px;
	height: 8px;
	border-radius: 50%;
	border: 2px solid rgba(255, 255, 255, .6);
	background: transparent;
	padding: 0;
	cursor: pointer;
	transition: background-color .15s ease, border-color .15s ease;
}

.nicolas-hero-dot:hover,
.nicolas-hero-dot:focus-visible {
	background: rgba(255, 255, 255, .35);
	border-color: #fff;
}

.nicolas-hero-dot.is-active {
	background: var(--nicolas-orange);
	border-color: var(--nicolas-orange);
}

@media (max-width: 700px) {
	.nicolas-hero-slide {
		padding-top: 190px;
	}

	.nicolas-hero-feature {
		top: 20px;
		right: 16px;
		bottom: auto;
		left: auto;
		width: 168px;
		padding: 14px 16px;
	}

	.nicolas-hero-feature-eyebrow {
		font-size: .6rem;
		margin-bottom: 4px;
	}

	.nicolas-hero-feature-title {
		font-size: .82rem;
		margin-bottom: 8px;
		line-height: 1.25;
	}

	.nicolas-hero-feature-link {
		font-size: .72rem;
		margin-bottom: 10px;
	}

	.nicolas-hero-feature-controls {
		padding-top: 8px;
		gap: 6px;
	}

	.nicolas-hero-arrow {
		width: 24px;
		height: 24px;
		font-size: .65rem;
	}
}

/*
 * Barra de confianza (TripAdvisor / Google): dos tarjetas blancas separadas
 * montadas sobre el borde del hero, cada una con ícono + marca + puntaje,
 * con un acento naranja de marca en vez de copiar el estilo/colores del
 * sitio de referencia tal cual.
 */
.nicolas-trustbar {
	position: relative;
	z-index: 5;
	margin-top: -32px;
	display: flex;
	justify-content: center;
	gap: 24px;
	flex-wrap: wrap;
}

.nicolas-trust-card {
	display: flex;
	align-items: center;
	gap: 16px;
	background: #fff;
	border-radius: 14px;
	box-shadow: 0 12px 28px rgba(0, 61, 92, .16);
	padding: 18px 26px;
	text-decoration: none;
	color: inherit;
	transition: transform .15s ease, box-shadow .15s ease;
}

.nicolas-trust-card:hover,
.nicolas-trust-card:focus {
	transform: translateY(-3px);
	box-shadow: 0 16px 34px rgba(0, 61, 92, .22);
	color: inherit;
}

.nicolas-trust-card-icon {
	width: 52px;
	height: 52px;
	border-radius: 50%;
	object-fit: cover;
	flex: 0 0 auto;
}

.nicolas-trust-card-brand {
	display: flex;
	flex-direction: column;
	line-height: 1.4;
}

.nicolas-trust-card-brand strong {
	font-family: var(--font-heading);
	font-weight: 800;
	font-size: 1.05rem;
	color: var(--nicolas-blue);
}

.nicolas-trust-card-brand span {
	color: var(--nicolas-text-muted);
	font-size: .8rem;
}

.nicolas-trust-card-divider {
	width: 1px;
	align-self: stretch;
	background: #e7edf0;
}

.nicolas-trust-card-score {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 2px;
}

.nicolas-trust-card-score strong {
	font-family: var(--font-heading);
	font-weight: 800;
	font-size: 1.5rem;
	color: var(--nicolas-blue);
	line-height: 1;
}

.nicolas-trust-card-score strong small {
	font-size: .9rem;
	font-weight: 600;
	color: var(--nicolas-text-muted);
}

.nicolas-trust-card-stars {
	color: #ffb400;
	font-size: .85rem;
	letter-spacing: 1px;
}

.nicolas-trust-card-count {
	color: var(--nicolas-text-muted);
	font-size: .75rem;
	white-space: nowrap;
}

@media (max-width: 640px) {
	.nicolas-trustbar {
		flex-direction: column;
		align-items: stretch;
		gap: 14px;
	}

	.nicolas-trust-card {
		justify-content: space-between;
	}
}

@media (max-width: 360px) {
	.nicolas-trust-card {
		padding: 14px 16px;
		gap: 10px;
	}

	.nicolas-trust-card-brand span {
		display: none;
	}
}

/* Franja de confianza */
.nicolas-trust {
	background: var(--nicolas-bg-soft);
	padding: 40px 0;
	border-bottom: 1px solid #e3edf1;
}

.nicolas-trust-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: 24px;
	text-align: center;
}

.nicolas-trust-grid i {
	display: block;
	color: var(--nicolas-orange);
	font-size: 1.6rem;
	margin-bottom: 8px;
}

.nicolas-trust-grid strong {
	display: block;
	font-family: var(--font-heading);
	color: var(--nicolas-blue);
	margin-bottom: 4px;
}

.nicolas-trust-grid span {
	color: var(--nicolas-text-muted);
	font-size: .95rem;
}

/* Secciones de categoría */
.nicolas-section {
	padding: 64px 0;
}

.nicolas-section:nth-of-type(even) {
	background: var(--nicolas-bg-soft);
}

/* Fondo de textura (foto de agua en azul marino, la trajo el cliente) detrás
   de TODAS las secciones de categoría, a todo el ancho de pantalla — cubre
   `#tours` entero (el wrapper que agrupa las secciones en front-page.php),
   no cada sección por separado. Dentro, se anula el banding claro/gris
   alternado y el texto pasa a blanco para que siga siendo legible; las
   tarjetas de producto (blancas, con sombra) no se tocan — ya contrastan
   bien solas contra el fondo oscuro. */
.nicolas-tours-bg {
	position: relative;
	z-index: 0;
	background-color: var(--nicolas-blue);
}

/*
 * La foto va en un ::before separado (no directo en `.nicolas-tours-bg`)
 * para poder desvanecerla justo en su propio borde inferior: el `::before`
 * se dimensiona con `aspect-ratio` (mismo ratio real del archivo,
 * 2560×2386) en vez de `background-size:contain`, así su alto SIEMPRE
 * coincide con el alto que la foto ocuparía con `contain` a ese ancho —
 * y recién ahí el degradé de `mask-image` (a transparente en el 100%)
 * cae exactamente donde termina la foto, no en un punto fijo que se
 * desalinearía en otros anchos de pantalla. Lo que el degradé destapa es
 * el `background-color` de `.nicolas-tours-bg` (el elemento de atrás),
 * por eso se fusiona sin costura. El `z-index:0` en `.nicolas-tours-bg`
 * es necesario (no solo `position:relative`) para que ese elemento forme
 * su propio contexto de apilamiento — si no, el `::before` con
 * `z-index:-1` se escapa al contexto del ancestro de más arriba y el
 * `background-color` de `.nicolas-tours-bg` (pintado ahí como elemento
 * posicionado) termina tapando la foto en vez de quedar detrás.
 */
.nicolas-tours-bg::before {
	content: '';
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	z-index: -1;
	aspect-ratio: 2560 / 2386;
	background-image: var(--nicolas-tours-bg-image);
	background-size: contain;
	background-position: top center;
	background-repeat: no-repeat;
	-webkit-mask-image: linear-gradient(to bottom, #000 55%, transparent 100%);
	mask-image: linear-gradient(to bottom, #000 55%, transparent 100%);
}

/* Menos aire entre categorías consecutivas que el resto de secciones del
   sitio (64px) — acá van una pegada a la otra sobre el mismo fondo, así
   que no hace falta tanto respiro. */
.nicolas-tours-bg .nicolas-section {
	padding: 32px 0;
}

.nicolas-tours-bg .nicolas-section:nth-of-type(even) {
	background: transparent;
}

.nicolas-tours-bg .nicolas-section-head h2,
.nicolas-tours-bg .nicolas-section-head p {
	color: #fff !important;
}

.nicolas-tours-bg .nicolas-btn-ghost {
	color: #fff;
	border-color: #fff;
}

.nicolas-tours-bg .nicolas-btn-ghost:hover,
.nicolas-tours-bg .nicolas-btn-ghost:focus {
	background: #fff;
	color: var(--nicolas-blue);
}

.nicolas-section-head {
	margin-bottom: 32px;
	max-width: 640px;
}

.nicolas-section-head h2 {
	font-size: clamp(1.4rem, calc(0.72rem + 0.9vw), 2.16rem);
	font-weight: 800;
	position: relative;
	padding-bottom: 14px;
}

.nicolas-section-head h2::after {
	content: '';
	position: absolute;
	left: 0;
	bottom: 0;
	width: 48px;
	height: 4px;
	border-radius: 999px;
	background: var(--nicolas-orange);
}

.nicolas-section-head p {
	color: var(--nicolas-text-muted);
	font-size: clamp(0.95rem, calc(0.55rem + 0.38vw), 1.15rem);
	margin: 0;
}

/*
 * Grid de productos (WooCommerce) — usado en home, tienda y relacionados.
 * auto-fit (no auto-fill): si hay menos tarjetas que columnas posibles
 * (ej. 3 tarjetas en una sección del home), las columnas vacías se colapsan
 * y las 3 reales se estiran para ocupar todo el ancho del contenedor en vez
 * de quedar apretadas a la izquierda con hueco vacío a la derecha.
 */
ul.products {
	display: grid !important;
	grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
	gap: 32px;
	list-style: none;
	margin: 0;
	padding: 0;
}

/*
 * WooCommerce mete un clearfix (::before/::after con content:" "; display:table)
 * como primer/último hijo de ul.products para su layout de floats. En un grid,
 * ese ::before pasa a ser una celda más del grid (vacía), corriendo todas las
 * tarjetas una posición y dejando un hueco fantasma al inicio. No hace falta
 * clearfix con grid, así que lo desactivamos.
 */
ul.products::before,
ul.products::after {
	content: none !important;
	display: none !important;
}

/*
 * WooCommerce trae su propio woocommerce-layout.css con reglas
 * ".woocommerce-page ul.products li.product { float:left; width:22.05%; ... }"
 * que pesan más que un simple "ul.products li.product" nuestro (3 clases vs 2).
 * Por eso todo lo estructural va con !important: si no, las tarjetas se
 * encogen al 22% del ancho dentro de la celda del grid en vez de ocuparla.
 */
ul.products li.product {
	float: none !important;
	width: 100% !important;
	margin: 0 !important;
	padding: 0 !important;
	list-style: none;
}

/*
 * Tarjeta: imagen + insignia de categoría + rating + meta + precio + CTA.
 * Todas las tarjetas de una fila deben verse simétricas aunque el nombre del
 * producto sea largo: la tarjeta ocupa el 100% del alto de su celda del grid
 * (por defecto en CSS Grid) y por dentro es un flex column con el footer
 * (precio + botón) pegado abajo con margin-top:auto, así el botón siempre
 * queda a la misma altura sin importar cuántas líneas tenga el título.
 */
.nicolas-card {
	height: 100%;
	display: flex;
	flex-direction: column;
	background: #fff;
	border-radius: 16px;
	overflow: hidden;
	box-shadow: 0 4px 18px rgba(0, 61, 92, .08);
	transition: transform .2s ease, box-shadow .2s ease;
}

.nicolas-card:hover {
	transform: translateY(-4px);
	box-shadow: 0 10px 28px rgba(0, 61, 92, .16);
}

.nicolas-card-link {
	display: flex;
	flex-direction: column;
	flex: 1;
	color: inherit;
	text-decoration: none;
}

.nicolas-card-media {
	position: relative;
	flex: 0 0 auto;
}

.nicolas-card-media img {
	width: 100% !important;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	display: block;
	margin: 0 !important;
}

.nicolas-card-badge {
	position: absolute;
	top: 14px;
	left: 14px;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	background: var(--nicolas-blue);
	color: #fff;
	font-size: .78rem;
	font-weight: 600;
	padding: 6px 12px;
	border-radius: 999px;
}

.nicolas-card-dot {
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: #4ad991;
	display: inline-block;
}

.nicolas-card-badge-location {
	position: absolute;
	top: 14px;
	right: 14px;
	background: rgba(255, 255, 255, .92);
	color: var(--nicolas-blue);
	font-size: .78rem;
	font-weight: 600;
	padding: 6px 12px;
	border-radius: 999px;
}

.nicolas-card-body {
	padding: 22px 24px 26px;
	display: flex;
	flex-direction: column;
	flex: 1;
}

.nicolas-card-title {
	font-family: var(--font-heading);
	font-size: 1rem;
	color: var(--nicolas-text);
	margin: 0 0 12px;
	line-height: 1.4;
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
	line-clamp: 2;
	overflow: hidden;
	text-overflow: ellipsis;
}

.nicolas-card-rating {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-bottom: 10px;
	font-size: .82rem;
	color: var(--nicolas-text-muted);
}

.nicolas-card-rating .star-rating {
	color: var(--nicolas-orange);
	font-size: .9rem;
}

.nicolas-card-meta {
	color: var(--nicolas-text-muted);
	font-size: .82rem;
	margin-bottom: 18px;
}

.nicolas-card-footer {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 12px 16px;
	margin-top: auto;
	padding-top: 14px;
}

.nicolas-card-price {
	display: flex;
	flex-direction: column;
	font-size: .76rem;
	color: var(--nicolas-text-muted);
	white-space: nowrap;
}

.nicolas-card-price strong {
	color: var(--nicolas-blue);
	font-family: var(--font-heading);
	font-size: 1.15rem;
	font-weight: 700;
}

.nicolas-card-price .price {
	color: var(--nicolas-blue);
}

.nicolas-card-cta {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	background: var(--nicolas-blue);
	color: #fff;
	font-size: .8rem;
	font-weight: 600;
	padding: 10px 16px;
	border-radius: 999px;
	white-space: nowrap;
	flex: 0 0 auto;
	transition: background-color .15s ease;
}

@media (max-width: 400px) {
	.nicolas-card-footer {
		flex-direction: column;
		align-items: stretch;
	}

	.nicolas-card-cta {
		justify-content: center;
	}
}

.nicolas-card:hover .nicolas-card-cta {
	background: var(--nicolas-orange);
}

.nicolas-google-reviews {
	padding: 64px 0;
	background: var(--nicolas-bg-soft);
}

.nicolas-tripadvisor-reviews {
	padding: 64px 0;
	background: var(--nicolas-bg);
}

/* CTA final */
.nicolas-cta-final {
	background: #fff;
	border-top: 3px solid var(--nicolas-orange);
	padding: 56px 0;
}

.nicolas-cta-final-has-image {
	position: relative;
	background-size: cover;
	background-position: center;
	isolation: isolate;
}

.nicolas-cta-final-has-image::before {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(90deg, rgba(0, 61, 92, .88), rgba(0, 61, 92, .6));
	z-index: -1;
}

.nicolas-cta-final-has-image h2,
.nicolas-cta-final-has-image p {
	color: #fff;
}

.nicolas-cta-final-has-image .nicolas-cta-payments-label,
.nicolas-cta-final-has-image .nicolas-cta-payments-label i {
	color: #fff;
}

.nicolas-cta-final-inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 40px;
	flex-wrap: wrap;
}

.nicolas-cta-final h2 {
	color: var(--nicolas-blue);
	text-transform: uppercase;
	font-size: clamp(1.9rem, calc(1rem + 1.2vw), 2.9rem);
	font-weight: 800;
	max-width: 460px;
	margin: 0 0 18px;
}

.nicolas-cta-final p {
	color: var(--nicolas-text-muted);
	font-size: clamp(0.95rem, calc(0.55rem + 0.38vw), 1.15rem);
	max-width: 460px;
	margin-bottom: 1.6em;
}

.nicolas-cta-payments {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 16px;
}

.nicolas-cta-payments-label {
	display: flex;
	align-items: center;
	gap: 12px;
	font-family: var(--font-heading);
	font-weight: 800;
	text-transform: uppercase;
	font-size: 1.3rem;
	letter-spacing: .02em;
	color: var(--nicolas-blue);
	white-space: nowrap;
}

.nicolas-cta-payments-label i {
	color: var(--nicolas-blue);
	font-size: 1.8rem;
}

.nicolas-cta-payments-label span {
	color: var(--nicolas-orange);
}

.nicolas-cta-payments-logos {
	display: flex;
	justify-content: center;
	gap: 14px;
	flex-wrap: wrap;
}

.nicolas-cta-payment-card {
	display: flex;
	align-items: center;
	justify-content: center;
	background: #fff;
	border-radius: 10px;
	box-shadow: 0 8px 20px rgba(0, 61, 92, .16);
	padding: 20px 34px;
	min-width: 150px;
	min-height: 78px;
}

.nicolas-cta-payment-card img {
	max-height: 46px;
	max-width: 160px;
	width: auto;
}

.nicolas-cta-payment-card span {
	font-family: var(--font-heading);
	font-weight: 700;
	color: var(--nicolas-blue);
	font-size: 1.3rem;
}

@media (max-width: 720px) {
	.nicolas-cta-final-inner {
		flex-direction: column;
		align-items: center;
		text-align: center;
	}

	.nicolas-cta-final h2,
	.nicolas-cta-final p {
		margin-left: auto;
		margin-right: auto;
	}
}

/* "¿Listo para una aventura?" — franja a todo el ancho justo después de las
   categorías: foto editable a la izquierda + panel naranja con el buggy real
   sobresaliendo abajo a la derecha. Las dos columnas usan la misma relación
   de aspecto real de la foto (1051×881 ≈ 1.19, "1.1" a ojo) vía
   `aspect-ratio` en vez de una altura fija — así la sección escala sola con
   el ancho de pantalla sin deformar ni recortar mal la foto en ningún
   tamaño, y el panel naranja (que no tiene foto propia) queda igual de alto
   que la foto real a su lado en vez de un alto arbitrario. */
.nicolas-buggy-promo {
	display: grid;
	grid-template-columns: 1fr 1fr;
}

.nicolas-buggy-promo-photo {
	position: relative;
	aspect-ratio: 1051 / 881;
	background-color: var(--nicolas-bg-soft);
	overflow: hidden;
}

.nicolas-buggy-promo-swiper,
.nicolas-buggy-promo-swiper .swiper-wrapper {
	height: 100%;
}

.nicolas-buggy-promo-swiper .swiper-slide {
	background-size: cover;
	background-position: center;
}

.nicolas-buggy-promo-panel {
	position: relative;
	aspect-ratio: 1051 / 881;
	background: #ed8b26;
	overflow: hidden;
	display: flex;
	align-items: center;
	justify-content: center;
}

.nicolas-buggy-promo-content {
	position: relative;
	z-index: 1;
	padding: 0 24px;
	max-width: 760px;
	text-align: center;
}

.nicolas-buggy-promo-content h2 {
	color: #fff;
	font-size: clamp(2rem, calc(0.65rem + 1.63vw), 3.25rem);
	font-weight: 900;
	line-height: 1.15;
	text-transform: uppercase;
	margin: 0 0 18px;
}

.nicolas-buggy-promo-highlight {
	color: var(--nicolas-blue);
}

.nicolas-buggy-promo-content p {
	color: #fff;
	opacity: .92;
	font-weight: 600;
	font-size: clamp(0.95rem, calc(0.55rem + 0.38vw), 1.15rem);
	max-width: 560px;
	margin: 0 auto 28px;
}

.nicolas-buggy-promo-btn {
	background: var(--nicolas-blue);
	color: #fff;
}

.nicolas-buggy-promo-btn:hover,
.nicolas-buggy-promo-btn:focus {
	background: var(--nicolas-blue-dark);
	color: #fff;
	transform: translateY(-2px);
}

.nicolas-buggy-promo-vehicle {
	position: absolute;
	right: -1%;
	bottom: -15%;
	width: clamp(280px, 39vw, 820px);
	height: auto;
	filter: drop-shadow(0 20px 30px rgba(0, 0, 0, .25));
	pointer-events: none;
	opacity: 0;
	transform: translateX(120px);
	transition: opacity .8s ease .15s, transform .8s cubic-bezier(.16, .8, .3, 1) .15s;
}

.nicolas-buggy-promo.is-visible .nicolas-buggy-promo-vehicle {
	opacity: 1;
	transform: translateX(0);
}

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

	.nicolas-buggy-promo-panel {
		aspect-ratio: auto;
		flex-direction: column;
		padding: 40px 0 36px;
		gap: 28px;
	}

	.nicolas-buggy-promo-content {
		max-width: 420px;
	}

	.nicolas-buggy-promo-vehicle {
		position: static;
		width: 100%;
		margin: 0 auto;
	}
}

/* ===== Página de producto ===== */
.nicolas-page-title-bar {
	background: var(--nicolas-blue);
	padding: 28px 0;
}

/* Foto del producto de fondo (mismo patrón que .nicolas-cta-final-has-image):
   overlay azul marino en degradé para que el título en blanco siga
   legible encima de cualquier foto. */
.nicolas-page-title-bar-has-image {
	position: relative;
	background-size: cover;
	background-position: center;
	isolation: isolate;
	padding: 56px 0;
}

.nicolas-page-title-bar-has-image::before {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(90deg, rgba(0, 61, 92, .88), rgba(0, 61, 92, .6));
	z-index: -1;
}

.nicolas-page-title-text {
	color: #fff;
	font-family: var(--font-heading);
	font-size: 1.4rem;
	font-weight: 700;
}

.nicolas-product {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 56px;
	padding: 48px 0 72px;
	align-items: start;
}

/* WooCommerce trae su propio woocommerce-layout.css con
   ".woocommerce div.product div.images{float:left;width:48%}" y
   ".woocommerce div.product div.summary{float:right;width:48%}" (pensado
   para su layout clásico de una sola columna). Nuestro grid de 2 columnas ya
   reemplaza ese layout a nivel de .nicolas-product-gallery/.nicolas-product-summary,
   pero la clase "images" cae más adentro (en .woocommerce-product-gallery,
   no en el grid item), así que ese float seguía activo y empujaba
   "Información Importante" al costado en vez de debajo. La regla de WC tiene
   3 clases de especificidad (.woocommerce + .product + .images) — hace falta
   !important para ganarle sin copiar esa cadena de selectores; es la forma
   estándar de pisar CSS de un plugin de terceros sin tocar su markup. */
.nicolas-product .woocommerce-product-gallery {
	float: none !important;
	width: auto !important;
}

/* Solo la foto principal (primer .woocommerce-product-gallery__image) lleva
   esquinas redondeadas — las miniaturas de "ver más fotos" (WC las pinta
   como los siguientes .woocommerce-product-gallery__image, al 25% de ancho,
   con su propio CSS nativo) se dejan tal cual vienen de WooCommerce, sin
   forzarles nada. */
.nicolas-product .woocommerce-product-gallery__image:first-child img {
	border-radius: 16px;
}

.nicolas-product-info {
	clear: both;
}

.nicolas-product-summary {
	float: none !important;
	width: auto !important;
}

.nicolas-product-info {
	margin-top: 28px;
}

/* "Descripción/Itinerario/Precios" quedaba pegado al botón de WhatsApp de
   arriba (cero espacio propio) y sin ninguna marca visual de que era una
   sección nueva — a diferencia de "Información Importante", que ya tenía
   aire respecto a la foto. Mismo margen + separador que esa, para que las
   dos mitades de la ficha se vean parejas. */
.nicolas-product-description {
	margin-top: 28px;
	padding-top: 24px;
	border-top: 1px solid #e3edf1;
}

.nicolas-product-info h2,
.nicolas-product-summary h1.product_title {
	font-size: clamp(1.1rem, calc(0.72rem + 0.49vw), 1.5rem);
	color: var(--nicolas-blue);
}

.nicolas-product-summary h1.product_title {
	font-family: var(--font-heading);
	color: var(--nicolas-blue);
	font-size: clamp(1.4rem, calc(0.68rem + 0.85vw), 2.04rem);
	font-weight: 700;
	line-height: 1.3;
}

.nicolas-product-summary .price,
.nicolas-product-summary .price .woocommerce-Price-amount {
	color: var(--nicolas-blue) !important;
	font-family: var(--font-heading) !important;
}

.nicolas-product-summary .price {
	font-size: 1.8rem;
	font-weight: 800;
	display: block;
	margin: 12px 0 20px;
}

.nicolas-product-summary .quantity {
	display: block;
	margin-bottom: 16px;
}

.nicolas-product-summary .quantity::before {
	content: 'Personas';
	display: block;
	font-weight: 600;
	margin-bottom: 6px;
}

.nicolas-product-summary .quantity .qty {
	width: 100%;
	padding: 12px 14px;
	border-radius: 10px;
	border: 1px solid #d7e2e6;
}

/* Contenedor propio de cantidad + botones dentro del <form class="cart">
   (woocommerce/single-product/add-to-cart/simple.php, sobrescrito en el
   theme). WooCommerce trae "form.cart div.quantity{float:left}" y
   "form.cart .button{float:left}" en woocommerce.css — en vez de pisar esas
   propiedades una por una, se neutraliza el float una sola vez acá y se
   arma el layout con flex, ya controlando el markup completo. */
.nicolas-product-actions-form {
	display: flex;
	flex-direction: column;
	gap: 12px;
}

.nicolas-product-actions-form .quantity {
	float: none;
	width: 100%;
}

.nicolas-add-to-cart-btn {
	display: block;
	width: 100%;
	text-align: center;
	background: var(--nicolas-blue);
	color: #fff;
	border: none;
	border-radius: 999px;
	padding: 14px 28px;
	font-family: var(--font-body);
	font-weight: 700;
	font-size: 1rem;
	cursor: pointer;
	transition: background-color .15s ease;
}

.nicolas-add-to-cart-btn:hover,
.nicolas-add-to-cart-btn:focus {
	background: var(--nicolas-orange);
	color: #fff;
}

/* "Comprar ahora" — mismo <form>, se apila con flex debajo del botón nativo
   dentro de .nicolas-product-actions-form (ver arriba). */
.nicolas-buy-now-btn {
	display: block;
	width: 100%;
	text-align: center;
	background: var(--nicolas-orange);
	color: #fff;
	border: none;
	border-radius: 999px;
	padding: 14px 28px;
	font-family: var(--font-body);
	font-weight: 700;
	font-size: 1rem;
	cursor: pointer;
	transition: background-color .15s ease;
}

.nicolas-buy-now-btn:hover,
.nicolas-buy-now-btn:focus {
	background: var(--nicolas-orange-dark);
	color: #fff;
}

/* "Consultar por WhatsApp" — después del </form> nativo (ver
   woocommerce_after_add_to_cart_form en inc/woocommerce-setup.php), por eso
   necesita su propio margin-top en vez del gap del flex de arriba. */
.nicolas-whatsapp-btn {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	width: 100%;
	margin-top: 12px;
	background: transparent;
	color: #1ea952;
	border: 2px solid #25d366;
	border-radius: 999px;
	padding: 12px 28px;
	font-family: var(--font-body);
	font-weight: 700;
	font-size: 1rem;
	text-decoration: none;
	transition: background-color .15s ease, color .15s ease;
}

.nicolas-whatsapp-btn:hover,
.nicolas-whatsapp-btn:focus {
	background: #25d366;
	color: #fff;
}

/* Acordeón "Información Importante" / "Descripción, Itinerario, Precios" */
/* El contenido importado de productos reales ya trae su propio wrapper con
   un <h2>Información Importante</h2> adentro (viene del sitio anterior) —
   se oculta porque nuestro template ya pinta su propio título arriba. */
.nicolas-accordion-group .titulo-wrapper {
	display: none;
}

.nicolas-accordion-group .info-toggle {
	border-bottom: 1px solid #e3edf1;
}

.nicolas-accordion-group .info-titulo {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: 16px 4px;
	margin: 0;
	font-family: var(--font-heading);
	font-weight: 700;
	color: var(--nicolas-blue);
	cursor: pointer;
	list-style: none;
}

.nicolas-accordion-group .info-titulo::after {
	content: '\25BE';
	transition: transform .3s cubic-bezier(.4, 0, .2, 1);
	color: var(--nicolas-orange);
}

.nicolas-accordion-group .info-toggle.is-open .info-titulo::after {
	transform: rotate(180deg);
}

/* El alto abierto lo calcula accordion.js (mide el contenido real y anima a
   ese valor exacto) en vez de un max-height fijo acá — así la transición
   dura lo justo sin importar si el texto es corto o largo, se siente
   mucho más suave. */
.nicolas-accordion-group .info-contenido {
	max-height: 0;
	overflow: hidden;
	opacity: 0;
	padding: 0 4px;
	color: var(--nicolas-text-muted);
	transition: max-height .35s cubic-bezier(.4, 0, .2, 1), opacity .3s ease .05s;
}

.nicolas-accordion-group .info-toggle.is-open .info-contenido {
	opacity: 1;
	padding-bottom: 16px;
}

.nicolas-accordion-group .info-contenido ul {
	margin: 0;
	padding-left: 20px;
}

/* "Productos relacionados" — WooCommerce pinta esto sin ninguna clase propia
   nuestra, así que lo alineamos al mismo patrón de título que el resto del
   sitio (línea naranja debajo) y le damos aire respecto al acordeón de arriba. */
.related.products {
	padding-top: 24px;
	border-top: 1px solid #e3edf1;
	margin-top: 24px;
}

.related.products > h2 {
	font-size: clamp(1.4rem, calc(0.72rem + 0.9vw), 2.16rem);
	color: var(--nicolas-blue);
	position: relative;
	padding-bottom: 14px;
	margin-bottom: 32px;
}

.related.products > h2::after {
	content: '';
	position: absolute;
	left: 0;
	bottom: 0;
	width: 48px;
	height: 4px;
	border-radius: 999px;
	background: var(--nicolas-orange);
}

@media (max-width: 860px) {
	.nicolas-product {
		grid-template-columns: 1fr;
		gap: 32px;
	}
}

/* ===== Página Nosotros ===== */
.nicolas-page-banner {
	background-color: var(--nicolas-blue);
	background-size: cover;
	background-position: center;
	min-height: 260px;
	display: flex;
	align-items: center;
}

.nicolas-page-banner h1 {
	color: #fff;
	text-transform: uppercase;
	font-size: clamp(2rem, calc(1.04rem + 1.3vw), 3.12rem);
	font-weight: 800;
	margin: 0;
}

.nicolas-about-intro {
	padding: 64px 0;
}

.nicolas-about-intro-grid {
	display: grid;
	grid-template-columns: 1.1fr 1fr;
	gap: 48px;
	align-items: center;
}

/* Si todavía no se cargó la foto de intro desde el panel, el template no
   imprime `.nicolas-about-intro-img` — sin esto, el grid de 2 columnas se
   queda con un solo hijo real ocupando solo la primera columna (1.1fr de
   2.1fr) y la otra mitad de la sección queda en blanco. */
.nicolas-about-intro-grid > :only-child {
	grid-column: 1 / -1;
}

.nicolas-about-intro-grid p {
	color: var(--nicolas-text-muted);
	font-size: clamp(0.95rem, calc(0.55rem + 0.38vw), 1.15rem);
}

.nicolas-about-intro-img img {
	width: 100%;
	border-radius: 16px;
	aspect-ratio: 4 / 3;
	object-fit: cover;
}

.nicolas-section-head-center {
	text-align: center;
	max-width: 560px;
	margin: 0 auto 36px;
}

.nicolas-section-head-center h2::after {
	left: 50%;
	transform: translateX(-50%);
}

.nicolas-team {
	background: var(--nicolas-bg-soft);
	padding: 64px 0;
}

.nicolas-team-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
	gap: 24px;
	max-width: 900px;
	margin: 0 auto;
}

.nicolas-team-card {
	text-align: center;
}

.nicolas-team-photo {
	aspect-ratio: 1;
	border-radius: 16px;
	background: var(--nicolas-orange);
	overflow: hidden;
	margin-bottom: 12px;
}

.nicolas-team-photo img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.nicolas-team-card strong {
	display: block;
	font-family: var(--font-heading);
	color: var(--nicolas-blue);
}

.nicolas-team-card span {
	color: var(--nicolas-text-muted);
	font-size: .9rem;
}

.nicolas-team-cta {
	text-align: center;
	margin-top: 36px;
}

.nicolas-why {
	padding: 64px 0;
}

.nicolas-why-grid {
	display: grid;
	grid-template-columns: 1fr 1.4fr;
	gap: 48px;
	align-items: center;
}

/* Mismo caso que `.nicolas-about-intro-grid`: sin foto de "¿Por qué
   elegirnos?" cargada, `.nicolas-why-img` no se imprime y el único hijo
   (el bloque de tarjetas) se quedaba encogido en la primera columna (1fr
   de 2.4fr) con toda la derecha en blanco. */
.nicolas-why-grid > :only-child {
	grid-column: 1 / -1;
}

.nicolas-why-img img {
	width: 100%;
	border-radius: 16px;
	aspect-ratio: 4 / 3;
	object-fit: cover;
}

.nicolas-why-title {
	text-align: center;
	margin-bottom: 24px;
}

.nicolas-why-cards {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
	gap: 20px;
}

.nicolas-why-card {
	background: var(--nicolas-bg-soft);
	border-radius: 16px;
	padding: 24px;
	text-align: center;
}

.nicolas-why-card svg {
	color: var(--nicolas-orange);
	margin-bottom: 10px;
}

.nicolas-why-card strong {
	display: block;
	font-family: var(--font-heading);
	color: var(--nicolas-blue);
	margin-bottom: 6px;
}

.nicolas-why-card p {
	color: var(--nicolas-text-muted);
	font-size: clamp(0.8rem, calc(0.63rem + 0.23vw), 0.99rem);
	margin: 0;
}

.nicolas-partners {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 48px;
	flex-wrap: wrap;
	margin-top: 48px;
}

.nicolas-partners img {
	max-height: 48px;
	width: auto;
	filter: grayscale(1);
	opacity: .7;
}

@media (max-width: 780px) {
	.nicolas-about-intro-grid,
	.nicolas-why-grid {
		grid-template-columns: 1fr;
	}
}

/* ===== Tienda ===== */
.nicolas-shop {
	padding: 40px 0 72px;
}

.nicolas-shop-toolbar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 12px;
	margin-bottom: 28px;
	color: var(--nicolas-text-muted);
}

.nicolas-shop-toolbar select {
	padding: 8px 12px;
	border-radius: 8px;
	border: 1px solid #d7e2e6;
	font-family: var(--font-body);
}

.woocommerce-pagination {
	margin-top: 40px;
}

.woocommerce-pagination ul {
	display: flex;
	justify-content: center;
	gap: 8px;
	list-style: none;
	padding: 0;
}

.woocommerce-pagination a,
.woocommerce-pagination span {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	border-radius: 50%;
	color: var(--nicolas-blue);
	text-decoration: none;
	font-weight: 600;
}

.woocommerce-pagination a:hover,
.woocommerce-pagination a:focus {
	background: var(--nicolas-bg-soft);
	color: var(--nicolas-orange);
}

.woocommerce-pagination .current {
	background: var(--nicolas-orange);
	color: #fff;
}

/* WhatsApp flotante */
/* El plugin del carrito lateral (XOO) agrega su propia burbuja flotante
   abajo a la derecha (.xoo-wsc-basket: bottom:12px; right:1px; 64x64px) —
   quedaba tapando/pisando este botón. Se sube arriba de esa burbuja, con
   un poco de aire, en vez de competir por el mismo rincón. */
.nicolas-whatsapp-float {
	position: fixed;
	right: 4px;
	bottom: 92px;
	width: 58px;
	height: 58px;
	border-radius: 50%;
	background: #25d366;
	color: #fff;
	display: flex;
	align-items: center;
	justify-content: center;
	box-shadow: 0 6px 18px rgba(0, 0, 0, .25);
	z-index: 999;
}

/* Scroll reveal (IntersectionObserver) */
.reveal {
	opacity: 0;
	transform: translateY(24px);
	transition: opacity .6s ease, transform .6s ease;
}

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

@media (prefers-reduced-motion: reduce) {
	.reveal {
		opacity: 1;
		transform: none;
		transition: none;
	}

	.nicolas-buggy-promo-vehicle {
		opacity: 1;
		transform: none;
		transition: none;
	}
}
