/* ============================================================
   GRUPPE6 — Design System unifié (Phase 1)
   À inclure dans <head> APRÈS styles.css existant pour overrider.
   Couleurs reprises de styles.css (vert primaire #10b981, slate sombre).
   ============================================================ */

:root {
  /* Palette conservée à l'identique */
  --g6-green:        #10b981;
  --g6-green-hover:  #059669;
  --g6-green-soft:   rgba(16, 185, 129, 0.12);
  --g6-green-glow:   rgba(16, 185, 129, 0.35);
  --g6-green-light:  #34d399;

  --g6-blue:         #3b82f6;
  --g6-purple:       #8b5cf6;
  --g6-amber:        #f59e0b;
  --g6-red:          #ef4444;
  --g6-cyan:         #06b6d4;

  /* Fonds sombres premium */
  --g6-bg-0:         #07090f;   /* fond le plus sombre (page) */
  --g6-bg-1:         #0f172a;   /* fond principal */
  --g6-bg-2:         #1e293b;   /* surfaces (cards) */
  --g6-bg-3:         #273549;   /* surfaces interactives */
  --g6-bg-4:         #334155;   /* inputs / hover */

  /* Lignes & textes */
  --g6-line:         rgba(255,255,255,0.06);
  --g6-line-strong:  rgba(255,255,255,0.12);
  --g6-text:         #f1f5f9;
  --g6-text-soft:    #cbd5e1;
  --g6-text-mute:    #94a3b8;
  --g6-text-dim:     #64748b;

  /* Tokens visuels */
  --g6-radius-xs:    6px;
  --g6-radius-sm:    10px;
  --g6-radius-md:    14px;
  --g6-radius-lg:    18px;
  --g6-radius-pill:  999px;

  --g6-shadow-sm:    0 1px 2px rgba(0,0,0,0.4);
  --g6-shadow-md:    0 8px 24px rgba(0,0,0,0.35);
  --g6-shadow-lg:    0 20px 50px rgba(0,0,0,0.55);
  --g6-shadow-green: 0 0 0 1px rgba(16,185,129,0.4), 0 8px 30px rgba(16,185,129,0.18);

  --g6-ease:         cubic-bezier(.22,.61,.36,1);
  --g6-fast:         140ms var(--g6-ease);
  --g6-mid:          240ms var(--g6-ease);
  --g6-slow:         420ms var(--g6-ease);
}

/* Reset doux limité (ne casse pas l'existant) */
.g6, .g6 * { box-sizing: border-box; }

/* ============================================================
   1. CARDS
   ============================================================ */
.g6-card {
  background: linear-gradient(180deg, var(--g6-bg-2) 0%, #18243a 100%);
  border: 1px solid var(--g6-line);
  border-radius: var(--g6-radius-md);
  box-shadow: var(--g6-shadow-md);
  padding: 22px;
  transition: border-color var(--g6-mid), transform var(--g6-mid), box-shadow var(--g6-mid);
}
.g6-card:hover { border-color: var(--g6-line-strong); }
.g6-card--accent { border-left: 3px solid var(--g6-green); }

.g6-card-header {
  display: flex; align-items: center; justify-content: space-between;
  gap: 14px; margin-bottom: 18px; padding-bottom: 14px;
  border-bottom: 1px solid var(--g6-line);
}
.g6-card-title {
  font-size: 16px; font-weight: 700; color: var(--g6-text);
  letter-spacing: 0.2px; display: flex; align-items: center; gap: 10px;
}
.g6-card-title .g6-dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--g6-green); box-shadow: 0 0 12px var(--g6-green-glow);
}
.g6-card-subtitle { font-size: 12px; color: var(--g6-text-mute); margin-top: 2px; }

/* ============================================================
   2. BUTTONS
   ============================================================ */
.g6-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  padding: 10px 18px; font-size: 13px; font-weight: 600;
  letter-spacing: 0.3px; font-family: inherit;
  border: 1px solid transparent; border-radius: var(--g6-radius-sm);
  cursor: pointer; user-select: none; text-decoration: none;
  transition: transform var(--g6-fast), box-shadow var(--g6-fast),
              background var(--g6-fast), border-color var(--g6-fast), color var(--g6-fast);
  background: var(--g6-bg-3); color: var(--g6-text);
}
.g6-btn:hover  { background: var(--g6-bg-4); transform: translateY(-1px); }
.g6-btn:active { transform: translateY(0); }
.g6-btn:disabled { opacity: 0.55; cursor: not-allowed; transform: none !important; }

