/* Hero: full-bleed image or video, warm overlay, text and buttons, wavy bottom edge. */
.lmn-hero {
	position: relative; isolation: isolate; display: grid; align-items: end; overflow: hidden;
	width: 100vw; margin-left: calc(50% - 50vw); min-height: 60vh; color: var(--lmn-white);
	margin-top: calc(-1 * var(--lmn-section, 0px) * 0); /* keeps room for Elementor spacing */
}
/* Height: compact on phones so the page content starts above the fold; the text can still push the hero taller. svh = height with browser bars visible. */
.lmn-hero--tall { min-height: min(56vh, 480px); min-height: min(56svh, 480px); }
.lmn-hero--short { min-height: min(44vh, 380px); min-height: min(44svh, 380px); }
@media (min-width: 700px) {
	.lmn-hero--tall { min-height: min(70vh, 720px); }
	.lmn-hero--short { min-height: min(48vh, 520px); }
}
@media (min-width: 1024px) {
	.lmn-hero--tall { min-height: min(88vh, 900px); }
}
.lmn-hero__media { position: absolute; inset: 0; z-index: -2; }
.lmn-hero__media img, .lmn-hero__video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
/* Parallax (theme.js): the media gets extra room above so it can move down while scrolling. */
.lmn-hero.has-parallax .lmn-hero__media { top: -20%; will-change: transform; }
.lmn-hero__media.is-placeholder { background: linear-gradient(135deg, var(--lmn-coral) 0%, var(--lmn-yellow) 100%); }
.lmn-hero__overlay { position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(22, 22, 22, 0.15) 0%, rgba(22, 22, 22, 0.35) 50%, rgba(22, 22, 22, 0.7) 100%); }
.lmn-hero__content {
	position: relative; width: min(100% - 2 * var(--lmn-gutter), var(--lmn-container)); margin-inline: auto;
	padding: clamp(3rem, 12vw, 8rem) 0 clamp(4rem, 10vw, 7rem); max-width: 100%;
}
.lmn-hero__inner { max-width: 44rem; }
.lmn-hero--center .lmn-hero__inner { margin-inline: auto; text-align: center; }
.lmn-hero--center .lmn-actions { justify-content: center; }
.lmn-hero__kicker { color: var(--lmn-yellow); margin-bottom: 0.75rem; }
.lmn-hero__title { color: var(--lmn-white); text-shadow: 0 2px 20px rgba(0, 0, 0, 0.25); margin-bottom: 0.35em; }
.lmn-hero__subtitle { font-size: clamp(1.125rem, 1rem + 0.6vw, 1.375rem); max-width: 36rem; margin-bottom: 1.5rem; text-wrap: pretty; }
.lmn-hero--center .lmn-hero__subtitle { margin-inline: auto; }
.lmn-hero .lmn-btn--secondary { background: var(--lmn-yellow); color: var(--lmn-black); }
.lmn-hero .lmn-btn--outline { color: var(--lmn-white); border-color: var(--lmn-white); }
.lmn-hero .lmn-btn--outline:hover { background: var(--lmn-white); color: var(--lmn-black); }
.lmn-hero__wave { position: absolute; left: 0; right: 0; bottom: -1px; height: clamp(28px, 5vw, 64px); line-height: 0; z-index: 1; }
.lmn-hero__wave svg { width: 100%; height: 100%; display: block; }
.lmn-hero__wave path { fill: var(--lmn-cream); }
/* The photo sits on its own compositing layer (parallax), which snaps to whole pixels; with a fractional hero height
   that left a hairline of photo under the wave. Ending photo and overlay 4px early (the wave covers that strip) avoids it. */
.lmn-hero__media, .lmn-hero__overlay { bottom: 4px; }
.lmn-hero__scroll { position: absolute; bottom: clamp(3rem, 7vw, 5rem); left: 50%; transform: translateX(-50%); color: var(--lmn-white); opacity: 0.8; display: none; }
@media (min-width: 900px) { .lmn-hero--tall .lmn-hero__scroll { display: block; } }
