/* fluid-1920 */
/* LP Motion Kit: element effects (Advanced tab) and Pro Form validation feedback.
   Loaded on every Elementor page; everything here is scoped to opt-in classes. */

/* Phones and tablets: live backdrop blur on fixed/sticky bars is the classic cause of scroll stutter
   (the GPU re-blurs the page behind them every frame). Switch it off and use a solid background. */
@media (hover: none) and (pointer: coarse) {
	:root { --lpm-bf-off: none; }
}

/* Background video zooms out as the section scrolls in (CSS scroll-driven animation). */
@keyframes lpm-bgzoom { from { scale: var(--lpm-bgzoom, 1.2); } to { scale: 1; } }
@supports (animation-timeline: view()) {
	.lpm-bgzoom-yes > .elementor-background-video-container :is(video, iframe) {
		animation: lpm-bgzoom linear both;
		animation-timeline: view();
		animation-range: entry 0% cover 50%;
	}
}

/* Scroll effects (script-driven). Stacking cards stick from tablet up. */
@media (min-width: 768px) {
	.lpm-stack-yes { position: sticky !important; top: var(--lpm-stack-top, 96px); transform-origin: 50% 0; }
}
.lpm-settle-yes img { transform-origin: 50% 55%; }

/* Reveal after the loader: hidden under it once it starts, eased in as it opens */
.lpm-afterload-yes { transition: opacity 1s cubic-bezier(.16,1,.3,1) var(--lpm-al-delay, 0ms), translate 1s cubic-bezier(.16,1,.3,1) var(--lpm-al-delay, 0ms); }
html.lpm-loading:not(.lpm-revealed) .lpm-afterload-yes { opacity: 0; translate: 0 26px; transition: none; }

/* Pro Form: live validation feedback */
[data-lpm-validate] .elementor-field-group { position: relative; }
[data-lpm-validate] .lpm-invalid :is(input, textarea, select).elementor-field-textual { border-color: var(--lpm-err, #c9383d) !important; }
[data-lpm-validate] .lpm-valid :is(input, textarea).elementor-field-textual { padding-inline-end: 2.6em; }
[data-lpm-validate] .lpm-valid::after {
	content: ""; position: absolute; inset-inline-end: .9em; top: calc(var(--lpm-input-mid, 50%) - .6em);
	width: 1.2em; height: 1.2em; background: var(--lpm-ok, #1f8a4c);
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20Zm-1.4 14.2-4.2-4.2 1.4-1.4 2.8 2.8 5.8-5.8 1.4 1.4-7.2 7.2Z'/%3E%3C/svg%3E") center / contain no-repeat;
	        mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20Zm-1.4 14.2-4.2-4.2 1.4-1.4 2.8 2.8 5.8-5.8 1.4 1.4-7.2 7.2Z'/%3E%3C/svg%3E") center / contain no-repeat;
	animation: lpm-pop .4s cubic-bezier(.34, 1.8, .64, 1);
}
[data-lpm-validate] .lpm-shake { animation: lpm-shake .4s; }
[data-lpm-validate] .lpm-field-msg { flex-basis: 100%; width: 100%; margin-top: 4px; font-size: .85em; color: var(--lpm-err, #b3261e); }
@keyframes lpm-pop { from { scale: 0; } }
@keyframes lpm-shake { 25% { translate: 6px; } 50% { translate: -5px; } 75% { translate: 3px; } }

@media (prefers-reduced-motion: reduce) {
	.lpm-afterload-yes { opacity: 1 !important; translate: none !important; }
	.lpm-bgzoom-yes > .elementor-background-video-container :is(video, iframe) { animation: none; }
	[data-lpm-validate] .lpm-shake, [data-lpm-validate] .lpm-valid::after { animation: none; }
}

/* ===== 1.7 light effects (the script adds the light layers) ===== */
:where(.lpm-spot-yes, .lpm-edge-yes, .lpm-aurora-yes) { position: relative; }
.lpm-spot-ring {
	position: absolute; inset: -1px; border-radius: inherit; padding: 1px; pointer-events: none; z-index: 2; opacity: 0; transition: opacity .5s;
	background: radial-gradient(26rem circle at var(--lpm-sx, 50%) var(--lpm-sy, 50%), var(--lpm-spot, #7d95ff), transparent 45%);
	-webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude;
}
.lpm-spot-ring::after {
	content: ""; position: absolute; inset: 1px; border-radius: inherit;
	background: radial-gradient(30rem circle at var(--lpm-sx, 50%) var(--lpm-sy, 50%), color-mix(in srgb, var(--lpm-spot, #7d95ff) 7%, transparent), transparent 50%);
}
.lpm-spot-on > .lpm-spot-ring { opacity: 1; }
@property --lpm-edge-a { syntax: "<angle>"; inherits: false; initial-value: 0deg; }
.lpm-edge-ring {
	position: absolute; inset: -1px; border-radius: inherit; padding: 1px; pointer-events: none; z-index: 2;
	background: conic-gradient(from var(--lpm-edge-a), transparent 0 60%, var(--lpm-edge, #7d95ff) 80%, transparent 100%);
	-webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude;
	animation: lpm-edge-run 6s linear infinite;
}
@keyframes lpm-edge-run { to { --lpm-edge-a: 360deg; } }
.lpm-aurora-yes { isolation: isolate; overflow: hidden; }
.lpm-aurora-bg { position: absolute; inset: 0; z-index: -1; pointer-events: none; overflow: hidden; border-radius: inherit; }
.lpm-aurora-bg i { position: absolute; width: 60%; aspect-ratio: 1; border-radius: 50%; background: radial-gradient(closest-side, color-mix(in srgb, var(--lpm-aurora, #7d95ff) 16%, transparent), transparent 70%); animation: lpm-drift-glow 18s cubic-bezier(.65, 0, .35, 1) infinite alternate; }
.lpm-aurora-bg i:first-child { top: -30%; left: -10%; }
.lpm-aurora-bg i:last-child { bottom: -40%; right: 10%; animation-duration: 24s; animation-direction: alternate-reverse; }
@keyframes lpm-drift-glow { to { transform: translate(18%, 12%) scale(1.2); } }
@media (prefers-reduced-motion: reduce) { .lpm-edge-ring, .lpm-aurora-bg i { animation: none; } }
