@keyframes fadeInUp {
	from {
		opacity: 0;
		transform: translateY(10px);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}
@keyframes slideDown {
	from {
		opacity: 0;
		transform: translateY(-10px);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}
@keyframes spin {
	to {
		transform: rotate(360deg);
	}
}
@keyframes pulseRight {
	0% {
		opacity: 0.3;
		transform: translate(0, -50%);
	}
	50% {
		opacity: 0.15;
		transform: translate(5px, -50%);
	}
	100% {
		opacity: 0.3;
		transform: translate(0, -50%);
	}
}

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-delay: 0s !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		transition-delay: 0s !important;
		scroll-behavior: auto !important;
	}
}

.theme-switching *:not(.theme-toggle, .theme-toggle *),
.theme-switching *:not(.theme-toggle, .theme-toggle *)::before,
.theme-switching *:not(.theme-toggle, .theme-toggle *)::after {
	transition: none !important;
}

/* 圆形展开/收缩由 JS 驱动，去掉浏览器默认的交叉淡入 */
.theme-switching-circle::view-transition-old(root),
.theme-switching-circle::view-transition-new(root) {
	animation: none;
}

.theme-switching-reverse::view-transition-old(root) {
	background: none;
	z-index: 2;
}

.app-loading body > * {
	opacity: 0;
	visibility: hidden;
}

.app-entering body > * {
	transition: opacity 0.2s ease-out;
}

@media (prefers-reduced-motion: reduce) {
	.app-entering body > * {
		transition: none;
	}
}
