/*
 * Thème du back-office (proposition du 28/10/2026, demande du mainteneur : « moderne, épuré, responsive, sobre,
 * efficace, thème clair et thème sombre, sans image de fond de l'édition »). Couche chargée APRÈS application.css
 * (assets/app.js) : mêmes noms de classes, mêmes sélecteurs (la règle venue ensuite l'emporte), aucune bibliothèque.
 * Revenir à l'ancien rendu = retirer l'import de ce fichier.
 *
 * Couleurs : uniquement par les variables --bo-* ci-dessous. Thème clair par défaut, sombre si le système le demande,
 * ou forcé par le bouton de la barre (data-theme="light" | "dark" sur <html>, mémorisé dans le navigateur par le
 * contrôleur Stimulus theme). Contrastes visés : 4,5:1 au moins pour tout texte, dans les deux thèmes.
 */

:root {
    --bo-fond: #f5f6f8;
    --bo-surface: #ffffff;
    --bo-surface-2: #f0f2f5;
    --bo-surface-3: #e6e9ee;
    --bo-bord: #e1e4e9;
    --bo-bord-fort: #c9ced6;
    --bo-texte: #1a1f26;
    --bo-texte-2: #4a535e;
    --bo-texte-3: #5d6672;
    --bo-texte-inactif: #68707a;
    --bo-titre-fond: #eef1f5;
    --bo-titre-texte: #10141a;
    --bo-bouton: #0b7480;
    --bo-bouton-fort: #085a63;
    --bo-sur-bouton: #ffffff;
    --bo-accent: #0b7480;
    --bo-accent-fort: #085a63;
    --bo-accent-doux: #e3f3f5;
    --bo-sur-accent: #ffffff;
    --bo-focus: #0b7480;
    --bo-succes: #1d7a3a;
    --bo-succes-doux: #e6f4ea;
    --bo-info: #1a5fa3;
    --bo-info-doux: #e7f0fa;
    --bo-info-fort: #144a80;
    --bo-sur-info: #ffffff;
    --bo-avert: #8a5300;
    --bo-avert-plein: #e9a23b;
    --bo-avert-doux: #fdf3dc;
    --bo-danger: #b3261e;
    --bo-danger-fort: #8f1d17;
    --bo-danger-doux: #fbe9e7;
    --bo-or: #7a6200;
    --bo-ombre: 0 1px 2px rgba(16, 24, 40, 0.06), 0 1px 3px rgba(16, 24, 40, 0.04);
    --bo-ombre-haute: 0 10px 30px rgba(16, 24, 40, 0.14), 0 2px 6px rgba(16, 24, 40, 0.06);
    --bo-rayon: 12px;
    --bo-rayon-petit: 8px;
    --bo-police: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    --bo-police-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    color-scheme: light;
}
/* Sombre : gris de Discord (fond #313338, cartes #2b2d31, bandeaux #232428), accent « blurple » pour les boutons, liens en
   blurple éclairci ; couleurs d'état de Discord éclaircies pour le texte. */
:root[data-theme="dark"] {
    --bo-fond: #313338;
    --bo-surface: #2b2d31;
    --bo-surface-2: #383a40;
    --bo-surface-3: #404249;
    --bo-titre-fond: #232428;
    --bo-titre-texte: #f2f3f5;
    --bo-bord: #3f4147;
    --bo-bord-fort: #4e5058;
    --bo-texte: #dbdee1;
    --bo-texte-2: #b5bac1;
    --bo-texte-3: #a3a9b1;
    --bo-texte-inactif: #999ea6;
    --bo-accent: #a5acf8;
    --bo-accent-fort: #c9cdfb;
    --bo-accent-doux: #2f3258;
    --bo-sur-accent: #ffffff;
    --bo-bouton: #5865f2;
    --bo-bouton-fort: #4752c4;
    --bo-sur-bouton: #ffffff;
    --bo-focus: #a5acf8;
    --bo-succes: #57d68d;
    --bo-succes-doux: #203b2c;
    --bo-info: #4fc3f7;
    --bo-info-doux: #1c3646;
    --bo-info-fort: #8fdafb;
    --bo-sur-info: #06212e;
    --bo-avert: #f0b232;
    --bo-avert-plein: #f0b232;
    --bo-avert-doux: #3b3221;
    --bo-danger: #fa777c;
    --bo-danger-fort: #fca3a6;
    --bo-danger-doux: #432528;
    --bo-or: #f0c938;
    --bo-ombre: 0 1px 0 rgba(4, 4, 5, 0.2), 0 1.5px 0 rgba(6, 6, 7, 0.05), 0 2px 0 rgba(4, 4, 5, 0.05);
    --bo-ombre-haute: 0 8px 16px rgba(0, 0, 0, 0.24);
    color-scheme: dark;
}
@media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) {
        --bo-fond: #313338;
        --bo-surface: #2b2d31;
        --bo-surface-2: #383a40;
        --bo-surface-3: #404249;
        --bo-titre-fond: #232428;
        --bo-titre-texte: #f2f3f5;
        --bo-bord: #3f4147;
        --bo-bord-fort: #4e5058;
        --bo-texte: #dbdee1;
        --bo-texte-2: #b5bac1;
        --bo-texte-3: #a3a9b1;
        --bo-texte-inactif: #999ea6;
        --bo-accent: #a5acf8;
        --bo-accent-fort: #c9cdfb;
        --bo-accent-doux: #2f3258;
        --bo-sur-accent: #ffffff;
        --bo-bouton: #5865f2;
        --bo-bouton-fort: #4752c4;
        --bo-sur-bouton: #ffffff;
        --bo-focus: #a5acf8;
        --bo-succes: #57d68d;
        --bo-succes-doux: #203b2c;
        --bo-info: #4fc3f7;
        --bo-info-doux: #1c3646;
        --bo-info-fort: #8fdafb;
        --bo-sur-info: #06212e;
        --bo-avert: #f0b232;
        --bo-avert-plein: #f0b232;
        --bo-avert-doux: #3b3221;
        --bo-danger: #fa777c;
        --bo-danger-fort: #fca3a6;
        --bo-danger-doux: #432528;
        --bo-or: #f0c938;
        --bo-ombre: 0 1px 0 rgba(4, 4, 5, 0.2), 0 1.5px 0 rgba(6, 6, 7, 0.05), 0 2px 0 rgba(4, 4, 5, 0.05);
        --bo-ombre-haute: 0 8px 16px rgba(0, 0, 0, 0.24);
        color-scheme: dark;
    }
}
/* application.css force le schéma clair sur :root (barres de défilement) : il suit désormais le thème. */
:root:has(body.application) { color-scheme: light; }
:root[data-theme="dark"]:has(body.application) { color-scheme: dark; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]):has(body.application) { color-scheme: dark; } }

/* Base ------------------------------------------------------------------------------------------------------------ */
body.application {
    --nuit-fond-2: var(--bo-surface-2);
    --nuit-surface: var(--bo-surface);
    --nuit-surface-2: var(--bo-surface-2);
    --nuit-bord: var(--bo-bord);
    --nuit-texte: var(--bo-texte);
    --nuit-texte-2: var(--bo-texte-2);
    --nuit-lune: var(--bo-accent);
    --nuit-lune-2: var(--bo-accent-fort);
    --nuit-succes: var(--bo-succes);
    --nuit-erreur: var(--bo-danger);
    --nuit-info: var(--bo-info);
    --champ-fond: var(--bo-surface);
    --champ-texte: var(--bo-texte);
    --rayon: var(--bo-rayon-petit);
    --ombre: var(--bo-ombre);
    --police: var(--bo-police);
    --police-titres: var(--bo-police);
    color-scheme: inherit;
    font-family: var(--bo-police);
    font-size: 15px;
    line-height: 1.55;
    color: var(--bo-texte);
    background: var(--bo-fond);
    -webkit-font-smoothing: antialiased;
}
body.application h1, body.application h2, body.application h3, body.application h4, body.application h5, body.application h6 { font-weight: 600; line-height: 1.25; letter-spacing: -0.01em; }
body.application h1 { font-size: 26px; }
body.application h2 { font-size: 21px; }
body.application h3 { font-size: 18px; }
body.application h4 { font-size: 16px; }
body.application h5, body.application h6 { font-size: 14px; }
body.application :is(h1, h2, h3, h4, h5, h6) small { color: var(--bo-texte-2); }
body.application hr { border-top-color: var(--bo-bord); }
body.application label { font-weight: 600; }
body.application a, body.application a:link, body.application a:visited { color: var(--bo-accent); text-decoration: none; }
body.application a:hover, body.application a:focus { color: var(--bo-accent-fort); text-decoration: underline; text-underline-offset: 0.15em; }
body.application main :where(p, li, dd, td, label, legend) a:where(:not(.bouton, .pastille)):is(:link, :visited) { text-decoration: underline; text-underline-offset: 0.15em; text-decoration-thickness: 1px; }
body.application :focus-visible { outline: 2px solid var(--bo-focus); outline-offset: 2px; border-radius: 4px; }
body.application .texte-discret { color: var(--bo-texte-2); }
body.application .texte-succes { color: var(--bo-succes); }
body.application .texte-danger { color: var(--bo-danger); }
body.application .fond-avertissement { background-color: var(--bo-avert-doux); }
body.application code { padding: 2px 6px; font-family: var(--bo-police-mono); font-size: 88%; color: var(--bo-danger-fort); background-color: var(--bo-surface-2); border-radius: 6px; }

/* Conteneur : fluide jusqu'à 1200 px, gouttière de 16 px sur téléphone, 24 px au-delà. */
body.application main { width: 100%; box-sizing: border-box; max-width: 1248px; margin: 0 auto; padding: 24px 16px 48px; }
@media (min-width: 768px) { body.application main { padding: 28px 24px 56px; } }

