/**
 * com_directus — Feuille de style principale (Front-end)
 * ============================================================
 * Toutes les classes sont prefixees "rn-" pour eviter tout conflit
 * avec votre template Joomla.
 *
 * SURCHARGE (override) : copiez ce fichier dans votre template :
 *   templates/VOTRE_TEMPLATE/css/com_directus/directus.css
 * Joomla chargera votre version a la place de celle-ci.
 * ============================================================
 */

:root {
    --rn-primary: #4f46e5;
    --rn-primary-hover: #4338ca;
    --rn-text: #111827;
    --rn-text-muted: #6b7280;
    --rn-border: #e5e7eb;
    --rn-bg-soft: #f8f9fa;
    --rn-radius: 12px;
}

/* ============================================================
   ACCESSIBILITÉ — focus-visible (navigation clavier)
   ============================================================ */
*:focus-visible {
    outline: 2px solid var(--rn-primary);
    outline-offset: 2px;
}
a:focus-visible, button:focus-visible, select:focus-visible, input:focus-visible {
    outline: 2px solid var(--rn-primary);
    outline-offset: 2px;
    border-radius: 4px;
}

/* ===== auteur/default.php ===== */
.rn-auteur-detail{max-width:900px;margin:0 auto;padding:20px;font-family:system-ui,sans-serif;color:#1f2937}
.rn-ad-retour{color:#4f46e5;text-decoration:none;font-size:14px}
.rn-ad-retour:hover{text-decoration:underline}
.rn-ad-header{display:flex;gap:24px;align-items:center;margin:16px 0 24px;padding-bottom:24px;border-bottom:2px solid #e5e7eb}
.rn-ad-photo{flex-shrink:0}
.rn-ad-photo img{width:120px;height:120px;border-radius:50%;object-fit:cover}
.rn-ad-photo-placeholder{width:120px;height:120px;border-radius:50%;background:#f3f4f6;display:flex;align-items:center;justify-content:center;font-size:48px}
.rn-ad-nom{font-size:30px;font-weight:800;margin:0 0 6px;color:#111827}
.rn-ad-meta{display:flex;gap:14px;margin:0 0 10px;color:#6b7280;font-size:14px}
.rn-ad-stats{display:flex;gap:18px;margin-bottom:10px}
.rn-ad-stat{font-size:14px;color:#6b7280}
.rn-ad-stat strong{color:#4f46e5;font-size:18px}
.rn-ad-site{font-size:13px;color:#4f46e5;text-decoration:none}
.rn-ad-site:hover{text-decoration:underline}
.rn-ad-section{margin:28px 0}
.rn-ad-section h2{font-size:20px;font-weight:700;color:#111827;margin:0 0 16px;padding-bottom:8px;border-bottom:1px solid #e5e7eb}
.rn-ad-count{color:#9ca3af;font-weight:400;font-size:16px}
.rn-ad-bio{font-size:15px;line-height:1.7;color:#374151}
.rn-ad-nuage{display:flex;flex-wrap:wrap;gap:8px}
.rn-ad-affiliations{display:flex;flex-wrap:wrap;gap:8px}
.rn-affiliation-chip{display:inline-flex;align-items:center;padding:6px 16px;background:#fffbeb;color:#92400e;border:1px solid #fde68a;border-radius:20px;font-size:14px;font-weight:600;text-decoration:none}
.rn-affiliation-chip:hover{background:#fef3c7}
.rn-tag{display:inline-block;padding:4px 12px;border-radius:20px;font-size:13px;text-decoration:none}
.rn-tag-organisme{background:#fef3c7;color:#92400e;border:1px solid #fde68a}
.rn-tag-thematique{background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe}
.rn-tag-thematique:hover{background:#dbeafe}
.rn-tag-tag{background:#f3f4f6;color:#374151;border:1px solid #e5e7eb}
.rn-tag-tag:hover{background:#e5e7eb}
.rn-ad-oeuvres-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}
.rn-ad-oeuvre-card{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:16px}
.rn-ad-oeuvre-badges{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.rn-badge{display:inline-block;padding:2px 10px;border-radius:20px;font-size:11px;font-weight:600}
.rn-badge-type{background:#ede9fe;color:#5b21b6}
.rn-badge-annee{background:#fef3c7;color:#92400e}
.rn-ad-oeuvre-titre{font-size:16px;font-weight:700;margin:0 0 4px;line-height:1.3}
.rn-ad-oeuvre-titre a{color:#111827;text-decoration:none}
.rn-ad-oeuvre-titre a:hover{color:#4f46e5}
.rn-ad-oeuvre-st{font-size:13px;color:#6b7280;font-style:italic;margin:0 0 10px}
.rn-ad-oeuvre-contenus{display:flex;gap:6px;flex-wrap:wrap}
.rn-badge-contenu{display:inline-block;padding:3px 10px;background:#f9fafb;border:1px solid #e5e7eb;border-radius:16px;font-size:12px;font-weight:600;color:#374151;text-decoration:none}
.rn-badge-contenu:hover{background:#4f46e5;border-color:#4f46e5;color:#fff}
.rn-ad-citation{background:#fffbeb;border-left:4px solid #f59e0b;border-radius:0 10px 10px 0;padding:16px 20px;margin:0 0 12px}
.rn-ad-citation-texte{font-size:15px;line-height:1.6;font-style:italic;color:#451a03;margin:0 0 8px}
.rn-ad-citation-texte::before{content:"« "}
.rn-ad-citation-texte::after{content:" »"}
.rn-ad-citation footer{font-size:13px;color:#92400e}
.rn-ad-citation footer a{color:#b45309;font-weight:600;text-decoration:none}
.rn-ad-evenements{list-style:none;padding:0;margin:0}
.rn-ad-evenements li{padding:12px 16px;background:#f9fafb;border-radius:10px;margin-bottom:8px;font-size:14px}
.rn-ad-ev-main{display:flex;align-items:baseline;gap:10px;margin-bottom:6px}
.rn-ad-ev-date{font-size:12px;color:#9ca3af}
.rn-ad-ev-lien{color:#111827;text-decoration:none}
.rn-ad-ev-lien:hover{color:#4f46e5}
.rn-ad-ev-tags{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.rn-ad-ev-type{font-size:12px;background:#e0e7ff;color:#3730a3;padding:2px 8px;border-radius:12px}
.rn-ad-ev-lieu{font-size:13px;color:#6b7280}
.rn-ad-ev-source{font-size:12px;color:#4f46e5;text-decoration:none}
.rn-ad-ev-source:hover{text-decoration:underline}
.rn-ad-empty{text-align:center;color:#9ca3af;padding:32px}
.rn-ad-error{background:#fee2e2;color:#991b1b;border:1px solid #fca5a5;border-radius:8px;padding:16px}
.rn-ad-warnings{background:#fef3c7;color:#92400e;border:1px solid #fcd34d;border-radius:8px;padding:14px 18px;margin:16px 0;font-size:13px}
.rn-ad-warnings ul{margin:8px 0 0;padding-left:20px}

/* ===== detail/default.php ===== */
.rn-directus-detail{max-width:860px;margin:0 auto;padding:20px;font-family:system-ui,sans-serif;color:#1f2937}
.rn-d-retour{color:#4f46e5;text-decoration:none;font-size:14px}
.rn-d-retour:hover{text-decoration:underline}

/* Header */
.rn-d-header{margin:16px 0 8px;padding-bottom:20px;border-bottom:2px solid #e5e7eb}
.rn-d-badges{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.rn-badge{display:inline-block;padding:3px 12px;border-radius:20px;font-size:12px;font-weight:600}
.rn-badge-type{background:#ede9fe;color:#5b21b6}
.rn-badge-langue{background:#d1fae5;color:#065f46}
.rn-badge-annee{background:#fef3c7;color:#92400e}
.rn-d-titre{font-size:30px;font-weight:800;line-height:1.2;margin:0 0 6px;color:#111827}
.rn-d-sous-titre{font-size:17px;color:#6b7280;font-style:italic;margin:0 0 14px}
.rn-d-meta{font-size:14px;margin:4px 0;color:#374151}
.rn-d-meta-label{color:#6b7280;margin-right:4px}
.rn-d-meta a{color:#4f46e5;word-break:break-all}
.rn-d-auteur-lien{color:#4f46e5;text-decoration:none;font-weight:600}
.rn-d-auteur-lien:hover{text-decoration:underline}
.rn-d-taxonomie{display:flex;flex-wrap:wrap;gap:6px;margin:14px 0 0}
.rn-tag{display:inline-block;padding:3px 11px;border-radius:20px;font-size:12px}
.rn-tag-thematique{background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe}
.rn-tag-tag{background:#f3f4f6;color:#374151;border:1px solid #e5e7eb}

/* Nav ancres */
.rn-d-nav-sections{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}
.rn-d-nav-sections a{display:inline-block;padding:7px 16px;background:#f9fafb;border:1px solid #e5e7eb;border-radius:24px;font-size:13px;font-weight:600;color:#374151;text-decoration:none;transition:all .15s}
.rn-d-nav-sections a:hover{background:#4f46e5;border-color:#4f46e5;color:#fff}

/* Sections */
.rn-d-section{margin:32px 0;scroll-margin-top:80px}
.rn-d-section h2{font-size:20px;font-weight:700;color:#111827;margin:0 0 16px;padding-bottom:8px;border-bottom:1px solid #e5e7eb}
.rn-d-count{color:#9ca3af;font-weight:400;font-size:16px}
.rn-d-resume{font-size:15px;line-height:1.7;color:#374151}

/* Extraits */
.rn-d-extrait{background:#fafafa;border-left:3px solid #8b5cf6;border-radius:0 10px 10px 0;padding:16px 18px;margin-bottom:14px}
.rn-d-extrait-contenu{font-size:14px;line-height:1.7;color:#374151}
.rn-d-extrait-meta{display:flex;gap:14px;margin-top:10px;font-size:12px;color:#9ca3af}

/* Citations */
.rn-d-citation{background:#fffbeb;border-left:3px solid #f59e0b;border-radius:0 10px 10px 0;padding:18px 20px;margin:0 0 14px}
.rn-d-citation-texte{font-size:16px;line-height:1.6;font-style:italic;color:#451a03;margin:0 0 10px}
.rn-d-citation-texte::before{content:"« "}
.rn-d-citation-texte::after{content:" »"}
.rn-d-citation-meta{font-size:13px;color:#92400e}
.rn-d-citation-meta cite{font-weight:600;font-style:normal}

/* Medias */
.rn-d-medias-grid{display:grid;gap:12px}
.rn-d-media-card{display:flex;align-items:center;gap:14px;background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:14px 16px}
.rn-d-media-icone{font-size:28px;flex-shrink:0}
.rn-d-media-infos{flex:1;min-width:0}
.rn-d-media-nom{font-size:14px;font-weight:600;color:#111827;margin:0 0 2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rn-d-media-legende{font-size:13px;color:#6b7280;margin:0 0 4px}
.rn-d-media-meta{display:flex;gap:10px;font-size:12px;color:#9ca3af;margin:0}
.rn-d-media-actions{display:flex;gap:8px;flex-shrink:0}
.rn-d-btn{display:inline-block;padding:7px 14px;background:#4f46e5;color:#fff;border-radius:8px;font-size:13px;font-weight:600;text-decoration:none;transition:background .15s}
.rn-d-btn:hover{background:#4338ca;color:#fff}
.rn-d-btn-ghost{background:transparent;color:#4f46e5;border:1px solid #c7d2fe}
.rn-d-btn-ghost:hover{background:#eef2ff;color:#4f46e5}

/* Note interne */
.rn-d-note-interne{background:#fdf4ff;border:1px dashed #d8b4fe;border-radius:12px;padding:18px 20px}
.rn-d-note-interne h2{border:none;margin-bottom:8px;padding-bottom:0;font-size:16px}
.rn-d-note-interne div{font-size:14px;color:#581c87;line-height:1.6}

/* Erreur */
.rn-d-error{background:#fee2e2;color:#991b1b;border:1px solid #fca5a5;border-radius:8px;padding:16px}
.rn-d-warnings{background:#fef3c7;color:#92400e;border:1px solid #fcd34d;border-radius:8px;padding:14px 18px;margin:16px 0;font-size:13px}
.rn-d-warnings ul{margin:8px 0 0;padding-left:20px}

/* Surbrillance section ciblee par ancre */
.rn-d-section:target{animation:d-highlight 1.6s ease-out}
@keyframes d-highlight{0%{background:#fef9c3}100%{background:transparent}}

/* ===== directus/auteur.php ===== */
.rn-directus-auteurs{margin:0 auto;padding:20px;font-family:system-ui,sans-serif}
.rn-directus-auteurs h1{font-size:26px;color:#111827;margin-bottom:16px}
.rn-auteurs-filtres{background:#f8f9fa;border:1px solid #e9ecef;border-radius:12px;padding:18px;margin-bottom:24px}
.rn-af-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin-bottom:14px}
.rn-af-search{grid-column:1/-1}
.rn-af-group label{display:block;font-size:11px;font-weight:600;color:#6c757d;text-transform:uppercase;letter-spacing:.05em;margin-bottom:5px}
.rn-af-group input,.rn-af-group select{width:100%;padding:8px 12px;border:1px solid #dee2e6;border-radius:8px;font-size:14px;background:#fff}
.rn-af-group input:focus,.rn-af-group select:focus{outline:none;border-color:#4f46e5;box-shadow:0 0 0 3px rgba(79,70,229,.15)}
.rn-af-actions{display:flex;gap:10px}
.rn-af-btn{padding:9px 22px;background:#4f46e5;color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer}
.rn-af-btn:hover{background:#4338ca}
.rn-af-reset{padding:9px 16px;color:#6c757d;border:1px solid #dee2e6;border-radius:8px;font-size:14px;text-decoration:none}
.rn-a-count{color:#6b7280;font-size:14px;margin-bottom:18px}
.rn-a-count strong{color:#111827;font-size:17px}
.rn-auteurs-grille{display:grid;gap:16px}
.rn-auteur-bio{font-size:13px;color:#4b5563;line-height:1.55;margin:6px 0 8px}
.rn-auteur-card{display:flex;gap:16px;background:#fff;border:1px solid #e5e7eb;border-radius:14px;padding:18px;transition:box-shadow .2s ease,transform .2s ease}
.rn-auteur-card:hover{box-shadow:0 4px 16px rgba(0,0,0,.08);transform:translateY(-2px)}
.rn-auteur-photo{flex-shrink:0}
.rn-auteur-photo img{width:80px;height:80px;border-radius:50%;object-fit:cover}
.rn-auteur-photo-placeholder{width:80px;height:80px;border-radius:50%;background:#f3f4f6;display:flex;align-items:center;justify-content:center;font-size:32px}
.rn-auteur-infos{flex:1;min-width:0}
.rn-auteur-nom{font-size:18px;font-weight:700;margin:0 0 4px}
.rn-auteur-nom a{color:#111827;text-decoration:none}
.rn-auteur-nom a:hover{color:#4f46e5}
.rn-auteur-meta{display:flex;gap:12px;font-size:13px;color:#9ca3af;margin:0 0 8px}
.rn-auteur-badges{margin-bottom:8px}
.rn-auteur-badges{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.rn-badge-compteur{display:inline-block;padding:3px 11px;background:#f9fafb;border:1px solid #e5e7eb;border-radius:16px;font-size:12px;font-weight:600;color:#374151;text-decoration:none}
.rn-badge-compteur:hover{background:#4f46e5;border-color:#4f46e5;color:#fff}
.rn-auteur-thems{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.rn-tag{display:inline-block;padding:3px 10px;border-radius:16px;font-size:12px;text-decoration:none}
.rn-tag-thematique{background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe}
.rn-tag-thematique:hover{background:#dbeafe}
.rn-tag-more{font-size:12px;color:#9ca3af;font-weight:600}
.rn-a-error{background:#fee2e2;color:#991b1b;border:1px solid #fca5a5;border-radius:8px;padding:16px}
.rn-a-empty{text-align:center;color:#9ca3af;padding:40px}

/* ===== directus/citation.php ===== */
.rn-cit-filtres{background:#f8f9fa;border:1px solid #e9ecef;border-radius:12px;padding:18px;margin-bottom:24px}
.rn-cit-fgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px;margin-bottom:14px}
.rn-cit-search{grid-column:1/-1}
.rn-cit-periode{grid-column:span 2}
.rn-cit-fgroup label{display:block;font-size:11px;font-weight:600;color:#6c757d;text-transform:uppercase;letter-spacing:.05em;margin-bottom:5px}
.rn-cit-fgroup input,.rn-cit-fgroup select{width:100%;padding:8px 12px;border:1px solid #dee2e6;border-radius:8px;font-size:14px;background:#fff}
.rn-cit-fgroup input:focus,.rn-cit-fgroup select:focus{outline:none;border-color:#4f46e5;box-shadow:0 0 0 3px rgba(79,70,229,.15)}
.rn-cit-periode-inputs{display:flex;align-items:center;gap:8px}
.rn-cit-periode-inputs input{width:85px}
.rn-cit-periode-inputs span{color:#adb5bd}
.rn-cit-factions{display:flex;gap:10px}
.rn-cit-btn{padding:9px 22px;background:#4f46e5;color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer}
.rn-cit-btn:hover{background:#4338ca}
.rn-cit-reset{padding:9px 16px;color:#6c757d;border:1px solid #dee2e6;border-radius:8px;font-size:14px;text-decoration:none}
.rn-directus-citations{margin:0 auto;padding:20px;font-family:system-ui,sans-serif}
.rn-directus-citations h1{font-size:26px;color:#111827;margin-bottom:8px}
.rn-c-count{color:#6b7280;font-size:14px;margin-bottom:20px}
.rn-c-count strong{color:#111827;font-size:17px}
.rn-citations-liste{display:grid;gap:18px}
.rn-citation-card{background:#fffbeb;border-left:4px solid #f59e0b;border-radius:0 12px 12px 0;padding:22px 24px;margin:0;transition:box-shadow .2s ease,transform .2s ease}
.rn-citation-card:hover{box-shadow:0 4px 16px rgba(0,0,0,.08);transform:translateY(-2px)}
.rn-citation-texte{font-size:17px;line-height:1.65;font-style:italic;color:#451a03;margin:0 0 14px}
.rn-citation-texte::before{content:"« "}
.rn-citation-texte::after{content:" »"}
.rn-citation-footer{font-size:13px}
.rn-citation-attribution{display:flex;align-items:baseline;gap:10px;margin-bottom:4px}
.rn-citation-attribution cite{font-weight:700;font-style:normal;color:#92400e;font-size:14px}
.rn-cite-lien{color:#92400e;text-decoration:none}
.rn-cite-lien:hover{text-decoration:underline}
.rn-citation-date{color:#b45309}
.rn-citation-source{color:#78716c;margin:4px 0}
.rn-citation-source a{color:#4f46e5;text-decoration:none;font-weight:600}
.rn-citation-source a:hover{text-decoration:underline}
.rn-citation-source-inconnue{font-style:italic;color:#a8a29e}
.rn-citation-taxonomie{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.rn-tag{display:inline-block;padding:2px 10px;border-radius:20px;font-size:11px}
.rn-tag-thematique{background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe}
.rn-tag-tag{background:#f3f4f6;color:#374151;border:1px solid #e5e7eb}
.rn-c-error{background:#fee2e2;color:#991b1b;border:1px solid #fca5a5;border-radius:8px;padding:16px}
.rn-c-empty{text-align:center;color:#9ca3af;padding:40px}

/* ===== directus/default.php ===== */
.rn-directus-recherche{margin:0 auto;padding:20px;font-family:system-ui,sans-serif}
.rn-directus-filtres{background:#f8f9fa;border:1px solid #e9ecef;border-radius:12px;padding:20px;margin-bottom:28px}
.rn-filtres-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px;margin-bottom:16px}
.rn-filtre-search{grid-column:1/-1}
.rn-filtre-periode{grid-column:span 2}
.rn-filtre-group label{display:block;font-size:11px;font-weight:600;color:#6c757d;text-transform:uppercase;letter-spacing:.05em;margin-bottom:5px}
.rn-filtre-group input,.rn-filtre-group select{width:100%;padding:8px 12px;border:1px solid #dee2e6;border-radius:8px;font-size:14px;background:#fff;color:#212529}
.rn-filtre-group input:focus,.rn-filtre-group select:focus{outline:none;border-color:#4f46e5;box-shadow:0 0 0 3px rgba(79,70,229,.15)}
.rn-search-wrap{position:relative}
.rn-search-wrap input{padding-right:32px}
.rn-clear-btn{position:absolute;right:10px;top:50%;transform:translateY(-50%);color:#adb5bd;text-decoration:none;font-size:18px;line-height:1}
.rn-clear-btn:hover{color:#495057}
.rn-periode-inputs{display:flex;align-items:center;gap:8px}
.rn-periode-inputs input{width:85px}
.rn-periode-inputs span{color:#adb5bd}
.rn-filtres-actions{display:flex;gap:10px;align-items:center}
.rn-btn-rechercher{padding:9px 22px;background:#4f46e5;color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer}
.rn-btn-rechercher:hover{background:#4338ca}
.rn-btn-reset{padding:9px 16px;background:transparent;color:#6c757d;border:1px solid #dee2e6;border-radius:8px;font-size:14px;text-decoration:none}
.rn-btn-reset:hover{background:#f1f3f5;color:#495057}
.rn-resultats-header{margin-bottom:16px}
.rn-resultats-count{color:#6c757d;font-size:14px;margin:0}
.rn-resultats-count strong{color:#212529;font-size:18px}
.rn-oeuvres-liste{display:grid;gap:16px}
.rn-oeuvre-card{background:#fff;border:1px solid #e9ecef;border-radius:12px;padding:20px;transition:box-shadow .2s ease,transform .2s ease}
.rn-oeuvre-top{display:flex;gap:16px;align-items:flex-start;margin-bottom:12px}
.rn-oeuvre-cover{flex-shrink:0;width:30%}
.rn-oeuvre-cover img{width:100%;height:auto;border-radius:6px;box-shadow:0 2px 8px rgba(0,0,0,.12)}
.rn-oeuvre-header{flex:1;min-width:0}
.rn-oeuvre-bottom{}
.rn-d-cover{float:right;margin:0 0 16px 24px;max-width:200px}
.rn-d-cover img{width:100%;height:auto;border-radius:8px;box-shadow:0 4px 16px rgba(0,0,0,.12)}
.rn-oeuvre-card:hover{box-shadow:0 4px 16px rgba(0,0,0,.08);transform:translateY(-2px)}
.rn-oeuvre-meta-top{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.rn-badge{display:inline-block;padding:2px 10px;border-radius:20px;font-size:11px;font-weight:600;letter-spacing:.03em}
.rn-badge-type{background:#ede9fe;color:#5b21b6}
.rn-badge-langue{background:#d1fae5;color:#065f46}
.rn-badge-annee{background:#fef3c7;color:#92400e}
.rn-oeuvre-titre{font-size:18px;font-weight:700;color:#111827;margin:0 0 4px;line-height:1.3}
.rn-oeuvre-titre-lien{color:#111827;text-decoration:none}
.rn-oeuvre-titre-lien:hover{color:#4f46e5}
.rn-oeuvre-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:14px;padding-top:12px;border-top:1px solid #f3f4f6}
.rn-oeuvre-contenus{display:flex;gap:6px;flex-wrap:wrap}
.rn-badge-contenu{display:inline-block;padding:4px 12px;background:#f9fafb;border:1px solid #e5e7eb;border-radius:20px;font-size:12px;font-weight:600;color:#374151;text-decoration:none;transition:all .15s}
.rn-badge-contenu:hover{background:#4f46e5;border-color:#4f46e5;color:#fff}
.rn-btn-detail{display:inline-block;font-size:13px;font-weight:600;color:#4f46e5;text-decoration:none}
.rn-btn-detail:hover{text-decoration:underline}
.rn-oeuvre-sous-titre{font-size:14px;color:#6b7280;margin:0 0 10px;font-style:italic}
.rn-oeuvre-meta-line{font-size:13px;color:#374151;margin:6px 0}
.rn-label-meta{font-weight:600;color:#6b7280;margin-right:4px}
.rn-lien-filtre{color:#4f46e5;text-decoration:none}
.rn-lien-filtre:hover{text-decoration:underline}
.rn-oeuvre-resume{font-size:14px;color:#4b5563;line-height:1.6;margin:10px 0}
.rn-oeuvre-taxonomie{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.rn-tag{display:inline-block;padding:3px 10px;border-radius:20px;font-size:12px;text-decoration:none;cursor:pointer}
.rn-tag-thematique{background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe}
.rn-tag-thematique:hover{background:#dbeafe}
.rn-tag-tag{background:#f3f4f6;color:#374151;border:1px solid #e5e7eb}
.rn-tag-tag:hover{background:#e5e7eb}
.rn-directus-error{background:#fee2e2;color:#991b1b;border:1px solid #fca5a5;border-radius:8px;padding:16px}
.rn-directus-empty{text-align:center;padding:48px 20px;color:#6b7280}

/* ===== directus/evenement.php ===== */
.rn-directus-evenements{margin:0 auto;padding:20px;font-family:system-ui,sans-serif}
.rn-directus-evenements h1{font-size:26px;color:#111827;margin-bottom:16px}
.rn-evl-filtres{background:#f8f9fa;border:1px solid #e9ecef;border-radius:12px;padding:18px;margin-bottom:24px}
.rn-evl-fgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px;margin-bottom:14px}
.rn-evl-search{grid-column:1/-1}
.rn-evl-periode{grid-column:span 2}
.rn-evl-fgroup label{display:block;font-size:11px;font-weight:600;color:#6c757d;text-transform:uppercase;letter-spacing:.05em;margin-bottom:5px}
.rn-evl-fgroup input,.rn-evl-fgroup select{width:100%;padding:8px 12px;border:1px solid #dee2e6;border-radius:8px;font-size:14px;background:#fff}
.rn-evl-fgroup input:focus,.rn-evl-fgroup select:focus{outline:none;border-color:#4f46e5;box-shadow:0 0 0 3px rgba(79,70,229,.15)}
.rn-evl-periode-inputs{display:flex;align-items:center;gap:8px}
.rn-evl-periode-inputs input{width:85px}
.rn-evl-periode-inputs span{color:#adb5bd}
.rn-evl-factions{display:flex;gap:10px}
.rn-evl-btn{padding:9px 22px;background:#4f46e5;color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer}
.rn-evl-btn:hover{background:#4338ca}
.rn-evl-reset{padding:9px 16px;color:#6c757d;border:1px solid #dee2e6;border-radius:8px;font-size:14px;text-decoration:none}
.rn-evl-count{color:#6b7280;font-size:14px;margin-bottom:18px}
.rn-evl-count strong{color:#111827;font-size:17px}
.rn-evl-liste{display:grid;gap:18px}
.rn-evl-card{display:flex;gap:18px;background:#fff;border:1px solid #e5e7eb;border-radius:14px;overflow:hidden;transition:box-shadow .2s ease,transform .2s ease}
.rn-evl-card:hover{box-shadow:0 4px 16px rgba(0,0,0,.08);transform:translateY(-2px)}
.rn-evl-card-img{flex-shrink:0;width:200px;display:block}
.rn-evl-card-img img{width:100%;height:100%;object-fit:cover}
.rn-evl-card-body{flex:1;padding:18px;min-width:0}
.rn-evl-card-badges{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.rn-badge{display:inline-block;padding:2px 10px;border-radius:20px;font-size:11px;font-weight:600}
.rn-badge-type{background:#e0e7ff;color:#3730a3}
.rn-badge-date{background:#fef3c7;color:#92400e}
.rn-evl-card-titre{font-size:18px;font-weight:700;margin:0 0 6px;line-height:1.3}
.rn-evl-card-titre a{color:#111827;text-decoration:none}
.rn-evl-card-titre a:hover{color:#4f46e5}
.rn-evl-card-lieu{font-size:13px;color:#6b7280;margin:0 0 8px}
.rn-evl-card-desc{font-size:14px;color:#4b5563;line-height:1.55;margin:0 0 10px}
.rn-evl-card-meta{display:flex;gap:14px;flex-wrap:wrap;font-size:12px}
.rn-evl-meta-org{color:#92400e}
.rn-evl-meta-int{color:#6b7280}
.rn-evl-link-org{color:#92400e;text-decoration:none;font-weight:600}
.rn-evl-link-org:hover{text-decoration:underline}
.rn-evl-link-int{color:#6b7280;text-decoration:none;font-weight:600}
.rn-evl-link-int:hover{color:#4f46e5}
.rn-evl-error{background:#fee2e2;color:#991b1b;border:1px solid #fca5a5;border-radius:8px;padding:16px}
.rn-evl-empty{text-align:center;color:#9ca3af;padding:40px}
@media(max-width:600px){.rn-evl-card{flex-direction:column}.rn-evl-card-img{width:100%;height:180px}}

/* ===== directus/organisation.php ===== */
.rn-directus-organisations{margin:0 auto;padding:20px;font-family:system-ui,sans-serif}
.rn-directus-organisations h1{font-size:26px;color:#111827;margin-bottom:16px}
/* Filtres */
.rn-org-filtres{background:#f8f9fa;border:1px solid #e9ecef;border-radius:12px;padding:18px;margin-bottom:24px}
.rn-org-filtres-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin-bottom:14px}
.rn-org-search{grid-column:1/-1}
.rn-org-fgroup label{display:block;font-size:11px;font-weight:600;color:#6c757d;text-transform:uppercase;letter-spacing:.05em;margin-bottom:5px}
.rn-org-fgroup input,.rn-org-fgroup select{width:100%;padding:8px 12px;border:1px solid #dee2e6;border-radius:8px;font-size:14px;background:#fff}
.rn-org-fgroup input:focus,.rn-org-fgroup select:focus{outline:none;border-color:#4f46e5;box-shadow:0 0 0 3px rgba(79,70,229,.15)}
.rn-org-factions{display:flex;gap:10px}
.rn-org-btn{padding:9px 22px;background:#4f46e5;color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer}
.rn-org-btn:hover{background:#4338ca}
.rn-org-reset{padding:9px 16px;color:#6c757d;border:1px solid #dee2e6;border-radius:8px;font-size:14px;text-decoration:none}
.rn-org-count{color:#6b7280;font-size:14px;margin-bottom:18px}
.rn-org-count strong{color:#111827;font-size:17px}
/* Grille */
.rn-org-grille{display:grid;gap:16px}
.rn-org-card{background:#fff;border:1px solid #e5e7eb;border-radius:14px;padding:18px;display:flex;flex-direction:column;transition:box-shadow .2s ease,transform .2s ease}
.rn-org-card:hover{box-shadow:0 4px 16px rgba(0,0,0,.08);transform:translateY(-2px)}
.rn-org-card-head{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.rn-org-nom{font-size:17px;font-weight:700;margin:0}
.rn-org-nom a{color:#111827;text-decoration:none}
.rn-org-nom a:hover{color:#4f46e5}
.rn-org-compteurs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.rn-org-badge{display:inline-block;padding:3px 10px;background:#f9fafb;border:1px solid #e5e7eb;border-radius:16px;font-size:12px;font-weight:600;color:#374151;text-decoration:none}
.rn-org-badge:hover{background:#4f46e5;border-color:#4f46e5;color:#fff}
.rn-org-sigle{font-size:13px;font-weight:600;color:#92400e;background:#fef3c7;padding:1px 8px;border-radius:10px}
.rn-org-meta{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.rn-org-type{font-size:12px;background:#ede9fe;color:#5b21b6;padding:2px 10px;border-radius:12px;font-weight:600}
.rn-org-pays{font-size:13px;color:#6b7280}
.rn-org-desc{font-size:13px;color:#4b5563;line-height:1.55;margin:0 0 14px;flex:1}
.rn-org-actions{display:flex;gap:12px;align-items:center;justify-content:space-between;margin-top:auto;padding-top:10px;border-top:1px solid #f3f4f6}
.rn-org-lien-oeuvres{font-size:13px;font-weight:600;color:#4f46e5;text-decoration:none}
.rn-org-lien-oeuvres:hover{text-decoration:underline}
.rn-org-lien-site{font-size:13px;color:#6b7280;text-decoration:none}
.rn-org-lien-site:hover{color:#4f46e5}
.rn-org-error{background:#fee2e2;color:#991b1b;border:1px solid #fca5a5;border-radius:8px;padding:16px}
.rn-org-empty{text-align:center;color:#9ca3af;padding:40px}

/* ===== directus/ressources.php ===== */
.rn-directus-ressources{margin:0 auto;padding:20px;font-family:system-ui,sans-serif}
.rn-directus-ressources h1{font-size:26px;color:#111827;margin-bottom:6px}
.rn-res-intro{color:#6b7280;font-size:14px;margin-bottom:20px}
.rn-res-filtres{background:#f8f9fa;border:1px solid #e9ecef;border-radius:12px;padding:18px;margin-bottom:24px}
.rn-res-fgrid{display:grid;grid-template-columns:2fr 1fr;gap:12px;margin-bottom:14px}
.rn-res-fgroup label{display:block;font-size:11px;font-weight:600;color:#6c757d;text-transform:uppercase;letter-spacing:.05em;margin-bottom:5px}
.rn-res-fgroup input,.rn-res-fgroup select{width:100%;padding:8px 12px;border:1px solid #dee2e6;border-radius:8px;font-size:14px;background:#fff}
.rn-res-fgroup input:focus,.rn-res-fgroup select:focus{outline:none;border-color:#4f46e5;box-shadow:0 0 0 3px rgba(79,70,229,.15)}
.rn-res-factions{display:flex;gap:10px}
.rn-res-btn{padding:9px 22px;background:#4f46e5;color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer}
.rn-res-btn:hover{background:#4338ca}
.rn-res-reset{padding:9px 16px;color:#6c757d;border:1px solid #dee2e6;border-radius:8px;font-size:14px;text-decoration:none}
.rn-res-count{color:#6b7280;font-size:14px;margin-bottom:18px}
.rn-res-count strong{color:#111827;font-size:17px}
.rn-res-liste{display:grid;gap:12px}
.rn-res-card{display:flex;align-items:center;gap:16px;background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:16px 18px;transition:box-shadow .2s ease,transform .2s ease}
.rn-res-card:hover{box-shadow:0 4px 12px rgba(0,0,0,.06);transform:translateY(-2px)}
.rn-res-card:hover{box-shadow:0 4px 12px rgba(0,0,0,.06)}
.rn-res-icone{font-size:32px;flex-shrink:0}
.rn-res-infos{flex:1;min-width:0}
.rn-res-titre{font-size:15px;font-weight:700;color:#111827;margin:0 0 2px}
.rn-res-legende{font-size:13px;color:#6b7280;margin:0 0 4px}
.rn-res-contexte{font-size:13px;margin:0 0 6px}
.rn-res-contexte a{color:#4f46e5;text-decoration:none;font-weight:600}
.rn-res-contexte a:hover{text-decoration:underline}
.rn-res-meta{display:flex;gap:10px;font-size:12px;color:#9ca3af}
.rn-res-type{background:#f3f4f6;color:#374151;padding:1px 8px;border-radius:10px;font-weight:600}
.rn-res-actions{display:flex;gap:8px;flex-shrink:0}
.rn-res-btn-ghost{padding:7px 14px;background:transparent;color:#4f46e5;border:1px solid #c7d2fe;border-radius:8px;font-size:13px;font-weight:600;text-decoration:none}
.rn-res-btn-ghost:hover{background:#eef2ff}
.rn-res-btn-dl{padding:7px 14px;background:#4f46e5;color:#fff;border-radius:8px;font-size:13px;font-weight:600;text-decoration:none}
.rn-res-btn-dl:hover{background:#4338ca;color:#fff}
.rn-res-error{background:#fee2e2;color:#991b1b;border:1px solid #fca5a5;border-radius:8px;padding:16px}
.rn-res-empty{text-align:center;color:#9ca3af;padding:40px}
@media(max-width:600px){.rn-res-card{flex-wrap:wrap}.rn-res-actions{width:100%}.rn-res-fgrid{grid-template-columns:1fr}}

/* ===== evenement/default.php ===== */
.rn-ev-detail{max-width:900px;margin:0 auto;padding:20px;font-family:system-ui,sans-serif;color:#1f2937}
.rn-ev-retour{color:#4f46e5;text-decoration:none;font-size:14px}
.rn-ev-retour:hover{text-decoration:underline}
.rn-ev-affiche{margin:16px 0;border-radius:14px;overflow:hidden;max-height:400px}
.rn-ev-affiche img{width:100%;height:auto;display:block;object-fit:cover}
.rn-ev-header{margin:16px 0 8px;padding-bottom:20px;border-bottom:2px solid #e5e7eb}
.rn-ev-badges{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.rn-badge{display:inline-block;padding:3px 12px;border-radius:20px;font-size:12px;font-weight:600}
.rn-badge-type{background:#e0e7ff;color:#3730a3}
.rn-badge-date{background:#fef3c7;color:#92400e}
.rn-badge-annee{background:#fef3c7;color:#92400e}
.rn-ev-titre{font-size:28px;font-weight:800;line-height:1.2;margin:0 0 16px;color:#111827}
.rn-ev-infos-cles{display:flex;flex-direction:column;gap:8px;margin-bottom:8px}
.rn-ev-info{display:flex;gap:12px;font-size:14px}
.rn-ev-info-label{font-weight:600;color:#6b7280;min-width:90px}
.rn-ev-nav{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}
.rn-ev-nav a{display:inline-block;padding:7px 16px;background:#f9fafb;border:1px solid #e5e7eb;border-radius:24px;font-size:13px;font-weight:600;color:#374151;text-decoration:none;transition:all .15s}
.rn-ev-nav a:hover{background:#4f46e5;border-color:#4f46e5;color:#fff}
.rn-ev-section{margin:28px 0;scroll-margin-top:80px}
.rn-ev-section h2{font-size:20px;font-weight:700;color:#111827;margin:0 0 16px;padding-bottom:8px;border-bottom:1px solid #e5e7eb}
.rn-ev-count{color:#9ca3af;font-weight:400;font-size:16px}
.rn-ev-desc{font-size:15px;line-height:1.7;color:#374151}
.rn-ev-membres-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
.rn-ev-membre-card{display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px;background:#fff;border:1px solid #e5e7eb;border-radius:12px;text-decoration:none;transition:box-shadow .2s}
.rn-ev-membre-card:hover{box-shadow:0 4px 12px rgba(0,0,0,.08)}
.rn-ev-membre-photo{width:64px;height:64px;border-radius:50%;object-fit:cover}
.rn-ev-membre-placeholder{background:#f3f4f6;display:flex;align-items:center;justify-content:center;font-size:26px}
.rn-ev-membre-nom{font-size:13px;font-weight:600;color:#374151;text-align:center}
.rn-ev-organismes{display:flex;flex-wrap:wrap;gap:8px}
.rn-ev-org-chip{display:inline-flex;align-items:center;padding:6px 16px;background:#fffbeb;color:#92400e;border:1px solid #fde68a;border-radius:20px;font-size:14px;font-weight:600;text-decoration:none}
.rn-ev-org-chip:hover{background:#fef3c7}
.rn-ev-oeuvres-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}
.rn-ev-oeuvre-card{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:16px}
.rn-ev-oeuvre-badges{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.rn-ev-oeuvre-titre{font-size:16px;font-weight:700;margin:0 0 4px;line-height:1.3}
.rn-ev-oeuvre-titre a{color:#111827;text-decoration:none}
.rn-ev-oeuvre-titre a:hover{color:#4f46e5}
.rn-ev-oeuvre-auteurs{font-size:13px;color:#6b7280;margin:0}
.rn-ev-galerie{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px}
.rn-ev-galerie-item{display:block;border-radius:10px;overflow:hidden;aspect-ratio:4/3}
.rn-ev-galerie-item img{width:100%;height:100%;object-fit:cover;transition:transform .2s}
.rn-ev-galerie-item:hover img{transform:scale(1.05)}
.rn-ev-source{font-size:14px}
.rn-ev-source a{color:#4f46e5;text-decoration:none}
.rn-ev-source a:hover{text-decoration:underline}
.rn-ev-error{background:#fee2e2;color:#991b1b;border:1px solid #fca5a5;border-radius:8px;padding:16px}
.rn-ev-warnings{background:#fef3c7;color:#92400e;border:1px solid #fcd34d;border-radius:8px;padding:12px 16px;margin:16px 0;font-size:13px;display:flex;gap:10px;flex-wrap:wrap}

/* ===== organisme/default.php ===== */
.rn-org-detail{max-width:900px;margin:0 auto;padding:20px;font-family:system-ui,sans-serif;color:#1f2937}
.rn-od-retour{color:#4f46e5;text-decoration:none;font-size:14px}
.rn-od-retour:hover{text-decoration:underline}
.rn-od-header{margin:16px 0 8px;padding-bottom:20px;border-bottom:2px solid #e5e7eb}
.rn-od-nom{font-size:28px;font-weight:800;margin:0 0 12px;color:#111827;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.rn-od-sigle{font-size:15px;font-weight:600;color:#92400e;background:#fef3c7;padding:3px 12px;border-radius:14px}
.rn-od-meta{display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.rn-od-type{font-size:13px;background:#ede9fe;color:#5b21b6;padding:3px 12px;border-radius:14px;font-weight:600}
.rn-od-pays{font-size:14px;color:#6b7280}
.rn-od-site{font-size:13px;color:#4f46e5;text-decoration:none}
.rn-od-site:hover{text-decoration:underline}
.rn-od-nav{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}
.rn-od-nav a{display:inline-block;padding:7px 16px;background:#f9fafb;border:1px solid #e5e7eb;border-radius:24px;font-size:13px;font-weight:600;color:#374151;text-decoration:none;transition:all .15s}
.rn-od-nav a:hover{background:#4f46e5;border-color:#4f46e5;color:#fff}
.rn-od-section{margin:28px 0;scroll-margin-top:80px}
.rn-od-section h2{font-size:20px;font-weight:700;color:#111827;margin:0 0 16px;padding-bottom:8px;border-bottom:1px solid #e5e7eb}
.rn-od-count{color:#9ca3af;font-weight:400;font-size:16px}
.rn-od-desc{font-size:15px;line-height:1.7;color:#374151}
.rn-od-oeuvres-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}
.rn-od-oeuvre-card{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:16px}
.rn-od-oeuvre-badges{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.rn-badge{display:inline-block;padding:2px 10px;border-radius:20px;font-size:11px;font-weight:600}
.rn-badge-type{background:#ede9fe;color:#5b21b6}
.rn-badge-annee{background:#fef3c7;color:#92400e}
.rn-od-oeuvre-titre{font-size:16px;font-weight:700;margin:0 0 4px;line-height:1.3}
.rn-od-oeuvre-titre a{color:#111827;text-decoration:none}
.rn-od-oeuvre-titre a:hover{color:#4f46e5}
.rn-od-oeuvre-auteurs{font-size:13px;color:#6b7280;margin:0 0 10px}
.rn-od-oeuvre-contenus{display:flex;gap:6px;flex-wrap:wrap}
.rn-badge-contenu{display:inline-block;padding:3px 10px;background:#f9fafb;border:1px solid #e5e7eb;border-radius:16px;font-size:12px;font-weight:600;color:#374151;text-decoration:none}
.rn-badge-contenu:hover{background:#4f46e5;border-color:#4f46e5;color:#fff}
.rn-od-evenements{list-style:none;padding:0;margin:0}
.rn-od-evenements li{padding:12px 16px;background:#f9fafb;border-radius:10px;margin-bottom:8px;font-size:14px}
.rn-od-ev-main{display:flex;align-items:baseline;gap:10px;margin-bottom:6px}
.rn-od-ev-date{font-size:12px;color:#9ca3af}
.rn-od-ev-lien{color:#111827;text-decoration:none}
.rn-od-ev-lien:hover{color:#4f46e5}
.rn-od-ev-tags{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.rn-od-ev-type{font-size:12px;background:#e0e7ff;color:#3730a3;padding:2px 8px;border-radius:12px}
.rn-od-ev-lieu{font-size:13px;color:#6b7280}
.rn-od-ev-source{font-size:12px;color:#4f46e5;text-decoration:none}
.rn-od-membres-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
.rn-od-membre-card{display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px;background:#fff;border:1px solid #e5e7eb;border-radius:12px;text-decoration:none;transition:box-shadow .2s}
.rn-od-membre-card:hover{box-shadow:0 4px 12px rgba(0,0,0,.08)}
.rn-od-membre-photo{width:64px;height:64px;border-radius:50%;object-fit:cover}
.rn-od-membre-placeholder{background:#f3f4f6;display:flex;align-items:center;justify-content:center;font-size:26px}
.rn-od-membre-nom{font-size:13px;font-weight:600;color:#374151;text-align:center}
.rn-od-empty{text-align:center;color:#9ca3af;padding:32px}
.rn-od-error{background:#fee2e2;color:#991b1b;border:1px solid #fca5a5;border-radius:8px;padding:16px}
.rn-od-warnings{background:#fef3c7;color:#92400e;border:1px solid #fcd34d;border-radius:8px;padding:14px 18px;margin:16px 0;font-size:13px}
.rn-od-warnings ul{margin:8px 0 0;padding-left:20px}

/* ===== Sections Documents (detail Organisme & Evenement) ===== */
.rn-od-medias, .rn-ev-medias { display: grid; gap: 12px; }
.rn-od-media-card, .rn-ev-media-card { display: flex; align-items: center; gap: 14px; background: #fff; border: 1px solid var(--rn-border); border-radius: 12px; padding: 14px 16px; }
.rn-od-media-icone, .rn-ev-media-icone { font-size: 28px; flex-shrink: 0; }
.rn-od-media-infos, .rn-ev-media-infos { flex: 1; min-width: 0; }
.rn-od-media-nom, .rn-ev-media-nom { font-size: 14px; font-weight: 700; color: var(--rn-text); margin: 0 0 2px; }
.rn-od-media-leg, .rn-ev-media-leg { font-size: 13px; color: var(--rn-text-muted); margin: 0 0 4px; }
.rn-od-media-taille, .rn-ev-media-taille { font-size: 12px; color: #9ca3af; }
.rn-od-media-actions, .rn-ev-media-actions { display: flex; gap: 8px; flex-shrink: 0; }
.rn-od-btn-ghost, .rn-ev-btn-ghost { padding: 7px 14px; background: transparent; color: var(--rn-primary); border: 1px solid #c7d2fe; border-radius: 8px; font-size: 13px; font-weight: 600; text-decoration: none; }
.rn-od-btn-ghost:hover, .rn-ev-btn-ghost:hover { background: #eef2ff; }
.rn-od-btn-dl, .rn-ev-btn-dl { padding: 7px 14px; background: var(--rn-primary); color: #fff; border-radius: 8px; font-size: 13px; font-weight: 600; text-decoration: none; }
.rn-od-btn-dl:hover, .rn-ev-btn-dl:hover { background: var(--rn-primary-hover); color: #fff; }

/* ============================================================ */
/* TIMELINE HORIZONTALE                                         */
/* ============================================================ */
.rn-timeline-page { margin: 0 auto; padding: 20px; font-family: system-ui, sans-serif; }
.rn-timeline-page h1 { font-size: 26px; color: var(--rn-text); margin-bottom: 16px; }
.rn-tl-filtres { background: var(--rn-bg-soft); border: 1px solid var(--rn-border); border-radius: var(--rn-radius); padding: 18px; margin-bottom: 18px; }
.rn-tl-fgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 12px; margin-bottom: 14px; }
.rn-tl-search { grid-column: 1/-1; }
.rn-tl-periode { grid-column: span 2; }
.rn-tl-fgroup label { display: block; font-size: 11px; font-weight: 600; color: #6c757d; text-transform: uppercase; letter-spacing: .05em; margin-bottom: 5px; }
.rn-tl-fgroup input, .rn-tl-fgroup select { width: 100%; padding: 8px 12px; border: 1px solid #dee2e6; border-radius: 8px; font-size: 14px; background: #fff; }
.rn-tl-periode-inputs { display: flex; align-items: center; gap: 8px; }
.rn-tl-periode-inputs input { width: 85px; }
.rn-tl-factions { display: flex; gap: 10px; }
.rn-tl-btn { padding: 9px 22px; background: var(--rn-primary); color: #fff; border: none; border-radius: 8px; font-size: 14px; font-weight: 600; cursor: pointer; }
.rn-tl-btn:hover { background: var(--rn-primary-hover); }
.rn-tl-reset { padding: 9px 16px; color: #6c757d; border: 1px solid #dee2e6; border-radius: 8px; font-size: 14px; text-decoration: none; }
.rn-tl-legende { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 16px; }
.rn-tl-type { display: inline-flex; align-items: center; gap: 6px; padding: 6px 14px; border: 1px solid var(--rn-border); border-radius: 20px; background: #fff; font-size: 13px; font-weight: 600; color: #9ca3af; cursor: pointer; transition: all .15s; }
.rn-tl-type-on { color: var(--rn-text); border-color: #c7d2fe; background: #f5f3ff; }
.rn-tl-dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }
.rn-tl-count { color: #6b7280; font-size: 14px; margin-bottom: 12px; }
.rn-tl-count strong { color: var(--rn-text); font-size: 17px; }
.rn-tl-controls { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
.rn-tl-zoom { width: 36px; height: 36px; border: 1px solid var(--rn-border); background: #fff; border-radius: 8px; font-size: 20px; font-weight: 600; color: var(--rn-text); cursor: pointer; line-height: 1; }
.rn-tl-zoom:hover { background: var(--rn-primary); color: #fff; border-color: var(--rn-primary); }
.rn-tl-hint { font-size: 12px; color: #9ca3af; margin-left: 8px; }
.rn-tl-viewport { position: relative; overflow-x: auto; overflow-y: hidden; border: 1px solid var(--rn-border); border-radius: var(--rn-radius); background: linear-gradient(to bottom, #fafafa, #fff); cursor: grab; min-height: 320px; }
.rn-tl-viewport.rn-tl-grabbing { cursor: grabbing; }
.rn-tl-track { position: relative; min-height: 320px; }
.rn-tl-axis { position: absolute; top: 40px; left: 0; right: 0; height: 2px; background: var(--rn-border); }
.rn-tl-tick { position: absolute; top: 10px; transform: translateX(-50%); }
.rn-tl-tick-label { font-size: 24px; font-weight: 200; color: #ea4d3e; background: transparent; padding: 0 4px; line-height: 0px; }
.rn-tl-tick::after { content: ''; position: absolute; top: 12px; left: 50%; width: 1px; height: 8px; background: var(--rn-border); }
.rn-tl-point { position: absolute; top: 36px; width: 10px; height: 10px; border-radius: 50%; transform: translateX(-50%); border: 2px solid #fff; z-index: 2; }
.rn-tl-card { position: absolute; width: 200px; background: #fff; border: 1px solid var(--rn-border); border-left: 3px solid; border-radius: 0 10px 10px 0; padding: 10px 12px; transform: translateX(-10px); box-shadow: 0 2px 8px rgba(0,0,0,.05); }
.rn-tl-card-link { text-decoration: none; color: inherit; display: block; }
.rn-tl-card-link:hover .rn-tl-card-titre { color: var(--rn-primary); }
.rn-tl-card-badge { display: inline-block; font-size: 10px; font-weight: 600; padding: 1px 8px; border-radius: 10px; margin-bottom: 4px; }
.rn-tl-card-titre { font-size: 13px; font-weight: 700; color: var(--rn-text); margin: 0 0 2px; line-height: 1.3; }
.rn-tl-card-sous { font-size: 12px; color: #6b7280; margin: 0; }
.rn-tl-empty { text-align: center; color: #9ca3af; padding: 40px; }

/* ============================================================ */
/* GRAPHE RELATIONNEL (Cytoscape)                              */
/* ============================================================ */
.rn-graphe-page { margin: 0 auto; padding: 20px; font-family: system-ui, sans-serif; }
.rn-graphe-page h1 { font-size: 26px; color: var(--rn-text); margin-bottom: 6px; }
.rn-gr-intro { color: var(--rn-text-muted); font-size: 14px; margin-bottom: 20px; }
.rn-gr-filtres { background: var(--rn-bg-soft); border: 1px solid var(--rn-border); border-radius: var(--rn-radius); padding: 16px; margin-bottom: 16px; }
.rn-gr-fgrid { display: flex; gap: 14px; align-items: flex-end; flex-wrap: wrap; }
.rn-gr-fgroup label { display: block; font-size: 11px; font-weight: 600; color: #6c757d; text-transform: uppercase; letter-spacing: .05em; margin-bottom: 5px; }
.rn-gr-fgroup select, .rn-gr-fgroup input { padding: 8px 12px; border: 1px solid #dee2e6; border-radius: 8px; font-size: 14px; background: #fff; }
.rn-gr-periode-inputs { display: flex; align-items: center; gap: 8px; }
.rn-gr-periode-inputs input { width: 90px; }
.rn-gr-factions { display: flex; gap: 10px; }
.rn-gr-btn { padding: 9px 22px; background: var(--rn-primary); color: #fff; border: none; border-radius: 8px; font-size: 14px; font-weight: 600; cursor: pointer; }
.rn-gr-btn:hover { background: var(--rn-primary-hover); }
.rn-gr-reset { padding: 9px 16px; color: #6c757d; border: 1px solid #dee2e6; border-radius: 8px; font-size: 14px; text-decoration: none; display: inline-flex; align-items: center; }
.rn-gr-toolbar { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; flex-wrap: wrap; gap: 10px; }
.rn-gr-count { font-size: 14px; color: var(--rn-text-muted); }
.rn-gr-count strong { color: var(--rn-text); }
.rn-gr-tools { display: flex; gap: 8px; }
.rn-gr-tool { padding: 6px 12px; border: 1px solid var(--rn-border); background: #fff; border-radius: 8px; font-size: 13px; font-weight: 600; color: var(--rn-text); cursor: pointer; }
.rn-gr-tool:hover { background: var(--rn-primary); color: #fff; border-color: var(--rn-primary); }
.rn-gr-legende { display: flex; gap: 14px; flex-wrap: wrap; margin-bottom: 12px; }
.rn-gr-leg { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--rn-text-muted); }
.rn-gr-dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }
#rn-cy { width: 100%; height: 600px; border: 1px solid var(--rn-border); border-radius: var(--rn-radius); background: radial-gradient(circle at 50% 50%, #fff, #f8fafc); position: relative; }
.rn-gr-info { position: relative; margin-top: 14px; background: #fff; border: 1px solid var(--rn-border); border-left: 4px solid var(--rn-primary); border-radius: 10px; padding: 16px 40px 16px 18px; }
.rn-gr-info-close { position: absolute; top: 10px; right: 12px; border: none; background: none; font-size: 22px; color: #9ca3af; cursor: pointer; line-height: 1; }
.rn-gr-info-close:hover { color: var(--rn-text); }
.rn-gr-info-type { display: inline-block; font-size: 11px; font-weight: 600; padding: 2px 10px; border-radius: 10px; margin-bottom: 6px; text-transform: capitalize; }
.rn-gr-info-titre { font-size: 16px; font-weight: 700; color: var(--rn-text); margin: 0 0 8px; }
.rn-gr-info-desc { font-size: 14px; color: #374151; line-height: 1.6; margin: 4px 0 0; }
.rn-gr-info-link { font-size: 13px; font-weight: 600; color: var(--rn-primary); text-decoration: none; }
.rn-gr-info-link:hover { text-decoration: underline; }
.rn-gr-val-pos { color: #16a34a; font-weight: 700; font-size: 13px; margin-left: 4px; }
.rn-gr-val-neg { color: #dc2626; font-weight: 700; font-size: 13px; margin-left: 4px; }
.rn-gr-pol-pos { color: #16a34a; font-weight: 600; font-size: 12px; }
.rn-gr-pol-neg { color: #dc2626; font-weight: 600; font-size: 12px; }
.rn-gr-error { background: #fee2e2; color: #991b1b; border: 1px solid #fca5a5; border-radius: 8px; padding: 16px; }
.rn-gr-empty { text-align: center; color: #9ca3af; padding: 48px 20px; }

/* ============================================================ */
/* GRAPHE RELATIONNEL (Cytoscape)                              */
/* ============================================================ */
.rn-graphe-page { margin: 0 auto; padding: 20px; font-family: system-ui, sans-serif; }
.rn-graphe-page h1 { font-size: 26px; color: var(--rn-text); margin-bottom: 6px; }
.rn-gr-intro { color: var(--rn-text-muted); font-size: 14px; margin-bottom: 18px; }
.rn-gr-filtres { background: var(--rn-bg-soft); border: 1px solid var(--rn-border); border-radius: var(--rn-radius); padding: 16px; margin-bottom: 16px; }
.rn-gr-fgrid { display: flex; gap: 14px; align-items: flex-end; flex-wrap: wrap; }
.rn-gr-fgroup label { display: block; font-size: 11px; font-weight: 600; color: #6c757d; text-transform: uppercase; letter-spacing: .05em; margin-bottom: 5px; }
.rn-gr-fgroup input, .rn-gr-fgroup select { width: 100%; padding: 8px 12px; border: 1px solid #dee2e6; border-radius: 8px; font-size: 14px; background: #fff; }
.rn-gr-periode-inputs { display: flex; align-items: center; gap: 8px; }
.rn-gr-periode-inputs input { width: 90px; }
.rn-gr-factions { display: flex; gap: 10px; }
.rn-gr-btn { padding: 9px 22px; background: var(--rn-primary); color: #fff; border: none; border-radius: 8px; font-size: 14px; font-weight: 600; cursor: pointer; }
.rn-gr-btn:hover { background: var(--rn-primary-hover); }
.rn-gr-reset { padding: 9px 16px; color: #6c757d; border: 1px solid #dee2e6; border-radius: 8px; font-size: 14px; text-decoration: none; }
.rn-gr-toolbar { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; flex-wrap: wrap; gap: 10px; }
.rn-gr-count { font-size: 14px; color: #6b7280; }
.rn-gr-count strong { color: var(--rn-text); }
.rn-gr-tools { display: flex; gap: 8px; }
.rn-gr-tool { padding: 7px 14px; border: 1px solid var(--rn-border); background: #fff; border-radius: 8px; font-size: 13px; font-weight: 600; color: var(--rn-text); cursor: pointer; }
.rn-gr-tool:hover { background: var(--rn-primary); color: #fff; border-color: var(--rn-primary); }
.rn-gr-stage { position: relative; }
.rn-gr-canvas { width: 100%; height: 600px; border: 1px solid var(--rn-border); border-radius: var(--rn-radius); background: linear-gradient(to bottom, #fafafa, #fff); }
.rn-gr-info { position: absolute; top: 16px; right: 16px; width: 260px; background: #fff; border: 1px solid var(--rn-border); border-radius: 12px; padding: 16px; box-shadow: 0 4px 20px rgba(0,0,0,.12); }
.rn-gr-info-hidden { display: none; }
.rn-gr-info-close { position: absolute; top: 8px; right: 10px; border: none; background: none; font-size: 20px; color: #9ca3af; cursor: pointer; line-height: 1; }
.rn-gr-info-type { display: inline-block; font-size: 11px; font-weight: 600; padding: 2px 10px; border-radius: 10px; margin-bottom: 8px; }
.rn-gr-info-titre { font-size: 15px; font-weight: 700; color: var(--rn-text); margin: 0 0 10px; line-height: 1.3; }
.rn-gr-info-desc { font-size: 13px; color: #4b5563; line-height: 1.5; margin: 6px 0 0; }
.rn-gr-info-link { display: inline-block; font-size: 13px; font-weight: 600; color: var(--rn-primary); text-decoration: none; }
.rn-gr-info-link:hover { text-decoration: underline; }
.rn-gr-legende { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 14px; padding: 12px 16px; background: var(--rn-bg-soft); border-radius: 8px; }
.rn-gr-leg { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: #4b5563; }
.rn-gr-dot { width: 12px; height: 12px; border-radius: 50%; display: inline-block; }
.rn-gr-error { background: #fee2e2; color: #991b1b; border: 1px solid #fca5a5; border-radius: 8px; padding: 16px; }
.rn-gr-empty { text-align: center; color: #9ca3af; padding: 40px; }
.rn-gr-empty code { background: #eef2ff; color: var(--rn-primary); padding: 2px 6px; border-radius: 5px; }

/* ============================================================
   Définitions & Concepts (v1.18.0)
   ============================================================ */
.rn-def-intro { color: #64748b; margin: -.4rem 0 1.2rem; font-size: .95rem; }

.rn-def-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 1rem;
    margin-top: 1rem;
}
.rn-def-card {
    border: 1px solid #e2e8f0;
    border-left: 4px solid #0891B2;     /* definition = cyan */
    border-radius: 8px;
    padding: 1rem 1.1rem;
    background: #fff;
    transition: box-shadow .15s ease, transform .15s ease;
}
.rn-def-card:hover { box-shadow: 0 4px 14px rgba(15,23,42,.08); transform: translateY(-2px); }
.rn-concept-card { border-left-color: #DC2626; }   /* concept = rouge */

.rn-def-titre { margin: 0 0 .5rem; font-size: 1.1rem; line-height: 1.3; }
.rn-def-titre a { text-decoration: none; color: #1e293b; }
.rn-def-titre a:hover { text-decoration: underline; }
.rn-def-extrait { margin: 0; color: #475569; font-size: .92rem; line-height: 1.5; }

.rn-concept-defliee {
    margin: .75rem 0 0; padding-top: .6rem; border-top: 1px dashed #e2e8f0;
    font-size: .85rem; color: #64748b;
}
.rn-concept-defliee a { color: #0891B2; font-weight: 600; text-decoration: none; }
.rn-concept-defliee a:hover { text-decoration: underline; }

/* Détail */
.rn-def-detail { max-width: 760px; }
.rn-retour { display: inline-block; color: #534AB7; text-decoration: none; font-size: .9rem; }
.rn-retour:hover { text-decoration: underline; }
.rn-retour-haut { margin-bottom: 1rem; }
.rn-detail-header { margin-bottom: 1.4rem; }
.rn-detail-kicker {
    display: inline-block; text-transform: uppercase; letter-spacing: .08em;
    font-size: .72rem; font-weight: 700; color: #0891B2; margin-bottom: .3rem;
}
.rn-def-detail h1 { margin: 0; line-height: 1.2; }
.rn-def-contenu { font-size: 1.02rem; line-height: 1.7; color: #334155; }
.rn-def-sources, .rn-def-concepts { margin-top: 2rem; }
.rn-def-sources h2, .rn-def-concepts h2 { font-size: 1.15rem; border-bottom: 2px solid #f1f5f9; padding-bottom: .4rem; }

.rn-concept-defbox {
    margin-top: 2rem; padding: 1.1rem 1.25rem;
    background: #ecfeff; border: 1px solid #a5f3fc; border-radius: 10px;
}
.rn-concept-defbox h2 { margin: 0 0 .5rem; font-size: 1.05rem; color: #0e7490; }
.rn-concept-defbox h3 { margin: 0 0 .4rem; font-size: 1.05rem; }
.rn-concept-defbox h3 a { color: #0e7490; text-decoration: none; }
.rn-concept-defbox h3 a:hover { text-decoration: underline; }

/* Légende filtrante du graphe (v1.18.3) */
.rn-gr-leg-filter {
    cursor: pointer;
    user-select: none;
    opacity: 0.35;
    transition: opacity .2s ease, transform .1s ease;
    border-radius: 20px;
    padding: 3px 8px 3px 4px;
    border: 1px solid transparent;
}
.rn-gr-leg-filter.rn-gr-leg-active {
    opacity: 1;
    border-color: currentColor;
}
.rn-gr-leg-filter:hover { transform: scale(1.06); }
.rn-gr-leg-hint {
    font-size: .72rem;
    color: #94a3b8;
    font-style: italic;
    margin-left: 6px;
    align-self: center;
}

/* Légende filtrante v1.18.4 — sans bordure, avec compteur */
.rn-gr-leg-filter {
    cursor: pointer;
    user-select: none;
    opacity: 0.32;
    transition: opacity .2s ease, transform .1s ease;
    border-radius: 20px;
    padding: 3px 8px 3px 4px;
    border: none !important;
}
.rn-gr-leg-filter.rn-gr-leg-active { opacity: 1; }
.rn-gr-leg-filter:hover { transform: scale(1.06); opacity: .85; }
.rn-gr-leg-count {
    display: inline-block;
    font-size: .68rem;
    font-weight: 700;
    color: var(--leg-color, #64748b);
    margin-left: 4px;
    opacity: .75;
}

/* v1.18.5 — couleurs entités via CSS custom properties (source: DirectusHelper::ENTITY_COLORS) */
.rn-gr-leg-count { color: inherit; opacity: .6; }
.rn-gr-leg-filter[data-type="oeuvre"]     { color: var(--color-oeuvre); }
.rn-gr-leg-filter[data-type="auteur"]     { color: var(--color-auteur); }
.rn-gr-leg-filter[data-type="evenement"]  { color: var(--color-evenement); }
.rn-gr-leg-filter[data-type="organisme"]  { color: var(--color-organisme); }
.rn-gr-leg-filter[data-type="citation"]   { color: var(--color-citation); }
.rn-gr-leg-filter[data-type="definition"] { color: var(--color-definition); }
.rn-gr-leg-filter[data-type="concept"]    { color: var(--color-concept); }

/* ============================================================
   RESPONSIVE — Colonnes configurables (v1.18.6)
   --cols : desktop | --cols-mobile : mobile (injectés via BO)
   ============================================================ */
.rn-auteurs-grille,
.rn-org-grille,
.rn-def-grid,
.rn-oeuvres-liste,
.rn-citations-liste,
.rn-evl-liste {
    display: grid;
    grid-template-columns: repeat(var(--cols, 3), minmax(0, 1fr));
    gap: 1rem;
}

/* Tablet 769–1024px : plafonner à 2 colonnes */
@media (max-width: 1024px) and (min-width: 769px) {
    .rn-auteurs-grille,
    .rn-org-grille,
    .rn-def-grid,
    .rn-oeuvres-liste,
    .rn-citations-liste,
    .rn-evl-liste {
        grid-template-columns: repeat(min(var(--cols, 3), 2), minmax(0, 1fr));
    }
}

/* Mobile < 768px : colonnes mobile du BO */
@media (max-width: 768px) {
    .rn-auteurs-grille,
    .rn-org-grille,
    .rn-def-grid,
    .rn-oeuvres-liste,
    .rn-citations-liste,
    .rn-evl-liste {
        grid-template-columns: repeat(var(--cols-mobile, 1), minmax(0, 1fr));
        gap: .75rem;
    }

    /* Filtres empilés sur mobile */
    .rn-af-grid,
    .rn-cit-fgrid,
    .rn-evl-fgrid,
    .rn-filtres-grid,
    .rn-org-fgrid,
    .rn-res-fgrid {
        grid-template-columns: 1fr !important;
        gap: .5rem;
    }
    .rn-auteurs-filtres,
    .rn-cit-filtres,
    .rn-evl-filtres,
    .rn-directus-filtres,
    .rn-org-filtres,
    .rn-res-filtres { padding: .75rem; }

    /* Cartes : padding réduit */
    .rn-auteur-card,
    .rn-def-card,
    .rn-org-card,
    .rn-oeuvre-card,
    .rn-citation-card,
    .rn-evl-card { padding: .85rem; }

    /* Graphe + légende */
    .rn-graphe-container { height: 70vh; min-height: 380px; }
    .rn-gr-legende { flex-wrap: wrap; gap: .4rem; }

    /* Timeline scrollable */
    .rn-tl-wrapper { overflow-x: auto; -webkit-overflow-scrolling: touch; }

    /* Détails : marge réduite */
    .rn-def-detail,
    .rn-detail-header { padding-left: .25rem; padding-right: .25rem; }
}

/* Très petit < 420px : forcer 1 colonne partout */
@media (max-width: 420px) {
    .rn-auteurs-grille,
    .rn-org-grille,
    .rn-def-grid,
    .rn-oeuvres-liste,
    .rn-citations-liste,
    .rn-evl-liste {
        grid-template-columns: 1fr;
    }
}

/* =========================================================================
   v1.19.5 — Ajouts
   ========================================================================= */

/* ---- Graphe : mode plein écran ----
   On encapsule la scène + la légende dans .rn-gr-fs-wrap pour garder les
   filtres de légende ACTIFS en plein écran (Fullscreen API sur le wrapper). */
.rn-gr-fs-wrap { position: relative; }
.rn-gr-fs-wrap:fullscreen,
.rn-gr-fs-wrap:-webkit-full-screen {
    background: #fff;
    padding: 16px;
    overflow: auto;
    display: flex;
    flex-direction: column;
}
.rn-gr-fs-wrap:fullscreen .rn-gr-stage,
.rn-gr-fs-wrap:-webkit-full-screen .rn-gr-stage { flex: 1 1 auto; min-height: 0; }
.rn-gr-fs-wrap:fullscreen .rn-gr-canvas,
.rn-gr-fs-wrap:-webkit-full-screen .rn-gr-canvas { height: 100% !important; min-height: 0 !important; }
.rn-gr-fs-btn {
    background: #fff; border: 1px solid #d1d5db; border-radius: 6px;
    padding: 4px 10px; font-size: 13px; cursor: pointer; color: #374151;
}
.rn-gr-fs-btn:hover { background: #f3f4f6; }
.rn-gr-fs-wrap:fullscreen .rn-gr-fs-btn::after,
.rn-gr-fs-wrap:-webkit-full-screen .rn-gr-fs-btn::after { content: ""; }

/* ---- Timeline : mode plein écran (v1.19.7) ----
   Compteur + contrôles + viewport encapsulés dans .rn-tl-fs-wrap. */
.rn-tl-fs-wrap { position: relative; }
.rn-tl-fs-wrap:fullscreen,
.rn-tl-fs-wrap:-webkit-full-screen {
    background: #fff;
    padding: 16px;
    overflow: auto;
    display: flex;
    flex-direction: column;
}
.rn-tl-fs-wrap:fullscreen .rn-tl-viewport,
.rn-tl-fs-wrap:-webkit-full-screen .rn-tl-viewport { flex: 1 1 auto; min-height: 0; }
.rn-tl-fs-btn {
    margin-left: auto;
    background: #fff; border: 1px solid #d1d5db; border-radius: 6px;
    padding: 6px 12px; font-size: 13px; font-weight: 600; cursor: pointer; color: #374151;
}
.rn-tl-fs-btn:hover { background: #f3f4f6; }

/* ---- Tom Select : harmonisation visuelle avec les filtres rn- ---- */
.ts-wrapper { min-width: 180px; }
.ts-control {
    border: 1px solid #d1d5db !important;
    border-radius: 8px !important;
    padding: 6px 8px !important;
    font-size: 14px !important;
    box-shadow: none !important;
    background: #fff !important;
}
.ts-wrapper.focus .ts-control {
    border-color: #4f46e5 !important;
    box-shadow: 0 0 0 3px rgba(79,70,229,.15) !important;
}
.ts-dropdown {
    border: 1px solid #d1d5db !important;
    border-radius: 8px !important;
    box-shadow: 0 8px 24px rgba(0,0,0,.10) !important;
}
.ts-dropdown .active { background: #eef2ff !important; color: #3730a3 !important; }
/* « chips » des tags sélectionnés (multiselect) */
.ts-control .item {
    background: #eef2ff !important;
    color: #3730a3 !important;
    border-radius: 999px !important;
    padding: 2px 8px !important;
    font-size: 13px !important;
}
.ts-control .item .remove { border-left-color: #c7d2fe !important; }

/* =========================================================================
   v1.20.0 — Bouton d'export (Graphe & Timeline)
   Menu natif <details> stylé, classes rn-export-* (surchargeables).
   ========================================================================= */
.rn-export { position: relative; display: inline-block; }

.rn-export > summary {
    list-style: none;
    cursor: pointer;
    user-select: none;
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    padding: .4rem .8rem;
    font-size: .85rem;
    font-weight: 600;
    color: #334155;
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    transition: background .15s ease, border-color .15s ease, box-shadow .15s ease;
}
.rn-export > summary::-webkit-details-marker { display: none; }
.rn-export > summary:hover { background: #f8fafc; border-color: #cbd5e1; box-shadow: 0 1px 3px rgba(15,23,42,.08); }
.rn-export[open] > summary { border-color: #94a3b8; background: #f1f5f9; }

.rn-export-menu {
    position: absolute;
    z-index: 50;
    top: calc(100% + 6px);
    right: 0;
    min-width: 210px;
    padding: .35rem;
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    box-shadow: 0 10px 30px rgba(15,23,42,.14);
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.rn-export-item {
    text-align: left;
    width: 100%;
    padding: .5rem .65rem;
    font-size: .85rem;
    color: #1f2937;
    background: transparent;
    border: none;
    border-radius: 7px;
    cursor: pointer;
    transition: background .12s ease;
}
.rn-export-item:hover { background: #eef2ff; color: #4338ca; }
.rn-export-ext { display: block; font-size: .72rem; color: #94a3b8; margin-top: 1px; }

/* En plein écran, garder le menu au-dessus du canvas/frise */
.rn-gr-fs-wrap:fullscreen .rn-export-menu,
.rn-tl-fs-wrap:fullscreen .rn-export-menu { z-index: 2147483647; }

@media (max-width: 768px) {
    .rn-export-menu { right: auto; left: 0; }
}

/* ---- Badge graphe (lien vers graphe égocentrique) ---- */
.rn-badge-graphe{background:#6366f1;color:#fff!important;text-decoration:none;border-radius:6px;padding:2px 8px;font-size:.8rem;white-space:nowrap}
.rn-badge-graphe:hover{background:#4f46e5}
/* ---- Bouton retour graphe complet ---- */
.rn-gr-ego-back{position:absolute;top:12px;left:12px;z-index:10;background:#6366f1;color:#fff;border:none;border-radius:6px;padding:6px 14px;font-size:.85rem;cursor:pointer}
.rn-gr-ego-back:hover{background:#4f46e5}

/* ---- Vue Carte : toolbar + filtres + plein écran ---- */
.rn-carte-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:8px}
.rn-carte-filter-label{display:inline-flex;align-items:center;gap:4px;font-size:.9rem;cursor:pointer}
.rn-carte-fs-wrap:fullscreen .rn-carte-map,
.rn-carte-fs-wrap:-webkit-full-screen .rn-carte-map{height:100vh!important;border-radius:0}

/* ---- Tableau de bord analytique ---- */
.rn-analytics{max-width:1200px;margin:0 auto}
.rn-an-counters{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:12px;margin-bottom:24px}
.rn-an-counter{background:#fff;border:1px solid #e9ecef;border-radius:10px;padding:16px 12px;text-align:center;transition:box-shadow .2s}
.rn-an-counter:hover{box-shadow:0 4px 12px rgba(0,0,0,.08)}
.rn-an-counter-icon{display:block;font-size:1.8rem;margin-bottom:4px}
.rn-an-counter-value{display:block;font-size:1.6rem;font-weight:700;color:#1f2937}
.rn-an-counter-label{display:block;font-size:.8rem;color:#6b7280;margin-top:2px}
.rn-an-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:16px}
.rn-an-card{background:#fff;border:1px solid #e9ecef;border-radius:12px;padding:20px}
.rn-an-card h2{font-size:1.05rem;margin-bottom:12px;color:#1f2937}
.rn-an-card-wide{grid-column:1/-1}
.rn-an-top{list-style:none;padding:0;margin:0}
.rn-an-top li{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid #f3f4f6}
.rn-an-top-name{flex:0 0 40%;font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rn-an-top-bar{flex:1;height:8px;background:#6366f1;border-radius:4px;min-width:4px}
.rn-an-top-count{flex:0 0 30px;text-align:right;font-size:.85rem;font-weight:600;color:#4b5563}
.rn-an-chart{display:flex;align-items:flex-end;gap:6px;height:180px;padding-top:10px}
.rn-an-bar-wrap{flex:1;display:flex;flex-direction:column;align-items:center;height:100%}
.rn-an-bar{background:#6366f1;border-radius:4px 4px 0 0;width:100%;max-width:40px;min-height:4px;display:flex;align-items:flex-start;justify-content:center;position:relative}
.rn-an-bar-val{font-size:.7rem;font-weight:600;color:#fff;padding:2px}
.rn-an-bar-label{font-size:.65rem;color:#6b7280;margin-top:4px;white-space:nowrap}
.rn-an-canvas-wrap{position:relative;height:280px;width:100%}
/* Darkmode */
body.dark-active .rn-an-counter,body.dark-active .rn-an-card{background:var(--dm-surface,#1e293b);border-color:var(--dm-border,#334155)}
body.dark-active .rn-an-counter-value,body.dark-active .rn-an-card h2{color:var(--dm-heading,#f1f5f9)}
body.dark-active .rn-an-counter-label,body.dark-active .rn-an-top-count,body.dark-active .rn-an-bar-label{color:var(--dm-muted,#94a3b8)}
body.dark-active .rn-an-top li{border-bottom-color:var(--dm-border,#334155)}
body.dark-active .rn-an-top-name{color:var(--dm-text,#e2e8f0)}

/* ---- Graphe temporel : axe ---- */
.rn-gr-time-axis{position:absolute;bottom:0;left:0;right:0;height:28px;border-top:1px solid #d1d5db;pointer-events:none;z-index:5}
.rn-gr-time-tick{position:absolute;bottom:4px;transform:translateX(-50%);font-size:.7rem;color:#6b7280;font-weight:600}
body.dark-active .rn-gr-time-axis{border-top-color:#374151}
body.dark-active .rn-gr-time-tick{color:#9ca3af}
/* ---- Graphe tripartite : dimmed/highlighted ---- */
.rn-gr-count{font-size:.85rem;color:#6b7280}
body.dark-active .rn-gr-count{color:#9ca3af}

/* ============================================================
   TOUCH TARGETS — min 44px sur mobile (WCAG 2.5.5)
   ============================================================ */
@media (max-width: 768px) {
    .rn-badge,
    .rn-badge-contenu,
    .rn-badge-compteur,
    .rn-badge-graphe {
        min-height: 32px;
        padding: 6px 14px;
        font-size: 13px;
        display: inline-flex;
        align-items: center;
    }
    .rn-tag,
    .rn-tag-thematique,
    .rn-tag-tag {
        min-height: 32px;
        padding: 6px 14px;
        font-size: 13px;
        display: inline-flex;
        align-items: center;
    }
    .rn-btn-rechercher,
    .rn-btn-detail,
    .rn-btn-reset,
    .rn-af-btn,
    .rn-af-reset,
    .rn-cit-btn,
    .rn-cit-reset {
        min-height: 44px;
        padding: 10px 20px;
        font-size: 15px;
    }
    .rn-clear-btn {
        min-width: 44px;
        min-height: 44px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
    }
}

/* ============================================================
   ÉTATS VIDES — enrichis (icône + message + lien)
   ============================================================ */
.rn-directus-empty,
.rn-a-empty,
.rn-c-empty,
.rn-evl-empty,
.rn-org-empty,
.rn-res-empty,
.rn-def-empty {
    text-align: center;
    padding: 48px 24px;
    color: var(--rn-text-muted);
    font-size: 15px;
    line-height: 1.6;
}
.rn-empty-icon {
    display: block;
    font-size: 2.5rem;
    margin-bottom: 12px;
    opacity: .6;
}
.rn-empty-suggestion {
    display: block;
    margin-top: 8px;
    font-size: 13px;
    color: var(--rn-text-muted);
}
.rn-empty-link {
    display: inline-block;
    margin-top: 12px;
    color: var(--rn-primary);
    font-weight: 600;
    text-decoration: none;
}
.rn-empty-link:hover { text-decoration: underline; }

/* ============================================================
   FILTRES ACTIFS — chips sous la barre de filtres
   ============================================================ */
.rn-filtres-actifs {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    padding: 10px 0;
}
.rn-filtre-chip {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 5px 12px;
    background: #eef2ff;
    color: #3730a3;
    border: 1px solid #c7d2fe;
    border-radius: 20px;
    font-size: 13px;
    font-weight: 500;
    text-decoration: none;
    transition: background .15s ease, border-color .15s ease;
}
.rn-filtre-chip:hover {
    background: #e0e7ff;
    border-color: #a5b4fc;
}
.rn-filtre-chip-remove {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: #c7d2fe;
    color: #3730a3;
    font-size: 12px;
    font-weight: 700;
    line-height: 1;
    cursor: pointer;
    transition: background .15s;
}
.rn-filtre-chip-remove:hover { background: #a5b4fc; }
.rn-filtres-clear {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 5px 12px;
    background: transparent;
    color: var(--rn-text-muted);
    border: 1px dashed var(--rn-border);
    border-radius: 20px;
    font-size: 13px;
    text-decoration: none;
    transition: color .15s, border-color .15s;
}
.rn-filtres-clear:hover { color: #dc2626; border-color: #fca5a5; }

/* ============================================================
   SURBRILLANCE — termes recherchés dans les résultats
   ============================================================ */
mark.rn-highlight {
    background: #fef08a;
    color: inherit;
    padding: 1px 2px;
    border-radius: 3px;
}

/* ============================================================
   SKELETON LOADERS — animation de chargement
   ============================================================ */
@keyframes rn-shimmer {
    0%   { background-position: -200% 0; }
    100% { background-position: 200% 0; }
}
.rn-skeleton {
    background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
    background-size: 200% 100%;
    animation: rn-shimmer 1.5s ease-in-out infinite;
    border-radius: var(--rn-radius);
    color: transparent !important;
    pointer-events: none;
    user-select: none;
}
.rn-skeleton * { visibility: hidden; }
.rn-skeleton-text {
    height: 1em;
    border-radius: 4px;
    margin-bottom: 8px;
}
.rn-skeleton-text:last-child { width: 60%; }
.rn-skeleton-circle {
    border-radius: 50%;
}
body.dark-active .rn-skeleton {
    background: linear-gradient(90deg, #1e293b 25%, #334155 50%, #1e293b 75%);
    background-size: 200% 100%;
}

/* ============================================================
   BARRE DE NAVIGATION — inter-vues
   ============================================================ */
.rn-navbar {
    margin-bottom: 20px;
    border-bottom: 2px solid var(--rn-border);
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}
.rn-navbar-list {
    display: flex;
    gap: 0;
    list-style: none;
    margin: 0;
    padding: 0;
    min-width: max-content;
}
.rn-navbar-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 10px 16px;
    font-size: 14px;
    font-weight: 500;
    color: var(--rn-text-muted);
    text-decoration: none;
    border-bottom: 3px solid transparent;
    margin-bottom: -2px;
    white-space: nowrap;
    transition: color .15s, border-color .15s;
}
.rn-navbar-link:hover {
    color: var(--rn-text);
    border-bottom-color: #d1d5db;
}
.rn-navbar-active {
    color: var(--rn-primary);
    border-bottom-color: var(--rn-primary);
    font-weight: 600;
}
@media (max-width: 768px) {
    .rn-navbar-link { padding: 8px 12px; font-size: 13px; }
    .rn-navbar-label { display: none; }
    .rn-navbar-link span[aria-hidden] { font-size: 1.2rem; }
}

/* ============================================================
   VOIR AUSSI — suggestions en bas des fiches détail
   ============================================================ */
.rn-see-also {
    margin-top: 32px;
    padding-top: 24px;
    border-top: 1px solid var(--rn-border);
}
.rn-see-also h2 {
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--rn-text);
    margin: 0 0 14px;
}
.rn-see-also-list {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    list-style: none;
    margin: 0;
    padding: 0;
}
.rn-see-also-link {
    display: inline-block;
    padding: 8px 16px;
    background: var(--rn-bg-soft);
    border: 1px solid var(--rn-border);
    border-radius: 8px;
    color: var(--rn-text);
    text-decoration: none;
    font-size: 14px;
    transition: background .15s, border-color .15s, color .15s;
}
.rn-see-also-link:hover {
    background: #eef2ff;
    border-color: var(--rn-primary);
    color: var(--rn-primary);
}

/* ============================================================
   EXPORT BIBLIOGRAPHIQUE (BibTeX / RIS)
   ============================================================ */
.rn-biblio-toolbar {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}
.rn-biblio-btn {
    padding: 5px 12px;
    font-size: 12px;
    font-weight: 600;
    border-radius: var(--rn-radius, 8px);
    cursor: pointer;
    transition: background .15s, border-color .15s, opacity .15s;
    border: 1px solid var(--rn-primary);
    background: var(--rn-primary);
    color: #fff;
}
.rn-biblio-btn:disabled {
    opacity: .4;
    cursor: not-allowed;
}
.rn-biblio-btn-ghost {
    background: transparent;
    color: var(--rn-primary);
}
.rn-biblio-btn-ghost:hover:not(:disabled) {
    background: rgba(79, 70, 229, .06);
}
.rn-biblio-count-label {
    font-size: 13px;
    color: var(--rn-muted, #64748b);
}
.rn-biblio-check-label {
    position: absolute;
    top: 8px;
    right: 8px;
    z-index: 2;
    cursor: pointer;
}
.rn-biblio-check {
    width: 16px;
    height: 16px;
    accent-color: var(--rn-primary);
    cursor: pointer;
}
.rn-oeuvre-card {
    position: relative;
}
.rn-d-export {
    display: flex;
    gap: 8px;
    margin-top: 12px;
}
.rn-resultats-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px;
    margin-bottom: 16px;
}

/* ============================================================
   BOUTON COPIER CITATION
   ============================================================ */
.rn-copy-btn {
    display: inline-flex;
    align-items: center;
    padding: 3px 10px;
    font-size: 12px;
    font-weight: 500;
    color: var(--rn-muted, #64748b);
    background: transparent;
    border: 1px solid var(--rn-border);
    border-radius: var(--rn-radius, 8px);
    cursor: pointer;
    transition: color .15s, border-color .15s, background .15s;
    margin-left: auto;
    white-space: nowrap;
}
.rn-copy-btn:hover {
    color: var(--rn-primary);
    border-color: var(--rn-primary);
    background: rgba(79, 70, 229, .05);
}
.rn-copy-btn.rn-copy-ok {
    color: #16a34a;
    border-color: #16a34a;
    background: rgba(22, 163, 74, .08);
}

/* ============================================================
   RECHERCHE GLOBALE
   ============================================================ */
.rn-directus-search h1 {
    font-size: 1.5rem;
    font-weight: 700;
    margin: 0 0 20px;
    color: var(--rn-text);
}
.rn-search-form {
    margin-bottom: 28px;
}
.rn-search-bar {
    display: flex;
    gap: 8px;
    max-width: 640px;
}
.rn-search-input {
    flex: 1;
    padding: 10px 14px;
    font-size: 15px;
    border: 1px solid var(--rn-border);
    border-radius: var(--rn-radius, 8px);
    background: #fff;
    color: var(--rn-text);
    outline: none;
    transition: border-color .15s, box-shadow .15s;
}
.rn-search-input:focus {
    border-color: var(--rn-primary);
    box-shadow: 0 0 0 3px rgba(79, 70, 229, .15);
}
.rn-search-submit {
    padding: 10px 20px;
    font-size: 14px;
    font-weight: 600;
    background: var(--rn-primary);
    color: #fff;
    border: none;
    border-radius: var(--rn-radius, 8px);
    cursor: pointer;
    transition: background .15s;
}
.rn-search-submit:hover {
    opacity: .9;
}
.rn-search-count {
    font-size: 14px;
    color: var(--rn-muted, #64748b);
    margin: 0 0 24px;
}
.rn-search-group {
    margin-bottom: 28px;
}
.rn-search-group-title {
    font-size: 1.15rem;
    font-weight: 700;
    color: var(--rn-text);
    margin: 0 0 12px;
    display: flex;
    align-items: center;
    gap: 8px;
}
.rn-search-group-count {
    font-weight: 400;
    font-size: .85em;
    color: var(--rn-muted, #64748b);
}
.rn-search-results {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.rn-search-result-link {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 10px 14px;
    border-radius: var(--rn-radius, 8px);
    border: 1px solid var(--rn-border);
    background: var(--rn-bg-soft);
    text-decoration: none;
    color: var(--rn-text);
    transition: background .15s, border-color .15s, box-shadow .2s;
}
a.rn-search-result-link:hover {
    border-color: var(--rn-primary);
    background: #eef2ff;
    box-shadow: 0 2px 8px rgba(0,0,0,.06);
}
.rn-search-result-title {
    font-weight: 600;
    font-size: 14px;
}
.rn-search-result-snippet {
    font-size: 13px;
    color: var(--rn-muted, #64748b);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 600px;
}

/* Navbar search */
.rn-navbar-search {
    display: flex;
    align-items: center;
    margin-left: auto;
}
.rn-navbar-search-input {
    padding: 5px 10px;
    font-size: 13px;
    border: 1px solid var(--rn-border);
    border-radius: var(--rn-radius, 8px);
    background: #fff;
    color: var(--rn-text);
    width: 160px;
    outline: none;
    transition: border-color .15s, width .2s;
}
.rn-navbar-search-input:focus {
    border-color: var(--rn-primary);
    width: 220px;
}
.rn-navbar-search-input::placeholder {
    color: var(--rn-muted, #94a3b8);
}
@media (max-width: 768px) {
    .rn-navbar-search-input { width: 100px; font-size: 12px; }
    .rn-navbar-search-input:focus { width: 140px; }
}

/* ============================================================
   COMPARAISON côte à côte
   ============================================================ */
.rn-compare { max-width: 1200px; margin: 0 auto; padding: 1rem; }
.rn-compare h1 { margin-bottom: 1rem; }
.rn-compare-form { margin-bottom: 1.5rem; }
.rn-compare-inputs {
    display: flex; flex-wrap: wrap; gap: .75rem; align-items: flex-end;
}
.rn-compare-field { display: flex; flex-direction: column; gap: .25rem; }
.rn-compare-field label { font-size: .85rem; font-weight: 600; color: var(--rn-text-muted); }
.rn-compare-field select,
.rn-compare-field input {
    padding: .45rem .65rem; border: 1px solid var(--rn-border);
    border-radius: var(--rn-radius, 8px); font-size: .9rem;
    background: #fff; color: var(--rn-text);
}
.rn-compare-btn {
    padding: .5rem 1.2rem; border: none; border-radius: var(--rn-radius, 8px);
    background: var(--rn-primary); color: #fff; font-weight: 600;
    cursor: pointer; transition: background .15s;
}
.rn-compare-btn:hover { background: var(--rn-primary-hover); }

.rn-compare-grid {
    display: grid; grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
    gap: 1.5rem;
}
.rn-compare-card {
    border: 1px solid var(--rn-border); border-radius: var(--rn-radius, 8px);
    padding: 1.25rem; background: #fff;
}
.rn-compare-name {
    font-size: 1.15rem; margin: 0 0 .75rem; color: var(--rn-primary);
}
.rn-compare-table { width: 100%; border-collapse: collapse; font-size: .88rem; }
.rn-compare-table th {
    text-align: left; padding: .4rem .5rem; width: 35%;
    color: var(--rn-text-muted); border-bottom: 1px solid var(--rn-border);
    vertical-align: top; text-transform: capitalize;
}
.rn-compare-table td {
    padding: .4rem .5rem; border-bottom: 1px solid var(--rn-border);
    word-break: break-word;
}
.rn-compare-relations { margin-top: .75rem; }
.rn-compare-relations summary {
    cursor: pointer; font-weight: 600; font-size: .9rem;
    color: var(--rn-primary);
}
.rn-compare-relations ul {
    margin: .5rem 0 0; padding-left: 1.2rem; font-size: .85rem;
    color: var(--rn-text-muted);
}
.rn-compare-relations li { margin-bottom: .25rem; }

@media (max-width: 768px) {
    .rn-compare-grid { grid-template-columns: 1fr; }
    .rn-compare-inputs { flex-direction: column; }
}
