:root {
    --academy-gold: #b58d37;
    --academy-gold-soft: rgba(181, 141, 55, .12);
    --academy-panel: #fffdf8;
    --academy-ink: #2d2a26;
    --academy-dim: #6d675f;
    --academy-line: #d6c9ad;
    --academy-green: #2f7d5b;
}

#gshellSupportWeb,
#gshellTelephone,
#gshellWswnw,
#gshellSecAdmin,
#gshellAdminTools,
#gshellAdminSub { display: none !important; }

/* --------------------------------------------------------------- composeur */

/* style.css cache le bouton d'envoi tant que la rangee n'a pas la classe
   `can-send` :

       .chat-composer-row .chat-send { display: none; }
       .chat-composer-row.can-send .chat-send { display: flex; }

   Cette classe est posee par js/composer.js quand la zone de saisie cesse
   d'etre vide. Or js/composer.js est un script de PRODUCTION : il dort dans
   <template id="productionScripts"> avec les 111 autres, et ne s'execute jamais
   ici. La classe n'arrivait donc jamais, et le bouton ➤ restait invisible pour
   toujours — dans le salon comme dans les conversations directes.

   Aucun geste humain n'envoyait de message. Deux objectifs du chapitre
   Collaborer — repondre au briefing et mentionner Alex — etaient impossibles.

   C'est la meme mecanique que la bascule de langue morte : du balisage et du
   style de production herites sans le JavaScript qui les anime. Partout ou un
   etat « allume » depend d'un script absent, le controle est mort-ne. */
.chat-composer-row .chat-send { display: flex; }

/* ------------------------------------------------------------------- rail */

/* shell.css masque volontairement la barre de defilement du rail — « le style
   prime ». Mais le rail reclame 859 px de contenu pour 625 px disponibles sur
   un poste d'entrepot 1024x768, 657 px sur un portable, 817 px sur un ecran de
   bureau : il deborde PARTOUT, et rien ne le dit. « Signaler », que l'etape 6
   demande de cliquer, tombe sous la ligne de flottaison des 1280x800 ; le
   profil — ou vivent le theme, la langue et le titre de poste, soit trois des
   huit objectifs du premier chapitre — y tombe a toutes les tailles testees.

   On ne rend pas la barre visible : on rend le debordement visible. Le degrade
   ne s'affiche que s'il reste vraiment quelque chose en dessous, et disparait
   des qu'on touche le fond — un controle honnete plutot qu'une decoration. */
