/* ============================================================
 *  RU ACCRÉDITATIONS - Système de design admin (indépendant)
 * ============================================================
 *  Fichier    : assets/css/ruac-design-system.css
 *  Version    : 1.0.0
 *  Namespace  : ruac-*  ·  Tokens : --ruac-*  ·  Racine : .ruac-ui
 *  Plugin     : RU Accréditations (MU-plugin)
 *  Chargé par : includes/assets.php (handle ru-acc-design)
 * ============================================================
 *
 *  Système TOTALEMENT indépendant : il ne partage aucun fichier,
 *  aucune classe et aucun token avec le CAP ni avec quoi que ce soit
 *  d'autre. Tout vit sous le wrapper .ruac-ui (isolation totale) :
 *  hors de .ruac-ui, ces styles ne s'appliquent pas.
 *
 *  Clair par défaut, suit la préférence du navigateur, et bascule en
 *  sombre avec .ruac-ui[data-ruac-theme="dark"] (géré par ruac-theme.js).
 * ============================================================ */

/* ============================================================
 *  TOKENS - THÈME CLAIR (valeurs par défaut)
 * ============================================================ */
.ruac-ui{
  /* Surfaces */
  --ruac-bg:#f4f5f7;
  --ruac-surface:#ffffff;
  --ruac-surface-2:#f7f8fa;
  --ruac-surface-hover:#eef0f3;
  /* Texte */
  --ruac-text:#1a1d21;
  --ruac-text-dim:#5b6470;
  --ruac-text-mute:#8a93a0;
  /* Bordures */
  --ruac-border:#e3e6ea;
  --ruac-border-strong:#cbd2da;
  --ruac-field-border:#1a1d21;
  /* Accent (jaune RU) */
  --ruac-accent:#FFD941;
  --ruac-accent-ink:#1a1d21;
  --ruac-accent-soft:rgba(255,213,74,.18);
  /* États */
  --ruac-success:#1f9d57;  --ruac-success-soft:rgba(31,157,87,.12);  --ruac-success-strong:#157a42;
  --ruac-danger:#d23b3b;   --ruac-danger-soft:rgba(210,59,59,.12);   --ruac-danger-strong:#a82e2e;
  --ruac-warn:#c47d00;     --ruac-warn-soft:rgba(196,125,0,.14);     --ruac-warn-strong:#9a6200;
  --ruac-info:#2b7de9;     --ruac-info-soft:rgba(43,125,233,.12);    --ruac-info-strong:#1f5fb0;
  /* Espacements */
  --ruac-space-1:4px;  --ruac-space-2:6px;  --ruac-space-3:8px;  --ruac-space-4:10px; --ruac-space-5:12px;
  --ruac-space-6:14px; --ruac-space-7:16px; --ruac-space-8:20px; --ruac-space-9:24px; --ruac-space-10:28px;
  /* Rayons */
  --ruac-radius-xs:4px; --ruac-radius-sm:6px; --ruac-radius:10px; --ruac-radius-lg:14px; --ruac-radius-full:999px;
  /* Polices */
  --ruac-font:Arial,'Helvetica Neue',Helvetica,sans-serif;
  --ruac-font-mono:Arial,'Helvetica Neue',Helvetica,sans-serif;
  /* Ombres */
  --ruac-shadow-sm:0 1px 2px rgba(16,24,40,.06);
  --ruac-shadow:0 4px 14px rgba(16,24,40,.10);
  --ruac-shadow-lg:0 12px 32px rgba(16,24,40,.16);
  /* Transitions */
  --ruac-transition:.18s ease;
  --ruac-transition-slow:.32s ease;

  /* Base du conteneur */
  box-sizing:border-box;
  font-family:var(--ruac-font);
  color:var(--ruac-text);
  background:var(--ruac-bg);
  -webkit-font-smoothing:antialiased;
}
.ruac-ui *,.ruac-ui *::before,.ruac-ui *::after{box-sizing:border-box;}

/* THEME SOMBRE RETIRE (v2.0) : l'admin reste toujours en clair, plus aucun basculement automatique. */


