/* ============================================================================
   PlagPrevent V2 — Polish CSS v19
   - Couleur principale = BLEU DU LOGO #0F4D7C (échantillonné depuis plagpreventLogo.png)
   - Cellule SIMILARITÉ : flex-row pour mettre les barres à côté du badge, pas dessous
   - Boutons d'action : 22px icônes, fond bleu clair, bord bleu
   - ERROR : nowrap garanti
   - Bouton Filtre : bleu (catch-all sur tous .btn neutres)
   ============================================================================ */

:root {
  /* === Palette principale : TEAL (identité PlagPrevent V2) === */
  --pp-blue: #0E7C7B;
  --pp-blue-dark: #0A5A59;
  --pp-blue-light: #14A09F;
  --pp-blue-bg: #E6F4F4;
  --pp-blue-tint: #F0F9F9;

  /* === Accents (CTA + IA) === */
  --pp-tunisia-red: #E70013;
  --pp-tunisia-red-dark: #B0000F;
  --pp-violet: #7C3AED;
  --pp-violet-light: #A78BFA;

  /* === Texte === */
  --pp-text-primary: #1F2937;
  --pp-text-secondary: #6B7280;
  --pp-border: #E5E7EB;

  /* === Alias rétrocompat (mappées sur teal) === */
  --pp-trust-teal: #0E7C7B;
  --pp-trust-teal-light: #14A09F;
  --pp-trust-teal-bg: #E6F4F4;
  --pp-trust-teal-hover: #0A5A59;
}

/* ============================================================================
   1. LIGNES & CELLULES — auto-fit + pas de clip
   ============================================================================ */
.rdt_TableRow,
div.rdt_TableRow {
  min-height: 64px !important;  /* assez pour DATE 2 lignes */
  max-height: unset !important;
  height: auto !important;
  border-bottom: 1px solid var(--pp-border) !important;
}
.rdt_TableCell,
div.rdt_TableCell {
  min-height: unset !important;
  max-height: unset !important;
  height: auto !important;
  padding: 8px 10px !important;
  overflow: visible !important;
  white-space: normal !important;
  text-overflow: clip !important;
  line-height: 1.4 !important;
  word-break: break-word !important;
}
.rdt_TableCell > div {
  max-height: unset !important;
  overflow: visible !important;
  width: 100% !important;
}

/* Empêcher les badges courts de wraper */
.rdt_TableCell .badge,
.rdt_TableCell [class*="similarity"],
.rdt_TableCell [class*="badge"] {
  white-space: nowrap !important;
  display: inline-block !important;
}

/* Colonnes courtes (checkbox/ID/SIMILARITÉ/INFOS) → 1 ligne, contenu inline-row */
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(1),
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(2),
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(3),
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(4) {
  white-space: nowrap !important;
  word-break: keep-all !important;
}

/* === FIX MAJEUR : aligner les enfants de SIMILARITÉ en HORIZONTAL === */
/* Le badge % et les barres décoratives sont mis côte-à-côte au lieu d'empilés */
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(3) {
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: nowrap !important;
  align-items: center !important;
  justify-content: flex-start !important;
  gap: 6px !important;
}
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(3) > div,
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(3) > * {
  display: inline-flex !important;
  flex-direction: row !important;
  align-items: center !important;
  flex-wrap: nowrap !important;
  white-space: nowrap !important;
  width: auto !important;
}
/* Idem pour INFOS column (au cas où les barres y soient placées) */
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(4) {
  display: flex !important;
  flex-direction: row !important;
  align-items: center !important;
  gap: 4px !important;
}
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(4) > div {
  display: inline-flex !important;
  flex-direction: row !important;
  align-items: center !important;
}

/* ============================================================================
   2. HEAD
   ============================================================================ */
.rdt_TableCol {
  min-height: 42px !important;
  padding: 10px 12px !important;
  font-size: 11px !important;
  font-weight: 700 !important;
  letter-spacing: 0.4px !important;
  color: var(--pp-text-secondary) !important;
  text-transform: uppercase !important;
}
.rdt_TableHeadRow,
.rdt_TableHead {
  min-height: 42px !important;
  background: #F9FAFB !important;
  border-bottom: 2px solid var(--pp-border) !important;
}

/* ============================================================================
   2bis. LARGEURS DE COLONNES — toutes déterministes pour stopper les overlaps
   Ordre : 1=checkbox, 2=ID, 3=SIMILARITÉ, 4=INFOS, 5=NOM, 6=ACTIONS,
           7=MOTS/TAILLE, 8=E-MAIL, 9=ÉTABLISSEMENT, 10=DATE, 11=DOSSIER
   Règle commune : largeurs fixes + overflow hidden (sauf ACTIONS qui garde visible)
   ============================================================================ */

