/* ==========================================================================
   NOYAU — back-office (Bootstrap 5.3, thème sombre)
   Direction artistique : HUD organique (docs/CDC.md §2). Noir brûlé, orange braise,
   lueurs diffuses, libellés techniques en monospace.

   Sommaire
   1.  Tokens de la DA et surcharge des variables Bootstrap
   2.  Base, typographie, utilitaires
   3.  Structure : barre latérale, barre du haut, contenu
   4.  Logo et navigation
   5.  Menu « Mon compte » et menus déroulants
   6.  Cards, en-tête de page, tuiles de chiffres
   7.  Boutons
   8.  Formulaires et interrupteurs
   9.  Messages flash
   10. Badges
   11. Tableaux et DataTables
   12. Select personnalisé (.select-custom)
   13. SweetAlert2
   14. Pages de connexion
   ========================================================================== */

/* ---------- 1. Tokens ---------- */
:root {
    --noyau-bg: #0A0806;
    --noyau-s1: #15110C;
    --noyau-s2: #231B13;
    --noyau-s3: #2E241A;
    --noyau-line: rgba(255, 138, 61, .24);
    --noyau-hair: rgba(255, 255, 255, .07);
    --noyau-hair2: rgba(255, 255, 255, .16);
    --noyau-text: #F4EEE7;
    --noyau-muted: #AC9E8F;
    --noyau-faint: #948778;
    --noyau-acc: #FF7A1A;
    --noyau-acc-hover: #FF8C3A;
    --noyau-acc-deep: #A83C05;
    --noyau-acc-text: #FF9A4D;
    --noyau-acc-soft: rgba(255, 122, 26, .12);
    --noyau-track: rgba(255, 255, 255, .08);
    --noyau-on-acc: #1A0C02;
    --noyau-cold: #8FB4C4;
    --noyau-cold-soft: rgba(143, 180, 196, .10);
    --noyau-danger: #E8745C;
    --noyau-danger-soft: rgba(232, 116, 92, .12);

    --noyau-glow-sm: 0 0 14px rgba(255, 122, 26, .55);
    --noyau-glow-bouton: 0 0 14px rgba(255, 122, 26, .35);
    --noyau-glow: 0 0 0 1px rgba(255, 122, 26, .35), 0 0 26px rgba(255, 122, 26, .30);
    --noyau-text-glow: 0 0 20px rgba(255, 122, 26, .55);

    --noyau-police-titre: "Unbounded", "Manrope", system-ui, sans-serif;
    --noyau-police-texte: "Manrope", system-ui, -apple-system, "Segoe UI", sans-serif;
    --noyau-police-mono: "JetBrains Mono", ui-monospace, "Cascadia Mono", Consolas, monospace;

    --noyau-rayon-carte: 20px;
    --noyau-rayon-bouton: 14px;
    --noyau-largeur-barre: 260px;
    --noyau-hauteur-haut: 76px;
}

:root[data-bs-theme="dark"] {
    color-scheme: dark;

    --bs-body-bg: var(--noyau-bg);
    --bs-body-bg-rgb: 10, 8, 6;
    --bs-body-color: var(--noyau-text);
    --bs-body-color-rgb: 244, 238, 231;
    --bs-body-font-family: var(--noyau-police-texte);
    --bs-body-font-size: .9375rem;
    --bs-body-line-height: 1.55;

    --bs-emphasis-color: #FFFFFF;
    --bs-secondary-color: var(--noyau-muted);
    --bs-secondary-bg: var(--noyau-s2);
    --bs-tertiary-color: var(--noyau-faint);
    --bs-tertiary-bg: var(--noyau-s1);

    --bs-primary: var(--noyau-acc);
    --bs-primary-rgb: 255, 122, 26;
    --bs-primary-text-emphasis: var(--noyau-acc-text);
    --bs-primary-bg-subtle: var(--noyau-acc-soft);
    --bs-primary-border-subtle: var(--noyau-line);

    --bs-link-color: var(--noyau-acc-text);
    --bs-link-color-rgb: 255, 154, 77;
    --bs-link-hover-color: #FFB57A;
    --bs-link-hover-color-rgb: 255, 181, 122;
    --bs-link-decoration: none;

    --bs-border-color: var(--noyau-hair);
    --bs-border-color-translucent: var(--noyau-hair);
    --bs-border-radius: 12px;
    --bs-border-radius-sm: 10px;
    --bs-border-radius-lg: 16px;

    --bs-heading-color: var(--noyau-text);
    --bs-highlight-bg: var(--noyau-acc-soft);
    --bs-highlight-color: var(--noyau-acc-text);
    --bs-code-color: var(--noyau-acc-text);

    --bs-focus-ring-color: rgba(255, 122, 26, .45);
    --bs-focus-ring-width: 2px;
    --bs-focus-ring-opacity: 1;

    --bs-form-valid-color: var(--noyau-acc-text);
    --bs-form-valid-border-color: var(--noyau-acc);
    --bs-form-invalid-color: var(--noyau-danger);
    --bs-form-invalid-border-color: var(--noyau-danger);

    --bs-danger: var(--noyau-danger);
    --bs-danger-rgb: 232, 116, 92;
    --bs-danger-text-emphasis: var(--noyau-danger);
    --bs-danger-bg-subtle: var(--noyau-danger-soft);
    --bs-info: var(--noyau-cold);
    --bs-info-rgb: 143, 180, 196;
}

/* ---------- 2. Base ---------- */
html {
    scroll-padding-top: calc(var(--noyau-hauteur-haut) + 16px);
}

body {
    font-family: var(--noyau-police-texte);
    background: var(--noyau-bg);
    color: var(--noyau-text);
    -webkit-font-smoothing: antialiased;
    font-variant-numeric: tabular-nums;
}

h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6 {
    font-family: var(--noyau-police-titre);
    font-weight: 600;
    letter-spacing: -.01em;
}

a {
    text-decoration: none;
}

a:hover {
    text-decoration: underline;
    text-underline-offset: 3px;
}

::selection {
    background: rgba(255, 122, 26, .35);
    color: #FFFFFF;
}

/* Focus visible 2 px accent, partout. */
:focus-visible {
    outline: 2px solid var(--noyau-acc) !important;
    outline-offset: 2px;
    box-shadow: none !important;
}

.libelle-technique {
    font-family: var(--noyau-police-mono);
    font-size: .6875rem;
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--noyau-faint);
}

.valeur-mono {
    font-family: var(--noyau-police-mono);
    font-size: .8125rem;
    font-weight: 500;
    font-variant-numeric: tabular-nums;
}

.texte-secondaire {
    color: var(--noyau-muted);
    font-size: .875rem;
}

.texte-discret {
    color: var(--noyau-faint);
}

.titre-section {
    font-family: var(--noyau-police-titre);
    font-size: .9375rem;
    font-weight: 600;
    margin-bottom: 1rem;
}

.lien-discret {
    color: var(--noyau-muted);
}

.lien-discret:hover {
    color: var(--noyau-text);
}

.lien-evitement {
    position: absolute;
    top: -100px;
    left: 16px;
    z-index: 2000;
    padding: 10px 16px;
    border-radius: 12px;
    background: var(--noyau-acc);
    color: var(--noyau-on-acc);
    font-weight: 700;
}

.lien-evitement:focus {
    top: 12px;
}

/* ---------- 3. Structure ---------- */
.corps-administration {
    min-height: 100vh;
}