.g6-btn--primary {
  background: linear-gradient(135deg, var(--g6-green) 0%, var(--g6-green-hover) 100%);
  color: #00120a;
}
.g6-btn--primary:hover { box-shadow: var(--g6-shadow-green); color: #001b10; }

.g6-btn--ghost { background: transparent; border-color: var(--g6-line-strong); color: var(--g6-text-soft); }
.g6-btn--ghost:hover { border-color: var(--g6-green); color: var(--g6-green); background: var(--g6-green-soft); }

.g6-btn--danger { background: rgba(239,68,68,0.12); color: #fecaca; border-color: rgba(239,68,68,0.4); }
.g6-btn--danger:hover { background: rgba(239,68,68,0.22); border-color: var(--g6-red); }

.g6-btn--warning { background: rgba(245,158,11,0.12); color: #fde68a; border-color: rgba(245,158,11,0.4); }
.g6-btn--warning:hover { background: rgba(245,158,11,0.22); border-color: var(--g6-amber); }

.g6-btn--sm { padding: 6px 12px; font-size: 12px; }
.g6-btn--lg { padding: 14px 22px; font-size: 14px; }
.g6-btn--block { width: 100%; }

.g6-btn .g6-spinner { width: 14px; height: 14px; border-width: 2px; }

/* ============================================================
   3. FORMS
   ============================================================ */
.g6-field { display: flex; flex-direction: column; gap: 6px; margin-bottom: 16px; }
.g6-label {
  font-size: 12px; font-weight: 600;
  color: var(--g6-text-mute); text-transform: uppercase; letter-spacing: 0.6px;
}
.g6-label .g6-req { color: var(--g6-green); margin-left: 2px; }
.g6-help { font-size: 11px; color: var(--g6-text-dim); margin-top: 2px; }

.g6-input, .g6-select, .g6-textarea {
  width: 100%; padding: 11px 14px; font-size: 14px; font-family: inherit;
  background: var(--g6-bg-1); color: var(--g6-text);
  border: 1px solid var(--g6-line-strong); border-radius: var(--g6-radius-sm);
  transition: border-color var(--g6-fast), box-shadow var(--g6-fast), background var(--g6-fast);
}
.g6-input::placeholder, .g6-textarea::placeholder { color: var(--g6-text-dim); }
.g6-input:focus, .g6-select:focus, .g6-textarea:focus {
  outline: none; border-color: var(--g6-green);
  box-shadow: 0 0 0 3px var(--g6-green-soft);
  background: var(--g6-bg-2);
}
.g6-textarea { resize: vertical; min-height: 90px; line-height: 1.5; }
.g6-select {
  appearance: none;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2.5'><polyline points='6 9 12 15 18 9'/></svg>");
  background-repeat: no-repeat; background-position: right 14px center;
  padding-right: 38px;
}

.g6-input--error, .g6-select--error, .g6-textarea--error {
  border-color: var(--g6-red); box-shadow: 0 0 0 3px rgba(239,68,68,0.18);
}

.g6-input-group {
  display: flex; align-items: stretch; border: 1px solid var(--g6-line-strong);
  border-radius: var(--g6-radius-sm); overflow: hidden; background: var(--g6-bg-1);
}
.g6-input-group:focus-within {
  border-color: var(--g6-green); box-shadow: 0 0 0 3px var(--g6-green-soft);
}
.g6-input-group .g6-input { border: none; border-radius: 0; background: transparent; }
.g6-input-group .g6-input:focus { box-shadow: none; }
.g6-input-group .g6-input-addon {
  display: flex; align-items: center; padding: 0 12px;
  color: var(--g6-text-mute); background: rgba(255,255,255,0.03);
  border-left: 1px solid var(--g6-line);
}
.g6-input-group .g6-input-addon:first-child { border-left: 0; border-right: 1px solid var(--g6-line); }

/* Checkbox / radio cohérents */
.g6-check {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: 13px; color: var(--g6-text-soft); cursor: pointer;
}
.g6-check input[type="checkbox"], .g6-check input[type="radio"] {
  accent-color: var(--g6-green); width: 15px; height: 15px; cursor: pointer;
}

/* ============================================================
   4. TABS (utilisé sur login)
   ============================================================ */
.g6-tabs { display: flex; gap: 4px; padding: 4px; margin-bottom: 22px;
  background: var(--g6-bg-1); border: 1px solid var(--g6-line);
  border-radius: var(--g6-radius-sm); }
.g6-tab {
  flex: 1; padding: 10px 14px; font-size: 13px; font-weight: 600;
  background: transparent; color: var(--g6-text-mute);
  border: none; border-radius: var(--g6-radius-xs); cursor: pointer;
  font-family: inherit; letter-spacing: 0.3px;
  transition: background var(--g6-fast), color var(--g6-fast);
}
.g6-tab:hover { color: var(--g6-text-soft); }
.g6-tab--active {
  background: linear-gradient(135deg, var(--g6-green) 0%, var(--g6-green-hover) 100%);
  color: #00120a;
}
.g6-tabpanel { animation: g6-fade-in var(--g6-mid); }
.g6-tabpanel[hidden] { display: none; }

@keyframes g6-fade-in {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ============================================================
   5. ALERTS
   ============================================================ */
.g6-alert {
  display: flex; align-items: flex-start; gap: 12px;
  padding: 12px 16px; border-radius: var(--g6-radius-sm);
  border: 1px solid; font-size: 13px; line-height: 1.45;
  margin-bottom: 14px;
}
.g6-alert svg { width: 18px; height: 18px; flex-shrink: 0; margin-top: 1px; }
.g6-alert--info    { background: rgba(6,182,212,0.08); border-color: rgba(6,182,212,0.35); color: #a5f3fc; }
.g6-alert--success { background: rgba(16,185,129,0.08); border-color: rgba(16,185,129,0.35); color: var(--g6-green-light); }
.g6-alert--warning { background: rgba(245,158,11,0.08); border-color: rgba(245,158,11,0.35); color: #fcd34d; }
.g6-alert--error   { background: rgba(239,68,68,0.08); border-color: rgba(239,68,68,0.35); color: #fca5a5; }

/* ============================================================
   6. MODALS unifiés
   ============================================================ */
.g6-modal-backdrop {
  position: fixed; inset: 0; z-index: 1000;
  background: rgba(2,6,23,0.78); backdrop-filter: blur(6px);
  display: flex; align-items: center; justify-content: center;
  padding: 20px; opacity: 0; pointer-events: none;
  transition: opacity var(--g6-mid);
}
.g6-modal-backdrop.is-open { opacity: 1; pointer-events: auto; }

.g6-modal {
  position: relative; width: 100%; max-width: 560px;
  max-height: calc(100vh - 40px);
  background: linear-gradient(180deg, var(--g6-bg-2) 0%, #16213a 100%);
  border: 1px solid var(--g6-line-strong);
  border-radius: var(--g6-radius-lg);
  box-shadow: var(--g6-shadow-lg);
  display: flex; flex-direction: column;
  transform: translateY(14px) scale(.98); opacity: 0;
  transition: transform var(--g6-mid), opacity var(--g6-mid);
}
.g6-modal-backdrop.is-open .g6-modal { transform: translateY(0) scale(1); opacity: 1; }

.g6-modal--lg { max-width: 800px; }
.g6-modal--xl { max-width: 1100px; }

.g6-modal-header {
  display: flex; align-items: center; justify-content: space-between;
  gap: 16px; padding: 18px 22px;
  border-bottom: 1px solid var(--g6-line);
  background: linear-gradient(180deg, rgba(16,185,129,0.06), transparent);
  border-radius: var(--g6-radius-lg) var(--g6-radius-lg) 0 0;
}
.g6-modal-title {
  font-size: 16px; font-weight: 700; color: var(--g6-text);
  display: flex; align-items: center; gap: 10px;
}
.g6-modal-title svg { width: 18px; height: 18px; color: var(--g6-green); }

.g6-modal-close {
  background: transparent; border: none; cursor: pointer;
  color: var(--g6-text-mute); padding: 6px; border-radius: var(--g6-radius-xs);
  display: flex; align-items: center; justify-content: center;
  transition: background var(--g6-fast), color var(--g6-fast);
}
.g6-modal-close:hover { color: var(--g6-text); background: var(--g6-bg-3); }
.g6-modal-close svg { width: 18px; height: 18px; }

.g6-modal-body { padding: 22px; overflow-y: auto; }
.g6-modal-footer {
  display: flex; justify-content: flex-end; gap: 10px;
  padding: 16px 22px; border-top: 1px solid var(--g6-line);
  background: rgba(0,0,0,0.15);
  border-radius: 0 0 var(--g6-radius-lg) var(--g6-radius-lg);
}

/* ============================================================
   7. BADGES & CHIPS
   ============================================================ */
.g6-badge {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 4px 10px; font-size: 11px; font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.6px;
  border-radius: var(--g6-radius-pill);
  border: 1px solid;
}
.g6-badge--neutral { background: rgba(148,163,184,0.10); border-color: rgba(148,163,184,0.35); color: var(--g6-text-soft); }
.g6-badge--success { background: rgba(16,185,129,0.12); border-color: rgba(16,185,129,0.40); color: var(--g6-green-light); }
.g6-badge--warning { background: rgba(245,158,11,0.12); border-color: rgba(245,158,11,0.40); color: #fcd34d; }
.g6-badge--danger  { background: rgba(239,68,68,0.12); border-color: rgba(239,68,68,0.40); color: #fca5a5; }
.g6-badge--info    { background: rgba(6,182,212,0.12); border-color: rgba(6,182,212,0.40); color: #a5f3fc; }
.g6-badge--pulse::before {
  content: ''; width: 6px; height: 6px; border-radius: 50%;
  background: currentColor; animation: g6-pulse 1.5s infinite;
}
@keyframes g6-pulse {
  0%,100% { opacity: 1; }
  50% { opacity: 0.35; }
}

/* ============================================================
   8. TABLES
   ============================================================ */
.g6-table-wrap {
  border: 1px solid var(--g6-line);
  border-radius: var(--g6-radius-md);
  overflow: hidden;
  background: var(--g6-bg-2);
}
.g6-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.g6-table th {
  text-align: left; font-weight: 600; font-size: 11px;
  text-transform: uppercase; letter-spacing: 0.7px;
  color: var(--g6-text-mute);
  padding: 12px 14px;
  background: rgba(0,0,0,0.2);
  border-bottom: 1px solid var(--g6-line);
  position: sticky; top: 0;
}
.g6-table td {
  padding: 12px 14px;
  border-bottom: 1px solid var(--g6-line);
  color: var(--g6-text-soft);
}
.g6-table tbody tr { transition: background var(--g6-fast); }
.g6-table tbody tr:hover { background: rgba(255,255,255,0.02); }
.g6-table tbody tr:last-child td { border-bottom: 0; }
.g6-table td .g6-actions { display: flex; gap: 6px; justify-content: flex-end; }

/* ============================================================
   9. SPINNERS & LOADERS
   ============================================================ */
.g6-spinner {
  display: inline-block; width: 18px; height: 18px;
  border: 3px solid rgba(255,255,255,0.15);
  border-top-color: var(--g6-green);
  border-radius: 50%; animation: g6-spin 0.7s linear infinite;
}
@keyframes g6-spin { to { transform: rotate(360deg); } }

.g6-skeleton {
  background: linear-gradient(90deg, var(--g6-bg-3) 0%, var(--g6-bg-4) 50%, var(--g6-bg-3) 100%);
  background-size: 200% 100%;
  animation: g6-shimmer 1.4s infinite;
  border-radius: var(--g6-radius-xs);
}
@keyframes g6-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }

/* ============================================================
   10. EMPTY STATE
   ============================================================ */
.g6-empty {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  padding: 50px 20px; text-align: center; color: var(--g6-text-mute);
}
.g6-empty svg { width: 48px; height: 48px; color: var(--g6-text-dim); margin-bottom: 14px; }
.g6-empty-title { font-size: 15px; font-weight: 600; color: var(--g6-text-soft); margin-bottom: 4px; }
.g6-empty-sub { font-size: 13px; }

/* ============================================================
   11. TOAST NOTIFICATIONS
   ============================================================ */
.g6-toasts {
  position: fixed; top: 20px; right: 20px; z-index: 2000;
  display: flex; flex-direction: column; gap: 10px;
  pointer-events: none;
}
.g6-toast {
  min-width: 280px; max-width: 380px;
  padding: 12px 16px; border-radius: var(--g6-radius-sm);
  background: var(--g6-bg-2); border: 1px solid var(--g6-line-strong);
  box-shadow: var(--g6-shadow-md); color: var(--g6-text);
  font-size: 13px; pointer-events: auto;
  display: flex; align-items: flex-start; gap: 10px;
  transform: translateX(20px); opacity: 0;
  transition: transform var(--g6-mid), opacity var(--g6-mid);
}
.g6-toast.is-visible { transform: translateX(0); opacity: 1; }
.g6-toast svg { width: 18px; height: 18px; flex-shrink: 0; }
.g6-toast--success { border-left: 3px solid var(--g6-green); }
.g6-toast--success svg { color: var(--g6-green); }
.g6-toast--error   { border-left: 3px solid var(--g6-red); }
.g6-toast--error svg { color: var(--g6-red); }
.g6-toast--info    { border-left: 3px solid var(--g6-cyan); }
.g6-toast--info svg { color: var(--g6-cyan); }

/* ============================================================
   12. NAV BADGE (compteur de demandes en attente)
   ============================================================ */
.g6-nav-badge {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 18px; height: 18px; padding: 0 6px;
  font-size: 10px; font-weight: 700;
  background: var(--g6-red); color: #fff;
  border-radius: var(--g6-radius-pill);
  margin-left: 6px;
  box-shadow: 0 0 0 2px var(--g6-bg-1);
}

/* ============================================================
   13. LOGS — uniformisation (sera étendue en Phase suivante)
   ============================================================ */
.g6-log-row {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 14px; align-items: center;
  padding: 12px 16px;
  border-radius: var(--g6-radius-sm);
  background: var(--g6-bg-2);
  border: 1px solid var(--g6-line);
  margin-bottom: 8px;
  transition: border-color var(--g6-fast), background var(--g6-fast);
}
.g6-log-row:hover { border-color: var(--g6-line-strong); background: var(--g6-bg-3); }
.g6-log-icon {
  width: 36px; height: 36px; border-radius: var(--g6-radius-sm);
  display: flex; align-items: center; justify-content: center;
  background: var(--g6-green-soft); color: var(--g6-green);
}
.g6-log-icon svg { width: 18px; height: 18px; }
.g6-log-main { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.g6-log-action { font-size: 13px; font-weight: 600; color: var(--g6-text); }
.g6-log-meta { font-size: 12px; color: var(--g6-text-mute); display: flex; gap: 12px; flex-wrap: wrap; }
.g6-log-time { font-size: 12px; color: var(--g6-text-dim); white-space: nowrap; }

/* ============================================================
   14. SCROLLBAR cohérent dans modals
   ============================================================ */
.g6-modal-body::-webkit-scrollbar { width: 8px; }
.g6-modal-body::-webkit-scrollbar-track { background: transparent; }
.g6-modal-body::-webkit-scrollbar-thumb { background: var(--g6-bg-4); border-radius: 4px; }
.g6-modal-body::-webkit-scrollbar-thumb:hover { background: var(--g6-green); }

/* ============================================================
   15. RESPONSIVE
   ============================================================ */
@media (max-width: 640px) {
  .g6-card { padding: 16px; }
  .g6-modal { max-width: 100%; margin: 0; border-radius: var(--g6-radius-md); }
  .g6-modal-header, .g6-modal-body, .g6-modal-footer { padding-left: 16px; padding-right: 16px; }
  .g6-tabs { flex-direction: column; }
}

/* ============================================================
   16. SPA TRANSITIONS (Phase 5)
   ============================================================ */
.container {
  will-change: opacity, transform;
}

/* Barre de progression top (injectée par g6-spa.js) */
#g6-spa-progress {
  pointer-events: none;
}

/* Préchargement visuel d'un lien au hover (très subtil) */
.nav-item, a.btn, a.g6-btn {
  -webkit-tap-highlight-color: rgba(16, 185, 129, 0.2);
}

/* Annoncer un changement d'URL via aria-live (a11y) */
.g6-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;
}

/* Spinner sur les liens en cours de navigation (futur usage) */
.nav-item.is-loading {
  position: relative;
  opacity: 0.6;
  pointer-events: none;
}

/* ============================================================
   17. USER ID BADGE (#42 à côté du nom)
   ============================================================ */
.user-id-badge {
  display: inline-block;
  margin-left: 4px;
  padding: 1px 6px;
  font-size: 10px;
  font-weight: 700;
  font-family: ui-monospace, 'SF Mono', Consolas, monospace;
  color: var(--g6-text-dim, #64748b);
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid var(--g6-line, rgba(255,255,255,0.06));
  border-radius: 4px;
  letter-spacing: 0.3px;
  vertical-align: middle;
  white-space: nowrap;
}
.user-id-badge:hover {
  color: var(--g6-text-soft, #cbd5e1);
  background: rgba(16, 185, 129, 0.1);
  border-color: rgba(16, 185, 129, 0.3);
}
