/* Taille de police du tableau alignée sur les autres onglets, qui composent
   leur contenu en 14 px (.api-url-display, .dataset-resource-item).
   Le thème habille déjà #datatable — « #datatable thead th » en .78rem et
   .875rem — et sa feuille est chargée APRÈS celle du module. À spécificité
   égale il l'emporterait : les sélecteurs ci-dessous en ajoutent donc une
   couche. La racine du thème étant à 62,5 %, un rem y vaut 10 px, d'où des
   valeurs en pixels pour ne pas dépendre de ce réglage. */
#datatable thead tr th,
#datatable tbody tr td,
#datatable,
#datatable th,
#datatable td,
.dt-container,
.dt-container .dt-info,
.dt-container .dt-paging,
.dt-container .dt-search,
.dt-container .dt-length {
  font-size: 14px;
}

/* L'en-tête garde son libellé, sa flèche de tri et l'entonnoir sur UNE ligne :
   sans cela l'entonnoir passait à la ligne suivante. */
#datatable thead th {
  white-space: nowrap;
}

/* Le conteneur flex de DataTables accueille le libellé, la flèche de tri et
   l'entonnoir. Ce dernier est poussé à droite, contre le bord de la colonne. */
#datatable thead th .dt-column-header {
  align-items: center;
}

#datatable thead th .dt-filtre {
  margin-left: auto;
  flex: none;
}

/* Filtre par colonne : un dépliant à l'entonnoir de chaque en-tête. On y coche
   des valeurs réellement présentes dans la ressource, lues par datastore_search
   avec distinct — plutôt que de deviner quoi taper. */

.dt-filtre {
  vertical-align: middle;
  margin-left: 6px;
  padding: 0 4px;
  border: 1px solid transparent;
  border-radius: 3px;
  background: none;
  color: #666;
  font-size: 12px;
  line-height: 1;
  cursor: pointer;
}

.dt-filtre:hover {
  border-color: #bbb;
  background: #f0f0f0;
  color: #222;
}

/* Colonne filtrée : l'usager doit voir d'où vient un résultat restreint. */
.dt-filtre--actif {
  border-color: #1a5c46;
  background: #e8f4ec;
  color: #1a5c46;
}

.dt-panneau {
  position: absolute;
  z-index: 1100;
  width: 260px;
  padding: 10px;
  background: #fff;
  border: 1px solid #ccc;
  border-radius: 4px;
  box-shadow: 0 3px 12px rgba(0, 0, 0, 0.18);
  font-size: 13px;
  font-weight: normal;
}

