/**
 * com_directus — Override DARK MODE (compatible JA Spark / T4)
 * ============================================================================
 * Ce fichier ne fait RIEN en light mode : chaque règle est scopée sous
 * `body.dark-active` (le hook dark de JA Spark). Sur un template sans ce hook,
 * le fichier est inerte.
 *
 * Il réutilise les tokens dark de JA Spark (définis sous body.dark-active dans
 * darkmode.css du template) :
 *   --dm-bg, --dm-surface, --dm-surface-2, --dm-border, --dm-text,
 *   --dm-heading, --dm-muted
 * et l'accent per-home --color-secondary (lime #b1e346) pour les interactions,
 * focus et boutons. Le texte sur l'accent reste sombre (--color-primary), comme
 * le veut la convention JA Spark (.bg-secondary garde une encre sombre).
 *
 * Stratégie : on corrige uniquement ce qui devient illisible sur fond sombre —
 * surfaces blanches, fonds doux, champs, boutons, titres/sourdines en encre
 * sombre, puces colorées trop claires, Tom Select. Pas de duplication : une
 * seule règle par rôle, avec une union de sélecteurs.
 * ============================================================================ */

/* ---------------------------------------------------------------------------
   0. Remap des variables --rn-* du composant -> palette dark.
      Corrige d'emblée tous les blocs « variable-driven » (frise, graphe) qui
      utilisent var(--rn-*). --rn-primary devient l'accent lime ; le texte
      porté PAR cet accent est repassé en sombre plus bas (boutons).
   --------------------------------------------------------------------------- */
body.dark-active {
    --rn-primary:       var(--color-secondary);
    --rn-primary-hover: var(--color-secondary);
    --rn-text:          var(--dm-text);
    --rn-text-muted:    var(--dm-muted);
    --rn-border:        var(--dm-border);
    --rn-bg-soft:       var(--dm-surface-2);
}

/* ---------------------------------------------------------------------------
   1. SURFACES — cartes & panneaux blancs -> surface sombre élevée.
   --------------------------------------------------------------------------- */
body.dark-active .rn-ad-oeuvre-card,
body.dark-active .rn-d-media-card,
body.dark-active .rn-auteur-card,
body.dark-active .rn-oeuvre-card,
body.dark-active .rn-evl-card,
body.dark-active .rn-org-card,
body.dark-active .rn-res-card,
body.dark-active .rn-ev-membre-card,
body.dark-active .rn-ev-oeuvre-card,
body.dark-active .rn-ev-media-card,
body.dark-active .rn-od-oeuvre-card,
body.dark-active .rn-od-membre-card,
body.dark-active .rn-od-media-card,
body.dark-active .rn-def-card,
body.dark-active .rn-tl-viewport,
body.dark-active .rn-tl-card,
body.dark-active .rn-tl-zoom,
body.dark-active .rn-gr-canvas,
body.dark-active .rn-gr-info,
body.dark-active .rn-gr-tool,
body.dark-active .rn-gr-fs-btn,
body.dark-active .rn-tl-fs-btn,
body.dark-active .rn-export > summary,
body.dark-active .rn-export-menu,
body.dark-active .rn-gr-fs-wrap:fullscreen,
body.dark-active .rn-gr-fs-wrap:-webkit-full-screen,
body.dark-active .rn-tl-fs-wrap:fullscreen,
body.dark-active .rn-tl-fs-wrap:-webkit-full-screen {
    background-color: var(--dm-surface);
    border-color: var(--dm-border);
    color: var(--dm-text);
}
/* Survol des cartes : ombre plus marquée sur fond noir */
body.dark-active .rn-auteur-card:hover,
body.dark-active .rn-oeuvre-card:hover,
body.dark-active .rn-evl-card:hover,
body.dark-active .rn-org-card:hover {
    box-shadow: 0 4px 18px rgba(0, 0, 0, .55);
}
/* La frise pose un dégradé clair en fond -> dégradé sombre */
body.dark-active .rn-tl-viewport {
    background: linear-gradient(to bottom, var(--dm-surface-2), var(--dm-surface));
}
/* Pastilles d'axe (bordure blanche autour des points) -> bordure surface */
body.dark-active .rn-tl-point {
    border-color: var(--dm-surface);
}

/* ---------------------------------------------------------------------------
   2. FONDS DOUX — panneaux de filtres, ancres de nav, placeholders, items.
   --------------------------------------------------------------------------- */