/* ============================================================
 *  MISE EN PAGE : en-tête, titre, actions
 * ============================================================ */
.ruac-ui .ruac-header{display:flex;align-items:center;justify-content:space-between;gap:var(--ruac-space-6);
  flex-wrap:wrap;margin-bottom:var(--ruac-space-8);}
.ruac-ui .ruac-title{display:flex;align-items:center;gap:var(--ruac-space-5);min-width:0;}
.ruac-ui .ruac-title-badge{flex:0 0 auto;width:38px;height:38px;border-radius:var(--ruac-radius-sm);
  background:var(--ruac-accent);color:var(--ruac-accent-ink);display:flex;align-items:center;justify-content:center;
  font-size:18px;font-weight:800;box-shadow:var(--ruac-shadow-sm);}
.ruac-ui .ruac-title-text{font-size:18px;font-weight:800;line-height:1.2;color:var(--ruac-text);}
.ruac-ui .ruac-title-sub{font-size:12.5px;color:var(--ruac-text-dim);margin-top:2px;}
.ruac-ui .ruac-actions{display:flex;align-items:center;gap:var(--ruac-space-3);flex-wrap:wrap;}

/* ============================================================
 *  BOUTONS
 * ============================================================ */
.ruac-ui .ruac-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--ruac-space-2);
  font-family:inherit;font-size:13px;font-weight:600;line-height:1;cursor:pointer;
  padding:9px 14px;border-radius:var(--ruac-radius-sm);border:1px solid var(--ruac-border-strong);
  background:var(--ruac-surface);color:var(--ruac-text);transition:background var(--ruac-transition),
  border-color var(--ruac-transition),transform var(--ruac-transition),box-shadow var(--ruac-transition);
  white-space:nowrap;text-decoration:none;}