.barre-laterale {
    --bs-offcanvas-width: 280px;
    --bs-offcanvas-bg: var(--noyau-s1);
    --bs-offcanvas-color: var(--noyau-text);
    --bs-offcanvas-border-color: var(--noyau-hair);
    display: flex;
    flex-direction: column;
    background: var(--noyau-s1);
}

.barre-laterale__entete {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 22px 20px 18px;
}

.barre-laterale__corps {
    flex: 1 1 auto;
    overflow-y: auto;
    padding: 8px 14px 16px;
}

.barre-laterale__pied {
    padding: 16px 22px 22px;
    border-top: 1px solid var(--noyau-hair);
    font-size: .625rem;
}

@media (min-width: 992px) {
    .barre-laterale {
        position: fixed;
        inset: 0 auto 0 0;
        width: var(--noyau-largeur-barre);
        border-right: 1px solid var(--noyau-hair);
        z-index: 1030;
    }

    .zone-principale {
        margin-left: var(--noyau-largeur-barre);
    }
}

.zone-principale {
    position: relative;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    isolation: isolate;
}

/* Lueur d'ambiance, hors cadre, à gauche (comme le tableau de bord de l'app). */
.zone-principale::before {
    content: "";
    position: absolute;
    top: -180px;
    left: -200px;
    width: 400px;
    height: 400px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(255, 110, 20, .16) 0%, rgba(255, 110, 20, 0) 70%);
    pointer-events: none;
    z-index: -1;
}

.barre-haut {
    position: sticky;
    top: 0;
    z-index: 1020;
    display: flex;
    align-items: center;
    gap: 14px;
    min-height: var(--noyau-hauteur-haut);
    padding: 12px 32px;
    background: rgba(10, 8, 6, .86);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border-bottom: 1px solid var(--noyau-hair);
}

.barre-haut__titres {
    flex: 1 1 auto;
    min-width: 0;
}

.barre-haut__titre {
    margin: 0;
    font-size: 1.375rem;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.fil-ariane ol {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin: 0 0 2px;
    padding: 0;
    list-style: none;
    font-family: var(--noyau-police-mono);
    font-size: .625rem;
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--noyau-faint);
}

.fil-ariane li + li::before {
    content: "/";
    margin-right: 6px;
    color: var(--noyau-hair2);
}

.fil-ariane a {
    color: var(--noyau-faint);
}

.fil-ariane a:hover {
    color: var(--noyau-acc-text);
    text-decoration: none;
}

.fil-ariane [aria-current="page"] {
    color: var(--noyau-muted);
}

.contenu-administration {
    flex: 1 1 auto;
    width: 100%;
    max-width: 1440px;
    padding: 28px 32px 48px;
}

.contenu-administration:focus {
    outline: none;
}

@media (max-width: 991.98px) {
    .barre-haut {
        padding: 10px 16px;
        min-height: 64px;
    }

    .barre-haut__titre {
        font-size: 1.125rem;
    }

    .contenu-administration {
        padding: 20px 16px 40px;
    }

    .barre-laterale .barre-laterale__corps {
        padding-top: 0;
    }
}

.bouton-icone {
    --bs-btn-padding-x: 0;
    --bs-btn-padding-y: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border: 1px solid var(--noyau-hair);
    border-radius: 12px;
    background: var(--noyau-s1);
    color: var(--noyau-text);
    font-size: 1.25rem;
}

.bouton-icone:hover {
    border-color: var(--noyau-line);
    background: var(--noyau-s2);
    color: var(--noyau-acc-text);
}

.bouton-icone:disabled {
    opacity: .35;
}

/* ---------- 4. Logo et navigation ---------- */
.logo-noyau {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    color: var(--noyau-text);
}

.logo-noyau:hover {
    text-decoration: none;
    color: var(--noyau-text);
}

.logo-noyau__pictogramme {
    width: 34px;
    height: 34px;
    border-radius: 10px;
    box-shadow: 0 0 18px rgba(255, 122, 26, .25);
}

.logo-noyau__texte {
    display: inline-flex;
    align-items: baseline;
    gap: 6px;
    font-family: var(--noyau-police-titre);
    line-height: 1;
}

.logo-noyau__nom {
    font-size: 1.125rem;
    font-weight: 700;
    letter-spacing: -.01em;
}

.logo-noyau__separateur {
    color: var(--noyau-acc);
    text-shadow: var(--noyau-glow-sm);
}

.logo-noyau__sous-titre {
    font-family: var(--noyau-police-mono);
    font-size: .625rem;
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--noyau-faint);
}

.navigation-administration__titre {
    margin: 12px 10px 10px;
    font-size: .625rem;
}

