html.grat-transition-ready.grat-pro-loader-visible::after {
	box-sizing: border-box;
	color: var(--grat-pro-loader-color, #fff);
	content: "";
	left: 50%;
	pointer-events: none;
	position: fixed;
	top: 50%;
	transform: translate(-50%, -50%);
	z-index: 2147483647;
}

html.grat-transition-ready.grat-pro-loader-visible.grat-pro-loader--spinner::after {
	animation: grat-pro-spin 760ms linear infinite;
	border: 3px solid currentColor;
	border-right-color: transparent;
	border-radius: 50%;
	height: 38px;
	margin: -19px 0 0 -19px;
	transform: none;
	width: 38px;
}

html.grat-transition-ready.grat-pro-loader-visible.grat-pro-loader--dots::after {
	animation: grat-pro-dots 900ms ease-in-out infinite;
	content: "•••";
	font: 700 28px/1 sans-serif;
	letter-spacing: 6px;
	white-space: nowrap;
}

html.grat-transition-ready.grat-pro-loader-visible.grat-pro-loader--pulse::after {
	animation: grat-pro-pulse 1s ease-in-out infinite;
	background: currentColor;
	border-radius: 50%;
	height: 24px;
	width: 24px;
}

@keyframes grat-pro-spin {
	to { transform: rotate(360deg); }
}

@keyframes grat-pro-dots {
	0%, 100% { opacity: 0.35; transform: translate(-50%, -50%) scale(0.92); }
	50% { opacity: 1; transform: translate(-50%, -50%) scale(1); }
}

@keyframes grat-pro-pulse {
	0%, 100% { opacity: 0.45; transform: translate(-50%, -50%) scale(0.75); }
	50% { opacity: 1; transform: translate(-50%, -50%) scale(1.2); }
}

@media (prefers-reduced-motion: reduce) {
	html.grat-transition-ready.grat-pro-loader-visible::after {
		display: none !important;
	}
}