.ruac-ui .ruac-btn:hover{background:var(--ruac-surface-hover);border-color:var(--ruac-border-strong);}
.ruac-ui .ruac-btn:active{transform:translateY(1px);}
.ruac-ui .ruac-btn:focus-visible{outline:2px solid var(--ruac-accent);outline-offset:2px;}
.ruac-ui .ruac-btn:disabled{opacity:.5;cursor:not-allowed;}
.ruac-ui .ruac-btn-primary{background:var(--ruac-accent);color:var(--ruac-accent-ink);border-color:transparent;font-weight:700;}
.ruac-ui .ruac-btn-primary:hover{background:#ffcf2e;}
.ruac-ui .ruac-btn-danger{background:var(--ruac-danger);color:#fff;border-color:transparent;}
.ruac-ui .ruac-btn-danger:hover{background:var(--ruac-danger-strong);}
.ruac-ui .ruac-btn-success{background:var(--ruac-success);color:#fff;border-color:transparent;}
.ruac-ui .ruac-btn-success:hover{background:var(--ruac-success-strong);}
.ruac-ui .ruac-btn-ghost{background:transparent;border-color:transparent;}
.ruac-ui .ruac-btn-ghost:hover{background:var(--ruac-surface-hover);}
.ruac-ui .ruac-btn-sm{font-size:12px;padding:6px 10px;}
.ruac-ui .ruac-btn-lg{font-size:14px;padding:12px 18px;}

/* Toggle de thème */
.ruac-ui .ruac-theme-toggle{display:inline-flex;align-items:center;gap:var(--ruac-space-2);
  font-family:inherit;font-size:12.5px;font-weight:600;cursor:pointer;padding:7px 11px;
  border-radius:var(--ruac-radius-sm);border:1px solid var(--ruac-border);background:var(--ruac-surface-2);
  color:var(--ruac-text-dim);transition:background var(--ruac-transition),color var(--ruac-transition);}
.ruac-ui .ruac-theme-toggle:hover{background:var(--ruac-surface-hover);color:var(--ruac-text);}

/* ============================================================
 *  STATS
 * ============================================================ */
.ruac-ui .ruac-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  gap:var(--ruac-space-5);margin-bottom:var(--ruac-space-8);}
.ruac-ui .ruac-stat{background:var(--ruac-surface);border:1px solid var(--ruac-border);
  border-radius:var(--ruac-radius);padding:var(--ruac-space-7);box-shadow:var(--ruac-shadow-sm);}
.ruac-ui .ruac-stat-label{font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;
  color:var(--ruac-text-mute);margin-bottom:var(--ruac-space-3);}
.ruac-ui .ruac-stat-value{font-size:26px;font-weight:800;color:var(--ruac-text);line-height:1;}
.ruac-ui .ruac-stat-trend{display:inline-flex;align-items:center;gap:3px;font-size:12px;font-weight:600;
  margin-top:var(--ruac-space-3);}
.ruac-ui .ruac-stat-trend.up{color:var(--ruac-success);}
.ruac-ui .ruac-stat-trend.down{color:var(--ruac-danger);}

/* ============================================================
 *  TOOLBAR / RECHERCHE
 * ============================================================ */
.ruac-ui .ruac-toolbar{display:flex;align-items:center;gap:var(--ruac-space-3);flex-wrap:wrap;
  margin-bottom:var(--ruac-space-6);}
.ruac-ui .ruac-search{flex:1;min-width:180px;font-family:inherit;font-size:13px;color:var(--ruac-text);
  padding:9px 13px;border-radius:var(--ruac-radius-sm);border:1px solid var(--ruac-field-border);
  background:var(--ruac-surface);transition:border-color var(--ruac-transition),box-shadow var(--ruac-transition);}
.ruac-ui .ruac-search::placeholder{color:var(--ruac-text-mute);}
.ruac-ui .ruac-search:focus{outline:none;border-color:var(--ruac-accent);box-shadow:0 0 0 3px var(--ruac-accent-soft);}

/* ============================================================
 *  SECTIONS COLLAPSIBLES
 * ============================================================ */
.ruac-ui .ruac-section{background:var(--ruac-surface);border:1px solid var(--ruac-border);
  border-radius:var(--ruac-radius);margin-bottom:var(--ruac-space-5);overflow:hidden;box-shadow:var(--ruac-shadow-sm);}
.ruac-ui .ruac-section-header{display:flex;align-items:center;gap:var(--ruac-space-4);
  padding:var(--ruac-space-6) var(--ruac-space-7);cursor:pointer;user-select:none;
  transition:background var(--ruac-transition);}
.ruac-ui .ruac-section-header:hover{background:var(--ruac-surface-2);}
.ruac-ui .ruac-section-num{flex:0 0 auto;width:24px;height:24px;border-radius:var(--ruac-radius-xs);
  background:var(--ruac-accent-soft);color:var(--ruac-text);display:flex;align-items:center;justify-content:center;
  font-size:12px;font-weight:700;}
.ruac-ui .ruac-section-title{flex:1;font-size:14px;font-weight:700;color:var(--ruac-text);}
.ruac-ui .ruac-section-meta{font-size:12px;color:var(--ruac-text-mute);}
.ruac-ui .ruac-section-body{padding:var(--ruac-space-7);border-top:1px solid var(--ruac-border);}

/* ============================================================
 *  LISTES (ROWS)
 * ============================================================ */
.ruac-ui .ruac-row{display:flex;align-items:center;gap:var(--ruac-space-5);
  padding:var(--ruac-space-5) var(--ruac-space-6);border:1px solid var(--ruac-border);
  border-radius:var(--ruac-radius-sm);background:var(--ruac-surface);margin-bottom:var(--ruac-space-3);
  transition:border-color var(--ruac-transition),background var(--ruac-transition);}
.ruac-ui .ruac-row:hover{border-color:var(--ruac-border-strong);background:var(--ruac-surface-2);}
.ruac-ui .ruac-row-code{font-family:var(--ruac-font-mono);font-size:12.5px;color:var(--ruac-text-dim);}
.ruac-ui .ruac-row-text{flex:1;min-width:0;font-size:13.5px;color:var(--ruac-text);}
.ruac-ui .ruac-row-meta{font-size:12px;color:var(--ruac-text-mute);}
.ruac-ui .ruac-row-actions{display:flex;align-items:center;gap:var(--ruac-space-2);}
.ruac-ui .ruac-row.is-expanded{border-color:var(--ruac-accent);box-shadow:0 0 0 3px var(--ruac-accent-soft);}

/* ============================================================
 *  TAGS
 * ============================================================ */
.ruac-ui .ruac-tag{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:700;
  text-transform:uppercase;letter-spacing:.4px;padding:3px 8px;border-radius:var(--ruac-radius-xs);
  background:var(--ruac-surface-hover);color:var(--ruac-text-dim);border:1px solid var(--ruac-border);}
.ruac-ui .ruac-tag-success,.ruac-ui .ruac-tag.ok{background:var(--ruac-success-soft);color:var(--ruac-success-strong);border-color:transparent;}
.ruac-ui .ruac-tag-danger,.ruac-ui .ruac-tag.err{background:var(--ruac-danger-soft);color:var(--ruac-danger-strong);border-color:transparent;}
.ruac-ui .ruac-tag-warn,.ruac-ui .ruac-tag.req{background:var(--ruac-warn-soft);color:var(--ruac-warn-strong);border-color:transparent;}
.ruac-ui .ruac-tag-info,.ruac-ui .ruac-tag.opt{background:var(--ruac-info-soft);color:var(--ruac-info-strong);border-color:transparent;}
.ruac-ui .ruac-tag-accent{background:var(--ruac-accent-soft);color:var(--ruac-text);border-color:transparent;}

/* ============================================================
 *  FORMULAIRES
 * ============================================================ */
.ruac-ui .ruac-field{margin-bottom:var(--ruac-space-6);}
.ruac-ui .ruac-label{display:block;font-size:12.5px;font-weight:600;color:var(--ruac-text-dim);
  margin-bottom:var(--ruac-space-3);}
.ruac-ui .ruac-input,.ruac-ui .ruac-select,.ruac-ui .ruac-textarea{width:100%;font-family:inherit;font-size:13.5px;
  color:var(--ruac-text);padding:10px 13px;border-radius:var(--ruac-radius-sm);border:1px solid var(--ruac-field-border);
  background:var(--ruac-surface);transition:border-color var(--ruac-transition),box-shadow var(--ruac-transition);}
.ruac-ui .ruac-input::placeholder,.ruac-ui .ruac-textarea::placeholder{color:var(--ruac-text-mute);}
.ruac-ui .ruac-input:focus,.ruac-ui .ruac-select:focus,.ruac-ui .ruac-textarea:focus{outline:none;
  border-color:var(--ruac-accent);box-shadow:0 0 0 3px var(--ruac-accent-soft);}
.ruac-ui .ruac-textarea{min-height:96px;resize:vertical;}
.ruac-ui .ruac-dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--ruac-space-3);
  padding:var(--ruac-space-10);border:2px dashed var(--ruac-border-strong);border-radius:var(--ruac-radius);
  background:var(--ruac-surface-2);color:var(--ruac-text-dim);font-size:13px;text-align:center;cursor:pointer;
  transition:border-color var(--ruac-transition),background var(--ruac-transition);}