.navigation-administration__liste {
    display: flex;
    flex-direction: column;
    gap: 4px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.navigation-administration__lien {
    position: relative;
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 44px;
    padding: 10px 12px;
    border: 1px solid transparent;
    border-radius: 14px;
    color: var(--noyau-muted);
    font-weight: 600;
    font-size: .875rem;
    transition: background-color .15s ease, color .15s ease, border-color .15s ease;
}

.navigation-administration__lien .bi {
    font-size: 1.125rem;
    width: 22px;
    text-align: center;
}

.navigation-administration__lien:hover {
    text-decoration: none;
    color: var(--noyau-text);
    background: var(--noyau-s2);
}

.navigation-administration__lien.est-active {
    color: var(--noyau-acc-text);
    background: var(--noyau-acc-soft);
    border-color: var(--noyau-line);
    font-weight: 700;
}

.navigation-administration__lien.est-active::before {
    content: "";
    position: absolute;
    left: -15px;
    top: 10px;
    bottom: 10px;
    width: 3px;
    border-radius: 0 3px 3px 0;
    background: var(--noyau-acc);
    box-shadow: var(--noyau-glow-sm);
}

.navigation-administration__lien.est-desactive {
    color: var(--noyau-faint);
    opacity: .55;
    cursor: not-allowed;
}

.navigation-administration__lien.est-desactive:hover {
    background: transparent;
    color: var(--noyau-faint);
}

.tooltip {
    --bs-tooltip-bg: var(--noyau-s3);
    --bs-tooltip-color: var(--noyau-text);
    --bs-tooltip-font-size: .75rem;
    --bs-tooltip-border-radius: 10px;
    font-family: var(--noyau-police-mono);
}

/* ---------- 5. Menu « Mon compte » et menus déroulants ---------- */
.menu-compte__bouton {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 5px 12px 5px 5px;
    border: 1px solid var(--noyau-hair);
    border-radius: 999px;
    background: var(--noyau-s1);
    color: var(--noyau-text);
    font-weight: 600;
    font-size: .875rem;
    transition: border-color .15s ease;
}

.menu-compte__bouton:hover,
.menu-compte__bouton[aria-expanded="true"] {
    border-color: var(--noyau-line);
}

.menu-compte__chevron {
    font-size: .75rem;
    color: var(--noyau-faint);
}

.pastille-initiales {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border-radius: 999px;
    background: var(--noyau-acc);
    color: var(--noyau-on-acc);
    font-family: var(--noyau-police-titre);
    font-size: .75rem;
    font-weight: 700;
    box-shadow: var(--noyau-glow-sm);
}

.menu-compte__identite {
    display: flex;
    flex-direction: column;
    padding: 8px 16px 4px;
}

.menu-compte__nom {
    font-weight: 700;
}

.menu-compte__email {
    font-family: var(--noyau-police-mono);
    font-size: .75rem;
    color: var(--noyau-faint);
}

.dropdown-menu {
    --bs-dropdown-bg: var(--noyau-s1);
    --bs-dropdown-color: var(--noyau-text);
    --bs-dropdown-border-color: var(--noyau-line);
    --bs-dropdown-border-radius: 16px;
    --bs-dropdown-link-color: var(--noyau-text);
    --bs-dropdown-link-hover-color: var(--noyau-text);
    --bs-dropdown-link-hover-bg: var(--noyau-s2);
    --bs-dropdown-link-active-color: var(--noyau-on-acc);
    --bs-dropdown-link-active-bg: var(--noyau-acc);
    --bs-dropdown-divider-bg: var(--noyau-hair);
    --bs-dropdown-item-padding-y: .55rem;
    --bs-dropdown-padding-y: .5rem;
    --bs-dropdown-min-width: 15rem;
    box-shadow: 0 18px 50px rgba(0, 0, 0, .55);
}

.dropdown-item {
    display: flex;
    align-items: center;
    gap: 10px;
    font-weight: 600;
    font-size: .875rem;
}

.dropdown-item .bi {
    color: var(--noyau-faint);
}

.dropdown-item:hover .bi {
    color: var(--noyau-acc-text);
}

.dropdown-item--deconnexion {
    width: 100%;
    border: 0;
    background: none;
    text-align: left;
}

/* ---------- 6. Cards, en-tête de page, tuiles ---------- */
.card {
    --bs-card-bg: var(--noyau-s1);
    --bs-card-color: var(--noyau-text);
    --bs-card-border-color: var(--noyau-hair);
    --bs-card-border-radius: var(--noyau-rayon-carte);
    --bs-card-inner-border-radius: calc(var(--noyau-rayon-carte) - 1px);
    --bs-card-spacer-x: 1.5rem;
    --bs-card-spacer-y: 1.5rem;
    --bs-card-cap-bg: transparent;
}

@media (max-width: 575.98px) {
    .card {
        --bs-card-spacer-x: 1rem;
        --bs-card-spacer-y: 1.125rem;
    }

    .fil-ariane {
        display: none;
    }
}

.carte--accent,
.carte--formulaire {
    --bs-card-border-color: var(--noyau-line);
}

.carte--formulaire {
    max-width: 760px;
}

.carte--secondaire {
    --bs-card-bg: rgba(21, 17, 12, .6);
}

.entete-page {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 24px;
}

.entete-page__surtitre {
    margin-bottom: 4px;
}

.entete-page__titre {
    margin: 0 0 4px;
    font-size: 1.25rem;
}

.entete-page__description {
    margin: 0;
    color: var(--noyau-muted);
    font-size: .875rem;
}

.entete-page__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

@media (max-width: 575.98px) {
    .entete-page__actions,
    .entete-page__actions .btn {
        width: 100%;
    }
}

.tuile-chiffre {
    height: 100%;
    transition: border-color .15s ease;
}

.tuile-chiffre .card-body {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.tuile-chiffre__entete {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.tuile-chiffre__icone {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border-radius: 12px;
    background: var(--noyau-s2);
    color: var(--noyau-muted);
    font-size: 1rem;
}

.tuile-chiffre__valeur {
    margin: 10px 0 0;
    font-family: var(--noyau-police-titre);
    font-size: 2.25rem;
    font-weight: 700;
    line-height: 1.1;
    font-variant-numeric: tabular-nums;
}

.tuile-chiffre__detail {
    margin: 0;
    color: var(--noyau-faint);
    font-size: .8125rem;
}

.tuile-chiffre--accent {
    --bs-card-border-color: var(--noyau-line);
    background-image: radial-gradient(circle at 100% 0%, rgba(255, 110, 20, .16), rgba(255, 110, 20, 0) 60%);
}

.tuile-chiffre--accent .tuile-chiffre__valeur {
    color: var(--noyau-acc-text);
    text-shadow: var(--noyau-text-glow);
}

.tuile-chiffre--accent .tuile-chiffre__icone {
    background: var(--noyau-acc-soft);
    color: var(--noyau-acc-text);
}

.carte--annonce {
    --bs-card-border-color: var(--noyau-hair);
    border-style: dashed;
}

.carte--annonce__contenu {
    display: flex;
    align-items: flex-start;
    gap: 16px;
}

.carte--annonce__pastille {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 14px;
    background: var(--noyau-acc-soft);
    color: var(--noyau-acc-text);
    font-size: 1.125rem;
}

/* ---------- 7. Boutons ---------- */
.btn {
    --bs-btn-font-family: var(--noyau-police-texte);
    --bs-btn-font-weight: 700;
    --bs-btn-font-size: .875rem;
    --bs-btn-padding-x: 1.1rem;
    --bs-btn-padding-y: .6rem;
    --bs-btn-border-radius: var(--noyau-rayon-bouton);
    --bs-btn-focus-box-shadow: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

.btn-sm {
    --bs-btn-padding-x: .6rem;
    --bs-btn-padding-y: .35rem;
    --bs-btn-font-size: .8125rem;
    --bs-btn-border-radius: 11px;
    min-width: 34px;
    min-height: 34px;
}

.bouton-large {
    --bs-btn-padding-y: .8rem;
    --bs-btn-font-size: .9375rem;
}

.btn-primary {
    --bs-btn-color: var(--noyau-on-acc);
    --bs-btn-bg: var(--noyau-acc);
    --bs-btn-border-color: var(--noyau-acc);
    --bs-btn-hover-color: var(--noyau-on-acc);
    --bs-btn-hover-bg: var(--noyau-acc-hover);
    --bs-btn-hover-border-color: var(--noyau-acc-hover);
    --bs-btn-active-color: var(--noyau-on-acc);
    --bs-btn-active-bg: #F06A0C;
    --bs-btn-active-border-color: #F06A0C;
    --bs-btn-disabled-color: var(--noyau-on-acc);
    --bs-btn-disabled-bg: var(--noyau-acc);
    --bs-btn-disabled-border-color: var(--noyau-acc);
    box-shadow: var(--noyau-glow-bouton);
}

.btn-primary:hover {
    box-shadow: 0 0 20px rgba(255, 122, 26, .5);
}

.btn-outline-secondary {
    --bs-btn-color: var(--noyau-text);
    --bs-btn-border-color: var(--noyau-hair2);
    --bs-btn-hover-color: var(--noyau-acc-text);
    --bs-btn-hover-bg: var(--noyau-s2);
    --bs-btn-hover-border-color: var(--noyau-line);
    --bs-btn-active-color: var(--noyau-acc-text);
    --bs-btn-active-bg: var(--noyau-acc-soft);
    --bs-btn-active-border-color: var(--noyau-acc);
    --bs-btn-disabled-color: var(--noyau-faint);
    --bs-btn-disabled-border-color: var(--noyau-hair);
}

.btn-outline-danger {
    --bs-btn-color: var(--noyau-danger);
    --bs-btn-border-color: rgba(232, 116, 92, .4);
    --bs-btn-hover-color: #1A0804;
    --bs-btn-hover-bg: var(--noyau-danger);
    --bs-btn-hover-border-color: var(--noyau-danger);
    --bs-btn-active-color: #1A0804;
    --bs-btn-active-bg: var(--noyau-danger);
    --bs-btn-active-border-color: var(--noyau-danger);
}

.btn-link {
    --bs-btn-color: var(--noyau-muted);
    --bs-btn-hover-color: var(--noyau-text);
    --bs-btn-font-weight: 600;
}

.actions-ligne {
    display: inline-flex;
    flex-wrap: nowrap;
    justify-content: flex-end;
    gap: 6px;
}

.formulaire-confirmation {
    display: inline-flex;
    margin: 0;
}

.boutons-ordre {
    display: inline-flex;
    gap: 4px;
}

.boutons-ordre .bouton-icone {
    width: 32px;
    height: 32px;
    font-size: .9375rem;
    border-radius: 10px;
}

/* ---------- 8. Formulaires ---------- */
.form-label {
    margin-bottom: .4rem;
    font-weight: 600;
    font-size: .8125rem;
    color: var(--noyau-muted);
}

.form-control,
.form-select {
    --bs-border-radius: 12px;
    min-height: 46px;
    padding: .65rem .9rem;
    background-color: var(--noyau-bg);
    border-color: var(--noyau-hair2);
    color: var(--noyau-text);
    font-size: .9375rem;
    transition: border-color .15s ease, box-shadow .15s ease;
}

.form-control::placeholder {
    color: var(--noyau-faint);
}

.form-control:hover,
.form-select:hover {
    border-color: rgba(255, 255, 255, .24);
}

.form-control:focus,
.form-select:focus {
    background-color: var(--noyau-bg);
    border-color: var(--noyau-acc);
    color: var(--noyau-text);
    box-shadow: 0 0 0 3px rgba(255, 122, 26, .18);
}

.form-control:disabled {
    background-color: var(--noyau-s2);
    opacity: .7;
}

.form-control.is-invalid,
.was-validated .form-control:invalid {
    border-color: var(--noyau-danger);
    background-image: none;
    padding-right: .9rem;
}

.invalid-feedback {
    color: var(--noyau-danger);
    font-size: .8125rem;
    font-weight: 600;
}

.form-text {
    color: var(--noyau-faint);
    font-size: .8125rem;
}

/* Chrome : fond d'autoremplissage aux couleurs de la DA. */
.form-control:-webkit-autofill,
.form-control:-webkit-autofill:hover,
.form-control:-webkit-autofill:focus {
    -webkit-text-fill-color: var(--noyau-text);
    -webkit-box-shadow: 0 0 0 1000px var(--noyau-s2) inset;
    caret-color: var(--noyau-text);
}

.formulaire-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
    margin-top: 1.75rem;
    padding-top: 1.25rem;
    border-top: 1px solid var(--noyau-hair);
}

/* Interrupteur (CDC §2.6) : 52 × 32, pastille 26, accent quand actif. */
.form-switch {
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 32px;
    padding-left: 0;
}

.form-switch .form-check-input {
    --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3.25' fill='%23AC9E8F'/%3e%3c/svg%3e");
    flex: 0 0 auto;
    width: 52px;
    height: 32px;
    margin: 0;
    float: none;
    border: 1px solid var(--noyau-hair);
    border-radius: 16px;
    background-color: var(--noyau-track);
    background-position: left center;
    cursor: pointer;
    transition: background-position .18s ease, background-color .18s ease, box-shadow .18s ease;
}

.form-switch .form-check-input:focus {
    --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3.25' fill='%23F4EEE7'/%3e%3c/svg%3e");
    border-color: var(--noyau-hair2);
    box-shadow: none;
}

.form-switch .form-check-input:checked {
    --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3.25' fill='%231A0C02'/%3e%3c/svg%3e");
    background-color: var(--noyau-acc);
    border-color: var(--noyau-acc);
    background-position: right center;
    box-shadow: var(--noyau-glow-sm);
}

.form-switch .form-check-input:disabled {
    opacity: .45;
    cursor: not-allowed;
}

.form-switch .form-check-input:disabled ~ .form-check-label {
    opacity: .6;
    cursor: not-allowed;
}

.form-switch .form-check-label {
    font-weight: 600;
    font-size: .9375rem;
    cursor: pointer;
}

.champ-switch .form-text {
    margin-top: 2px;
    padding-left: 64px;
}

.champ-switch .invalid-feedback {
    padding-left: 64px;
}

/* ---------- 9. Messages flash ---------- */
.zone-flash {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.zone-flash:not(:empty) {
    margin-bottom: 20px;
}

.flash {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 14px 14px 14px 16px;
    border: 1px solid var(--noyau-hair);
    border-radius: 16px;
    background: var(--noyau-s1);
    font-weight: 600;
    font-size: .875rem;
    transition: opacity .3s ease, transform .3s ease;
}

.flash.est-masque {
    opacity: 0;
    transform: translateY(-6px);
}

.flash__icone {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    border-radius: 999px;
    font-size: .875rem;
}

.flash__message {
    flex: 1 1 auto;
    padding-top: 3px;
}

.flash__fermer {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border: 0;
    border-radius: 8px;
    background: transparent;
    color: var(--noyau-faint);
}

.flash__fermer:hover {
    background: var(--noyau-s2);
    color: var(--noyau-text);
}

.flash--succes {
    border-color: var(--noyau-line);
    background: linear-gradient(0deg, var(--noyau-acc-soft), var(--noyau-acc-soft)), var(--noyau-s1);
}

.flash--succes .flash__icone {
    background: var(--noyau-acc);
    color: var(--noyau-on-acc);
    box-shadow: var(--noyau-glow-sm);
}

.flash--erreur {
    border-color: rgba(143, 180, 196, .35);
    background: linear-gradient(0deg, var(--noyau-cold-soft), var(--noyau-cold-soft)), var(--noyau-s1);
    color: #D6E6EE;
}

.flash--erreur .flash__icone {
    background: var(--noyau-cold);
    color: #0B1418;
}

.flash--info .flash__icone,
.flash--avertissement .flash__icone {
    background: var(--noyau-s2);
    color: var(--noyau-acc-text);
}

/* ---------- 10. Badges ---------- */
.badge-noyau {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 5px 10px;
    border: 1px solid var(--noyau-hair);
    border-radius: 999px;
    font-family: var(--noyau-police-mono);
    font-size: .625rem;
    font-weight: 600;
    letter-spacing: .12em;
    text-transform: uppercase;
    background: var(--noyau-s2);
    color: var(--noyau-muted);
}

.badge-noyau--actif {
    border-color: var(--noyau-line);
    background: var(--noyau-acc-soft);
    color: var(--noyau-acc-text);
}

.badge-noyau--actif::before {
    content: "";
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--noyau-acc);
    box-shadow: 0 0 8px rgba(255, 122, 26, .8);
}

.badge-noyau--inactif {
    border-color: rgba(143, 180, 196, .3);
    background: var(--noyau-cold-soft);
    color: var(--noyau-cold);
}

.badge-noyau--inactif::before {
    content: "";
    width: 6px;
    height: 6px;
    border-radius: 50%;
    border: 1.5px solid var(--noyau-cold);
}

.badge-noyau--neutre {
    padding: 3px 8px;
}

/* ---------- 11. Tableaux et DataTables ---------- */
.table {
    --bs-table-bg: transparent;
    --bs-table-color: var(--noyau-text);
    --bs-table-border-color: var(--noyau-hair);
    --bs-table-striped-bg: rgba(255, 255, 255, .015);
    --bs-table-hover-bg: rgba(255, 122, 26, .05);
    --bs-table-hover-color: var(--noyau-text);
    margin-bottom: 0;
    font-size: .875rem;
}

.table > :not(caption) > * > * {
    padding: .85rem .75rem;
}

.table > thead th {
    font-family: var(--noyau-police-mono);
    font-size: .625rem;
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--noyau-faint);
    border-bottom-color: var(--noyau-hair2);
    white-space: nowrap;
}

.table > tbody > tr:last-child > * {
    border-bottom: 0;
}

.table-donnees > tbody > tr:hover > * {
    background: rgba(255, 122, 26, .04);
}

/* Barre d'outils (recherche, longueur) et pied (info, pagination). */
div.dt-container {
    font-size: .875rem;
}

div.dt-container .dt-layout-row {
    margin: 0;
}

div.dt-container .dt-layout-row:first-child {
    margin-bottom: 16px;
    gap: 12px;
}

div.dt-container .dt-layout-row:last-child {
    margin-top: 16px;
    padding-top: 16px;
    border-top: 1px solid var(--noyau-hair);
    gap: 12px;
}

div.dt-container .dt-layout-table {
    margin: 0;
}

div.dt-container div.dt-search {
    position: relative;
}

div.dt-container div.dt-search label {
    position: absolute;
    left: 14px;
    top: 50%;
    transform: translateY(-50%);
    margin: 0;
    font-size: 0;
    color: var(--noyau-faint);
    pointer-events: none;
}

div.dt-container div.dt-search label::before {
    content: "\F52A";
    font-family: "bootstrap-icons";
    font-size: .9375rem;
}

div.dt-container div.dt-search input.form-control {
    width: 280px;
    max-width: 100%;
    margin-left: 0;
    padding-left: 40px;
    min-height: 42px;
}

div.dt-container div.dt-length {
    display: flex;
    align-items: center;
    gap: 10px;
}

div.dt-container div.dt-length label {
    color: var(--noyau-faint);
    font-size: .8125rem;
}

div.dt-container div.dt-length .form-select,
div.dt-container div.dt-length .select-custom {
    width: auto;
    min-width: 84px;
    margin-right: 0;
}

div.dt-container div.dt-info {
    padding-top: 0;
    font-family: var(--noyau-police-mono);
    font-size: .75rem;
    color: var(--noyau-faint);
}

div.dt-container .pagination {
    --bs-pagination-bg: transparent;
    --bs-pagination-color: var(--noyau-muted);
    --bs-pagination-border-color: transparent;
    --bs-pagination-border-radius: 10px;
    --bs-pagination-hover-bg: var(--noyau-s2);
    --bs-pagination-hover-color: var(--noyau-text);
    --bs-pagination-hover-border-color: var(--noyau-hair);
    --bs-pagination-focus-box-shadow: none;
    --bs-pagination-focus-bg: var(--noyau-s2);
    --bs-pagination-active-bg: var(--noyau-acc);
    --bs-pagination-active-color: var(--noyau-on-acc);
    --bs-pagination-active-border-color: var(--noyau-acc);
    --bs-pagination-disabled-bg: transparent;
    --bs-pagination-disabled-color: var(--noyau-faint);
    --bs-pagination-disabled-border-color: transparent;
    gap: 4px;
    margin: 0;
    font-family: var(--noyau-police-mono);
    font-size: .8125rem;
}

div.dt-container .pagination .page-link {
    min-width: 36px;
    height: 36px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 10px !important;
}

div.dt-container .pagination .page-item.active .page-link {
    box-shadow: var(--noyau-glow-sm);
    font-weight: 600;
}

/* Tri : flèches discrètes, accent sur la colonne triée. */
table.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order,
table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order,
table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order,
table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order {
    color: var(--noyau-faint);
}

table.dataTable thead > tr > th.dt-ordering-asc,
table.dataTable thead > tr > th.dt-ordering-desc {
    color: var(--noyau-acc-text);
}

table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order,
table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order {
    color: var(--noyau-acc-text);
}

table.dataTable > thead > tr > th:hover {
    outline: none;
}

table.dataTable td.dt-empty {
    padding: 40px 12px;
    text-align: center;
    color: var(--noyau-faint);
    font-family: var(--noyau-police-mono);
    font-size: .75rem;
    letter-spacing: .14em;
    text-transform: uppercase;
}

/* Responsive : bouton d'ouverture des colonnes masquées, lignes enfant. */
table.dataTable.dtr-inline.collapsed > tbody > tr > td.dtr-control::before {
    content: "";
    display: inline-block;
    width: 18px;
    height: 18px;
    margin-right: 10px;
    border: 1.5px solid var(--noyau-faint);
    border-radius: 999px;
    background: none;
    vertical-align: -3px;
    box-sizing: border-box;
    transition: all .15s ease;
}

table.dataTable.dtr-inline.collapsed > tbody > tr.dtr-expanded > td.dtr-control::before {
    border-color: var(--noyau-acc);
    background: var(--noyau-acc);
    box-shadow: var(--noyau-glow-sm);
}

table.dataTable > tbody > tr.child ul.dtr-details {
    width: 100%;
}

table.dataTable > tbody > tr.child ul.dtr-details > li {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 12px;
    padding: .6rem 0;
    border-bottom-color: var(--noyau-hair);
}

table.dataTable > tbody > tr.child span.dtr-title {
    min-width: 130px;
    font-family: var(--noyau-police-mono);
    font-size: .625rem;
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--noyau-faint);
}

table.dataTable > tbody > tr.child > td {
    background: rgba(255, 255, 255, .015);
}

@media (max-width: 767.98px) {
    div.dt-container .dt-layout-row:first-child .dt-layout-cell,
    div.dt-container .dt-layout-row:last-child .dt-layout-cell {
        width: 100%;
    }

    div.dt-container div.dt-search input.form-control {
        width: 100%;
    }

    div.dt-container .dt-layout-row:first-child {
        flex-direction: column-reverse;
    }
}

/* ---------- 12. Select personnalisé ---------- */
.select-natif-cache {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

.select-custom {
    position: relative;
    display: block;
    width: 100%;
}

.select-custom__bouton {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    width: 100%;
    min-height: 46px;
    padding: .6rem .9rem;
    border: 1px solid var(--noyau-hair2);
    border-radius: 12px;
    background: var(--noyau-bg);
    color: var(--noyau-text);
    font-size: .9375rem;
    font-weight: 500;
    text-align: left;
    cursor: pointer;
    transition: border-color .15s ease, box-shadow .15s ease;
}

.select-custom__bouton:hover {
    border-color: rgba(255, 255, 255, .24);
}

.select-custom__valeur {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.select-custom__valeur.est-vide {
    color: var(--noyau-faint);
}

.select-custom__chevron {
    flex: 0 0 auto;
    color: var(--noyau-faint);
    font-size: .8125rem;
    transition: transform .18s ease;
}

.select-custom--est-ouvert .select-custom__bouton {
    border-color: var(--noyau-acc);
    box-shadow: 0 0 0 3px rgba(255, 122, 26, .18);
}

.select-custom--est-ouvert .select-custom__chevron {
    transform: rotate(180deg);
    color: var(--noyau-acc-text);
}

.select-custom--est-desactive .select-custom__bouton {
    background: var(--noyau-s2);
    opacity: .55;
    cursor: not-allowed;
}

.select-custom--est-invalide .select-custom__bouton {
    border-color: var(--noyau-danger);
}

.select-custom--compact .select-custom__bouton {
    min-height: 38px;
    padding: .4rem .75rem;
    font-size: .8125rem;
}

.select-custom__panneau {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    z-index: 1060;
    width: 100%;
    min-width: 200px;
    padding: 6px;
    border: 1px solid var(--noyau-line);
    border-radius: 16px;
    background: var(--noyau-s1);
    box-shadow: 0 18px 50px rgba(0, 0, 0, .6);
}

.select-custom__panneau[hidden] {
    display: none;
}

.select-custom--vers-le-haut .select-custom__panneau {
    top: auto;
    bottom: calc(100% + 6px);
}

.select-custom__recherche {
    position: relative;
    margin-bottom: 6px;
}

.select-custom__recherche .bi {
    position: absolute;
    left: 12px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--noyau-faint);
    font-size: .875rem;
    pointer-events: none;
}

.select-custom__recherche input {
    width: 100%;
    min-height: 40px;
    padding: .45rem .75rem .45rem 34px;
    border: 1px solid var(--noyau-hair2);
    border-radius: 11px;
    background: var(--noyau-bg);
    color: var(--noyau-text);
    font-size: .875rem;
}

.select-custom__recherche input:focus {
    border-color: var(--noyau-acc);
    outline: none;
}

.select-custom__liste {
    max-height: 280px;
    margin: 0;
    padding: 0;
    overflow-y: auto;
    list-style: none;
    scrollbar-width: thin;
    scrollbar-color: var(--noyau-s3) transparent;
}

.select-custom__groupe {
    padding: 10px 10px 4px;
    font-family: var(--noyau-police-mono);
    font-size: .625rem;
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--noyau-faint);
}

.select-custom__option {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 9px 10px;
    border-radius: 10px;
    color: var(--noyau-text);
    font-size: .875rem;
    cursor: pointer;
    user-select: none;
}

.select-custom__option--dans-groupe {
    padding-left: 18px;
}

.select-custom__option::after {
    content: "\F633";
    font-family: "bootstrap-icons";
    font-size: .9375rem;
    color: var(--noyau-acc);
    opacity: 0;
}

.select-custom__option[aria-selected="true"] {
    color: var(--noyau-acc-text);
    font-weight: 700;
}

.select-custom__option[aria-selected="true"]::after {
    opacity: 1;
}

.select-custom__option--est-actif {
    background: var(--noyau-s2);
}

.select-custom__option[aria-disabled="true"] {
    color: var(--noyau-faint);
    opacity: .5;
    cursor: not-allowed;
}

.select-custom__option[hidden],
.select-custom__groupe[hidden] {
    display: none;
}

.select-custom__aucun {
    padding: 14px 10px;
    font-family: var(--noyau-police-mono);
    font-size: .6875rem;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--noyau-faint);
    text-align: center;
}

