@keyframes wk-float {
	0%,
	100% {
		transform: translateX(-50%) translateY(0);
	}
	50% {
		transform: translateX(-50%) translateY(-12px);
	}
}

@keyframes wk-key-pulse {
	0%,
	100% {
		transform: translateY(0);
	}
	50% {
		transform: translateY(-3px);
	}
}

@keyframes wk-spin-slow {
	from {
		transform: rotate(0deg);
	}
	to {
		transform: rotate(360deg);
	}
}

@keyframes wk-bubble-rise {
	0%,
	100% {
		transform: translateY(10px);
	}
	50% {
		transform: translateY(-12px);
	}
}

@keyframes wk-note-slide {
	0% {
		transform: translate(-120px, -50%);
	}
	100% {
		transform: translate(120px, -50%);
	}
}

@keyframes wk-character-breathe {
	0%,
	100% {
		filter: drop-shadow(0 18px 22px rgba(2, 6, 23, 0.24));
	}
	50% {
		filter: drop-shadow(0 24px 28px rgba(2, 6, 23, 0.28));
		transform: translate(var(--character-x), calc(var(--character-y) - 4px)) scale(var(--character-scale));
	}
}

@media (prefers-reduced-motion: reduce) {
	.wk-scene-orbit,
	.wk-key--active,
	.wk-spark-ring,
	.wk-bubble,
	.wk-rhythm-lane span,
	.wk-character-figure {
		animation: none;
	}

	.wk-profile-card {
		transition: none;
	}
}

.wk-reduced-motion .wk-scene-orbit,
.wk-reduced-motion .wk-key--active,
.wk-reduced-motion .wk-spark-ring,
.wk-reduced-motion .wk-bubble,
.wk-reduced-motion .wk-rhythm-lane span,
.wk-reduced-motion .wk-runner,
.wk-reduced-motion .wk-sprint-track i,
.wk-reduced-motion .wk-character-figure {
	animation: none;
	transition: none;
}