.ruac-ui .ruac-dropzone:hover,.ruac-ui .ruac-dropzone.is-dragover{border-color:var(--ruac-accent);background:var(--ruac-accent-soft);}

/* ============================================================
 *  MODALE
 * ============================================================ */
.ruac-ui .ruac-modal-backdrop,.ruac-modal-backdrop{position:fixed;inset:0;z-index:99999;display:none;
  align-items:center;justify-content:center;padding:20px;background:rgba(0,0,0,.55);backdrop-filter:blur(4px);}
.ruac-ui .ruac-modal-backdrop.open,.ruac-modal-backdrop.open{display:flex;}
.ruac-modal{width:100%;max-width:480px;background:var(--ruac-surface);border:1px solid var(--ruac-border);
  border-radius:var(--ruac-radius-lg);box-shadow:var(--ruac-shadow-lg);padding:var(--ruac-space-9);
  font-family:var(--ruac-font);color:var(--ruac-text);}
.ruac-modal-title{font-size:17px;font-weight:800;margin-bottom:var(--ruac-space-2);}
.ruac-modal-sub{font-size:13px;color:var(--ruac-text-dim);margin-bottom:var(--ruac-space-7);}
.ruac-modal-actions{display:flex;justify-content:flex-end;gap:var(--ruac-space-3);margin-top:var(--ruac-space-8);}