/* Checkbox col 1 */
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(1),
body.pp-page-documents .rdt_TableHeadRow .rdt_TableCol:nth-of-type(1) {
  flex: 0 0 50px !important; max-width: 50px !important; min-width: 50px !important;
  overflow: hidden !important;
}
/* ID col 2 */
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(2),
body.pp-page-documents .rdt_TableHeadRow .rdt_TableCol:nth-of-type(2) {
  flex: 0 0 60px !important; max-width: 60px !important; min-width: 60px !important;
  overflow: hidden !important;
}
/* SIMILARITÉ col 3 — compacte (admin button parti, on resserre + centrage) */
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(3),
body.pp-page-documents .rdt_TableHeadRow .rdt_TableCol:nth-of-type(3) {
  flex: 0 0 150px !important; max-width: 150px !important; min-width: 140px !important;
  overflow: visible !important;
  position: relative !important;
  justify-content: center !important;
}
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(3) > div {
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: nowrap !important;
  align-items: center !important;
  justify-content: center !important;   /* centrage horizontal */
  gap: 6px !important;
  width: 100% !important;
  overflow: visible !important;
}
/* ⓘ rouge solo (analyses < 500 mots) → vraiment centré */
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(3) #errorS,
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(3) [id="errorS"] {
  width: 100% !important;
  margin: 0 auto !important;
  justify-content: center !important;
  display: flex !important;
}
/* Reset des inline position:absolute */
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(3) div[style*="position: absolute"],
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(3) div[style*="position:absolute"],
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(3) span[style*="position: absolute"],
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(3) span[style*="position:absolute"] {
  position: relative !important;
  top: auto !important;
  left: auto !important;
  right: auto !important;
  z-index: auto !important;
  margin: 0 !important;
  text-shadow: none !important;
  width: auto !important;
  height: auto !important;
}
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(3) > div > * {
  flex-shrink: 0 !important;
  margin: 0 !important;
}
/* SPINNERS — taille raisonnable préservée */
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(3) [class*="falling-lines"],
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(3) [aria-label*="loading"],
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(3) [aria-label*="Loading"] {
  width: 32px !important;
  height: 32px !important;
  flex-shrink: 0 !important;
  order: 1 !important;
}
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(3) [class*="falling-lines"] svg,
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(3) [aria-label*="loading"] svg {
  width: 32px !important;
  height: 32px !important;
}
/* Icônes Feather (pencil, warning, info) dans SIMILARITÉ — 14px aérées */
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(3) svg.feather,
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(3) .feather {
  width: 14px !important;
  height: 14px !important;
}
/* ETA "≈ X mn" : ordre 0 (avant spinner) */
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(3) > div > div:not([id*="grid"]):not([class*="loader"]) {
  order: 0 !important;
}

/* === GAP entre ERROR text et icône Info ⓘ === */
.rdt_TableCell:nth-of-type(3) #error,
.rdt_TableCell:nth-of-type(3) #errorS,
.rdt_TableCell:nth-of-type(3) [id^="error"] {
  display: inline-flex !important;
  flex-direction: row !important;
  align-items: center !important;
  gap: 8px !important;
}
.rdt_TableCell:nth-of-type(3) [id^="error"] > .btn-ripple,
.rdt_TableCell:nth-of-type(3) [id^="error"] button {
  margin: 0 !important;
  padding: 2px 10px !important;
}
.rdt_TableCell:nth-of-type(3) [id^="error"] svg {
  margin: 0 !important;
  flex-shrink: 0 !important;
}

/* === MoreVertical dropdown admin — plus visible === */
.pp-admin-more {
  display: inline-flex !important;
  align-items: center !important;
  margin-left: 6px !important;
}
.pp-admin-more .dropdown-toggle,
.pp-admin-more > span[id^="adminMore"] {
  background: var(--pp-blue-bg) !important;
  border: 1px solid rgba(14, 124, 123, 0.35) !important;
  border-radius: 8px !important;
  padding: 6px 8px !important;
  cursor: pointer !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  transition: all 0.15s !important;
  min-width: 32px !important;
  min-height: 32px !important;
  box-shadow: 0 1px 2px rgba(14, 124, 123, 0.1) !important;
}
.pp-admin-more .dropdown-toggle:hover,
.pp-admin-more > span[id^="adminMore"]:hover {
  background: var(--pp-blue) !important;
  border-color: var(--pp-blue-dark) !important;
  transform: translateY(-1px) !important;
  box-shadow: 0 4px 10px rgba(14, 124, 123, 0.25) !important;
}
.pp-admin-more svg {
  color: var(--pp-blue) !important;
  stroke: var(--pp-blue) !important;
  width: 18px !important;
  height: 18px !important;
  stroke-width: 2.5 !important;
}
.pp-admin-more .dropdown-toggle:hover svg,
.pp-admin-more > span[id^="adminMore"]:hover svg {
  color: #FFFFFF !important;
  stroke: #FFFFFF !important;
}
/* DropdownMenu Reactstrap : overlay flottant, n'altère pas le layout */
.pp-admin-more .dropdown-menu {
  position: absolute !important;
  top: calc(100% + 4px) !important;
  right: 0 !important;
  left: auto !important;
  bottom: auto !important;
  border: 1px solid var(--pp-border) !important;
  border-radius: 8px !important;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.18) !important;
  padding: 4px !important;
  min-width: 220px !important;
  z-index: 9999 !important;
  background: #FFFFFF !important;
  transform: none !important;
}
/* Empêcher le dropdown ouvert de pousser la ligne — la cellule passe en overflow visible + z-index élevé */
.rdt_TableRow:has(.pp-admin-more .show),
.rdt_TableCell:has(.pp-admin-more .show) {
  overflow: visible !important;
  z-index: 1000 !important;
  position: relative !important;
}
.pp-admin-more .dropdown-item {
  display: flex !important;
  align-items: center !important;
  padding: 9px 12px !important;
  font-size: 13px !important;
  border-radius: 5px !important;
  color: var(--pp-text-primary) !important;
  cursor: pointer !important;
  transition: background 0.1s !important;
}
.pp-admin-more .dropdown-item:hover {
  background: var(--pp-blue-bg) !important;
  color: var(--pp-blue-dark) !important;
}
.pp-admin-more .dropdown-item svg {
  color: var(--pp-blue) !important;
  stroke: var(--pp-blue) !important;
  flex-shrink: 0 !important;
  margin-right: 8px !important;
}