.select-custom__aucun[hidden] {
    display: none;
}

/* ---------- 13. SweetAlert2 ---------- */
div:where(.swal2-container) {
    z-index: 2000;
}

div:where(.swal2-container).swal2-backdrop-show {
    background: rgba(5, 4, 3, .72);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
}

.swal-noyau.swal2-popup {
    width: min(440px, calc(100vw - 32px));
    padding: 28px 24px 24px;
    border: 1px solid var(--noyau-line);
    border-radius: 24px;
    background: var(--noyau-s1);
    color: var(--noyau-text);
    font-family: var(--noyau-police-texte);
    box-shadow: 0 30px 80px rgba(0, 0, 0, .6), 0 0 40px rgba(255, 122, 26, .08);
}

.swal-noyau .swal-noyau__icone.swal2-icon {
    width: 56px;
    height: 56px;
    margin: 0 auto 16px;
    border: 0;
    border-radius: 999px;
    background: var(--noyau-acc);
    color: var(--noyau-on-acc);
    box-shadow: var(--noyau-glow-sm), 0 0 0 8px var(--noyau-acc-soft);
}

.swal-noyau .swal-noyau__icone .swal2-icon-content {
    font-size: 1.625rem;
}

.swal-noyau .swal2-title {
    padding: 0 8px;
    font-family: var(--noyau-police-titre);
    font-size: 1.125rem;
    font-weight: 600;
    color: var(--noyau-text);
}

