/* Defaults – all of these are overridden by Carousel Slides → Style Settings */
.lc {
	--lc-w: 62%;
	--lc-h: 640px;
	--lc-gap: 36px;
	--lc-radius: 18px;
	--lc-speed: 700ms;

	--lc-overlay-bg: linear-gradient(to top, rgba(0,0,0,1) 0%, rgba(0,0,0,.7) 50%, rgba(0,0,0,.4) 100%);
	--lc-overlay-op: .55;
	--lc-veil: rgba(255, 255, 255, .62);

	--lc-title-font: 'Playfair Display', Georgia, 'Times New Roman', serif;
	--lc-title-weight: 500;
	--lc-title-size: 40px;
	--lc-title-spacing: .8px;
	--lc-title-color: #ffffff;
	--lc-title-shadow: none;

	--lc-desc-font: 'Montserrat', system-ui, -apple-system, 'Segoe UI', sans-serif;
	--lc-desc-weight: 400;
	--lc-desc-size: 17px;
	--lc-desc-line: 1.9;
	--lc-desc-color: #ffffff;
	--lc-desc-shadow: 0 1px 8px rgba(0, 0, 0, .6);

	--lc-btn-font: 'Montserrat', system-ui, -apple-system, 'Segoe UI', sans-serif;
	--lc-btn-weight: 500;
	--lc-btn-size: 15px;
	--lc-btn-spacing: 1.8px;
	--lc-btn-transform: uppercase;
	--lc-btn-color: #ffffff;
	--lc-btn-bg: transparent;
	--lc-btn-border: #ffffff;
	--lc-btn-border-width: 1px;
	--lc-btn-radius: 4px;
	--lc-btn-pad-y: 18px;
	--lc-btn-pad-x: 42px;
	--lc-btn-hover-bg: #ffffff;
	--lc-btn-hover-color: #1a1a1a;
	--lc-btn-hover-border: #ffffff;

	--lc-nav-color: #1a1a1a;
	--lc-nav-bg: #ffffff;
	--lc-nav-border: #c9c9c9;
	--lc-nav-hover-bg: #1a1a1a;
	--lc-nav-hover-color: #ffffff;
	--lc-nav-font: 'Montserrat', system-ui, -apple-system, 'Segoe UI', sans-serif;
	--lc-nav-size: 14px;

	position: relative;
	width: 100%;
	overflow: hidden;
	padding: var(--lc-pt, 40px) 0 var(--lc-pb, 10px);
	opacity: 0;
	transition: opacity .4s ease;
}
.lc.is-ready { opacity: 1; }

.lc__viewport {
	overflow: hidden;
	touch-action: pan-y;
	cursor: grab;
	direction: ltr; /* keep the slide maths left-to-right, even on RTL sites */
}
.lc__viewport:active { cursor: grabbing; }

.lc__track {
	display: flex;
	gap: var(--lc-gap);
	transition: transform var(--lc-speed) cubic-bezier(.65, 0, .35, 1);
	will-change: transform;
}
.lc__track.is-jump { transition: none; }

.lc__slide {
	position: relative;
	flex: 0 0 var(--lc-w);
	height: var(--lc-h);
	border-radius: var(--lc-radius);
	overflow: hidden;
	background: #2b2b2b;
	color: #fff;
	user-select: none;
	container-type: inline-size; /* lets text and padding scale with the card width (cqw units) */
}

/* Layer order (bottom → top): image, overlay, text, side-slide veil */
/* "!important" + the extra .lc selector beat Elementor's global ".elementor img { height:auto }" */
.lc .lc__img {
	position: absolute;
	inset: 0;
	z-index: 0;
	width: 100% !important;
	height: 100% !important;
	max-width: none !important;
	margin: 0;
	border: 0;
	object-fit: var(--lc-img-fit, cover);
	object-position: var(--lc-img-pos, center);
	pointer-events: none;
}
/* Images inside a card template: fill their box and follow the same fit setting */
.lc .lc__tpl-img,
.lc .lc-card__img img,
.lc .lc-bg img {
	width: 100% !important;
	height: 100% !important;
	max-width: none !important;
	object-fit: var(--lc-img-fit, cover) !important;
	object-position: var(--lc-img-pos, center) !important;
	display: block;
}
.lc .lc-bg { background-size: var(--lc-img-fit, cover) !important; background-position: var(--lc-img-pos, center) !important; background-repeat: no-repeat; }
.lc__slide::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	background: var(--lc-overlay-bg);
	opacity: var(--lc-overlay-op);
	pointer-events: none;
}
.lc__slide::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 3;
	background: var(--lc-veil);
	opacity: 1;
	transition: opacity var(--lc-speed) ease;
	pointer-events: none;
}
.lc__slide.is-active::after { opacity: 0; }
.lc.is-jumping .lc__slide::after { transition: none; }