body.dark-active .rn-auteurs-filtres,
body.dark-active .rn-directus-filtres,
body.dark-active .rn-evl-filtres,
body.dark-active .rn-org-filtres,
body.dark-active .rn-res-filtres,
body.dark-active .rn-d-nav-sections a,
body.dark-active .rn-ev-nav a,
body.dark-active .rn-od-nav a,
body.dark-active .rn-ad-evenements li,
body.dark-active .rn-od-evenements li,
body.dark-active .rn-ad-photo-placeholder,
body.dark-active .rn-auteur-photo-placeholder,
body.dark-active .rn-ev-membre-placeholder,
body.dark-active .rn-od-membre-placeholder {
    background-color: var(--dm-surface-2);
    border-color: var(--dm-border);
    color: var(--dm-text);
}

/* ---------------------------------------------------------------------------
   3. CHAMPS de formulaire + Tom Select -> champ sombre, focus = accent lime.
   --------------------------------------------------------------------------- */
body.dark-active .rn-af-group input,
body.dark-active .rn-af-group select,
body.dark-active .rn-cit-fgroup input,
body.dark-active .rn-cit-fgroup select,
body.dark-active .rn-filtre-group input,
body.dark-active .rn-filtre-group select,
body.dark-active .rn-evl-fgroup input,
body.dark-active .rn-evl-fgroup select,
body.dark-active .rn-org-fgroup input,
body.dark-active .rn-org-fgroup select,
body.dark-active .rn-res-fgroup input,
body.dark-active .rn-res-fgroup select,
body.dark-active .rn-tl-fgroup input,
body.dark-active .rn-tl-fgroup select,
body.dark-active .rn-gr-fgroup input,
body.dark-active .rn-gr-fgroup select {
    background-color: var(--dm-surface-2);
    border-color: var(--dm-border);
    color: var(--dm-text);
}
body.dark-active .rn-af-group input:focus,
body.dark-active .rn-af-group select:focus,
body.dark-active .rn-cit-fgroup input:focus,
body.dark-active .rn-cit-fgroup select:focus,
body.dark-active .rn-filtre-group input:focus,
body.dark-active .rn-filtre-group select:focus,
body.dark-active .rn-evl-fgroup input:focus,
body.dark-active .rn-evl-fgroup select:focus,
body.dark-active .rn-org-fgroup input:focus,
body.dark-active .rn-org-fgroup select:focus,
body.dark-active .rn-res-fgroup input:focus,
body.dark-active .rn-res-fgroup select:focus,
body.dark-active .rn-tl-fgroup input:focus,
body.dark-active .rn-tl-fgroup select:focus,
body.dark-active .rn-gr-fgroup input:focus,
body.dark-active .rn-gr-fgroup select:focus {
    border-color: var(--color-secondary);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-secondary) 25%, transparent);
}
/* placeholder lisible */
body.dark-active .rn-af-group input::placeholder,
body.dark-active .rn-filtre-group input::placeholder,
body.dark-active .rn-cit-fgroup input::placeholder,
body.dark-active .rn-evl-fgroup input::placeholder,
body.dark-active .rn-org-fgroup input::placeholder,
body.dark-active .rn-res-fgroup input::placeholder {
    color: var(--dm-muted);
}

/* Tom Select (chargé en CDN, styling clair propre) -> thème sombre + focus lime */
body.dark-active .ts-control {
    background: var(--dm-surface-2) !important;
    border-color: var(--dm-border) !important;
    color: var(--dm-text) !important;
}
body.dark-active .ts-control input,
body.dark-active .ts-control .ts-input {
    color: var(--dm-text) !important;
}
body.dark-active .ts-wrapper.focus .ts-control {
    border-color: var(--color-secondary) !important;
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-secondary) 25%, transparent) !important;
}
body.dark-active .ts-dropdown {
    background: var(--dm-surface) !important;
    border-color: var(--dm-border) !important;
    color: var(--dm-text) !important;
    box-shadow: 0 8px 24px rgba(0, 0, 0, .55) !important;
}
body.dark-active .ts-dropdown .option,
body.dark-active .ts-dropdown .optgroup-header {
    color: var(--dm-text) !important;
    background: transparent !important;
}
body.dark-active .ts-dropdown .active {
    background: color-mix(in srgb, var(--color-secondary) 18%, var(--dm-surface)) !important;
    color: var(--dm-heading) !important;
}
/* « chips » des éléments sélectionnés (multiselect) -> teinte accent sombre */
body.dark-active .ts-control .item {
    background: color-mix(in srgb, var(--color-secondary) 16%, var(--dm-surface)) !important;
    color: var(--dm-heading) !important;
}
body.dark-active .ts-control .item .remove {
    border-left-color: color-mix(in srgb, var(--color-secondary) 35%, transparent) !important;
    color: var(--dm-text) !important;
}