/* ============================================================
 *  ÉTATS : chargement, vide, messages, toast
 * ============================================================ */
.ruac-ui .ruac-loading{display:flex;align-items:center;justify-content:center;gap:var(--ruac-space-4);
  padding:var(--ruac-space-10);color:var(--ruac-text-dim);font-size:13.5px;}
.ruac-ui .ruac-spinner{width:22px;height:22px;border-radius:50%;border:2.5px solid var(--ruac-border-strong);
  border-top-color:var(--ruac-accent);animation:ruacSpin .7s linear infinite;}
.ruac-ui .ruac-spinner-sm{width:15px;height:15px;border-width:2px;}
.ruac-ui .ruac-spinner-lg{width:34px;height:34px;border-width:3px;}
@keyframes ruacSpin{to{transform:rotate(360deg);}}
.ruac-ui .ruac-empty{text-align:center;padding:var(--ruac-space-10);color:var(--ruac-text-mute);font-size:13.5px;}
.ruac-ui .ruac-msg{padding:var(--ruac-space-5) var(--ruac-space-6);border-radius:var(--ruac-radius-sm);
  font-size:13px;border:1px solid transparent;margin-bottom:var(--ruac-space-5);}
.ruac-ui .ruac-msg.ok{background:var(--ruac-success-soft);color:var(--ruac-success-strong);}
.ruac-ui .ruac-msg.err{background:var(--ruac-danger-soft);color:var(--ruac-danger-strong);}
.ruac-ui .ruac-msg.warn{background:var(--ruac-warn-soft);color:var(--ruac-warn-strong);}
.ruac-ui .ruac-msg.info{background:var(--ruac-info-soft);color:var(--ruac-info-strong);}
.ruac-toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(20px);z-index:100000;
  padding:12px 20px;border-radius:var(--ruac-radius-sm);background:var(--ruac-text);color:var(--ruac-surface);
  font-family:var(--ruac-font);font-size:13.5px;font-weight:600;box-shadow:var(--ruac-shadow-lg);
  opacity:0;pointer-events:none;transition:opacity var(--ruac-transition),transform var(--ruac-transition);}
.ruac-toast.show{opacity:1;transform:translateX(-50%) translateY(0);}
.ruac-toast.ok{background:var(--ruac-success);color:#fff;}
.ruac-toast.err{background:var(--ruac-danger);color:#fff;}
.ruac-toast.warn{background:var(--ruac-warn);color:#fff;}

/* ============================================================
 *  UTILITAIRES
 * ============================================================ */
.ruac-ui .ruac-hidden{display:none !important;}
.ruac-ui .ruac-flex{display:flex;}
.ruac-ui .ruac-flex-1{flex:1;}
.ruac-ui .ruac-gap-2{gap:var(--ruac-space-2);}
.ruac-ui .ruac-gap-3{gap:var(--ruac-space-3);}
.ruac-ui .ruac-gap-4{gap:var(--ruac-space-4);}
.ruac-ui .ruac-mt-2{margin-top:var(--ruac-space-2);}
.ruac-ui .ruac-mt-4{margin-top:var(--ruac-space-4);}
.ruac-ui .ruac-mt-6{margin-top:var(--ruac-space-6);}
.ruac-ui .ruac-text-dim{color:var(--ruac-text-dim);}
.ruac-ui .ruac-text-mute{color:var(--ruac-text-mute);}
.ruac-ui .ruac-text-success{color:var(--ruac-success);}
.ruac-ui .ruac-text-danger{color:var(--ruac-danger);}
.ruac-ui .ruac-mono{font-family:var(--ruac-font-mono);}