.lc__content {
	position: absolute;
	z-index: 2;
	left: var(--lc-pad-x, clamp(20px, 9cqw, 64px));
	right: var(--lc-pad-x, clamp(20px, 9cqw, 64px));
	bottom: var(--lc-pad-b, clamp(22px, 8cqw, 62px));
	max-width: var(--lc-content-max, 720px);
	direction: ltr;
	text-align: left;
	opacity: 0;
	transform: translateY(12px);
	transition: opacity .6s ease .15s, transform .6s ease .15s;
}
.lc--rtl .lc__content,
[dir="rtl"] .lc__content { direction: rtl; text-align: right; }
.lc__slide.is-active .lc__content { opacity: 1; transform: none; }
.lc.is-jumping .lc__content { transition: none; }

.lc__title {
	margin: 0 0 var(--lc-title-gap, 18px);
	padding: 0;
	font-family: var(--lc-title-font);
	font-size: min(var(--lc-title-size), max(22px, 9cqw));
	font-weight: var(--lc-title-weight);
	letter-spacing: var(--lc-title-spacing);
	line-height: 1.2;
	color: var(--lc-title-color);
	text-shadow: var(--lc-title-shadow);
}
.lc__title.has-extra { margin-bottom: var(--lc-extra-gap, 8px); }
.lc__extra {
	margin: 0 0 var(--lc-title-gap, 18px);
	padding: 0;
	font-family: var(--lc-extra-font, inherit);
	font-size: min(var(--lc-extra-size, 14px), max(11px, 4.4cqw));
	font-weight: var(--lc-extra-weight, 500);
	letter-spacing: var(--lc-extra-spacing, 2px);
	text-transform: var(--lc-extra-transform, uppercase);
	line-height: 1.4;
	color: var(--lc-extra-color, #d9b36a);
	text-shadow: var(--lc-extra-shadow, none);
}
.lc__desc {
	margin: 0 0 var(--lc-desc-gap, 30px);
	font-family: var(--lc-desc-font);
	font-size: min(var(--lc-desc-size), max(13px, 5.2cqw));
	font-weight: var(--lc-desc-weight);
	line-height: var(--lc-desc-line);
	color: var(--lc-desc-color);
	text-shadow: var(--lc-desc-shadow);
}
.lc__btn {
	display: inline-block;
	box-sizing: border-box;
	max-width: 100%;
	padding: var(--lc-btn-pad-y) min(var(--lc-btn-pad-x), 10cqw);
	border: var(--lc-btn-border-width) solid var(--lc-btn-border);
	border-radius: var(--lc-btn-radius);
	background: var(--lc-btn-bg);
	color: var(--lc-btn-color);
	font-family: var(--lc-btn-font);
	font-size: min(var(--lc-btn-size), max(11px, 4.6cqw));
	font-weight: var(--lc-btn-weight);
	letter-spacing: var(--lc-btn-spacing);
	text-transform: var(--lc-btn-transform);
	text-decoration: none;
	line-height: 1.2;
	transition: background .25s ease, color .25s ease, border-color .25s ease;
}
.lc__btn:hover,
.lc__btn:focus-visible {
	background: var(--lc-btn-hover-bg);
	border-color: var(--lc-btn-hover-border);
	color: var(--lc-btn-hover-color);
}

/* ---- accommodation (room) card: small label above the title, button on the same row ---- */
.lc__content--row {
	display: flex;
	flex-wrap: wrap; /* on a narrow card the button drops under the title by itself */
	align-items: flex-end;
	justify-content: space-between;
	gap: 16px 24px;
	max-width: var(--lc-content-max, none);
}
.lc__content--row .lc__text { min-width: 0; }
.lc__content--row .lc__extra { margin: 0 0 6px; }
.lc__content--row .lc__title { margin: 0; }
.lc__content--row .lc__btn { flex: 0 0 auto; white-space: nowrap; }

/* ---- navigation ---- */
.lc__nav {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: var(--lc-nav-gap, 22px);
	margin-top: var(--lc-nav-top, 42px);
	direction: ltr;
}
.lc__arrow {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: var(--lc-arrow-size, 58px);
	height: var(--lc-arrow-size, 58px);
	padding: 0;
	border: 1px solid var(--lc-nav-border);
	border-radius: 50%;
	background: var(--lc-nav-bg);
	color: var(--lc-nav-color);
	cursor: pointer;
	transition: background .2s ease, color .2s ease, border-color .2s ease;
}
.lc .lc__arrow,
.lc .lc__arrow:focus,
.lc .lc__arrow:active {
	/* "!important" so the theme / Elementor button colours (orange, etc.) never leak in, on any screen size */
	background: var(--lc-nav-bg) !important;
	border-color: var(--lc-nav-border) !important;
	color: var(--lc-nav-color) !important;
	box-shadow: none;
	outline: none;
}
.lc .lc__arrow:focus-visible {
	background: var(--lc-nav-hover-bg) !important;
	border-color: var(--lc-nav-hover-bg) !important;
	color: var(--lc-nav-hover-color) !important;
}
/* hover colours only where a real mouse exists, so they never "stick" after a tap on phones and tablets */
@media (hover: hover) {
	.lc .lc__arrow:hover {
		background: var(--lc-nav-hover-bg) !important;
		border-color: var(--lc-nav-hover-bg) !important;
		color: var(--lc-nav-hover-color) !important;
	}
}

.lc__label {
	font-family: var(--lc-nav-font);
	font-size: var(--lc-nav-size);
	font-weight: 500;
	letter-spacing: .22em;
	text-transform: uppercase;
	color: var(--lc-nav-color);
}
.lc__dots { display: flex; align-items: center; gap: 14px; margin: 0 6px; }
.lc__dot {
	width: var(--lc-dot-size, 12px);
	height: var(--lc-dot-size, 12px);
	padding: 0;
	border: 1.5px solid var(--lc-dot-color, var(--lc-nav-color));
	border-radius: 50%;
	background: transparent;
	cursor: pointer;
	transition: background .25s ease, border-color .25s ease, transform .25s ease;
}
.lc__dot.is-active { background: var(--lc-dot-color, var(--lc-nav-color)); transform: scale(1.08); }
.lc__dot:hover,
.lc__dot:focus-visible {
	background: var(--lc-dot-hover-color, var(--lc-nav-hover-bg));
	border-color: var(--lc-dot-hover-color, var(--lc-nav-hover-bg));
}

.lc.is-single .lc__nav { display: none; }

/* ---- card loop layout (card template / Elementor template) ---- */
.lc.lc--cards { --lc-w: calc((100% - (var(--lc-cards, 3) - 1) * var(--lc-gap)) / var(--lc-cards, 3)) !important; }
.lc--cards .lc__slide { height: auto; background: transparent; }
.lc--cards .lc__slide::before,
.lc--cards .lc__slide::after { display: none; }
.lc--cards .lc__slide > div,
.lc--cards .lc__slide > section,
.lc--cards .lc__slide > article { height: 100%; }
.lc--cards .lc__nav { margin-top: var(--lc-nav-top, 30px); }
.lc--no-labels .lc__label { display: none; }
.lc--no-dots .lc__dots { display: none; }

/* arrow size per screen: tablet falls back to the desktop size, phone falls back to the tablet size */
@media (max-width: 1024px) {
	.lc .lc__arrow {
		width: var(--lc-arrow-size-t, var(--lc-arrow-size, 58px));
		height: var(--lc-arrow-size-t, var(--lc-arrow-size, 58px));
	}
}
@media (max-width: 782px) {
	.lc .lc__arrow {
		width: var(--lc-arrow-size-m, var(--lc-arrow-size-t, var(--lc-arrow-size, 58px)));
		height: var(--lc-arrow-size-m, var(--lc-arrow-size-t, var(--lc-arrow-size, 58px)));
	}
}

@media (max-width: 782px) {
	.lc { --lc-w: var(--lc-w-m, 86%) !important; padding-top: var(--lc-pt, 24px); } /* width_mobile=".." on the shortcode sets --lc-w-m */
	.lc__track { gap: min(var(--lc-gap), 16px); }
	.lc.lc--cards { --lc-w: calc((100% - (var(--lc-cards, 3) - 1) * min(var(--lc-gap), 16px)) / var(--lc-cards, 3)) !important; }
	.lc__slide { height: var(--lc-h-m, min(var(--lc-h), 560px)); }
	.lc__content { left: var(--lc-pad-x, 24px); right: var(--lc-pad-x, 24px); bottom: var(--lc-pad-b, 28px); }
	.lc__title { font-size: var(--lc-title-size-m, min(var(--lc-title-size), 26px)); }
	.lc__extra { font-size: var(--lc-extra-size-m, min(var(--lc-extra-size, 14px), 11px)); letter-spacing: min(var(--lc-extra-spacing, 2px), 1.4px); }
	.lc__desc { font-size: var(--lc-desc-size-m, min(var(--lc-desc-size), 13px)); line-height: 1.6; margin-bottom: 18px; }
	.lc__btn { padding: var(--lc-btn-pad-y-m, 12px) var(--lc-btn-pad-x-m, 22px); font-size: var(--lc-btn-size-m, min(var(--lc-btn-size), 11px)); letter-spacing: 1.2px; }
}

@media (prefers-reduced-motion: reduce) {
	.lc__track, .lc__slide::after, .lc__content { transition-duration: .01ms !important; }
}