.gshell-rail.academy-rail-deborde {
    -webkit-mask-image: linear-gradient(to bottom, #000 calc(100% - 56px), transparent 100%);
            mask-image: linear-gradient(to bottom, #000 calc(100% - 56px), transparent 100%);
}

/* ------------------------------------------------------------------ coach */

.academy-coach {
    position: fixed;
    z-index: 12000;
    right: 22px;
    bottom: 22px;
    width: min(380px, calc(100vw - 28px));
    max-height: calc(100vh - 44px);
    overflow-y: auto;
    color: var(--academy-ink);
    background: var(--academy-panel);
    border: 1px solid rgba(181, 141, 55, .35);
    border-radius: 18px;
    box-shadow: 0 22px 60px rgba(34, 30, 24, .25);
    font-family: Outfit, Inter, sans-serif;
    transition: opacity .24s ease;
}

.academy-coach-head {
    position: sticky;
    top: 0;
    z-index: 1;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 13px 15px 10px;
    background: var(--academy-panel);
}

.academy-pill {
    color: #6f541c;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: .12em;
}

#academyCoachToggle {
    width: 28px;
    height: 28px;
    border: 0;
    border-radius: 8px;
    color: inherit;
    background: var(--academy-gold-soft);
    font-size: 15px;
    cursor: pointer;
}

#academyCoachBody { padding: 0 15px 16px; }
.academy-coach.collapsed { width: auto; }
.academy-coach.collapsed #academyCoachBody { display: none; }
/* Replié, le compagnon n'est plus que son en-tête : il se cadre comme une
   pastille (Aurore, 08/10/2026 : le « + » collait au titre et au bord). */
.academy-coach.collapsed .academy-coach-head { gap: 18px; padding: 12px 12px 12px 16px; }
.academy-coach.collapsed #academyCoachToggle { width: 36px; height: 36px; border-radius: 10px; font-size: 18px; }

.academy-progress { height: 5px; margin-bottom: 10px; border-radius: 4px; background: #e8e2d6; overflow: hidden; }
.academy-progress span { display: block; height: 100%; width: 0; background: var(--academy-gold); transition: width .35s ease; }
.academy-step { color: #756f66; font-size: 12px; font-weight: 700; }
.academy-time { margin-top: 2px; color: #9a938a; font-size: 11.5px; font-weight: 600; }
.academy-coach h2 { margin: 9px 0 8px; font-size: 19px; line-height: 1.25; }

.academy-why { margin: 0 0 10px; }
.academy-why summary {
    color: #6f541c;
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
    list-style: none;
}
.academy-why summary::before { content: '› '; }
.academy-why[open] summary::before { content: '⌄ '; }
.academy-why p {
    margin: 7px 0 0;
    padding: 10px 12px;
    border-radius: 10px;
    background: var(--academy-gold-soft);
    color: #55503f;
    font-size: 13px;
    line-height: 1.5;
}

.academy-manque {
    margin: -4px 0 12px;
    padding: 8px 10px;
    border-left: 3px solid #c9a24a;
    background: #fbf5e6;
    color: #55503f;
    font-size: 13px;
    line-height: 1.45;
}
.academy-hints { margin: 0 0 10px; padding: 0; list-style: none; }
.academy-hints li {
    display: flex;
    gap: 9px;
    margin-bottom: 7px;
    color: #55503f;
    font-size: 13px;
    line-height: 1.45;
}
.academy-hint-rank {
    flex: 0 0 19px;
    height: 19px;
    border-radius: 50%;
    background: var(--academy-gold);
    color: #fff;
    font-size: 11px;
    font-weight: 800;
    text-align: center;
    line-height: 19px;
}
.academy-hint-button {
    width: 100%;
    margin-bottom: 12px;
    padding: 9px;
    border: 1px dashed var(--academy-line);
    border-radius: 9px;
    color: #6f541c;
    background: transparent;
    font: inherit;
    font-size: 12.5px;
    font-weight: 700;
    cursor: pointer;
}
.academy-hint-button:hover { background: var(--academy-gold-soft); }

.academy-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.academy-actions button {
    border: 1px solid var(--academy-line);
    border-radius: 9px;
    padding: 8px 11px;
    color: inherit;
    background: #fff;
    font: inherit;
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
}
.academy-actions button:first-child { color: #fff; border-color: var(--academy-gold); background: var(--academy-gold); }

.academy-map { margin-top: 14px; }
.academy-map summary {
    color: #6f541c;
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
    list-style: none;
}
.academy-map summary::before { content: '› '; }
.academy-map[open] summary::before { content: '⌄ '; }
.academy-map ol { margin: 9px 0 0; padding: 0; list-style: none; counter-reset: chapter; }
.academy-chapter {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 5px 7px;
    border-radius: 8px;
    font-size: 12.5px;
}
.academy-chapter.active { background: var(--academy-gold-soft); font-weight: 700; }
.academy-chapter.locked { opacity: .45; }
.academy-chapter.completed .academy-chapter-title { color: var(--academy-green); }
.academy-chapter-icon { flex: 0 0 18px; text-align: center; }
.academy-chapter-title { flex: 1; }
.academy-chapter-count { color: var(--academy-dim); font-size: 11px; font-variant-numeric: tabular-nums; }
/* Le cadenas de la carte des chapitres n'est qu'un ordre conseille. Sans cette
   ligne, deux apprenants sur les vingt simules se sont crus enfermes derriere
   48 et 56 objectifs et ont renonce a voir le chapitre qui les interessait. */
.academy-map-note {
    margin: 8px 0 0;
    font-size: 11.5px;
    line-height: 1.45;
    color: var(--academy-dim);
    font-style: italic;
}

.academy-reset {
    width: 100%;
    margin-top: 10px;
    padding: 7px;
    border: 1px solid #e4d9c4;
    border-radius: 8px;
    color: #9a6a6a;
    background: transparent;
    font: inherit;
    font-size: 11.5px;
    cursor: pointer;
}

/* -------------------------------------------------------- réussite éclair */

.academy-flash {
    position: fixed;
    z-index: 12200;
    left: 50%;
    bottom: 34px;
    display: flex;
    align-items: center;
    gap: 11px;
    max-width: min(460px, calc(100vw - 32px));
    padding: 14px 18px;
    border-radius: 14px;
    color: #fff;
    background: var(--academy-green);
    box-shadow: 0 18px 44px rgba(20, 60, 44, .35);
    font: 600 14px/1.4 Outfit, Inter, sans-serif;
    transform: translate(-50%, 22px);
    opacity: 0;
    pointer-events: none;
    transition: opacity .25s ease, transform .25s ease;
}
.academy-flash.show { opacity: 1; transform: translate(-50%, 0); }
.academy-flash-check {
    flex: 0 0 24px;
    height: 24px;
    border-radius: 50%;
    background: rgba(255, 255, 255, .22);
    font-weight: 800;
    text-align: center;
    line-height: 24px;
}

/* ------------------------------------------------------- modale du parcours */

.academy-modal {
    position: fixed;
    z-index: 12500;
    inset: 0;
    display: grid;
    place-items: center;
    padding: 20px;
    background: rgba(24, 21, 18, .58);
}
.academy-modal.hidden { display: none; }
.academy-modal-card {
    width: min(580px, 100%);
    max-height: 86vh;
    overflow: auto;
    padding: 28px;
    border-radius: 18px;
    color: var(--academy-ink);
    background: var(--academy-panel);
    box-shadow: 0 24px 80px rgba(0, 0, 0, .34);
    font-family: Outfit, Inter, sans-serif;
}
.academy-modal-eyebrow {
    margin: 0 0 6px;
    color: #6f541c;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: .12em;
    text-transform: uppercase;
}
.academy-modal-card h2 { margin: 0 0 12px; font-size: 25px; line-height: 1.2; }
.academy-modal-card h3 { margin: 20px 0 8px; font-size: 13px; letter-spacing: .04em; text-transform: uppercase; color: var(--academy-dim); }
.academy-modal-story { margin: 0; color: #55503f; font-size: 15px; line-height: 1.6; }
.academy-modal-learn { margin: 0; padding-left: 20px; color: #55503f; font-size: 14px; line-height: 1.7; }
.academy-modal-badge {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 22px 0 0;
    padding: 12px 14px;
    border-radius: 12px;
    background: var(--academy-gold-soft);
    font-size: 13px;
    font-weight: 600;
}
.academy-badge-emoji { font-size: 22px; }
.academy-modal-actions { display: flex; justify-content: flex-end; gap: 9px; margin-top: 24px; }
.academy-modal-actions button {
    border: 1px solid var(--academy-line);
    border-radius: 10px;
    padding: 10px 18px;
    color: inherit;
    background: #fff;
    font: inherit;
    font-weight: 700;
    cursor: pointer;
}
.academy-modal-actions button.primary { color: #fff; border-color: var(--academy-gold); background: var(--academy-gold); }

.academy-award { text-align: center; }
.academy-award .academy-modal-learn { text-align: left; }
.academy-award-emoji {
    margin: 6px 0 12px;
    font-size: 58px;
    line-height: 1;
    animation: academyPop .5s cubic-bezier(.2, 1.4, .5, 1);
}
@keyframes academyPop { from { transform: scale(.3); opacity: 0; } }
.academy-award .academy-modal-actions { justify-content: center; }
.academy-diploma-badges { margin: 18px 0; font-size: 30px; letter-spacing: 6px; }

/* ------------------------------------------------ l'écran final (lot L6)
   La toque dans un disque doré, le nom, la date en toutes lettres, trois
   chiffres, les huit médailles nommées, les succès spéciaux, deux boutons
   puis « Terminer » — voir plan-academy-1010/v1/img/diplome.webp. */
.academy-diploma-crest {
    display: grid;
    place-items: center;
    width: 84px;
    height: 84px;
    margin: 4px auto 14px;
    border-radius: 50%;
    background: radial-gradient(circle at 32% 28%, #f2dfa8, #c79a3f 72%);
    box-shadow: 0 8px 22px #95702d3d;
    font-size: 38px;
    animation: academyPop .5s cubic-bezier(.2, 1.4, .5, 1);
}
.academy-diploma-date { margin: 0 0 20px; color: var(--academy-dim); font-size: 13.5px; }
.academy-diploma-stats {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
    margin: 0 0 22px;
}
.academy-diploma-stats > div {
    padding: 12px 6px;
    border: 1px solid var(--academy-line);
    border-radius: 12px;
    background: var(--gs-panel-2, #f4efe3);
}
.academy-diploma-stats strong { display: block; font-size: 19px; }
.academy-diploma-stats span { display: block; margin-top: 2px; color: var(--academy-dim); font-size: 10.5px; }
.academy-diploma-medals {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 10px 6px;
    margin: 0 0 20px;
}
.academy-diploma-medal { display: flex; flex-direction: column; align-items: center; gap: 4px; opacity: .45; }
.academy-diploma-medal.earned { opacity: 1; }
.academy-diploma-medal > span { font-size: 24px; }
.academy-diploma-medal small { font-size: 9.5px; color: var(--academy-dim); line-height: 1.3; }
.academy-diploma-succes { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px 14px; margin: 0 0 22px; font-size: 11.5px; }
.academy-diploma-succes-item { color: var(--academy-ink); }
.academy-diploma-succes-item.locked { opacity: .45; text-decoration: line-through; }
.academy-diploma-actions { display: grid; gap: 8px; margin: 0 0 4px; }
.academy-diploma-actions button {
    min-height: 48px;
    border-radius: 12px;
    font: 700 13.5px Outfit, sans-serif;
    cursor: pointer;
}
.academy-diploma-primary { border: 0; background: var(--academy-gold); color: #fff; }
.academy-diploma-primary:disabled { opacity: .7; cursor: default; }
.academy-diploma-secondary { border: 1px solid var(--academy-line); background: #fff; color: var(--academy-ink); }
.academy-diploma .academy-modal-actions { justify-content: center; margin-top: 6px; }
.academy-diploma .academy-modal-actions button {
    border: 0;
    background: transparent;
    color: var(--academy-dim);
    text-decoration: underline;
    font-weight: 600;
}

/* -------------------------------------------------------------- surbrillance */

.academy-watermark {
    position: fixed;
    z-index: 11900;
    top: 10px;
    right: 18px;
    pointer-events: none;
    color: #72591f;
    background: rgba(244, 239, 227, .92);
    border: 1px solid rgba(181, 141, 55, .28);
    border-radius: 999px;
    padding: 6px 10px;
    font: 800 10px/1 Outfit, sans-serif;
    letter-spacing: .09em;
}

/* Une modale pedagogique — mise en situation, badge, diplome — occupe deja tout
   l'ecran et redit ce que le panneau affiche : le garder ferait doublon. */
.academy-modal-open .academy-coach,
.academy-modal-open .academy-watermark {
    opacity: 0;
    pointer-events: none;
}

/* Un tiroir de Gandalf, c'est l'inverse : l'apprenant AGIT, donc c'est
   precisement la qu'il a besoin de lire sa consigne et d'atteindre ses indices.
   Le coach reste donc affiche — mais il doit se pousser, et se pousser DU BON
   COTE. Seul le tiroir des notifications tient le bord droit ; celui du profil
   tient le bord gauche. Une esquive unique pour les deux posait le coach sur le
   rail et rendait ses six dernieres entrees intouchables, dont « Signaler ».
   `left` ET `right` bornent ici la boite : elle occupe le creux entre le rail et
   le tiroir, sans pouvoir chevaucher ni l'un ni l'autre, a toute largeur. */
.academy-coach-left .academy-coach {
    left: calc(var(--gs-rail-w, 232px) + 22px);
    right: calc(min(432px, 92vw) + 22px);
    width: auto;
    max-width: 380px;
}

@media (max-width: 860px) {
    /* Sous 860 px le rail disparait : il n'y a plus rien a contourner. */
    .academy-coach-left .academy-coach {
        left: 22px;
        right: 22px;
        max-width: none;
    }
}

.academy-overlay-open .academy-watermark {
    opacity: 0;
    pointer-events: none;
}

.academy-target {
    position: relative;
    z-index: 11000 !important;
    outline: 4px solid rgba(181, 141, 55, .88) !important;
    outline-offset: 4px;
    border-radius: 8px;
    animation: academyPulse 1.35s ease-in-out infinite;
}

@keyframes academyPulse {
    50% { outline-color: rgba(181, 141, 55, .25); }
}

/* Une cible deja positionnee doit le rester. `position: relative` ci-dessus
   sortait le cœur des favoris de son coin — il est en `absolute` dans sa
   tuile — et le faisait sauter dans le flux pendant qu'on le designait : le
   guide montrait le cœur ailleurs que la ou il revenait se poser. */
.fav-btn.academy-target {
    position: absolute;
}

.academy-empty {
    display: grid;
    place-items: center;
    min-height: 260px;
    padding: 40px;
    color: var(--text-secondary, #6d675f);
    text-align: center;
}

/* La tuile d'application de production recoit `position: relative` en ligne
   (js/dashboard.js). La CSP de l'Academie refuse les styles en ligne : sans
   cette regle, le cœur en position absolue quitterait sa tuile. La tuile
   est ici un <div role="button"> et non un lien, d'ou le curseur. */
.dashboard-grid .app-tile {
    position: relative;
    cursor: pointer;
}


#academyAppClose {
    margin-left: auto;
    border: 1px solid var(--academy-line);
    border-radius: 9px;
    padding: 8px 14px;
    background: #fff;
    font: inherit;
    font-weight: 700;
    cursor: pointer;
}

.academy-pane { max-width: 780px; margin: 0 auto; }
.academy-pane h2 { margin: 24px 0 12px; font-size: 21px; }
.academy-pane h3 { margin: 20px 0 10px; font-size: 15px; }
.academy-muted { color: var(--academy-dim); font-size: 13px; }
.academy-empty-note { color: var(--academy-dim); font-size: 13.5px; font-style: italic; }
.academy-warning {
    margin: 8px 0;
    padding: 10px 12px;
    border-radius: 9px;
    background: #fdf1e3;
    color: #8a5320;
    font-size: 13px;
    font-weight: 600;
}

.academy-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 9px; margin-bottom: 8px; }
.academy-toolbar button,
.academy-pane button {
    border: 1px solid var(--academy-line);
    border-radius: 9px;
    padding: 8px 13px;
    background: #fff;
    font: inherit;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
}
.academy-pane button.primary { color: #fff; border-color: var(--academy-gold); background: var(--academy-gold); }
.academy-pane button:disabled { opacity: .45; cursor: not-allowed; }

.academy-list { margin: 0; padding: 0; list-style: none; }
.academy-list-row {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 13px 15px;
    margin-bottom: 7px;
    border: 1px solid #e6ddc9;
    border-radius: 11px;
    background: #fff;
    cursor: pointer;
}
.academy-list-row.unread { border-left: 3px solid var(--academy-gold); }
.academy-list-row.unread strong { font-weight: 800; }
.academy-list-main { display: flex; flex-direction: column; gap: 3px; flex: 1; }
.academy-list-main span { color: var(--academy-dim); font-size: 13px; }
.academy-tags { display: flex; gap: 5px; }
.academy-tag {
    padding: 3px 8px;
    border-radius: 999px;
    background: var(--academy-gold-soft);
    color: #6f541c;
    font-size: 11px;
    font-weight: 700;
}

.academy-thread { margin: 14px 0; padding: 0; list-style: none; }
.academy-thread li {
    margin-bottom: 10px;
    padding: 14px 16px;
    border: 1px solid #e6ddc9;
    border-radius: 12px;
    background: #fff;
}
.academy-thread li.mine { background: #fbf8f0; border-color: var(--academy-line); }
.academy-thread strong { display: block; margin-bottom: 4px; font-size: 13.5px; }
.academy-thread p { margin: 6px 0; font-size: 14px; line-height: 1.55; white-space: pre-wrap; }

.academy-form {
    margin: 18px 0;
    padding: 18px;
    border: 1px solid #e6ddc9;
    border-radius: 13px;
    background: #fff;
}
.academy-form label { display: block; margin-bottom: 12px; font-size: 12.5px; font-weight: 700; }
.academy-form input,
.academy-form select,
.academy-form textarea {
    display: block;
    width: 100%;
    box-sizing: border-box;
    margin-top: 5px;
    border: 1px solid var(--academy-line);
    border-radius: 9px;
    padding: 9px 11px;
    color: inherit;
    background: #fffdf8;
    font: inherit;
    font-size: 14px;
    font-weight: 400;
}
.academy-form-inline { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 12px; }
.academy-form-inline h3 { flex-basis: 100%; margin: 0; }
.academy-form-inline label { flex: 1 1 130px; margin-bottom: 0; }
/* Même hauteur que les boutons de la barre (padding 8px + bordure) : Aurore
   (09/10/2026) voyait « Étiquette » et sa liste légèrement remontés. */
.academy-inline-field { display: flex; align-items: center; gap: 6px; margin: 0; font-size: 12.5px; font-weight: 700; line-height: normal; }
.academy-inline-field select { border: 1px solid var(--academy-line); border-radius: 9px; padding: 8px 9px; margin: 0; font: inherit; font-size: 13px; font-weight: 700; line-height: normal; background: #fff; }

.academy-table { width: 100%; margin: 14px 0; border-collapse: collapse; background: #fff; font-size: 13.5px; }
.academy-table th,
.academy-table td { padding: 10px 12px; border-bottom: 1px solid #ece4d3; text-align: left; }
.academy-table th { color: var(--academy-dim); font-size: 11.5px; letter-spacing: .05em; text-transform: uppercase; }
.academy-table tr.selected { background: var(--academy-gold-soft); }

.academy-totals { margin: 16px 0; padding: 16px 18px; border: 1px solid #e6ddc9; border-radius: 12px; background: #fff; }
.academy-totals div { display: flex; justify-content: space-between; padding: 5px 0; font-size: 14px; }
.academy-totals dt, .academy-totals dd { margin: 0; }
.academy-totals .total { border-top: 1px solid #ece4d3; margin-top: 6px; padding-top: 10px; font-size: 17px; font-weight: 800; }

.academy-status { padding: 4px 10px; border-radius: 999px; font-size: 11.5px; font-weight: 800; }
.academy-status.draft { background: #ece4d3; color: #6b6357; }
.academy-status.sent { background: #dcf0e5; color: var(--academy-green); }
.academy-tracking {
    margin: 16px 0;
    padding: 14px 16px;
    border-radius: 11px;
    background: #dcf0e5;
    color: #1f5a41;
    font-size: 14px;
}

/* ------------------------------------------------- compléments dans le Hub */

.academy-dialog {
    position: fixed;
    z-index: 12500;
    inset: 0;
    display: grid;
    place-items: center;
    padding: 20px;
    background: rgba(24, 21, 18, .55);
}
.academy-dialog.hidden { display: none; }
.academy-dialog-card {
    width: min(560px, 100%);
    max-height: 85vh;
    overflow: auto;
    padding: 24px;
    border-radius: 16px;
    color: var(--text-primary, #2d2a26);
    background: var(--surface, #fff);
    box-shadow: 0 24px 80px rgba(0, 0, 0, .3);
}
.academy-dialog-card h2 { margin: 0 0 16px; }
.academy-field { display: grid; gap: 6px; margin: 12px 0; }
.academy-field label { font-size: 12px; font-weight: 700; }
.academy-field input, .academy-field textarea, .academy-field select {
    width: 100%;
    box-sizing: border-box;
    border: 1px solid var(--border-color, #d8d2c7);
    border-radius: 9px;
    padding: 10px;
    color: inherit;
    background: transparent;
    font: inherit;
}
.academy-dialog-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; margin-top: 18px; }
.academy-notice { margin: 12px 0; padding: 12px; border-radius: 10px; background: var(--academy-gold-soft); }
.academy-modal-wide { max-width: 620px; }

/* Le champ « Titre de poste » vivait ici, injecté dans l'en-tête du tiroir des
   réglages — par-dessus l'avatar et le nom de l'entreprise. Il n'existe pas
   dans Gandalf : la fiche employé appartient à Gestion Employés, que le lien
   « Mon profil » ouvre. Ces styles servent maintenant cette page-là. */
.academy-note {
    margin: 0 0 16px;
    color: var(--academy-dim);
    font-size: 12.5px;
    line-height: 1.55;
}
.academy-facts {
    display: grid;
    grid-template-columns: minmax(0, 140px) minmax(0, 1fr);
    gap: 8px 16px;
    margin: 0 0 20px;
    padding: 14px 16px;
    border: 1px solid var(--border-color, #d8d2c7);
    border-radius: 10px;
    font-size: 13px;
}
.academy-facts dt { color: var(--academy-dim); font-size: 12px; font-weight: 700; }
.academy-facts dd { margin: 0; }


.academy-inline-form { display: grid; gap: 6px; margin: 12px 0; font-size: 12px; font-weight: 700; }
.academy-inline-form textarea,
.academy-inline-form select {
    width: 100%;
    box-sizing: border-box;
    border: 1px solid var(--border-color, #d8d2c7);
    border-radius: 9px;
    padding: 9px;
    color: inherit;
    background: transparent;
    font: inherit;
    font-weight: 400;
}
.academy-inline-form button { justify-self: start; }

.tasks-subtask.done .tasks-subtask-text { color: var(--academy-dim); text-decoration: line-through; }

.academy-draft {
    width: 100%;
    box-sizing: border-box;
    margin: 10px 0;
    border: 1px solid var(--border-color, #d8d2c7);
    border-radius: 9px;
    padding: 10px;
    color: inherit;
    background: var(--surface, #fff);
    font: inherit;
    font-size: 13.5px;
}
.academy-draft-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.academy-draft-text { white-space: pre-wrap; }
/* Le titre cliquable de l'en-tête d'un salon est un <button>, pas un <div> :
 * un geste qui ouvre une liste doit rester atteignable au clavier. On retire
 * seulement l'habillage natif du bouton, la classe du hub pose le reste. */
button.chat-pane-title-clickable { background: none; border: none; font: inherit; text-align: left; padding: 4px 8px; color: inherit; }
.academy-challenge { margin-top: 9px; }
.academy-challenge-btn {
    border: 1px dashed #c9a6a6;
    border-radius: 8px;
    padding: 5px 10px;
    color: #9a5b5b;
    background: transparent;
    font: inherit;
    font-size: 11.5px;
    font-weight: 700;
    cursor: pointer;
}
.academy-challenged { color: var(--academy-green); font-size: 11.5px; font-weight: 700; }

/* ------------------------------------------------------- Le focus se voit
 *
 * En rendant la navigation atteignable au clavier, je l'ai rendue focusable
 * la ou AUCUN style de focus n'existait : la feuille de production ne pose
 * d'anneau que sur quatre selecteurs, jamais sur `.gshell-item`, puisque rien
 * n'y etait focusable. Un focus invisible ne vaut pas mieux qu'un focus
 * absent — on sait qu'on a tabule, pas OU l'on est. Les deux vont ensemble.
 *
 * `:focus-visible` et non `:focus` : l'anneau apparait pour qui navigue au
 * clavier, et ne vient pas cerner ce qu'on vient simplement de cliquer.
 */
body.shell-on .gshell-item:focus-visible,
body.shell-on .gshell-tab:focus-visible,
body.shell-on .today-stat:focus-visible {
    outline: 2px solid var(--gs-accent, #b8934a);
    outline-offset: -2px;
    border-radius: 8px;
}

/* Le rail masque son debordement : un element atteint par Tab mais reste hors
 * du champ serait un focus perdu. On le ramene dans la vue. */
body.shell-on .gshell-rail .gshell-item:focus-visible { scroll-margin: 12px; }

@media (max-width: 760px) {
    .academy-coach {
        right: 10px;
        left: 10px;
        bottom: calc(74px + env(safe-area-inset-bottom));
        width: auto;
        max-height: 62vh;
    }
    .academy-coach.collapsed { left: auto; }
    .academy-watermark { display: none; }
        .academy-flash { bottom: calc(150px + env(safe-area-inset-bottom)); }
}

/* La punaise d'un salon ouvert (Aurore, 08/10/2026 : « une icône d'épingle à
   la place de la roue »). Dans la liste, `.chat-conv-pin` est posée en absolu
   au coin de la ligne ; dans l'en-tête du salon elle reprend sa place dans le
   flux, à côté de « Marquer comme lu ». */
.chat-pane-header .chat-pane-pin {
    position: static;
    margin-left: 8px;
    font-size: 17px;
    opacity: .55;
}
.chat-pane-header .chat-pane-pin:hover,
.chat-pane-header .chat-pane-pin.on { opacity: 1; }

/* La liste « @ » (.gc-mention-dd) se pose au-dessus du champ qui la porte :
   le conteneur du commentaire de tâche doit être positionné pour la recevoir. */
.academy-mention-host { position: relative; }

/* Calendrier › Équipe : le même écran que Gandalf (css/equipe.css), monté
   dans la vue Calendrier de l'Académie ; le sélecteur « Ma semaine | Équipe »
   prend la place du premier bouton de la barre. */
.rn-toolbar .rn-scope-slot { display: inline-flex; margin-right: 10px; }
#reunions-view .eq-root { margin-top: 4px; }

/* « Me montrer où » sur un écran entier (Aurore, 08/10/2026 : « l'interface
   est décalée »). `.academy-target` pose `position: relative`, et la vue
   Projets porte `left: var(--gs-rail-w)` (css/shell.css), prévu pour une mise
   en page positionnée : la vue sautait de la largeur du rail. Les grands
   écrans gardent leur place ; l'anneau se dessine quand même. */
#tasksView.academy-target, #chatPane.academy-target, #reunions-view.academy-view.academy-target,
#reunions-view.academy-target, #ai-chat-view.academy-target, #todayUrgent.academy-target,
.container-dashboard.academy-target, #academyAppBody.academy-target { position: static; }

/* L'en-tête d'un salon ouvert, à côté du compagnon (≈ 520 px de large) : la
   recherche du salon, « Marquer comme lu » et la punaise écrasaient le titre
   jusqu'à le faire disparaître. Le titre garde sa place ; les outils passent
   à la ligne s'il le faut. */
.chat-pane-header { flex-wrap: wrap; row-gap: 8px; }
.chat-pane-header .chat-pane-title { flex: 1 1 180px; min-width: 180px; }
.academy-field-reponse { margin-top: 14px; }
