.joincontest-spinner-overlay {
	position: fixed;
	inset: 0;
	z-index: 1300;
	display: grid;
	place-items: center;
	background: color-mix(in srgb, var(--bg, #111827) 58%, transparent);
	backdrop-filter: blur(2px);
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.18s ease;
}

.joincontest-spinner-overlay.is-visible {
	opacity: 1;
	pointer-events: auto;
}

.joincontest-spinner {
	position: relative;
	display: grid;
	place-items: center;
	width: 4.5rem;
	height: 4.5rem;
}

.joincontest-spinner__ring {
	width: 2.85rem;
	height: 2.85rem;
	border: 3px solid color-mix(in srgb, var(--brand, var(--accent, #38bdf8)) 24%, transparent);
	border-top-color: var(--brand, var(--accent, #38bdf8));
	border-radius: 50%;
	animation: joincontest-spinner-spin 0.8s linear infinite;
}

.joincontest-spinner__message {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

html.joincontest-loading {
	overflow: hidden;
}

@keyframes joincontest-spinner-spin {
	to {
		transform: rotate(360deg);
	}
}
