/* =============================================================================
   NOVA MOTION — hero network + cursor glow + section fade-in
   ============================================================================= */

.nova-bg-network,
.nova-hero-motion {
	position: relative;
	overflow: hidden;
	isolation: isolate;
}

/*
 * Keep hero content above the network canvas without overriding Elementor
 * positioning. Forcing position:relative here broke absolute overlays
 * (e.g. the mobile hero dim layer), which then rendered as a clipped fill.
 */
.nova-bg-network > .e-con-inner,
.nova-bg-network > .elementor-container,
section.nova-bg-network > *:not(.nova-hero-cursor-glow):not(.nova-network-canvas),
[data-element_type="e-flexbox"].nova-bg-network > *:not(.nova-hero-cursor-glow):not(.nova-network-canvas),
.nova-bg-network > .elementor-element {
	z-index: 2;
}

.nova-bg-network .nova-network-canvas {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	z-index: 1;
	pointer-events: none;
	opacity: 0.4;
}

.nova-bg-network::after {
	content: none;
}

/* Keep Elementor background-image on the hero; float via background-position only */
.nova-hero-motion.nova-hero-peptide-float-host {
	background-repeat: no-repeat;
	will-change: background-position;
	animation: nova-hero-peptide-float 7s ease-in-out infinite;
}

@keyframes nova-hero-peptide-float {
	0%,
	100% {
		background-position: center bottom;
	}
	50% {
		background-position: center 40%;
	}
}

.nova-hero-motion > .nova-hero-cursor-glow {
	position: absolute;
	inset: 0;
	z-index: 1;
	pointer-events: none;
	opacity: 0;
	transition: opacity 0.35s ease;
}

.nova-hero-cursor-glow.is-active {
	opacity: 1;
}

.nova-hero-cursor-glow__orb {
	position: absolute;
	left: 0;
	top: 0;
	width: 240px;
	height: 240px;
	border-radius: 50%;
	background: radial-gradient(circle, rgba(185, 150, 91, 0.28) 0%, rgba(185, 150, 91, 0) 62%);
	filter: blur(1px);
	transform: translate(-50%, -50%);
	will-change: left, top;
}

@media (max-width: 767px) {
	.nova-bg-network .nova-network-canvas {
		display: none;
	}

	/* Keep glow inside the hero — negative inset was bleeding into the header */
	.nova-bg-network::before {
		content: "";
		position: absolute;
		top: 0;
		right: 0;
		bottom: 0;
		left: 0;
		z-index: 1;
		pointer-events: none;
		opacity: 0.35;
		background:
			radial-gradient(circle at 20% 20%, rgba(185, 150, 91, 0.24) 0%, transparent 50%),
			radial-gradient(circle at 80% 70%, rgba(185, 150, 91, 0.14) 0%, transparent 55%);
		animation: nova-hero-glow-drift 32s ease-in-out infinite alternate;
	}

	.nova-hero-cursor-glow {
		display: none;
	}
}

@keyframes nova-hero-glow-drift {
	0% {
		transform: translate3d(-2%, -1%, 0) scale(1);
	}
	100% {
		transform: translate3d(2%, 1.5%, 0) scale(1.04);
	}
}

	@media (prefers-reduced-motion: reduce) {
	.nova-bg-network::before {
		animation: none !important;
	}

	.nova-hero-peptide-float-host {
		animation: none !important;
	}

	.nova-bg-network .nova-network-canvas,
	.nova-hero-cursor-glow {
		display: none !important;
	}

	.nova-section-reveal,
	.nova-reveal-item {
		opacity: 1 !important;
		transform: none !important;
		transition: none !important;
		animation: none !important;
	}
}

/*
 * Scroll settle: fade-in only (no translate).
 * Staging previously used translateY on sections → white body flash.
 * Kill transforms with !important so nothing reintroduces fade-up.
 */
body.nova-motion-page .nova-section-reveal {
	opacity: 1 !important;
	transform: none !important;
	transition: none !important;
	will-change: auto !important;
}

body.nova-motion-page .nova-reveal-item {
	opacity: 0;
	transform: none !important;
	transition: opacity 0.65s ease;
	will-change: opacity;
	transition-delay: var(--nova-item-delay, 0s);
}

body.nova-motion-page .nova-section-reveal.is-visible .nova-reveal-item,
body.nova-motion-page .nova-reveal-item.is-visible {
	opacity: 1;
	transform: none !important;
}

/* CTA band — cream bg stays put; only inner copy fades */
body.nova-motion-page .elementor-element-59d45a8a,
body.nova-motion-page .elementor-element-59d45a8a.nova-section-reveal,
body.nova-motion-page .elementor-element-59d45a8a.nova-reveal-item {
	opacity: 1 !important;
	transform: none !important;
	transition: none !important;
}

body.nova-motion-page .elementor-element-59d45a8a .nova-reveal-item {
	opacity: 0;
	transform: none !important;
	transition: opacity 0.65s ease !important;
}

body.nova-motion-page .elementor-element-59d45a8a.nova-section-reveal.is-visible .nova-reveal-item,
body.nova-motion-page .elementor-element-59d45a8a .nova-reveal-item.is-visible {
	opacity: 1 !important;
}
