/* CorrigeVite : apparence. Les couleurs (bleu ciel et or) sont les variables juste en dessous. */
:root{--ciel:#0ea5e9;--ciel-f:#0369a1;--nuit:#075985;--ciel-c:#e0f2fe;--papier:#f5faff;--or:#d4a72c;--or-f:#765708;--or-c:#fcf4d9;--or-b:#ecd48a;--encre:#0b2540;--gris:#557087;--bord:#cfe4f2;--ok:#157a3c;--ok-c:#e6f5ec;--ko:#b42318;--ko-c:#fdecea;--serif:Georgia,"Noto Serif","Times New Roman",serif;--sans:system-ui,-apple-system,"Segoe UI",Roboto,"Noto Sans",Ubuntu,sans-serif}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--sans);font-size:16px;line-height:1.5;color:var(--encre);background:var(--papier);min-height:100vh;padding-bottom:calc(24px + env(safe-area-inset-bottom))}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:3px solid var(--or);outline-offset:2px}
.entete{position:sticky;top:0;z-index:20;background:var(--nuit);color:#fff;padding-top:env(safe-area-inset-top)}
.barre-haut,.onglets,main{max-width:880px;margin:0 auto}
.barre-haut{display:flex;align-items:center;gap:10px;padding:10px 14px 2px}
.marque{flex:1;font-family:var(--serif);font-weight:700;font-size:22px;letter-spacing:-.01em}
.marque i{font-style:normal;color:var(--or);margin-left:3px}
.marque.grande{flex:none;text-align:center;font-size:44px;color:var(--nuit);margin:0 0 6px}
.onglets{display:flex;gap:2px;overflow-x:auto;padding:0 6px;scrollbar-width:none}
.onglets::-webkit-scrollbar,.sous-onglets::-webkit-scrollbar{display:none}
.onglet{flex:0 0 auto;padding:11px 10px 9px;border:0;border-bottom:3px solid transparent;background:none;color:#cde6f7;font-weight:600;font-size:14px;cursor:pointer;white-space:nowrap}
.onglet.actif{color:#fff;border-bottom-color:var(--or)}
.onglet{display:inline-flex;align-items:center;gap:6px}
.onglet .ic{width:17px;height:17px;opacity:.9}
main{padding:2px 0 10px}
.carte{margin:12px;padding:16px;background:#fff;border:1px solid var(--bord);border-radius:12px}
h2{margin:0 0 10px;font-family:var(--serif);font-size:20px;font-weight:700;color:var(--nuit)}
p{margin:6px 0}
label{display:block;font-size:14px;font-weight:600;color:var(--gris)}
input,select,textarea{display:block;width:100%;margin:4px 0 10px;padding:11px 12px;border:1.5px solid var(--bord);border-radius:10px;background:#fff;color:var(--encre);font-weight:400}
textarea{resize:vertical}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--ciel);box-shadow:0 0 0 3px rgba(14,165,233,.2)}
.case{display:flex;align-items:center;gap:6px;font-weight:500}
.case input{width:auto;margin:0}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:10px 16px;border:0;border-radius:10px;background:var(--ciel-f);color:#fff;font-weight:700;font-size:15px;cursor:pointer}
.btn:hover{background:var(--nuit)}
.btn:disabled{opacity:1;background:#e6ebf0!important;color:#4f6272!important;border-color:#d3dce4!important;cursor:not-allowed}
.btn.sec{background:#fff;color:var(--ciel-f);border:1.5px solid var(--ciel)}
.btn.sec:hover{background:var(--ciel-c)}
.btn.or{background:var(--or);color:#2f2200}
.btn.or:hover{background:#c29520}
.btn.danger{background:#fff;color:var(--ko);border:1.5px solid #f0c3be}
.btn.danger:hover{background:var(--ko-c)}
.btn.petit{min-height:34px;padding:5px 11px;font-size:13px}
.btn.gros{width:100%;min-height:54px;font-size:17px}
.btn.sortie{min-height:34px;padding:5px 10px;font-size:13px;background:transparent;border:1.5px solid rgba(255,255,255,.5)}
.occupe{opacity:.6;pointer-events:none}
.lien{padding:10px 0;border:0;background:none;color:var(--ciel-f);font-weight:600;text-decoration:underline;cursor:pointer}
.retour{padding:12px 14px 0;border:0;background:none;color:var(--ciel-f);font-weight:700;cursor:pointer}
.row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.entre{justify-content:space-between}.centre{justify-content:center}.fin{justify-content:flex-end}.haut{align-items:flex-start}.nowrap{flex-wrap:nowrap}.actions{margin-top:14px}
.grille2,.grille3{display:grid;gap:0 10px}.grille2{grid-template-columns:1fr 1fr}.grille3{grid-template-columns:1fr 1.3fr 1fr}
@media (max-width:560px){.grille2,.grille3{grid-template-columns:1fr}}
.item{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:8px 0;padding:12px;border:1px solid var(--bord);border-radius:10px;background:#fff;cursor:pointer}
.item:hover{border-color:var(--ciel)}
.item.fixe{cursor:default}.item.fixe:hover{border-color:var(--bord)}
.fleche{color:var(--ciel-f);font-size:24px;line-height:1}
.petit{font-size:13px;font-weight:400;color:var(--gris)}
/* « petit » sert aussi aux textes gris : les petits boutons gardent les couleurs des boutons. */
.btn.petit{font-weight:700;color:#fff}
.btn.petit.sec{color:var(--ciel-f)}
.btn.petit.danger{color:var(--ko)}
.btn.petit.or{color:#2f2200}
.aide{margin:4px 0 8px;font-size:13px;color:var(--gris)}
.vide{padding:16px 0;text-align:center;color:var(--gris)}
.badge{display:inline-block;padding:1px 9px;border-radius:999px;background:var(--ciel-c);color:var(--nuit);font-size:12px;font-weight:700;vertical-align:middle}
.badge.or,.badge.a_valider{background:var(--or-c);color:var(--or-f)}
.badge.ia,.badge.termine{background:var(--ok-c);color:var(--ok)}
.icone{padding:6px;border:0;background:none;font-size:18px;cursor:pointer}
.sous-onglets{display:flex;gap:6px;overflow-x:auto;padding:0 12px;scrollbar-width:none}
.sous{flex:0 0 auto;padding:8px 13px;border:1.5px solid var(--bord);border-radius:999px;background:#fff;color:var(--nuit);font-weight:700;font-size:14px;cursor:pointer;white-space:nowrap}
.sous.actif{background:var(--nuit);border-color:var(--nuit);color:#fff}
.titre-examen{border-left:5px solid var(--or)}
.camera video{display:block;width:100%;max-height:62vh;margin-bottom:10px;border-radius:10px;background:#000;object-fit:contain}
.vignettes{display:flex;gap:10px;overflow-x:auto;padding:8px 2px}
.vignette{position:relative;flex:0 0 auto}
.vignette img{display:block;width:86px;height:116px;object-fit:cover;border:2px solid var(--bord);border-radius:8px;background:var(--ciel-c);cursor:pointer}
.vignette span{position:absolute;left:5px;bottom:5px;padding:0 6px;border-radius:6px;background:var(--nuit);color:#fff;font-size:12px}
.vignette button{position:absolute;top:-7px;right:-7px;width:26px;height:26px;border:0;border-radius:50%;background:var(--ko);color:#fff;font-weight:800;cursor:pointer}
.progression .barre{height:12px;overflow:hidden;border-radius:999px;background:var(--ciel-c)}
.progression .barre i{display:block;width:0;height:100%;background:var(--ciel);transition:width .35s}
.reponse{margin:12px 0;padding:10px 12px;border:1px solid var(--bord);border-left:4px solid var(--ciel);border-radius:10px}
.reponse.attente{border-left-color:var(--or)}
.tampon{flex:none;display:flex;flex-direction:column;align-items:center;justify-content:center;width:96px;height:96px;border:3px solid var(--or);border-radius:50%;color:var(--or-f);font-family:var(--serif);transform:rotate(-7deg);box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 5px var(--or-b)}
.tampon b{font-size:30px;line-height:1}.tampon span{font-size:13px}
.note-mini{font-family:var(--serif);font-weight:700;font-size:18px;color:var(--nuit);white-space:nowrap}
.justif{margin:8px 0 4px;padding:7px 9px;border-radius:8px;background:var(--papier);font-size:13px}
.bandeau-or{margin-top:12px;padding:10px 12px;border:1px solid var(--or-b);border-radius:10px;background:var(--or-c);color:var(--or-f);font-size:14px}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:8px;margin-bottom:12px}
.stats div{padding:10px;border:1px solid var(--bord);border-radius:10px;background:var(--papier);text-align:center}
.stats b{display:block;font-family:var(--serif);font-size:24px;color:var(--nuit)}.stats span{font-size:12px;color:var(--gris)}
.table-scroll{overflow-x:auto;margin-bottom:10px}
table{width:100%;border-collapse:collapse;font-size:14px}
th,td{padding:8px 6px;border-bottom:1px solid var(--bord);text-align:center;white-space:nowrap}
th:first-child,td:first-child{text-align:left}
th{background:var(--papier);color:var(--nuit)}
.zone-danger{padding:4px 12px 20px;text-align:right}
.auth{max-width:440px;margin:0 auto;padding:44px 2px 20px}
.slogan{margin:0 14px 6px;text-align:center;color:var(--gris)}
#toast{position:fixed;left:50%;bottom:calc(16px + env(safe-area-inset-bottom));z-index:80;max-width:92vw;padding:12px 16px;border-radius:12px;background:var(--encre);color:#fff;font-size:15px;box-shadow:0 8px 24px rgba(0,0,0,.2);transform:translate(-50%,160%);transition:transform .25s,visibility .25s;visibility:hidden}
#toast.show{transform:translate(-50%,0);visibility:visible}#toast.ok{background:var(--ok)}#toast.ko{background:var(--ko)}
.modal{position:fixed;inset:0;z-index:60;display:flex;align-items:flex-end;justify-content:center;background:rgba(7,32,56,.55)}
.modal.hidden{display:none}
.feuille{width:100%;max-width:880px;max-height:94vh;overflow:auto;padding:4px 0 16px;border-radius:16px 16px 0 0;background:var(--papier)}
@media (min-width:720px){.modal{align-items:center}.feuille{border-radius:16px}}
.modal-tete{display:flex;justify-content:flex-end;padding:4px 10px 0}
.modal-tete button{border:0;background:none;color:var(--gris);font-size:30px;line-height:1;cursor:pointer}
details summary{margin:8px 0;color:var(--ciel-f);font-weight:700;cursor:pointer}
[hidden]{display:none!important}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
.qui{max-width:34vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;color:#cde6f7}
.sous-onglets.param{margin-top:12px}
h3.groupe{margin:16px 0 4px;font-family:var(--serif);font-size:16px;color:var(--gris)}
.bienvenue ol{margin:8px 0 16px;padding-left:22px}
.bienvenue li{margin:4px 0}
tr.cliquable{cursor:pointer}
tr.cliquable:hover td{background:var(--ciel-c)}
.proposition{margin-top:4px;font-size:14px;color:var(--gris)}
.proposition b{color:var(--nuit)}
.notes-q{display:grid;grid-template-columns:1fr 1.7fr;gap:10px;margin:10px 0 4px}
@media (max-width:430px){.notes-q{grid-template-columns:1fr}}
.note-ia,.note-finale{padding:8px 10px;border:1px solid var(--bord);border-radius:10px}
.note-ia{background:var(--ciel-c)}
.note-ia span,.note-finale label{display:block;margin-bottom:2px;font-size:12px;font-weight:700;color:var(--gris)}
.note-ia b{font-family:var(--serif);font-size:26px;color:var(--nuit)}
.note-ia small,.note-finale small{color:var(--gris)}
.note-finale{border-color:var(--or-b);background:var(--or-c)}
.note-finale input{width:78px;margin:0;text-align:center;font-weight:800}
.btn.entete-icone{min-height:34px;padding:4px 9px;background:transparent;border:1.5px solid rgba(255,255,255,.5);font-size:16px}
.installer{width:100%;margin-top:10px}
.marge{margin:10px 12px}
.centre-texte{text-align:center}
h3{margin:14px 0 6px;font-size:15px;color:var(--nuit)}
.ko{color:var(--ko)}
.alerte{margin:8px 0;padding:10px 12px;border:1px solid #f0c3be;border-radius:10px;background:var(--ko-c);color:var(--ko);font-size:14px}
.succes{margin:8px 0;padding:10px 12px;border:1px solid #b9e0c6;border-radius:10px;background:var(--ok-c);color:var(--ok);font-size:14px}
.ligne-corrige{margin:10px 0;padding:10px 12px;border:1px solid var(--bord);border-left:4px solid var(--or);border-radius:10px}
.recherche{margin:0 0 10px}
input[type=search]{-webkit-appearance:none;appearance:none}
.etapes-ios li{margin:6px 0}
/* ----- Logo et marque */
.marque{display:flex;align-items:center;gap:9px}
.marque .logo{flex:none;width:30px;height:30px}
.marque.grande{flex-direction:column;gap:12px;font-size:40px}
.logo-grand{width:76px;height:76px;filter:drop-shadow(0 8px 18px rgba(7,32,56,.25))}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
/* ----- Thèse / Mémoire : choix du type, grille, document */
.choix-type{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:4px 0 12px}
.option-type{display:flex;flex-direction:column;gap:2px;padding:14px;border:1.5px solid var(--bord);border-radius:12px;background:#fff;text-align:left;cursor:pointer}
.option-type b{font-family:var(--serif);font-size:19px;color:var(--nuit)}
.option-type span{font-size:13px;color:var(--gris)}
.option-type.actif{border-color:var(--nuit);box-shadow:inset 4px 0 0 var(--or);background:var(--ciel-c)}
.critere{padding:8px 0;border-bottom:1px solid var(--bord)}
.critere-ligne{display:flex;align-items:center;gap:6px}
.critere-ligne input{margin:0}
.critere-ligne .critere-points{flex:none;width:74px;text-align:center}
.critere .petit{margin:4px 0 0}
.note-sur input{display:inline-block;width:90px;margin-left:6px}
.fichier-info{display:flex;align-items:center;gap:12px;margin:6px 0 10px}
.fichier-icone{flex:none;display:grid;place-items:center;width:52px;height:62px;border:1.5px solid var(--bord);border-radius:6px 16px 6px 6px;background:#fff;color:#D0021B;font:800 12px var(--sans)}
.titre-doc{margin:6px 0;font-family:var(--serif);font-style:italic;color:var(--encre)}
/* ----- Page corrigée : la feuille, les erreurs encadrées en rouge */
.nav-page{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}
.page-num input{display:inline-block;width:70px;margin:0 4px;text-align:center}
.page-doc{position:relative;margin-top:10px;overflow:auto;background:#fff;border:1px solid var(--bord);box-shadow:0 12px 28px rgba(7,32,56,.10)}
.page-doc canvas{display:block;margin:0 auto}
.page-texte{padding:20px 18px;white-space:pre-wrap;font-family:var(--serif);font-size:15px;line-height:1.7;color:#1d1d1d}
mark.err{background:transparent;color:inherit;outline:2px solid #D0021B;outline-offset:1px;border-radius:2px}
mark.err sup{display:inline-block;margin-right:3px;padding:0 5px;border-radius:9px;background:#D0021B;color:#fff;font:700 10px/1.5 var(--sans);vertical-align:top}
.pastille{display:inline-grid;place-items:center;min-width:24px;height:24px;border-radius:12px;background:#D0021B;color:#fff;font-weight:800;font-size:13px}
.remarque{margin:10px 0;padding:10px 12px;border:1px solid var(--bord);border-left:4px solid #D0021B;border-radius:10px;background:#fff}
.remarque.st-acceptee{border-left-color:var(--ok)}
.remarque.st-modifiee{border-left-color:var(--or)}
.remarque.st-rejetee{border-left-color:var(--gris);background:#f6f8fa}
.remarque-tete{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.remarque p{margin:6px 0}
.extrait{padding-left:10px;border-left:3px solid #f2b8b5;font-family:var(--serif);font-style:italic;color:#6b1f1a}
.suggestion{color:var(--ok)}
.badge.grav-majeure{background:var(--ko-c);color:var(--ko)}
.badge.grav-moyenne{background:var(--or-c);color:var(--or-f)}
.badge.st-acceptee{background:var(--ok-c);color:var(--ok)}
.badge.st-modifiee{background:var(--or-c);color:var(--or-f)}
.badge.st-rejetee{background:#eef1f4;color:var(--gris)}
.ajout-remarque{margin-top:12px}
.critere-eval{padding:10px 0;border-bottom:1px solid var(--bord)}
.note-totale{margin:14px 0 6px;font-size:17px}
/* ----- Tableau des élèves à ajouter (comme un tableur) */
.tableur td{padding:3px}
.tableur input{min-width:110px;margin:0;padding:7px 8px;border-radius:6px}
.tableur td:first-child{color:var(--gris);text-align:center}
details.coller{margin-top:12px}
.vignette-texte{display:flex;flex-direction:column;align-items:center;justify-content:center;width:86px;height:116px;border:2px solid var(--bord);border-radius:8px;background:#fff;font-size:28px}
.vignette-texte small{font-size:11px;color:var(--gris)}
/* ----- Commentaires, partage */
.commentaire{margin:10px 0;padding:10px 12px;border:1px solid var(--bord);border-radius:10px;background:#fff}
.commentaire.non-lu{border-left:4px solid var(--or)}
.commentaire p{margin:6px 0;white-space:pre-wrap}
.partage{display:flex;flex-direction:column;gap:8px;margin:10px 0}
.partage .btn{text-decoration:none}
/* ----- Impression : seule la zone #impression est imprimée */
#impression{display:none}
@media print{
  @page{size:A4;margin:14mm}
  body{background:#fff;padding:0;color:#000}
  #app,#modal,#toast,#confirmation{display:none!important}
  #impression{display:block}
  .fiche{page-break-after:always;font-size:11pt}
  .fiche:last-child{page-break-after:auto}
  .imp-tete{display:flex;align-items:center;gap:12px;margin-bottom:10px;padding-bottom:8px;border-bottom:2px solid #0A2F52}
  .imp-logo{width:44px;height:44px}
  .imp-marque{font:700 12pt Georgia,serif;color:#0A2F52}
  .imp-tete h1{margin:2px 0;font:700 15pt Georgia,serif}
  .imp-tete p{margin:0;color:#444}
  .imp-note{font-size:14pt;margin:8px 0}
  .imp-table{width:100%;border-collapse:collapse;margin:8px 0}
  .imp-table th,.imp-table td{border:1px solid #999;padding:5px 6px;text-align:left;white-space:normal;vertical-align:top}
  .imp-photo{margin:10px 0;page-break-inside:avoid}
  .imp-photo img,.imp-page{display:block;max-width:100%;max-height:235mm;margin:0 auto}
  .imp-texte{border:1px solid #999}
  .imp-remarques li,.imp-liste li{margin:4px 0}
  .imp-paragraphe{white-space:pre-wrap}
  .fiche h2{font:700 12pt Georgia,serif;margin:12px 0 4px}
}
/* Mot de passe : bouton « œil » dans le champ pour afficher ou masquer la saisie. */
.champ-mdp{position:relative;display:block;margin:4px 0 10px}
.champ-mdp input{margin:0;padding-right:50px}
.champ-mdp input::-ms-reveal,.champ-mdp input::-ms-clear{display:none}
.voir-mdp{position:absolute;top:0;right:0;bottom:0;width:46px;display:flex;align-items:center;justify-content:center;padding:0;border:0;border-radius:0 10px 10px 0;background:none;color:var(--gris);cursor:pointer;-webkit-tap-highlight-color:transparent}
.voir-mdp[aria-pressed=true]{color:var(--ciel-f)}
.voir-mdp:focus-visible{outline:2px solid var(--ciel);outline-offset:-4px}
.voir-mdp svg{pointer-events:none}
/* ----- Examens en ligne, espace élève, notifications */
.cloche{position:relative;flex:none;display:grid;place-items:center;width:40px;height:36px;padding:0;border:1.5px solid rgba(255,255,255,.5);border-radius:10px;background:transparent;color:#fff;font-size:18px;cursor:pointer}
.cloche:hover{background:rgba(255,255,255,.12)}
.pastille-avis{position:absolute;top:-6px;right:-6px;min-width:20px;height:20px;padding:0 5px;border-radius:10px;background:#D0021B;color:#fff;font-size:12px;font-weight:800;line-height:20px;text-align:center}
.badge-role{display:inline-block;margin-left:4px;padding:0 7px;border-radius:999px;background:var(--or);color:#2f2200;font-size:11px;font-weight:800;vertical-align:middle}
.badge.etat-brouillon,.badge.etat-sans_compte{background:#eef1f4;color:var(--gris)}
.badge.etat-a_venir{background:var(--ciel-c);color:var(--nuit)}
.badge.etat-ouvert,.badge.etat-en_cours{background:var(--or-c);color:var(--or-f)}
.badge.etat-remis,.badge.etat-clos{background:var(--ok-c);color:var(--ok)}
.badge.etat-absent{background:var(--ko-c);color:var(--ko)}
.code-prof{margin:6px 0 10px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:34px;font-weight:800;letter-spacing:.12em;color:var(--nuit);text-align:center}
.demande{margin:10px 0;padding:12px;border:1px solid var(--bord);border-radius:10px;background:var(--papier)}
.citation{margin:8px 0;padding:6px 10px;border-left:3px solid var(--or);background:#fff;font-style:italic}
.liste-controle{margin:6px 0 10px;padding:0;list-style:none}
.liste-controle li{margin:5px 0;padding-left:2px}
.liste-controle li.fait{color:var(--ok)}
.liste-controle li.a-faire{color:var(--ko)}
fieldset.cases,fieldset.choix-compte{margin:6px 0 12px;padding:10px 12px;border:1.5px solid var(--bord);border-radius:10px}
fieldset.cases legend,fieldset.choix-compte legend{padding:0 4px;font-size:14px;font-weight:600;color:var(--gris)}
fieldset.cases .case{margin:6px 0}
.alerte-texte{color:var(--ko)}
.choix-apercu{margin:6px 0 10px;padding-left:4px;list-style:none}
.choix-apercu li{margin:3px 0;padding:4px 8px;border-radius:8px}
.choix-apercu li.bonne{background:var(--ok-c);color:var(--ok);font-weight:600}
.option-type input{width:auto;margin:0 6px 0 0}
.option-type:has(input:checked){border-color:var(--nuit);box-shadow:inset 4px 0 0 var(--or);background:var(--ciel-c)}
.option-type:has(input:disabled){cursor:not-allowed}
.option-type:has(input:disabled:not(:checked)){background:#f4f7f9}
.option-compte{display:flex;align-items:flex-start;gap:10px;margin:6px 0;padding:10px;border:1.5px solid var(--bord);border-radius:10px;background:#fff;cursor:pointer;font-weight:400;color:var(--encre)}
.option-compte input{width:auto;margin:4px 0 0}
.option-compte b{display:block;color:var(--nuit)}
.option-compte small{display:block;color:var(--gris)}
.option-compte:has(input:checked){border-color:var(--nuit);background:var(--ciel-c)}
.sous-onglets.plat{padding:0;margin:12px 0 10px;flex-wrap:wrap}
/* Passage d’une épreuve */
.barre-epreuve{position:sticky;top:0;z-index:25;display:flex;justify-content:space-between;align-items:center;gap:10px;margin:0 0 4px;padding:10px 14px;background:var(--encre);color:#fff}
.barre-titre{min-width:0}.barre-titre b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.barre-titre span{font-size:12px;color:#cde6f7}
.chrono{flex:none;padding:4px 12px;border-radius:10px;background:rgba(255,255,255,.12);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:24px;font-weight:800;font-variant-numeric:tabular-nums}
.chrono.urgent{background:#D0021B;animation:clignote 1s steps(2,start) infinite}
@keyframes clignote{50%{opacity:.75}}
.statut-epreuve{margin:4px 14px;font-size:13px;color:var(--gris)}
.statut-epreuve.ko{color:var(--ko);font-weight:600}
.question-epreuve h2{font-size:18px}
.enonce{white-space:pre-wrap;-webkit-user-select:none;user-select:none}
.choix-qcm{display:flex;flex-direction:column;gap:8px;margin:8px 0}
.choix{display:flex;align-items:flex-start;gap:10px;padding:12px;border:1.5px solid var(--bord);border-radius:10px;background:#fff;font-size:16px;font-weight:400;color:var(--encre);cursor:pointer}
.choix input{flex:none;width:22px;height:22px;margin:0}
.choix:has(input:checked){border-color:var(--nuit);background:var(--ciel-c);font-weight:600}
/* Résultats de l’élève */
.graphique{display:block;width:100%;max-width:520px;height:auto;margin:6px 0}
.graphique line.grille{stroke:var(--bord);stroke-width:1}
.graphique line.moitie{stroke:var(--or-b);stroke-width:1.5;stroke-dasharray:4 3}
.graphique text{font-size:10px;fill:var(--gris)}
.graphique polyline{fill:none;stroke:var(--ciel-f);stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}
.graphique circle{fill:#fff;stroke:var(--ciel-f);stroke-width:2.5}
.ma-reponse,.bonne-reponse{margin:8px 0;padding:8px 10px;border-radius:10px;background:var(--papier)}
.ma-reponse p,.bonne-reponse p{margin:2px 0 0;white-space:pre-wrap}
.bonne-reponse{background:var(--ok-c)}
.vide-reponse p{color:var(--gris);font-style:italic}
.appreciation{margin:10px 0 0;padding:8px 10px;border-radius:10px;background:var(--or-c);color:var(--or-f)}
.appreciation-copie{margin-top:12px;padding-top:10px;border-top:1px dashed var(--bord)}
/* Notifications */
.liste-avis{display:flex;flex-direction:column;gap:6px}
.avis{display:flex;align-items:flex-start;gap:10px;width:100%;padding:10px;border:1px solid var(--bord);border-radius:10px;background:#fff;color:var(--encre);text-align:left;font:inherit;cursor:pointer}
.avis.non-lu{border-color:var(--ciel);background:var(--ciel-c)}
.avis-icone{flex:none;font-size:20px;line-height:1.2}
.avis-texte{display:flex;flex-direction:column;min-width:0}
.avis-texte span{font-size:14px}.avis-texte small{font-size:12px;color:var(--gris)}
.avis.non-lu .avis-texte b::after{content:" •";color:#D0021B}
.btn.sortie{white-space:nowrap}
@media (max-width:430px){.barre-haut{gap:6px;padding-left:10px;padding-right:10px}.cloche{width:34px}.btn.sortie{padding:5px 8px;font-size:12px}.qui{max-width:24vw}}
@media (max-width:370px){.marque span{font-size:19px}.qui{display:none}}
@media print{.barre-epreuve,.cloche{display:none}}
/* Icônes vectorielles (js/icones.js) : taille et couleur du texte qui les entoure. */
.ic{display:inline-block;flex:none;width:1.15em;height:1.15em;vertical-align:-.2em;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.btn .ic{width:18px;height:18px}
.btn.petit .ic{width:16px;height:16px}
.icone .ic{width:20px;height:20px;vertical-align:middle}
.fleche .ic{width:20px;height:20px}
.masque-ecran{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
/* Correction en série, vérification, annotations (version 5) */
.copie-serie{margin:10px 0;padding:10px 12px;border:1px solid var(--bord);border-radius:10px;background:var(--papier)}
.copie-serie.doublon{border-color:#f0c3be;background:var(--ko-c)}
.copie-serie select{margin:6px 0}
.bandeau-file{border-color:var(--or-b);background:var(--or-c);color:var(--or-f)}
.bandeau-file b{color:var(--or-f)}
.haut-case{align-self:end;margin-bottom:12px}
.motifs{margin:6px 0 4px}
.motifs .petit{margin:4px 0 0}
.badge.motif{display:inline-flex;align-items:center;gap:4px;margin:2px 4px 2px 0;background:var(--or-c);color:var(--or-f)}
.badge.motif-illisible,.badge.motif-ambigu,.badge.motif-lecture_incertaine,.badge.motif-vide_a_confirmer,.badge.motif-repere_absent{background:var(--ko-c);color:var(--ko)}
.badge.motif .ic{width:13px;height:13px}
.identification{margin:10px 0;padding:10px 12px;border:1px solid #f0c3be;border-radius:10px;background:var(--ko-c);color:var(--encre)}
.identification select{margin:0;flex:1;min-width:0}
.page-annotee{position:relative;display:inline-block;line-height:0}
.page-annotee svg.traits{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.page-grande{overflow:auto;max-height:78vh;text-align:center;touch-action:pan-x pan-y pinch-zoom}
.page-grande img{display:block;width:100%;height:auto;border-radius:6px}
.imp-photo .page-annotee img{max-width:100%}
.annoter h2{margin-bottom:6px}
.barre-annot{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px}
.barre-annot select{width:auto;margin:0;padding:6px 8px}
.pastille{width:34px;height:34px;border:3px solid #fff;border-radius:50%;box-shadow:0 0 0 1.5px var(--bord);cursor:pointer}
.pastille.actif{box-shadow:0 0 0 3px var(--encre)}
.scene-annot{overflow:auto;max-height:70vh;border:1px solid var(--bord);border-radius:10px;background:#f0f4f8;text-align:center}
.scene-annot .page-annotee{max-width:100%}
.scene-annot img{display:block;max-width:100%;height:auto;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.scene-annot canvas{position:absolute;left:0;top:0;touch-action:none;cursor:crosshair}
.scene-annot.main canvas{touch-action:auto;pointer-events:none}
.filtres{padding:0;margin:8px 0}
.verif h2{font-size:18px}
.vignette .page-annotee img{display:block}
/* Examens sécurisés : avertissement, rappel de la règle, épreuve verrouillée, journal de l’élève */
.avertissement-epreuve h3{display:flex;align-items:center;gap:6px;margin:14px 0 4px;font-size:16px;color:var(--nuit)}
.avertissement-epreuve .liste-controle li{position:relative;padding-left:16px}
.avertissement-epreuve .liste-controle li::before{content:"";position:absolute;left:2px;top:.65em;width:6px;height:6px;border-radius:50%;background:var(--or)}
.avertissement-epreuve .case{margin:12px 0;padding:10px 12px;border:1.5px solid var(--or-b);border-radius:10px;background:var(--or-c);font-weight:700}
.rappel-regle{flex:1;margin:0;font-size:14px;color:var(--or-f)}
.verrou-epreuve{border:2px solid var(--ko);background:var(--ko-c)}
.verrou-epreuve h2{display:flex;align-items:center;gap:8px;color:var(--ko)}
.item.verrouillee{border-color:var(--ko);background:var(--ko-c)}
.badge.etat-verrou{background:var(--ko);color:#fff}
.journal-epreuve{margin:10px 0;padding:0;list-style:none;border-left:2px solid var(--bord)}
.journal-epreuve li{display:flex;gap:10px;padding:5px 0 5px 10px;font-size:14px}
.journal-epreuve .heure{flex:0 0 auto;font-variant-numeric:tabular-nums;color:var(--gris)}
.journal-epreuve .evt-sortie b,.journal-epreuve .evt-verrouillage b,.journal-epreuve .evt-remise_sortie b,.journal-epreuve .evt-interruption b{color:var(--ko)}
.journal-epreuve .evt-retour b,.journal-epreuve .evt-deverrouillage b,.journal-epreuve .evt-regles b{color:var(--ok)}
.ligne-suivi>div{flex:1;min-width:0}
.actions-suivi{margin-top:8px;gap:6px}
/* Jauge de robustesse du mot de passe */
.jauge-mdp{margin:-4px 0 10px}
.jauge-mdp .barres{display:flex;gap:4px;margin-bottom:3px}
.jauge-mdp .barres i{flex:1;height:5px;border-radius:3px;background:var(--bord)}
.jauge-mdp[data-score="0"] .barres i:nth-child(1){background:var(--ko)}
.jauge-mdp[data-score="1"] .barres i:nth-child(-n+1){background:#e8590c}
.jauge-mdp[data-score="2"] .barres i:nth-child(-n+2){background:var(--or)}
.jauge-mdp[data-score="3"] .barres i:nth-child(-n+3){background:var(--ok)}
.jauge-mdp[data-score="4"] .barres i{background:var(--ok)}
.jauge-mdp[data-score="0"] span,.jauge-mdp[data-score="1"] span{color:var(--ko)}
/* Indices d’écriture par une IA : en rouge, jamais une preuve */
.indices-ia{margin:10px 0;padding:10px 12px;border:2px solid var(--ko);border-radius:10px;background:var(--ko-c);color:var(--encre)}
.indices-ia.niveau-faible{border-color:#f0a8a0;border-width:1.5px}
.indices-ia.ecarte{border-style:dashed;opacity:.75}
.indices-ia .titre-indices{margin:0 0 6px;color:var(--ko)}
.indices-ia .titre-indices .petit{color:var(--encre)}
.texte-indices{margin:6px 0;padding:8px 10px;border-radius:8px;background:#fff;white-space:pre-wrap;font-size:14px}
.passage-ia{background:#fbd5d0;color:var(--ko);font-weight:700;border-radius:3px;padding:0 2px}
.raisons-indices{margin:6px 0;padding-left:18px;font-size:14px}
.raisons-indices li{margin:3px 0}
.indices-ia input{width:100%}
.badge.niveau-indice.niveau-eleve{background:var(--ko);color:#fff}
.badge.niveau-indice.niveau-moyen{background:#fbd5d0;color:var(--ko)}
.badge.niveau-indice.niveau-faible{background:var(--ko-c);color:var(--ko)}
.liste-indices .item.ecarte{opacity:.65}
/* Espace de révision de l’élève */
.filtres-cours{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}
.filtres-cours select{flex:1 1 140px;min-width:0}
.groupe-cours{margin:14px 0 4px;font-size:15px;color:var(--nuit)}
.etoile .ic{color:var(--or);fill:var(--or)}
.usage-ia{color:var(--gris)}
.resultats-recherche mark{background:var(--or-c);color:var(--encre);padding:0 2px;border-radius:3px}
.texte-cours{margin:8px 0;padding:10px 12px;border-radius:8px;background:var(--papier);border:1px solid var(--bord);white-space:pre-wrap;font-size:14px;max-height:none}
.grille-docs{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin:8px 0}
.grille-docs .btn{justify-content:flex-start}
label.btn.desactive{opacity:.5;pointer-events:none}
.document-eleve h3{margin:14px 0 4px;color:var(--nuit)}
.definitions dt{font-weight:700;margin-top:6px}
.definitions dd{margin:0 0 4px 0}
.a-retenir{margin-top:12px;padding:8px 12px;border-radius:10px;background:var(--or-c);border:1px solid var(--or-b)}
.qr{margin:6px 0;padding:8px 10px;border:1px solid var(--bord);border-radius:8px;background:#fff}
.qr summary{cursor:pointer}
.qr p{margin:8px 0 2px}
.question-qcm{margin:10px 0;padding:8px 10px;border:1px solid var(--bord);border-radius:10px}
.question-qcm.juste{border-color:var(--ok);background:var(--ok-c)}
.question-qcm.fausse{border-color:var(--ko);background:var(--ko-c)}
.question-qcm .choix.bonne span{font-weight:700;color:var(--ok)}
.question-qcm .choix.fausse span{color:var(--ko);text-decoration:line-through}
.carte-memo{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;width:100%;min-height:180px;margin:10px 0;padding:18px;border:2px solid var(--nuit);border-radius:14px;background:#fff;color:var(--encre);font:inherit;cursor:pointer;text-align:center}
.carte-memo .face{font-size:19px;font-weight:700}
.carte-memo.verso{background:var(--ciel-c);border-color:var(--ciel-f)}
.pastilles-cartes{display:flex;flex-wrap:wrap;gap:4px;margin:8px 0}
.pastille-carte{width:30px;height:30px;border-radius:50%;border:1.5px solid var(--bord);background:#fff;font-size:12px;cursor:pointer}
.pastille-carte.actuelle{border-color:var(--nuit);border-width:2.5px}
.pastille-carte.boite-1{background:var(--ko-c)}
.pastille-carte.boite-2,.pastille-carte.boite-3{background:var(--or-c)}
.pastille-carte.boite-4,.pastille-carte.boite-5{background:var(--ok-c)}
.echange{margin:10px 0;padding:10px 12px;border:1px solid var(--bord);border-radius:10px;background:#fff}
.question-eleve{margin:0 0 6px;font-weight:700}
.reponse-assistant{padding:8px 10px;border-left:3px solid var(--ciel);background:var(--papier);border-radius:4px}
.reponse-assistant.pas-trouve{border-left-color:var(--or)}
.ref-source{display:inline-block;margin:0 2px;padding:0 6px;border:1px solid var(--ciel-f);border-radius:10px;background:var(--ciel-c);color:var(--ciel-f);font-size:12px;font-weight:700;cursor:pointer}
.extrait-source{margin:8px 0;padding:8px 12px;border-left:3px solid var(--ciel);background:var(--papier);white-space:pre-wrap}
.filtres-histo{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.offres td,.offres th{text-align:center;white-space:normal}
.offres td:first-child{text-align:left}
.offres td:not(:first-child),.offres th:not(:first-child){width:30%}
.offres input{width:100%;min-width:92px;padding-left:6px;padding-right:6px}
.etape-plan{margin:8px 0}
.erreur-demarrage{margin-top:16px}
.erreur-demarrage h2 .ic{color:var(--ko)}
body.charge::before{content:"";position:fixed;top:0;left:0;right:0;height:3px;z-index:2000;pointer-events:none;
  background:linear-gradient(90deg,transparent,var(--or),transparent) no-repeat;background-size:40% 100%;animation:barre-charge 1.1s linear infinite}
@keyframes barre-charge{from{background-position:-60% 0}to{background-position:160% 0}}
@media (prefers-reduced-motion:reduce){body.charge::before{animation:none;background:var(--or);opacity:.6}}
.carte.alerte-carte{border-left:4px solid var(--ko)}
.alerte-carte h2{color:var(--ko)}
.alerte-carte h2 .ic{color:var(--ko)}
.tableau-matieres th{white-space:normal;font-size:13px;vertical-align:bottom}
.tableau-matieres td:first-child{white-space:normal}
/* Brouillon obligatoire (épreuve en ligne) et temps hors de l’écran */
.bloc-brouillon{margin-top:10px;padding:10px 12px;border:1.5px dashed var(--or-b);border-radius:10px;background:var(--or-c)}
.bloc-brouillon.ok{border-color:#9fd7b4;border-style:solid;background:var(--ok-c)}
.bloc-brouillon.manque{border-color:#f0c3be;background:var(--ko-c)}
.bloc-brouillon .titre-brouillon{margin:0 0 6px;font-size:14px;color:var(--encre)}
.bloc-brouillon .vignette img,.brouillons-copie .vignette img{width:72px;height:96px}
.vignette.feuille-attente img,.vignette.feuille-envoi img{opacity:.55}
.vignette.feuille-erreur img{border-color:var(--ko)}
.appareil-brouillon video,.appareil-brouillon img{display:block;width:100%;max-height:60vh;margin-bottom:8px;border-radius:10px;background:#000;object-fit:contain}
.brouillons-copie{margin:6px 0}
.alerte-forte{color:var(--ko);font-weight:700}
/* Corrections validées : notes verrouillées, appréciation modifiable (v7) */
.bandeau-verrou{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;margin:12px 0;padding:10px 12px;border:1px solid var(--ok);border-radius:10px;background:var(--ok-c);color:#0d4f27;font-size:14px}
.bandeau-verrou span{flex:1 1 220px}
.bandeau-verrou .ic{flex:none}
.note-finale span{display:flex;align-items:center;gap:4px;margin-bottom:2px;font-size:12px;font-weight:700;color:var(--gris)}
.note-finale span .ic{width:13px;height:13px}
.note-finale b{font-family:var(--serif);font-size:26px;color:var(--or-f)}
.appreciation-lue{padding:10px 12px;border:1px solid var(--bord);border-left:4px solid var(--or);border-radius:10px;background:#fff}
.appreciation-lue p{margin:4px 0 8px;white-space:pre-wrap}
.appreciation-fiche{margin:14px 0}
.appreciation-fiche textarea,.appreciation-copie textarea{width:100%}
/* Confirmation d’une suppression : « Oui, supprimer » ou « Non » */
.confirmation{position:fixed;inset:0;z-index:90;display:flex;align-items:center;justify-content:center;padding:16px;background:rgba(7,32,56,.6)}
.confirmation-boite{width:100%;max-width:420px;padding:18px 18px 16px;border-radius:16px;background:#fff;color:var(--encre);box-shadow:0 18px 40px rgba(0,0,0,.25)}
.confirmation-question{margin:0 0 6px;font-family:var(--serif);font-size:19px;font-weight:700;line-height:1.3}
.confirmation-detail{margin:0 0 4px;color:var(--gris);font-size:15px}
.confirmation-choix{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:16px}
.confirmation-choix .btn{flex:1 1 130px;min-height:46px}
#confirmation.hidden{display:none}
.confirmation-choix .btn.danger{background:var(--ko);color:#fff;border-color:var(--ko)}
