/* WISEVOC — keyframes and motion hooks */

@keyframes wv-waveform {
	0% {
		stroke-dashoffset: 1000;
	}

	100% {
		stroke-dashoffset: 0;
	}
}

@keyframes wv-waveform-loop {
	0% {
		transform: translateX(0);
	}

	100% {
		transform: translateX(-50%);
	}
}

@keyframes wv-mesh-shift {
	0%,
	100% {
		background-position: 0% 50%;
	}

	50% {
		background-position: 100% 50%;
	}
}

@keyframes wv-orbit {
	from {
		transform: rotate(0deg);
	}

	to {
		transform: rotate(360deg);
	}
}

@keyframes wv-orbit-reverse {
	from {
		transform: rotate(0deg);
	}

	to {
		transform: rotate(-360deg);
	}
}

@keyframes wv-pulse-glow {
	0%,
	100% {
		box-shadow: 0 0 20px rgba(0, 229, 195, 0.2);
		will-change: box-shadow;
	}

	50% {
		box-shadow: 0 0 40px rgba(0, 229, 195, 0.5), 0 0 80px rgba(0, 229, 195, 0.2);
	}
}

@keyframes wv-blink {
	0%,
	100% {
		opacity: 1;
	}

	50% {
		opacity: 0;
	}
}

@keyframes wv-float {
	0%,
	100% {
		transform: translateY(0);
		will-change: transform;
	}

	50% {
		transform: translateY(-10px);
	}
}

@keyframes wv-pulse-dot {
	0% {
		transform: scale(1);
		opacity: 1;
	}

	100% {
		transform: scale(3);
		opacity: 0;
	}
}

@keyframes wv-draw-line {
	from {
		stroke-dashoffset: 1;
	}

	to {
		stroke-dashoffset: 0;
	}
}

@keyframes wv-count-up {
	from {
		opacity: 0;
	}

	to {
		opacity: 1;
	}
}

@keyframes wv-slide-in-right {
	from {
		transform: translateX(40px);
		opacity: 0;
	}

	to {
		transform: translateX(0);
		opacity: 1;
	}
}

@keyframes wv-shake {
	0%,
	100% {
		transform: translateX(0);
	}

	20% {
		transform: translateX(-6px);
	}

	40% {
		transform: translateX(6px);
	}

	60% {
		transform: translateX(-4px);
	}

	80% {
		transform: translateX(4px);
	}
}

.wv-animate-orbit {
	animation: wv-orbit 20s linear infinite;
	will-change: transform;
}

.wv-animate-orbit-reverse {
	animation: wv-orbit-reverse 30s linear infinite;
	will-change: transform;
}

.wv-animate-float {
	animation: wv-float 3s ease-in-out infinite;
	will-change: transform;
}

.wv-animate-pulse-glow {
	animation: wv-pulse-glow 2s ease-in-out infinite;
	will-change: box-shadow;
}

.wv-animate-waveform {
	animation: wv-waveform-loop 8s linear infinite;
	will-change: transform;
}

.wv-animate-blink {
	animation: wv-blink 0.8s step-start infinite;
}

.wv-animate-shake {
	animation: wv-shake 0.4s var(--wv-ease-spring);
}

[data-wv-animate] {
	opacity: 0;
	will-change: transform, opacity;
}

[data-wv-animate="fade-up"] {
	transform: translateY(40px);
}

[data-wv-animate="fade-in"] {
	transform: none;
}

[data-wv-animate="slide-left"] {
	transform: translateX(-40px);
}

[data-wv-animate="slide-right"] {
	transform: translateX(40px);
}

[data-wv-animate="scale-in"] {
	transform: scale(0.9);
}

[data-wv-animate="split-text"] {
	opacity: 1;
	transform: none;
}

[data-wv-animate="stagger-up"] .wv-timeline__item {
	opacity: 0;
	transform: translateY(24px);
}

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.001ms !important;
	}

	[data-wv-animate] {
		opacity: 1 !important;
		transform: none !important;
	}

	[data-wv-animate="stagger-up"] .wv-timeline__item {
		opacity: 1 !important;
		transform: none !important;
	}
}
