.loading-screen {
	width: 100vw;
	height: 100vh;

	position: fixed;
	top: 0;
	bottom: 0;
	right: 0;
	z-index: 110;

	background-color: var(--primary-background-color);
}

.spinner {
	width: 50px;
	height: 50px;
	margin: -25px 0 0 -25px;

	position: absolute;
	top: 50%;
	left: 50%;
	z-index: 2;

	stroke: var(--company-color1);
	animation: rotate 2s linear infinite;
	-webkit-animation: rotate 2s linear infinite;
}

.spinner .path {
	stroke: var(--company-color1);
	stroke-linecap: round;
	animation: dash 1.5s ease-in-out infinite;
	-webkit-animation: dash 1.5s ease-in-out infinite;
}

@-webkit-keyframes rotate {
	100% {
		-webkit-transform: rotate(360deg);
		transform: rotate(360deg);
	}
}

@keyframes rotate {
	100% {
		-webkit-transform: rotate(360deg);
		transform: rotate(360deg);
	}
}

@-webkit-keyframes dash {
	0% {
		stroke-dasharray: 1, 150;
		stroke-dashoffset: 0;
	}

	50% {
		stroke-dasharray: 90, 150;
		stroke-dashoffset: -35;
	}

	100% {
		stroke-dasharray: 90, 150;
		stroke-dashoffset: -124;
	}
}

@keyframes dash {
	0% {
		stroke-dasharray: 1, 150;
		stroke-dashoffset: 0;
	}

	50% {
		stroke-dasharray: 90, 150;
		stroke-dashoffset: -35;
	}

	100% {
		stroke-dasharray: 90, 150;
		stroke-dashoffset: -124;
	}
}

.please-wait {
	width: 26ch;
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, 40px);
	z-index: 2;

	opacity: 0;
	visibility: hidden;
	transition: opacity 0.1s ease-in, visibility 0.1s ease-in;
}

.please-wait.show {
	opacity: 1;
	visibility: visible;
}

.please-wait.static {
	opacity: 1;
	visibility: hidden;
}

.please-wait.static::after {
	content: "This is taking longer than usual. Please contact your administrator.";
	text-align: center;
	visibility: visible;
	display: block;
	position: absolute;
	top: 0;
}

.please-wait.show::after {
	content: "";
	animation: loading 1s ease-in-out infinite;
}

@keyframes loading {
	0% {
		content: "";
	}

	25% {
		content: " .";
	}

	50% {
		content: " ..";
	}

	100% {
		content: " ...";
	}
}