.swal-noyau .swal2-html-container {
    margin: 12px 8px 0;
    color: var(--noyau-muted);
    font-size: .9375rem;
    line-height: 1.55;
}

.swal-noyau .swal2-actions {
    gap: 10px;
    width: 100%;
    margin-top: 24px;
    flex-wrap: wrap-reverse;
}

.swal-noyau .swal2-actions .btn {
    flex: 1 1 140px;
    margin: 0;
}

/* ---------- 14. Pages de connexion ---------- */
.corps-connexion {
    min-height: 100vh;
    background:
        radial-gradient(ellipse 60% 50% at 80% -10%, rgba(255, 110, 20, .22), rgba(255, 110, 20, 0) 70%),
        radial-gradient(ellipse 40% 40% at 0% 110%, rgba(255, 110, 20, .10), rgba(255, 110, 20, 0) 70%),
        var(--noyau-bg);
    background-attachment: fixed;
}

.connexion {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 20px;
    min-height: 100vh;
    padding: 32px 16px;
}

.connexion__carte {
    width: 100%;
    max-width: 420px;
    padding: 36px 32px 28px;
    border: 1px solid var(--noyau-line);
    border-radius: 24px;
    background: rgba(21, 17, 12, .92);
    box-shadow: 0 30px 80px rgba(0, 0, 0, .5), 0 0 60px rgba(255, 122, 26, .06);
}