/* INFOS col 4 — overflow visible + position context pour les bars absolus */
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(4),
body.pp-page-documents .rdt_TableHeadRow .rdt_TableCol:nth-of-type(4) {
  flex: 0 0 100px !important; max-width: 100px !important; min-width: 90px !important;
  overflow: visible !important;
  position: relative !important;
}
/* Reset des inline styles position:absolute mis par React */
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(4) > div[style*="position: absolute"],
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(4) > div[style*="position:absolute"] {
  position: relative !important;
  top: auto !important;
  left: auto !important;
  right: auto !important;
  z-index: auto !important;
}
/* La grille des bars (id="grid${row._id}") */
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(4) div[id^="grid"] {
  position: relative !important;
  top: auto !important;
  right: auto !important;
  left: auto !important;
  margin: 0 !important;
  width: auto !important;
  height: 24px !important;
  display: grid !important;
  grid-template-columns: repeat(6, 5px) !important;
  gap: 3px !important;
}
/* Bars individuelles : hauteur lisible (comme V1) */
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(4) .grid-item,
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(4) .bargrid,
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(4) .bargris {
  height: 22px !important;
  width: 5px !important;
}
/* NOM DU FICHIER col 5 — flexible, prend l'espace dispo */
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(5),
body.pp-page-documents .rdt_TableHeadRow .rdt_TableCol:nth-of-type(5) {
  flex: 1 1 200px !important; min-width: 180px !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(5) > div {
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}
/* ACTIONS col 6 — 380px pour 8 pastilles 34px confortablement */
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(6),
body.pp-page-documents .rdt_TableHeadRow .rdt_TableCol:nth-of-type(6) {
  flex: 0 0 380px !important; max-width: 380px !important; min-width: 360px !important;
  overflow: visible !important;
}
/* MOTS/TAILLE col 7 — fixe */
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(7),
body.pp-page-documents .rdt_TableHeadRow .rdt_TableCol:nth-of-type(7) {
  flex: 0 0 130px !important; max-width: 130px !important; min-width: 110px !important;
  overflow: hidden !important;
  white-space: nowrap !important;
  font-size: 12px !important;
}
/* E-MAIL col 8 */
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(8),
body.pp-page-documents .rdt_TableHeadRow .rdt_TableCol:nth-of-type(8) {
  flex: 0 0 200px !important; max-width: 200px !important; min-width: 180px !important;
  overflow: hidden !important;
  font-size: 12px !important;
}
/* ÉTABLISSEMENT col 9 */
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(9),
body.pp-page-documents .rdt_TableHeadRow .rdt_TableCol:nth-of-type(9) {
  flex: 0 0 120px !important; max-width: 120px !important; min-width: 100px !important;
  overflow: hidden !important;
}
/* DATE col 10 — 2 lignes (date + heure) */
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(10),
body.pp-page-documents .rdt_TableHeadRow .rdt_TableCol:nth-of-type(10) {
  flex: 0 0 90px !important; max-width: 90px !important; min-width: 85px !important;
  overflow: visible !important;
  font-size: 11.5px !important;
  line-height: 1.35 !important;
  white-space: normal !important;
}
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(10) > div,
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(10) > * {
  white-space: normal !important;
  word-spacing: 100vw !important;   /* force wrap au 1er espace */
  word-break: keep-all !important;
  line-height: 1.35 !important;
  width: 100% !important;
  display: block !important;
}
/* Au cas où le texte est dans un span — appliquer aussi */
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(10) span {
  word-spacing: 100vw !important;
  white-space: normal !important;
  display: inline !important;
}
/* DOSSIER col 11 */
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(11),
body.pp-page-documents .rdt_TableHeadRow .rdt_TableCol:nth-of-type(11) {
  flex: 0 0 100px !important; max-width: 100px !important; min-width: 80px !important;
  overflow: hidden !important;
  font-size: 12px !important;
}

/* ============================================================================
   2ter. PROTECTION DES SPINNERS — les loaders animés ne doivent PAS être touchés
   FallingLines / Bars de react-loader-spinner = SVG avec animation interne.
   On garde leur taille/couleur d'origine, sinon l'animation casse.
   ============================================================================ */
.rdt_TableCell svg[aria-label*="loading"],
.rdt_TableCell svg[aria-label*="Loading"],
.rdt_TableCell [aria-label*="loading"] svg,
.rdt_TableCell .falling-lines-loading,
.rdt_TableCell [class*="falling-lines"],
.rdt_TableCell [class*="bars-loader"],
.rdt_TableCell [class*="loader"] svg,
.rdt_TableCell .loader svg {
  /* annule TOUS mes overrides généraux pour ces spinners */
  width: auto !important;
  height: auto !important;
  color: inherit !important;
  stroke: inherit !important;
  fill: inherit !important;
  display: inline-block !important;
  visibility: visible !important;
  opacity: 1 !important;
  animation: inherit !important;
}
/* Idem pour les enfants/animations internes des spinners */
.rdt_TableCell [aria-label*="loading"] *,
.rdt_TableCell [class*="loader"] *,
.rdt_TableCell .falling-lines-loading * {
  animation-play-state: running !important;
}

/* ============================================================================
   3. ICÔNES — règle par défaut : petites, juste teal
   (les gros boutons d'action sont définis ci-dessous, scopés à ACTIONS uniquement)
   ============================================================================ */
/* Icônes Feather UNIQUEMENT — pas tous les SVG (sinon casse les spinners) */
.rdt_TableCell svg.feather,
.rdt_TableCell .feather,
.rdt_TableCell a > svg.feather,
.rdt_TableCell button > svg.feather {
  visibility: visible !important;
  opacity: 1 !important;
  overflow: visible !important;
  width: 14px !important;
  height: 14px !important;
  stroke-width: 2 !important;
  color: var(--pp-blue) !important;
  stroke: var(--pp-blue) !important;
  fill: none !important;
  flex-shrink: 0 !important;
}

/* ============================================================================
   4. ACTIONS COLUMN UNIQUEMENT (6ᵉ colonne) — pastilles + icônes 22px
   ============================================================================ */
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(6) svg.feather,
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(6) a svg.feather,
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(6) button svg.feather,
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(6) .feather {
  width: 22px !important;
  height: 22px !important;
  stroke-width: 2.25 !important;
  color: var(--pp-blue) !important;
  stroke: var(--pp-blue) !important;
}
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(6) a:not([id="userInfo"]):not([href*="/api/documents"]):not([href*="/plagiarism/view"]):not([href*="/plagiarism/newview"]):not(.w-100),
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(6) button {
  overflow: visible !important;
  padding: 5px !important;
  min-width: 34px !important;
  min-height: 34px !important;
  width: 34px !important;
  height: 34px !important;
  border-radius: 7px !important;
  background: var(--pp-blue-bg) !important;
  border: 1px solid rgba(14, 124, 123, 0.3) !important;
  color: var(--pp-blue) !important;
  transition: all 0.15s ease !important;
  margin: 0 1px !important;
  box-shadow: 0 1px 2px rgba(14, 124, 123, 0.1) !important;
}
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(6) a:not([id="userInfo"]):not([href*="/api/documents"]):not([href*="/plagiarism/view"]):not([href*="/plagiarism/newview"]):not(.w-100):hover,
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(6) button:hover {
  background: var(--pp-blue) !important;
  border-color: var(--pp-blue-dark) !important;
  color: #FFFFFF !important;
  transform: translateY(-1px) !important;
  box-shadow: 0 4px 12px rgba(14, 124, 123, 0.25) !important;
}
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(6) a:hover svg,
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(6) button:hover svg {
  color: #FFFFFF !important;
  stroke: #FFFFFF !important;
}

/* Hors ACTIONS : boutons/anchors restent neutres (pas de pastille) */
.rdt_TableCell:not(:nth-of-type(6)) a,
.rdt_TableCell:not(:nth-of-type(6)) button {
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  padding: 2px !important;
  min-width: unset !important;
  min-height: unset !important;
  margin: 0 !important;
}

/* Anchors textuels (nom fichier) — couleur bleu logo */
.rdt_TableCell a#userInfo,
.rdt_TableCell a[href*="/api/documents"],
.rdt_TableCell a[href*="/plagiarism/view"],
.rdt_TableCell a[href*="/plagiarism/newview"],
.rdt_TableCell a.w-100 {
  text-align: left !important;
  white-space: normal !important;
  word-break: break-word !important;
  color: var(--pp-blue) !important;
  font-weight: 500 !important;
  text-decoration: none !important;
  background: transparent !important;
  border: none !important;
  padding: 0 !important;
  min-width: unset !important;
  min-height: unset !important;
  box-shadow: none !important;
}
.rdt_TableCell a#userInfo:hover,
.rdt_TableCell a[href*="/plagiarism/"]:hover {
  text-decoration: underline !important;
  background: transparent !important;
  color: var(--pp-blue-dark) !important;
  transform: none !important;
}

/* ============================================================================
   5. BOUTONS TOOLBAR (Filtre, etc.) → bleu logo
   ============================================================================ */
.btn-secondary,
.btn-light,
.btn-outline-secondary,
.btn-flat-secondary,
.btn-outline-light,
.btn-flat-light,
.btn-default,
button.btn:not(.btn-primary):not(.btn-success):not(.btn-warning):not(.btn-danger):not(.btn-info):not(.delete1):not([id*="addArchive"]):not(.btn-icon):not([class*="btn-flat-primary"]) {
  background: var(--pp-blue-bg) !important;
  color: var(--pp-blue) !important;
  border-color: var(--pp-blue) !important;
  font-weight: 600 !important;
}
.btn-secondary:hover,
.btn-light:hover,
.btn-outline-secondary:hover,
.btn-flat-secondary:hover,
.btn-outline-light:hover,
.btn-flat-light:hover,
.btn-default:hover,
button.btn:not(.btn-primary):not(.btn-success):not(.btn-warning):not(.btn-danger):not(.btn-info):not(.delete1):not([id*="addArchive"]):not(.btn-icon):not([class*="btn-flat-primary"]):hover {
  background: var(--pp-blue) !important;
  color: #FFFFFF !important;
  border-color: var(--pp-blue-dark) !important;
  transform: translateY(-1px) !important;
  box-shadow: 0 4px 12px rgba(15, 77, 124, 0.25) !important;
}

/* ============================================================================
   6. BOUTONS PRIMAIRES — gradient teal
   ============================================================================ */
.btn.delete1:not(.btn-icon):not(.pp-upload-btn) {
  background: linear-gradient(135deg, var(--pp-blue), var(--pp-blue-light)) !important;
  border-color: var(--pp-blue) !important;
  color: #FFFFFF !important;
  font-weight: 600 !important;
  transition: all 0.2s ease !important;
}
.btn.delete1:not(.btn-icon):not(.pp-upload-btn):hover {
  transform: translateY(-1px) !important;
  box-shadow: 0 4px 12px rgba(14, 124, 123, 0.3) !important;
  color: #FFFFFF !important;
}
/* === Télécharger des fichiers → BLEU PÉTROLE LOGO ===
   Classe pp-upload-btn ajoutée dynamiquement par pp-polish-fixer.js (matche par texte) */
.pp-upload-btn,
button.pp-upload-btn,
.btn.pp-upload-btn,
button[id*="addArchive"],
.btn[id*="addArchive"],
button[id*="upload"],
button[id*="Upload"],
button[id*="telechar"],
button[id*="Telechar"],
button[id*="Téléchar"],
[id*="addArchive"].btn,
.btn[id*="upload"],
.btn[id*="telechar"] {
  background: linear-gradient(135deg, #0F4D7C, #1A6FAA) !important;
  background-image: linear-gradient(135deg, #0F4D7C, #1A6FAA) !important;
  background-color: #0F4D7C !important;
  border-color: #0F4D7C !important;
  color: #FFFFFF !important;
  box-shadow: 0 2px 6px rgba(15, 77, 124, 0.3) !important;
  font-weight: 600 !important;
}
.pp-upload-btn:hover,
button.pp-upload-btn:hover,
.btn.pp-upload-btn:hover,
button[id*="addArchive"]:hover,
.btn[id*="addArchive"]:hover,
button[id*="upload"]:hover,
button[id*="telechar"]:hover {
  background: linear-gradient(135deg, #0A3960, #0F4D7C) !important;
  background-image: linear-gradient(135deg, #0A3960, #0F4D7C) !important;
  background-color: #0A3960 !important;
  border-color: #0A3960 !important;
  color: #FFFFFF !important;
  transform: translateY(-1px) !important;
  box-shadow: 0 4px 14px rgba(15, 77, 124, 0.4) !important;
}

/* Dropdown nombre de docs (taggé par pp-polish-fixer.js) */
.pp-page-size,
select.pp-page-size {
  width: 75px !important;
  min-width: 70px !important;
  max-width: 90px !important;
  font-size: 13px !important;
  padding: 6px 10px !important;
  height: 38px !important;
}

/* Champ recherche (taggé par pp-polish-fixer.js) */
.pp-search-field,
input.pp-search-field {
  width: 220px !important;
  min-width: 180px !important;
  max-width: 260px !important;
  font-size: 13px !important;
  padding: 6px 12px !important;
  height: 38px !important;
}

/* ============================================================================
   6bis. TOOLBAR : dropdown nombre + barre de recherche compactés
   ============================================================================ */
/* Dropdown nombre de docs (10/25/50/100) — beaucoup plus petit */
.documents-toolbar select,
select.form-control,
.documents-page select,
[class*="documents"] select,
.toolbar select,
select[class*="entries"],
select[class*="pageSize"] {
  width: 75px !important;
  min-width: 70px !important;
  max-width: 90px !important;
  font-size: 13px !important;
  padding: 6px 10px !important;
  height: 38px !important;
}

/* Barre de recherche — plus compacte */
.search,
input[id="search-invoice"],
input[placeholder*="Recherche"],
input[placeholder*="echerche"],
input[type="search"],
input.form-control[placeholder*="Rech"] {
  width: 220px !important;
  min-width: 180px !important;
  max-width: 260px !important;
  font-size: 13px !important;
  padding: 6px 12px !important;
  height: 38px !important;
}

/* Forcer le conteneur parent à rester en flex-row nowrap si possible */
.documents-toolbar,
.toolbar,
.dataTable-top,
[class*="toolbar"] {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 8px !important;
  align-items: center !important;
}

/* ============================================================================
   7. SIDEBAR + CARDS — bleu logo
   ============================================================================ */
.main-menu .navigation li.nav-item.active > a {
  background: linear-gradient(118deg, var(--pp-blue), var(--pp-blue-light)) !important;
  box-shadow: 0 0 10px rgba(15, 77, 124, 0.3) !important;
}
.card {
  border-radius: 10px !important;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04), 0 1px 2px rgba(0, 0, 0, 0.02) !important;
}
.search:focus, input[id="search-invoice"]:focus {
  border-color: var(--pp-blue) !important;
  box-shadow: 0 0 0 3px rgba(15, 77, 124, 0.1) !important;
}

/* ============================================================================
   8. FAB IA (inchangé : violet)
   ============================================================================ */
#pp-fab-ia {
  position: fixed;
  bottom: 32px;
  right: 32px;
  width: 60px;
  height: 60px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--pp-violet), #6B46C1);
  color: white;
  border: none;
  cursor: pointer;
  font-size: 24px;
  box-shadow: 0 6px 20px rgba(124, 58, 237, 0.4);
  z-index: 9999;
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  display: flex;
  align-items: center;
  justify-content: center;
}
#pp-fab-ia:hover {
  transform: translateY(-3px) scale(1.05);
  box-shadow: 0 10px 28px rgba(124, 58, 237, 0.55);
}
#pp-fab-ia::before { content: "🤖"; font-size: 26px; }

#pp-fab-panel {
  position: fixed;
  bottom: 110px;
  right: 32px;
  width: 380px;
  max-width: calc(100vw - 64px);
  max-height: 70vh;
  background: white;
  border-radius: 16px;
  box-shadow: 0 20px 50px rgba(0, 0, 0, 0.2);
  z-index: 9998;
  display: none;
  flex-direction: column;
  overflow: hidden;
  border: 1px solid var(--pp-border);
}
#pp-fab-panel.open { display: flex; animation: pp-fab-slide 0.25s ease-out; }
@keyframes pp-fab-slide {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}
#pp-fab-panel-header {
  background: linear-gradient(135deg, var(--pp-violet), #6B46C1);
  color: white;
  padding: 16px 20px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-weight: 600;
}
#pp-fab-panel-close {
  background: rgba(255,255,255,0.2);
  border: none;
  color: white;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  cursor: pointer;
  font-size: 18px;
  line-height: 1;
}
#pp-fab-panel-body { padding: 16px 20px; overflow-y: auto; flex: 1; }
.pp-fab-action {
  display: block;
  width: 100%;
  padding: 12px 14px;
  margin-bottom: 8px;
  background: #F9FAFB;
  border: 1px solid var(--pp-border);
  border-radius: 10px;
  text-align: left;
  cursor: pointer;
  font-size: 14px;
  font-weight: 500;
  color: var(--pp-text-primary);
  transition: all 0.15s;
}
.pp-fab-action:hover {
  background: #F3F4F6;
  border-color: var(--pp-violet-light);
  transform: translateX(2px);
}
.pp-fab-action[disabled] { opacity: 0.5; cursor: not-allowed; }
#pp-fab-output {
  margin-top: 12px;
  padding: 14px;
  background: #F5F3FF;
  border-left: 3px solid var(--pp-violet);
  border-radius: 8px;
  font-size: 13px;
  line-height: 1.6;
  white-space: pre-wrap;
  display: none;
  max-height: 280px;
  overflow-y: auto;
}
#pp-fab-output.show { display: block; }
.pp-fab-loading { text-align: center; padding: 20px; color: var(--pp-violet); }

