/**
 * Ovision Wellness — upcoming retreats section.
 */

.ovision-retreats {
	--ovwn-bg: #FEFBF2;
	--ovwn-card: #FFFFFF;
	--ovwn-heading: #1B4A1E;
	--ovwn-title: #1B4A1E;
	--ovwn-text: #2B3A2E;
	--ovwn-muted: #5E6B60;
	--ovwn-accent: #D7A432;
	--ovwn-accent-alt: #EAB33C;
	--ovwn-label: #96650B;
	--ovwn-badge-text: #113D1A;
	--ovwn-cta: #3B7020;
	--ovwn-strip: #F2F4E8;
	--ovwn-heading-size: 44px;
	--ovwn-subtitle-size: 16px;
	--ovwn-card-title-size: 21px;
	--ovwn-meta-size: 14px;
	--ovwn-price-size: 20px;
	--ovwn-cta-size: 15px;
	--ovwn-max: 1200px;
	--ovwn-gap: 20px;
	--ovwn-pad-y: 72px;
	--ovwn-pad-y-m: 48px;
	--ovwn-card-radius: 16px;
	--ovwn-card-pad: 20px;
	--ovwn-card-shadow: 0 10px 30px rgba(17, 61, 26, .08);
	--ovwn-card-border: none;
	--ovwn-img-h: 200px;
	--ovwn-img-radius: 0px;
	--ovwn-cols: 4;
	--ovwn-cols-t: 2;
	--ovwn-peek: 86%;
	--ovwn-font-heading: "Cormorant Garamond", Georgia, serif;
	--ovwn-font-body: Inter, system-ui, -apple-system, "Segoe UI", sans-serif;

	background: var(--ovwn-bg);
	color: var(--ovwn-text);
	scroll-margin-top: 96px;
	font-family: var(--ovwn-font-body);
	padding: var(--ovwn-pad-y) 0;
	box-sizing: border-box;
	-webkit-font-smoothing: antialiased;
}

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

.ovision-retreats__inner {
	max-width: var(--ovwn-max);
	margin: 0 auto;
	padding: 0 24px;
}

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

.ovision-retreats__head { margin-bottom: 22px; }

.ovision-retreats__label {
	margin: 0 0 8px;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 3px;
	text-transform: uppercase;
	color: var(--ovwn-label);
}

.ovision-retreats__heading {
	margin: 0 0 6px;
	font-family: var(--ovwn-font-heading);
	font-weight: 600;
	font-size: var(--ovwn-heading-size);
	line-height: 1.08;
	color: var(--ovwn-heading);
}

.ovision-retreats__subtitle {
	margin: 0;
	font-size: var(--ovwn-subtitle-size);
	line-height: 1.55;
	color: var(--ovwn-muted);
}

/* ---------- tabs ---------- */

.ovision-retreats__tabs { display: flex; gap: 10px; margin-bottom: 22px; flex-wrap: wrap; }

.ovision-retreats__tab {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	border: 1px solid rgba(27, 74, 30, .18);
	background: transparent;
	color: var(--ovwn-heading);
	border-radius: 40px;
	padding: 9px 18px;
	font: 600 14px var(--ovwn-font-body);
	cursor: pointer;
	transition: background .2s ease, color .2s ease, border-color .2s ease;
}

.ovision-retreats__tab:hover { border-color: var(--ovwn-heading); }

.ovision-retreats__tab.is-active {
	background: var(--ovwn-heading);
	border-color: var(--ovwn-heading);
	color: #FEFBF2;
}

.ovision-retreats__tab-count {
	font-size: 12px;
	background: rgba(27, 74, 30, .12);
	border-radius: 20px;
	padding: 1px 8px;
}

.ovision-retreats__tab.is-active .ovision-retreats__tab-count { background: rgba(254, 251, 242, .22); }

/* ---------- grid ---------- */

.ovision-retreats__grid {
	display: grid;
	grid-template-columns: repeat(var(--ovwn-cols), minmax(0, 1fr));
	gap: var(--ovwn-gap);
	align-items: stretch;
}

/* ---------- card ---------- */

.ovision-retreat-card {
	display: flex;
	flex-direction: column;
	background: var(--ovwn-card);
	border-radius: var(--ovwn-card-radius);
	border: var(--ovwn-card-border);
	box-shadow: var(--ovwn-card-shadow);
	overflow: hidden;
	transition: transform .3s ease, box-shadow .3s ease;
}

.ovision-retreat-card:hover { transform: translateY(-3px); box-shadow: 0 18px 44px rgba(17, 61, 26, .14); }

.ovision-retreat-card__media { position: relative; }

.ovision-retreat-card__image {
	display: block;
	width: 100%;
	height: var(--ovwn-img-h);
	object-fit: cover;
	border-radius: var(--ovwn-img-radius);
}

