:root {
    --criterium: #006d77;
    --criterium-vif: #10cbd4;
    --criterium-clair: #edf6f9;
    --criterium-bleu: #bde0fe;
    --texte: #222222;
    --texte-doux: #5b6770;
    --fond: #edf6f9;
    --blanc: #ffffff;
    --bordure: #cddce1;
    --ombre: 0 18px 45px rgba(0, 74, 82, .12);
    --menu-largeur: 220px;
}

* {
    box-sizing: border-box;
}

html,
body {
    min-height: 100%;
}

body {
    margin: 0;
    color: var(--texte);
    font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;
    background:
        radial-gradient(circle at 50% 15%, rgba(255, 255, 255, .95), transparent 42%),
        linear-gradient(180deg, #f7fcfd 0%, var(--fond) 100%);
}

/* Menu enseignant -------------------------------------------------------- */

.menu-lateral {
    position: fixed;
    inset: 0 auto 0 0;
    z-index: 100;
    width: var(--menu-largeur);
    display: flex;
    flex-direction: column;
    padding: 22px 16px 18px;
    background: linear-gradient(180deg, rgba(237, 246, 249, .98), rgba(189, 224, 254, .96));
    border-right: 1px solid rgba(0, 109, 119, .14);
    box-shadow: 5px 0 22px rgba(0, 74, 82, .08);
}

.menu-logo {
    display: block;
    width: 100%;
    padding: 0 10px 16px;
    text-align: center;
}

.menu-logo img {
    display: block;
    width: 108px;
    max-width: 100%;
    height: auto;
    margin: 0 auto;
    filter: drop-shadow(0 8px 15px rgba(0, 109, 119, .12));
    transition: transform .16s ease, filter .16s ease;
}

.menu-logo:hover img {
    transform: translateY(-1px);
    filter: drop-shadow(0 10px 17px rgba(0, 109, 119, .18));
}

.menu-annee {
    padding: 16px 4px 18px;
    border-top: 1px solid rgba(0, 109, 119, .12);
    border-bottom: 1px solid rgba(0, 109, 119, .12);
}

.menu-annee label {
    display: block;
    margin: 0 0 7px;
    color: var(--texte-doux);
    font-size: 11px;
    font-weight: 750;
    letter-spacing: .035em;
    text-transform: uppercase;
}

.menu-annee select {
    width: 100%;
    min-height: 38px;
    padding: 7px 30px 7px 10px;
    color: #21464b;
    background: rgba(255, 255, 255, .88);
    border: 1px solid rgba(0, 109, 119, .22);
    border-radius: 8px;
    outline: none;
    font: inherit;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
}

.menu-annee select:focus {
    border-color: var(--criterium);
    box-shadow: 0 0 0 3px rgba(0, 109, 119, .10);
}

.menu-pages {
    display: grid;
    gap: 5px;
    padding-top: 18px;
}

.menu-pages a {
    display: block;
    padding: 10px 11px;
    color: #36565b;
    border-radius: 8px;
    text-decoration: none;
    font-size: 14px;
    font-weight: 680;
    transition: color .14s ease, background .14s ease, transform .14s ease;
}

.menu-pages a:hover {
    color: var(--criterium);
    background: rgba(255, 255, 255, .55);
    transform: translateX(2px);
}

.menu-pages a.actif {
    color: #ffffff;
    background: linear-gradient(135deg, var(--criterium), #0493a0);
    box-shadow: 0 7px 16px rgba(0, 109, 119, .17);
}


.menu-utilisateur {
    margin-top: auto;
    padding: 16px 8px 2px;
    color: #36565b;
    border-top: 1px solid rgba(0, 109, 119, .12);
    font-size: 13px;
    font-weight: 700;
    line-height: 1.35;
    text-align: center;
}

/* Bandeau étudiant provisoire ------------------------------------------- */

.bandeau {
    position: sticky;
    top: 0;
    z-index: 100;
    min-height: 76px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    padding: 10px clamp(18px, 4vw, 56px);
    color: var(--criterium);
    background: linear-gradient(90deg, rgba(237, 246, 249, .96), rgba(189, 224, 254, .94));
    border-bottom: 1px solid rgba(0, 109, 119, .13);
    box-shadow: 0 4px 14px rgba(0, 0, 0, .07);
    backdrop-filter: blur(10px);
}

.marque {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    color: inherit;
    text-decoration: none;
    font-size: 21px;
    font-weight: 750;
    letter-spacing: -.02em;
}

.marque img {
    width: 46px;
    height: 46px;
    object-fit: contain;
}

.utilisateur {
    display: grid;
    grid-template-columns: auto auto;
    column-gap: 14px;
    align-items: center;
    text-align: right;
    font-size: 13px;
}

.utilisateur strong {
    grid-column: 1;
    color: #23444a;
    font-size: 14px;
}

.utilisateur span {
    grid-column: 1;
    color: var(--texte-doux);
    text-transform: capitalize;
}

.utilisateur a {
    grid-column: 2;
    grid-row: 1 / span 2;
    color: var(--criterium);
    text-decoration: none;
    font-weight: 700;
}

/* Contenu --------------------------------------------------------------- */

.page {
    width: min(1180px, calc(100% - 36px));
    margin: 42px auto;
}

.page-enseignant .page {
    width: auto;
    margin: 0 0 0 var(--menu-largeur);
    padding: 26px clamp(24px, 3vw, 46px);
}

.carte-simple {
    min-height: 320px;
    padding: 0;
    background: transparent;
    border: 0;
    border-radius: 0;
    box-shadow: none;
}

.page-enseignant .carte-simple {
    min-height: calc(100vh - 52px);
    padding: 0;
}

.carte-simple h1 {
    margin: 0;
    color: var(--criterium);
    font-size: clamp(28px, 4vw, 42px);
    font-weight: 700;
    letter-spacing: -.03em;
}

.coucou {
    margin: 80px 0 0;
    color: var(--texte-doux);
    font-size: 30px;
    text-align: center;
}

/* Connexion / développement -------------------------------------------- */

.connexion-page {
    min-height: 100vh;
}

.connexion-shell {
    min-height: 100vh;
    display: grid;
    place-items: center;
    padding: 30px 20px;
}

.connexion-carte {
    width: min(440px, 100%);
    padding: 38px 34px 30px;
    text-align: center;
    background: rgba(255, 255, 255, .94);
    border: 1px solid rgba(0, 109, 119, .14);
    border-radius: 26px;
    box-shadow: var(--ombre);
}

.connexion-logo {
    width: 190px;
    max-width: 62%;
    height: auto;
    filter: drop-shadow(0 12px 22px rgba(0, 109, 119, .14));
}

.connexion-logo.petit {
    width: 125px;
}

.connexion-carte h1 {
    margin: 12px 0 6px;
    color: var(--criterium);
    font-size: 34px;
    letter-spacing: -.035em;
}

.connexion-sous-titre {
    margin: 0 0 28px;
    color: var(--texte-doux);
    font-size: 15px;
}

.bouton-principal,
.bouton-profil {
    display: block;
    width: 100%;
    padding: 13px 18px;
    color: white;
    background: linear-gradient(135deg, var(--criterium), #0493a0);
    border: 0;
    border-radius: 10px;
    box-shadow: 0 8px 18px rgba(0, 109, 119, .18);
    text-decoration: none;
    font-weight: 750;
    transition: transform .16s ease, box-shadow .16s ease, filter .16s ease;
}

.bouton-principal:hover,
.bouton-profil:hover {
    transform: translateY(-1px);
    filter: brightness(1.04);
    box-shadow: 0 11px 22px rgba(0, 109, 119, .22);
}

.message-erreur {
    margin: 0 0 20px;
    padding: 11px 13px;
    color: #8a2d2d;
    background: #fff2f2;
    border: 1px solid #f0c6c6;
    border-radius: 9px;
    font-size: 13px;
}

.lien-dev {
    display: inline-block;
    margin-top: 18px;
    color: var(--criterium);
    text-decoration: none;
    font-size: 13px;
    font-weight: 650;
}

.choix-profils {
    display: grid;
    gap: 10px;
}

.bouton-profil {
    padding: 11px 14px;
}

@media (max-width: 760px) {
    :root {
        --menu-largeur: 176px;
    }

    .menu-lateral {
        padding-inline: 10px;
    }

    .menu-logo img {
        width: 130px;
    }

    .page-enseignant .page {
        padding: 16px;
    }
}

@media (max-width: 640px) {
    .bandeau {
        align-items: flex-start;
        padding: 10px 16px;
    }

    .marque span {
        display: none;
    }

    .utilisateur {
        column-gap: 9px;
    }

    .page-etudiant .page {
        width: min(100% - 20px, 1180px);
        margin-top: 20px;
    }
}


/* Couleurs des départements Constellation ------------------------------- */

.departement-cj {
    --departement-fond: #54c3e8;
    --departement-texte: #123f4d;
}

.departement-gea {
    --departement-fond: #942647;
    --departement-texte: #ffffff;
}

.departement-geii {
    --departement-fond: #c995c1;
    --departement-texte: #4a2746;
}

.departement-info {
    --departement-fond: #9bc531;
    --departement-texte: #233807;
}

.departement-rt {
    --departement-fond: #f7bd8c;
    --departement-texte: #60340f;
}

.departement-sd {
    --departement-fond: #ed0a5b;
    --departement-texte: #ffffff;
}

/* Catalogue ------------------------------------------------------------- */

.catalogue-layout {
    --catalogue-filtres-largeur: 260px;
    min-height: calc(100vh - 52px);
}

.catalogue-filtres {
    position: fixed;
    inset: 0 auto 0 var(--menu-largeur);
    z-index: 80;
    width: var(--catalogue-filtres-largeur);
    display: flex;
    flex-direction: column;
    padding: 28px 20px 22px;
    background: rgba(255, 255, 255, .72);
    border-right: 1px solid rgba(0, 109, 119, .12);
    backdrop-filter: blur(12px);
}

.catalogue-filtres-entete {
    margin-bottom: 24px;
}

.catalogue-filtres-surtitle {
    color: var(--criterium);
    font-size: 11px;
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.catalogue-filtres-entete h2 {
    margin: 3px 0 0;
    color: #24474c;
    font-size: 24px;
    letter-spacing: -.025em;
}

.catalogue-recherche label,
.catalogue-departements legend {
    display: block;
    margin-bottom: 8px;
    color: var(--texte-doux);
    font-size: 11px;
    font-weight: 800;
    letter-spacing: .04em;
    text-transform: uppercase;
}

.catalogue-recherche input {
    width: 100%;
    min-height: 40px;
    padding: 9px 11px;
    color: var(--texte);
    background: rgba(255, 255, 255, .9);
    border: 1px solid var(--bordure);
    border-radius: 8px;
    outline: none;
    font: inherit;
    font-size: 13px;
}

.catalogue-recherche input:focus {
    border-color: var(--criterium);
    box-shadow: 0 0 0 3px rgba(0, 109, 119, .09);
}

.catalogue-departements {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 7px;
    margin: 24px 0 0;
    padding: 0;
    border: 0;
}

.catalogue-departements legend {
    grid-column: 1 / -1;
}

.catalogue-departements label {
    position: relative;
    cursor: pointer;
}

.catalogue-departements input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}

.catalogue-departements span {
    display: block;
    padding: 8px 6px;
    color: #466267;
    background: rgba(237, 246, 249, .72);
    border: 1px solid rgba(0, 109, 119, .12);
    border-radius: 7px;
    font-size: 12px;
    font-weight: 800;
    text-align: center;
    transition: .14s ease;
}

.catalogue-departements input:checked + span {
    color: var(--departement-texte);
    background: var(--departement-fond);
    border-color: var(--departement-fond);
}

.catalogue-reinitialiser {
    margin-top: 14px;
    padding: 5px 0;
    color: var(--texte-doux);
    background: transparent;
    border: 0;
    font: inherit;
    font-size: 12px;
    cursor: pointer;
    text-align: left;
}

.catalogue-reinitialiser:hover {
    color: var(--criterium);
}

.catalogue-creation {
    margin-top: auto;
    padding-top: 20px;
    border-top: 1px solid rgba(0, 109, 119, .12);
}

.catalogue-creation .bouton-principal {
    width: 100%;
}

.catalogue-contenu {
    margin-left: calc(var(--catalogue-filtres-largeur) + 18px);
}

.catalogue-titre {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 24px;
    margin-bottom: 26px;
}

.catalogue-titre h1 {
    margin: 0;
    color: var(--criterium);
    font-size: clamp(28px, 3vw, 40px);
    letter-spacing: -.035em;
}

.catalogue-titre p {
    max-width: 680px;
    margin: 7px 0 0;
    color: var(--texte-doux);
    font-size: 14px;
    line-height: 1.55;
}

.catalogue-compteur {
    display: flex;
    align-items: baseline;
    gap: 6px;
    color: var(--texte-doux);
    white-space: nowrap;
}

.catalogue-compteur strong {
    color: var(--criterium);
    font-size: 26px;
}

.catalogue-compteur span {
    font-size: 12px;
    font-weight: 700;
}

.catalogue-liste {
    display: grid;
    gap: 11px;
}

.catalogue-grille {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 24px;
    align-items: center;
    padding: 18px 20px;
    background: rgba(255, 255, 255, .67);
    border: 1px solid rgba(0, 109, 119, .11);
    border-radius: 10px;
    transition: border-color .14s ease, background .14s ease;
}

.catalogue-grille:hover {
    background: rgba(255, 255, 255, .9);
    border-color: rgba(0, 109, 119, .24);
}

.catalogue-grille[hidden] {
    display: none;
}

.catalogue-grille-meta {
    display: flex;
    align-items: center;
    gap: 9px;
    margin-bottom: 6px;
    color: #728086;
    font-size: 11px;
    font-weight: 750;
}

.catalogue-departement {
    padding: 3px 7px;
    color: var(--departement-texte);
    background: var(--departement-fond);
    border-radius: 5px;
    font-weight: 850;
}

.catalogue-grille h2 {
    margin: 0;
    color: #24474c;
    font-size: 18px;
    letter-spacing: -.015em;
}

.catalogue-grille p {
    max-width: 820px;
    margin: 6px 0 0;
    color: var(--texte-doux);
    font-size: 13px;
    line-height: 1.45;
}

.catalogue-grille-actions {
    display: flex;
    gap: 7px;
}

.bouton-principal,
.bouton-secondaire {
    min-height: 36px;
    padding: 7px 12px;
    border-radius: 7px;
    font: inherit;
    font-size: 12px;
    font-weight: 800;
    cursor: pointer;
}

.bouton-principal {
    color: #fff;
    background: var(--criterium);
    border: 1px solid var(--criterium);
}

.bouton-principal:hover {
    background: #005d66;
}

.bouton-secondaire {
    color: var(--criterium);
    background: rgba(255, 255, 255, .8);
    border: 1px solid rgba(0, 109, 119, .20);
}

.bouton-secondaire:hover {
    background: var(--criterium-clair);
}

.catalogue-vide {
    margin-top: 80px;
    color: var(--texte-doux);
    font-size: 15px;
    text-align: center;
}

@media (max-width: 1050px) {
    .catalogue-layout {
        --catalogue-filtres-largeur: 225px;
    }

    .catalogue-grille {
        grid-template-columns: 1fr;
    }

    .catalogue-grille-actions {
        justify-content: flex-start;
    }
}


/* Consultation d'une grille --------------------------------------------- */

.grille-page-outils {
    margin: 4px 0 16px;
}

.grille-retour {
    color: var(--criterium);
    text-decoration: none;
    font-size: 13px;
    font-weight: 750;
}

.grille-retour:hover {
    text-decoration: underline;
}

.grille-meta {
    margin-bottom: 20px;
    padding-bottom: 18px;
    border-bottom: 1px solid rgba(0, 109, 119, .14);
}

.grille-meta-principale {
    min-width: 0;
}

.grille-meta-ligne {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 9px 14px;
    margin-bottom: 7px;
    color: #6a797e;
    font-size: 12px;
    font-weight: 700;
}

.grille-meta-departement {
    padding: 4px 8px;
    color: var(--departement-texte);
    background: var(--departement-fond);
    border-radius: 5px;
    font-weight: 850;
}

.grille-meta h2 {
    margin: 0;
    color: #24474c;
    font-size: clamp(25px, 2.6vw, 34px);
    letter-spacing: -.035em;
}

.grille-meta p {
    max-width: 900px;
    margin: 7px 0 0;
    color: var(--texte-doux);
    font-size: 13px;
    line-height: 1.5;
}

.grille-sections {
    display: grid;
    gap: 14px;
}

.grille-section {
    min-width: 0;
    overflow: hidden;
    background: rgba(255, 255, 255, .58);
    border: 1px solid rgba(0, 109, 119, .13);
    border-radius: 10px;
}

.grille-section-entete {
    padding: 13px 18px 11px;
    background: rgba(237, 246, 249, .48);
    border-bottom: 1px solid rgba(0, 109, 119, .11);
}

.grille-section-entete h3 {
    margin: 0;
    color: #294c51;
    font-size: 18px;
    letter-spacing: -.02em;
}

.grille-section-entete p {
    margin: 3px 0 0;
    color: var(--texte-doux);
    font-size: 12px;
    line-height: 1.4;
}

.grille-criteres {
    padding: 0 18px 0 26px;
}

.grille-critere {
    display: grid;
    grid-template-columns: minmax(230px, .78fr) minmax(360px, 1.5fr);
    gap: clamp(20px, 3vw, 42px);
    align-items: center;
    min-height: 82px;
    padding: 11px 0;
    border-bottom: 1px solid rgba(0, 109, 119, .10);
}

.grille-critere:last-child {
    border-bottom: 0;
}

.grille-critere-id {
    display: block;
    margin-bottom: 2px;
    color: #819095;
    font-size: 10px;
    font-weight: 800;
    letter-spacing: .035em;
    text-transform: uppercase;
}

.grille-critere h4 {
    margin: 0;
    color: #263f44;
    font-size: 14px;
    line-height: 1.25;
}

.grille-critere-texte p {
    margin: 3px 0 0;
    color: var(--texte-doux);
    font-size: 11px;
    line-height: 1.35;
}

.grille-critere-multiple {
    display: inline-block;
    margin-top: 5px;
    padding: 2px 5px;
    color: var(--criterium);
    background: rgba(16, 203, 212, .07);
    border-radius: 4px;
    font-size: 9px;
    font-weight: 750;
}

.grille-critere-controle {
    min-width: 0;
}

.grille-slider {
    width: 100%;
    min-width: 0;
    padding: 2px 0 0;
}

.grille-slider-ligne {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(54px, 78px);
    gap: 10px;
    align-items: center;
}

.grille-slider input[type="range"] {
    width: 100%;
    min-width: 0;
    height: 20px;
    margin: 0;
    appearance: none;
    -webkit-appearance: none;
    background: transparent;
    cursor: pointer;
}

.grille-slider input[type="range"]::-webkit-slider-runnable-track {
    height: 6px;
    background: linear-gradient(90deg, #d94b4b 0%, #e7c64b 50%, #4ea868 100%);
    border-radius: 999px;
}

.grille-slider input[type="range"]::-moz-range-track {
    height: 6px;
    background: linear-gradient(90deg, #d94b4b 0%, #e7c64b 50%, #4ea868 100%);
    border-radius: 999px;
}

.grille-slider input[type="range"]::-webkit-slider-thumb {
    width: 17px;
    height: 17px;
    margin-top: -5.5px;
    appearance: none;
    -webkit-appearance: none;
    background: #ffffff;
    border: 3px solid #36575c;
    border-radius: 50%;
    box-shadow: 0 1px 4px rgba(0, 0, 0, .18);
}

.grille-slider input[type="range"]::-moz-range-thumb {
    width: 13px;
    height: 13px;
    background: #ffffff;
    border: 3px solid #36575c;
    border-radius: 50%;
    box-shadow: 0 1px 4px rgba(0, 0, 0, .18);
}

.grille-slider input[type="range"]:disabled {
    cursor: default;
    opacity: .65;
}

.grille-slider-valeur {
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
    max-width: 78px;
    padding: 5px 6px;
    overflow: hidden;
    color: var(--criterium);
    background: rgba(16, 203, 212, .08);
    border: 1px solid rgba(0, 109, 119, .14);
    border-radius: 6px;
    font-size: 11px;
    font-weight: 850;
    line-height: 1.15;
    text-align: center;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.grille-slider-valeurs {
    position: relative;
    height: 25px;
    margin-top: 2px;
    margin-right: 88px;
}

.grille-slider-valeurs span {
    position: absolute;
    top: 0;
    left: var(--position);
    max-width: 90px;
    padding-top: 8px;
    color: #52676c;
    font-size: 10px;
    font-weight: 650;
    line-height: 1.1;
    text-align: center;
    transform: translateX(-50%);
    white-space: nowrap;
}

.grille-slider-valeurs span:first-child {
    transform: translateX(0);
    text-align: left;
}

.grille-slider-valeurs span:last-child {
    transform: translateX(-100%);
    text-align: right;
}

.grille-slider-valeurs span::before {
    content: "";
    position: absolute;
    top: 0;
    left: 50%;
    width: 1px;
    height: 6px;
    background: rgba(54, 87, 92, .35);
}

.grille-slider-valeurs span:first-child::before {
    left: 0;
}

.grille-slider-valeurs span:last-child::before {
    left: 100%;
}

.grille-slider-bornes {
    display: flex;
    justify-content: space-between;
    gap: 10px;
    margin-top: 2px;
    margin-right: 88px;
    color: #52676c;
    font-size: 10px;
    font-weight: 700;
}

.grille-echelle-multiple {
    position: relative;
    width: 100%;
    min-width: 0;
    padding: 3px 0 0;
}

.grille-echelle-multiple-piste {
    position: absolute;
    top: 11px;
    left: 9px;
    right: 9px;
    height: 6px;
    background: linear-gradient(90deg, #d94b4b 0%, #e7c64b 50%, #4ea868 100%);
    border-radius: 999px;
}

.grille-echelle-multiple-valeurs {
    position: relative;
    display: flex;
    justify-content: space-between;
    gap: 0;
}

.grille-echelle-multiple-valeurs label {
    display: grid;
    justify-items: center;
    gap: 5px;
    min-width: 18px;
    color: #52676c;
    font-size: 10px;
    font-weight: 650;
    line-height: 1.1;
    text-align: center;
    cursor: pointer;
}

.grille-echelle-multiple-valeurs input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}

.grille-echelle-multiple-point {
    position: relative;
    z-index: 1;
    width: 17px;
    height: 17px;
    box-sizing: border-box;
    background: #ffffff;
    border: 3px solid #36575c;
    border-radius: 50%;
    transition: background .12s ease, border-color .12s ease, transform .12s ease;
}

.grille-echelle-multiple-valeurs input:checked + .grille-echelle-multiple-point {
    background: var(--criterium);
    border-color: var(--criterium);
    transform: scale(1.08);
}

.grille-echelle-multiple-valeurs input:disabled + .grille-echelle-multiple-point {
    opacity: .55;
}

.grille-critere-indisponible {
    margin: 0;
    color: #8a6b45;
    font-size: 12px;
}

.catalogue-grille-actions a.bouton-secondaire {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
}

@media (max-width: 980px) {
    .grille-critere {
        grid-template-columns: 1fr;
        gap: 10px;
    }
}

/* Saisie directe des critères ------------------------------------------ */

.grille-slider-ligne {
    grid-template-columns: minmax(0, 1fr) minmax(82px, 118px);
}

.grille-saisie-directe {
    width: 100%;
    min-width: 0;
    height: 32px;
    padding: 4px 8px;
    color: #24474c;
    background: rgba(255, 255, 255, .92);
    border: 1px solid rgba(0, 109, 119, .22);
    border-radius: 6px;
    outline: none;
    font: inherit;
    font-size: 11px;
    font-weight: 750;
}

.grille-saisie-directe:focus {
    border-color: var(--criterium);
    box-shadow: 0 0 0 3px rgba(0, 109, 119, .08);
}

.grille-saisie-directe:disabled {
    opacity: .62;
    cursor: default;
}

.grille-saisie-nombre {
    text-align: center;
}

.grille-slider-valeurs,
.grille-slider-bornes {
    margin-right: 128px;
}

.grille-echelle-multiple-ligne {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(82px, 118px);
    gap: 10px;
    align-items: start;
}

.grille-echelle-multiple-zone {
    position: relative;
    min-width: 0;
    padding-top: 3px;
}

.grille-echelle-multiple-zone .grille-echelle-multiple-piste {
    top: 11px;
}

.grille-saisie-multiple {
    position: relative;
    min-width: 0;
    color: #24474c;
    font-size: 11px;
    font-weight: 750;
}

.grille-saisie-multiple summary {
    height: 32px;
    padding: 8px 26px 7px 8px;
    overflow: hidden;
    color: #24474c;
    background: rgba(255, 255, 255, .92);
    border: 1px solid rgba(0, 109, 119, .22);
    border-radius: 6px;
    cursor: pointer;
    list-style: none;
    line-height: 1.35;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.grille-saisie-multiple summary::-webkit-details-marker {
    display: none;
}

.grille-saisie-multiple summary::after {
    content: "▾";
    position: absolute;
    top: 8px;
    right: 9px;
    color: var(--criterium);
}

.grille-saisie-multiple[open] summary {
    border-color: var(--criterium);
    box-shadow: 0 0 0 3px rgba(0, 109, 119, .08);
}

.grille-saisie-multiple-menu {
    position: absolute;
    z-index: 20;
    top: calc(100% + 4px);
    right: 0;
    width: max(100%, 145px);
    max-height: 210px;
    padding: 5px;
    overflow-y: auto;
    background: #ffffff;
    border: 1px solid rgba(0, 109, 119, .20);
    border-radius: 7px;
    box-shadow: 0 8px 20px rgba(0, 74, 82, .14);
}

.grille-saisie-multiple-menu label {
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 6px 5px;
    border-radius: 5px;
    cursor: pointer;
}

.grille-saisie-multiple-menu label:hover {
    background: var(--criterium-clair);
}

.grille-saisie-multiple-menu input {
    margin: 0;
    accent-color: var(--criterium);
}

.grille-saisie-multiple.desactive summary {
    opacity: .62;
    cursor: default;
    pointer-events: none;
}

@media (max-width: 980px) {
    .grille-slider-ligne,
    .grille-echelle-multiple-ligne {
        grid-template-columns: minmax(0, 1fr) minmax(90px, 125px);
    }

    .grille-slider-valeurs,
    .grille-slider-bornes {
        margin-right: 135px;
    }
}

/* Détails techniques d'une grille (catalogue uniquement) --------------- */

.grille-technique {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
    margin-top: 18px;
}

.grille-technique-bloc {
    min-width: 0;
    overflow: hidden;
    background: rgba(255, 255, 255, .58);
    border: 1px solid rgba(0, 109, 119, .14);
    border-radius: 9px;
}

.grille-technique-entete {
    padding: 10px 14px;
    background: rgba(0, 109, 119, .055);
    border-bottom: 1px solid rgba(0, 109, 119, .11);
}

.grille-technique-entete h3 {
    margin: 0;
    color: #24474c;
    font-size: 14px;
    font-weight: 800;
}

.grille-technique-liste {
    display: block;
    max-height: 360px;
    overflow: auto;
}

.grille-technique-ligne {
    display: grid;
    grid-template-columns: minmax(110px, 170px) max-content;
    gap: 14px;
    width: max-content;
    min-width: 100%;
    align-items: start;
    padding: 9px 14px;
    border-bottom: 1px solid rgba(0, 109, 119, .08);
}

.grille-technique-ligne:last-child {
    border-bottom: 0;
}

.grille-technique-cle {
    color: #36575c;
    font-size: 11px;
    font-weight: 800;
    overflow-wrap: anywhere;
}

.grille-technique-ligne code {
    display: block;
    min-width: 0;
    color: #183b40;
    background: transparent;
    font-family: Consolas, "Courier New", monospace;
    font-size: 11px;
    line-height: 1.45;
    white-space: nowrap;
}

.grille-technique-vide {
    margin: 0;
    padding: 12px 14px;
    color: #71868a;
    font-size: 11px;
    font-style: italic;
}

@media (max-width: 820px) {
    .grille-technique {
        grid-template-columns: 1fr;
    }

    .grille-technique-ligne {
        grid-template-columns: minmax(110px, 170px) max-content;
        gap: 14px;
    }
}

/* Résultats de compétences simulés (catalogue) -------------------------- */

.grille-resultats-competences {
    position: fixed;
    z-index: 45;
    top: 14px;
    right: 18px;
    width: 180px;
    max-height: calc(100vh - 28px);
    padding: 9px 10px 10px;
    overflow: auto;
    background: rgba(255, 255, 255, .76);
    border: 1px solid rgba(0, 109, 119, .16);
    border-radius: 9px;
    box-shadow: 0 5px 16px rgba(0, 61, 68, .09);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}

.grille-resultats-competences h3 {
    margin: 0 0 7px;
    color: #36575c;
    font-size: 11px;
    font-weight: 850;
    letter-spacing: .035em;
    text-transform: uppercase;
}

.grille-resultats-competences-liste {
    display: grid;
    gap: 4px;
}

.grille-resultat-competence {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 8px;
    align-items: baseline;
    padding: 4px 6px;
    background: rgba(240, 250, 250, .62);
    border-radius: 5px;
}

.grille-resultat-competence span {
    min-width: 0;
    overflow: hidden;
    color: #526c70;
    font-size: 11px;
    font-weight: 750;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.grille-resultat-competence strong {
    color: var(--criterium);
    font-size: 13px;
    font-variant-numeric: tabular-nums;
    font-weight: 850;
    white-space: nowrap;
}

.grille-resultat-competence strong::after {
    content: " %";
    color: #6b8589;
    font-size: 9px;
    font-weight: 700;
}

@media (max-width: 900px) {
    .grille-resultats-competences {
        position: static;
        width: auto;
        max-height: none;
        margin: 0 0 12px;
    }

    .grille-resultats-competences-liste {
        grid-template-columns: repeat(auto-fit, minmax(105px, 1fr));
    }
}

/* Aide au moteur de calcul ------------------------------------------------ */

.aide-moteur {
    display: grid;
    gap: 16px;
    max-width: 1220px;
}

.aide-moteur-entete h2,
.aide-moteur-entete p {
    margin: 0;
}

.aide-moteur-entete h2 {
    margin-top: 2px;
    color: #23484d;
    font-size: 24px;
}

.aide-moteur-entete p {
    max-width: 820px;
    margin-top: 6px;
    color: #657d81;
    font-size: 13px;
    line-height: 1.55;
}

.aide-moteur-surtitle {
    color: var(--criterium);
    font-size: 11px;
    font-weight: 850;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.aide-moteur-grille {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.aide-moteur-bloc,
.aide-moteur-exemples,
.aide-moteur-note {
    background: rgba(255, 255, 255, .58);
    border: 1px solid rgba(0, 109, 119, .14);
    border-radius: 9px;
}

.aide-moteur-bloc {
    padding: 13px 15px;
}

.aide-moteur-bloc h3,
.aide-moteur-exemples h3 {
    margin: 0;
    color: #31565b;
    font-size: 14px;
}

.aide-moteur-bloc p {
    margin: 8px 0 0;
    color: #60797d;
    font-size: 12px;
    line-height: 1.55;
}

.aide-moteur-bloc dl {
    display: grid;
    gap: 8px;
    margin: 10px 0 0;
}

.aide-moteur-bloc dl > div {
    display: grid;
    grid-template-columns: minmax(145px, auto) 1fr;
    gap: 12px;
    align-items: baseline;
}

.aide-moteur-bloc dt,
.aide-moteur-bloc dd {
    margin: 0;
}

.aide-moteur-bloc dd {
    color: #667e82;
    font-size: 12px;
}

.aide-moteur code {
    color: #174b51;
    font-family: Consolas, "Courier New", monospace;
    font-size: 11px;
}

.aide-moteur-formule {
    display: block;
    margin-top: 10px;
    padding: 8px 10px;
    overflow-x: auto;
    background: rgba(0, 109, 119, .055);
    border-radius: 6px;
    white-space: nowrap;
}

.aide-moteur-exemples {
    overflow: hidden;
}

.aide-moteur-exemples-entete {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
    padding: 11px 14px;
    background: rgba(0, 109, 119, .055);
    border-bottom: 1px solid rgba(0, 109, 119, .11);
}

.aide-moteur-exemples-entete span {
    color: #789095;
    font-size: 11px;
}

.aide-moteur-exemples ol {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    margin: 0;
    padding: 0;
    list-style: none;
    counter-reset: exemples;
}

.aide-moteur-exemples li {
    display: grid;
    grid-template-columns: 26px minmax(0, 1fr);
    gap: 4px 10px;
    padding: 10px 14px;
    border-bottom: 1px solid rgba(0, 109, 119, .08);
    counter-increment: exemples;
}

.aide-moteur-exemples li:nth-child(odd) {
    border-right: 1px solid rgba(0, 109, 119, .08);
}

.aide-moteur-exemples li::before {
    grid-row: 1 / 3;
    content: counter(exemples);
    display: grid;
    place-items: center;
    align-self: start;
    width: 22px;
    height: 22px;
    color: var(--criterium);
    background: rgba(0, 109, 119, .08);
    border-radius: 50%;
    font-size: 10px;
    font-weight: 850;
}

.aide-moteur-exemples strong {
    color: #425f63;
    font-size: 11px;
}

.aide-moteur-exemples code {
    display: block;
    min-width: 0;
    overflow-x: auto;
    padding-bottom: 2px;
    white-space: nowrap;
}

.aide-moteur-note {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 10px 16px;
    align-items: baseline;
    padding: 11px 14px;
}

.aide-moteur-note strong {
    color: #31565b;
    font-size: 12px;
}

.aide-moteur-note p {
    margin: 0;
    color: #657d81;
    font-size: 12px;
    line-height: 1.5;
}

@media (max-width: 850px) {
    .aide-moteur-grille,
    .aide-moteur-exemples ol {
        grid-template-columns: 1fr;
    }

    .aide-moteur-exemples li:nth-child(odd) {
        border-right: 0;
    }
}

/* Édition des grilles du catalogue -------------------------------------- */

.edition-grille {
    display: grid;
    gap: 16px;
    max-width: 1380px;
}

.edition-grille-entete {
    display: flex;
    justify-content: space-between;
    gap: 18px;
    align-items: flex-start;
}

.edition-grille-entete h1,
.edition-grille-entete p { margin: 0; }
.edition-grille-entete h1 { margin-top: 2px; color: #23484d; font-size: 25px; }
.edition-grille-entete p { margin-top: 5px; color: #6b8084; font-size: 12px; }
.edition-grille-surtitle { color: var(--criterium); font-size: 11px; font-weight: 850; text-transform: uppercase; letter-spacing: .08em; }

.edition-meta,
.edition-section {
    background: rgba(255,255,255,.60);
    border: 1px solid rgba(0,109,119,.14);
    border-radius: 10px;
}

.edition-meta { display: grid; grid-template-columns: 1fr 1fr; gap: 14px 18px; padding: 16px; }
.edition-champ { display: grid; gap: 6px; }
.edition-champ-large { grid-column: 1 / -1; }
.edition-champ label,
.edition-departements legend { color: #49666a; font-size: 11px; font-weight: 800; }
.edition-champ input,
.edition-champ textarea,
.edition-section input,
.edition-section textarea,
.edition-section select,
.edition-formule-ligne input,
.edition-formule-ligne textarea {
    width: 100%; box-sizing: border-box; border: 1px solid rgba(0,109,119,.18); border-radius: 6px;
    background: rgba(255,255,255,.9); color: #24474c; padding: 8px 9px; font: inherit;
}
.edition-champ textarea,
.edition-section textarea,
.edition-formule-ligne textarea { resize: vertical; }

.edition-auteur { display: grid; align-content: start; gap: 4px; }
.edition-auteur span { color: #738a8e; font-size: 10px; text-transform: uppercase; letter-spacing: .06em; font-weight: 800; }
.edition-auteur strong { color: #31565b; font-size: 13px; }

.edition-departements { margin: 0; padding: 0; border: 0; }
.edition-departements-liste { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 7px; }
.edition-departements label { cursor: pointer; }
.edition-departements input { position: absolute; opacity: 0; pointer-events: none; }
.edition-departements span { display: block; min-width: 48px; padding: 7px 9px; text-align: center; border-radius: 6px; opacity: .42; border: 2px solid transparent; font-size: 11px; font-weight: 850; }
.edition-departements input:checked + span { opacity: 1; border-color: rgba(18,50,55,.42); box-shadow: 0 2px 8px rgba(0,0,0,.08); }

.edition-sections { display: grid; gap: 13px; }
.edition-section { padding: 13px; }
.edition-section-entete,
.edition-critere-entete,
.edition-valeurs-entete,
.edition-popup-section-entete { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.edition-section-numero { color: #6d8589; font-size: 10px; font-weight: 850; text-transform: uppercase; letter-spacing: .06em; }
.edition-section-nom { margin-top: 7px; font-weight: 800; font-size: 15px !important; }
.edition-section-description { margin-top: 7px; }
.edition-criteres { display: grid; gap: 9px; margin-top: 12px; }
.edition-critere { padding: 10px 12px; margin-left: 14px; background: rgba(244,250,250,.75); border-left: 3px solid rgba(0,109,119,.18); border-radius: 6px; }
.edition-critere-entete strong { color: var(--criterium); font-size: 10px; text-transform: uppercase; }
.edition-critere-grille { display: grid; grid-template-columns: minmax(170px, .8fr) minmax(240px, 1.2fr) 130px; gap: 9px 12px; margin-top: 8px; align-items: start; }
.edition-critere-grille > label { display: grid; gap: 4px; color: #698084; font-size: 10px; font-weight: 750; }
.edition-multiple { align-self: end; display: flex !important; grid-column: 3; align-items: center; grid-auto-flow: column; justify-content: start; }
.edition-multiple input { width: auto; }
.edition-valeurs-liste,
.edition-valeurs-champ { grid-column: 1 / -1; }
.edition-valeurs-liste { display: grid; gap: 6px; }
.edition-valeurs-entete span { color: #617a7e; font-size: 10px; font-weight: 800; }
.edition-valeurs-entete button,
.edition-popup-section-entete button { width: 26px; height: 26px; border: 0; border-radius: 50%; color: white; background: var(--criterium); cursor: pointer; font-weight: 900; }
.edition-valeur-ligne { display: grid; grid-template-columns: minmax(0,1fr) 28px; gap: 6px; max-width: 420px; }
.edition-valeurs-champ { display: grid; grid-template-columns: repeat(3, minmax(100px, 160px)); gap: 9px; }
.edition-valeurs-champ label { display: grid; gap: 4px; color: #698084; font-size: 10px; font-weight: 750; }

.edition-supprimer { border: 0; background: transparent; color: #a84848; cursor: pointer; font-size: 17px; font-weight: 900; line-height: 1; }
.edition-ajouter-section { justify-self: center; width: 38px; height: 38px; border: 0; border-radius: 50%; background: var(--criterium); color: white; cursor: pointer; font-size: 23px; box-shadow: 0 4px 12px rgba(0,109,119,.18); }
.edition-ajouter-critere { margin: 10px 0 0 14px; padding: 6px 10px; border: 1px dashed rgba(0,109,119,.3); border-radius: 6px; background: transparent; color: var(--criterium); cursor: pointer; font-size: 11px; font-weight: 800; }
.edition-actions-bas { display: flex; justify-content: flex-end; gap: 9px; padding-bottom: 30px; }

.edition-sauvegarde { position: fixed; z-index: 80; right: 16px; bottom: 14px; padding: 7px 11px; border-radius: 7px; background: rgba(24,72,77,.88); color: white; font-size: 10px; font-weight: 800; box-shadow: 0 4px 14px rgba(0,0,0,.12); }
.edition-sauvegarde.erreur { background: rgba(153,50,50,.92); }

.edition-popup { position: fixed; z-index: 110; inset: 0; padding: 22px; background: rgba(19,47,51,.38); backdrop-filter: blur(4px); }
.edition-popup[hidden] { display: none; }
.edition-popup-dialogue { display: grid; grid-template-rows: auto minmax(0,1fr); width: min(1380px, calc(100vw - 44px)); height: min(860px, calc(100vh - 44px)); margin: 0 auto; overflow: hidden; background: #f8fbfb; border-radius: 11px; box-shadow: 0 20px 55px rgba(0,0,0,.22); }
.edition-popup-entete { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; border-bottom: 1px solid rgba(0,109,119,.12); }
.edition-popup-entete h2 { margin: 0; color: #31565b; font-size: 16px; }
.edition-popup-fermer { border: 0; background: transparent; color: #49666a; cursor: pointer; font-size: 24px; }
.edition-popup-contenu { display: grid; grid-template-columns: 300px minmax(0,1fr); min-height: 0; }
.edition-popup-aide { overflow: auto; padding: 14px 16px; background: rgba(0,109,119,.045); border-right: 1px solid rgba(0,109,119,.12); }
.edition-popup-aide h3 { margin: 0 0 10px; color: #31565b; font-size: 13px; }
.edition-popup-aide p { color: #617a7e; font-size: 11px; line-height: 1.5; }
.edition-popup-aide code { color: #174b51; font-family: Consolas,"Courier New",monospace; }
.edition-popup-aide a { color: var(--criterium); font-size: 11px; font-weight: 800; }
.edition-popup-editeur { overflow: auto; padding: 14px; }
.edition-popup-editeur section + section { margin-top: 18px; }
.edition-popup-section-entete h3 { margin: 0; color: #365b60; font-size: 13px; }
.edition-formule-ligne { display: grid; grid-template-columns: 150px minmax(0,1fr) 26px; gap: 8px; margin-top: 8px; align-items: start; }
.edition-formule-ligne textarea { font-family: Consolas,"Courier New",monospace; font-size: 11px; line-height: 1.45; tab-size: 4; }
.edition-formule-ligne.erreur { padding: 6px; margin-inline: -6px; background: rgba(190,44,44,.07); border-radius: 7px; }
.edition-erreur-formule { margin-top: 14px; padding: 9px 11px; border-radius: 6px; background: rgba(190,44,44,.09); color: #8d3333; font-size: 11px; font-weight: 750; }

.edition-validation-voile { position: fixed; z-index: 140; inset: 0; display: grid; place-items: center; background: rgba(245,251,251,.74); backdrop-filter: blur(3px); }
.edition-validation-voile[hidden] { display: none; }
.edition-validation-message { padding: 14px 18px; background: white; border: 1px solid rgba(0,109,119,.15); border-radius: 8px; box-shadow: 0 8px 30px rgba(0,0,0,.11); color: #31565b; font-size: 12px; font-weight: 850; }

@media (max-width: 920px) {
    .edition-meta { grid-template-columns: 1fr; }
    .edition-champ-large { grid-column: auto; }
    .edition-critere-grille { grid-template-columns: 1fr; }
    .edition-multiple,
    .edition-valeurs-liste,
    .edition-valeurs-champ { grid-column: 1; }
    .edition-popup-contenu { grid-template-columns: 1fr; }
    .edition-popup-aide { display: none; }
}

.edition-popup-aide .aide-moteur-grille,
.edition-popup-aide .aide-moteur-exemples ol {
    grid-template-columns: 1fr;
}
.edition-popup-aide .aide-moteur-exemples li:nth-child(odd) { border-right: 0; }
.edition-popup-aide .aide-moteur { gap: 10px; }
.edition-popup-aide .aide-moteur-bloc,
.edition-popup-aide .aide-moteur-note { background: rgba(255,255,255,.52); }

/* Édition catalogue — ergonomie de création ---------------------------- */
.edition-grille { padding-right: 0; }

.edition-departements span { transition: opacity .15s ease, transform .15s ease, box-shadow .15s ease; }
.edition-departements input:checked + span { opacity: 1; transform: translateY(-1px); border-color: rgba(18,50,55,.48); box-shadow: 0 3px 10px rgba(0,0,0,.12); }

.edition-section-entete > strong { color: #6d8589; font-size: 10px; font-weight: 850; text-transform: uppercase; letter-spacing: .06em; }
.edition-critere-grille { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 16px 22px; }
.edition-critere-colonne { display: grid; align-content: start; gap: 9px; min-width: 0; }
.edition-critere-colonne > label,
.edition-valeurs-champ label { display: grid; gap: 4px; color: #698084; font-size: 10px; font-weight: 750; }
.edition-critere-valeurs { padding-left: 18px; border-left: 1px solid rgba(0,109,119,.12); }
.edition-multiple { display: flex !important; align-items: center; gap: 7px; justify-content: flex-start; }
.edition-multiple input { width: auto; }
.edition-valeurs-liste { display: grid; gap: 7px; }
.edition-valeur-ligne { display: grid; grid-template-columns: minmax(0,1fr) 32px; gap: 7px; max-width: none; margin-top: 6px; }
.edition-supprimer-valeur { width: 32px; border: 0; border-radius: 6px; background: #b84b4b; color: #fff; cursor: pointer; font-size: 17px; font-weight: 900; }
.edition-supprimer-valeur:hover { background: #983939; }
.edition-ajouter-valeur { justify-self: start; padding: 7px 10px; border: 1px dashed rgba(0,109,119,.32); border-radius: 6px; background: transparent; color: var(--criterium); cursor: pointer; font-size: 10px; font-weight: 850; }
.edition-valeurs-champ { display: grid; grid-template-columns: repeat(3, minmax(90px, 1fr)); gap: 9px; }

.edition-ajouter-section { justify-self: center; width: auto; height: auto; padding: 9px 14px; border: 0; border-radius: 7px; background: var(--criterium); color: white; cursor: pointer; font-size: 11px; font-weight: 850; box-shadow: 0 4px 12px rgba(0,109,119,.18); }

.edition-actions-fixed { position: fixed; z-index: 75; top: 18px; right: 16px; width: 132px; display: grid; gap: 7px; }
.edition-actions-fixed .bouton-principal,
.edition-actions-fixed .bouton-secondaire { box-sizing: border-box; width: 100%; padding: 8px 7px; text-align: center; font-size: 10px; }
.edition-actions-fixed .edition-sauvegarde { position: static; width: auto; text-align: center; box-shadow: 0 4px 14px rgba(0,0,0,.10); }
.edition-technique { margin-top: 2px; margin-bottom: 28px; }

.edition-popup-dialogue { width: min(1540px, calc(100vw - 30px)); height: min(920px, calc(100vh - 30px)); }
.edition-popup-contenu { grid-template-columns: minmax(390px, 38%) minmax(0, 62%); }
.edition-popup-editeur { display: flex; flex-direction: column; min-height: 0; }
.edition-popup-actions { position: sticky; bottom: -14px; display: flex; justify-content: flex-end; gap: 8px; margin: auto -14px -14px; padding: 12px 14px; background: rgba(248,251,251,.96); border-top: 1px solid rgba(0,109,119,.12); }

@media (max-width: 1100px) {
    .edition-grille { padding-right: 0; }
    .edition-actions-fixed { position: static; width: auto; grid-template-columns: repeat(2, max-content) 1fr; align-items: center; }
    .edition-actions-fixed .edition-sauvegarde { justify-self: end; }
}

@media (max-width: 920px) {
    .edition-critere-grille { grid-template-columns: 1fr; }
    .edition-critere-valeurs { padding-left: 0; border-left: 0; border-top: 1px solid rgba(0,109,119,.12); padding-top: 10px; }
    .edition-popup-contenu { grid-template-columns: 1fr; }
    .edition-popup-aide { display: none; }
}


/* Critérium — droits d’édition et bilan du contrôle des règles */
.bouton-desactive {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    opacity: .38;
    filter: grayscale(.65);
    cursor: not-allowed;
    user-select: none;
    pointer-events: none;
}

.edition-validation-carte {
    width: min(430px, calc(100vw - 36px));
    padding: 24px 26px;
    text-align: center;
    background: rgba(255,255,255,.96);
    border: 1px solid rgba(0,109,119,.16);
    border-radius: 14px;
    box-shadow: 0 18px 55px rgba(25,64,69,.20);
}
.edition-validation-carte h2 { margin: 8px 0 5px; color: #294f54; font-size: 18px; }
.edition-validation-carte p { margin: 0; color: #637b7f; font-size: 13px; line-height: 1.55; white-space: pre-line; }
.edition-validation-carte .bouton-principal { min-width: 92px; margin-top: 18px; }
.edition-validation-icone {
    display: grid;
    place-items: center;
    width: 42px;
    height: 42px;
    margin: 0 auto;
    border-radius: 50%;
    color: white;
    background: var(--criterium);
    font-size: 22px;
    font-weight: 900;
}
.edition-validation-carte.succes .edition-validation-icone { background: #3d9c63; }
.edition-validation-carte.erreur .edition-validation-icone { background: #bf4444; }

/* Édition catalogue — intégrité des règles et actions ------------------ */
.edition-actions-fixed {
    width: 190px;
    gap: 8px;
}

.edition-actions-fixed .bouton-principal,
.edition-actions-fixed .bouton-secondaire {
    min-height: 38px;
    padding: 10px 11px;
    font-size: 11px;
    line-height: 1.25;
}

.edition-actions-fixed .bouton-secondaire.regles-invalides {
    color: #8f2f2f;
    background: rgba(190, 44, 44, .10);
    border-color: rgba(190, 44, 44, .35);
}

.edition-regles-avertissement {
    grid-column: 1 / -1;
    padding: 8px 11px;
    color: #8f2f2f;
    background: rgba(190, 44, 44, .08);
    border: 1px solid rgba(190, 44, 44, .18);
    border-radius: 7px;
    font-size: 11px;
    font-weight: 750;
}

.edition-regles-avertissement[hidden] {
    display: none;
}

.grille-resultats-competences.erreur {
    border-color: rgba(190, 44, 44, .28);
    box-shadow: 0 5px 16px rgba(120, 35, 35, .10);
}

.grille-resultats-erreur {
    margin: 0 0 7px;
    padding: 6px 7px;
    color: #8f2f2f;
    background: rgba(190, 44, 44, .08);
    border-radius: 5px;
    font-size: 9px;
    font-weight: 750;
    line-height: 1.35;
}

.grille-resultats-erreur[hidden] {
    display: none;
}

.grille-resultat-competence strong.erreur {
    color: #a13c3c;
    font-size: 11px;
}

.grille-resultat-competence strong.erreur::after {
    content: "";
}

@media (max-width: 1100px) {
    .edition-actions-fixed {
        width: auto;
        grid-template-columns: repeat(3, max-content) 1fr;
    }
}

/* Catalogue — sélection de version ------------------------------------- */
.catalogue-version {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    color: #728086;
    font-size: 11px;
    font-weight: 750;
}

.catalogue-version select {
    min-width: 54px;
    padding: 3px 22px 3px 7px;
    border: 1px solid rgba(0, 109, 119, .16);
    border-radius: 5px;
    color: #31565b;
    background: rgba(255, 255, 255, .92);
    font: inherit;
    font-weight: 850;
    cursor: pointer;
}

/* Édition catalogue — choix de version -------------------------------- */
.edition-version-choix {
    min-height: calc(100vh - 72px);
    display: grid;
    place-items: center;
    padding: 28px;
    box-sizing: border-box;
}

.edition-version-choix-contenu {
    width: min(940px, 100%);
    text-align: center;
}

.edition-version-choix-contenu h1 {
    margin: 4px 0 12px;
    color: #31565b;
    font-size: clamp(25px, 3vw, 36px);
}

.edition-version-avertissement {
    max-width: 820px;
    margin: 0 auto 28px;
    color: #5c7478;
    font-size: 14px;
    line-height: 1.7;
}

.edition-version-choix-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 20px;
}

.edition-version-formulaire {
    display: contents;
}

.edition-version-gros-bouton {
    min-height: 170px;
    display: grid;
    align-content: center;
    gap: 10px;
    box-sizing: border-box;
    padding: 26px;
    border: 1px solid rgba(0, 109, 119, .20);
    border-radius: 12px;
    color: #31565b;
    background: rgba(255, 255, 255, .82);
    box-shadow: 0 8px 26px rgba(0, 71, 77, .08);
    text-decoration: none;
    cursor: pointer;
    transition: transform .16s ease, border-color .16s ease, box-shadow .16s ease, background .16s ease;
    font: inherit;
    text-align: center;
}

.edition-version-gros-bouton:hover {
    transform: translateY(-2px);
    border-color: rgba(0, 109, 119, .42);
    background: rgba(255, 255, 255, .96);
    box-shadow: 0 11px 30px rgba(0, 71, 77, .12);
}

.edition-version-gros-bouton strong {
    color: var(--criterium);
    font-size: 17px;
    letter-spacing: .025em;
}

.edition-version-gros-bouton span {
    color: #678084;
    font-size: 12px;
    line-height: 1.5;
}

.edition-version-retour {
    margin-top: 22px;
}

.edition-identite {
    display: flex;
    align-items: flex-start;
    gap: 30px;
}

/* Édition catalogue — bouton majeur des règles ------------------------ */
.edition-actions-fixed .edition-bouton-regles {
    min-height: 62px;
    padding-block: 15px;
    font-size: 12px;
    font-weight: 900;
}

.edition-actions-fixed .edition-bouton-regles.regles-valides {
    color: #1d6a3d;
    background: rgba(61, 156, 99, .13);
    border-color: rgba(61, 156, 99, .46);
}

.edition-actions-fixed .edition-bouton-regles.regles-valides:hover {
    background: rgba(61, 156, 99, .20);
}

.edition-actions-fixed .edition-bouton-regles.regles-invalides {
    color: #8f2f2f;
    background: rgba(190, 44, 44, .12);
    border-color: rgba(190, 44, 44, .48);
}

.edition-actions-fixed .edition-bouton-regles.regles-invalides:hover {
    background: rgba(190, 44, 44, .18);
}

@media (max-width: 760px) {
    .edition-version-choix-actions {
        grid-template-columns: 1fr;
    }
}

/* Édition catalogue — popup règles en quatre zones -------------------- */
.edition-actions-fixed .edition-bouton-supprimer {
    color: #8f2f2f;
    background: rgba(190, 44, 44, .08);
    border-color: rgba(190, 44, 44, .24);
    opacity: .42;
    cursor: not-allowed;
}

.edition-popup-contenu {
    display: grid;
    grid-template-rows: minmax(0, 1fr) auto auto;
    min-height: 0;
}

.edition-popup-zones {
    display: grid;
    grid-template-columns: minmax(390px, 38%) minmax(0, 62%);
    min-height: 0;
}

.edition-popup-colonne {
    display: grid;
    grid-template-rows: minmax(0, 1fr) minmax(0, 1fr);
    min-height: 0;
}

.edition-popup-colonne-gauche {
    background: rgba(0,109,119,.035);
    border-right: 1px solid rgba(0,109,119,.12);
}

.edition-popup-zone {
    min-height: 0;
    overflow: auto;
    padding: 14px 16px;
}

.edition-popup-colonne > .edition-popup-zone + .edition-popup-zone {
    border-top: 1px solid rgba(0,109,119,.12);
}

.edition-popup-aide {
    overflow: auto;
    padding: 14px 16px;
    background: rgba(0,109,119,.045);
    border-right: 0;
}

.edition-popup-editeur {
    overflow: hidden;
    padding: 0;
}

.edition-popup-editeur section + section {
    margin-top: 0;
}

.edition-popup-criteres-liste {
    display: grid;
    gap: 8px;
    margin-top: 10px;
}

.edition-popup-reference-critere {
    padding: 8px 9px;
    background: rgba(255,255,255,.72);
    border: 1px solid rgba(0,109,119,.10);
    border-radius: 6px;
}

.edition-popup-reference-titre {
    display: flex;
    align-items: baseline;
    gap: 8px;
    min-width: 0;
}

.edition-popup-reference-titre code {
    flex: 0 0 auto;
    color: var(--criterium);
    font: 800 11px Consolas,"Courier New",monospace;
}

.edition-popup-reference-titre strong {
    min-width: 0;
    overflow: hidden;
    color: #31565b;
    font-size: 11px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.edition-popup-reference-valeurs {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
    margin-top: 6px;
}

.edition-popup-reference-valeurs span,
.edition-popup-reference-valeurs small,
.edition-popup-reference-valeurs em {
    padding: 3px 6px;
    color: #5a7478;
    background: rgba(0,109,119,.06);
    border-radius: 4px;
    font-size: 9px;
    font-style: normal;
    line-height: 1.2;
}

.edition-popup-reference-valeurs small {
    color: #2e696f;
    font-weight: 800;
}

.edition-popup-reference-vide {
    margin: 10px 0 0;
    color: #74898d;
    font-size: 11px;
}

.edition-popup-actions {
    position: static;
    bottom: auto;
    margin: 0;
    padding: 12px 14px;
    background: rgba(248,251,251,.98);
    border-top: 1px solid rgba(0,109,119,.12);
}

.edition-erreur-formule {
    margin: 0;
    border-radius: 0;
}

@media (max-width: 1100px) {
    .edition-popup-zones {
        grid-template-columns: minmax(320px, 42%) minmax(0, 58%);
    }
}

@media (max-width: 920px) {
    .edition-popup-zones {
        grid-template-columns: 1fr;
        overflow: auto;
    }

    .edition-popup-colonne {
        grid-template-rows: auto auto;
    }

    .edition-popup-colonne-gauche {
        border-right: 0;
        border-bottom: 1px solid rgba(0,109,119,.12);
    }

    .edition-popup-aide {
        display: block;
    }

    .edition-popup-zone {
        max-height: 48vh;
    }
}

/* Neutralisation des anciens layouts de la popup. */
.edition-popup-contenu {
    grid-template-columns: 1fr;
}

.edition-popup-editeur {
    display: grid;
    grid-template-rows: minmax(0, 1fr) minmax(0, 1fr);
}


/* Catalogue — confirmation de clonage --------------------------------- */
.catalogue-clonage-voile {
    position: fixed;
    inset: 0;
    z-index: 1200;
    display: grid;
    place-items: center;
    padding: 24px;
    background: rgba(18, 45, 49, .34);
    backdrop-filter: blur(5px);
}

.catalogue-clonage-voile[hidden] {
    display: none;
}

.catalogue-clonage-dialogue {
    width: min(520px, 100%);
    padding: 28px;
    box-sizing: border-box;
    border: 1px solid rgba(0, 109, 119, .16);
    border-radius: 12px;
    background: rgba(255, 255, 255, .97);
    box-shadow: 0 24px 70px rgba(18, 45, 49, .22);
    text-align: center;
}

.catalogue-clonage-dialogue h2 {
    margin: 0 0 12px;
    color: #31565b;
    font-size: 22px;
}

.catalogue-clonage-dialogue p {
    margin: 0;
    color: var(--texte-doux);
    font-size: 14px;
    line-height: 1.6;
}

.catalogue-clonage-actions {
    display: flex;
    justify-content: center;
    gap: 10px;
    margin-top: 24px;
}

.catalogue-clonage-actions form {
    margin: 0;
}

/* Injection ------------------------------------------------------------- */
.injection-page { max-width: 1180px; }
.injection-entete { margin-bottom: 22px; }
.injection-entete h1 { margin: 0 0 5px; font-size: 26px; color: #183f44; }
.injection-entete p, .injection-grilles-entete p { margin: 0; color: #6b7f82; }
.injection-etape { margin: 0 0 22px; }
.injection-etape > h2, .injection-grilles-entete h2 { margin: 0 0 11px; font-size: 16px; color: #294f54; }
.injection-departements { display: flex; flex-wrap: wrap; gap: 9px; }
.injection-departements button { min-width: 76px; padding: 11px 15px; border: 2px solid transparent; border-radius: 8px; background: var(--departement-fond); color: var(--departement-texte); font-weight: 900; opacity: .48; cursor: pointer; transition: .15s ease; }
.injection-departements button:hover, .injection-departements button.actif { opacity: 1; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(24,63,68,.12); }
.injection-departements button.actif { border-color: rgba(18,50,55,.45); }
.injection-formations { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; align-items: start; }
.injection-formations-colonne { min-width: 0; }
.injection-formations-colonne h3 { margin: 0 0 8px; padding-bottom: 7px; border-bottom: 1px solid #dce6e7; color: #46666a; font-size: 12px; font-weight: 900; letter-spacing: .03em; text-transform: uppercase; }
.injection-formations-colonne-liste { display: grid; gap: 7px; }
.injection-formations-colonne-vide { margin: 0; padding: 10px; color: #87989a; font-size: 12px; font-style: italic; }
.injection-formation { width: 100%; min-width: 0; padding: 9px 11px; border: 2px solid transparent; border-radius: 8px; background: var(--departement-fond); color: var(--departement-texte); text-align: left; cursor: pointer; opacity: .72; transition: opacity .15s ease, transform .15s ease, box-shadow .15s ease, border-color .15s ease; }
.injection-formation strong { display: block; overflow-wrap: anywhere; font-size: 13px; font-weight: 900; line-height: 1.25; }
.injection-formation span { display: block; margin-top: 3px; overflow-wrap: anywhere; font-size: 11px; font-weight: 650; line-height: 1.25; opacity: .82; }
.injection-formation:hover { opacity: .92; transform: translateY(-1px); box-shadow: 0 4px 10px rgba(24,63,68,.12); }
.injection-formation.actif { opacity: 1; border-color: rgba(18,50,55,.58); box-shadow: 0 0 0 2px rgba(255,255,255,.5) inset, 0 4px 12px rgba(24,63,68,.14); }
.injection-chargement { color: #73878a; font-size: 13px; }
.injection-grilles-entete { display: flex; align-items: end; justify-content: space-between; gap: 20px; margin-bottom: 12px; }
.injection-grilles-entete input { width: min(360px, 40vw); padding: 10px 12px; border: 1px solid #cbd9da; border-radius: 7px; }
.injection-liste { display: grid; gap: 9px; }
.injection-grille { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 18px; align-items: center; padding: 14px 16px; border: 1px solid #dbe4e5; border-radius: 9px; background: rgba(255,255,255,.72); }
.injection-grille[hidden] { display: none; }
.injection-grille h3 { margin: 7px 0 3px; color: #244b50; font-size: 16px; }
.injection-grille p { margin: 0; color: #718184; font-size: 13px; }
.injection-version { margin-left: 7px; color: #748689; font-size: 11px; font-weight: 800; }
.injection-action { min-width: 92px; padding: 9px 13px; border: 0; border-radius: 7px; background: #2f9b68; color: #fff; font-weight: 850; cursor: pointer; }
.injection-action.retirer { background: #bd4c4c; }
.injection-action:disabled { opacity: .5; cursor: wait; }
.injection-vide { padding: 18px; text-align: center; color: #718184; }
@media (max-width: 850px) { .injection-formations { grid-template-columns: 1fr; } .injection-grilles-entete { align-items: stretch; flex-direction: column; } .injection-grilles-entete input { width: 100%; } }

/* Popup de rattachement ScoDoc lors d'une injection. */
.injection-popup[hidden] { display: none; }
.injection-popup { position: fixed; inset: 0; z-index: 1200; display: grid; place-items: center; padding: 28px; }
.injection-popup-fond { position: absolute; inset: 0; background: rgba(20,48,53,.46); backdrop-filter: blur(2px); }
.injection-popup-boite { position: relative; width: min(820px, 94vw); max-height: 88vh; display: flex; flex-direction: column; overflow: hidden; border: 1px solid #cbdcde; border-radius: 12px; background: #f8fcfc; box-shadow: 0 22px 65px rgba(20,48,53,.25); }
.injection-popup-boite > header { display: flex; justify-content: space-between; gap: 20px; padding: 20px 22px 15px; border-bottom: 1px solid #dbe6e7; }
.injection-popup-boite > header span { color: #078c98; font-size: 11px; font-weight: 900; letter-spacing: .08em; }
.injection-popup-boite > header h2 { margin: 3px 0 2px; color: #214b50; font-size: 21px; }
.injection-popup-boite > header p { margin: 0; color: #72878a; font-size: 12px; }
.injection-popup-fermer { align-self: start; width: 34px; height: 34px; border: 0; border-radius: 7px; background: transparent; color: #5c7477; font-size: 24px; cursor: pointer; }
.injection-popup-contenu { overflow: auto; padding: 18px 22px; }
.injection-popup-partie + .injection-popup-partie { margin-top: 20px; padding-top: 18px; border-top: 1px solid #dbe6e7; }
.injection-popup-partie h3 { margin: 0 0 4px; color: #294f54; font-size: 15px; }
.injection-popup-partie > p { margin: 0 0 12px; color: #718487; font-size: 12px; line-height: 1.45; }
.injection-popup select { width: 100%; min-width: 0; padding: 9px 10px; border: 1px solid #cbdadc; border-radius: 7px; background: #fff; color: #294f54; }
.injection-associations { display: grid; gap: 8px; }
.injection-association { display: grid; grid-template-columns: 90px minmax(0,1fr); gap: 12px; align-items: center; }
.injection-association strong { color: #0a7e88; font-size: 13px; }
.injection-associations-vide { margin: 0; color: #819396; font-style: italic; }
.injection-popup-boite > footer { display: flex; justify-content: flex-end; gap: 9px; padding: 14px 22px; border-top: 1px solid #dbe6e7; background: rgba(234,246,247,.72); }
.injection-popup-boite > footer button { padding: 10px 16px; border-radius: 7px; font-weight: 850; cursor: pointer; }
.injection-popup-abandon { border: 1px solid #c8d7d9; background: #fff; color: #46666a; }
.injection-popup-valider { border: 0; background: #2f9b68; color: #fff; }
.injection-popup-valider:disabled { opacity: .5; cursor: wait; }

/* Injection — administration d'une instance -------------------------------- */
.injection-actions { display: flex; align-items: center; gap: 8px; }
.injection-administrer { min-width: 108px; padding: 9px 13px; box-sizing: border-box; border-radius: 7px; background: var(--criterium); color: #fff; font-size: 13px; font-weight: 850; text-align: center; text-decoration: none; }
.injection-administrer:hover { filter: brightness(.95); }
.injection-action:disabled { opacity: .42; cursor: not-allowed; }

/* Administration d'une instance -------------------------------------------- */
.administration-page { max-width: 1260px; }
.administration-entete { display: flex; align-items: flex-start; justify-content: space-between; gap: 28px; margin-bottom: 20px; }
.administration-entete h1 { margin: 8px 0 3px; color: #183f44; font-size: 26px; }
.administration-entete p { margin: 0; color: #6b7f82; }
.administration-version { margin-left: 7px; color: #748689; font-size: 11px; font-weight: 800; }
.administration-auteurs { display: grid; gap: 5px; min-width: 240px; padding-top: 3px; color: #6d8083; font-size: 12px; text-align: right; }
.administration-auteurs strong { color: #31565b; }

.administration-parametres { position: relative; display: grid; grid-template-columns: minmax(240px,.8fr) minmax(360px,1.2fr); gap: 16px 22px; margin-bottom: 24px; padding: 16px; border: 1px solid #d9e4e5; border-radius: 10px; background: rgba(255,255,255,.68); }
.administration-parametre label, .administration-competences strong { color: #31565b; font-size: 12px; font-weight: 850; }
.administration-parametre { display: grid; gap: 6px; }
.administration-parametre select, .administration-competences select { width: 100%; min-width: 0; padding: 9px 10px; border: 1px solid #cbdadc; border-radius: 7px; background: #fff; color: #294f54; }
.administration-parametre select:disabled, .administration-competences select:disabled { background: #eef3f3; color: #77888a; }
.administration-competences { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px 12px; }
.administration-competences label { display: grid; grid-template-columns: 54px minmax(0,1fr); align-items: center; gap: 8px; }
.administration-visibilite-ens { grid-column: 1 / -1; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding-top: 14px; border-top: 1px solid #dbe5e6; }
.administration-visibilite-ens strong { color: #294f54; font-size: 13px; }
.administration-visibilite-ens p { margin: 4px 0 0; max-width: 780px; color: #718487; font-size: 12px; line-height: 1.4; }
.administration-choix-binaire { display: flex; gap: 6px; flex: 0 0 auto; }
.administration-choix-binaire button { min-width: 60px; padding: 9px 12px; border: 1px solid #cbd9da; border-radius: 7px; background: #fff; color: #5f7578; font-weight: 900; cursor: pointer; }
.administration-choix-binaire button.actif { border-color: #138993; background: var(--criterium); color: #fff; }
.administration-choix-binaire button:disabled { opacity: .7; cursor: default; }
.administration-enregistrement { position: absolute; right: 12px; bottom: -13px; padding: 5px 9px; border-radius: 999px; background: #dff4e9; color: #2d7551; font-size: 10px; font-weight: 850; box-shadow: 0 2px 8px rgba(31,80,85,.09); }
.administration-enregistrement.erreur { background: #f8dddd; color: #9c3434; }

.administration-etudiants-entete { display: flex; align-items: end; justify-content: space-between; gap: 20px; margin-bottom: 12px; }
.administration-etudiants-entete h2 { margin: 0 0 3px; color: #294f54; font-size: 18px; }
.administration-etudiants-entete p { margin: 0; color: #738689; font-size: 12px; }
.administration-lecture-seule { padding: 6px 9px; border-radius: 999px; background: #edf2f2; color: #6c7e81; font-size: 11px; font-weight: 850; }

.administration-filtres { display: grid; gap: 9px; margin-bottom: 14px; }
.administration-filtre-partition { display: grid; grid-template-columns: 120px minmax(0,1fr); align-items: start; gap: 12px; }
.administration-filtre-partition > strong { padding-top: 5px; color: #46666a; font-size: 11px; font-weight: 900; text-transform: uppercase; }
.administration-filtre-partition > div { display: flex; flex-wrap: wrap; gap: 6px; }
.administration-filtre-partition button { padding: 5px 9px; border: 1px solid #cddbdc; border-radius: 999px; background: #fff; color: #647b7e; font-size: 11px; font-weight: 800; cursor: pointer; opacity: .52; }
.administration-filtre-partition button.actif { border-color: rgba(0,109,119,.3); background: rgba(0,109,119,.09); color: #176a72; opacity: 1; }

.administration-table-conteneur { overflow: auto; border: 1px solid #dbe5e6; border-radius: 9px; background: rgba(255,255,255,.72); }
.administration-table { width: 100%; min-width: 920px; border-collapse: collapse; }
.administration-table th { position: sticky; top: 0; z-index: 2; padding: 10px 11px; border-bottom: 1px solid #d6e2e3; background: #eef7f7; color: #31565b; font-size: 11px; font-weight: 900; text-align: left; vertical-align: top; }
.administration-table td { padding: 9px 11px; border-bottom: 1px solid #e5ecec; vertical-align: middle; }
.administration-table tbody tr:last-child td { border-bottom: 0; }
.administration-table tbody tr[hidden] { display: none; }
.administration-table tbody tr:hover { background: rgba(0,109,119,.025); }
.administration-colonne-action { width: 92px; text-align: center !important; }
.administration-colonne-action span { display: block; margin-bottom: 6px; }
.administration-colonne-evaluateurs { min-width: 330px; }
.administration-case-centree { text-align: center; }
.administration-table input[type="checkbox"] { width: 17px; height: 17px; accent-color: var(--criterium); }
.administration-etudiant { color: #245d63; font-size: 13px; font-weight: 900; text-decoration: none; }
.administration-etudiant:hover { text-decoration: underline; }
.administration-partitions-etudiant { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 4px; }
.administration-partitions-etudiant span { padding: 2px 5px; border-radius: 4px; background: rgba(0,109,119,.07); color: #668084; font-size: 9px; }

.administration-cohorte-evaluateur { display: grid; grid-template-columns: minmax(150px,1fr) auto auto; gap: 5px; margin-top: 7px; }
.administration-cohorte-evaluateur input, .administration-evaluateur-ajout input { min-width: 0; padding: 6px 7px; border: 1px solid #cbdadc; border-radius: 6px; background: #fff; color: #294f54; }
.administration-cohorte-evaluateur button, .administration-evaluateur-ajout button { padding: 6px 8px; border: 0; border-radius: 6px; background: var(--criterium); color: #fff; font-size: 10px; font-weight: 850; cursor: pointer; }
.administration-cohorte-evaluateur button:last-child { background: #a45e5e; }
.administration-evaluateurs { display: grid; gap: 6px; }
.administration-evaluateurs-liste { display: flex; flex-wrap: wrap; gap: 5px; }
.administration-evaluateurs-liste > span { display: inline-flex; align-items: center; gap: 5px; padding: 4px 6px; border-radius: 999px; background: rgba(0,109,119,.08); color: #426b70; font-size: 10px; font-weight: 800; }
.administration-evaluateurs-liste > span button { width: 16px; height: 16px; padding: 0; border: 0; border-radius: 50%; background: #c85c5c; color: #fff; line-height: 14px; cursor: pointer; }
.administration-evaluateur-ajout { display: grid; grid-template-columns: minmax(120px,1fr) 30px; gap: 5px; }
.administration-evaluateur-ajout button { font-size: 14px; }
.administration-evaluateur-ajout input:disabled, .administration-evaluateur-ajout button:disabled { opacity: .45; cursor: not-allowed; }

@media (max-width: 950px) {
    .administration-entete { flex-direction: column; }
    .administration-auteurs { text-align: left; }
    .administration-parametres { grid-template-columns: 1fr; }
    .administration-competences { grid-template-columns: 1fr; }
    .administration-visibilite-ens { align-items: flex-start; flex-direction: column; }
}

/* ========================================================================== */
/* Navigation                                                                 */
/* ========================================================================== */
.navigation-page { display: grid; gap: 24px; }
.navigation-entete { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; }
.navigation-entete h1, .navigation-titre-niveau h2, .navigation-tableau-a-venir h2 { margin: 0; color: #183f44; }
.navigation-entete p, .navigation-titre-niveau p, .navigation-tableau-a-venir p { margin: 5px 0 0; color: #60787b; }
.navigation-legende { display: flex; flex-wrap: wrap; gap: 12px; font-size: .82rem; color: #577074; }
.navigation-legende span { display: inline-flex; align-items: center; gap: 6px; }
.navigation-legende i { width: 10px; height: 10px; border-radius: 50%; }
.navigation-legende .pas-commence { background: #db4b4b; }
.navigation-legende .en-cours { background: #e6b72f; }
.navigation-legende .termine { background: #45a96b; }
.navigation-niveau { display: grid; gap: 14px; }
.navigation-titre-niveau { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; }
.navigation-titre-niveau p { font-size: .86rem; text-align: right; }
.navigation-departements { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; width: min(980px, 100%); margin: 0 auto; }
.navigation-carte-departement, .navigation-carte-formation { position: relative; text-decoration: none; color: var(--departement-texte); border: 2px solid transparent; background: var(--departement-fond); box-shadow: 0 5px 15px rgba(28,68,74,.11); transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease, filter .15s ease; }
.navigation-carte-departement:hover, .navigation-carte-formation:hover { transform: translateY(-2px); box-shadow: 0 9px 22px rgba(28,68,74,.18); filter: brightness(1.025); }
.navigation-carte-departement.actif, .navigation-carte-formation.actif { border-color: rgba(255,255,255,.88); box-shadow: 0 0 0 2px rgba(25,58,63,.20), 0 9px 22px rgba(28,68,74,.18); }
.navigation-carte-departement { min-height: 205px; padding: 22px 20px; border-radius: 15px; display: flex; flex-direction: column; align-items: center; justify-content: space-between; }
.navigation-carte-departement-nom { font-size: 1.2rem; font-weight: 950; letter-spacing: .055em; color: var(--departement-texte); }
.navigation-donut { --donut-fond: conic-gradient(#d7e0e1 0 100%); position: relative; width: 90px; aspect-ratio: 1; border-radius: 50%; background: var(--donut-fond); flex: 0 0 auto; cursor: help; }
.navigation-donut::after { content: ''; position: absolute; inset: 11px; border-radius: 50%; background: rgba(250,252,252,.96); }
.navigation-donut-centre { position: absolute; z-index: 1; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; line-height: 1; pointer-events: none; }
.navigation-donut-centre strong { font-size: 1.08rem; color: #173f44; }
.navigation-donut-centre span { margin-top: 4px; font-size: .59rem; text-transform: uppercase; letter-spacing: .05em; color: #708587; }
.navigation-donut.vide { cursor: default; }
.navigation-formations-zone { padding-top: 3px; }
.navigation-formations { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.navigation-carte-formation { min-height: 126px; padding: 15px 16px; border-radius: 12px; display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.navigation-formation-identite { min-width: 0; display: grid; gap: 5px; }
.navigation-formation-identite strong { font-size: .94rem; line-height: 1.25; color: var(--departement-texte); }
.navigation-formation-identite span { font-size: .75rem; line-height: 1.25; color: var(--departement-texte); opacity: .78; }
.navigation-carte-formation .navigation-donut { width: 82px; }
.navigation-carte-formation .navigation-donut::after { inset: 10px; }
.navigation-alerte, .navigation-vide, .navigation-tableau-a-venir { padding: 16px 18px; border-radius: 10px; background: rgba(255,255,255,.7); border: 1px solid rgba(37,87,93,.11); }
.navigation-alerte { color: #8b5513; background: rgba(255,241,210,.72); }
.navigation-tableau-a-venir { margin-top: 2px; }
.navigation-tooltip { position: fixed; z-index: 9999; min-width: 150px; max-width: 260px; padding: 9px 11px; border-radius: 8px; background: rgba(23,55,60,.96); color: #fff; box-shadow: 0 8px 24px rgba(0,0,0,.2); pointer-events: none; font-size: .78rem; }
.navigation-tooltip:not([hidden]) { display: grid; grid-template-columns: auto 1fr; gap: 3px 7px; align-items: center; }
.navigation-tooltip > span:last-child { grid-column: 2; color: rgba(255,255,255,.78); }
.navigation-tooltip-etat { width: 9px; height: 9px; border-radius: 50%; background: var(--tooltip-couleur); }
@media (max-width: 1180px) {
    .navigation-formations { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
    .navigation-entete, .navigation-titre-niveau { align-items: flex-start; flex-direction: column; }
    .navigation-titre-niveau p { text-align: left; }
    .navigation-departements, .navigation-formations { grid-template-columns: 1fr; }
}

/* Navigation hiérarchique : département > formation > grille > étudiants */
.navigation-exploration {
    display: grid;
    grid-template-columns: 230px minmax(0, 1fr);
    gap: 22px;
    align-items: start;
}

.criterium-contexte {
    display: grid;
    gap: 12px;
    position: sticky;
    top: 18px;
    min-width: 0;
    margin-top: 14px;
    padding: 14px;
    border: 1px solid rgba(42, 86, 91, .10);
    border-radius: 14px;
    background: rgba(255, 255, 255, .72);
    box-shadow: 0 8px 24px rgba(29, 69, 74, .08);
    backdrop-filter: blur(10px);
}
.criterium-contexte-titre {
    padding: 0 2px 8px;
    border-bottom: 1px solid rgba(42, 86, 91, .10);
    color: #345e63;
    font-size: .78rem;
    font-weight: 950;
    letter-spacing: .045em;
    text-transform: uppercase;
}

.navigation-contenu {
    min-width: 0;
}

.navigation-carte-departement,
.navigation-carte-formation {
    color: var(--departement-texte);
    background: var(--departement-fond);
}

.navigation-carte-departement.navigation-carte-contexte {
    min-height: 150px;
    padding: 16px 14px;
}

.navigation-carte-departement.navigation-carte-contexte .navigation-donut {
    width: 76px;
}

.navigation-carte-formation.navigation-carte-contexte {
    min-height: 112px;
    padding: 12px;
}

.navigation-carte-formation.navigation-carte-contexte .navigation-donut {
    width: 68px;
}

.navigation-carte-contexte {
    width: 100%;
}

.navigation-grilles {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
}

.navigation-carte-grille {
    min-width: 0;
    min-height: 132px;
    padding: 15px 16px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    text-decoration: none;
    color: #183f44;
    background: rgba(255,255,255,.78);
    border: 1px solid rgba(35,84,90,.14);
    box-shadow: 0 5px 15px rgba(28,68,74,.08);
    transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}

.navigation-carte-grille:hover {
    transform: translateY(-2px);
    border-color: rgba(35,84,90,.28);
    box-shadow: 0 9px 22px rgba(28,68,74,.14);
}

.navigation-carte-grille.navigation-carte-contexte {
    min-height: 112px;
    padding: 12px;
}

.navigation-carte-grille.navigation-carte-contexte .navigation-donut {
    width: 68px;
}

.navigation-grille-identite {
    min-width: 0;
    display: grid;
    gap: 4px;
}

.navigation-grille-identite > span {
    font-size: .68rem;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: #6d8588;
    font-weight: 800;
}

.navigation-grille-identite strong {
    font-size: .94rem;
    line-height: 1.22;
    color: #183f44;
}

.navigation-grille-identite small {
    font-size: .73rem;
    line-height: 1.28;
    color: #61797c;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.navigation-donut-centre {
    line-height: 1;
}

.navigation-donut-centre strong {
    font-size: 1.08rem;
}

@media (max-width: 1050px) {
    .navigation-exploration {
        grid-template-columns: 190px minmax(0, 1fr);
        gap: 16px;
    }

    .navigation-grilles {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 760px) {
    .navigation-exploration {
        grid-template-columns: 1fr;
    }

    .criterium-contexte {
        position: static;
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .navigation-carte-departement.navigation-carte-contexte,
    .navigation-carte-formation.navigation-carte-contexte,
    .navigation-carte-grille.navigation-carte-contexte {
        min-height: 100px;
    }
}

@media (max-width: 560px) {
    .criterium-contexte {
        grid-template-columns: 1fr;
    }
}


/* Navigation : tableau des étudiants d'une instance */
.navigation-grille-auteur { color: #4d6d71 !important; font-weight: 750; opacity: .92; }
.navigation-tableau-etudiants { min-width: 0; display: grid; gap: 14px; }
.navigation-filtres-tableau { display: grid; gap: 10px; padding: 12px 14px; border-radius: 12px; background: rgba(255,255,255,.62); border: 1px solid rgba(35,84,90,.10); }
.navigation-filtre-partition { display: grid; grid-template-columns: 120px minmax(0,1fr); gap: 10px; align-items: center; }
.navigation-filtre-partition > strong { font-size: .74rem; color: #506f73; text-transform: uppercase; letter-spacing: .04em; }
.navigation-filtre-partition > div { display: flex; flex-wrap: wrap; gap: 6px; }
.navigation-filtre-partition button { border: 1px solid rgba(36,83,89,.18); border-radius: 999px; background: rgba(255,255,255,.78); color: #45666a; padding: 5px 9px; font-size: .74rem; font-weight: 750; cursor: pointer; }
.navigation-filtre-partition button.actif { background: #2c8f98; border-color: #2c8f98; color: #fff; }
.navigation-filtre-avancement button {
    width: 38px;
    height: 38px;
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: #fff;
    color: inherit;
    border-color: rgba(36,83,89,.18);
}
.navigation-filtre-avancement button:hover { border-color: rgba(36,83,89,.42); box-shadow: 0 3px 10px rgba(36,83,89,.12); }
.navigation-filtre-avancement button.actif { background: #fff; color: inherit; box-shadow: 0 0 0 2px rgba(44,143,152,.22); border-color: #2c8f98; }
.navigation-filtre-avancement button:not(.actif) { opacity: .35; box-shadow: none; }
.navigation-tableau-meta { font-size: .76rem; color: #668084; text-align: right; }
.navigation-table-conteneur { min-width: 0; overflow: auto; border-radius: 12px; border: 1px solid rgba(35,84,90,.11); background: rgba(255,255,255,.73); }
.navigation-table { width: 100%; min-width: 780px; border-collapse: collapse; font-size: .82rem; }
.navigation-table th, .navigation-table td { padding: 9px 10px; border-bottom: 1px solid rgba(42,86,91,.09); vertical-align: middle; }
.navigation-table th { position: sticky; top: 0; z-index: 2; background: rgba(240,247,247,.97); color: #365b60; text-align: left; white-space: nowrap; }
.navigation-table th button { appearance: none; border: 0; background: none; padding: 0 16px 0 0; color: inherit; font: inherit; font-weight: 850; cursor: pointer; position: relative; }
.navigation-table th button::after { content: '↕'; position: absolute; right: 0; color: #9aabad; font-size: .72rem; }
.navigation-table th button.actif.asc::after { content: '↑'; color: #287e87; }
.navigation-table th button.actif.desc::after { content: '↓'; color: #287e87; }
.navigation-table tbody tr:hover { background: rgba(45,143,152,.045); }
.navigation-table tbody tr:last-child td { border-bottom: 0; }
.navigation-col-etat { width: 58px; text-align: center !important; }
.navigation-col-avancement { min-width: 190px; }
.navigation-col-evaluateurs { min-width: 150px; }
.navigation-evaluateurs-etudiant { display: grid; gap: 3px; }
.navigation-evaluateurs-etudiant span {
    font-size: .72rem;
    line-height: 1.2;
    color: #486a6e;
    font-weight: 750;
}
.navigation-col-actions { width: 116px; text-align: center !important; }
.navigation-col-competence { min-width: 82px; text-align: center !important; }
.navigation-case-etat { text-align: center; }
.navigation-etat-icon { width: 22px; height: 22px; display: inline-flex; align-items: center; justify-content: center; font-size: .88rem; line-height: 1; font-weight: 950; flex: 0 0 auto; }
.navigation-etat-icon.pas { border: 2px solid #db4b4b; color: #db4b4b; border-radius: 50%; }
.navigation-etat-icon.termine { border: 2px solid #45a96b; color: #45a96b; border-radius: 50%; }
.navigation-etat-icon.encours { color: #d89518; font-size: .95rem; position: relative; }
.navigation-etat-icon.encours::before { content: ''; position: absolute; inset: 0; border: 2px solid #e2a62e; clip-path: polygon(50% 3%, 97% 94%, 3% 94%); }
.navigation-etudiant-lien { color: #1f6670; font-weight: 900; text-decoration: none; }
.navigation-etudiant-lien:hover { text-decoration: underline; }
.navigation-partitions-etudiant { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 5px; }
.navigation-partitions-etudiant span { padding: 2px 6px; border-radius: 999px; background: rgba(48,119,128,.10); color: #4d7074; font-size: .66rem; font-weight: 750; }
.navigation-progression { min-width: 155px; display: grid; grid-template-columns: minmax(90px,1fr) 38px; gap: 8px; align-items: center; }
.navigation-progression-piste { height: 8px; border-radius: 999px; overflow: hidden; background: rgba(37,82,88,.10); }
.navigation-progression-piste span { display: block; height: 100%; border-radius: inherit; transition: width .2s ease, background .2s ease; }
.navigation-progression strong { font-size: .72rem; color: #4f6e72; text-align: right; }
.navigation-actions-etudiant { display: grid; gap: 5px; justify-items: stretch; }
.navigation-bouton-action { display: inline-flex; align-items: center; justify-content: center; border-radius: 7px; padding: 5px 9px; text-decoration: none; font-size: .7rem; font-weight: 850; white-space: nowrap; }
.navigation-bouton-rattachement {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 38px;
    border-radius: 9px;
    background: #2b8d96;
    color: #fff;
    text-decoration: none;
    font-size: .76rem;
    font-weight: 900;
    letter-spacing: .01em;
}
.navigation-bouton-rattachement:hover { filter: brightness(.96); }
.navigation-bouton-action.principal { background: #2b8d96; color: #fff; }
.navigation-bouton-action.secondaire { background: rgba(43,141,150,.10); color: #276b72; }
.navigation-resultat-competence { text-align: center; font-weight: 850; color: #315c61; white-space: nowrap; }
@media (max-width: 900px) {
    .navigation-filtre-partition { grid-template-columns: 1fr; gap: 5px; }
}

/* Évaluation pédagogique ------------------------------------------------ */
.grille-critere.non-evalue {
    background: rgba(92, 111, 116, .035);
}

.grille-slider.non-evalue input[type="range"],
.grille-echelle-multiple.non-evalue .grille-echelle-multiple-zone {
    opacity: .58;
}

.grille-saisie-evaluation {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 30px;
    gap: 6px;
    align-items: center;
    min-width: 0;
}

.grille-saisie-evaluation.catalogue {
    grid-template-columns: minmax(0, 1fr);
}

.grille-saisie-directe.non-evalue,
.grille-saisie-multiple.non-evalue summary {
    color: #a52f2f;
    background: rgba(219, 75, 75, .10);
    border-color: rgba(219, 75, 75, .48);
    font-weight: 900;
}

.grille-saisie-directe.non-evalue::placeholder {
    color: #a52f2f;
    opacity: 1;
}

.grille-effacer-evaluation {
    width: 30px;
    height: 30px;
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: #9e3636;
    background: rgba(219, 75, 75, .08);
    border: 1px solid rgba(219, 75, 75, .28);
    border-radius: 6px;
    font-size: 17px;
    font-weight: 900;
    line-height: 1;
    cursor: pointer;
}

.grille-effacer-evaluation:hover {
    color: #fff;
    background: #cf4747;
    border-color: #cf4747;
}

.grille-enregistrement {
    position: fixed;
    z-index: 80;
    right: 18px;
    bottom: 16px;
    padding: 7px 12px;
    color: #2f7354;
    background: rgba(222, 245, 233, .92);
    border: 1px solid rgba(58, 145, 102, .18);
    border-radius: 999px;
    box-shadow: 0 4px 16px rgba(27, 67, 72, .10);
    backdrop-filter: blur(8px);
    font-size: 11px;
    font-weight: 850;
    transition: opacity .15s ease;
}

.grille-enregistrement.encours {
    color: #6e5a20;
    background: rgba(250, 239, 198, .92);
    border-color: rgba(196, 151, 30, .20);
}

.grille-enregistrement.erreur {
    color: #963838;
    background: rgba(249, 222, 222, .94);
    border-color: rgba(199, 66, 66, .22);
}

.navigation-page > .navigation-niveau-departements { min-height: calc(100vh - 72px); display:flex; align-items:center; justify-content:center; }
.navigation-page > .navigation-niveau-departements .navigation-departements { width:min(980px,100%); }
.navigation-contenu > .navigation-formations-zone, .navigation-contenu > .navigation-grilles-zone { min-height:calc(100vh - 72px); display:flex; flex-direction:column; justify-content:center; }
.navigation-contenu > .navigation-formations-zone .navigation-formations, .navigation-contenu > .navigation-grilles-zone .navigation-grilles { width:min(1080px,100%); margin-inline:auto; }
.injection-page.injection-progressive .injection-etape-departements { min-height:calc(100vh - 72px); display:flex; flex-direction:column; justify-content:center; }
.injection-page.injection-progressive .injection-departements { width:min(900px,100%); margin-inline:auto; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.injection-page.injection-progressive .injection-departements button { min-height:118px; font-size:1.08rem; }
.injection-page.injection-progressive .injection-etape-formations { min-height:calc(100vh - 72px); display:flex; flex-direction:column; justify-content:center; }
.injection-page.injection-progressive .injection-formations { width:min(1120px,100%); margin-inline:auto; }
.administration-exploration { display:grid; grid-template-columns:minmax(180px,230px) minmax(0,1fr); gap:22px; align-items:start; }
.administration-contenu-contextuel { min-width:0; }
@media(max-width:980px){.administration-exploration{grid-template-columns:1fr}.administration-exploration>.criterium-contexte{position:static}}
@media(max-width:820px){.injection-page.injection-progressive .injection-departements{grid-template-columns:1fr}}

/* ----------------------------------------------------------------------
   Rattachement — navigation progressive sur le modèle de Navigation
   ---------------------------------------------------------------------- */
.rattachement-page {
    min-height: calc(100vh - 52px);
}

.rattachement-choix {
    min-height: calc(100vh - 52px);
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 0;
}

.rattachement-departements {
    width: min(900px, 100%);
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 16px;
}

.rattachement-carte-departement {
    min-height: 132px;
    border-radius: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--departement-fond);
    color: var(--departement-texte);
    text-decoration: none;
    font-size: 1.12rem;
    font-weight: 950;
    letter-spacing: .04em;
    box-shadow: 0 6px 18px rgba(28,68,74,.10);
    transition: transform .15s ease, box-shadow .15s ease, filter .15s ease;
}

.rattachement-carte-departement:hover,
.rattachement-carte-formation:hover,
.rattachement-contexte-carte:hover {
    transform: translateY(-2px);
    box-shadow: 0 9px 22px rgba(28,68,74,.16);
    filter: brightness(1.02);
}

.rattachement-exploration {
    display: grid;
    grid-template-columns: minmax(190px, 230px) minmax(0, 1fr);
    gap: 22px;
    align-items: start;
    min-width: 0;
}

.rattachement-contenu {
    min-width: 0;
}

.rattachement-contexte-carte {
    width: 100%;
    box-sizing: border-box;
    border-radius: 12px;
    background: var(--departement-fond);
    color: var(--departement-texte);
    text-decoration: none;
    box-shadow: 0 5px 15px rgba(28,68,74,.10);
    transition: transform .15s ease, box-shadow .15s ease, filter .15s ease;
}

.rattachement-contexte-departement {
    min-height: 92px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 12px 14px;
    font-size: 1rem;
    font-weight: 950;
    letter-spacing: .04em;
}

.rattachement-contexte-formation {
    min-height: 88px;
    display: grid;
    align-content: center;
    gap: 4px;
    padding: 12px 14px;
}

.rattachement-contexte-formation strong {
    font-size: .82rem;
    line-height: 1.25;
    color: inherit;
}

.rattachement-contexte-formation span {
    font-size: .68rem;
    line-height: 1.25;
    opacity: .78;
    color: inherit;
}

.rattachement-choix-formations {
    align-items: center;
}

.rattachement-choix-formations > .navigation-alerte,
.rattachement-choix-formations > .navigation-vide {
    width: min(900px, 100%);
}

.rattachement-formations {
    width: min(1120px, 100%);
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 16px;
    align-items: start;
}

.rattachement-formations-colonne {
    min-width: 0;
}

.rattachement-formations-colonne h3 {
    margin: 0 0 9px;
    padding-bottom: 7px;
    border-bottom: 1px solid rgba(36,83,89,.15);
    color: #45666a;
    font-size: .72rem;
    font-weight: 900;
    letter-spacing: .04em;
    text-transform: uppercase;
}

.rattachement-formations-liste {
    display: grid;
    gap: 8px;
}

.rattachement-carte-formation {
    min-height: 72px;
    display: grid;
    align-content: center;
    gap: 4px;
    padding: 11px 13px;
    border-radius: 9px;
    background: var(--departement-fond);
    color: var(--departement-texte);
    text-decoration: none;
    box-shadow: 0 4px 12px rgba(28,68,74,.08);
    transition: transform .15s ease, box-shadow .15s ease, filter .15s ease;
}

.rattachement-carte-formation strong {
    font-size: .78rem;
    line-height: 1.22;
    color: inherit;
}

.rattachement-carte-formation span {
    font-size: .67rem;
    line-height: 1.22;
    color: inherit;
    opacity: .75;
}

.rattachement-vide-colonne {
    margin: 0;
    padding: 10px;
    color: #87989a;
    font-size: .75rem;
    font-style: italic;
}

.rattachement-grilles-zone {
    padding-top: 14px;
}

.rattachement-outils {
    display: flex;
    justify-content: flex-end;
    margin-bottom: 12px;
}

.rattachement-outils input {
    width: min(420px, 100%);
    padding: 10px 12px;
    border: 1px solid #c8dadd;
    border-radius: 9px;
    background: rgba(255,255,255,.86);
    color: #244e53;
    outline: none;
}

.rattachement-outils input:focus {
    border-color: #2c8f98;
    box-shadow: 0 0 0 3px rgba(44,143,152,.10);
}

.rattachement-grilles {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.rattachement-grille {
    min-width: 0;
    min-height: 156px;
    padding: 15px 16px;
    border-radius: 12px;
    display: flex;
    justify-content: space-between;
    gap: 16px;
    background: rgba(255,255,255,.78);
    border: 1px solid rgba(35,84,90,.13);
    box-shadow: 0 5px 15px rgba(28,68,74,.07);
}

.rattachement-grille-contenu {
    min-width: 0;
}

.rattachement-grille-meta {
    display: flex;
    align-items: center;
    gap: 9px;
    margin-bottom: 9px;
}

.rattachement-grille-meta label {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    color: #647d80;
    font-size: .68rem;
    font-weight: 800;
}

.rattachement-grille-meta select {
    padding: 4px 24px 4px 7px;
    border: 1px solid #c8dadd;
    border-radius: 7px;
    background: #fff;
    color: #315b60;
    font-weight: 800;
}

.rattachement-grille h3 {
    margin: 0 0 6px;
    color: #183f44;
    font-size: .98rem;
}

.rattachement-grille p {
    margin: 0;
    color: #647d80;
    font-size: .76rem;
    line-height: 1.38;
}

.rattachement-grille-actions {
    width: 114px;
    flex: 0 0 114px;
    display: grid;
    align-content: center;
    gap: 7px;
}

.rattachement-administrer,
.rattachement-action {
    min-height: 36px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 0;
    border-radius: 8px;
    padding: 7px 10px;
    text-decoration: none;
    font-size: .72rem;
    font-weight: 900;
    cursor: pointer;
}

.rattachement-administrer {
    background: #2c8f98;
    color: #fff;
}

.rattachement-action {
    background: #43a667;
    color: #fff;
}

.rattachement-action.retirer {
    background: #cf4a4a;
}

.rattachement-action:disabled {
    opacity: .38;
    cursor: not-allowed;
}

.rattachement-vide {
    margin: 18px 0 0;
    color: #778d90;
    text-align: center;
}

/* Le contexte de la page Administration reprend le même format compact. */
.administration-exploration {
    display: grid;
    grid-template-columns: minmax(190px, 230px) minmax(0, 1fr);
    gap: 22px;
    align-items: start;
}

.administration-exploration .criterium-contexte .navigation-carte-departement.navigation-carte-contexte {
    min-height: 92px;
    padding: 12px 14px;
    justify-content: center;
}

.administration-exploration .criterium-contexte .navigation-carte-departement-nom {
    font-size: 1rem;
}

.administration-exploration .criterium-contexte .navigation-carte-formation.navigation-carte-contexte,
.administration-exploration .criterium-contexte .navigation-carte-grille.navigation-carte-contexte {
    min-height: 88px;
    padding: 12px 14px;
}

.administration-contenu-contextuel {
    min-width: 0;
}

@media (max-width: 1050px) {
    .rattachement-formations,
    .rattachement-grilles {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 900px) {
    .rattachement-departements {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .rattachement-exploration,
    .administration-exploration {
        grid-template-columns: 1fr;
    }
    .rattachement-exploration > .criterium-contexte,
    .administration-exploration > .criterium-contexte {
        position: static;
    }
}

.administration-contexte-grille {
    min-height: 88px;
    display: grid;
    align-content: center;
    gap: 4px;
    padding: 12px 14px;
    background: rgba(255,255,255,.82);
    color: #183f44;
    border: 1px solid rgba(35,84,90,.13);
}
.administration-contexte-grille span {
    color: #6d8588;
    font-size: .66rem;
    font-weight: 800;
    letter-spacing: .05em;
    text-transform: uppercase;
}
.administration-contexte-grille strong {
    font-size: .82rem;
    line-height: 1.25;
}


/* Lecteur temporel de l'historique d'une évaluation. */
body:has(.historique-lecteur) .criterium-contenu {
    padding-bottom: 126px;
}
.historique-lecteur {
    position: fixed;
    left: calc(var(--criterium-menu-largeur, 220px) + 18px);
    right: 18px;
    bottom: 14px;
    z-index: 80;
    min-height: 82px;
    display: grid;
    grid-template-columns: auto minmax(220px, 1fr) minmax(220px, 320px);
    gap: 16px;
    align-items: center;
    padding: 12px 14px;
    border: 1px solid rgba(39, 92, 98, .16);
    border-radius: 14px;
    background: rgba(248, 252, 252, .91);
    box-shadow: 0 10px 32px rgba(25, 64, 69, .18);
    backdrop-filter: blur(10px);
}
.historique-commandes {
    display: flex;
    align-items: center;
    gap: 6px;
}
.historique-commandes button {
    width: 34px;
    height: 34px;
    border: 1px solid rgba(39, 92, 98, .18);
    border-radius: 8px;
    background: rgba(255,255,255,.9);
    color: #285f66;
    font-weight: 900;
    cursor: pointer;
}
.historique-commandes button:hover {
    background: #eef7f7;
    border-color: rgba(39, 92, 98, .36);
}
.historique-commandes .historique-play {
    width: 42px;
    height: 42px;
    background: #2b8d96;
    color: #fff;
    border-color: #2b8d96;
    font-size: 1rem;
}
.historique-vitesse {
    min-width: 42px;
    text-align: center;
    font-size: .72rem;
    font-weight: 900;
    color: #557579;
}
.historique-timeline {
    min-width: 0;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 10px;
    align-items: center;
}
.historique-timeline input[type="range"] {
    width: 100%;
    accent-color: #2b8d96;
}
.historique-timeline span {
    min-width: 58px;
    color: #607d80;
    font-size: .74rem;
    font-weight: 850;
    text-align: right;
}
.historique-evenement {
    min-width: 0;
    display: grid;
    gap: 2px;
    padding-left: 14px;
    border-left: 1px solid rgba(39, 92, 98, .16);
    color: #527074;
    font-size: .72rem;
    line-height: 1.25;
}
.historique-evenement strong {
    color: #254f55;
    font-size: .78rem;
}
.historique-changement {
    margin-top: 2px;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    color: #315f64;
    font-weight: 800;
    overflow-wrap: anywhere;
}
@media (max-width: 1050px) {
    .historique-lecteur {
        grid-template-columns: 1fr;
        left: 12px;
        right: 12px;
    }
    .historique-evenement {
        border-left: 0;
        border-top: 1px solid rgba(39, 92, 98, .16);
        padding: 8px 0 0;
    }
}

/* Voile statistique des critères --------------------------------------- */
.grille-statistiques-outils {
    display: flex;
    justify-content: flex-start;
    margin: 7px 0 12px;
}

.grille-statistiques-bouton {
    min-height: 32px;
    padding: 6px 11px;
    border: 1px solid rgba(28, 119, 142, .22);
    border-radius: 8px;
    background: rgba(35, 143, 166, .07);
    color: #34717c;
    font-size: 11px;
    font-weight: 850;
    cursor: pointer;
    transition: background .15s ease, border-color .15s ease, color .15s ease, opacity .15s ease;
}

.grille-statistiques-bouton:hover,
.grille-statistiques-bouton.actif {
    border-color: rgba(28, 119, 142, .38);
    background: rgba(35, 143, 166, .13);
    color: #245f6b;
}

.grille-statistiques-bouton:disabled {
    cursor: wait;
    opacity: .6;
}

.grille-critere-controle {
    position: relative;
}

.grille-critere-controle > .grille-slider,
.grille-critere-controle > .grille-echelle-multiple {
    position: relative;
    z-index: 2;
}

.grille-statistique-voile {
    position: absolute;
    z-index: 1;
    top: 15px;
    left: 0;
    right: 128px;
    height: 34px;
    overflow: hidden;
    pointer-events: none;
    opacity: .95;
}

.grille-statistique-voile[hidden] {
    display: none !important;
}

.grille-statistique-voile svg {
    display: block;
    width: 100%;
    height: 100%;
    overflow: visible;
}

.grille-statistique-voile path {
    fill: rgba(44, 145, 174, .13);
    stroke: rgba(44, 145, 174, .18);
    stroke-width: 1.2;
    vector-effect: non-scaling-stroke;
}


/* Contexte : vraie colonne attenante au menu principal, pleine hauteur. */
.page-enseignant .page:has(.criterium-contexte) {
    padding: 0;
}
.page-enseignant .carte-simple:has(.criterium-contexte) {
    min-height: 100vh;
}
.navigation-exploration,
.rattachement-exploration,
.administration-exploration {
    gap: 0 !important;
    min-height: 100vh;
}
.criterium-contexte {
    position: sticky;
    top: 0;
    align-self: start;
    min-height: 100vh;
    margin: 0;
    padding: 22px 14px;
    border: 0;
    border-right: 1px solid rgba(42, 86, 91, .10);
    border-radius: 0;
    background: rgba(255, 255, 255, .76);
    box-shadow: 6px 0 18px rgba(29, 69, 74, .05);
    backdrop-filter: blur(10px);
}
.navigation-contenu,
.rattachement-contenu,
.administration-contenu-contextuel {
    min-width: 0;
    padding: 26px clamp(24px, 3vw, 46px);
}

/* Actions Rattachement. */
.rattachement-grille-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
    justify-content: flex-end;
    align-items: center;
}
.rattachement-consulter,
.rattachement-administrer,
.rattachement-action {
    min-height: 36px;
    padding: 8px 12px;
    border-radius: 8px;
    font-size: .73rem;
    font-weight: 900;
}
.rattachement-consulter {
    border: 1px solid rgba(43, 141, 150, .22);
    background: rgba(43, 141, 150, .10);
    color: #276b72;
    cursor: pointer;
}
.rattachement-administrer.desactive {
    pointer-events: none;
    opacity: .42;
    filter: grayscale(.7);
    cursor: default;
}

/* Popups de confirmation et de consultation. */
.rattachement-popup[hidden] {
    display: none !important;
}
.rattachement-popup {
    position: fixed;
    inset: 0;
    z-index: 250;
    display: grid;
    place-items: center;
    padding: 24px;
}
.rattachement-popup-fond {
    position: absolute;
    inset: 0;
    background: rgba(20, 44, 48, .35);
    backdrop-filter: blur(4px);
}
.rattachement-popup-carte {
    position: relative;
    z-index: 1;
    width: min(520px, 100%);
    padding: 24px;
    border-radius: 16px;
    background: rgba(255,255,255,.98);
    box-shadow: 0 18px 48px rgba(20, 54, 59, .24);
}
.rattachement-popup-confirmation h2 {
    margin: 0 0 10px;
    color: #315d62;
    font-size: 1.15rem;
}
.rattachement-popup-confirmation p {
    margin: 0;
    color: #607b7e;
    line-height: 1.45;
}
.rattachement-popup-actions {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    margin-top: 20px;
}
.rattachement-popup-actions button {
    min-width: 86px;
    padding: 9px 14px;
    border-radius: 8px;
    font-weight: 900;
    cursor: pointer;
}
.rattachement-popup-non {
    border: 1px solid rgba(42,86,91,.18);
    background: #fff;
    color: #4d6a6e;
}
.rattachement-popup-oui {
    border: 1px solid #c74343;
    background: #c74343;
    color: #fff;
}
.rattachement-popup-carte-apercu {
    width: min(1220px, calc(100vw - 48px));
    height: min(88vh, 900px);
    padding: 0;
    overflow: hidden;
}
.rattachement-popup-fermer {
    position: absolute;
    top: 10px;
    right: 12px;
    z-index: 3;
    width: 36px;
    height: 36px;
    border: 0;
    border-radius: 50%;
    background: rgba(34, 73, 78, .84);
    color: #fff;
    font-size: 1.35rem;
    line-height: 1;
    cursor: pointer;
}
.rattachement-popup-carte-apercu iframe {
    width: 100%;
    height: 100%;
    border: 0;
    background: #f5f9f9;
}

/* Consultation catalogue embarquée. */
.grille-popup-body {
    margin: 0;
    min-height: 100vh;
    background: #f5f9f9;
}
.grille-popup-contenu {
    padding: 28px 30px 40px;
}


/* Correctif contexte : cartes compactes, de taille fixe, alignées en haut.
   Le contexte reste une colonne pleine hauteur attenante au menu. */
.criterium-contexte {
    display: flex !important;
    flex-direction: column;
    justify-content: flex-start !important;
    align-items: stretch;
    gap: 12px;
    height: 100vh;
    min-height: 100vh;
    overflow-y: auto;
    box-sizing: border-box;
}

.criterium-contexte-titre {
    flex: 0 0 auto;
    min-height: 34px;
    margin: 0 0 6px;
}

.criterium-contexte .navigation-carte-contexte,
.criterium-contexte .navigation-carte-departement.navigation-carte-contexte,
.criterium-contexte .navigation-carte-formation.navigation-carte-contexte,
.criterium-contexte .navigation-carte-grille.navigation-carte-contexte {
    flex: 0 0 112px !important;
    width: 100%;
    height: 112px !important;
    min-height: 112px !important;
    max-height: 112px !important;
    margin: 0 !important;
    padding: 14px !important;
    box-sizing: border-box;
}

.criterium-contexte .navigation-carte-departement.navigation-carte-contexte {
    display: flex;
    align-items: center;
    justify-content: center;
}

.criterium-contexte .navigation-carte-formation.navigation-carte-contexte,
.criterium-contexte .navigation-carte-grille.navigation-carte-contexte {
    display: flex;
    align-items: center;
}

.criterium-contexte .navigation-carte-contexte .navigation-donut {
    flex: 0 0 58px;
    width: 58px !important;
    height: 58px !important;
}

.criterium-contexte .navigation-bouton-rattachement,
.criterium-contexte > a.navigation-bouton-rattachement {
    flex: 0 0 46px !important;
    width: 100%;
    height: 46px !important;
    min-height: 46px !important;
    max-height: 46px !important;
    margin: 0 !important;
    padding: 0 12px !important;
    display: flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
}

/* Empêche les anciens styles des cartes de sélection de reprendre
   une hauteur proportionnelle dans le sous-menu. */
.navigation-exploration > .criterium-contexte,
.rattachement-exploration > .criterium-contexte,
.administration-exploration > .criterium-contexte,
.tableau-bord-exploration > .criterium-contexte {
    align-self: stretch;
    justify-self: stretch;
}


/* Suppression définitive d'une grille catalogue. */
.catalogue-bouton-supprimer,
.edition-bouton-supprimer.actif,
.catalogue-bouton-danger {
    border: 1px solid #bd3f3f;
    background: #bd3f3f;
    color: #fff;
    border-radius: 8px;
    font-weight: 900;
    cursor: pointer;
}
.catalogue-bouton-supprimer {
    min-height: 36px;
    padding: 8px 12px;
}
.edition-bouton-supprimer {
    min-height: 38px;
    padding: 8px 12px;
    border: 1px solid rgba(64, 86, 89, .14);
    border-radius: 8px;
    background: #dfe6e7;
    color: #87989a;
    font-weight: 900;
}
.edition-bouton-supprimer.actif:hover,
.catalogue-bouton-supprimer:hover,
.catalogue-bouton-danger:hover {
    filter: brightness(.94);
}

.catalogue-suppression-voile[hidden],
.edition-suppression-voile[hidden],
.edition-recalcul-voile[hidden] {
    display: none !important;
}
.catalogue-suppression-voile,
.edition-suppression-voile,
.edition-recalcul-voile {
    position: fixed;
    inset: 0;
    z-index: 260;
    display: grid;
    place-items: center;
    padding: 24px;
    background: rgba(25, 52, 56, .34);
    backdrop-filter: blur(5px);
}
.catalogue-suppression-dialogue,
.edition-suppression-dialogue,
.edition-recalcul-dialogue {
    width: min(560px, 100%);
    padding: 24px;
    border-radius: 15px;
    background: rgba(255,255,255,.98);
    box-shadow: 0 20px 55px rgba(22, 55, 60, .25);
}
.catalogue-suppression-dialogue h2,
.edition-suppression-dialogue h2,
.edition-recalcul-dialogue h2 {
    margin: 0 0 12px;
    color: #244f55;
    font-size: 1.15rem;
}
.catalogue-suppression-dialogue p,
.edition-suppression-dialogue p,
.edition-recalcul-dialogue p {
    color: #60797d;
    line-height: 1.45;
}
.catalogue-suppression-actions,
.edition-suppression-actions,
.edition-recalcul-actions {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    margin-top: 20px;
}
.catalogue-bouton-danger {
    min-height: 38px;
    padding: 8px 14px;
}

/* Recalcul par lots des évaluations. */
.edition-recalcul-progression {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 12px;
    align-items: center;
    margin-top: 18px;
}
.edition-recalcul-piste {
    height: 10px;
    overflow: hidden;
    border-radius: 999px;
    background: rgba(38, 82, 88, .11);
}
.edition-recalcul-piste span {
    display: block;
    width: 0;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, #2b8d96, #49aa73);
    transition: width .18s ease;
}
.edition-recalcul-progression strong {
    min-width: 72px;
    color: #45676b;
    font-size: .78rem;
    text-align: right;
}


/* À propos */
.apropos-criterium {
    width: min(1120px, 100%);
    margin: 0 auto;
    padding: 18px 0 54px;
}
.apropos-intro {
    max-width: 850px;
    margin: 28px 0 34px;
}
.apropos-surtitre {
    display: inline-block;
    margin-bottom: 8px;
    color: #2b8d96;
    font-size: .72rem;
    font-weight: 950;
    letter-spacing: .16em;
    text-transform: uppercase;
}
.apropos-intro h1 {
    margin: 0 0 14px;
    color: #284f54;
    font-size: clamp(1.8rem, 3vw, 2.7rem);
    line-height: 1.08;
}
.apropos-intro p {
    max-width: 760px;
    margin: 0;
    color: #607b7e;
    font-size: .98rem;
    line-height: 1.65;
}
.apropos-parcours {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 10px;
    margin: 0 0 46px;
}
.apropos-parcours article {
    min-width: 0;
    padding: 14px;
    border: 1px solid rgba(43,141,150,.12);
    border-radius: 10px;
    background: rgba(255,255,255,.72);
}
.apropos-parcours span {
    display: block;
    margin-bottom: 9px;
    color: #2b8d96;
    font-size: .68rem;
    font-weight: 950;
}
.apropos-parcours strong,
.apropos-parcours small {
    display: block;
}
.apropos-parcours strong {
    color: #315d62;
    font-size: .82rem;
}
.apropos-parcours small {
    margin-top: 3px;
    color: #789093;
    font-size: .67rem;
    line-height: 1.35;
}
.apropos-section {
    display: grid;
    grid-template-columns: 70px minmax(0, 1fr);
    gap: 24px;
    padding: 32px 0;
    border-top: 1px solid rgba(42,86,91,.11);
}
.apropos-numero {
    color: rgba(43,141,150,.34);
    font-size: 1.25rem;
    font-weight: 950;
}
.apropos-texte {
    max-width: 860px;
}
.apropos-texte h2 {
    margin: 0 0 14px;
    color: #315d62;
    font-size: 1.25rem;
}
.apropos-texte p {
    margin: 0 0 12px;
    color: #5f777a;
    font-size: .88rem;
    line-height: 1.65;
}
.apropos-texte code {
    padding: 1px 5px;
    border-radius: 5px;
    background: rgba(43,141,150,.08);
    color: #276b72;
    font-size: .82em;
}
.apropos-conseil {
    margin-top: 18px;
    padding: 13px 15px;
    border-left: 3px solid #2b8d96;
    background: rgba(43,141,150,.055);
    color: #607b7e;
    font-size: .8rem;
    line-height: 1.5;
}
.apropos-conseil strong {
    display: block;
    margin-bottom: 2px;
    color: #315d62;
}
.apropos-principes {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}
.apropos-principes article {
    padding: 14px 16px;
    border-radius: 9px;
    background: rgba(255,255,255,.72);
}
.apropos-principes strong,
.apropos-principes span {
    display: block;
}
.apropos-principes strong {
    margin-bottom: 4px;
    color: #315d62;
    font-size: .8rem;
}
.apropos-principes span {
    color: #70878a;
    font-size: .74rem;
    line-height: 1.45;
}
@media (max-width: 850px) {
    .apropos-parcours { grid-template-columns: repeat(2, 1fr); }
    .apropos-section { grid-template-columns: 42px minmax(0, 1fr); gap: 12px; }
}
@media (max-width: 600px) {
    .apropos-parcours,
    .apropos-principes { grid-template-columns: 1fr; }
    .apropos-section { grid-template-columns: 1fr; }
    .apropos-numero { font-size: .8rem; }
}


/* Compléments du guide utilisateur À propos. */
.apropos-texte h3 {
    margin: 22px 0 9px;
    color: #3d686d;
    font-size: .96rem;
}
.apropos-types {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
    margin: 16px 0 18px;
}
.apropos-types article {
    padding: 15px;
    border: 1px solid rgba(43,141,150,.11);
    border-radius: 9px;
    background: rgba(255,255,255,.68);
}
.apropos-types strong {
    display: block;
    margin-bottom: 7px;
    color: #315d62;
    font-size: .82rem;
}
.apropos-types p {
    margin-bottom: 10px;
    font-size: .75rem;
    line-height: 1.5;
}
.apropos-types code {
    display: block;
    line-height: 1.5;
}
.apropos-exemple {
    margin: 16px 0 18px;
    padding: 15px 17px;
    border: 1px solid rgba(43,141,150,.12);
    border-radius: 9px;
    background: rgba(43,141,150,.045);
}
.apropos-exemple > span {
    display: block;
    margin-bottom: 3px;
    color: #2b8d96;
    font-size: .62rem;
    font-weight: 950;
    letter-spacing: .12em;
    text-transform: uppercase;
}
.apropos-exemple > strong {
    display: block;
    margin-bottom: 10px;
    color: #315d62;
    font-size: .82rem;
}
.apropos-exemple > code {
    display: block;
    width: fit-content;
    margin: 5px 0;
    padding: 6px 9px;
    font-size: .78rem;
}
.apropos-exemple > p {
    margin: 10px 0 0;
    font-size: .76rem;
}
.apropos-chemin {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 7px;
    margin: 18px 0 20px;
}
.apropos-chemin span {
    padding: 7px 10px;
    border-radius: 7px;
    background: rgba(43,141,150,.075);
    color: #3e6b70;
    font-size: .72rem;
    font-weight: 850;
}
.apropos-chemin b {
    color: rgba(43,141,150,.45);
    font-size: .9rem;
}
.apropos-principes-trois {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}
@media (max-width: 850px) {
    .apropos-types,
    .apropos-principes-trois {
        grid-template-columns: 1fr;
    }
}


/* Protection des critères déjà évalués dans l'éditeur. */
.edition-grille .edition-supprimer:disabled,
.edition-grille .edition-supprimer-valeur:disabled,
.edition-grille .edition-ajouter-valeur:disabled {
    opacity: .28;
    cursor: not-allowed;
    filter: grayscale(1);
}
.edition-grille .edition-critere select:disabled,
.edition-grille .edition-critere input:disabled {
    cursor: not-allowed;
}
.edition-grille .edition-critere input[data-valeur]:disabled,
.edition-grille .edition-critere input[data-champ-min]:disabled,
.edition-grille .edition-critere input[data-champ-max]:disabled,
.edition-grille .edition-critere input[data-champ-pas]:disabled,
.edition-grille .edition-critere select[data-critere-type]:disabled {
    opacity: .62;
    background: rgba(236, 242, 242, .72);
}


/* Vue étudiant — liste des grilles. */
.etudiant-evaluations {
    width: min(1180px, 100%);
    margin: 0 auto;
    padding: 18px 8px 48px;
}
.etudiant-evaluations-entete {
    margin: 18px 0 32px;
}
.etudiant-evaluations-surtitre {
    display: block;
    margin-bottom: 5px;
    color: #2b8d96;
    font-size: .7rem;
    font-weight: 950;
    letter-spacing: .13em;
    text-transform: uppercase;
}
.etudiant-evaluations-entete h1 {
    margin: 0;
    color: #315d62;
    font-size: 1.8rem;
}
.etudiant-evaluations-entete p {
    margin: 7px 0 0;
    color: #71878a;
    font-size: .86rem;
}
.etudiant-evaluations-vide {
    padding: 28px;
    border: 1px dashed rgba(43,141,150,.22);
    border-radius: 12px;
    color: #6d8588;
    text-align: center;
}
.etudiant-departement {
    margin: 0 0 34px;
}
.etudiant-departement-entete {
    width: fit-content;
    min-width: 92px;
    margin-bottom: 14px;
    padding: 9px 15px;
    border-radius: 9px;
    background: var(--departement-fond);
    color: var(--departement-texte);
    text-align: center;
}
.etudiant-departement-entete strong {
    font-size: .84rem;
    letter-spacing: .06em;
}
.etudiant-annee {
    margin-bottom: 25px;
}
.etudiant-annee h2 {
    margin: 0 0 10px;
    color: #607a7d;
    font-size: .78rem;
    font-weight: 900;
}
.etudiant-grilles {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 13px;
}
.etudiant-grille-carte {
    min-width: 0;
    min-height: 160px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: 18px;
    padding: 17px 18px;
    border: 1px solid rgba(35,84,90,.12);
    border-left: 5px solid var(--departement-fond);
    border-radius: 12px;
    background: rgba(255,255,255,.78);
    color: inherit;
    text-decoration: none;
    box-shadow: 0 5px 16px rgba(31,71,76,.07);
    transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}
a.etudiant-grille-carte:hover {
    transform: translateY(-2px);
    border-color: rgba(35,84,90,.24);
    box-shadow: 0 9px 22px rgba(31,71,76,.12);
}
.etudiant-grille-carte.indisponible {
    border-left-color: #aab7b9;
    background: rgba(224,229,230,.68);
    color: #7c8b8d;
    filter: grayscale(.7);
    opacity: .72;
}
.etudiant-grille-principale {
    display: flex;
    justify-content: space-between;
    gap: 14px;
}
.etudiant-grille-version {
    display: block;
    margin-bottom: 4px;
    color: #789093;
    font-size: .66rem;
    font-weight: 850;
    text-transform: uppercase;
    letter-spacing: .05em;
}
.etudiant-grille-carte h3 {
    margin: 0;
    color: #315d62;
    font-size: 1rem;
}
.etudiant-grille-carte.indisponible h3 {
    color: #6f7e80;
}
.etudiant-grille-carte p {
    margin: 6px 0 0;
    color: #71878a;
    font-size: .74rem;
    line-height: 1.4;
}
.etudiant-grille-indisponible {
    align-self: flex-start;
    flex: 0 0 auto;
    padding: 5px 8px;
    border-radius: 6px;
    background: rgba(104,121,124,.10);
    color: #778789;
    font-size: .64rem;
    font-weight: 850;
}
.etudiant-grille-pied {
    display: flex;
    justify-content: space-between;
    align-items: end;
    gap: 15px;
}
.etudiant-grille-pied time {
    color: #87999b;
    font-size: .64rem;
    white-space: nowrap;
}
.etudiant-grille-avancement {
    min-width: 170px;
    display: grid;
    grid-template-columns: auto minmax(75px, 1fr) auto;
    gap: 7px;
    align-items: center;
}
.etudiant-grille-avancement > span,
.etudiant-grille-avancement > strong {
    color: #698184;
    font-size: .65rem;
}
.etudiant-grille-avancement-piste {
    height: 5px;
    overflow: hidden;
    border-radius: 999px;
    background: #e0e7e8;
}
.etudiant-grille-avancement-piste i {
    display: block;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, #c84949, #dba83f, #4c9a67);
}
@media (max-width: 820px) {
    .etudiant-grilles { grid-template-columns: 1fr; }
}


.menu-etudiant-retour {
    margin-top: 18px;
    padding-top: 16px;
    border-top: 1px solid rgba(0, 109, 119, .12);
}

.menu-etudiant-retour a {
    display: block;
    padding: 10px 11px;
    color: #36565b;
    border-radius: 8px;
    text-decoration: none;
    font-size: 14px;
    font-weight: 720;
    text-align: center;
    transition: color .14s ease, background .14s ease, transform .14s ease;
}

.menu-etudiant-retour a:hover {
    color: var(--criterium);
    background: rgba(255, 255, 255, .55);
    transform: translateX(2px);
}


/* Grille : contexte persistant et navigation séquentielle entre étudiants. */
.grille-exploration {
    min-height: 100vh;
}
.grille-contenu-contextuel {
    min-width: 0;
}
.grille-navigation-sequentielle {
    display: grid;
    gap: 8px;
    margin-top: 2px;
}
.grille-navigation-etudiant {
    display: grid;
    gap: 5px;
    padding: 10px 11px;
    border: 1px solid rgba(35,84,90,.12);
    border-radius: 8px;
    background: rgba(255,255,255,.82);
    color: #315d62;
    text-decoration: none;
    transition: background .14s ease, border-color .14s ease, transform .14s ease;
}
.grille-navigation-etudiant:hover {
    background: #fff;
    border-color: rgba(35,84,90,.24);
    transform: translateX(2px);
}
.grille-navigation-etudiant > span {
    color: #789093;
    font-size: .62rem;
    font-weight: 900;
    letter-spacing: .06em;
    text-transform: uppercase;
}
.grille-navigation-etudiant > strong {
    overflow: hidden;
    font-size: .76rem;
    line-height: 1.25;
    text-overflow: ellipsis;
}
.grille-navigation-progression {
    display: grid;
    grid-template-columns: minmax(0,1fr) auto;
    gap: 7px;
    align-items: center;
}
.grille-navigation-progression i {
    height: 5px;
    overflow: hidden;
    border-radius: 999px;
    background: #e0e7e8;
}
.grille-navigation-progression i b {
    display: block;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, #c84949, #dba83f, #4c9a67);
}
.grille-navigation-progression em {
    color: #6e8588;
    font-size: .62rem;
    font-style: normal;
    font-weight: 850;
}
body:has(.grille-exploration) .historique-lecteur {
    left: calc(var(--menu-largeur) + 248px);
}


/* Identité de l'étudiant affichée sur les grilles d'évaluation/consultation/historique. */
.grille-identite-etudiant {
    display: grid;
    gap: 2px;
    width: fit-content;
    margin: 12px 0 5px;
}
.grille-identite-etudiant strong {
    color: #294f54;
    font-size: 1rem;
    font-weight: 900;
    line-height: 1.2;
}
.grille-identite-etudiant a,
.grille-identite-etudiant span {
    width: fit-content;
    color: #6d8588;
    font-size: .72rem;
    font-weight: 700;
    text-decoration: none;
}
.grille-identite-etudiant a:hover {
    color: var(--criterium);
    text-decoration: underline;
}

.edition-formule-competence {
    display: flex;
    align-items: center;
    min-height: 42px;
    padding: 0 12px;
    border: 1px solid rgba(35,84,90,.14);
    border-radius: 7px;
    background: rgba(35,84,90,.06);
    color: #315d62;
    font-weight: 900;
    cursor: default;
    user-select: none;
}

/* Documentation de l'API Critérium -------------------------------------- */
.page-api-documentation .page {
    width: min(1180px, calc(100% - 36px));
    margin: 26px auto 54px;
}
.api-documentation-page {
    min-height: 100vh;
}
.api-documentation {
    padding-top: 4px;
}
.api-documentation-intro {
    position: relative;
    max-width: 930px;
    padding-right: 150px;
}
.api-documentation-logo {
    position: absolute;
    top: -4px;
    right: 0;
    display: block;
    width: 112px;
}
.api-documentation-logo img {
    display: block;
    width: 100%;
    height: auto;
}
.api-documentation-statut {
    display: flex;
    align-items: baseline;
    gap: 9px;
    width: fit-content;
    margin-top: 17px;
    padding: 8px 11px;
    border: 1px solid rgba(43,141,150,.14);
    border-radius: 7px;
    background: rgba(255,255,255,.68);
    color: #71898c;
    font-size: .72rem;
}
.api-documentation-statut strong {
    color: #315d62;
}
.api-schema {
    margin: 20px 0;
    padding: 20px;
    overflow-x: auto;
    border: 1px solid rgba(43,141,150,.12);
    border-radius: 10px;
    background: rgba(255,255,255,.7);
}
.api-schema-ligne {
    min-width: 760px;
    display: flex;
    align-items: center;
    gap: 10px;
}
.api-schema-ligne-etudiant {
    margin-top: 2px;
}
.api-schema-noeud {
    min-width: 150px;
    padding: 10px 12px;
    border-radius: 8px;
    background: rgba(43,141,150,.075);
}
.api-schema-noeud-principal {
    background: rgba(43,141,150,.13);
}
.api-schema-noeud strong,
.api-schema-noeud span {
    display: block;
}
.api-schema-noeud strong {
    color: #315d62;
    font-size: .74rem;
    letter-spacing: .03em;
}
.api-schema-noeud span {
    margin-top: 3px;
    color: #758d90;
    font-size: .66rem;
}
.api-schema-fleche,
.api-schema-branche {
    color: rgba(43,141,150,.58);
    font-weight: 950;
}
.api-schema-branche {
    margin: 4px 0 4px 74px;
}
.api-schema-separateur {
    height: 1px;
    margin: 15px 0;
    background: rgba(42,86,91,.09);
}
.api-champs {
    display: grid;
    gap: 1px;
    margin: 12px 0 18px;
    overflow: hidden;
    border: 1px solid rgba(43,141,150,.1);
    border-radius: 8px;
    background: rgba(43,141,150,.08);
}
.api-champs > div {
    display: grid;
    grid-template-columns: minmax(150px, 220px) minmax(0, 1fr);
    gap: 12px;
    padding: 9px 11px;
    background: rgba(255,255,255,.86);
}
.api-champs code {
    width: fit-content;
    height: fit-content;
    font-weight: 850;
}
.api-champs span {
    color: #688185;
    font-size: .75rem;
    line-height: 1.5;
}
.api-route-simple,
.api-route-titre {
    width: fit-content;
    max-width: 100%;
    margin: 10px 0 16px;
}
.api-route-titre {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
}
.api-route-titre > span,
.api-routes-resume > div > span {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 42px;
    min-height: 25px;
    padding: 4px 7px;
    border-radius: 6px;
    background: #2b8d96;
    color: #fff;
    font-size: .62rem;
    font-weight: 950;
    letter-spacing: .04em;
}
.api-route-titre code,
.api-route-simple code {
    min-width: 0;
    max-width: 100%;
    padding: 7px 9px;
    font-size: .78rem;
    font-weight: 800;
    white-space: normal;
    overflow-wrap: anywhere;
    word-break: break-word;
}
.api-code-bloc {
    margin: 12px 0 18px;
    overflow-x: auto;
    border: 1px solid rgba(43,141,150,.12);
    border-radius: 9px;
    background: rgba(38, 72, 77, .96);
}
.api-code-bloc pre {
    margin: 0;
    padding: 15px 17px;
}
.api-code-bloc code {
    padding: 0;
    background: transparent;
    color: #eef8f8;
    font-size: .74rem;
    line-height: 1.55;
    white-space: pre;
}
.api-routes-resume {
    display: grid;
    gap: 8px;
    margin: 15px 0 20px;
}
.api-routes-resume > div {
    display: grid;
    grid-template-columns: 48px minmax(0, 1.1fr) minmax(220px, .9fr);
    gap: 10px;
    align-items: center;
    padding: 10px 12px;
    border: 1px solid rgba(43,141,150,.1);
    border-radius: 8px;
    background: rgba(255,255,255,.7);
}
.api-routes-resume code {
    min-width: 0;
    font-size: .72rem;
    white-space: normal;
    overflow-wrap: anywhere;
    word-break: break-word;
}
.api-routes-resume p {
    margin: 0;
    font-size: .72rem;
    line-height: 1.4;
}

.api-dictionnaire-wrapper {
    margin: 15px 0 20px;
    overflow-x: auto;
    border: 1px solid rgba(43,141,150,.11);
    border-radius: 9px;
    background: rgba(255,255,255,.72);
}
.api-dictionnaire {
    width: 100%;
    min-width: 760px;
    border-collapse: collapse;
    font-size: .74rem;
}
.api-dictionnaire th,
.api-dictionnaire td {
    padding: 10px 12px;
    border-bottom: 1px solid rgba(43,141,150,.09);
    text-align: left;
    vertical-align: top;
}
.api-dictionnaire th {
    background: rgba(43,141,150,.10);
    color: #315d62;
    font-size: .68rem;
    font-weight: 900;
    letter-spacing: .03em;
    text-transform: uppercase;
}
.api-dictionnaire th:first-child,
.api-dictionnaire td:first-child { width: 190px; }
.api-dictionnaire th:nth-child(2),
.api-dictionnaire td:nth-child(2) { width: 180px; }
.api-dictionnaire tbody tr:last-child td { border-bottom: 0; }
.api-dictionnaire td { color: #688185; line-height: 1.5; }
.api-dictionnaire td:first-child { color: #315d62; font-weight: 850; }
@media (max-width: 760px) {
    .api-documentation-intro {
        padding-right: 0;
    }
    .api-documentation-logo {
        position: static;
        width: 90px;
        margin: 0 0 20px;
    }
    .api-champs > div {
        grid-template-columns: 1fr;
        gap: 4px;
    }
    .api-routes-resume > div {
        grid-template-columns: 48px minmax(0, 1fr);
    }
    .api-routes-resume p {
        grid-column: 1 / -1;
    }
}

/* Banc de test de l'API.C. */
.page-api-test .api-test-page { max-width: 1180px; margin: 0 auto; }
.api-test-login, .api-test-formulaire { display: grid; gap: 14px; max-width: 760px; }
.api-test-login label, .api-test-formulaire label { display: grid; gap: 6px; color: #45666a; font-size: .78rem; font-weight: 850; }
.api-test-login input, .api-test-formulaire input, .api-test-formulaire select { width: 100%; min-height: 42px; padding: 8px 11px; border: 1px solid rgba(35,84,90,.2); border-radius: 7px; background: #fff; color: #294f54; font: inherit; }
.api-test-login button, .api-test-formulaire button { width: fit-content; min-height: 40px; padding: 0 16px; border: 0; border-radius: 7px; background: #315d62; color: #fff; font-weight: 900; cursor: pointer; }
.api-test-parametres { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.api-test-erreur { margin: 0; color: #a83f3f; font-weight: 850; }
@media (max-width: 700px) { .api-test-parametres { grid-template-columns: 1fr; } }

/* Visibilité publique/privée d'une grille du catalogue. */
.catalogue-visibilite {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    min-height: 31px;
    padding: 4px 9px;
    border: 1px solid rgba(0, 109, 119, .18);
    border-radius: 999px;
    background: rgba(255, 255, 255, .78);
    color: #45676b;
    font-size: 12px;
    font-weight: 800;
    cursor: pointer;
    user-select: none;
}

.catalogue-visibilite input {
    width: 16px;
    height: 16px;
    margin: 0;
    accent-color: var(--criterium);
    cursor: pointer;
}

.catalogue-visibilite:has(input:checked) {
    color: var(--criterium);
    background: var(--criterium-clair);
}

.catalogue-visibilite:has(input:disabled) {
    opacity: .65;
    cursor: wait;
}

.catalogue-visibilite input:disabled {
    cursor: wait;
}