@media (max-width: 768px) {
  #pp-fab-ia { width: 52px; height: 52px; bottom: 20px; right: 20px; }
  #pp-fab-ia::before { font-size: 22px; }
  #pp-fab-panel { bottom: 90px; right: 20px; width: calc(100vw - 40px); }
}

/* ============================================================================
   SOURCES TABLE — page /plagiarism/newview/{id} onglet Sources
   Colonnes : 1=#, 2=SIMILAR, 3=RÉPÉTITION, 4=TYPE, 5=NOM DU FICHIER, 6=SECTIONS, 7=ACTIONS
   ============================================================================ */
body.pp-page-newview .rdt_TableCell,
body.pp-page-newview div.rdt_TableCell {
  min-height: unset !important;
  max-height: unset !important;
  height: auto !important;
  padding: 8px 10px !important;
  overflow: visible !important;
  white-space: normal !important;
  line-height: 1.4 !important;
  word-break: break-word !important;
}
body.pp-page-newview .rdt_TableRow,
body.pp-page-newview div.rdt_TableRow {
  min-height: 56px !important;
  max-height: unset !important;
  height: auto !important;
  border-bottom: 1px solid var(--pp-border) !important;
}

/* Structure réelle ADMIN (8 colonnes rendues, col mobile omitted) :
   1=#, 2=SIMILAR, 3=RÉPÉTITION, 4=TYPE, 5=NOM, 6=ADMIN(Edit/Delete), 7=SECTIONS, 8=ACTIONS */

