/* Homepage sections (replace the Slider Revolution modules) — one responsive layout per section */
.lbn-hs {
	--hs-ink: #050505;
	--hs-gold: rgba(196, 161, 107, .88);
	--hs-cream: rgba(236, 230, 220, .86);
	--hs-accent: #c4a16b;
	--hs-focus: 50% 50%;
	--hs-serif: "Tenor Sans", Georgia, serif;
	--hs-sans: Inter, "Helvetica Neue", Arial, sans-serif;
	--hs-ui: Poppins, "Helvetica Neue", Arial, sans-serif;
	--hs-h: clamp(620px, min(100svh, 56.25vw), 1080px);

	/* Full-bleed from whatever the parent is: works inside stretched and boxed Elementor sections */
	position: relative;
	width: 100vw;
	max-width: 100vw;
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
	box-sizing: border-box;
	overflow: hidden;
	background: var(--hs-ink);
	color: var(--hs-cream);
	font-family: var(--hs-sans);
	isolation: isolate;
}
.lbn-hs *, .lbn-hs *::before, .lbn-hs *::after { box-sizing: border-box; }

/* Elementor wrappers: no padding or gutters. The section itself keeps Elementor's stretch (width/left). */
.elementor-section:has(.lbn-hs) {
	padding: 0 !important;
	background: #050505 !important;
}
.elementor-section:has(.lbn-hs) > .elementor-container {
	display: block !important;
	max-width: none !important;
}
.elementor-column:has(.lbn-hs) > .elementor-widget-wrap,
.elementor-widget:has(.lbn-hs),
.elementor-widget:has(.lbn-hs) > .elementor-widget-container,
.elementor-shortcode:has(.lbn-hs) {
	padding: 0 !important;
	margin: 0 !important;
	width: 100% !important;
	max-width: none !important;
}

/* ---------- media layer ---------- */
.lbn-hs__media {
	position: absolute;
	inset: 0;
	z-index: -1;
}
.lbn-hs__media > img:not(.lbn-hs__leaf),
.lbn-hs__video {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
}

/* ---------- hero ---------- */
.lbn-hs--hero {
	height: 100svh;
	min-height: 520px;
}
.lbn-hs--hero .lbn-hs__video {
	position: absolute;
	inset: 0;
	z-index: -1;
}
.lbn-hs--hero::after {
	content: "";
	position: absolute;
	inset: auto 0 0;
	height: 22%;
	background: linear-gradient(to bottom, transparent, var(--hs-ink));
	pointer-events: none;
}
.lbn-hs__cue {
	position: absolute;
	left: 50%;
	bottom: clamp(20px, 4vh, 40px);
	z-index: 2;
	width: 26px;
	height: 44px;
	margin-left: -13px;
	border: 1px solid rgba(196, 161, 107, .55);
	border-radius: 14px;
}
.lbn-hs__cue span {
	position: absolute;
	left: 50%;
	top: 9px;
	width: 2px;
	height: 8px;
	margin-left: -1px;
	border-radius: 2px;
	background: var(--hs-gold);
	animation: lbn-hs-cue 2.2s ease-in-out infinite;
}
@keyframes lbn-hs-cue {
	0% { opacity: 0; transform: translateY(0); }
	30% { opacity: 1; }
	100% { opacity: 0; transform: translateY(14px); }
}
.lbn-hs__anchor { display: block; height: 0; }

/* ---------- feature + spiced: copy on one side over a full-bleed image ---------- */
.lbn-hs--feature,
.lbn-hs--spiced {
	height: var(--hs-h);
}
.lbn-hs--feature::before,
.lbn-hs--spiced::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 0;
	pointer-events: none;
}
.lbn-hs--text-left::before { background: linear-gradient(90deg, rgba(5, 5, 5, .62) 0%, rgba(5, 5, 5, .28) 38%, transparent 62%); }
.lbn-hs--text-right::before { background: linear-gradient(270deg, rgba(5, 5, 5, .7) 0%, rgba(5, 5, 5, .32) 40%, transparent 64%); }

.lbn-hs__inner {
	position: relative;
	z-index: 1;
	display: flex;
	align-items: center;
	height: 100%;
	max-width: 1440px;
	margin: 0 auto;
	padding: 96px clamp(24px, 9vw, 150px) 64px;
}
.lbn-hs--text-right .lbn-hs__inner { justify-content: flex-end; }
.lbn-hs__copy {
	width: min(640px, 50%);
}

.lbn-hs__title {
	margin: 0 0 22px !important;
	font-family: var(--hs-serif) !important;
	font-size: clamp(38px, 4.1vw, 72px) !important;
	font-weight: 400 !important;
	line-height: 1.02 !important;
	letter-spacing: .015em !important;
	text-transform: uppercase !important;
	color: var(--hs-gold) !important;
}
.lbn-hs__text {
	margin: 0 0 34px !important;
	max-width: 30em;
	font-family: var(--hs-sans) !important;
	font-size: clamp(15px, 1.05vw, 18px) !important;
	font-weight: 300 !important;
	line-height: 1.65 !important;
	color: var(--hs-cream) !important;
}

