/* ══════════════════════════════════════════════════════════════════════
   FICHE DE CORRECTION — feuille partagée
   Utilisée par le correcteur (app/correcteur-ecrit.html) ET par la page
   de relecture d'une correction enregistrée (app/ma-correction.html).
   Source unique : ne pas recopier ces règles dans une page.
   ══════════════════════════════════════════════════════════════════════ */
/* ── Bandeau de résultats ── */
.exam-final-header{position:relative;padding:30px 32px 34px;overflow:hidden;
    background:radial-gradient(120% 140% at 15% 0%,#243049 0%,#1B2438 45%,#141B2B 100%);}
/* Voile coloré très discret, teinté par le résultat */
.exam-final-header::before{content:'';position:absolute;top:-120px;right:-80px;width:340px;height:340px;
    border-radius:50%;background:radial-gradient(circle,var(--efh-teinte,rgba(232,49,26,.20)) 0%,transparent 70%);
    pointer-events:none;transition:background .5s ease;}
.exam-final-header > *{position:relative;z-index:1;}

.efh-title{text-align:center;margin-bottom:26px;}
.exam-final-header .efh-sub{display:block;color:rgba(255,255,255,.42);font-size:10.5px;font-weight:700;
    text-transform:uppercase;letter-spacing:.14em;margin-bottom:7px;}
.exam-final-header h2{color:#fff;font-size:1.35rem;font-weight:800;letter-spacing:-.02em;line-height:1.25;}

.efh-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:center;gap:18px;}
.efh-cell{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center;min-width:0;
    padding:0 8px;}
.efh-cell + .efh-cell{border-left:1px solid rgba(255,255,255,.09);}
.efh-label{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.12em;
    color:rgba(255,255,255,.45);}
.efh-note{font-size:11px;color:rgba(255,255,255,.38);}

/* Anneau de progression */
.efh-score-ring{position:relative;width:116px;height:116px;}
.efh-score-ring svg{width:100%;height:100%;transform:rotate(-90deg);}
.efh-score-ring circle{fill:none;stroke-width:9;stroke-linecap:round;}
.efh-track{stroke:rgba(255,255,255,.09);}
.efh-arc{stroke:var(--efh-couleur,#E8311A);
    stroke-dasharray:326.7;stroke-dashoffset:326.7;
    transition:stroke-dashoffset 1s cubic-bezier(.4,0,.2,1),stroke .5s ease;
    filter:drop-shadow(0 0 6px var(--efh-lueur,rgba(232,49,26,.5)));}
.efh-ring-txt{position:absolute;inset:0;display:flex;flex-direction:column;
    align-items:center;justify-content:center;gap:1px;}
.efh-ring-txt .efh-num{font-size:2.15rem;font-weight:800;color:#fff;line-height:1;
    letter-spacing:-.03em;font-variant-numeric:tabular-nums;}
.efh-ring-txt .efh-den{font-size:11.5px;font-weight:600;color:rgba(255,255,255,.45);}

/* Badge de niveau */
.efh-nclc-badge{display:inline-flex;align-items:center;gap:7px;padding:9px 18px;border-radius:999px;
    font-size:14.5px;font-weight:800;letter-spacing:-.01em;white-space:nowrap;
    background:rgba(255,255,255,.07);color:#fff;border:1px solid rgba(255,255,255,.16);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.08);}
.efh-nclc-badge::before{content:'';width:7px;height:7px;border-radius:50%;flex:0 0 7px;
    background:var(--efh-couleur,#E8311A);box-shadow:0 0 0 3px var(--efh-lueur,rgba(232,49,26,.25));}

/* Récapitulatif des trois tâches */
.efh-tasks{display:flex;flex-direction:column;gap:8px;width:100%;max-width:210px;}
.efh-task{display:flex;align-items:center;gap:9px;}
.efh-task-n{flex:0 0 20px;width:20px;height:20px;border-radius:6px;font-size:10px;font-weight:800;
    display:flex;align-items:center;justify-content:center;
    background:rgba(255,255,255,.1);color:rgba(255,255,255,.75);}
.efh-task-bar{flex:1;height:5px;border-radius:99px;background:rgba(255,255,255,.1);overflow:hidden;}
.efh-task-bar i{display:block;height:100%;width:0;border-radius:99px;background:#94A3B8;
    transition:width .9s cubic-bezier(.4,0,.2,1);}
.efh-task-bar i.bon{background:#34D399;}
.efh-task-bar i.moyen{background:#FBBF24;}
.efh-task-bar i.faible{background:#F87171;}
.efh-task-v{flex:0 0 auto;font-size:11.5px;font-weight:800;color:rgba(255,255,255,.8);
    font-variant-numeric:tabular-nums;min-width:38px;text-align:right;}

@media(max-width:700px){
    .exam-final-header{padding:24px 18px 28px;}
    .efh-grid{grid-template-columns:minmax(0,1fr);gap:24px;}
    .efh-cell + .efh-cell{border-left:0;border-top:1px solid rgba(255,255,255,.09);padding-top:22px;}
    .efh-tasks{max-width:260px;}
}
.exam-final-body{padding:28px;}
.efb-titre{font-size:11px;font-weight:800;color:#9AA6B8;text-transform:uppercase;
    letter-spacing:.12em;margin-bottom:16px;display:flex;align-items:center;gap:12px;}
.efb-titre::after{content:'';flex:1;height:1px;background:linear-gradient(90deg,#E7EDF5,transparent);}
.exam-task-row{display:flex;align-items:center;justify-content:space-between;background:#F8FAFC;border:1px solid #E2E8F0;border-radius:12px;padding:14px 18px;margin-bottom:10px;}
.exam-task-row-label{font-size:14px;font-weight:600;color:var(--dark);}
.exam-task-row-score{font-size:1.1rem;font-weight:900;color:var(--primary);}
/* Task sections in final */
.final-task-section{margin-top:28px;}
.final-task-section-header{display:flex;align-items:center;justify-content:space-between;background:linear-gradient(135deg,#1E293B,#334155);border-radius:14px 14px 0 0;padding:16px 22px;}
.final-task-section-title{color:#fff;font-size:15px;font-weight:800;}
.final-task-section-score{background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.25);border-radius:50px;padding:5px 16px;color:#fff;font-size:14px;font-weight:900;}
.final-task-section-body{background:#fff;border:1px solid #E2E8F0;border-top:none;border-radius:0 0 14px 14px;padding:20px 22px;}

/* ═══════ FICHE DE CORRECTION PAR TÂCHE ═══════ */
.tcard{background:#fff;border:1px solid var(--border);border-radius:18px;padding:22px 24px 24px;
    margin-bottom:20px;box-shadow:0 2px 12px rgba(15,23,42,.05);}
.tcard-head{display:flex;align-items:flex-start;gap:18px;margin-bottom:18px;}
.tcard-id{flex:1;min-width:0;}
.tcard-id h3{font-size:16.5px;font-weight:800;color:var(--dark);line-height:1.3;letter-spacing:-.015em;}
.tcard-id p{font-size:11.5px;color:var(--gray);line-height:1.6;margin-top:5px;}
.tcard-score{flex:0 0 auto;display:flex;align-items:center;gap:9px;}
.tcard-note{font-size:19px;font-weight:800;color:var(--primary);font-variant-numeric:tabular-nums;letter-spacing:-.02em;}
.tcard-level{font-size:10px;font-weight:800;padding:4px 9px;border-radius:999px;white-space:nowrap;}
.lvl-a1,.lvl-a2{background:#FEE2E2;color:#B91C1C;}
.lvl-b1{background:#FEF3C7;color:#B45309;}
.lvl-b2{background:#DCFCE7;color:#15803D;}
.lvl-c1,.lvl-c2{background:#E2E8F0;color:#334155;}

.tcard-panels{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:18px;}
/* Tâche éliminée : les points positifs sont masqués — féliciter une
   copie qui vaut 0 serait contradictoire. Le panneau restant prend
   toute la largeur. */
.tcard-panels-solo{grid-template-columns:minmax(0,1fr);}
.tpanel{border-radius:14px;padding:15px 17px;border:1px solid transparent;}
.tpanel h4{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:800;margin-bottom:11px;}
.tpanel h4 i{font-size:13px;}
.tpanel ul{list-style:none;display:flex;flex-direction:column;gap:8px;}
.tpanel li{position:relative;padding-left:14px;font-size:11.5px;line-height:1.65;color:#334155;}
.tpanel li::before{content:'';position:absolute;left:0;top:.6em;width:5px;height:5px;border-radius:50%;}
.tpanel-plus{background:linear-gradient(180deg,#F6FDF9,#F0FDF4);border-color:#C6EFD6;}
.tpanel-plus h4{color:#15803D;}
.tpanel-plus li::before{background:#22C55E;}
.tpanel li.tpanel-vide{color:#94A3B8;font-style:italic;padding-left:0;}
.tpanel li.tpanel-vide::before{display:none;}
.tpanel-minus{background:linear-gradient(180deg,#FFFDF6,#FEFAEC);border-color:#F6E3B4;}
.tpanel-minus h4{color:#B45309;}
.tpanel-minus li::before{background:#F59E0B;}

.tfold{border:1px solid var(--border);border-radius:14px;margin-bottom:12px;overflow:hidden;background:#fff;}
.tfold summary{display:flex;align-items:center;gap:9px;padding:13px 16px;cursor:pointer;
    font-size:12.5px;font-weight:700;color:#475569;list-style:none;transition:background .18s;}
.tfold summary::-webkit-details-marker{display:none;}
.tfold summary:hover{background:#FBFCFE;}
.tfold summary > i:first-child{font-size:12px;color:#94A3B8;}
.tfold summary span{font-weight:500;color:#94A3B8;font-size:11px;}
.tfold-chev{margin-left:auto;font-size:10px;color:#94A3B8;transition:transform .25s ease;}
.tfold[open] .tfold-chev{transform:rotate(180deg);}
.tfold-body{padding:0 16px 16px;}
.tfold-body p{background:transparent;font-size:12.5px;line-height:1.8;color:#334155;margin-bottom:10px;}
.tfold-body p:last-child{margin-bottom:0;}
.tfold-body{border-top:1px solid #F1F5F9;padding-top:14px;margin-top:0;}
.tfold-empty{color:#94A3B8;font-style:italic;}
.tfold-titre{font-weight:800!important;color:var(--dark)!important;font-size:13.5px!important;
    margin-bottom:12px!important;}
.tfold-fix summary{color:var(--primary);}
.tfold-fix summary > i:first-child{color:var(--primary);}
.tfold-fix{border-color:#FBD8D1;}
.tfold-fix .tfold-body{background:#FFFCFB;border-top-color:#FBD8D1;}
.tfold-fix mark{background:#FDE4DE;color:#9A2412;padding:1px 3px;border-radius:4px;
    box-decoration-break:clone;-webkit-box-decoration-break:clone;font-weight:600;}
.tfix-legend{font-size:11px!important;color:var(--gray)!important;margin-bottom:12px!important;
    padding-bottom:10px;border-bottom:1px dashed #FBD8D1;}
.tfix-legend mark{font-size:11px;}

/* ── Élimination (sous le minimum de mots) ── */
.tcard-note.zero{color:#B91C1C;}
.lvl-elim{background:#B91C1C;color:#fff;letter-spacing:.03em;}
.tcard-elim{display:flex;gap:11px;align-items:flex-start;margin-bottom:18px;padding:13px 15px;
    border-radius:12px;background:#FFF5F4;border:1px solid #FCC9C2;border-left:3px solid #B91C1C;}
.tcard-elim i{flex:0 0 auto;color:#B91C1C;font-size:13px;margin-top:2px;}
.tcard-elim span{font-size:12px;line-height:1.65;color:#7F1D1D;}
.tcard-elim b{font-weight:800;}

.prov-bar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
    background:linear-gradient(180deg,#FFFFFF,#FBFCFE);border:1px solid var(--border);
    border-left:3px solid var(--primary);border-radius:12px;padding:12px 16px;margin-bottom:18px;}
.prov-txt{display:flex;align-items:center;gap:9px;font-size:12.5px;color:var(--gray);}
.prov-txt i{color:var(--primary);font-size:13px;}
.prov-txt b{color:var(--dark);font-weight:800;}
.prov-lien{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;font-weight:700;
    color:var(--primary);text-decoration:none;white-space:nowrap;}
.prov-lien:hover{text-decoration:underline;}
.prov-lien i{font-size:10px;}

.tcard-corrige{display:inline-flex;align-items:center;gap:8px;margin-top:4px;padding:10px 14px;
    width:100%;justify-content:center;background:var(--light);border:1px dashed var(--border);
    border-radius:12px;font-size:12.5px;font-weight:600;color:var(--gray);text-decoration:none;
    transition:all .18s;}
.tcard-corrige:hover{border-color:var(--primary);color:var(--primary);background:#FEF3F1;
    border-style:solid;}
.tcard-corrige i:last-child{font-size:10px;opacity:.7;}

.tcard-trunc{display:flex;gap:11px;align-items:flex-start;margin-bottom:12px;padding:12px 14px;
    border-radius:12px;background:#FFFBEB;border:1px solid #F6E3B4;border-left:3px solid #F59E0B;}
.tcard-trunc i{flex:0 0 auto;color:#B45309;font-size:12px;margin-top:3px;}
.tcard-trunc span{font-size:11.5px;line-height:1.65;color:#78350F;}
.tcard-trunc b{font-weight:800;}

.elim-banner{display:flex;gap:14px;align-items:flex-start;margin-bottom:22px;padding:18px 20px;
    border-radius:16px;background:linear-gradient(180deg,#FFF7F6,#FFF1EF);border:1px solid #FBC5BD;
    box-shadow:0 2px 10px rgba(185,28,28,.06);}
.elim-banner > i{flex:0 0 34px;width:34px;height:34px;border-radius:11px;display:flex;
    align-items:center;justify-content:center;font-size:14px;color:#fff;
    background:linear-gradient(135deg,#EF4444,#B91C1C);box-shadow:0 4px 12px rgba(185,28,28,.28);}
.elim-banner b{display:block;font-size:14px;font-weight:800;color:#B91C1C;margin-bottom:5px;letter-spacing:-.01em;}
.elim-banner p{font-size:12.5px;line-height:1.65;color:#7F1D1D;}

.tpanel-tag{display:inline-block;font-size:9px;font-weight:800;text-transform:uppercase;
    letter-spacing:.06em;padding:1px 6px;border-radius:5px;margin-right:6px;vertical-align:1px;
    background:rgba(15,23,42,.06);color:#64748B;}
.tpanel-plus .tpanel-tag{background:rgba(21,128,61,.1);color:#15803D;}
.tpanel-minus .tpanel-tag{background:rgba(180,83,9,.1);color:#B45309;}

.tfold-grid summary{color:#475569;}
.tfold-grid summary > i:first-child{color:#94A3B8;}
.tgrid-row{margin-bottom:15px;}
.tgrid-row:last-child{margin-bottom:0;}
.tgrid-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;}
.tgrid-head b{font-size:12.5px;font-weight:700;color:var(--dark);}
.tgrid-note{font-size:13px;font-weight:800;color:#B45309;font-variant-numeric:tabular-nums;}
.tgrid-note em{font-style:normal;font-size:10.5px;font-weight:600;color:#94A3B8;}
.tgrid-note.ok{color:#15803D;}
.tgrid-note.low{color:#B91C1C;}
.tgrid-bar{height:5px;border-radius:99px;background:#EDF1F6;overflow:hidden;margin-top:7px;}
.tgrid-bar i{display:block;height:100%;border-radius:99px;background:#F59E0B;transition:width .4s ease;}
.tgrid-bar i.ok{background:#22C55E;}
.tgrid-bar i.low{background:#EF4444;}
.tgrid-row p{font-size:11.5px;line-height:1.6;color:var(--gray);margin-top:7px;}

@media(max-width:760px){
    .tcard{padding:18px 16px 20px;}
    .tcard-head{flex-direction:column;gap:10px;}
    .tcard-panels{grid-template-columns:minmax(0,1fr);}
}

/* ── Fiche de correction ORALE (public/app/fiche-oral.js) ─────────────────
   Ces règles vivaient dans le <style> du simulateur : la page de relecture
   d'un historique (ma-correction.html) n'en héritait pas, d'où une coche
   démesurée et des bulles sans mise en forme.
   Elles sont ici pour que TOUTE page affichant une fiche orale soit correcte.

   Chaque variable a un repli : le simulateur définit --ink / --muted /
   --success…, la page de relecture définit --dark / --gray / --primary.
   Sans ces replis, l'une des deux pages perdrait ses couleurs.            */
.corr-del {
    text-decoration: line-through; text-decoration-thickness: 1.5px;
    color: var(--danger, #DC2626); background: var(--danger-soft, #FEE2E2);
    border-radius: 5px; padding: 1px 5px;
}
.corr-add {
    color: var(--success, #059669); background: var(--success-soft, #D1FAE5);
    font-weight: 600; border-radius: 5px; padding: 1px 5px; margin-left: 3px;
}
.corr-ok {
    display: inline-flex; align-items: center; gap: 6px;
    font-size: 11px; letter-spacing: .04em; color: var(--success, #059669); margin-left: 6px;
}
/* Sans cette contrainte, le SVG de la coche occupe toute la largeur. */
.corr-ok svg { width: 13px; height: 13px; flex: none; }

.fo-conv .fo-exam { display: none; }
.fo-conv.fo-show-exam .fo-exam { display: block; }
.fo-tour { margin: 0 0 12px; line-height: 1.65; }
.fo-tour.fo-exam { opacity: .75; }
.fo-qui {
    display: inline-block; margin-right: 8px; padding: 2px 8px; border-radius: 999px;
    font-size: 11px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase;
    background: var(--ink, var(--dark, #1F2937)); color: var(--bg, #fff); vertical-align: 1px;
}
.fo-tour.fo-exam .fo-qui { background: var(--muted, var(--gray, #6B7280)); }
.fo-toggle {
    display: inline-flex; align-items: center; gap: 7px; margin: 0 0 16px;
    padding: 7px 14px; border: 1px solid var(--border, #E5E7EB); border-radius: 999px;
    background: transparent; color: var(--ink, var(--dark, #1F2937));
    font: inherit; font-size: 13px; cursor: pointer;
}
.fo-toggle:hover { background: var(--surface, var(--light, #F9FAFB)); }
.fo-attente {
    display: flex; align-items: center; gap: 9px; margin: 0 0 14px;
    font-size: 12.5px; color: var(--muted, var(--gray, #6B7280));
}

/* Réécoute de la conversation (fiche orale) */
.fo-audio { margin: 0 0 18px; }
.fo-audio-lbl {
    display: flex; align-items: center; gap: 8px; margin-bottom: 8px;
    font-size: 12.5px; font-weight: 600; color: var(--muted, var(--gray, #6B7280));
}
.fo-audio audio { width: 100%; max-width: 520px; }

/* Passage non couvert par la correction. Ni rouge ni barré : le candidat n'a
   rien fait de mal, c'est le correcteur qui s'est arrêté. Un simple liseré
   suffit à dire « ceci n'a pas été vérifié ». */
.corr-nc {
    color: var(--ink, #161513);
    border-left: 2px solid var(--border-strong, #E6C3AE);
    padding-left: 10px;
    display: inline-block;
}
.corr-nc-note {
    margin-top: 8px;
    font-size: .82rem;
    color: var(--muted, #847468);
    font-style: italic;
}
