.gcnc-animations-ready .gcnc-animate {
	opacity: 0;
	transition: opacity 500ms ease var(--gcnc-animation-delay, 0ms), transform 500ms ease var(--gcnc-animation-delay, 0ms);
	will-change: opacity, transform;
}

.gcnc-animations-ready .gcnc-animate--fade-up { transform: translateY(20px); }
.gcnc-animations-ready .gcnc-animate--slide-left { transform: translateX(-24px); }
.gcnc-animations-ready .gcnc-animate--slide-right { transform: translateX(24px); }
.gcnc-animations-ready .gcnc-animate--rotate-in { transform: rotate(-6deg) scale(.96); }
.gcnc-animations-ready .gcnc-animate--bounce-in {
	transform: translateY(-22px) scale(.96);
	transition-timing-function: cubic-bezier(.34, 1.56, .64, 1);
}
.gcnc-animations-ready .gcnc-animate.is-visible {
	opacity: 1;
	transform: none;
	will-change: auto;
}

.gcnc-animations-ready .gcnc-animate.is-continuous {
	animation-delay: var(--gcnc-animation-delay, 0ms);
	animation-iteration-count: infinite;
	animation-play-state: paused;
	will-change: opacity, transform;
}
.gcnc-animations-ready .gcnc-animate.is-continuous.is-animating { animation-play-state: running; }
.gcnc-animations-ready .gcnc-animate--fade-in.is-continuous { animation-duration: 2.5s; animation-name: gcnc-pulse; animation-timing-function: ease-in-out; }
.gcnc-animations-ready .gcnc-animate--fade-up.is-continuous { animation-duration: 2.5s; animation-name: gcnc-float; animation-timing-function: ease-in-out; }
.gcnc-animations-ready .gcnc-animate--slide-left.is-continuous,
.gcnc-animations-ready .gcnc-animate--slide-right.is-continuous { animation-duration: 2.5s; animation-name: gcnc-sway; animation-timing-function: ease-in-out; }
.gcnc-animations-ready .gcnc-animate--rotate-in.is-continuous { animation-duration: 6s; animation-name: gcnc-rotate; animation-timing-function: linear; }
.gcnc-animations-ready .gcnc-animate--bounce-in.is-continuous { animation-duration: 1.5s; animation-name: gcnc-bounce; animation-timing-function: ease-in-out; }

@keyframes gcnc-pulse { 50% { opacity: .6; } }
@keyframes gcnc-float { 50% { transform: translateY(-10px); } }
@keyframes gcnc-sway { 50% { transform: translateX(10px); } }
@keyframes gcnc-rotate { to { transform: rotate(360deg); } }
@keyframes gcnc-bounce { 50% { transform: translateY(-12px); } }

@media (prefers-reduced-motion: reduce) {
	.gcnc-animations-ready .gcnc-animate { animation: none; opacity: 1; transform: none; transition: none; }
}
