/**
 * Indicateur de chargement Kokende — points verts en orbite.
 */

:root {
	--kokende-loader-green: #00bf63;
	--kokende-loader-green-dim: rgba(0, 191, 99, 0.35);
}

html.kokende-is-loading {
	overflow: hidden;
}

.kokende-page-loader {
	position: fixed;
	inset: 0;
	z-index: 99999;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 1.5rem;
	background: rgba(255, 255, 255, 0.82);
	backdrop-filter: blur(10px);
	-webkit-backdrop-filter: blur(10px);
	opacity: 1;
	visibility: visible;
	transition: opacity 0.35s ease, visibility 0.35s ease;
}

.kokende-page-loader.is-hidden {
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
}

.kokende-page-loader__panel {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 1.15rem;
}

.kokende-page-loader__ring {
	position: relative;
	width: 3.75rem;
	height: 3.75rem;
	animation: kokende-loader-orbit 0.95s linear infinite;
}

.kokende-page-loader__ring span {
	position: absolute;
	left: 50%;
	top: 50%;
	width: var(--kokende-dot-size, 8px);
	height: var(--kokende-dot-size, 8px);
	margin: calc(var(--kokende-dot-size, 8px) / -2) 0 0 calc(var(--kokende-dot-size, 8px) / -2);
	border-radius: 50%;
	background: var(--kokende-loader-green);
	box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.65);
	opacity: var(--kokende-dot-opacity, 1);
	transform: rotate(var(--kokende-dot-angle)) translateX(1.35rem);
}

.kokende-page-loader__ring span:nth-child(1) {
	--kokende-dot-angle: 0deg;
	--kokende-dot-size: 13px;
	--kokende-dot-opacity: 1;
}

.kokende-page-loader__ring span:nth-child(2) {
	--kokende-dot-angle: 45deg;
	--kokende-dot-size: 11px;
	--kokende-dot-opacity: 0.92;
}

.kokende-page-loader__ring span:nth-child(3) {
	--kokende-dot-angle: 90deg;
	--kokende-dot-size: 10px;
	--kokende-dot-opacity: 0.82;
}

.kokende-page-loader__ring span:nth-child(4) {
	--kokende-dot-angle: 135deg;
	--kokende-dot-size: 8px;
	--kokende-dot-opacity: 0.72;
}

.kokende-page-loader__ring span:nth-child(5) {
	--kokende-dot-angle: 180deg;
	--kokende-dot-size: 7px;
	--kokende-dot-opacity: 0.62;
}

.kokende-page-loader__ring span:nth-child(6) {
	--kokende-dot-angle: 225deg;
	--kokende-dot-size: 6px;
	--kokende-dot-opacity: 0.52;
}

.kokende-page-loader__ring span:nth-child(7) {
	--kokende-dot-angle: 270deg;
	--kokende-dot-size: 5px;
	--kokende-dot-opacity: 0.42;
}

.kokende-page-loader__ring span:nth-child(8) {
	--kokende-dot-angle: 315deg;
	--kokende-dot-size: 4px;
	--kokende-dot-opacity: 0.34;
}

.kokende-page-loader__label {
	margin: 0;
	font-size: 0.8125rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: #0f172a;
}

@keyframes kokende-loader-orbit {
	to {
		transform: rotate(360deg);
	}
}

@media (prefers-reduced-motion: reduce) {
	.kokende-page-loader__ring {
		animation: kokende-loader-orbit-reduced 2.4s ease-in-out infinite;
	}
}

@keyframes kokende-loader-orbit-reduced {
	0%,
	100% {
		transform: rotate(0deg);
	}

	50% {
		transform: rotate(180deg);
	}
}
