/* =============================================================================
 * SciencesWiki — styles de base du front/back-office (extraits du <style> inline
 * de base.html.twig). Chargé en <link data-turbo-track="reload"> : navigation
 * Turbo propre (rechargement complet si la feuille change → plus de reflow).
 * Les variables (--accent, --line, --ink, --font-base…) viennent du thème ; le
 * thème CRT (crt-theme.css) les redéfinit sous body.theme-crt.
 * ========================================================================== */

* { box-sizing: border-box; }
/* Classes utilitaires explicites (cf. usage dans les templates). */
.font-roboto { font-family: var(--font-base); }
.font-monofur { font-family: var(--font-content); }
/* Base + structure = Roboto Mono. */
body, button, input, select, textarea { font-family: var(--font-base); }
body { max-width: 1200px; margin: 0 auto; padding: 1.5rem; color:var(--ink); line-height:1.6; }
h1, h2, h3, h4, .brand, header nav, footer, table th { font-family: var(--font-base); }
/* Contenu (listes/articles) + secondaire des cartes + badges = Monofur. */
table td, .badge, .pill, .qlist, .card .muted,
.block-vul, .block-aca, .sources, .xp-detail, table.xp td { font-family: var(--font-content); }
/* Accueil : 2 colonnes (principal + barre latérale). */
.home-grid { display:grid; grid-template-columns: 1.7fr 1fr; gap:1.6rem; align-items:start; }
@media (max-width:880px) { .home-grid { grid-template-columns:1fr; } }
.side-block { border:1px solid var(--line); border-radius:14px; padding:1rem 1.1rem; margin-bottom:1.2rem; }
.side-block h2 { margin:.1rem 0 .7rem; font-size:1.1rem; }
/* Lanceurs de domaines colorés. */
.domains { display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:.8rem; }
.domain-card { position:relative; overflow:hidden; display:block; border-radius:14px; padding:1.1rem; min-height:120px;
    color:#fff; text-decoration:none; border:2px solid #fff; box-shadow:0 1px 3px rgba(0,0,0,.4); transition:transform .18s ease, box-shadow .18s ease; }
.domain-card::after { content:''; position:absolute; inset:0; background:rgba(0,0,0,.15); transition:background .18s ease; z-index:0; }
.domain-card:hover { transform:scale(1.03); box-shadow:0 6px 18px rgba(0,0,0,.28); }
.domain-card:hover::after { background:rgba(0,0,0,.25); }
.domain-card > * { position:relative; z-index:1; }
.domain-card .d-label { font-weight:800; font-size:1.05rem; text-shadow:0 1px 3px rgba(0,0,0,.4); }
.domain-card .d-sub { font-size:.82rem; opacity:.95; text-shadow:0 1px 2px rgba(0,0,0,.4); }
/* Onglets « Nous rejoindre ». */
.join-tabs { display:flex; gap:.2rem; border-bottom:2px solid var(--line); margin-bottom:.8rem; flex-wrap:wrap; }
.join-tabs button { background:none; border:none; border-bottom:3px solid transparent; margin-bottom:-2px; padding:.45rem .7rem; font:inherit; font-weight:600; color:#6b7280; cursor:pointer; }
.join-tabs button[aria-selected="true"] { color:var(--accent); border-bottom-color:var(--accent); }
.join-pane[hidden] { display:none; }
.join-pane label { display:block; font-size:.82rem; font-weight:600; margin:.4rem 0 .15rem; }
.join-pane input[type=text], .join-pane input[type=email], .join-pane textarea, .join-pane select { width:100%; padding:.45rem .6rem; border:1px solid #d1d5db; border-radius:8px; font:inherit; }
.join-pane button[type=submit] { margin-top:.7rem; background:var(--accent); color:#fff; border:0; border-radius:8px; padding:.5rem 1rem; font:inherit; font-weight:600; cursor:pointer; }
.stat-grid { display:grid; grid-template-columns:1fr 1fr; gap:.6rem; }
.stat-grid .s { border:1px solid var(--line); border-radius:10px; padding:.6rem .7rem; }
.stat-grid .s strong { font-size:1.3rem; display:block; }
header { display:flex; align-items:center; gap:.6rem; flex-wrap:wrap; border-bottom:1px solid var(--line); padding-bottom:.8rem; margin-bottom:1.2rem; }
header .brand { color: var(--accent); text-decoration: none; font-weight: 800; font-size:1.2rem; display:inline-flex; align-items:center; }
header .brand img { height:64px; width:auto; display:block; }
header nav { margin-left:auto; display:flex; gap:.25rem; font-size:.92rem; align-items:flex-start; flex-wrap:wrap; }
header nav a, header nav .nav-dd { color:var(--ink); text-decoration:none; font-weight:600; padding:.5rem .9rem; border-radius:9px; position:relative; transition:background .15s, color .15s; }
header nav .nav-dd { display:inline-block; }
header nav a:hover, header nav .nav-dd:hover, header nav .nav-dd:focus-within { background:rgba(1,159,185,.12); color:var(--accent-dark); }
header nav a.is-active, header nav .nav-dd.is-active { color:var(--accent-dark); }
header nav a.is-active::after { content:''; position:absolute; left:.9rem; right:.9rem; bottom:.28rem; height:2px; background:var(--accent); border-radius:2px; }
/* Menu déroulant « Mon compte » (front). */
.nav-dd { position:relative; }
/* Déclencheur compte : lien simple, sans bordure ni fond (comme les autres liens). */
.nav-dd-top { font:inherit; font-weight:600; color:var(--ink); background:none; border:none; border-radius:9px; padding:.5rem .9rem; cursor:pointer; text-align:left; line-height:1.15; }
.nav-dd-top:hover, .nav-dd:focus-within .nav-dd-top { background:rgba(1,159,185,.12); color:var(--accent-dark); }
/* Compte ancré à droite dans la barre terminal (mode fenêtré). */
.crt-termbar .term-account { margin-left:auto; }
.crt-termbar .nav-dd-top, .crt-termbar .term-account a { text-transform:none; color:inherit; padding:.05rem .4rem; }
.nav-dd-top .nav-email { display:block; font-weight:400; font-size:.76rem; color:var(--muted, #64748b); }
.nav-dd-menu { position:absolute; top:calc(100% + 6px); right:0; background:#fff; border:1px solid var(--line); border-radius:10px; box-shadow:0 10px 28px rgba(0,0,0,.12); min-width:210px; padding:.3rem; display:none; z-index:50; }
.nav-dd-menu::before { content:''; position:absolute; left:0; right:0; top:-8px; height:8px; }
/* Ouverture au CLIC uniquement (cf. JS) : un menu au survol se referme
   quand la souris franchit l'espace vers les liens. */
.nav-dd.open .nav-dd-menu { display:block; }
.nav-dd-top::after { content:' ▾'; font-size:.8em; opacity:.7; }
.nav-dd-menu a { display:block; }
.nav-dd-logout { border-top:1px solid var(--line); margin-top:.2rem; color:#b91c1c !important; }
/* Menu « SciencesWiki » : ouvre vers la gauche (il est en début de nav). */
.nav-dd.dd-left .nav-dd-menu { right:auto; left:0; }
/* Sous-items (publics sous « Découvrir »). */
.nav-dd-menu a.sub { padding-left:1.5rem; font-size:.92em; opacity:.92; }
.nav-dd-menu a.sub::before { content:"– "; opacity:.5; }
.nav-dd-menu a.is-active { color:var(--accent-dark); font-weight:700; }
h1 { margin: .3rem 0; font-size:1.7rem; }
h2 { margin-top:1.6rem; }
/* Pas de souligné par défaut (boutons, blocs, menus, nav…). Le souligné est
   réservé aux liens INLINE du contenu rédactionnel (cf. .md a plus bas). */
a { color: var(--accent); text-decoration:none; }
a:focus { color:#792424; font-weight:bold; }
.muted { color:#6b7280; }
.grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:.6rem; }
.card { display:block; border:1px solid var(--line); border-radius:10px; padding:.8rem; text-decoration:none; color:#111827; transition:border-color .15s; }
.card:hover { border-color: var(--accent); }
.crumbs { font-size:.9rem; }
.crumbs a { color:#6b7280; text-decoration:none; }
.crumbs a:hover { color:var(--accent); }
.pill { display:inline-block; font-size:.72rem; padding:.12rem .55rem; border-radius:999px; background:#f1f5f9; color:#475569; border:1px solid var(--line); }
.pill.author { background:#eef2ff; color:#3730a3; border-color:#e0e7ff; }
.pill.node { background:#ecfdf5; color:#065f46; border-color:#d1fae5; }
.badge { display:inline-block; font-size:.78rem; padding:.1rem .55rem; border-radius:8px; }
.badge.ok { background:#dcfce7; color:#166534; }
.badge.warn { background:#fef3c7; color:#92400e; }
.badge.info { background:#dbeafe; color:#1e40af; }
.qlist { list-style:none; padding:0; margin:0; }
.qlist li { border:1px solid var(--line); border-radius:10px; padding:.7rem .9rem; margin:.5rem 0; }
.qlist a.q-title { font-weight:600; text-decoration:none; color:#111827; font-size:1.05rem; }
.qlist a.q-title:hover { color:var(--accent); }
.qmeta { margin-top:.35rem; display:flex; gap:.45rem; align-items:center; flex-wrap:wrap; font-size:.8rem; }
.qmeta time { color:#9ca3af; }
.block-aca { border-left:3px solid var(--aca); padding-left:.9rem; }
.block-vul { border-left:3px solid var(--vul); padding-left:.9rem; }
.sources { font-size:.88rem; }
.ask { border:1px solid var(--line); border-radius:12px; padding:1rem 1.1rem; margin:1.2rem 0; background:#fafafa; }
.ask label { display:block; font-size:.85rem; font-weight:600; margin:.5rem 0 .2rem; }
.ask input[type=text], .ask textarea { width:100%; padding:.55rem .7rem; border:1px solid #d1d5db; border-radius:8px; font:inherit; }
.ask textarea { min-height:4.5rem; resize:vertical; }
.ask button { margin-top:.8rem; background:var(--accent); color:#fff; border:0; border-radius:8px; padding:.6rem 1.1rem; font:inherit; font-weight:600; cursor:pointer; }
.ask button:disabled { opacity:.5; cursor:not-allowed; }
.loader { display:inline-block; width:1rem; height:1rem; border:2px solid #cbd5e1; border-top-color:var(--accent); border-radius:50%; animation:spin .8s linear infinite; vertical-align:-2px; }
@keyframes spin { to { transform:rotate(360deg); } }
td { vertical-align: top; padding: 0.54rem; border-bottom: 1px solid #b5d6f2; }
#stream-out { white-space:pre-wrap; margin-top:1rem; padding:1rem; border:1px dashed #cbd5e1; border-radius:10px; min-height:2rem; }
#stream-out h4 { color:var(--vul); margin:.6rem 0 .2rem; font-size:.95rem; text-transform:uppercase; letter-spacing:.04em; }
.cartouche { display:flex; gap:.8rem; align-items:flex-start; border:1px solid var(--line); border-radius:12px; padding:.9rem 1rem; background:#fbfdff; margin:1rem 0; }
.cartouche .avatar { width:42px; height:42px; border-radius:10px; background:linear-gradient(135deg,var(--accent),var(--accent-dark)); color:#fff; display:flex; align-items:center; justify-content:center; font-weight:800; flex:0 0 auto; }
.cartouche .who { font-weight:700; }
.cartouche .note { font-size:.85rem; color:#6b7280; }
footer { margin-top:3rem; border-top:1px solid var(--line); padding-top:1rem; font-size:.8rem; color:#9ca3af; }
footer a { color:#6b7280; }
/* Menu back-office */
.admin-nav { display:flex; flex-wrap:wrap; align-items:center; gap:.25rem; padding:.5rem .6rem; margin-bottom:1.4rem;
    background:#0f172a; border-radius:12px; }
.admin-nav-brand { color:#fff; font-weight:700; font-size:.92rem; padding:.35rem .7rem; margin-right:.3rem; }
.admin-nav a { color:#cbd5e1; text-decoration:none; font-size:.88rem; font-weight:600; padding:.4rem .8rem; border-radius:8px; transition:background .15s, color .15s; }
.admin-nav a:hover { background:#1e293b; color:#fff; }
.admin-nav a.active { background:var(--accent); color:#0f172a; }
.admin-nav-logout { margin-left:auto; color:#fca5a5 !important; }
.admin-nav-logout:hover { background:#7f1d1d !important; color:#fff !important; }
.admin-nav .dd { position:relative; }
.admin-nav .dd-top { color:#cbd5e1; font-size:.88rem; font-weight:600; padding:.4rem .8rem; border-radius:8px; cursor:pointer; display:inline-block; user-select:none; }
.admin-nav .dd-top:hover, .admin-nav .dd:focus-within .dd-top { background:#1e293b; color:#fff; }
.admin-nav .dd-top.active { background:var(--accent); color:#0f172a; }
.admin-nav .dd-menu { position:absolute; top:calc(100% + 6px); left:0; background:#0f172a; border:1px solid #334155; border-radius:8px; min-width:210px; padding:.3rem; display:none; z-index:50; box-shadow:0 10px 28px rgba(0,0,0,.35); }
/* Pont invisible collé au lanceur : couvre l'espace visuel, le survol ne « tombe » jamais dans le vide. */
.admin-nav .dd-menu::before { content:''; position:absolute; left:0; right:0; top:-8px; height:8px; }
.admin-nav .dd:hover .dd-menu, .admin-nav .dd:focus-within .dd-menu { display:block; }
.admin-nav .dd-menu a { display:block; white-space:nowrap; }
/* ===== Barre de monitoring admin (fixée en bas, toutes pages front) ===== */
#admin-bar { position:fixed; left:0; right:0; bottom:0; z-index:9999; background:#0f172a; color:#e2e8f0;
    font-family:var(--font-base); font-size:12.5px; line-height:1.4; display:flex; align-items:center; gap:.5rem;
    padding:.4rem .7rem; box-shadow:0 -2px 12px rgba(0,0,0,.28); border-top:1px solid #1e293b; flex-wrap:wrap; }
#admin-bar .ab-badge { background:var(--accent); color:#fff; padding:.12rem .5rem; border-radius:6px; font-weight:700; letter-spacing:.02em; }
#admin-bar a { color:#93c5fd; text-decoration:none; font-weight:600; padding:.15rem .4rem; border-radius:6px; }
#admin-bar a:hover { background:#1e293b; color:#fff; }
#admin-bar .ab-quit { color:#fca5a5; }
#admin-bar .ab-spacer { margin-left:auto; }
/* Puces machines (critique en un coup d'œil) */
.ab-chip { display:inline-flex; align-items:center; gap:.45rem; background:#111c30; border:1px solid #1e293b; border-radius:8px; padding:.12rem .55rem; }
.ab-chip .ab-host { color:#e2e8f0; font-weight:700; font-size:11.5px; }
.ab-chip .ab-m { color:#94a3b8; font-size:11px; white-space:nowrap; }
.ab-chip .ab-m b { font-weight:700; font-variant-numeric:tabular-nums; }
.ab-v-ok { color:#86efac; } .ab-v-warn { color:#fbbf24; } .ab-v-crit { color:#f87171; }
/* Moisson */
.ab-harvest { display:inline-flex; align-items:center; gap:.5rem; color:#cbd5e1; }
.ab-harvest .ab-track { width:80px; height:7px; background:#334155; border-radius:4px; overflow:hidden; }
.ab-harvest .ab-fill { display:block; height:100%; width:0; background:var(--accent); transition:width .4s; }
/* Bouton détails + volet déroulant */
.ab-toggle { cursor:pointer; user-select:none; background:#1e293b; border:1px solid #334155; color:#cbd5e1;
    border-radius:6px; padding:.14rem .55rem; font:inherit; font-weight:600; }
.ab-toggle:hover { background:#334155; color:#fff; }
#admin-panel { position:fixed; left:0; right:0; bottom:37px; z-index:9998; background:#0b1322; color:#cbd5e1;
    border-top:1px solid #1e293b; box-shadow:0 -8px 24px rgba(0,0,0,.4); padding:.9rem 1.1rem;
    font-family:var(--font-base); font-size:12.5px; max-height:60vh; overflow:auto; display:none; }
#admin-panel.open { display:block; }
.ab-panel-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:1rem; max-width:1100px; margin:0 auto; }
.ab-card { background:#111c30; border:1px solid #1e293b; border-radius:10px; padding:.7rem .85rem; }
.ab-card h4 { margin:0 0 .5rem; font-size:12.5px; color:#e2e8f0; display:flex; align-items:center; gap:.4rem; }
.ab-card .row { display:flex; justify-content:space-between; gap:1rem; padding:.18rem 0; border-bottom:1px solid rgba(30,41,59,.6); }
.ab-card .row:last-child { border-bottom:0; }
.ab-card .row span:first-child { color:#94a3b8; }
.ab-card .row span:last-child { font-variant-numeric:tabular-nums; font-weight:600; color:#e2e8f0; }
/* Rendu Markdown (articles wiki + réponses) */
.md { line-height:1.7; }
.md h2 { margin:1.8rem 0 .6rem; font-size:1.5rem; border-bottom:2px solid var(--line); padding-bottom:.25rem; }
.md h3 { margin:1.3rem 0 .4rem; font-size:1.2rem; }
.md h4 { margin:1.1rem 0 .3rem; font-size:1.05rem; }
.md p { margin:.7rem 0; }
.md ul, .md ol { margin:.6rem 0 .6rem 1.4rem; }
.md li { margin:.25rem 0; }
/* Liens INLINE du contenu rédactionnel : soulignés (lisibilité/repérage). */
.md a { color:var(--accent); text-decoration:underline; text-decoration-color:rgba(1,159,185,.45); text-underline-offset:2px; }
.md a:hover { text-decoration-color:var(--accent); text-decoration-thickness:2px; }
/* Convention de provenance des liens dans le contenu : mini-logo SciencesWiki
   pour les renvois INTERNES (/fr/…), mini-logo Wikipédia pour les renvois
   EXTERNES vers Wikipédia. Distingue d'un coup d'œil interne vs externe. */
.md a[href^="/fr/"]::after,
.md a[href*="wikipedia.org"]::after {
    content:""; display:inline-block; width:.9em; height:.9em;
    margin-left:.18em; vertical-align:-.08em; background-size:contain;
    background-repeat:no-repeat; opacity:.85;
}
.md a[href^="/fr/"]::after { background-image:url("/icons/sciwiki.svg"); }
.md a[href*="wikipedia.org"]::after { background-image:url("/icons/wikipedia.svg"); }
/* Marqueur « [réf. nécessaire] » (vérification de fidélité) : discret mais repérable. */
.md .ref-needed, .ref-needed {
    font-size:.78em; font-weight:600; color:#b45309;
    background:rgba(245,158,11,.14); border:1px solid rgba(245,158,11,.4);
    border-radius:5px; padding:0 .35em; margin:0 .15em; white-space:nowrap; vertical-align:.05em;
}
.md blockquote { border-left:4px solid var(--line); margin:.8rem 0; padding:.2rem 0 .2rem 1rem; color:#475569; }
.md table { border-collapse:collapse; margin:.8rem 0; width:100%; }
.md th, .md td { border:1px solid var(--line); padding:.4rem .6rem; text-align:left; }
.md code { background:#f1f5f9; padding:.1rem .35rem; border-radius:6px; font-size:.9em; }
.md pre { background:#f1f5f9; padding:.8rem; border-radius:8px; overflow:auto; }
.wiki-article { margin:1.5rem 0 2rem; max-width:80ch; }
.article-paternity { display:flex; align-items:center; gap:.5rem; flex-wrap:wrap; margin:.3rem 0 1.2rem; }
.ai-banner { margin:2rem 0 .5rem; padding:.9rem 1.1rem; border:1px solid #fcd34d; background:#fffbeb; border-radius:10px; font-size:.92rem; line-height:1.6; color:#78350f; }
.ai-banner a { color:var(--accent-dark); font-weight:600; }