/* ---------------------------------------------------------------------------
   4. BOUTONS & interactions accent -> fond lime, encre sombre (contraste).
      Couvre les boutons primaires (en dur #4f46e5) ET les survols qui virent
      à l'accent, ET les boutons var-driven (--rn-primary) de la frise/graphe.
   --------------------------------------------------------------------------- */
body.dark-active .rn-d-btn,
body.dark-active .rn-af-btn,
body.dark-active .rn-cit-btn,
body.dark-active .rn-btn-rechercher,
body.dark-active .rn-evl-btn,
body.dark-active .rn-org-btn,
body.dark-active .rn-res-btn,
body.dark-active .rn-res-btn-dl,
body.dark-active .rn-gr-btn,
body.dark-active .rn-d-btn:hover,
body.dark-active .rn-af-btn:hover,
body.dark-active .rn-cit-btn:hover,
body.dark-active .rn-btn-rechercher:hover,
body.dark-active .rn-evl-btn:hover,
body.dark-active .rn-org-btn:hover,
body.dark-active .rn-res-btn:hover,
body.dark-active .rn-res-btn-dl:hover,
body.dark-active .rn-badge-contenu:hover,
body.dark-active .rn-badge-compteur:hover,
body.dark-active .rn-d-nav-sections a:hover,
body.dark-active .rn-ev-nav a:hover,
body.dark-active .rn-od-nav a:hover,
body.dark-active .rn-org-badge:hover,
body.dark-active .rn-tl-zoom:hover,
body.dark-active .rn-gr-tool:hover,
body.dark-active .rn-gr-fs-btn:hover,
body.dark-active .rn-tl-fs-btn:hover {
    background-color: var(--color-secondary) !important;
    border-color: var(--color-secondary) !important;
    color: var(--color-primary) !important;
}

/* Boutons « reset » (contour) -> contour sombre lisible */
body.dark-active .rn-af-reset,
body.dark-active .rn-cit-reset,
body.dark-active .rn-btn-reset,
body.dark-active .rn-evl-reset,
body.dark-active .rn-org-reset,
body.dark-active .rn-res-reset,
body.dark-active .rn-tl-reset,
body.dark-active .rn-gr-reset {
    border-color: var(--dm-border);
    color: var(--dm-text);
}
body.dark-active .rn-btn-reset:hover {
    background: var(--dm-surface-2);
    color: var(--dm-heading);
}

/* ---------------------------------------------------------------------------
   5. TITRES — encre quasi-noire -> blanc.
   --------------------------------------------------------------------------- */
body.dark-active .rn-ad-nom,
body.dark-active .rn-ad-section h2,
body.dark-active .rn-ad-oeuvre-titre a,
body.dark-active .rn-ad-ev-lien,
body.dark-active .rn-d-titre,
body.dark-active .rn-d-section h2,
body.dark-active .rn-d-media-nom,
body.dark-active .rn-directus-auteurs h1,
body.dark-active .rn-a-count strong,
body.dark-active .rn-auteur-nom a,
body.dark-active .rn-directus-citations h1,
body.dark-active .rn-c-count strong,
body.dark-active .rn-oeuvre-titre,
body.dark-active .rn-oeuvre-titre-lien,
body.dark-active .rn-directus-evenements h1,
body.dark-active .rn-evl-count strong,
body.dark-active .rn-evl-card-titre a,
body.dark-active .rn-directus-organisations h1,
body.dark-active .rn-org-count strong,
body.dark-active .rn-org-nom a,
body.dark-active .rn-directus-ressources h1,
body.dark-active .rn-res-count strong,
body.dark-active .rn-res-titre,
body.dark-active .rn-ev-titre,
body.dark-active .rn-ev-section h2,
body.dark-active .rn-ev-oeuvre-titre a,
body.dark-active .rn-od-nom,
body.dark-active .rn-od-section h2,
body.dark-active .rn-od-oeuvre-titre a,
body.dark-active .rn-od-ev-lien,
body.dark-active .rn-export-item,
body.dark-active .rn-resultats-count strong,
body.dark-active .rn-directus-recherche h1,
body.dark-active .rn-graphe-page h1 {
    color: var(--dm-heading);
}
/* trait sous les titres de section */
body.dark-active .rn-ad-section h2,
body.dark-active .rn-d-section h2,
body.dark-active .rn-ev-section h2,
body.dark-active .rn-od-section h2,
body.dark-active .rn-d-header,
body.dark-active .rn-ad-header {
    border-color: var(--dm-border);
}