/* Barre : pleine largeur, collée en haut, contenu aligné sur le conteneur. ----------------------------------------- */
.barre-appli { position: sticky; top: 0; z-index: 900; width: auto; max-width: none; margin: 0; padding: 0; font-family: var(--bo-police); font-size: 14px; background: var(--bo-surface); border-bottom: 1px solid var(--bo-bord); }
.barre-appli__barre { align-items: flex-start; max-width: 1248px; min-height: 56px; margin: 0 auto; padding: 10px 16px; gap: 8px; background: none; border: 0; border-radius: 0; box-shadow: none; }
@media (min-width: 768px) { .barre-appli__barre { padding: 10px 24px; } }
.barre-appli__liens { align-items: center; gap: 8px; }
.barre-appli__gauche, .barre-appli__droite { align-items: center; gap: 4px; }
.barre-appli .barre-appli__droite { margin-right: 0; }
.barre-appli a.barre-appli__marque, .barre-appli a.barre-appli__marque:link, .barre-appli a.barre-appli__marque:visited { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; margin: 0 8px 0 0; padding: 0; font-size: 17px; line-height: 1; color: var(--bo-sur-bouton); text-shadow: none; background: var(--bo-bouton); border-radius: 10px; }
.barre-appli a.barre-appli__marque:is(:hover, :focus) { color: var(--bo-sur-bouton); background: var(--bo-bouton-fort); }
.barre-appli__gauche > li > a, .barre-appli__gauche > li > a:link, .barre-appli__gauche > li > a:visited, .barre-appli__droite > li > a, .barre-appli__droite > li > a:link, .barre-appli__droite > li > a:visited, .barre-appli .menu-deroulant > summary {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 7px 12px;
    font-weight: 500;
    line-height: 20px;
    color: var(--bo-texte-2);
    text-shadow: none;
    border-radius: var(--bo-rayon-petit);
}
.barre-appli__gauche > li > a:is(:hover, :focus), .barre-appli__droite > li > a:is(:hover, :focus), .barre-appli .menu-deroulant > summary:hover { color: var(--bo-texte); background-color: var(--bo-surface-2); }
.barre-appli .menu-deroulant[open] > summary { color: var(--bo-texte); background: var(--bo-surface-3); box-shadow: none; }
.barre-appli a.barre-appli__desincarner, .barre-appli a.barre-appli__desincarner:link, .barre-appli a.barre-appli__desincarner:visited { color: var(--bo-danger); background: var(--bo-danger-doux); }
.barre-appli a.barre-appli__desincarner:is(:hover, :focus) { color: var(--bo-danger-fort); background: var(--bo-danger-doux); }
.caret { margin-left: 4px; border-top-width: 5px; opacity: 0.7; }
.barre-appli .menu-deroulant__liste { top: calc(100% + 6px); min-width: 220px; padding: 6px; background: var(--bo-surface); border: 1px solid var(--bo-bord); border-radius: var(--bo-rayon); box-shadow: var(--bo-ombre-haute); }
.barre-appli .menu-deroulant__liste > li > a, .barre-appli .menu-deroulant__liste > li > a:link, .barre-appli .menu-deroulant__liste > li > a:visited { display: flex; align-items: center; gap: 10px; padding: 7px 10px; color: var(--bo-texte); border-radius: 6px; }
.barre-appli .menu-deroulant__liste > li > a .icone { color: var(--bo-texte-3); }
.barre-appli .menu-deroulant__liste > li > a:is(:hover, :focus) { color: var(--bo-texte); background: var(--bo-surface-2); }
.barre-appli .menu-deroulant__liste > li > a[aria-current="page"], body.application .barre-appli .menu-deroulant__liste > li > a[aria-current="true"] { color: var(--bo-accent); font-weight: 600; background: var(--bo-accent-doux); }
.barre-appli .menu-deroulant__liste > li > a[aria-current] .icone { color: inherit; }
body.application .barre-appli .menu-deroulant__liste > li > a.menu-deroulant__accueil[aria-current] { color: var(--bo-texte); font-weight: 400; background: none; }
body.application .barre-appli .menu-deroulant__liste > li > a.menu-deroulant__accueil[aria-current]:is(:hover, :focus) { color: var(--bo-texte); background: var(--bo-surface-2); }
.menu-deroulant__filet { margin: 6px 4px; border-top-color: var(--bo-bord); }
.barre-appli .menu-deroulant--compte > summary { margin: 0; padding: 7px 12px; color: var(--bo-texte); border-radius: var(--bo-rayon-petit); }
.barre-appli .menu-deroulant--compte > summary:hover, .barre-appli .menu-deroulant--compte[open] > summary { color: var(--bo-texte); background: var(--bo-surface-2); }
.barre-appli__compte { display: inline-flex; align-items: center; gap: 6px; max-width: 28ch; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: inherit; font-weight: 500; }
.barre-appli .menu-deroulant--compte .menu-deroulant__liste { margin-top: 0; border-radius: var(--bo-rayon); }
.barre-appli .menu-deroulant--compte .menu-deroulant__liste > li > a { font-size: 14px; }
/* Bouton du thème (contrôleur theme) : lune en clair, soleil en sombre, dessinés en CSS. */
.barre-appli__theme { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; padding: 0; color: var(--bo-texte-2); background: transparent; border: 1px solid var(--bo-bord); border-radius: var(--bo-rayon-petit); cursor: pointer; }
.barre-appli__theme:hover { color: var(--bo-texte); background: var(--bo-surface-2); }
.barre-appli__theme-icone { position: relative; width: 16px; height: 16px; border-radius: 50%; box-shadow: inset -5px -3px 0 0 currentColor; }
:root[data-theme="dark"] .barre-appli__theme-icone { width: 10px; height: 10px; background: currentColor; box-shadow: 0 -8px 0 -3px currentColor, 0 8px 0 -3px currentColor, 8px 0 0 -3px currentColor, -8px 0 0 -3px currentColor, 6px 6px 0 -3px currentColor, -6px -6px 0 -3px currentColor, 6px -6px 0 -3px currentColor, -6px 6px 0 -3px currentColor; }
@media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) .barre-appli__theme-icone { width: 10px; height: 10px; background: currentColor; box-shadow: 0 -8px 0 -3px currentColor, 0 8px 0 -3px currentColor, 8px 0 0 -3px currentColor, -8px 0 0 -3px currentColor, 6px 6px 0 -3px currentColor, -6px -6px 0 -3px currentColor, 6px -6px 0 -3px currentColor, -6px 6px 0 -3px currentColor; }
}
.barre-appli__bascule { margin: 0 0 0 auto; padding: 9px 9px; background: transparent; border-color: var(--bo-bord); border-radius: var(--bo-rayon-petit); }
.barre-appli__bascule:is(:hover, :focus) { background-color: var(--bo-surface-2); }
.barre-appli__bascule span { background-color: var(--bo-texte-2); }
@media (max-width: 767px) {
    .barre-appli__liens { align-items: stretch; margin: 0 -16px; padding: 8px 16px 12px; border-top: 1px solid var(--bo-bord); box-shadow: none; }
    .barre-appli .barre-appli__gauche, .barre-appli .barre-appli__droite { align-items: stretch; margin: 0; }
    .barre-appli__gauche > li > a, .barre-appli__droite > li > a, .barre-appli .menu-deroulant > summary { display: flex; padding: 10px 12px; }
    .barre-appli .menu-deroulant__liste { padding: 4px 0 4px 12px; border: 0; box-shadow: none; background: transparent; }
    .barre-appli__compte { max-width: none; }
}

/* Titres de page ------------------------------------------------------------------------------------------------- */
body.application main > :is(h1, h2, h3), body.application .titre-page { margin: 0 0 20px; padding: 0; color: var(--bo-titre-texte); font-weight: 700; background: none; border: 0; border-radius: 0; font-size: 26px; }
body.application main > h1 > a.bouton { margin-left: 8px; vertical-align: 3px; }

/* Cartes (panneaux) ---------------------------------------------------------------------------------------------- */
body.application .carte { margin: 0 0 20px; padding: 20px; color: var(--bo-texte); background: var(--bo-surface); border: 1px solid var(--bo-bord); border-radius: var(--bo-rayon); box-shadow: var(--bo-ombre); }
body.application .carte > .carte__titre { margin: -20px -20px 18px; padding: 14px 20px; font-size: 17px; font-weight: 650; line-height: 1.35; color: var(--bo-titre-texte); background: var(--bo-titre-fond); border-bottom: 1px solid var(--bo-bord); border-radius: var(--bo-rayon) var(--bo-rayon) 0 0; }
body.application .carte > .carte__titre:last-child { margin-bottom: -20px; border-bottom: 0; border-radius: var(--bo-rayon); }
body.application .carte > .carte__titre--simple { font-size: 15px; font-weight: 500; }
body.application .carte > .carte__titre--marge { padding-top: 14px; padding-bottom: 14px; }
body.application .carte .carte > .carte__titre--marge:not(.carte__titre--simple)::after { content: none; }
body.application .carte :is(h1, h2, h3):not(.carte__titre) { padding-bottom: 6px; color: var(--bo-titre-texte); font-weight: 650; border-bottom: 1px solid var(--bo-bord); }
body.application .carte .carte > div.carte__titre > :is(h1, h2, h3) { border-bottom: 0; }
body.application .carte .carte { background: var(--bo-surface); box-shadow: none; }
/* Variantes : un filet de couleur en haut et le titre dans la couleur, plus de dégradés. */
body.application .carte--defaut { border-color: var(--bo-bord); }
body.application .carte--defaut > .carte__titre { color: var(--bo-titre-texte); background: var(--bo-titre-fond); border-bottom-color: var(--bo-bord); }
body.application :is(.carte--primaire, .carte--succes, .carte--info, .carte--avertissement, .carte--danger) { border-color: var(--bo-bord); border-top-width: 3px; }
body.application .carte--primaire { border-top-color: var(--bo-accent); }
body.application .carte--succes { border-top-color: var(--bo-succes); }
body.application .carte--info { border-top-color: var(--bo-info); }
body.application .carte--avertissement { border-top-color: var(--bo-avert-plein); }
body.application .carte--danger { border-top-color: var(--bo-danger); }
body.application :is(.carte--primaire, .carte--succes, .carte--info, .carte--avertissement, .carte--danger) > .carte__titre { background: var(--bo-titre-fond); border-bottom-color: var(--bo-bord); }
body.application :is(.carte--primaire, .carte--succes, .carte--info, .carte--avertissement, .carte--danger) > .carte__titre { color: var(--bo-titre-texte); }
body.application .carte > .carte__titre :is(h1, h2, h3):not(.carte__titre) { padding-bottom: 0; border-bottom: 0; }
body.application .carte > .carte__titre h1:not(.carte__titre) { font-size: 22px; }
body.application .carte--neutre { border-color: var(--bo-bord); border-top-width: 1px; }
/* Titres de bandeau qui gardaient la taille d'un h1 ou d'un h2 de l'existant (30 à 36 px). */
body.application .fiche-site > h1.carte__titre, body.application .fiche-site > .carte__titre > h1, body.application .defi-formulaire--creation .carte > h1.carte__titre, body.application .carte > .carte__titre h1.fiche-societe__nom, body.application fieldset.carte > legend.carte__titre--legende:not(.carte__titre--simple) { font-size: 22px; font-weight: 600; }
body.application .carte > .carte__titre :is(h1, h2, h3) { margin: 0; padding: 0; font-size: inherit; }
body.application fieldset.carte > legend.carte__titre--legende { width: calc(100% + 40px); line-height: 1.35; }

/* Grille : gouttière de 20 px. */
body.application .ligne { margin-left: -10px; margin-right: -10px; }
body.application .ligne > * { padding-left: 10px; padding-right: 10px; }
body.application .ligne.ligne--interne, body.application .tableau-bord__membres > li.ligne { margin-left: 0; margin-right: 0; }
body.application .tableau-bord__equipe > .ligne { margin-left: -10px; margin-right: -10px; }
body.application .actions { gap: 8px; }

/* Messages ------------------------------------------------------------------------------------------------------- */
body.application .alerte { margin: 0 0 20px; padding: 12px 16px; color: var(--bo-texte); background: var(--bo-surface-2); border: 1px solid var(--bo-bord); border-left-width: 4px; border-radius: var(--bo-rayon-petit); text-shadow: none; box-shadow: none; }
body.application .alerte--succes { color: var(--bo-texte); background: var(--bo-succes-doux); border-color: color-mix(in srgb, var(--bo-succes) 30%, transparent); border-left-color: var(--bo-succes); }
body.application .alerte--info { color: var(--bo-texte); background: var(--bo-info-doux); border-color: color-mix(in srgb, var(--bo-info) 30%, transparent); border-left-color: var(--bo-info); }
body.application :is(.alerte--avertissement, .alerte--attention) { color: var(--bo-texte); background: var(--bo-avert-doux); border-color: color-mix(in srgb, var(--bo-avert-plein) 45%, transparent); border-left-color: var(--bo-avert-plein); }
body.application .alerte--erreur { color: var(--bo-texte); background: var(--bo-danger-doux); border-color: color-mix(in srgb, var(--bo-danger) 30%, transparent); border-left-color: var(--bo-danger); }
body.application .alerte--succes a { color: var(--bo-succes); }
body.application .alerte--info a { color: var(--bo-info); }
body.application :is(.alerte--avertissement, .alerte--attention) a { color: var(--bo-avert); }
body.application .alerte--erreur a { color: var(--bo-danger); }
body.application .alerte hr { border-top-color: var(--bo-bord); }
body.application .alerte__fermer { right: -24px; color: var(--bo-texte-2); text-shadow: none; opacity: 1; }
body.application .alerte__fermer:is(:hover, :focus) { color: var(--bo-texte); opacity: 1; }
body.application .encadre-danger, body.application .alerte.encadre-danger, body.application .mention-danger { color: var(--bo-danger); background: var(--bo-danger-doux); }
body.application .alerte.encadre-danger, body.application .encadre-danger:not(span) { padding: 12px 16px; border-radius: var(--bo-rayon-petit); }
body.application .mention-danger { padding: 1px 4px; border-radius: 4px; }
body.application .alerte .mention-danger a { color: var(--bo-danger); }
body.application .saisie__titre { padding: 16px 20px; color: var(--bo-texte); background: var(--bo-info-doux); border: 1px solid color-mix(in srgb, var(--bo-info) 30%, transparent); border-left: 4px solid var(--bo-info); border-radius: var(--bo-rayon-petit); text-shadow: none; box-shadow: none; }
body.application .carte .saisie__titre h1 { margin: 0; font-size: 22px; border-bottom: 0; }
body.application .alerte.contexte-role { padding: 8px 12px; color: var(--bo-texte); }
body.application #panel-admin .carte > .carte__titre { font-size: 13px; color: var(--bo-titre-texte); text-transform: uppercase; letter-spacing: 0.05em; }