.lbn-hs__btn {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	padding: 14px 22px 14px 26px;
	border: 1.5px solid color-mix(in srgb, var(--hs-accent) 85%, #fff 15%);
	border-radius: 999px;
	background: rgba(5, 5, 5, .6);
	box-shadow: 0 0 0 4px color-mix(in srgb, var(--hs-accent) 30%, transparent), 0 0 34px color-mix(in srgb, var(--hs-accent) 55%, transparent), inset 0 0 14px color-mix(in srgb, var(--hs-accent) 25%, transparent);
	font-family: var(--hs-ui);
	font-size: 13px;
	font-weight: 500;
	letter-spacing: .18em;
	line-height: 1;
	text-transform: uppercase;
	text-decoration: none !important;
	color: #fff !important;
	transition: background .3s ease, box-shadow .3s ease, transform .3s ease;
}
.lbn-hs__btn:hover,
.lbn-hs__btn:focus-visible {
	background: color-mix(in srgb, var(--hs-accent) 30%, rgba(5, 5, 5, .7));
	box-shadow: 0 0 0 4px color-mix(in srgb, var(--hs-accent) 32%, transparent), 0 0 38px color-mix(in srgb, var(--hs-accent) 55%, transparent);
	transform: translateY(-1px);
}
.lbn-hs__btn-arrow {
	position: relative;
	width: 15px;
	height: 15px;
	border-radius: 50%;
	background: #fff;
}
.lbn-hs__btn-arrow::after {
	content: "";
	position: absolute;
	top: 5px;
	left: 4px;
	width: 4px;
	height: 4px;
	border-top: 1.5px solid #050505;
	border-right: 1.5px solid #050505;
	transform: rotate(45deg);
}

/* Signature: drifting leaves in front of the jungle */
.lbn-hs__leaf {
	position: absolute;
	width: clamp(160px, 18vw, 320px);
	height: auto;
	opacity: .9;
	pointer-events: none;
	animation: lbn-hs-drift 14s ease-in-out infinite alternate;
}
.lbn-hs__leaf--a { left: -4%; bottom: -8%; }
.lbn-hs__leaf--b { right: -3%; top: -6%; width: clamp(140px, 15vw, 270px); animation-duration: 17s; animation-delay: -6s; }
@keyframes lbn-hs-drift {
	from { transform: translate3d(0, 0, 0) rotate(0deg); }
	to { transform: translate3d(18px, -14px, 0) rotate(6deg); }
}

/* ---------- spiced carousel ---------- */
.lbn-hs--spiced { background: #04090f; }
.lbn-hs__media--sky {
	background: radial-gradient(120% 90% at 70% 10%, #0f2133 0%, #06101a 55%, #03070c 100%);
}
.lbn-hs__media--sky > img:not(.lbn-hs__leaf) { position: relative; z-index: 1; }
.lbn-hs__stars,
.lbn-hs__stars::after {
	position: absolute;
	inset: 0 0 45%;
	background-image:
		radial-gradient(1.4px 1.4px at 12% 18%, #fff, transparent 70%),
		radial-gradient(1.2px 1.2px at 28% 42%, rgba(255, 255, 255, .85), transparent 70%),
		radial-gradient(2px 2px at 44% 12%, #fff, transparent 70%),
		radial-gradient(1.2px 1.2px at 58% 33%, rgba(255, 255, 255, .8), transparent 70%),
		radial-gradient(1.7px 1.7px at 71% 8%, #fff, transparent 70%),
		radial-gradient(1.2px 1.2px at 86% 27%, rgba(255, 255, 255, .85), transparent 70%),
		radial-gradient(1.2px 1.2px at 94% 46%, rgba(255, 255, 255, .75), transparent 70%),
		radial-gradient(1.8px 1.8px at 6% 52%, rgba(255, 255, 255, .95), transparent 70%);
	background-size: 420px 300px;
}
.lbn-hs__stars::after {
	content: "";
	inset: 0;
	background-size: 270px 210px;
	background-position: 90px 60px;
	animation: lbn-hs-twinkle 5s ease-in-out infinite alternate;
}
@keyframes lbn-hs-twinkle { from { opacity: .25; } to { opacity: 1; } }

.lbn-hs__slides {
	display: grid;
}
.lbn-hs__slide {
	grid-area: 1 / 1;
	opacity: 0;
	visibility: hidden;
	transform: translateY(14px);
	transition: opacity .7s ease, transform .7s ease, visibility 0s linear .7s;
}
.lbn-hs__slide.is-active {
	opacity: 1;
	visibility: visible;
	transform: none;
	transition: opacity .7s ease .15s, transform .7s ease .15s, visibility 0s;
}
.lbn-hs__nav {
	display: flex;
	align-items: center;
	gap: 18px;
	margin-top: 44px;
}
.lbn-hs__arrow {
	position: relative;
	flex: 0 0 auto;
	width: 40px !important;
	height: 40px !important;
	min-width: 0 !important;
	padding: 0 !important;
	border: 1px solid rgba(236, 230, 220, .35) !important;
	border-radius: 50% !important;
	background: transparent !important;
	box-shadow: none !important;
	cursor: pointer;
	transition: border-color .3s ease, background .3s ease;
}
.lbn-hs__arrow::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	width: 8px;
	height: 8px;
	margin: -4px 0 0 -5px;
	border-top: 1.5px solid var(--hs-cream);
	border-right: 1.5px solid var(--hs-cream);
	transform: rotate(45deg);
}
.lbn-hs__arrow--prev::after { margin-left: -2px; transform: rotate(-135deg); }
.lbn-hs__arrow:hover,
.lbn-hs__arrow:focus-visible { border-color: var(--hs-accent) !important; background: rgba(63, 184, 173, .14) !important; }
.lbn-hs__dots { display: flex; gap: 10px; }
.lbn-hs__dot {
	width: 8px !important;
	height: 8px !important;
	min-width: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 50% !important;
	background: rgba(236, 230, 220, .3) !important;
	box-shadow: none !important;
	cursor: pointer;
	transition: background .3s ease, transform .3s ease;
}
.lbn-hs__dot.is-active { background: var(--hs-accent) !important; transform: scale(1.3); }

/* ---------- closing quote ---------- */
.lbn-hs--quote {
	display: flex;
	align-items: center;
	justify-content: center;
	height: clamp(560px, 100svh, 1100px);
	padding: 0 24px;
}
.lbn-hs--quote .lbn-hs__media { inset: -12% 0; }
.lbn-hs--quote::before {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(to bottom, var(--hs-ink) 0%, rgba(5, 5, 5, .1) 28%, rgba(5, 5, 5, .15) 72%, var(--hs-ink) 100%);
}
.lbn-hs--quote .lbn-hs__media > img { filter: brightness(1.35) saturate(1.1); }
.lbn-hs__quote {
	position: relative;
	max-width: 640px;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	font-family: var(--hs-ui) !important;
	font-size: clamp(20px, 2.05vw, 34px) !important;
	font-weight: 300 !important;
	font-style: normal !important;
	line-height: 1.55 !important;
	text-align: center;
	color: rgba(255, 255, 255, .92) !important;
	quotes: none;
}
.lbn-hs__quote::before,
.lbn-hs__quote::after { content: none !important; }

/* ---------- reveal on scroll (only when JS is running) ---------- */
.lbn-hs-js [data-hs-reveal] {
	opacity: 0;
	transform: translateY(28px);
	transition: opacity 1s ease, transform 1s cubic-bezier(.2, .7, .2, 1);
}
.lbn-hs-js [data-hs-reveal].is-in { opacity: 1; transform: none; }

/* ---------- tablets and phones: image first, copy below — nothing overlaps ---------- */
@media (max-width: 900px) {
	.lbn-hs--feature,
	.lbn-hs--spiced {
		height: auto;
		display: flex;
		flex-direction: column;
	}
	.lbn-hs--feature::before,
	.lbn-hs--spiced::before { content: none; }
	.lbn-hs--feature .lbn-hs__media,
	.lbn-hs--spiced .lbn-hs__media {
		position: relative;
		inset: auto;
		z-index: 0;
		aspect-ratio: 4 / 5;
		max-height: 78svh;
		width: 100%;
		overflow: hidden;
	}
	.lbn-hs--feature .lbn-hs__media::after,
	.lbn-hs--spiced .lbn-hs__media::after {
		content: "";
		position: absolute;
		inset: auto 0 0;
		z-index: 2;
		height: 28%;
		background: linear-gradient(to bottom, transparent, var(--hs-ink));
	}
	.lbn-hs--feature .lbn-hs__media > img:not(.lbn-hs__leaf),
	.lbn-hs--spiced .lbn-hs__media > img { object-position: var(--hs-focus); }
	.lbn-hs__inner,
	.lbn-hs--text-right .lbn-hs__inner {
		display: block;
		height: auto;
		padding: 8px 24px 72px;
		text-align: center;
	}
	.lbn-hs__copy { width: 100%; max-width: 560px; margin: 0 auto; }
	.lbn-hs__text { margin-left: auto !important; margin-right: auto !important; }
	.lbn-hs__nav { justify-content: center; margin-top: 32px; }
	.lbn-hs__leaf { width: 120px; }
	.lbn-hs__leaf--b { width: 100px; }
	.lbn-hs--quote { height: 72svh; min-height: 420px; }
}
@media (max-width: 480px) {
	.lbn-hs__title { font-size: 34px !important; }
	.lbn-hs__btn { padding: 13px 20px 13px 22px; font-size: 12px; }
}

@media (prefers-reduced-motion: reduce) {
	.lbn-hs__leaf, .lbn-hs__stars::after, .lbn-hs__cue span { animation: none; }
	.lbn-hs-js [data-hs-reveal] { transform: none; transition: opacity .4s ease; }
	.lbn-hs__slide, .lbn-hs__slide.is-active { transform: none; }
}
