/**
 * Alexander Motion Engine — base stylesheet.
 *
 * Contains only what every module needs before its JS has run: initial
 * hidden/masked states (so there's no flash of the final position before
 * the JS animates it in), keyframes for CSS-driven effects (marquee,
 * Ken Burns, light sweep, ambient gradient), and the reduced-motion
 * escape hatch that overrides all of it. No layout, no color, no
 * typography — those belong to the theme / Elementor components.
 */

/* ---------- Reveal / split-text / char-reveal / mask-reveal ---------- */

[data-reveal] {
	opacity: 0;
	transform: translateY(24px);
}
[data-reveal].is-visible {
	opacity: 1;
	transform: none;
}

.agme-split-mask,
.agme-char-mask {
	overflow: hidden;
	display: inline-block;
	vertical-align: top;
}
.agme-split-unit,
.agme-char-unit {
	display: inline-block;
	will-change: transform;
	transform: translateY(110%);
}

[data-mask-reveal] {
	clip-path: inset( 0 0 100% 0 );
}
[data-mask-reveal].is-revealed {
	clip-path: inset( 0 0 0% 0 );
}

[data-image-mask-reveal] {
	position: relative;
	overflow: hidden;
}
[data-image-mask-reveal] img,
[data-image-mask-reveal] video {
	transform: scale( 1.15 );
	transition: none;
}
[data-image-mask-reveal].is-revealed img,
[data-image-mask-reveal].is-revealed video {
	transition: transform 1.1s cubic-bezier( 0.16, 1, 0.3, 1 );
	transform: scale( 1 );
}
[data-image-mask-reveal]::after {
	content: '';
	position: absolute;
	inset: 0;
	background: currentColor;
	transform-origin: bottom;
	pointer-events: none;
}
[data-image-mask-reveal].is-revealed::after {
	transition: transform 0.9s cubic-bezier( 0.76, 0, 0.24, 1 );
	transform: scaleY( 0 );
}

/* ---------- Ken Burns ---------- */

[data-kenburns] {
	overflow: hidden;
}
[data-kenburns] > img,
[data-kenburns] > video {
	width: 100%;
	height: 100%;
	object-fit: cover;
	animation: agme-kenburns 14s ease-in-out infinite alternate;
	animation-play-state: paused;
}
[data-kenburns].is-active > img,
[data-kenburns].is-active > video {
	animation-play-state: running;
}
@keyframes agme-kenburns {
	from { transform: scale( 1 ) translate( 0, 0 ); }
	to   { transform: scale( 1.12 ) translate( -1.5%, -1.5% ); }
}

/* ---------- Light sweep ---------- */

[data-light-sweep] {
	position: relative;
	overflow: hidden;
}
[data-light-sweep] .agme-sweep {
	position: absolute;
	top: 0;
	left: -60%;
	width: 40%;
	height: 100%;
	background: linear-gradient( 105deg, transparent 0%, rgba( 255, 255, 255, 0.22 ) 45%, transparent 90% );
	pointer-events: none;
	transform: skewX( -12deg );
}

/* ---------- Marquee ---------- */

[data-marquee] {
	overflow: hidden;
	display: flex;
	width: 100%;
}
[data-marquee] .agme-marquee-track {
	display: flex;
	flex-shrink: 0;
	gap: var( --agme-marquee-gap, 3rem );
	animation: agme-marquee var( --agme-marquee-duration, 30s ) linear infinite;
	animation-play-state: running;
}
[data-marquee]:hover .agme-marquee-track,
[data-marquee].is-paused .agme-marquee-track {
	animation-play-state: paused;
}
@keyframes agme-marquee {
	from { transform: translateX( 0 ); }
	to   { transform: translateX( -50% ); }
}
[data-marquee].ag-partner-marquee--reverse .agme-marquee-track {
	animation-direction: reverse;
}


/* ---------- Video background ---------- */

[data-video-bg] {
	position: relative;
	overflow: hidden;
}
[data-video-bg] .agme-video-el,
[data-video-bg] .agme-video-poster {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}
[data-video-bg] .agme-video-el {
	opacity: 0;
	transition: opacity 0.6s ease;
}
[data-video-bg] .agme-video-el.is-ready {
	opacity: 1;
}

/* ---------- Ambient gradient ---------- */

[data-ambient-gradient] {
	background-image: radial-gradient( circle at var( --agme-gx, 50% ) var( --agme-gy, 50% ), var( --agme-gradient-color, rgba( 0, 107, 255, 0.35 ) ), transparent 60% );
}

/* ---------- Image perspective / distortion ---------- */

[data-image-perspective] {
	perspective: 1000px;
}
[data-image-perspective] > * {
	transform-style: preserve-3d;
	will-change: transform;
}

[data-image-distortion] {
	overflow: hidden;
}
[data-image-distortion] img {
	will-change: transform, filter;
	transition: transform 0.4s var( --agme-ease, cubic-bezier( 0.16, 1, 0.3, 1 ) );
}

/* ---------- Custom cursor ---------- */

.agme-cursor-dot,
.agme-cursor-ring {
	position: fixed;
	top: 0;
	left: 0;
	pointer-events: none;
	z-index: 9999;
	transform: translate( -50%, -50% );
	border-radius: 50%;
}
.agme-cursor-dot {
	width: 6px;
	height: 6px;
	background: currentColor;
}
.agme-cursor-ring {
	width: 34px;
	height: 34px;
	border: 1px solid currentColor;
	transition: width 0.2s ease, height 0.2s ease, opacity 0.2s ease;
	opacity: 0.6;
}
.agme-cursor-ring.is-active {
	width: 52px;
	height: 52px;
	opacity: 1;
}
@media ( hover: none ), ( pointer: coarse ) {
	.agme-cursor-dot,
	.agme-cursor-ring {
		display: none;
	}
}

/* ---------- Page transition overlay ---------- */

#agme-page-transition {
	position: fixed;
	inset: 0;
	z-index: 100000;
	background: var( --agme-transition-color, #071B37 );
	transform: translateY( 100% );
	pointer-events: none;
}

/* ---------- Accessibility escape hatch ---------- */

@media ( prefers-reduced-motion: reduce ) {
	[data-reveal],
	[data-mask-reveal],
	[data-image-mask-reveal] img,
	[data-image-mask-reveal] video,
	[data-image-mask-reveal]::after,
	.agme-split-unit,
	.agme-char-unit {
		opacity: 1 !important;
		transform: none !important;
		clip-path: none !important;
		transition: none !important;
	}
	[data-kenburns] > img,
	[data-kenburns] > video,
	[data-marquee] .agme-marquee-track {
		animation: none !important;
	}
	.agme-cursor-dot,
	.agme-cursor-ring {
		display: none !important;
	}
	#agme-page-transition {
		display: none !important;
	}
}