<div class='loader'>loading</div>
$r-dot: 1em;
$d-dot: 2*$r-dot;
$l-pad: 6.25*$r-dot;

body {
	display: grid;
	overflow: hidden;
	margin: 0;
	height: 100vh;
	background: #000;
	
	&::before {
		padding: $l-pad + $r-dot;
		background: radial-gradient(#e56589 $l-pad - 3*$r-dot, #6c97c3 $l-pad - $d-dot);
		content: ''
	}
	
	&::after {
		position: absolute;
		top: calc(50% + #{$l-pad}); left: 50%;
		transform: translate(-50%);
		color: rgba(#fff, .5);
		font: 200 1.5em/ 1.25 sans-serif;
		letter-spacing: 1px;
		text-transform: uppercase;
		animation: f 1s ease-in-out infinite alternate;
		content: 'loading'
	}
}

@keyframes f { to { opacity: 0 } }

div, ::before, ::after {
	place-self: center;
	grid-column: 1;
	grid-row: 1
}

.loader {
	display: grid;
	padding: $d-dot;
	background: inherit;
	filter: contrast(9);
	mix-blend-mode: multiply;
	
	&::before, &::after {
		padding: $l-pad;
		--stops: #fff calc(#{$r-dot} - 1px), transparent #{$r-dot}; 
		background: 
			radial-gradient(circle at $r-dot, var(--stops)), 
			radial-gradient(circle at 50% $r-dot, var(--stops)), 
			radial-gradient(circle at calc(100% - #{$r-dot}), var(--stops)), 
			radial-gradient(circle at 50% calc(100% - #{$r-dot}), var(--stops));
	filter: blur(9px);
		animation: a .875s ease-in-out infinite;
		content: ''
	}

	&::before { animation-name: b }
}

@keyframes a { 33.33%, 66.67% { padding: $r-dot } }

@keyframes b {
	33.33% { transform: rotate(0deg) }
	66.67%, 100% { transform: rotate(90deg) }
}
View Compiled

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.