/* ---------------------------------------------------------------------------
   6. TEXTE courant — encre moyenne -> texte dark.
   --------------------------------------------------------------------------- */
body.dark-active .rn-ad-bio,
body.dark-active .rn-d-meta,
body.dark-active .rn-d-resume,
body.dark-active .rn-d-extrait-contenu,
body.dark-active .rn-auteur-bio,
body.dark-active .rn-oeuvre-meta-line,
body.dark-active .rn-oeuvre-resume,
body.dark-active .rn-evl-card-desc,
body.dark-active .rn-org-desc,
body.dark-active .rn-ev-desc,
body.dark-active .rn-ev-membre-nom,
body.dark-active .rn-od-desc,
body.dark-active .rn-od-membre-nom,
body.dark-active .rn-gr-info-desc {
    color: var(--dm-text);
}

/* ---------------------------------------------------------------------------
   7. SOURDINE — gris clairs -> muted lisible.
   --------------------------------------------------------------------------- */
body.dark-active .rn-ad-meta,
body.dark-active .rn-ad-stat,
body.dark-active .rn-ad-count,
body.dark-active .rn-ad-oeuvre-st,
body.dark-active .rn-ad-ev-date,
body.dark-active .rn-ad-ev-lieu,
body.dark-active .rn-ad-empty,
body.dark-active .rn-d-sous-titre,
body.dark-active .rn-d-meta-label,
body.dark-active .rn-d-count,
body.dark-active .rn-d-extrait-meta,
body.dark-active .rn-d-media-legende,
body.dark-active .rn-d-media-meta,
body.dark-active .rn-af-group label,
body.dark-active .rn-af-reset,
body.dark-active .rn-a-count,
body.dark-active .rn-auteur-meta,
body.dark-active .rn-tag-more,
body.dark-active .rn-a-empty,
body.dark-active .rn-cit-fgroup label,
body.dark-active .rn-cit-reset,
body.dark-active .rn-c-count,
body.dark-active .rn-citation-source,
body.dark-active .rn-citation-source-inconnue,
body.dark-active .rn-c-empty,
body.dark-active .rn-filtre-group label,
body.dark-active .rn-clear-btn,
body.dark-active .rn-periode-inputs span,
body.dark-active .rn-cit-periode-inputs span,
body.dark-active .rn-evl-periode-inputs span,
body.dark-active .rn-btn-reset,
body.dark-active .rn-resultats-count,
body.dark-active .rn-oeuvre-sous-titre,
body.dark-active .rn-label-meta,
body.dark-active .rn-directus-empty,
body.dark-active .rn-evl-fgroup label,
body.dark-active .rn-evl-reset,
body.dark-active .rn-evl-count,
body.dark-active .rn-evl-card-lieu,
body.dark-active .rn-evl-meta-int,
body.dark-active .rn-evl-link-int,
body.dark-active .rn-evl-empty,
body.dark-active .rn-org-fgroup label,
body.dark-active .rn-org-reset,
body.dark-active .rn-org-count,
body.dark-active .rn-org-pays,
body.dark-active .rn-org-empty,
body.dark-active .rn-res-intro,
body.dark-active .rn-res-fgroup label,
body.dark-active .rn-res-reset,
body.dark-active .rn-res-count,
body.dark-active .rn-res-legende,
body.dark-active .rn-res-meta,
body.dark-active .rn-res-empty,
body.dark-active .rn-ev-info-label,
body.dark-active .rn-ev-count,
body.dark-active .rn-ev-oeuvre-auteurs,
body.dark-active .rn-od-pays,
body.dark-active .rn-od-count,
body.dark-active .rn-od-oeuvre-auteurs,
body.dark-active .rn-od-ev-date,
body.dark-active .rn-od-ev-lieu,
body.dark-active .rn-od-empty,
body.dark-active .rn-tl-fgroup label,
body.dark-active .rn-tl-reset,
body.dark-active .rn-tl-count,
body.dark-active .rn-tl-hint,
body.dark-active .rn-tl-card-sous,
body.dark-active .rn-tl-empty,
body.dark-active .rn-gr-fgroup label,
body.dark-active .rn-gr-reset,
body.dark-active .rn-gr-empty,
body.dark-active .rn-gr-count {
    color: var(--dm-muted);
}