/* # (index) */
body.pp-page-newview .rdt_TableCell:nth-of-type(1),
body.pp-page-newview .rdt_TableCol:nth-of-type(1) {
  flex: 0 0 50px !important; max-width: 50px !important; min-width: 50px !important;
  justify-content: center !important;
}
/* SIMILAR (badge % + M circle) — largeur ajustée au contenu avec respiration */
body.pp-page-newview .rdt_TableCell:nth-of-type(2),
body.pp-page-newview .rdt_TableCol:nth-of-type(2) {
  flex: 0 0 120px !important; max-width: 120px !important; min-width: 110px !important;
  overflow: visible !important;
  justify-content: center !important;
}
body.pp-page-newview .rdt_TableCell:nth-of-type(2) > div {
  display: inline-flex !important;
  flex-direction: row !important;
  align-items: center !important;
  gap: 6px !important;
  width: auto !important;
  justify-content: center !important;
}
/* RÉPÉTITION (nombre) */
body.pp-page-newview .rdt_TableCell:nth-of-type(3),
body.pp-page-newview .rdt_TableCol:nth-of-type(3) {
  flex: 0 0 90px !important; max-width: 90px !important; min-width: 80px !important;
  text-align: center !important;
  justify-content: center !important;
}
/* TYPE (Archive/Web) */
body.pp-page-newview .rdt_TableCell:nth-of-type(4),
body.pp-page-newview .rdt_TableCol:nth-of-type(4) {
  flex: 0 0 90px !important; max-width: 90px !important; min-width: 80px !important;
  justify-content: center !important;
}
/* NOM DU FICHIER — ABSORBE l'espace libre, content aligné à gauche (style V1) */
body.pp-page-newview .rdt_TableCell:nth-of-type(5),
body.pp-page-newview .rdt_TableCol:nth-of-type(5) {
  flex: 1 1 auto !important; max-width: none !important; min-width: 280px !important;
  overflow: hidden !important;
  justify-content: flex-start !important;
}
body.pp-page-newview .rdt_TableCell:nth-of-type(5) > div {
  display: inline-flex !important;
  flex-direction: row !important;
  align-items: center !important;
  flex-wrap: nowrap !important;
  gap: 6px !important;
  width: auto !important;
  overflow: hidden !important;
  white-space: nowrap !important;
  justify-content: flex-start !important;
}
body.pp-page-newview .rdt_TableCell:nth-of-type(5) a.file-name,
body.pp-page-newview .rdt_TableCell:nth-of-type(5) a.text-capitalize {
  font-size: 13px !important;
  font-weight: 500 !important;
  color: var(--pp-blue) !important;
  text-decoration: none !important;
  display: inline !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  max-width: 320px !important;
}
/* Submitter (h5 avec (email) inline) — même ligne, plus petit, couleur orangée comme V1 */
body.pp-page-newview .rdt_TableCell:nth-of-type(5) h5 {
  font-size: 12px !important;
  font-weight: 400 !important;
  color: #b65720 !important;
  margin: 0 !important;
  display: inline !important;
  white-space: nowrap !important;
}
body.pp-page-newview .rdt_TableCell:nth-of-type(5) h5 a {
  color: #b65720 !important;
  text-decoration: none !important;
}
/* Cacher le bouton décoratif SCid (les {X} cyan) */
body.pp-page-newview .rdt_TableCell:nth-of-type(5) button#IDDocument,
body.pp-page-newview .rdt_TableCell:nth-of-type(5) [id*="IDDocument"],
body.pp-page-newview .rdt_TableCell:nth-of-type(5) button img[src*="yjnm"],
body.pp-page-newview .rdt_TableCell:nth-of-type(5) img[src*="yjnm"] {
  display: none !important;
}
/* ADMIN col 6 (Edit + Delete) — compact, accolé au filename */
body.pp-page-newview .rdt_TableCell:nth-of-type(6),
body.pp-page-newview .rdt_TableCol:nth-of-type(6) {
  flex: 0 0 80px !important; max-width: 80px !important; min-width: 70px !important;
  justify-content: flex-start !important;
}
body.pp-page-newview .rdt_TableCell:nth-of-type(6) a {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 6px !important;
  margin: 0 2px !important;
  border-radius: 6px !important;
  background: var(--pp-blue-bg) !important;
  border: 1px solid rgba(14, 124, 123, 0.25) !important;
  width: 32px !important;
  height: 32px !important;
}
body.pp-page-newview .rdt_TableCell:nth-of-type(6) a:hover {
  background: var(--pp-blue) !important;
}
body.pp-page-newview .rdt_TableCell:nth-of-type(6) a:hover svg {
  color: #FFFFFF !important;
  stroke: #FFFFFF !important;
}