@media (max-width: 420px) {
    .connexion__carte {
        padding: 28px 20px 22px;
    }
}

.connexion__logo {
    margin-bottom: 28px;
}

.connexion__titre {
    margin: 0 0 6px;
    font-size: 1.5rem;
}

.connexion__texte {
    margin: 0 0 24px;
    color: var(--noyau-muted);
    font-size: .875rem;
}

.connexion__formulaire .btn {
    margin-top: 8px;
}

.connexion__lien {
    margin: 20px 0 0;
    text-align: center;
    font-size: .875rem;
    font-weight: 600;
}

.connexion__lien a {
    color: var(--noyau-muted);
}

.connexion__lien a:hover {
    color: var(--noyau-acc-text);
}

.connexion__pied {
    margin: 0;
    font-size: .625rem;
}

@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        transition-duration: .01ms !important;
        animation-duration: .01ms !important;
    }
}

/* ---------- 15. Utilisateurs (lot 11) ---------- */
.badge-noyau--alerte {
    border-color: rgba(232, 116, 92, .35);
    background: var(--noyau-danger-soft);
    color: var(--noyau-danger);
}

.badge-noyau--alerte::before {
    content: "";
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--noyau-danger);
}

.texte-froid {
    color: var(--noyau-cold);
}

.texte-accent {
    color: var(--noyau-acc-text);
}

.texte-danger {
    color: var(--noyau-danger);
}

.petite-note {
    font-size: .75rem;
}

/* Filtres de la liste */
.filtres-utilisateurs {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    justify-content: space-between;
    gap: 12px 24px;
    margin-bottom: 20px;
    padding-bottom: 20px;
    border-bottom: 1px solid var(--noyau-hair);
}

.filtres-utilisateurs__champ {
    width: 260px;
    max-width: 100%;
}

.filtres-utilisateurs__champ .form-label {
    margin-bottom: 6px;
}

.lien-fiche {
    color: var(--noyau-text);
}

.lien-fiche:hover {
    color: var(--noyau-acc-text);
}

/* Jauge de vitalité */
.jauge-vitalite {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    min-width: 110px;
}

.jauge-vitalite__piste {
    position: relative;
    flex: 1 1 auto;
    height: 6px;
    border-radius: 999px;
    background: var(--noyau-track);
    overflow: hidden;
}