/* ---------------------------------------------------------------------------
   8. LIENS & accents texte (indigo en dur) -> accent lime.
   --------------------------------------------------------------------------- */
body.dark-active .rn-ad-retour,
body.dark-active .rn-ad-stat strong,
body.dark-active .rn-ad-site,
body.dark-active .rn-ad-oeuvre-titre a:hover,
body.dark-active .rn-ad-ev-lien:hover,
body.dark-active .rn-ad-ev-source,
body.dark-active .rn-d-retour,
body.dark-active .rn-d-meta a,
body.dark-active .rn-d-auteur-lien,
body.dark-active .rn-d-btn-ghost,
body.dark-active .rn-auteur-nom a:hover,
body.dark-active .rn-citation-source a,
body.dark-active .rn-oeuvre-titre-lien:hover,
body.dark-active .rn-btn-detail,
body.dark-active .rn-lien-filtre,
body.dark-active .rn-evl-card-titre a:hover,
body.dark-active .rn-org-nom a:hover,
body.dark-active .rn-org-lien-oeuvres,
body.dark-active .rn-res-contexte a,
body.dark-active .rn-res-btn-ghost,
body.dark-active .rn-ev-retour,
body.dark-active .rn-ev-oeuvre-titre a:hover,
body.dark-active .rn-ev-source a,
body.dark-active .rn-od-retour,
body.dark-active .rn-od-site,
body.dark-active .rn-od-oeuvre-titre a:hover,
body.dark-active .rn-od-ev-lien:hover,
body.dark-active .rn-od-ev-source,
body.dark-active .rn-export-item:hover {
    color: var(--color-secondary);
}

/* ---------------------------------------------------------------------------
   9. PUCES & BADGES colorés — fonds pâles -> teinte sombre de même famille,
      texte clair. (color-mix : la teinte d'origine fondue dans la surface.)
   --------------------------------------------------------------------------- */