/* SECTIONS col 7 — largeur fixe pour les bars + bouton +, RESTE à DROITE */
body.pp-page-newview .rdt_TableCell:nth-of-type(7),
body.pp-page-newview .rdt_TableCol:nth-of-type(7) {
  flex: 0 0 400px !important; max-width: 400px !important; min-width: 360px !important;
  justify-content: flex-start !important;
}
/* ACTIONS col 8 (toggle activation) — RESTE à L'EXTRÊME DROITE */
body.pp-page-newview .rdt_TableCell:nth-of-type(8),
body.pp-page-newview .rdt_TableCol:nth-of-type(8) {
  flex: 0 0 100px !important; max-width: 100px !important; min-width: 90px !important;
  justify-content: center !important;
}

/* Icônes / boutons table sources : bleu teal cohérent */
body.pp-page-newview .rdt_TableCell svg {
  color: var(--pp-blue) !important;
  stroke: var(--pp-blue) !important;
}
body.pp-page-newview .rdt_TableHeadRow,
body.pp-page-newview .rdt_TableHead {
  min-height: 42px !important;
  background: #F9FAFB !important;
  border-bottom: 2px solid var(--pp-border) !important;
}
body.pp-page-newview .rdt_TableCol {
  min-height: 42px !important;
  padding: 10px 12px !important;
  font-size: 11px !important;
  font-weight: 700 !important;
  letter-spacing: 0.4px !important;
  color: var(--pp-text-secondary) !important;
  text-transform: uppercase !important;
}


