/* ============================================================
   UTILITIES.CSS — Classes utilitaires
   ============================================================ */

/* Affichage */
.hidden   { display: none !important; }
.block    { display: block; }
.flex     { display: flex; }
.inline-flex { display: inline-flex; }

/* Texte */
.text-center  { text-align: center; }
.text-left    { text-align: left; }
.text-right   { text-align: right; }
.text-sm      { font-size: var(--text-sm); }
.text-xs      { font-size: var(--text-xs); }
.text-muted   { color: var(--color-text-secondary); }
.text-success { color: var(--color-success); }
.text-error   { color: var(--color-error); }
.text-mono    { font-family: var(--font-mono); }
.font-bold    { font-weight: var(--font-weight-bold); }
.font-medium  { font-weight: var(--font-weight-medium); }

/* Espacement */
.mt-1 { margin-top: var(--space-1); }
.mt-2 { margin-top: var(--space-2); }
.mt-3 { margin-top: var(--space-3); }
.mt-4 { margin-top: var(--space-4); }
.mb-1 { margin-bottom: var(--space-1); }
.mb-2 { margin-bottom: var(--space-2); }
.mb-3 { margin-bottom: var(--space-3); }
.mb-4 { margin-bottom: var(--space-4); }

/* Max-width */
.max-w-sm  { max-width: 480px; margin-inline: auto; }
.max-w-md  { max-width: 640px; margin-inline: auto; }
.max-w-lg  { max-width: 800px; margin-inline: auto; }

/* Availability dot */
.availability {
  display: flex;
  align-items: center;
  gap: var(--space-1);
  margin-bottom: var(--space-2);
}

.availability__dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background-color: var(--color-success);
  animation: pulse 2s ease infinite;
  flex-shrink: 0;
}

.availability__text {
  font-size: var(--text-sm);
  color: var(--color-text-secondary);
}

@keyframes pulse {
  0%, 100% { opacity: 1; box-shadow: 0 0 0 0 rgba(0,217,139,.4); }
  50%       { opacity: .8; box-shadow: 0 0 0 6px rgba(0,217,139,0); }
}

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

/* ─── Proof / chiffres clés ─────────────────────────────────── */
.proof__grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-3);
  padding-block: var(--space-6);
}

.proof__card {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.375rem;
  padding: var(--space-4);
  background: var(--color-bg-surface);
  border: 1px solid var(--color-border);
  border-top: 2px solid var(--color-accent);
  border-radius: var(--radius-lg);
  transition: transform var(--transition-fast), box-shadow var(--transition-fast);
}

.proof__card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-md);
}

.proof__icon {
  width: 26px;
  height: 26px;
  color: var(--color-accent);
  margin-bottom: var(--space-1);
  flex-shrink: 0;
}

.proof__number {
  font-size: clamp(var(--text-2xl), 4vw, var(--text-4xl));
  font-weight: var(--font-weight-bold);
  color: var(--color-text-primary);
  font-family: var(--font-mono);
  line-height: 1;
}

.proof__label {
  font-size: var(--text-sm);
  color: var(--color-text-secondary);
  line-height: 1.4;
}

.proof__number--sm {
  font-size: clamp(var(--text-xl), 3vw, var(--text-2xl));
}

@media (min-width: 768px) {
  .proof__grid { grid-template-columns: repeat(4, 1fr); }
}