/* Boutons -------------------------------------------------------------------------------------------------------- */
body.application .bouton, body.application a.bouton:link, body.application a.bouton:visited {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 8px 14px;
    font-size: 14px;
    font-weight: 500;
    line-height: 20px;
    color: var(--bo-sur-bouton) !important;
    background: var(--bo-bouton);
    border: 1px solid transparent;
    border-radius: var(--bo-rayon-petit);
    text-shadow: none;
    box-shadow: none;
    transition: background-color 0.12s ease, border-color 0.12s ease, color 0.12s ease, box-shadow 0.12s ease, transform 0.12s ease;
}
body.application .bouton:hover, body.application .bouton:focus { color: var(--bo-sur-bouton) !important; background: var(--bo-bouton-fort); border-color: transparent; border-radius: var(--bo-rayon-petit); text-decoration: none; }
body.application .bouton:active { box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2); }
body.application .bouton .icone { margin-right: 0; }
body.application .bouton--bloc { display: flex; width: 100%; }
body.application :is(.bouton--defaut, .bouton--secondaire), body.application a:is(.bouton--defaut, .bouton--secondaire):link, body.application a:is(.bouton--defaut, .bouton--secondaire):visited { color: var(--bo-texte) !important; background: var(--bo-surface); border-color: var(--bo-bord-fort); text-shadow: none; }
body.application :is(.bouton--defaut, .bouton--secondaire):is(:hover, :focus) { color: var(--bo-texte) !important; background: var(--bo-surface-2); border-color: var(--bo-bord-fort); }
body.application .bouton--primaire, body.application a.bouton--primaire:link, body.application a.bouton--primaire:visited { background: var(--bo-bouton); border-color: transparent; }
body.application .bouton--primaire:is(:hover, :focus) { background: var(--bo-bouton-fort); border-color: transparent; }
body.application .bouton--succes, body.application a.bouton--succes:link, body.application a.bouton--succes:visited { color: #fff !important; background: #1d7a3a; border-color: transparent; }
body.application .bouton--succes:is(:hover, :focus) { color: #fff !important; background: #165e2d; }
body.application .bouton--info, body.application a.bouton--info:link, body.application a.bouton--info:visited { color: var(--bo-sur-info) !important; background: var(--bo-info); border-color: transparent; }
body.application .bouton--info:is(:hover, :focus) { color: var(--bo-sur-info) !important; background: var(--bo-info-fort); border-color: transparent; }
body.application :is(.bouton--avertissement, .bouton--attention), body.application a:is(.bouton--avertissement, .bouton--attention):link, body.application a:is(.bouton--avertissement, .bouton--attention):visited { color: #2b1d00 !important; background: var(--bo-avert-plein); border-color: transparent; text-shadow: none; }
body.application :is(.bouton--avertissement, .bouton--attention):is(:hover, :focus) { color: #2b1d00 !important; background: #d98f20; border-color: transparent; }
body.application .bouton--danger, body.application a.bouton--danger:link, body.application a.bouton--danger:visited { color: #fff !important; background: #b3261e; border-color: transparent; }
body.application .bouton--danger:is(:hover, :focus) { color: #fff !important; background: #8f1d17; border-color: transparent; }
body.application .bouton--grand, body.application a.bouton--grand:is(:link, :visited, :hover, :focus) { padding: 11px 20px; font-size: 16px; line-height: 22px; border-radius: 10px; }
body.application .bouton--petit, body.application a.bouton--petit:is(:link, :visited, :hover, :focus) { padding: 5px 10px; font-size: 13px; line-height: 18px; border-radius: 7px; }
body.application .bouton--mini, body.application a.bouton--mini:is(:link, :visited, :hover, :focus) { padding: 2px 8px; font-size: 12px; line-height: 18px; border-radius: 6px; }
/* Action indisponible (règle des testeurs du 29/10/2026 : griser plutôt que masquer) : gris lisible (texte discret sur
   un survol, 4,5:1 au moins), sans l'opacité d'application.css, non cliquable ; sa raison est lue avec elle. */
body.application .bouton.bouton--indisponible, body.application .bouton.bouton--indisponible:is(:hover, :focus) { color: var(--bo-texte-3) !important; background: var(--bo-surface-2); border: 1px dashed var(--bo-bord-fort); opacity: 1; cursor: not-allowed; box-shadow: none; }
body.application .bouton.bouton--multiligne { white-space: normal; text-align: left; justify-content: flex-start; }
body.application .groupe-boutons { gap: 0; }

/* Étiquettes : pastilles teintées. */
body.application .pastille { display: inline-block; padding: 2px 8px; font-size: 12px; font-weight: 600; line-height: 18px; color: var(--bo-texte-2); background: var(--bo-surface-3); border-radius: 999px; }
body.application .pastille--defaut { color: var(--bo-texte-2); background: var(--bo-surface-3); }
body.application .pastille--primaire { color: var(--bo-accent); background: var(--bo-accent-doux); }
body.application :is(.pastille--succes, .pastille--ouvert) { color: var(--bo-succes); background: var(--bo-succes-doux); }
body.application .pastille--info { color: var(--bo-info); background: var(--bo-info-doux); }
body.application :is(.pastille--avertissement, .pastille--lune) { color: var(--bo-avert); background: var(--bo-avert-doux); }
body.application :is(.pastille--danger, .pastille--ferme) { color: var(--bo-danger); background: var(--bo-danger-doux); }
body.application a.pastille:is(:link, :visited, :hover, :focus) { color: var(--bo-texte-2); }
body.application a.pastille--primaire:is(:link, :visited, :hover, :focus) { color: var(--bo-accent); }
body.application a.pastille--succes:is(:link, :visited, :hover, :focus) { color: var(--bo-succes); }
body.application a.pastille--info:is(:link, :visited, :hover, :focus) { color: var(--bo-info); }
body.application a.pastille--avertissement:is(:link, :visited, :hover, :focus) { color: var(--bo-avert); }
body.application a.pastille--danger:is(:link, :visited, :hover, :focus) { color: var(--bo-danger); }
body.application a.pastille:is(:hover, :focus), body.application button.pastille:is(:hover, :focus) { filter: brightness(0.95); }
body.application a.pastille--defaut:is(:hover, :focus) { background: var(--bo-surface-3); }
body.application a.pastille--primaire:is(:hover, :focus) { background: var(--bo-accent-doux); }
body.application a.pastille--succes:is(:hover, :focus) { background: var(--bo-succes-doux); }
body.application a.pastille--info:is(:hover, :focus) { background: var(--bo-info-doux); }
body.application a.pastille--avertissement:is(:hover, :focus) { background: var(--bo-avert-doux); }
body.application :is(a, button).pastille--danger:is(:hover, :focus) { background: var(--bo-danger-doux); }
body.application .pastille--rang1 { color: #3d3000; background: #e9cf3c; }
body.application .pastille--rang2 { color: #1a1a1a; background: #c3c7cc; }
body.application .pastille--rang3 { color: #fff; background: #9a5b2b; }
body.application .defi-formulaire--creation label.required::after { color: var(--bo-danger); background: var(--bo-danger-doux); border-radius: 999px; font-weight: 600; }
body.application .rendu-formulaire #rendu_fichier_help { padding: 2px 8px; color: var(--bo-danger); background: var(--bo-danger-doux); border-radius: 999px; font-weight: 600; }

/* Tableaux ------------------------------------------------------------------------------------------------------- */
body.application .tableau { margin-bottom: 20px; color: var(--bo-texte); font-size: 14px; }
body.application .tableau :is(th, td) { padding: 10px 12px; vertical-align: middle; border-top: 1px solid var(--bo-bord); border-bottom: 0; }
body.application .tableau th { color: var(--bo-texte); font-weight: 600; font-size: 14px; }
body.application .tableau > thead > tr > th, body.application .tableau > thead > tr > td { color: var(--bo-texte-2); font-size: 12px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; background: var(--bo-surface-2); border-bottom: 1px solid var(--bo-bord); }
body.application .tableau > tbody + tbody { border-top: 1px solid var(--bo-bord); }
body.application .tableau--zebre > tbody > tr:nth-child(odd) { background: transparent; }
body.application .tableau--zebre > tbody > tr:nth-child(even) > :is(td, th), body.application .tableau tbody tr:nth-child(even) td { background: color-mix(in srgb, var(--bo-surface-2) 60%, transparent); }
body.application .tableau > tbody > tr:hover > :is(td, th) { background: var(--bo-surface-2); }
body.application .tableau--borde, body.application .tableau--borde :is(th, td) { border: 0; border-top: 1px solid var(--bo-bord); }
body.application .tableau--borde > thead > tr > :is(th, td) { border-bottom-width: 1px; }
body.application .tableau tr.ligne--succes > td, body.application .tableau tbody tr.ligne--succes > :is(td, th) { background: var(--bo-succes-doux); }
body.application .tableau tr.ligne--avertissement > :is(td, th) { background: var(--bo-avert-doux); }
body.application .tableau tbody tr.ligne--danger > :is(td, th) { background: var(--bo-danger-doux); }
body.application .tableau .tableau-bord__synthese-titre { background: var(--bo-succes-doux); }
body.application .tableau-bord__defis .tableau tbody tr:nth-child(even) td { background: transparent; }
/* Listes d'administration et éditions : plus de cellules grises ; tableau dans une carte qui défile sur téléphone. */
body.application :is(.administration__tableau, .editions__tableau) { overflow-x: auto; margin-bottom: 20px; background: var(--bo-surface); border: 1px solid var(--bo-bord); border-radius: var(--bo-rayon); box-shadow: var(--bo-ombre); }
body.application :is(.administration__tableau, .editions__tableau) > .tableau { margin: 0; }
body.application :is(.administration__tableau, .editions__tableau) > .tableau > thead:first-child > tr:first-child > :is(th, td) { border-top: 0; }
body.application :is(.administration__tableau, .editions__tableau) > .tableau--borde > :is(thead, tbody) > tr > :is(th, td) { color: var(--bo-texte); background: transparent; }
body.application :is(.administration__tableau, .editions__tableau) > .tableau--borde > thead > tr > :is(th, td) { color: var(--bo-texte-2); background: var(--bo-surface-2); }
body.application :is(.administration__tableau, .editions__tableau) > .tableau--zebre > tbody > tr:nth-child(even) > :is(th, td) { background: color-mix(in srgb, var(--bo-surface-2) 60%, transparent); }
body.application :is(.administration__tableau, .editions__tableau) > .tableau > tbody > tr:hover > :is(th, td) { background: var(--bo-surface-2); }
body.application :is(.administration__tableau, .editions__tableau) > .tableau > tbody > tr.ligne--succes > :is(th, td) { background: var(--bo-succes-doux); }
body.application :is(.administration__tableau, .editions__tableau) > .tableau > tbody > tr.ligne--danger > :is(th, td) { background: var(--bo-danger-doux); }
body.application :is(.administration__tableau, .editions__tableau) > .tableau > tbody a:not(.bouton):is(:link, :visited) { color: var(--bo-accent); text-decoration: none; font-weight: 500; }
body.application :is(.administration__tableau, .editions__tableau) > .tableau > tbody a:not(.bouton):is(:hover, :focus) { color: var(--bo-accent-fort); text-decoration: underline; }
body.application :is(.administration__pages, .administration__recherche, .administration__tableau thead) a:is(:link, :visited) { color: var(--bo-texte-2); }
body.application :is(.administration__pages, .administration__recherche, .administration__tableau thead) a:is(:hover, :focus) { color: var(--bo-texte); }
body.application .administration__tableau thead a:is(:link, :visited) { color: inherit; }
body.application .administration__pagination { padding: 0; background: none; border-radius: 0; }
body.application .administration__pagination .administration__pages { gap: 8px; }
body.application .administration__pages > li > :is(a, span) { display: inline-block; padding: 5px 12px; border: 1px solid var(--bo-bord); border-radius: var(--bo-rayon-petit); background: var(--bo-surface); }
body.application .administration__pages > li > a:is(:link, :visited) { color: var(--bo-texte); text-decoration: none; }
body.application .administration__pages > li > a:is(:hover, :focus) { color: var(--bo-texte); background: var(--bo-surface-2); text-decoration: none; }
body.application .administration__pages span[aria-disabled="true"] { color: var(--bo-texte-3); }
body.application .administration__recherche .champ__aide { color: var(--bo-texte-2); }
body.application .administration__mention { color: var(--bo-texte-2); }
/* Historique des défis proposés (30/10/2026) : nombres alignés à droite, première colonne fixe au défilement
   horizontal (une colonne par édition, fond opaque aux couleurs de la ligne), ligne des totaux séparée. */
body.application .historique-defis__section { margin-top: 24px; }
body.application .historique-defis__autres-noms { display: block; font-weight: 400; color: var(--bo-texte-2); }
body.application .historique-defis__tableau .tableau > :is(thead, tbody, tfoot) > tr > .historique-defis__nombre { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
body.application .historique-defis__tableau .tableau > :is(thead, tbody, tfoot) > tr > th:first-child { position: sticky; left: 0; z-index: 1; min-width: 180px; background: var(--bo-surface); }
body.application .historique-defis__tableau .tableau > tbody > tr:nth-child(even) > th:first-child { background: color-mix(in srgb, var(--bo-surface-2) 60%, var(--bo-surface)); }
body.application .historique-defis__tableau .tableau > tbody > tr:hover > th:first-child, body.application .historique-defis__tableau .tableau > thead > tr > th:first-child { background: var(--bo-surface-2); }
body.application .historique-defis__tableau .tableau > tfoot > tr > :is(th, td) { color: var(--bo-texte); border-top: 2px solid var(--bo-bord-fort); }

/* Formulaires ---------------------------------------------------------------------------------------------------- */
body.application .champ { margin-bottom: 18px; }
body.application .champ label, body.application .champ legend { margin-bottom: 6px; font-size: 14px; font-weight: 600; color: var(--bo-texte); }
body.application :is(input[type="text"], input[type="email"], input[type="password"], input[type="number"], input[type="url"], input[type="search"], input[type="tel"], input[type="date"], input[type="datetime-local"], select, textarea) {
    height: 40px;
    padding: 8px 12px;
    font-size: 15px;
    line-height: 22px;
    color: var(--bo-texte);
    background-color: var(--bo-surface);
    border: 1px solid var(--bo-bord-fort);
    border-radius: var(--bo-rayon-petit);
    box-shadow: none;
    transition: border-color 0.12s ease, box-shadow 0.12s ease;
}
body.application textarea { height: auto; }
body.application select[multiple], body.application select[size] { height: auto; }
body.application :is(input, select, textarea)::placeholder { color: var(--bo-texte-3); }
body.application :is(input, select, textarea):focus { border-color: var(--bo-accent); outline: 0; box-shadow: 0 0 0 3px color-mix(in srgb, var(--bo-accent) 25%, transparent); }
body.application :is(input, select, textarea):is([disabled], [readonly]), body.application .formulaire-site input[disabled] { color: var(--bo-texte-2); background-color: var(--bo-surface-2); }
body.application :is(input, select, textarea)[aria-invalid="true"] { border-color: var(--bo-danger); }
body.application :is(input, select, textarea)[aria-invalid="true"]:focus { border-color: var(--bo-danger); box-shadow: 0 0 0 3px color-mix(in srgb, var(--bo-danger) 25%, transparent); }
body.application input[type="checkbox"], body.application input[type="radio"] { width: 16px; height: 16px; accent-color: var(--bo-accent); }
body.application .champ--case { padding-left: 26px; }
body.application .champ--case input { margin-top: 3px; }
body.application .champ__aide { margin: 6px 0 0; font-size: 13px; color: var(--bo-texte-2); }
body.application .champ__erreur { margin: 6px 0 0; font-size: 13px; color: var(--bo-danger); }
body.application legend { font-size: 17px; font-weight: 600; color: var(--bo-texte); border-bottom-color: var(--bo-bord); }
body.application fieldset { border-color: var(--bo-bord); }
body.application .zone-texte, body.application textarea.zone-texte, body.application .defi-formulaire textarea, body.application .rendu-formulaire textarea { border-color: var(--bo-bord-fort); background-color: var(--bo-surface); }
body.application input[type="file"] { padding: 8px; color: var(--bo-texte-2); background: var(--bo-surface-2); border: 1px dashed var(--bo-bord-fort); border-radius: var(--bo-rayon-petit); max-width: 100%; }
body.application input[type="file"]::file-selector-button { margin-right: 10px; padding: 5px 10px; font: inherit; color: var(--bo-texte); background: var(--bo-surface); border: 1px solid var(--bo-bord-fort); border-radius: 6px; cursor: pointer; }
/* Panneaux autour des zones de texte des défis (anneau blanc translucide de l'ancien thème) : retirés. */
body.application .defi-formulaire:not(.defi-formulaire--creation) textarea,
body.application .defi-formulaire--creation textarea[id$="_modeRestitution"] { width: 100%; margin: 0 0 18px; border-color: var(--bo-bord-fort); border-radius: var(--bo-rayon-petit); box-shadow: none; outline: 0; }
body.application .defi-formulaire:not(.defi-formulaire--creation) textarea:focus,
body.application .defi-formulaire--creation textarea[id$="_modeRestitution"]:focus { box-shadow: 0 0 0 3px color-mix(in srgb, var(--bo-accent) 25%, transparent); }
body.application .defi-formulaire:not(.defi-formulaire--creation) .editeur-riche--actif,
body.application .defi-formulaire--creation .editeur-riche--actif:has(> textarea[id$="_modeRestitution"]) { padding: 0; background: none; border: 0; }
/* Champs de recherche des listes et du panel : même champ que les autres, à largeur raisonnable. */
body.application .administration__recherche input[type="text"], body.application #panel-admin .panel__recherche input, body.application .recherche__formulaire input[type="search"] { display: inline-block; flex: 1 1 220px; width: auto; max-width: 360px; height: 38px; padding: 7px 12px; font-size: 14px; color: var(--bo-texte); background: var(--bo-surface); border: 1px solid var(--bo-bord-fort); border-radius: var(--bo-rayon-petit); box-shadow: none; appearance: none; }
body.application :is(.administration__recherche input[type="text"], #panel-admin .panel__recherche input, .recherche__formulaire input[type="search"]):focus-visible { outline: 0; border-color: var(--bo-accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--bo-accent) 25%, transparent); }
body.application .administration__recherche { gap: 8px; }
/* Formulaires posés sans panneau. */
body.application main > h1 + form[name="edition"], body.application .formulaire-societe > form { padding: 20px; background: var(--bo-surface); border: 1px solid var(--bo-bord); border-radius: var(--bo-rayon); }
body.application .formulaire-role__rubrique li code { color: var(--bo-texte-3); background: none; }

/* Éditeur de texte riche (Quill). */
body.application .editeur-riche .ql-toolbar.ql-snow { background: var(--bo-surface-2); border-color: var(--bo-bord-fort); border-radius: var(--bo-rayon-petit) var(--bo-rayon-petit) 0 0; }
body.application .editeur-riche .ql-container.ql-snow { background: var(--bo-surface); border-color: var(--bo-bord-fort); border-radius: 0 0 var(--bo-rayon-petit) var(--bo-rayon-petit); font-size: 15px; }
body.application .editeur-riche .ql-editor { color: var(--bo-texte); line-height: 1.55; }
body.application .editeur-riche .ql-editor:focus { box-shadow: 0 0 0 3px color-mix(in srgb, var(--bo-accent) 25%, transparent); }
body.application .editeur-riche .ql-snow .ql-stroke { stroke: var(--bo-texte-2); }
body.application .editeur-riche .ql-snow .ql-fill { fill: var(--bo-texte-2); }
body.application .editeur-riche .ql-snow .ql-picker { color: var(--bo-texte-2); }
body.application .editeur-riche .ql-snow .ql-picker-options, body.application .editeur-riche .ql-snow .ql-tooltip { color: var(--bo-texte); background: var(--bo-surface); border-color: var(--bo-bord); box-shadow: var(--bo-ombre-haute); }
body.application .editeur-riche .ql-snow .ql-tooltip input[type="text"] { height: 32px; }
body.application :is(.texte-riche, .ql-editor) .couleur-vert { color: var(--bo-succes); }
body.application :is(.texte-riche, .ql-editor) .couleur-rouge { color: var(--bo-danger); }
body.application :is(.texte-riche, .ql-editor) .surligne-vert { background-color: var(--bo-succes-doux); }
body.application :is(.texte-riche, .ql-editor) .surligne-rouge { background-color: var(--bo-danger-doux); }

/* Listes, vignettes, chronologie ---------------------------------------------------------------------------------- */
body.application .liste-groupe { border-radius: var(--bo-rayon-petit); box-shadow: none; }
body.application .liste-groupe > li { padding: 10px 14px; color: var(--bo-texte); background: var(--bo-surface); border-color: var(--bo-bord); }
body.application .liste-groupe > li:first-child { border-top-left-radius: var(--bo-rayon-petit); border-top-right-radius: var(--bo-rayon-petit); }
body.application .liste-groupe > li:last-child { border-bottom-left-radius: var(--bo-rayon-petit); border-bottom-right-radius: var(--bo-rayon-petit); }
body.application .liste-groupe > li > a { color: var(--bo-accent); }
body.application .liste-groupe > li.liste-groupe--info, body.application .liste-groupe--info > li { color: var(--bo-texte); background: var(--bo-info-doux); }
body.application .liste-groupe > li.liste-groupe--succes, body.application .liste-groupe--succes > li { color: var(--bo-texte); background: var(--bo-succes-doux); }
body.application .liste-groupe > li.liste-groupe--avertissement, body.application .liste-groupe--avertissement > li { color: var(--bo-texte); background: var(--bo-avert-doux); }
body.application .liste-groupe > li.liste-groupe--danger, body.application .liste-groupe--danger > li { color: var(--bo-texte); background: var(--bo-danger-doux); }
body.application .fiche-site__equipes > li > a { color: var(--bo-texte); }
body.application .fiche-site__equipes > li > a:is(:hover, :focus) { color: var(--bo-texte); background: var(--bo-surface-2); }
body.application :is(.medailles-site .liste-groupe > li > a, .archives__wiki > li > a, .fiche-site__partenaires .carte > .carte__titre a, .fiche-societe__defi .alerte a:not(.pastille)) { color: var(--bo-accent); }
body.application :is(.medailles-site .liste-groupe > li > a, .archives__wiki > li > a, .fiche-site__partenaires .carte > .carte__titre a, .fiche-societe__defi .alerte a:not(.pastille)):is(:hover, :focus) { color: var(--bo-accent-fort); }
/* Vignettes et logos : fond blanc dans les deux thèmes (logos et QR code sont dessinés pour un fond blanc). */
body.application .vignette, body.application .vignettes li, body.application .logos__tuile { background: #fff; border-color: var(--bo-bord); border-radius: var(--bo-rayon-petit); box-shadow: none; }
body.application .vignette__legende, body.application .logos__nom { color: #1a1f26; }
/* Liste imprimable des défis : la vignette porte tout le texte du défi (titres, description) ; sur fond blanc, ce texte
   aux couleurs du thème sombre était illisible (1,1:1, audit du 31/10/2026). Fond du thème, seul le logo garde un fond
   blanc. L'impression reste noir sur blanc (@media print d'application.css). */
body.application .impression-defis__defi .vignette { color: var(--bo-texte); background: var(--bo-surface); }
body.application .impression-defis__defi .vignette > img { padding: 8px; background: #fff; border-radius: var(--bo-rayon-petit); }
body.application .chronologie::before { background: var(--bo-bord-fort); }
body.application .chronologie__panneau { color: var(--bo-texte); background: var(--bo-surface); border-color: var(--bo-bord); border-radius: var(--bo-rayon-petit); box-shadow: var(--bo-ombre); }
body.application .chronologie__panneau::before { border-top-color: var(--bo-bord); }
body.application .chronologie__pastille { border-color: var(--bo-fond); }
body.application .bloc-liste__element, body.application .carte .carte.bloc-liste__element { padding: 10px; background: var(--bo-surface); border: 1px solid var(--bo-bord); border-radius: var(--bo-rayon-petit); }
body.application .bloc-liste__titre { border-left: 4px solid var(--bo-accent-doux); }
body.application .liste-sites .bloc-liste__element:hover { box-shadow: var(--bo-ombre-haute); }
body.application .archives__defi > div { border-color: var(--bo-bord); border-radius: var(--bo-rayon-petit); }
body.application .archives__defi h3 { color: var(--bo-texte); background: var(--bo-accent-doux); border-radius: var(--bo-rayon-petit) var(--bo-rayon-petit) 0 0; }

/* Podium : socle dans l'accent, sans police fantaisie. */
body.application .podium__place a { color: var(--bo-accent); }
body.application .podium__socle { color: var(--bo-sur-bouton); background-color: var(--bo-bouton); border-top-color: var(--bo-bouton-fort); border-radius: 6px 6px 0 0; font-family: var(--bo-police); }
body.application .rang1, body.application .rang1 a { color: var(--bo-or); }
body.application .rang2, body.application .rang2 a { color: var(--bo-texte-2); }
body.application .rang3, body.application .rang3 a { color: #9a5b2b; }
body.application .defi .defi__podium li.defi__sans-laureat, body.application .podium__sans-laureat { color: var(--bo-avert); }

/* Carte des hubs : tuiles normales en clair, « mode nuit » de l'existant seulement en sombre. */
body.application .carte-sites { border-radius: var(--bo-rayon); background: var(--bo-surface-2); }
body.application .carte-sites .leaflet-tile-pane, body.application .carte-sites .carte-sites__fond { filter: none; }
:root[data-theme="dark"] body.application .carte-sites .leaflet-tile-pane { filter: invert(1) hue-rotate(190deg) brightness(.85) contrast(.9) saturate(.6); }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) body.application .carte-sites .leaflet-tile-pane { filter: invert(1) hue-rotate(190deg) brightness(.85) contrast(.9) saturate(.6); } }
body.application .carte-sites .carte-sites__vues a { font-family: var(--bo-police); font-size: 12px; font-weight: 600; color: #1a1f26; border-radius: 6px; }

/* Pages publiques : liste des défis et archives (refonte du 30/10/2026, demande du mainteneur). En-tête de page, filtres
   en pastilles, grilles de cartes ; mêmes variables --bo-* (couples vérifiés par tests/Public/ContrasteThemeTest.php),
   logos toujours sur fond blanc. */
body.application .page-entete { margin: 0 0 20px; padding: 22px 24px; color: var(--bo-texte); background: linear-gradient(135deg, var(--bo-accent-doux) 0%, var(--bo-surface) 78%); border: 1px solid var(--bo-bord); border-radius: var(--bo-rayon); box-shadow: var(--bo-ombre); }
body.application .page-entete > * + * { margin-top: 10px; }
body.application .page-entete p { margin-bottom: 0; }
body.application .page-entete__surtitre { margin: 0; font-size: 13px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--bo-accent); }
body.application .page-entete__surtitre a:is(:link, :visited) { color: var(--bo-accent); text-decoration: none; }
body.application .page-entete__surtitre a:is(:hover, :focus) { color: var(--bo-accent-fort); text-decoration: underline; }
body.application .page-entete .page-entete__titre { margin: 4px 0 0; padding: 0; font-size: 30px; font-weight: 750; line-height: 1.15; letter-spacing: -0.02em; color: var(--bo-titre-texte); background: none; border: 0; }
body.application .page-entete__intro { max-width: 72ch; color: var(--bo-texte-2); }
body.application .page-entete__chiffres { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 0; padding: 0; list-style: none; }
body.application .page-entete__chiffres li { padding: 4px 12px; font-size: 14px; color: var(--bo-texte-2); background: var(--bo-surface); border: 1px solid var(--bo-bord); border-radius: 999px; }
body.application .page-entete__chiffres strong { font-weight: 750; font-variant-numeric: tabular-nums; color: var(--bo-titre-texte); }
body.application .page-entete__banniere { margin: -22px -24px 16px; }
body.application .page-entete__banniere img { display: block; width: 100%; max-height: 240px; object-fit: cover; border-radius: var(--bo-rayon) var(--bo-rayon) 0 0; }
body.application .page-entete__sujet { margin-bottom: 0; }
body.application .page-entete__sujet > div + div { margin-top: 4px; }
body.application .page-entete__sujet :is(dt, dd) { display: inline; margin: 0; }
body.application .page-entete__sujet dt { font-weight: 650; color: var(--bo-titre-texte); }
body.application .page-entete__sujet .bouton { margin-left: 6px; vertical-align: 1px; }
@media (max-width: 600px) {
    body.application .page-entete { padding: 18px 16px; }
    body.application .page-entete__banniere { margin: -18px -16px 14px; }
    body.application .page-entete .page-entete__titre { font-size: 24px; }
}
/* Filtres et sélecteurs d'année en pastilles ; l'entrée courante pleine (aria-current), jamais la couleur seule. */
body.application .filtre-pastilles ul { display: flex; flex-wrap: wrap; gap: 6px; margin: 0; padding: 0; list-style: none; }
body.application .filtre-pastilles a:is(:link, :visited) { display: inline-block; padding: 5px 12px; font-size: 14px; font-weight: 600; line-height: 20px; color: var(--bo-texte); text-decoration: none; background: var(--bo-surface); border: 1px solid var(--bo-bord-fort); border-radius: 999px; transition: background-color 0.12s ease-out, border-color 0.12s ease-out; }
body.application .filtre-pastilles a:is(:hover, :focus) { color: var(--bo-texte); text-decoration: none; background: var(--bo-surface-2); }
body.application .filtre-pastilles a[aria-current] { color: var(--bo-sur-bouton); background: var(--bo-bouton); border-color: var(--bo-bouton); }
body.application .filtre-pastilles a[aria-current]:is(:hover, :focus) { color: var(--bo-sur-bouton); background: var(--bo-bouton-fort); }
/* État vide : un croissant de lune et le message centré. */
body.application .etat-vide { padding: 32px 20px; text-align: center; color: var(--bo-texte-2); }
body.application .etat-vide::before { content: ""; display: block; width: 44px; height: 44px; margin: 0 auto 12px; border-radius: 50%; box-shadow: inset -12px 8px 0 0 var(--bo-accent); transform: rotate(-12deg); }
body.application .etat-vide p + p { margin-top: 12px; }

/* Liste des défis : grille de cartes, logo cadré en tête, lot puis effectif en pied. Les deux blocs du lot (logo et
   récompense) passent dans la carte par display: contents pour se placer en tête et avant le pied, sans changer
   l'ordre de lecture (titre d'abord). */
body.application .defi-liste { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px; margin: 0 0 20px; }
body.application .carte.defi-carte { display: flex; flex-direction: column; margin: 0; padding: 0; overflow: hidden; transition: transform 0.15s ease-out, box-shadow 0.15s ease-out, border-color 0.15s ease-out; }
body.application .carte.defi-carte:hover { transform: translateY(-2px); border-color: var(--bo-bord-fort); box-shadow: var(--bo-ombre-haute); }
body.application .defi-carte.defi--national { border-top: 3px solid var(--bo-avert-plein); }
body.application .defi-carte__lot { display: contents; }
body.application .defi-carte__logo { order: -1; display: flex; align-items: center; justify-content: center; height: 96px; padding: 12px; background: #fff; border-bottom: 1px solid var(--bo-bord); }
body.application .defi-carte .defi__logo { display: block; width: auto; max-width: 75%; height: auto; max-height: 64px; object-fit: contain; }
/* Sans logo : le nom de la société sur le fond du thème (un grand cadre blanc vide éblouissait en sombre). */
body.application .defi-carte__logo:not(:has(img)) { background: var(--bo-surface-2); }
body.application .defi-carte .defi__societe { font-size: 17px; font-weight: 700; text-align: center; }
body.application .defi-carte .defi__societe a:is(:link, :visited) { color: var(--bo-accent); }
body.application .defi-carte__corps { padding: 16px 18px 10px; }
body.application .defi-carte h2.defi__nom { margin: 0 0 4px; padding: 0; font-size: 18px; font-weight: 700; line-height: 1.3; border: 0; }
body.application .defi-carte h2.defi__nom a:is(:link, :visited) { font-weight: 700; color: var(--bo-titre-texte); text-decoration: none; }
body.application .defi-carte h2.defi__nom a:is(:hover, :focus) { color: var(--bo-accent); text-decoration: underline; }
body.application .defi-carte h2.defi__nom .pastille { margin-left: 4px; font-size: 11px; vertical-align: 2px; }
body.application .defi-carte .defi__theme { margin: 0; font-size: 14px; color: var(--bo-texte-2); }
/* Podium en pastilles de médaille (images de l'existant, réduites). */
body.application .defi-carte .defi__podium { display: block; margin: 10px 0 0; padding: 0; font-weight: 600; font-size: 14px; }
body.application .defi-carte .defi__podium li { height: auto; min-height: 26px; margin: 0 0 4px; padding: 2px 0 0 32px; line-height: 1.4; background-size: 24px auto; background-position: left top; }
body.application .defi-carte .defi__podium li a:is(:link, :visited) { color: var(--bo-texte); }
body.application .defi-carte .defi__podium li:is(.defi__sans-laureat, .defi__video) { min-height: 0; margin: 6px 0 0; padding: 0; width: auto; }
body.application .defi-carte .defi__podium li.defi__video .bouton { display: inline-flex; }
body.application .defi-carte__recompense { order: 1; margin: 0 18px 14px; padding: 10px 12px; font-size: 14px; color: var(--bo-texte); background: var(--bo-surface-2); border-radius: var(--bo-rayon-petit); }
body.application .defi-carte__libelle { display: block; margin-bottom: 2px; font-size: 12px; font-weight: 650; letter-spacing: 0.05em; text-transform: uppercase; color: var(--bo-texte-2); }
body.application .defi-carte .defi__participants { order: 2; display: flex; align-items: center; justify-content: space-between; gap: 8px; margin: auto 0 0; padding: 10px 18px; font-size: 13px; color: var(--bo-texte-2); text-align: left; border-top: 1px solid var(--bo-bord); }
body.application .defi-carte .defi__compte { display: inline-block; min-width: 32px; margin: 0; padding: 2px 10px; font-size: 15px; font-weight: 750; text-align: center; font-variant-numeric: tabular-nums; color: var(--bo-accent); background: var(--bo-accent-doux); border-radius: 999px; }
@media (max-width: 600px) { body.application .defi-liste { grid-template-columns: minmax(0, 1fr); } }

/* Archives : grille des nuits (année, thème, bannière en vignette), chiffres en tuiles, sommaire en pastilles, défis en
   cartes (résultats à droite sur grand écran). */
body.application .archives-nuits__titre { margin: 8px 0 14px; font-size: 21px; color: var(--bo-titre-texte); }
body.application .archives-grille { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 14px; margin: 0 0 20px; padding: 0; list-style: none; }
body.application .archives-grille > li { margin: 0; padding: 0; border: 0; }
body.application .archives__wiki > li > a.archive-carte:is(:link, :visited) { display: flex; flex-direction: column; height: 100%; overflow: hidden; color: var(--bo-texte); text-decoration: none; background: var(--bo-surface); border: 1px solid var(--bo-bord); border-radius: var(--bo-rayon); box-shadow: var(--bo-ombre); transition: transform 0.15s ease-out, box-shadow 0.15s ease-out, border-color 0.15s ease-out; }
body.application .archives__wiki > li > a.archive-carte:is(:hover, :focus) { color: var(--bo-texte); text-decoration: none; border-color: var(--bo-bord-fort); box-shadow: var(--bo-ombre-haute); transform: translateY(-2px); }
body.application .archive-carte__banniere { display: block; width: 100%; height: 84px; object-fit: cover; background: var(--bo-surface-2); }
body.application .archive-carte__banniere--vide { position: relative; background: linear-gradient(135deg, var(--bo-accent-doux), var(--bo-surface-2)); }
body.application .archive-carte__banniere--vide::after { content: ""; position: absolute; top: 18px; right: 20px; width: 40px; height: 40px; border-radius: 50%; box-shadow: inset -11px 7px 0 0 color-mix(in srgb, var(--bo-accent) 45%, transparent); }
body.application .archive-carte__annee { padding: 10px 14px 0; font-size: 26px; font-weight: 750; line-height: 1.15; font-variant-numeric: tabular-nums; color: var(--bo-titre-texte); }
body.application .archive-carte__theme { display: -webkit-box; padding: 2px 14px 14px; overflow: hidden; font-size: 14px; line-height: 1.4; color: var(--bo-texte-2); -webkit-line-clamp: 3; -webkit-box-orient: vertical; }
body.application .archive-carte__annee:last-child { padding-bottom: 14px; }
@media (max-width: 600px) { body.application .archives-grille { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; } }
body.application .chiffres-archive { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 10px; margin: 14px 0 0; padding: 0; list-style: none; }
body.application .chiffres-archive li { padding: 12px; text-align: center; background: var(--bo-surface-2); border-radius: var(--bo-rayon-petit); }
body.application .chiffres-archive__valeur { display: block; font-size: 24px; font-weight: 750; line-height: 1.2; font-variant-numeric: tabular-nums; color: var(--bo-titre-texte); }
body.application .chiffres-archive__libelle { font-size: 13px; color: var(--bo-texte-2); }
body.application .archives__sommaire { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 8px; padding: 0; list-style: none; }
body.application .archives__sommaire a:is(:link, :visited) { display: inline-block; padding: 4px 12px; font-size: 13px; font-weight: 600; color: var(--bo-texte); text-decoration: none; background: var(--bo-surface-2); border: 1px solid var(--bo-bord); border-radius: 999px; }
body.application .archives__sommaire a:is(:hover, :focus) { color: var(--bo-texte); text-decoration: none; border-color: var(--bo-bord-fort); background: var(--bo-surface-3); }
body.application .archives__defi { display: grid; grid-template-columns: minmax(0, 1fr); margin: 16px 0 0; padding: 0; overflow: hidden; background: var(--bo-surface); border: 1px solid var(--bo-bord); border-radius: var(--bo-rayon); scroll-margin-top: 80px; }
body.application .archives__defi > div { margin: 0; padding: 0 18px 14px; border: 0; border-radius: 0; }
body.application .archives__defi > div > :is(p, ul, .texte-riche) { margin-left: 0; margin-right: 0; }
body.application .archives__defi .archives__resume h3 { margin: 0 -18px 12px; padding: 12px 18px; font-size: 17px; font-weight: 700; color: var(--bo-titre-texte); background: var(--bo-titre-fond); border-bottom: 1px solid var(--bo-bord); border-radius: 0; }
body.application .archives__defi .archives__resume p { margin: 0 0 4px; }
body.application .archives__defi .archives__resume strong { color: var(--bo-titre-texte); }
body.application .archives__defi h4 { margin: 6px 0 8px; font-size: 13px; font-weight: 650; letter-spacing: 0.05em; text-transform: uppercase; color: var(--bo-texte-2); }
body.application .archives__defi .archives__podium { padding-top: 12px; background: var(--bo-surface-2); border-top: 1px solid var(--bo-bord); }
body.application .archives__podium .podium--liste li { min-height: 30px; margin: 0 0 6px; padding: 3px 0 0 38px; line-height: 1.4; background-size: 28px auto; }
body.application .archives__podium .podium--liste li a:is(:link, :visited) { color: var(--bo-texte); }
@media (min-width: 900px) {
    body.application .archives__defi:has(> .archives__podium) { grid-template-columns: minmax(0, 1fr) 300px; }
    body.application .archives__defi > :not(.archives__podium) { grid-column: 1; }
    body.application .archives__defi > .archives__podium { grid-column: 2; grid-row: 1 / span 4; border-top: 0; border-left: 1px solid var(--bo-bord); }
}
@media (prefers-reduced-motion: reduce) {
    body.application :is(.carte.defi-carte, .archives__wiki > li > a.archive-carte, .filtre-pastilles a) { transition: none; }
    body.application :is(.carte.defi-carte:hover, .archives__wiki > li > a.archive-carte:is(:hover, :focus)) { transform: none; }
}

/* Fenêtre de confirmation. */
body.application .confirmation { color: var(--bo-texte); background: var(--bo-surface); border: 1px solid var(--bo-bord); border-radius: 14px; box-shadow: var(--bo-ombre-haute); overflow: hidden; }
body.application .confirmation::backdrop { background: rgba(5, 12, 18, 0.55); -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px); }
body.application .confirmation__entete.alerte { margin: 0; border: 0; border-bottom: 1px solid var(--bo-bord); border-radius: 0; }
body.application .confirmation__pied { display: flex; justify-content: flex-end; gap: 8px; border-top-color: var(--bo-bord); }

/* Lien d'évitement. */
body.application a.lien-evitement:is(:link, :visited, :hover, :focus) { color: var(--bo-sur-bouton); background: var(--bo-bouton); border-radius: var(--bo-rayon-petit); }

/* Panel administrateur : bandeaux jusqu'aux bords de la carte, filets neutres (toutes les cartes y sont « danger »). */
body.application #panel-admin .carte > .carte__titre { margin: -20px -20px 16px; }
body.application #panel-admin :is(.carte--danger, .carte--succes) { border-top-width: 1px; border-top-color: var(--bo-bord); }
body.application #panel-admin .panel__libelle { white-space: nowrap; }
/* Tableaux de bord : plus de débord de 15 px façon .row de Bootstrap, tout s'aligne sur la même colonne. */
body.application :is(.tableau-bord__equipe, .tableau-bord__site, .tableau-bord__societe) > :is(.alerte, .carte) { margin-left: 0; margin-right: 0; }
body.application .tableau-bord__societe > .tableau-bord__defis, body.application .carte > ol#defis-releves { margin-left: 0; margin-right: 0; }
/* Fiche d'un défi : pas de carte autour des cartes ; encadrés « Theme: » et « Lot: » en ligne (le libellé à 1/6 de
   largeur chevauchait la valeur dans un encadré étroit). */
body.application .carte.defi-fiche { background: none; border: 0; box-shadow: none; }
body.application .defi__encadres > .alerte { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 8px; }
body.application .defi__encadres > .alerte::after { content: none; }
body.application .carte .defi__encadres h3.defi__libelle, body.application .carte .defi__encadres :is(p, div).defi__valeur { float: none; width: auto; margin: 0; padding: 0; font-size: 16px; font-weight: 600; line-height: 1.4; }
body.application .carte .defi__encadres :is(p, div).defi__valeur { font-weight: 400; }
@media (max-width: 767px) {
    .barre-appli .barre-appli__droite { align-items: flex-start; }
    .barre-appli .barre-appli__droite > li { width: 100%; }
}

/* Navigation latérale (templates/_navigation_laterale.html.twig) : celle du bureau (nav.navigation-admin, 28/10/2026)
   et le menu de l'équipe (nav.navigation-equipe, demande des testeurs du 29/10/2026), une seule par page.
   Grand écran (1100 px et plus) : barre latérale fixe de 248 px, le contenu se décale d'autant. En dessous : une
   rangée de liens sous la barre, qui défile horizontalement. Téléphone : liste dans le menu à trois barres.
   Entrée désactivée (.navigation-laterale__inactif, sans lien, aria-disabled) : grisée (--bo-texte-inactif, 4,5:1 au
   moins depuis l'audit du 31/10/2026, 3,5:1 avant), raison écrite sous le libellé partout (barre latérale, rangée,
   téléphone). */
.navigation-laterale { order: 3; display: flex; flex-basis: 100%; align-items: center; gap: 2px; margin: 10px -16px -10px; padding: 6px 16px; overflow-x: auto; border-top: 1px solid var(--bo-bord); scrollbar-width: thin; }
.navigation-laterale__titre, .navigation-laterale__groupe { display: none; margin: 0; }
.navigation-laterale__liste { display: flex; gap: 2px; margin: 0; padding: 0; list-style: none; }
.navigation-laterale__liste + .navigation-laterale__groupe + .navigation-laterale__liste, .navigation-laterale__liste + .navigation-laterale__liste { margin-left: 6px; padding-left: 8px; border-left: 1px solid var(--bo-bord); }
body.application .navigation-laterale__liste a, body.application .navigation-laterale__liste a:link, body.application .navigation-laterale__liste a:visited { display: flex; align-items: center; gap: 8px; padding: 6px 10px; font-size: 14px; font-weight: 500; color: var(--bo-texte-2); white-space: nowrap; text-decoration: none; border-radius: var(--bo-rayon-petit); }
body.application .navigation-laterale__liste a .icone { flex: none; color: var(--bo-texte-3); }
body.application .navigation-laterale__liste a:is(:hover, :focus) { color: var(--bo-texte); background: var(--bo-surface-2); text-decoration: none; }
body.application .navigation-laterale__liste a[aria-current] { color: var(--bo-accent); font-weight: 650; background: var(--bo-accent-doux); }
body.application .navigation-laterale__liste a[aria-current] .icone { color: inherit; }
body.application .navigation-laterale__liste a.navigation-laterale__inactif, body.application .navigation-laterale__liste a.navigation-laterale__inactif:hover { color: var(--bo-texte-inactif); cursor: not-allowed; background: none; }
body.application .navigation-laterale__liste a.navigation-laterale__inactif .icone { color: var(--bo-texte-inactif); }
.navigation-laterale__libelle { display: flex; flex-direction: column; min-width: 0; }
/* Raison d'une entrée désactivée : écrite sous le libellé à toutes les largeurs (audit du 31/10/2026 : dans la rangée de
   768 à 1099 px elle n'était lisible qu'en infobulle, au survol de la souris). */
.navigation-laterale__raison { display: block; margin: 2px 0 0; font-size: 12px; font-weight: 400; line-height: 1.4; color: var(--bo-texte-3); white-space: normal; }
body.application .navigation-laterale__liste a.navigation-laterale__inactif { align-items: flex-start; white-space: normal; }
body.application .navigation-laterale__liste a.navigation-laterale__inactif .icone { margin-top: 3px; }
@media (min-width: 768px) and (max-width: 1099px) { body.application .navigation-laterale__liste a.navigation-laterale__inactif { max-width: 16em; } }
.barre-appli__liens { flex: 1 1 0; flex-wrap: wrap; min-width: 0; }
.navigation-laterale { min-width: 0; }
/* Rangée sous la barre, de bord à bord : à gauche de la zone des liens, 24 px de marge, la maison (36 px), sa marge et l'écart (8 + 8 px). */
@media (min-width: 768px) { .navigation-laterale { flex-basis: calc(100% + 100px); margin: 10px -24px -10px -76px; padding: 6px 24px; } }
@media (max-width: 767px), (min-width: 1100px) {
    /* Liste verticale : libellés sur plusieurs lignes si besoin, raison d'une entrée désactivée sous son libellé. */
    body.application .navigation-laterale__liste a, body.application .navigation-laterale__liste a:link, body.application .navigation-laterale__liste a:visited { white-space: normal; }
}
@media (max-width: 767px) {
    .navigation-laterale { display: block; margin: 0 0 8px; padding: 4px 0 8px; overflow: visible; border-top: 0; border-bottom: 1px solid var(--bo-bord); }
    .navigation-laterale__groupe { display: block; padding: 10px 12px 4px; font-size: 12px; font-weight: 650; letter-spacing: 0.05em; text-transform: uppercase; color: var(--bo-texte-3); }
    .navigation-laterale__liste { display: block; }
    .navigation-laterale__liste + .navigation-laterale__groupe + .navigation-laterale__liste, .navigation-laterale__liste + .navigation-laterale__liste { margin-left: 0; padding-left: 0; border-left: 0; }
    body.application .navigation-laterale__liste a, body.application .navigation-laterale__liste a:link, body.application .navigation-laterale__liste a:visited { padding: 9px 12px; }
}
@media (min-width: 1100px) {
    body.application.avec-navigation-laterale { padding-left: 248px; }
    .navigation-laterale { position: fixed; top: 0; bottom: 0; left: 0; z-index: 950; display: block; width: 248px; margin: 0; padding: 16px 12px 24px; overflow-y: auto; background: var(--bo-surface); border-top: 0; border-right: 1px solid var(--bo-bord); }
    .navigation-laterale__titre { display: flex; align-items: center; height: 40px; margin: 0 0 8px; padding: 0 10px; font-size: 15px; font-weight: 700; color: var(--bo-titre-texte); }
    .navigation-laterale__groupe { display: block; margin: 16px 0 4px; padding: 0 10px; font-size: 12px; font-weight: 650; letter-spacing: 0.05em; text-transform: uppercase; color: var(--bo-texte-3); }
    .navigation-laterale__liste { display: block; }
    .navigation-laterale__liste li + li { margin-top: 2px; }
    .navigation-laterale__liste + .navigation-laterale__groupe + .navigation-laterale__liste, .navigation-laterale__liste + .navigation-laterale__liste { margin-left: 0; padding-left: 0; border-left: 0; }
    body.application .navigation-laterale__liste a, body.application .navigation-laterale__liste a:link, body.application .navigation-laterale__liste a:visited { padding: 8px 10px; }
}
/* « Discord de la Nuit », dernière entrée de toutes les navigations (30/10/2026) : séparée des groupes au-dessus par un
   filet horizontal dans la barre fixe et sur téléphone ; dans la rangée défilante, par le filet vertical de la règle
   « liste + liste » ci-dessus, comme les groupes entre eux. */
@media (max-width: 767px), (min-width: 1100px) {
    .navigation-laterale__discord { margin-top: 12px; padding-top: 8px; border-top: 1px solid var(--bo-bord); }
}

/* Forçages des fonctions datées (/editions/{id}/modifier, 30/10/2026) : trois boutons radio natifs présentés en segments.
   La radio reste dans le flux du clavier (flèches), masquée à l'œil ; son libellé porte l'apparence. Choisi : couleur
   d'état ET coche « ✓ » (jamais la couleur seule, RGAA 3.1). Couples de couleurs déjà vérifiés par ContrasteThemeTest. */
body.application .forcages > legend { margin-bottom: 12px; }
body.application .forcages__avertissement ul { margin: 6px 0; padding-left: 20px; }
body.application .forcage { margin: 0 0 14px; padding: 12px 14px; background: var(--bo-surface); border: 1px solid var(--bo-bord); border-radius: var(--bo-rayon-petit); }
body.application .forcage--actif { border-left: 4px solid var(--bo-danger); }
body.application .forcage > legend.forcage__libelle { float: left; width: 100%; margin: 0 0 4px; padding: 0; font-size: 15px; font-weight: 650; border: 0; }
body.application .forcage__description { clear: both; margin: 0 0 10px; font-size: 14px; color: var(--bo-texte-2); }
body.application .forcage__etat { display: block; margin-top: 4px; font-weight: 600; color: var(--bo-texte); }
body.application .segments { display: flex; flex-wrap: wrap; gap: 0; }
body.application .segments__radio { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip-path: inset(50%); border: 0; white-space: nowrap; }
body.application .segments__bouton { flex: 1 1 8.5em; margin: 0 0 0 -1px; padding: 8px 12px; font-size: 14px; font-weight: 600; text-align: center; color: var(--bo-texte); background: var(--bo-surface); border: 1px solid var(--bo-bord-fort); cursor: pointer; }
body.application .segments__bouton:first-of-type { margin-left: 0; border-radius: var(--bo-rayon-petit) 0 0 var(--bo-rayon-petit); }
body.application .segments__bouton:last-of-type { border-radius: 0 var(--bo-rayon-petit) var(--bo-rayon-petit) 0; }
body.application .segments__bouton:hover { background: var(--bo-surface-2); }
body.application .segments__radio:checked + .segments__bouton { position: relative; z-index: 1; font-weight: 700; border-width: 2px; }
body.application .segments__radio:checked + .segments__bouton::before { content: "✓ "; }
body.application .segments__radio:checked + .segments__bouton--oui { color: var(--bo-succes); background: var(--bo-succes-doux); border-color: var(--bo-succes); }
body.application .segments__radio:checked + .segments__bouton--date { color: var(--bo-accent); background: var(--bo-accent-doux); border-color: var(--bo-accent); }
body.application .segments__radio:checked + .segments__bouton--non { color: var(--bo-danger); background: var(--bo-danger-doux); border-color: var(--bo-danger); }
body.application .segments__radio:focus-visible + .segments__bouton { z-index: 2; outline: 3px solid var(--bo-focus); outline-offset: 2px; }
body.application .forcages-confirmation { padding: 16px 18px; border-width: 2px; border-left-width: 8px; }
body.application .forcages-confirmation__titre { margin: 0 0 8px; font-size: 20px; font-weight: 700; color: var(--bo-danger); }
body.application .forcages-confirmation__liste { margin: 8px 0 12px; padding-left: 20px; }
body.application .bandeau-forcages { border-left-width: 6px; }
body.application .bandeau-forcages p { margin: 0; }
@media (max-width: 600px) {
    body.application .segments { flex-direction: column; }
    body.application .segments__bouton { flex: 0 0 auto; margin: -1px 0 0; }
    body.application .segments__bouton:first-of-type { margin-top: 0; border-radius: var(--bo-rayon-petit) var(--bo-rayon-petit) 0 0; }
    body.application .segments__bouton:last-of-type { border-radius: 0 0 var(--bo-rayon-petit) var(--bo-rayon-petit); }
}

/* Recherche dynamique de l'adresse d'un hub (contrôleur Stimulus adresse, hub/_recherche_adresse.html.twig, 30/10/2026) :
   champ combobox, liste des adresses proposées sous le champ (option active : texte sur --bo-surface-2, filet d'accent),
   aperçu du point choisi sur une petite carte fixe (tuiles assombries en thème sombre, comme la carte des hubs). */
body.application .recherche-adresse { margin: 0 0 16px; }
body.application .recherche-adresse__combobox { position: relative; }
body.application .recherche-adresse__liste { position: absolute; top: calc(100% + 4px); left: 0; right: 0; z-index: 900; max-height: 280px; margin: 0; padding: 4px; overflow-y: auto; list-style: none; background: var(--bo-surface); border: 1px solid var(--bo-bord-fort); border-radius: var(--bo-rayon-petit); box-shadow: var(--bo-ombre-haute); }
body.application .recherche-adresse__liste[hidden] { display: none; }
body.application .recherche-adresse__option { padding: 8px 10px; color: var(--bo-texte); border-left: 3px solid transparent; border-radius: 6px; cursor: pointer; }
body.application .recherche-adresse__option:hover, body.application .recherche-adresse__option[aria-selected="true"] { background: var(--bo-surface-2); }
body.application .recherche-adresse__option[aria-selected="true"] { border-left-color: var(--bo-accent); font-weight: 600; }
body.application .recherche-adresse__apercu { margin: 12px 0 0; }
body.application .recherche-adresse__apercu[hidden] { display: none; }
body.application .recherche-adresse__carte { height: 200px; overflow: hidden; background: var(--bo-surface-2); border: 1px solid var(--bo-bord); border-radius: var(--bo-rayon-petit); }
/* L'aide des champs du formulaire de hub n'est lue que par les lecteurs d'écran (application.css, comme l'existant) :
   celle de la recherche reste visible, elle dit quoi faire et que l'étranger se saisit à la main. */
body.application .formulaire-site .recherche-adresse .champ__aide { position: static; width: auto; height: auto; margin: 6px 0 0; overflow: visible; clip: auto; white-space: normal; }
body.application .recherche-adresse__carte .leaflet-control-attribution { color: var(--bo-texte-2); background: var(--bo-surface); }
body.application .recherche-adresse__carte .leaflet-control-attribution a { color: var(--bo-accent); }
body.application .recherche-adresse__legende { margin: 6px 0 0; font-size: 13px; color: var(--bo-texte-2); }
body.application .recherche-adresse__point { stroke: #ffffff; fill: var(--bo-danger); }
:root[data-theme="dark"] body.application .recherche-adresse__carte .leaflet-tile-pane { filter: invert(1) hue-rotate(190deg) brightness(.85) contrast(.9) saturate(.6); }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) body.application .recherche-adresse__carte .leaflet-tile-pane { filter: invert(1) hue-rotate(190deg) brightness(.85) contrast(.9) saturate(.6); } }

/* En-tête du tableau de bord (tableau_de_bord/_entete.html.twig, demande du mainteneur du 30/10/2026) : bandeau de
   l'édition (phase, compte à rebours), rangée de tuiles chiffrées, frise des dates clés. Mêmes variables que le reste :
   couples de contraste vérifiés par tests/Public/ContrasteThemeTest.php. */
body.application .heros { position: relative; display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; margin: 0 0 20px; padding: 20px; overflow: hidden; color: var(--bo-texte); background: linear-gradient(135deg, var(--bo-accent-doux) 0%, var(--bo-surface) 78%); border: 1px solid var(--bo-bord); border-radius: var(--bo-rayon); box-shadow: var(--bo-ombre); }
/* Croissant de lune et étoiles décoratifs (aria-hidden), à droite du titre, dès 900 px. */
body.application .heros__tete { position: relative; }
body.application .heros__lune { display: none; }
@media (min-width: 900px) {
    body.application .heros__lune { position: absolute; top: 50%; right: 6%; display: block; width: 84px; height: 84px; margin-top: -42px; border-radius: 50%; box-shadow: inset -20px 12px 0 0 color-mix(in srgb, var(--bo-accent) 30%, transparent); transform: rotate(-12deg); }
    body.application .heros__lune::before, body.application .heros__lune::after { content: ""; position: absolute; width: 6px; height: 6px; background: color-mix(in srgb, var(--bo-accent) 40%, transparent); border-radius: 50%; }
    body.application .heros__lune::before { top: -14px; left: -26px; }
    body.application .heros__lune::after { bottom: 2px; left: -46px; width: 4px; height: 4px; }
}
body.application .heros > * { position: relative; z-index: 1; }
@media (min-width: 900px) { body.application .heros { grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 32px; padding: 28px 32px; } }
body.application .heros p { margin: 0; }
body.application .heros__edition { font-size: 13px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--bo-accent); }
body.application .heros .heros__titre { margin: 4px 0 12px; padding: 0; font-size: 30px; font-weight: 750; line-height: 1.15; letter-spacing: -0.02em; color: var(--bo-titre-texte); background: none; border: 0; }
body.application .heros__pastille { display: inline-flex; align-items: center; gap: 8px; padding: 4px 12px; font-size: 13px; font-weight: 650; line-height: 20px; color: var(--bo-sur-bouton); background: var(--bo-bouton); border-radius: 999px; }
body.application .heros__pastille::before { content: ""; width: 8px; height: 8px; background: currentColor; border-radius: 50%; }
body.application .heros--inscriptions .heros__pastille { color: var(--bo-succes); background: var(--bo-succes-doux); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--bo-succes) 35%, transparent); }
body.application .heros--avant_la_nuit .heros__pastille { color: var(--bo-avert); background: var(--bo-avert-doux); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--bo-avert) 35%, transparent); }
body.application :is(.heros--preparation, .heros--apres) .heros__pastille { color: var(--bo-texte); background: var(--bo-surface-2); box-shadow: inset 0 0 0 1px var(--bo-bord-fort); }
body.application .heros__surtitre { font-size: 12px; font-weight: 650; letter-spacing: 0.06em; text-transform: uppercase; color: var(--bo-texte-2); }
body.application .heros__jalon { margin-top: 2px; font-size: 19px; font-weight: 700; line-height: 1.3; color: var(--bo-titre-texte); }
body.application .heros__date { font-size: 14px; color: var(--bo-texte-2); }
body.application .compte-a-rebours__chiffres { display: flex; flex-wrap: wrap; gap: 8px; margin: 12px 0 0; }
body.application .compte-a-rebours__bloc { display: inline-flex; flex-direction: column; align-items: center; min-width: 62px; padding: 8px 6px 6px; background: var(--bo-surface); border: 1px solid var(--bo-bord); border-radius: var(--bo-rayon-petit); box-shadow: var(--bo-ombre); }
body.application .compte-a-rebours__valeur { font-size: 28px; font-weight: 750; line-height: 1.1; font-variant-numeric: tabular-nums; color: var(--bo-titre-texte); }
body.application .compte-a-rebours__unite { font-size: 12px; font-weight: 600; color: var(--bo-texte-2); }
body.application .compte-a-rebours__pause { margin: 8px 0 0; padding: 2px 0; font: inherit; font-size: 13px; color: var(--bo-accent); text-decoration: underline; text-underline-offset: 0.15em; cursor: pointer; background: none; border: 0; }
body.application .compte-a-rebours__pause:hover { color: var(--bo-accent-fort); }
@media (max-width: 600px) {
    body.application .heros { padding: 18px 16px; }
    body.application .heros .heros__titre { font-size: 24px; }
    body.application .compte-a-rebours__bloc { min-width: 56px; }
    body.application .compte-a-rebours__valeur { font-size: 24px; }
}

body.application .tuiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 12px; margin: 0 0 20px; padding: 0; list-style: none; }
body.application .tuile { display: grid; grid-template-columns: auto minmax(0, 1fr); grid-template-areas: "icone valeur" "icone libelle" "icone aide"; column-gap: 12px; align-content: start; padding: 14px 16px; background: var(--bo-surface); border: 1px solid var(--bo-bord); border-radius: var(--bo-rayon); box-shadow: var(--bo-ombre); transition: transform 0.15s ease-out, box-shadow 0.15s ease-out, border-color 0.15s ease-out; }
body.application .tuile:hover { transform: translateY(-2px); border-color: var(--bo-bord-fort); box-shadow: var(--bo-ombre-haute); }
body.application .tuile__icone { grid-area: icone; display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; font-size: 16px; color: var(--bo-accent); background: var(--bo-accent-doux); border-radius: 10px; }
body.application .tuile__valeur { grid-area: valeur; font-size: 26px; font-weight: 750; line-height: 1.15; font-variant-numeric: tabular-nums; color: var(--bo-titre-texte); }
body.application .tuile__libelle { grid-area: libelle; font-size: 14px; font-weight: 600; line-height: 1.35; color: var(--bo-texte); }
body.application .tuile__aide { grid-area: aide; margin-top: 2px; font-size: 12px; line-height: 1.35; color: var(--bo-texte-2); }
/* Six tuiles (bureau) sur une largeur moyenne : deux rangées de trois plutôt que cinq et une orpheline. */
@media (min-width: 601px) and (max-width: 1279px) { body.application .tuiles--6 { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 600px) {
    body.application .tuiles { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
    body.application .tuile { grid-template-columns: minmax(0, 1fr); grid-template-areas: "valeur" "libelle" "aide"; padding: 12px; }
    body.application .tuile__icone { display: none; }
}

/* Frise des étapes : verticale sous 768 px, horizontale au-delà. Trois états lisibles sans la couleur (texte écrit sous
   chaque étape) : coche dans un disque plein = terminée, point plein et halo = en cours (« Vous êtes ici »), contour =
   à venir. Le trait qui suit une étape terminée est dans l'accent. */
body.application .frise { display: grid; margin: 0; padding: 4px 0 0; list-style: none; }
body.application .frise__etape { position: relative; padding: 0 0 18px 32px; }
body.application .frise__etape::before { content: ""; position: absolute; top: 20px; bottom: -2px; left: 8px; width: 2px; background: var(--bo-bord-fort); }
body.application .frise__etape:last-child::before { content: none; }
body.application .frise__etape--terminee::before { background: var(--bo-accent); }
body.application .frise__point { position: absolute; top: 1px; left: 0; box-sizing: border-box; width: 18px; height: 18px; background: var(--bo-surface); border: 2px solid var(--bo-bord-fort); border-radius: 50%; }
body.application .frise__etape--terminee .frise__point { background: var(--bo-accent); border-color: var(--bo-accent); }
body.application .frise__etape--terminee .frise__point::after { content: ""; position: absolute; top: 2px; left: 5px; width: 4px; height: 8px; border: solid var(--bo-surface); border-width: 0 2px 2px 0; transform: rotate(45deg); }
body.application .frise__etape--en-cours .frise__point { background: var(--bo-bouton); border-color: var(--bo-bouton); box-shadow: 0 0 0 4px color-mix(in srgb, var(--bo-bouton) 22%, transparent); }
body.application .frise__etape--en-cours .frise__point::after { content: ""; position: absolute; inset: -2px; border-radius: 50%; box-shadow: 0 0 0 0 color-mix(in srgb, var(--bo-bouton) 45%, transparent); animation: bo-halo 1.6s ease-out 3; }
@keyframes bo-halo { from { box-shadow: 0 0 0 0 color-mix(in srgb, var(--bo-bouton) 45%, transparent); } to { box-shadow: 0 0 0 10px color-mix(in srgb, var(--bo-bouton) 0%, transparent); } }
body.application .frise__ici { display: inline-block; margin-bottom: 4px; padding: 1px 10px; font-size: 12px; font-weight: 650; line-height: 18px; color: var(--bo-sur-bouton); background: var(--bo-bouton); border-radius: 999px; }
body.application .frise__libelle { display: block; font-size: 14px; font-weight: 650; line-height: 1.35; color: var(--bo-texte); }
body.application .frise__etape--terminee .frise__libelle { font-weight: 500; color: var(--bo-texte-2); }
body.application .frise__etape--en-cours .frise__libelle { color: var(--bo-titre-texte); }
body.application .frise__date { display: block; margin-top: 2px; font-size: 13px; line-height: 1.35; color: var(--bo-texte-2); }
body.application .frise__etat { display: block; margin-top: 2px; font-size: 12px; font-weight: 650; letter-spacing: 0.02em; color: var(--bo-texte-2); }
body.application .frise__etape--en-cours .frise__etat { color: var(--bo-accent); }
@media (min-width: 768px) {
    body.application .frise { grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); }
    body.application .frise__etape { padding: 30px 12px 4px 0; }
    body.application .frise__etape::before { top: 8px; right: 0; bottom: auto; left: 20px; width: auto; height: 2px; }
}

/* Micro-animations (30/10/2026) : apparition des cartes (fondu et glissement de 6 px), survol des tuiles et des entrées de
   menu, pression des boutons, ouverture des menus, fondu des couleurs à la bascule du thème ; 120 à 250 ms, sans
   remplissage persistant (aucun contexte d'empilement laissé derrière). Seule exception, le halo de l'étape en cours
   de la frise : trois battements de 1,6 s puis plus rien (moins de 5 s, WCAG 2.2.2). Toutes coupées sous
   prefers-reduced-motion (fin de feuille). */
@keyframes bo-apparition { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
@keyframes bo-menu { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }
body.application main :is(.carte, .heros, .alerte):not(:is(.carte, .alerte) *) { animation: bo-apparition 0.22s ease-out; }
body.application .tuile { animation: bo-apparition 0.22s ease-out backwards; animation-delay: calc(min(var(--rang, 0), 5) * 20ms); }
body.application .bouton:active:not(:disabled, .bouton--indisponible) { transform: translateY(1px) scale(0.98); }
body.application .navigation-laterale__liste a, body.application .barre-appli .menu-deroulant__liste > li > a, body.application .barre-appli__gauche > li > a, body.application .barre-appli__droite > li > a { transition: background-color 0.12s ease-out, color 0.12s ease-out; }
body.application .navigation-laterale__liste a .icone, body.application .barre-appli .menu-deroulant__liste > li > a .icone { transition: transform 0.15s ease-out; }
body.application .navigation-laterale__liste a:not(.navigation-laterale__inactif):hover .icone, body.application .barre-appli .menu-deroulant__liste > li > a:hover .icone { transform: translateX(2px); }
body.application .menu-deroulant[open] > .menu-deroulant__liste { animation: bo-menu 0.15s ease-out; }
:root.theme-en-transition body.application, :root.theme-en-transition body.application *, :root.theme-en-transition body.application *::before, :root.theme-en-transition body.application *::after { transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease, fill 0.2s ease !important; }

/* Téléphone : cartes et titres plus compacts. */
@media (max-width: 600px) {
    body.application .carte { padding: 16px; }
    body.application .carte > .carte__titre { margin: -16px -16px 14px; padding: 12px 16px; }
    body.application .carte > .carte__titre:last-child { margin-bottom: -16px; }
    body.application main > :is(h1, h2, h3), body.application .titre-page { font-size: 22px; }
    body.application .tableau :is(th, td) { padding: 8px 10px; }
}

@media print {
    .barre-appli { position: static; }
    body.application.avec-navigation-laterale { padding-left: 0; }
    .navigation-laterale { display: none !important; }
}

/* Déconnexion en POST (audit de sécurité du 31/10/2026, B3) : boutons du formulaire de fin de page
   (templates/_formulaire_deconnexion.html.twig, attribut form=), même apparence que les liens du menu du compte ;
   « Se déconnecter » du second facteur, même apparence qu'un lien. Le formulaire lui-même, sans bouton, est masqué. */
.barre-appli .menu-deroulant__liste > li > .menu-deroulant__bouton { display: flex; align-items: center; gap: 10px; width: 100%; padding: 7px 10px; font: inherit; font-size: 14px; line-height: inherit; color: var(--bo-texte); text-align: left; white-space: nowrap; background: none; border: 0; border-radius: 6px; cursor: pointer; }
.barre-appli .menu-deroulant__liste > li > .menu-deroulant__bouton .icone { color: var(--bo-texte-3); }
.barre-appli .menu-deroulant__liste > li > .menu-deroulant__bouton:is(:hover, :focus) { color: var(--bo-texte); background: var(--bo-surface-2); }
.formulaire-deconnexion { display: none; }
body.application .bouton-lien { padding: 0; font: inherit; color: var(--bo-accent); text-decoration: underline; text-underline-offset: 0.15em; background: none; border: 0; cursor: pointer; }
body.application .bouton-lien:is(:hover, :focus) { color: var(--bo-accent-fort); }

/* Moins d'animations demandé par le système : aucune animation ni transition, aucun déplacement au survol ou à la
   pression (RGAA 13.8 ; WCAG 2.3.3). */
@media (prefers-reduced-motion: reduce) {
    body.application *, body.application *::before, body.application *::after { animation: none !important; transition: none !important; }
    body.application :is(.tuile:hover, .bouton:active), body.application .navigation-laterale__liste a:hover .icone, body.application .barre-appli .menu-deroulant__liste > li > a:hover .icone { transform: none !important; }
}

/* Statistiques publiques (/statistiques, 31/10/2026) : tuiles des chiffres reprises des archives ; dans le tableau par hub,
   nombres alignés à droite en chiffres tabulaires ; note de lecture en texte secondaire (couple déjà vérifié). */
body.application .statistiques__tableau th[scope=col]:not(:first-child), body.application .statistiques__tableau td { text-align: right; font-variant-numeric: tabular-nums; }
body.application .statistiques__note { margin: 12px 0 0; font-size: 14px; color: var(--bo-texte-2); }

/* Clôture d'un défi (05/11/2026) : rendus, classement et publication en trois étapes numérotées
   (podium/_cloture_defi.html.twig), sur le tableau de bord du partenaire et la fiche du défi. L'état de chaque étape est
   écrit dans sa pastille ; la couleur du numéro et du filet ne fait que le doubler : vert et coche = fait, bouton = à faire,
   gris = pas encore possible. */
body.application .cloture-defi__titre .pastille { margin-left: 8px; font-size: 13px; vertical-align: middle; }
body.application .cloture-defi__intro { color: var(--bo-texte-2); }
body.application .cloture-intro ol { margin: 6px 0 0; padding-left: 22px; }
body.application .cloture__etapes { display: grid; gap: 14px; margin: 0; padding: 0; list-style: none; }
body.application .cloture__etape { padding: 14px 16px 6px; background: var(--bo-surface); border: 1px solid var(--bo-bord); border-left: 4px solid var(--bo-bord-fort); border-radius: var(--bo-rayon-petit); }
body.application .cloture__etape--faite { border-left-color: var(--bo-succes); }
body.application .cloture__etape--a-faire { border-left-color: var(--bo-bouton); }
body.application .cloture__entete { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; margin-bottom: 8px; }
body.application .cloture__numero { display: inline-flex; flex: none; align-items: center; justify-content: center; box-sizing: border-box; width: 30px; height: 30px; font-weight: 700; color: var(--bo-texte-3); background: var(--bo-surface-2); border: 2px solid var(--bo-bord-fort); border-radius: 50%; }
body.application .cloture__etape--a-faire .cloture__numero { color: var(--bo-sur-bouton); background: var(--bo-bouton); border-color: var(--bo-bouton); }
body.application .cloture__etape--faite .cloture__numero { color: var(--bo-succes); background: var(--bo-succes-doux); border-color: var(--bo-succes); }
body.application .carte .cloture__entete > .cloture__titre { flex: 1 1 auto; margin: 0; padding: 0; font-size: 17px; font-weight: 650; line-height: 1.3; color: var(--bo-texte); border-bottom: 0; }
body.application .cloture__corps > p { max-width: 75ch; }
body.application .cloture__resume { font-size: 15px; }
body.application .cloture__rendus caption { padding: 4px 0 8px; font-weight: 600; text-align: left; color: var(--bo-texte-2); caption-side: top; }
body.application .cloture__rendus th[scope=row] { font-weight: 600; }
body.application .cloture__rendus td { overflow-wrap: anywhere; }
body.application .cloture__apercu { margin: 4px 0 12px; padding: 12px 14px; background: var(--bo-surface-2); border-radius: var(--bo-rayon-petit); }
body.application .cloture__apercu-titre, body.application .cloture__libelle { margin-bottom: 4px; font-weight: 600; color: var(--bo-texte); }
body.application .cloture__apercu .podium--graphique { max-width: 600px; margin: 0 auto 8px; }
body.application .cloture__apercu .podium__place { flex: 0 1 200px; }
body.application .cloture__commentaire { white-space: normal; }
body.application .saisie-classement .saisie__bloc { margin: 0 0 18px; padding: 0; border: 0; }
body.application .saisie-classement .saisie__bloc > legend { width: 100%; margin-bottom: 10px; padding-bottom: 6px; border-bottom: 1px solid var(--bo-bord); }
body.application .saisie__mode-emploi ol { margin: 6px 0 0; padding-left: 22px; }
body.application .saisie__mode-emploi li + li { margin-top: 4px; }
body.application .podium__commentaire-titre { display: inline-block; margin-bottom: 2px; }