/* === Pages admin (Organisations, Utilisateurs, Étudiants, Administrateurs) ===
   Ces pages sont sous /plagiarism mais ont des colonnes différentes de la liste
   documents : pas de largeurs fixes documents, on empêche la superposition du texte
   en forçant le retour à la ligne + clip dans chaque cellule. */
body.pp-page-admin .rdt_TableCol,
body.pp-page-admin .rdt_TableCell {
  overflow: hidden !important;
  white-space: normal !important;
  word-break: break-word !important;
  overflow-wrap: anywhere !important;
  min-width: 0 !important;
}
body.pp-page-admin .rdt_TableCell > div,
body.pp-page-admin .rdt_TableCol > div {
  overflow: hidden !important;
  white-space: normal !important;
  word-break: break-word !important;
  overflow-wrap: anywhere !important;
  min-width: 0 !important;
  width: 100% !important;
}
/* Les actions (icônes/boutons) restent sur une ligne */
body.pp-page-admin .rdt_TableCell button,
body.pp-page-admin .rdt_TableCell a,
body.pp-page-admin .rdt_TableCell svg {
  white-space: nowrap !important;
  flex-shrink: 0;
}


/* === Anti-superposition global (flexbox) === */
.rdt_TableRow .rdt_TableCell { min-width: 0 !important; }
.rdt_TableRow .rdt_TableCell > div { min-width: 0 !important; overflow-wrap: anywhere !important; }