/* Thématique (bleu) */
body.dark-active .rn-tag-thematique {
    background: color-mix(in srgb, #3b82f6 16%, var(--dm-surface));
    color: #93c5fd;
    border-color: color-mix(in srgb, #3b82f6 32%, transparent);
}
/* Tag (gris) */
body.dark-active .rn-tag-tag,
body.dark-active .rn-badge-compteur,
body.dark-active .rn-badge-contenu,
body.dark-active .rn-org-badge,
body.dark-active .rn-res-type,
body.dark-active .rn-tl-type {
    background: var(--dm-surface-2);
    color: var(--dm-text);
    border-color: var(--dm-border);
}
/* Organisme / affiliation / année (ambre) */
body.dark-active .rn-tag-organisme,
body.dark-active .rn-affiliation-chip,
body.dark-active .rn-badge-annee,
body.dark-active .rn-ev-org-chip {
    background: color-mix(in srgb, #f59e0b 16%, var(--dm-surface));
    color: #fcd34d;
    border-color: color-mix(in srgb, #f59e0b 30%, transparent);
}
/* Type d'œuvre (violet) */
body.dark-active .rn-badge-type {
    background: color-mix(in srgb, #8b5cf6 16%, var(--dm-surface));
    color: #c4b5fd;
}
/* Langue (vert) */
body.dark-active .rn-badge-langue {
    background: color-mix(in srgb, #10b981 16%, var(--dm-surface));
    color: #6ee7b7;
}
/* Type d'événement (indigo) */
body.dark-active .rn-ad-ev-type,
body.dark-active .rn-od-ev-type {
    background: color-mix(in srgb, var(--color-secondary) 14%, var(--dm-surface));
    color: var(--color-secondary);
}
/* Survol des puces cliquables (filtre) -> accent lime, encre sombre */
body.dark-active .rn-tag-thematique:hover,
body.dark-active .rn-tag-tag:hover {
    background: var(--color-secondary);
    color: var(--color-primary);
    border-color: var(--color-secondary);
}

/* ---------------------------------------------------------------------------
   10. CITATIONS & EXTRAITS — encarts ambre/lilas clairs -> surface sombre,
       on garde le filet d'accent à gauche.
   --------------------------------------------------------------------------- */
body.dark-active .rn-ad-citation,
body.dark-active .rn-d-citation,
body.dark-active .rn-citation-card,
body.dark-active .rn-d-extrait {
    background: var(--dm-surface);
}
body.dark-active .rn-ad-citation-texte,
body.dark-active .rn-d-citation-texte,
body.dark-active .rn-citation-texte {
    color: var(--dm-text);
}
body.dark-active .rn-ad-citation footer,
body.dark-active .rn-d-citation-meta,
body.dark-active .rn-citation-attribution cite,
body.dark-active .rn-cite-lien,
body.dark-active .rn-citation-date {
    color: #fcd34d;
}
body.dark-active .rn-ad-citation footer a,
body.dark-active .rn-citation-source a {
    color: var(--color-secondary);
}

/* ---------------------------------------------------------------------------
   11. NOTE INTERNE / ERREURS / AVERTISSEMENTS — on conserve la sémantique
       (rouge = erreur, ambre = avertissement) mais en version sombre lisible.
   --------------------------------------------------------------------------- */
body.dark-active .rn-d-note-interne {
    background: color-mix(in srgb, #a855f7 12%, var(--dm-surface));
    border-color: color-mix(in srgb, #a855f7 35%, transparent);
}
body.dark-active .rn-d-note-interne div {
    color: #e9d5ff;
}
body.dark-active .rn-ad-error,
body.dark-active .rn-d-error,
body.dark-active .rn-a-error,
body.dark-active .rn-c-error,
body.dark-active .rn-directus-error {
    background: color-mix(in srgb, #ef4444 16%, var(--dm-surface));
    border-color: color-mix(in srgb, #ef4444 38%, transparent);
    color: #fca5a5;
}
body.dark-active .rn-ad-warnings,
body.dark-active .rn-d-warnings {
    background: color-mix(in srgb, #f59e0b 14%, var(--dm-surface));
    border-color: color-mix(in srgb, #f59e0b 35%, transparent);
    color: #fcd34d;
}

/* ---------------------------------------------------------------------------
   12. DIVERS — séparateurs, badges de frise, légende graphe.
   --------------------------------------------------------------------------- */
body.dark-active .rn-oeuvre-footer {
    border-top-color: var(--dm-border);
}
body.dark-active .rn-tl-card-titre {
    color: var(--dm-heading);
}
body.dark-active .rn-gr-leg {
    color: var(--dm-muted);
}

/* Fond du graphe en mode sombre : couleur configurable en BO (Options > Graphe),
   repli sur la surface sombre du template. Bat le background inline du conteneur. */
body.dark-active .rn-gr-canvas {
    background: var(--rn-gr-bg-dark, var(--dm-surface)) !important;
}

/* ---------------------------------------------------------------------------
   13. CONCEPTS, DÉFINITIONS, CITATIONS — lisibilité des cartes en dark mode.
   --------------------------------------------------------------------------- */

/* Cartes (concepts + définitions partagent .rn-def-card) */
body.dark-active .rn-def-card,
body.dark-active .rn-concept-card {
    background: var(--dm-surface, #1e293b);
    border-color: var(--dm-border, #334155);
    color: var(--dm-text, #e2e8f0);
}
body.dark-active .rn-def-titre,
body.dark-active .rn-def-titre a {
    color: var(--dm-heading, #f1f5f9);
}
body.dark-active .rn-def-extrait {
    color: var(--dm-muted, #94a3b8);
}
body.dark-active .rn-def-intro,
body.dark-active .rn-c-count {
    color: var(--dm-muted, #94a3b8);
}

/* Grille / conteneur */
body.dark-active .rn-def-grid {
    border-color: var(--dm-border, #334155);
}

/* Détail concept / définition */
body.dark-active .rn-def-detail {
    color: var(--dm-text, #e2e8f0);
}
body.dark-active .rn-def-contenu {
    color: var(--dm-text, #e2e8f0);
}
body.dark-active .rn-detail-kicker {
    color: var(--dm-muted, #94a3b8);
}

/* Concept — boîte de définition liée */
body.dark-active .rn-concept-defbox {
    background: var(--dm-surface-2, #0f172a);
    border-color: var(--dm-border, #334155);
    color: var(--dm-text, #e2e8f0);
}

/* Citations — cartes */
body.dark-active .rn-citation-card {
    background: var(--dm-surface, #1e293b);
    border-color: var(--dm-border, #334155);
    color: var(--dm-text, #e2e8f0);
}
body.dark-active .rn-citation-texte {
    color: var(--dm-text, #e2e8f0);
}
body.dark-active .rn-citation-footer,
body.dark-active .rn-citation-attribution,
body.dark-active .rn-citation-attribution cite {
    color: var(--dm-muted, #94a3b8);
}
body.dark-active .rn-citation-source a,
body.dark-active .rn-citation-attribution a {
    color: var(--color-secondary, #b1e346);
}

/* Filtres (partagés entre citations, concepts, définitions) */
body.dark-active .rn-cit-filtres {
    background: var(--dm-surface, #1e293b);
    border-color: var(--dm-border, #334155);
}
body.dark-active .rn-cit-fgroup label {
    color: var(--dm-muted, #94a3b8);
}
body.dark-active .rn-cit-fgroup input,
body.dark-active .rn-cit-fgroup select {
    background: var(--dm-surface-2, #0f172a);
    border-color: var(--dm-border, #334155);
    color: var(--dm-text, #e2e8f0);
}

/* ============================================================
   Phase 2 — Compléments dark mode
   ============================================================ */

/* Focus-visible en dark mode : accent lime */
body.dark-active *:focus-visible {
    outline-color: var(--color-secondary, #b1e346);
}

/* Filtres actifs (chips) */
body.dark-active .rn-filtre-chip {
    background: color-mix(in srgb, var(--color-secondary, #b1e346) 15%, transparent);
    color: var(--color-secondary, #b1e346);
    border-color: color-mix(in srgb, var(--color-secondary, #b1e346) 30%, transparent);
}
body.dark-active .rn-filtre-chip:hover {
    background: color-mix(in srgb, var(--color-secondary, #b1e346) 25%, transparent);
}
body.dark-active .rn-filtre-chip-remove {
    background: color-mix(in srgb, var(--color-secondary, #b1e346) 30%, transparent);
    color: var(--color-secondary, #b1e346);
}
body.dark-active .rn-filtres-clear {
    color: var(--dm-muted, #94a3b8);
    border-color: var(--dm-border, #334155);
}
body.dark-active .rn-filtres-clear:hover {
    color: #f87171;
    border-color: #f87171;
}

/* Surbrillance recherche */
body.dark-active mark.rn-highlight {
    background: color-mix(in srgb, var(--color-secondary, #b1e346) 30%, transparent);
    color: var(--dm-text, #e2e8f0);
}

/* États vides */
body.dark-active .rn-directus-empty,
body.dark-active .rn-a-empty,
body.dark-active .rn-c-empty,
body.dark-active .rn-evl-empty,
body.dark-active .rn-org-empty,
body.dark-active .rn-res-empty,
body.dark-active .rn-def-empty {
    color: var(--dm-muted, #94a3b8);
}
body.dark-active .rn-empty-link {
    color: var(--color-secondary, #b1e346);
}

/* Carte citation : hover en dark */
body.dark-active .rn-citation-card:hover {
    box-shadow: 0 4px 16px rgba(0,0,0,.3);
}

/* Barre de navigation */
body.dark-active .rn-navbar {
    border-bottom-color: var(--dm-border, #334155);
}
body.dark-active .rn-navbar-link {
    color: var(--dm-muted, #94a3b8);
}
body.dark-active .rn-navbar-link:hover {
    color: var(--dm-text, #e2e8f0);
    border-bottom-color: var(--dm-border, #334155);
}
body.dark-active .rn-navbar-active {
    color: var(--color-secondary, #b1e346);
    border-bottom-color: var(--color-secondary, #b1e346);
}

/* Voir aussi */
body.dark-active .rn-see-also { border-top-color: var(--dm-border, #334155); }
body.dark-active .rn-see-also h2 { color: var(--dm-heading, #f1f5f9); }
body.dark-active .rn-see-also-link {
    background: var(--dm-surface, #1e293b);
    border-color: var(--dm-border, #334155);
    color: var(--dm-text, #e2e8f0);
}
body.dark-active .rn-see-also-link:hover {
    background: color-mix(in srgb, var(--color-secondary, #b1e346) 15%, transparent);
    border-color: var(--color-secondary, #b1e346);
    color: var(--color-secondary, #b1e346);
}

/* Export bibliographique */
body.dark-active .rn-biblio-btn {
    border-color: var(--color-secondary, #b1e346);
    background: var(--color-secondary, #b1e346);
    color: #0f172a;
}
body.dark-active .rn-biblio-btn-ghost {
    background: transparent;
    color: var(--color-secondary, #b1e346);
}
body.dark-active .rn-biblio-btn-ghost:hover:not(:disabled) {
    background: rgba(177, 227, 70, .1);
}
body.dark-active .rn-biblio-count-label { color: var(--dm-muted, #94a3b8); }
body.dark-active .rn-biblio-check { accent-color: var(--color-secondary, #b1e346); }

/* Bouton copier citation */
body.dark-active .rn-copy-btn {
    color: var(--dm-muted, #94a3b8);
    border-color: var(--dm-border, #334155);
}
body.dark-active .rn-copy-btn:hover {
    color: var(--color-secondary, #b1e346);
    border-color: var(--color-secondary, #b1e346);
    background: rgba(177, 227, 70, .08);
}
body.dark-active .rn-copy-btn.rn-copy-ok {
    color: #4ade80;
    border-color: #4ade80;
    background: rgba(74, 222, 128, .1);
}

/* Recherche globale */
body.dark-active .rn-directus-search h1 { color: var(--dm-heading, #f1f5f9); }
body.dark-active .rn-search-input {
    background: var(--dm-surface, #1e293b);
    border-color: var(--dm-border, #334155);
    color: var(--dm-text, #e2e8f0);
}
body.dark-active .rn-search-input:focus {
    border-color: var(--color-secondary, #b1e346);
    box-shadow: 0 0 0 3px rgba(177, 227, 70, .15);
}
body.dark-active .rn-search-submit {
    background: var(--color-secondary, #b1e346);
    color: #0f172a;
}
body.dark-active .rn-search-count { color: var(--dm-muted, #94a3b8); }
body.dark-active .rn-search-group-title { color: var(--dm-heading, #f1f5f9); }
body.dark-active .rn-search-group-count { color: var(--dm-muted, #94a3b8); }
body.dark-active .rn-search-result-link {
    background: var(--dm-surface, #1e293b);
    border-color: var(--dm-border, #334155);
    color: var(--dm-text, #e2e8f0);
}
body.dark-active a.rn-search-result-link:hover {
    background: color-mix(in srgb, var(--color-secondary, #b1e346) 10%, transparent);
    border-color: var(--color-secondary, #b1e346);
    box-shadow: 0 2px 8px rgba(0,0,0,.3);
}
body.dark-active .rn-search-result-snippet { color: var(--dm-muted, #94a3b8); }

/* Navbar search dark */
body.dark-active .rn-navbar-search-input {
    background: var(--dm-surface, #1e293b);
    border-color: var(--dm-border, #334155);
    color: var(--dm-text, #e2e8f0);
}
body.dark-active .rn-navbar-search-input:focus {
    border-color: var(--color-secondary, #b1e346);
}
body.dark-active .rn-navbar-search-input::placeholder {
    color: var(--dm-muted, #64748b);
}

/* Compare dark */
body.dark-active .rn-compare-card {
    background: var(--dm-surface, #1e293b);
    border-color: var(--dm-border, #334155);
}
body.dark-active .rn-compare-name { color: var(--color-secondary, #b1e346); }
body.dark-active .rn-compare-table th { color: var(--dm-muted, #94a3b8); border-color: var(--dm-border, #334155); }
body.dark-active .rn-compare-table td { border-color: var(--dm-border, #334155); color: var(--dm-text, #e2e8f0); }
body.dark-active .rn-compare-field select,
body.dark-active .rn-compare-field input {
    background: var(--dm-surface, #1e293b);
    border-color: var(--dm-border, #334155);
    color: var(--dm-text, #e2e8f0);
}
body.dark-active .rn-compare-relations summary { color: var(--color-secondary, #b1e346); }
body.dark-active .rn-compare-relations ul { color: var(--dm-muted, #94a3b8); }
