/**
 * Loading indicator
 * Based on Vector
 *
 * By adding a class on the parent search form
 * <div class=".citizen-loading"></div>
 * A pseudo element is added via ':after' that adds the loading indicator.
 *
 * After appearing for more than a second, a progress-bar animation appears
 * above the loading indicator.
 *
 **/
.citizen-loading::after {
	// Delay animation by 500ms after loading
	--delay-progress-bar: 500ms;
	--height-progress-bar: 2px;
	z-index: @z-index-top;
	// Ensure it doesn't extend beyond the input.
	box-sizing: border-box;
	display: block;
	width: 100%;
	// Hide text in case it extends beyond the input.
	height: var( --height-progress-bar );
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	// Placeholder text
	content: 'loading';
	// Add a progress-bar to the loading indicator
	background: /*image*/
		linear-gradient( 90deg, var( --color-progressive ) 0%, var( --color-progressive ) 100% )
		-10% 0 ~'/' 0 var( --height-progress-bar )
		no-repeat,transparent;
	// Fancy shadow under progress
	filter: drop-shadow( 0 0 16px var( --color-progressive ) );
	// Align style with the form
	border-radius: 0 0 var( --border-radius-large ) var( --border-radius-large );
	// Animates the progress-bar.
	animation:
 progress-bar
		1200ms
		linear
		var( --delay-progress-bar )
		infinite
		alternate;
}

@keyframes progress-bar {
	0% {
		background-position: -10% 0;
		background-size: 0 var( --height-progress-bar );
	}

	30% {
		background-position: -10% 0;
		background-size: 30% var( --height-progress-bar );
	}

	70% {
		/* @noflip */
		background-position: 110% 0;
		background-size: 30% var( --height-progress-bar );
	}

	100% {
		/* @noflip */
		background-position: 110% 0;
		background-size: 0 var( --height-progress-bar );
	}
}

// On page unload
html.citizen-loading::after {
	position: fixed;
	top: 0;
}

@media ( display-mode: standalone ) {
	// Standalone PWA has no loading affordance
	// So we provide one
	html.citizen-loading::after {
		--delay-progress-bar: 0ms;
	}
}