.jauge-vitalite__remplissage {
    position: absolute;
    inset: 0 auto 0 0;
    border-radius: inherit;
    background: linear-gradient(90deg, var(--noyau-acc-deep), var(--noyau-acc));
    box-shadow: var(--noyau-glow-sm);
}

.jauge-vitalite__valeur {
    flex: 0 0 auto;
    min-width: 3.2em;
    text-align: right;
}

.jauge-vitalite--froide .jauge-vitalite__remplissage {
    background: var(--noyau-cold);
    box-shadow: none;
}

.jauge-vitalite--froide .jauge-vitalite__valeur {
    color: var(--noyau-cold);
}

.jauge-vitalite--grande .jauge-vitalite__piste {
    height: 12px;
}

.jauge-vitalite--grande .jauge-vitalite__valeur {
    font-family: var(--noyau-police-titre);
    font-size: 1.125rem;
    font-weight: 600;
}

/* Barre de progression dans le niveau */
.barre-niveau {
    position: relative;
    height: 8px;
    border-radius: 999px;
    background: var(--noyau-track);
    overflow: hidden;
}

.barre-niveau__remplissage {
    position: absolute;
    inset: 0 auto 0 0;
    border-radius: inherit;
    background: var(--noyau-acc);
    box-shadow: var(--noyau-glow-sm);
}

/* Bandeau d'état de la fiche */
.alerte-fiche {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    margin-bottom: 24px;
    padding: 14px 18px;
    border: 1px solid var(--noyau-hair);
    border-radius: var(--noyau-rayon-bouton);
    font-size: .875rem;
}

.alerte-fiche > .bi {
    font-size: 1.125rem;
    line-height: 1.3;
}

.alerte-fiche--danger {
    border-color: rgba(232, 116, 92, .35);
    background: var(--noyau-danger-soft);
    color: var(--noyau-text);
}

.alerte-fiche--danger > .bi {
    color: var(--noyau-danger);
}

.alerte-fiche--froide {
    border-color: rgba(143, 180, 196, .3);
    background: var(--noyau-cold-soft);
}

.alerte-fiche--froide > .bi {
    color: var(--noyau-cold);
}

/* Listes de définitions de la fiche */
.liste-fiche {
    display: grid;
    gap: 0;
    margin-bottom: 12px;
}

.liste-fiche > div {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 16px;
    padding: 9px 0;
    border-bottom: 1px solid var(--noyau-hair);
}

.liste-fiche > div:last-child {
    border-bottom: 0;
}

.liste-fiche dt {
    flex: 0 0 auto;
    font-weight: 500;
    font-size: .8125rem;
    color: var(--noyau-muted);
}

.liste-fiche dd {
    margin: 0;
    text-align: right;
    font-size: .875rem;
    min-width: 0;
}

@media (min-width: 768px) {
    .liste-fiche--colonnes {
        grid-template-columns: 1fr 1fr;
        column-gap: 32px;
    }

    .liste-fiche--colonnes > div:nth-last-child(2):nth-child(odd) {
        border-bottom: 0;
    }
}

/* Chiffres clés de l'état du Noyau */
.chiffre-fiche {
    height: 100%;
    padding: 14px 16px;
    border: 1px solid var(--noyau-hair);
    border-radius: var(--noyau-rayon-bouton);
    background: var(--noyau-s1);
}

.chiffre-fiche__valeur {
    margin: 0;
    font-family: var(--noyau-police-titre);
    font-size: 1.375rem;
    font-weight: 600;
    line-height: 1.2;
    font-variant-numeric: tabular-nums;
}

.chiffre-fiche__valeur--accent {
    color: var(--noyau-acc-text);
    text-shadow: var(--noyau-text-glow);
}

.chiffre-fiche__unite {
    font-size: .875rem;
    color: var(--noyau-faint);
}

.chiffre-fiche__detail {
    margin: 2px 0 0;
    font-family: var(--noyau-police-mono);
    font-size: .6875rem;
    color: var(--noyau-faint);
}

.emoji-protocole {
    display: inline-block;
    width: 1.5em;
    text-align: center;
}

/* Événements récents (XP, vitalité) */
.liste-evenements {
    margin: 0;
    padding: 0;
    list-style: none;
}

.liste-evenements__element {
    padding: 10px 0 10px 12px;
    border-bottom: 1px solid var(--noyau-hair);
    border-left: 2px solid transparent;
}

.liste-evenements__element:last-child {
    border-bottom: 0;
}

.liste-evenements__element--admin {
    border-left-color: var(--noyau-acc);
}

.liste-evenements__entete {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    font-size: .875rem;
}

.liste-evenements__type {
    font-weight: 600;
}

.liste-evenements__details {
    color: var(--noyau-faint);
    font-size: .75rem;
}

.liste-evenements__motif {
    margin: 4px 0 0;
    color: var(--noyau-muted);
    font-size: .8125rem;
    overflow-wrap: anywhere;
}

/* Modales Bootstrap aux couleurs de la DA */
.modale-noyau {
    --bs-modal-bg: var(--noyau-s1);
    --bs-modal-color: var(--noyau-text);
    --bs-modal-border-color: var(--noyau-line);
    --bs-modal-border-radius: var(--noyau-rayon-carte);
    --bs-modal-inner-border-radius: calc(var(--noyau-rayon-carte) - 1px);
    --bs-modal-header-border-color: var(--noyau-hair);
    --bs-modal-footer-border-color: var(--noyau-hair);
    --bs-modal-padding: 1.5rem;
    --bs-modal-header-padding: 1.25rem 1.5rem;
    --bs-modal-box-shadow: 0 24px 64px rgba(0, 0, 0, .6), var(--noyau-glow);
}

.modale-noyau .modal-content {
    box-shadow: var(--bs-modal-box-shadow);
}

.modale-noyau .modal-header {
    align-items: flex-start;
}

.modal-backdrop {
    --bs-backdrop-bg: #000000;
    --bs-backdrop-opacity: .72;
}

@media (max-width: 575.98px) {
    .filtres-utilisateurs__champ {
        width: 100%;
    }

    .modale-noyau .modal-footer .btn {
        flex: 1 1 auto;
    }
}

/* ---------- 16. Équilibrage et simulateur (lot 12) ---------- */
.flash__liste {
    margin: 6px 0 0;
    padding-left: 1.1rem;
    font-weight: 500;
}

.encart-equilibrage {
    --bs-card-border-color: var(--noyau-line);
    background-image: radial-gradient(circle at 0% 0%, rgba(255, 110, 20, .10), rgba(255, 110, 20, 0) 55%);
}

.sommaire-parametres {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.sommaire-parametres__lien {
    padding: 6px 12px;
    border: 1px solid var(--noyau-hair);
    border-radius: 999px;
    background: var(--noyau-s1);
    color: var(--noyau-muted);
    font-size: .8125rem;
    font-weight: 600;
    text-decoration: none;
    transition: border-color .15s ease, color .15s ease;
}

.sommaire-parametres__lien:hover {
    border-color: var(--noyau-line);
    color: var(--noyau-acc-text);
}

.sommaire-parametres__lien.est-en-erreur {
    border-color: var(--noyau-danger);
    color: var(--noyau-danger);
}

.carte-parametre {
    scroll-margin-top: calc(var(--noyau-hauteur-haut) + 16px);
    transition: border-color .15s ease;
}

.carte-parametre.est-modifiee {
    --bs-card-border-color: var(--noyau-acc);
}

.carte-parametre--erreur {
    --bs-card-border-color: var(--noyau-danger);
}

.carte-parametre__entete {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
}

.carte-parametre__titre {
    margin: 0;
    font-family: var(--noyau-police-titre);
    font-size: 1.0625rem;
    font-weight: 600;
}

.carte-parametre__description {
    margin: 8px 0 4px;
    color: var(--noyau-muted);
    font-size: .875rem;
}

.carte-parametre__meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
    margin: 0 0 18px;
    color: var(--noyau-faint);
    font-size: .75rem;
}

