/* États communs du chargeur Ajax des modules — OVI-AJAX-01. */
.ovi-module-instance {
	--ovi-chargeur-fond: #f8fafc;
	--ovi-chargeur-bordure: #dbe4ea;
	--ovi-chargeur-texte: #31424f;
	--ovi-chargeur-accent: #1f6f8b;
	--ovi-chargeur-erreur: #b42318;
	--ovi-chargeur-erreur-fond: #fef3f2;
	--ovi-chargeur-repli: #7a5c00;
	--ovi-chargeur-repli-fond: #fff9e6;
	min-width: 0;
}

.ovi-chargeur-zone,
.ovi-module-instance[data-ovi-zone] {
	min-width: 0;
}

.ovi-chargeur-etat {
	display: flex;
	align-items: flex-start;
	gap: .9rem;
	padding: 1.1rem 1.2rem;
	border: 1px solid var(--ovi-chargeur-bordure);
	border-radius: .85rem;
	background: var(--ovi-chargeur-fond);
	color: var(--ovi-chargeur-texte);
}

.ovi-chargeur-etat h2 {
	margin: 0 0 .35rem;
	font-size: 1rem;
	line-height: 1.35;
}

.ovi-chargeur-etat p {
	margin: 0;
	font-size: .92rem;
	line-height: 1.55;
}

.ovi-chargeur-etat--chargement {
	align-items: center;
}

.ovi-chargeur-etat--erreur {
	border-color: #f3b7b2;
	background: var(--ovi-chargeur-erreur-fond);
	color: var(--ovi-chargeur-erreur);
}

.ovi-chargeur-etat--repli {
	border-color: #ead48a;
	background: var(--ovi-chargeur-repli-fond);
	color: var(--ovi-chargeur-repli);
}

.ovi-chargeur-icone {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 1.8rem;
	width: 1.8rem;
	height: 1.8rem;
	border-radius: 50%;
	background: currentColor;
	color: #fff;
	font-weight: 700;
	line-height: 1;
}

.ovi-chargeur-point {
	flex: 0 0 .8rem;
	width: .8rem;
	height: .8rem;
	border-radius: 50%;
	background: var(--ovi-chargeur-accent);
	animation: ovi-chargeur-pouls 1s ease-in-out infinite;
}

.ovi-chargeur-actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .65rem;
	margin-top: .75rem;
}

.ovi-chargeur-bouton {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: .4rem .8rem;
	border: 1px solid var(--ovi-chargeur-accent);
	border-radius: .5rem;
	background: var(--ovi-chargeur-accent);
	color: #fff;
	font: inherit;
	font-size: .88rem;
	cursor: pointer;
}

.ovi-chargeur-bouton:hover,
.ovi-chargeur-bouton:focus-visible {
	filter: brightness(.94);
}

.ovi-chargeur-lien {
	color: inherit;
	font-size: .88rem;
	font-weight: 600;
	text-underline-offset: .15em;
}

@keyframes ovi-chargeur-pouls {
	0%, 100% { opacity: .35; transform: scale(.85); }
	50% { opacity: 1; transform: scale(1); }
}

@media (prefers-reduced-motion: reduce) {
	.ovi-chargeur-point { animation: none; }
}