/* === Colonne ACTIONS (derniere colonne) sur pages admin : toujours complete === */
body.pp-page-admin .rdt_TableRow .rdt_TableCell:last-of-type,
body.pp-page-admin .rdt_TableHeadRow .rdt_TableCol:last-of-type {
  overflow: visible !important;
  white-space: nowrap !important;
  flex-shrink: 0 !important;
  min-width: max-content !important;
  justify-content: flex-end !important;
}
body.pp-page-admin .rdt_TableRow .rdt_TableCell:last-of-type > div {
  overflow: visible !important;
  white-space: nowrap !important;
  width: auto !important;
  min-width: 0 !important;
  display: flex !important;
  flex-wrap: nowrap !important;
  align-items: center !important;
  gap: 4px !important;
}
body.pp-page-admin .rdt_TableCell:last-of-type button,
body.pp-page-admin .rdt_TableCell:last-of-type a,
body.pp-page-admin .rdt_TableCell:last-of-type svg {
  flex-shrink: 0 !important;
}


/* === Fix badge "privé" (corner ribbon) coupé sur la colonne NOM DU FICHIER === */
/* La cellule doit laisser dépasser le ribbon (position absolute, top:-11px left:-15px) */
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(5),
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(5) > div {
  overflow: visible !important;
  position: relative !important;
}
/* ...mais le TEXTE du nom tronque proprement (ellipsis), pas la cellule */
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(5) a,
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(5) p,
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(5) > div > span,
body.pp-page-documents .rdt_TableRow .rdt_TableCell:nth-of-type(5) > div > div {
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: nowrap !important;
  display: inline-block !important;
  max-width: 100% !important;
  vertical-align: middle !important;
}
/* Le ribbon au-dessus du texte */
body.pp-page-documents .ribbon-wrapperDX,
body.pp-page-documents .ribbon-wrapperDXD,
body.pp-page-documents [class*="ribbon-wrapper"] {
  z-index: 20 !important;
  overflow: hidden !important; /* garde la forme triangulaire du ribbon */
}