.carte-parametre__formulaire .champ-parametre .form-label {
    font-size: .75rem;
}

.carte-parametre__apercu {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 16px;
}

.pastille-apercu,
.pastille-evenement {
    display: inline-block;
    padding: 3px 8px;
    border: 1px solid var(--noyau-hair);
    border-radius: 8px;
    background: var(--noyau-s2);
    color: var(--noyau-muted);
    font-size: .6875rem;
    white-space: nowrap;
}

.pastille-evenement {
    margin: 2px 4px 2px 0;
    font-family: var(--noyau-police-mono);
}

.carte-parametre__actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    margin-top: auto;
    padding-top: 20px;
}

.carte-parametre__etat {
    margin-right: auto;
    color: var(--noyau-acc-text);
    font-size: .75rem;
    font-weight: 700;
}

.carte-parametre__actions .formulaire-confirmation {
    display: inline-flex;
}

.champ-parametre__groupe .input-group-text {
    min-width: 44px;
    justify-content: center;
    border-color: var(--noyau-hair2);
    border-radius: 12px;
    background: var(--noyau-s2);
    color: var(--noyau-faint);
    font-family: var(--noyau-police-mono);
    font-size: .75rem;
}

.champ-parametre__groupe .form-control.is-invalid ~ .input-group-text {
    border-color: var(--noyau-danger);
}

.champ-parametre--compact .form-control {
    min-height: 40px;
    padding: .45rem .7rem;
}

.champ-parametre--compact .input-group-text {
    display: none;
}

.champ-parametre--compact .input-group > .form-control {
    border-radius: 12px !important;
}

.groupe-parametre {
    padding: 16px;
    border: 1px solid var(--noyau-hair);
    border-radius: 16px;
    background: rgba(10, 8, 6, .35);
}

.groupe-parametre__titre {
    float: none;
    width: auto;
    margin: 0 0 12px;
    font-family: var(--noyau-police-mono);
    font-size: .6875rem;
    font-weight: 600;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--noyau-faint);
}

.tableau-parametre__table {
    min-width: 420px;
}

.tableau-parametre__table > thead th {
    font-size: .6875rem;
}

.tableau-parametre__table > :not(caption) > * > * {
    vertical-align: top;
    padding: 6px 8px 6px 0;
    border-bottom: 0;
}

.tableau-parametre__table td:last-child {
    width: 52px;
}

.tableau-parametre__pied {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px;
}

.zone-json {
    font-size: .75rem;
    line-height: 1.5;
    white-space: pre;
    tab-size: 2;
}

.prereglages {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.reglage-a-tester {
    border: 1px solid var(--noyau-hair);
    border-radius: 16px;
    background: rgba(10, 8, 6, .35);
}

.reglage-a-tester > summary {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
    padding: 12px 16px;
    font-weight: 700;
    font-size: .875rem;
    cursor: pointer;
    list-style: none;
}

.reglage-a-tester > summary::-webkit-details-marker {
    display: none;
}

.reglage-a-tester > summary::before {
    content: "\F285";
    font-family: "bootstrap-icons";
    color: var(--noyau-faint);
    transition: transform .15s ease;
}

.reglage-a-tester[open] > summary::before {
    transform: rotate(90deg);
}

.reglage-a-tester__corps {
    padding: 0 16px 12px;
}

.graphique-simulation {
    position: relative;
    height: 280px;
}

.graphique-simulation--bas {
    height: 200px;
}

.legende-zones {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 14px;
    margin: 12px 0 0;
    color: var(--noyau-faint);
    font-size: .75rem;
}

.legende-zones__item::before {
    content: "";
    display: inline-block;
    width: 10px;
    height: 10px;
    margin-right: 6px;
    border-radius: 3px;
    vertical-align: -1px;
}

.legende-zones__item--froid::before {
    background: rgba(143, 180, 196, .45);
}

.legende-zones__item--frais::before {
    background: rgba(143, 180, 196, .22);
}

.legende-zones__item--tiede::before {
    background: rgba(255, 255, 255, .12);
}

.legende-zones__item--chaud::before {
    background: rgba(255, 122, 26, .3);
}

.texte-perte {
    color: var(--noyau-cold);
}

.texte-gain {
    color: var(--noyau-acc-text);
}

.table-donnees > tbody > tr.ligne-episode-froid > td:first-child {
    box-shadow: inset 3px 0 0 var(--noyau-cold);
}

@media (max-width: 575.98px) {
    .entete-page__actions .formulaire-confirmation {
        width: 100%;
    }
}

/* ---------- 17. Tableau de bord, suivi technique et export (lot 13) ---------- */
.formulaire-periode {
    display: flex;
    align-items: center;
    gap: 12px;
}

.formulaire-periode .select-custom,
.formulaire-periode .form-select {
    width: 160px;
}

/* En haut à droite de la page : le panneau (200 px minimum) s'ouvre vers la gauche. */
.formulaire-periode .select-custom__panneau {
    right: 0;
    left: auto;
}

.graphique-tableau-de-bord {
    position: relative;
    height: 260px;
    margin-top: 12px;
}

.formulaire-export {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 12px;
}

.formulaire-export__champ {
    flex: 1 1 160px;
}

.formulaire-export__champ .form-label {
    margin-bottom: 6px;
}

.tuile-chiffre--compacte .tuile-chiffre__valeur {
    margin-top: 6px;
    font-size: 1.5rem;
}

.tuile-chiffre--danger {
    --bs-card-border-color: rgba(232, 116, 92, .35);
}

.tuile-chiffre--danger .tuile-chiffre__valeur {
    color: var(--noyau-danger);
}

.onglets-noyau {
    display: flex;
    flex-wrap: nowrap;
    gap: 4px;
    margin: 0 0 20px;
    padding: 4px;
    overflow-x: auto;
    border: 1px solid var(--noyau-hair);
    border-radius: var(--noyau-rayon-bouton);
    background: var(--noyau-bg);
    scrollbar-width: none;
}

.onglets-noyau .nav-link {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 14px;
    border: 0;
    border-radius: 10px;
    color: var(--noyau-muted);
    font-size: .875rem;
    font-weight: 600;
    white-space: nowrap;
}

.onglets-noyau .nav-link:hover {
    color: var(--noyau-text);
}

.onglets-noyau .nav-link.active {
    background: var(--noyau-s2);
    color: var(--noyau-acc-text);
    box-shadow: inset 0 0 0 1px var(--noyau-line);
}

.onglets-noyau__compte {
    padding: 1px 7px;
    border-radius: 999px;
    background: var(--noyau-track);
    color: var(--noyau-faint);
    font-size: .6875rem;
}

.bloc-json {
    max-height: 320px;
    margin: 0;
    overflow: auto;
}

@media (max-width: 575.98px) {
    .formulaire-periode {
        width: 100%;
    }

    .formulaire-periode .select-custom,
    .formulaire-periode .form-select {
        flex: 1 1 auto;
        width: auto;
    }

    .graphique-tableau-de-bord {
        height: 220px;
    }
}
