:root{
  --loader-size: 56px;       /* taille du spinner */
  --accent: #dc143c;        /* couleur accent (crimson) */
  --bg: rgba(0,0,0,0.06);   /* ombre */
  --lt-size:20px;
  --gray:rgb(78, 78, 78);
}

/* centre le loader (optionnel) */
.loader {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  padding: 10px;
}

/* Spinner circulaire */
.spinner {
  width: var(--loader-size);
  height: var(--loader-size);
  border-radius: 50%;
  border: 4px solid rgba(0,0,0,0.08);
  border-top-color: var(--accent);
  box-shadow: 0 6px 14px var(--bg);
  animation: spin 0.9s linear infinite;
  will-change: transform;
}
.lt-spinner{
  width: var(--lt-size);
  height: var(--lt-size);
  border-radius: 50%;
  border: 3px solid rgba(0,0,0,0.08);
  border-top-color: var(--gray);
  box-shadow: 0 6px 10px var(--bg);
  animation: spin 0.9s linear infinite;
  will-change: transform;
}

/* Trois points */
.dots {
  display: flex;
  gap: 8px;
  align-items: center;
}
.dots span {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--accent);
  opacity: 0.9;
  transform: translateY(0);
  animation: bounce 0.8s ease-in-out infinite;
}
.dots span:nth-child(2) { animation-delay: 0.12s; }
.dots span:nth-child(3) { animation-delay: 0.24s; }

/* Accessibilité: caché visuellement mais lisible par les lecteurs d'écran */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  white-space: nowrap;
  border: 0;
}

/* Animations */
@keyframes spin {
  to { transform: rotate(360deg); }
}
@keyframes bounce {
  0%   { transform: translateY(0); opacity: .6; }
  30%  { transform: translateY(-8px); opacity: 1; }
  60%  { transform: translateY(0); opacity: .8; }
  100% { transform: translateY(0); opacity: .6; }
}

/* Variante petite (utilisation : .loader.small) */
.loader.small .spinner { --loader-size: 36px; border-width: 3px; }
.loader.small .dots span { width: 8px; height: 8px; }