.dt-panneau__titre {
  margin-bottom: 8px;
  font-weight: 600;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.dt-panneau__recherche,
.dt-panneau__texte {
  width: 100%;
  padding: 4px 6px;
  border: 1px solid #ccc;
  border-radius: 3px;
}

.dt-panneau__valeurs {
  max-height: 220px;
  margin: 8px 0 0;
  padding: 0;
  overflow-y: auto;
  list-style: none;
}

.dt-panneau__valeurs li label {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 2px 0;
  font-weight: normal;
  cursor: pointer;
}

.dt-panneau__ligne {
  display: block;
  font-weight: normal;
}

.dt-panneau__vide {
  margin: 6px 0;
  color: #666;
}

.dt-panneau__actions {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  margin-top: 10px;
}

/* Couleurs posées explicitement : ces boutons ne portent pas la classe .btn du
   thème, ils héritaient donc d'un texte blanc sur fond blanc. */
.dt-panneau__actions button {
  padding: 5px 14px;
  border: 1px solid #b5b5b5;
  border-radius: 100px;
  background: #fff;
  color: #333;
  font-size: 13px;
  line-height: 1.4;
  cursor: pointer;
}

.dt-panneau__actions button:hover {
  border-color: #888;
  background: #f2f2f2;
  color: #111;
}

/* Sélecteur porté au même niveau que la règle générique ci-dessus : une classe
   seule y perdait, « .dt-panneau__actions button » étant plus spécifique. */
.dt-panneau__actions .dt-panneau__appliquer,
.dt-panneau__actions .dt-panneau__appliquer:hover {
  border-color: #1a5c46;
  background: #1a5c46;
  color: #fff;
}

.dt-panneau__mode {
  width: 100%;
  margin-bottom: 8px;
  padding: 4px 6px;
  border: 1px solid #ccc;
  border-radius: 3px;
  background: #fff;
  color: #333;
}

.dt-panneau__ligne {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 6px;
  font-weight: normal;
}

.dt-panneau__ligne input {
  width: 55%;
  padding: 4px 6px;
  border: 1px solid #ccc;
  border-radius: 3px;
  background: #fff;
  color: #333;
}

.dt-panneau__aide {
  margin: 4px 0 0;
  color: #666;
  font-size: 12px;
}

/* Boutons de pagination réduits à un chevron : on leur rend une largeur
   régulière, sinon « « » et « 1 » n'ont pas la même emprise. */
#datatable_wrapper .dt-paging .dt-paging-button,
.dt-container .dt-paging .dt-paging-button {
  min-width: 2.4em;
  text-align: center;
}

/* Les chevrons sont agrandis, pas les numéros de page : à 14 px ils faisaient
   des cibles minuscules, alors qu'ils portent la navigation principale. */
#datatable_wrapper .dt-paging .dt-paging-button.first,
#datatable_wrapper .dt-paging .dt-paging-button.previous,
#datatable_wrapper .dt-paging .dt-paging-button.next,
#datatable_wrapper .dt-paging .dt-paging-button.last,
.dt-container .dt-paging .dt-paging-button.first,
.dt-container .dt-paging .dt-paging-button.previous,
.dt-container .dt-paging .dt-paging-button.next,
.dt-container .dt-paging .dt-paging-button.last {
  font-size: 22px;
  /* Même hauteur que les numéros de page : sans cela les chevrons, plus courts,
     ne s'alignaient pas sur la rangée. */
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 36px;
  /* Le rembourrage vertical de DataTables s'ajoutait à la hauteur imposée :
     les chevrons dépassaient les numéros de dix pixels. */
  padding-top: 0;
  padding-bottom: 0;
  line-height: 1;
}

/* Indicateur affiché pendant qu'une requête de filtrage est en cours. Il se
   pose PAR-DESSUS le tableau, à sa place visuelle : sans lui, les anciennes
   lignes restaient affichées et rien ne signalait le travail en cours. */
.dt-container .dt-processing,
#datatable_wrapper .dt-processing {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 20;
  display: flex;
  align-items: center;
  gap: 10px;
  width: auto;
  margin: 0;
  padding: 12px 20px;
  background: #fff;
  border: 1px solid #ccc;
  border-radius: 6px;
  box-shadow: 0 3px 14px rgba(0, 0, 0, 0.18);
  font-size: 14px;
  color: #333;
}

.dt-container .dt-processing::before,
#datatable_wrapper .dt-processing::before {
  content: '';
  width: 18px;
  height: 18px;
  flex: none;
  border: 2px solid #d5d8dc;
  border-top-color: #1a5c46;
  border-radius: 50%;
  animation: dt-tourne 0.8s linear infinite;
}

@keyframes dt-tourne {
  to { transform: rotate(360deg); }
}

@media (prefers-reduced-motion: reduce) {
  .dt-container .dt-processing::before,
  #datatable_wrapper .dt-processing::before { animation: none; }
}

/* Pas d'estompage des lignes pendant le calcul : DataTables laisse en
   permanence son élément .dt-processing dans le DOM et ne bascule qu'un style
   en ligne. « :has(.dt-processing) » correspondait donc tout le temps, et le
   tableau restait grisé en continu. L'indicateur au centre suffit à signaler
   le travail en cours. */