.ovision-retreat-card__image--empty { background: linear-gradient(150deg, #3B7020, #113D1A); }

.ovision-retreat-card__badge {
	position: absolute;
	top: 14px;
	left: 14px;
	z-index: 2;
	background: var(--ovwn-accent);
	color: var(--ovwn-badge-text);
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 1.4px;
	text-transform: uppercase;
	padding: 6px 12px;
	border-radius: 30px;
}

.ovision-retreat-card__badge--coming-soon { background: #FEFBF2; color: var(--ovwn-heading); }
.ovision-retreat-card__badge--sold-out { background: rgba(17, 61, 26, .85); color: #FEFBF2; }
.ovision-retreat-card__badge--early-bird { background: var(--ovwn-accent-alt); }

.ovision-retreat-card__body {
	display: flex;
	flex-direction: column;
	gap: 10px;
	padding: var(--ovwn-card-pad);
	flex: 1 1 auto;
}

.ovision-retreat-card__title {
	margin: 0;
	font-family: var(--ovwn-font-heading);
	font-weight: 600;
	font-size: var(--ovwn-card-title-size);
	line-height: 1.2;
	color: var(--ovwn-title);
}

.ovision-retreat-card__title a { color: inherit; text-decoration: none; }
.ovision-retreat-card__title a:hover { color: var(--ovwn-accent); }

.ovision-retreat-card__meta { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }

.ovision-retreat-card__meta-item {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: var(--ovwn-meta-size);
	line-height: 1.4;
	color: var(--ovwn-muted);
}

.ovision-retreat-card__meta-item svg {
	width: 15px;
	height: 15px;
	flex: 0 0 auto;
	stroke: var(--ovwn-cta);
	fill: none;
	stroke-width: 1.6;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.ovision-retreat-card__meta-item a { color: inherit; text-decoration: none; border-bottom: 1px dotted currentColor; }

.ovision-retreat-card__desc { margin: 0; font-size: var(--ovwn-meta-size); line-height: 1.55; color: var(--ovwn-muted); }

.ovision-retreat-card__foot { margin-top: auto; display: grid; gap: 8px; }

.ovision-retreat-card__price { margin: 4px 0 0; display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }

.ovision-retreat-card__price-prefix { font-size: 14px; color: var(--ovwn-muted); }
.ovision-retreat-card__price-old { font-size: 13px; color: var(--ovwn-muted); }

.ovision-retreat-card__price-new {
	font-size: var(--ovwn-price-size);
	font-weight: 700;
	color: var(--ovwn-heading);
	letter-spacing: .2px;
}

.ovision-retreat-card__cta {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	color: var(--ovwn-cta);
	font-weight: 600;
	font-size: var(--ovwn-cta-size);
	text-decoration: none;
	transition: gap .2s ease, color .2s ease;
}

.ovision-retreat-card__cta:hover { gap: 10px; color: var(--ovwn-accent); }

.ovision-retreat-card__cta--button {
	justify-content: center;
	border: 1.5px solid var(--ovwn-heading);
	color: var(--ovwn-heading);
	border-radius: 40px;
	padding: 11px 18px;
}

.ovision-retreat-card__cta--button:hover { background: var(--ovwn-heading); color: #FEFBF2; }

.ovision-retreat-card__availability {
	margin: 0;
	padding: 9px var(--ovwn-card-pad);
	background: var(--ovwn-strip);
	color: var(--ovwn-heading);
	font-size: 12.5px;
	font-weight: 500;
}

/* ---------- responsive ---------- */

@media (max-width: 1024px) {
	.ovision-retreats__grid { grid-template-columns: repeat(var(--ovwn-cols-t), minmax(0, 1fr)); }
	.ovision-retreats__heading { font-size: calc(var(--ovwn-heading-size) * .82); }
}

@media (max-width: 767px) {
	.ovision-retreats { padding: var(--ovwn-pad-y-m) 0; }
	.ovision-retreats__inner { padding: 0 20px; }
	.ovision-retreats__heading { font-size: calc(var(--ovwn-heading-size) * .7); }
	.ovision-retreats__grid { grid-template-columns: 1fr; }

	/* Swipeable carousel with a peek of the next card. */
	.ovision-retreats[data-ovwn-carousel="1"] .ovision-retreats__grid {
		display: flex;
		gap: 14px;
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		scroll-padding-left: 20px;
		margin: 0 -20px;
		padding: 4px 20px 16px;
		scrollbar-width: none;
		-webkit-overflow-scrolling: touch;
	}
	.ovision-retreats[data-ovwn-carousel="1"] .ovision-retreats__grid::-webkit-scrollbar { display: none; }
	.ovision-retreats[data-ovwn-carousel="1"] .ovision-retreat-card {
		flex: 0 0 var(--ovwn-peek);
		scroll-snap-align: start;
	}
	.ovision-retreat-card__cta { padding: 10px 0; }
	.ovision-retreat-card__meta-item a { padding: 2px 0; display: inline-block; }
	.ovision-retreats__tab { padding: 11px 18px; }
}

@media (max-width: 380px) {
	.ovision-retreats__inner { padding: 0 16px; }
	.ovision-retreat-card__title { font-size: calc(var(--ovwn-card-title-size) * .95); }
}

@media (prefers-reduced-motion: reduce) {
	.ovision-retreats * { transition: none !important; }
}

/* ---------- keyboard focus ---------- */

.ovision-retreats a:focus-visible,
.ovision-retreats button:focus-visible {
	outline: 3px solid var(--ovwn-accent);
	outline-offset: 3px;
	border-radius: 6px;
}

/* ---------- theme guard ----------
 * Stop theme resets (for example Hello Elementor) recolouring our buttons.
 */

.ovision-retreats button:hover,
.ovision-retreats button:focus,
.ovision-retreats button:focus-visible,
.ovision-retreats button:active {
	background-color: transparent;
	box-shadow: none;
}

.ovision-retreats__tab:hover,
.ovision-retreats__tab:focus-visible { background-color: transparent; border-color: var(--ovwn-heading); color: var(--ovwn-heading); }

.ovision-retreats__tab.is-active,
.ovision-retreats__tab.is-active:hover,
.ovision-retreats__tab.is-active:focus,
.ovision-retreats__tab.is-active:focus-visible {
	background-color: var(--ovwn-heading);
	border-color: var(--ovwn-heading);
	color: #FEFBF2;
}
