:root{--bg:#f4f6fb;--panel:#fff;--text:#19202a;--muted:#6f7886;--line:#e2e7ef;--nav:#111a2d;--blue:#145fc9;--blueSoft:#eaf2ff;--blueLight:#67a0ff;--blueBorder:#9bbfe8;--red:#b83b35;--redSoft:#fff0ef;--green:#278a55;--greenSoft:#e9f8f0;--purple:#7150bb;--purpleSoft:#f1ecff;--amber:#a76300;--amberSoft:#fff2dc;--compris:#287755;--comprisLight:#63bc88;--interro:#15803d;--interroLight:#4ade80;--interroSoft:#dcfce7;--colle:#d97706;--colleSoft:#ffedd5;--shadow:0 10px 35px rgba(29,45,78,.08);--radius:14px;--overviewWidth:680px;--listMaxWidth:820px}
*{box-sizing:border-box}html{scroll-behavior:smooth;overscroll-behavior:none}body{margin:0;overscroll-behavior:none;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;background:var(--bg);color:var(--text)}button,input,select{font:inherit}button{cursor:pointer}.hidden{display:none!important}.app{min-height:100vh;display:grid;grid-template-columns:280px minmax(0,1fr)}
.sidebar{background:var(--nav);color:#eef3ff;padding:24px 18px;position:sticky;top:0;height:100vh;overflow:auto}.brand{display:flex;align-items:center;gap:12px;padding:0 8px 20px}.brandMark{width:42px;height:42px;border-radius:13px;background:linear-gradient(145deg,#4f8cff,#1355c8);display:grid;place-items:center;font-weight:900;box-shadow:0 8px 18px rgba(29,93,220,.35)}.brand small{display:block;color:#97a6c5;margin-top:2px}.chapterPickerLabel{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:#8292b1;margin:0 8px 7px}.chapterPicker{width:100%;background:#18243b;color:#fff;border:1px solid #2d3b57;border-radius:11px;padding:10px 11px;margin-bottom:12px}.chapterCard{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.08);border-radius:15px;padding:14px;margin-bottom:18px}.chapterCard span{font-size:12px;color:#9eacc5;display:block}.chapterCard strong{display:block;margin-top:3px}.navLabel{font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:#7686a6;margin:20px 10px 8px}.nav button,.sectionNav button{width:100%;border:0;background:transparent;color:#b9c5dc;display:flex;align-items:flex-start;gap:10px;padding:7px 12px;border-radius:11px;text-align:left;margin:1px 0}.nav button:hover,.sectionNav button:hover{background:rgba(255,255,255,.07);color:#fff}.nav button.active{background:var(--blue);color:#fff}.nav button span{width:20px;text-align:center}.sectionNav button{font-size:12px}.sectionNav b{min-width:23px;color:#79a8ff}.sectionNav em{font-style:normal;margin-left:auto;color:#7786a3}
.main{min-width:0}.topbar{height:72px;background:rgba(255,255,255,.9);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:18px;padding:0 30px;position:sticky;top:0;z-index:15}.search{position:relative;max-width:650px;flex:1}.search input{width:100%;border:1px solid var(--line);background:#f8f9fc;border-radius:12px;padding:11px 14px 11px 40px}.search span{position:absolute;left:14px;top:10px;color:#8a93a2}.topPill{font-size:12px;background:#edf4ff;color:var(--blue);border-radius:999px;padding:7px 10px;font-weight:700}.content{padding:30px;max-width:1460px;margin:0 auto}.viewTitle{display:flex;justify-content:space-between;align-items:end;margin-bottom:18px;gap:16px}.viewTitle h1{font-size:26px;margin:0}.viewTitle p{color:var(--muted);margin:5px 0 0}
.hero{background:linear-gradient(120deg,#123f88,#0d5ed7 56%,#3482e9);color:#fff;border-radius:23px;padding:28px 30px;display:grid;grid-template-columns:1fr auto;gap:24px;box-shadow:var(--shadow)}.eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.14em;opacity:.82}.eyebrow.dark{color:var(--muted);opacity:1}.hero h1{margin:7px 0 8px;font-size:30px}.hero p{margin:0;max-width:780px;color:#dfeaff}.heroStats{display:flex;gap:10px;align-items:end}.heroStats>div{background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.16);min-width:86px;padding:13px;border-radius:14px;text-align:center}.heroStats strong{font-size:23px;display:block}.heroStats span{font-size:10px;text-transform:uppercase;letter-spacing:.07em;opacity:.82}
.metricGrid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:21px 0}.metric,.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 5px 18px rgba(31,50,86,.04)}.metric{padding:17px;text-align:left;font:inherit;color:inherit}.dashboardMetricLink{cursor:pointer;transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease}.dashboardMetricLink:hover{transform:translateY(-1px);border-color:#b8c9e8;box-shadow:0 8px 22px rgba(31,50,86,.08)}.dashboardMetricLink:focus-visible,.dashboardSectionLink:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.metric>span{display:block;color:var(--muted);font-size:12px}.metric strong{font-size:25px;display:inline-block;margin-top:8px}.metric small{color:var(--muted);margin-left:4px}.progress{height:7px;background:#edf0f5;border-radius:999px;overflow:hidden;margin-top:12px}.progress i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--blue),var(--blueLight))}.progress.green i{background:linear-gradient(90deg,var(--compris),#63bc88)}.progress.purple i{background:linear-gradient(90deg,var(--purple),#a88ae5)}.dashboardGrid{display:grid;grid-template-columns:minmax(0,1fr) 350px;gap:20px}.panelHead{padding:17px 19px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px}.panelHead h2{font-size:17px;margin:0}.panelBody{padding:18px 19px}
.sectionProgress{border:1px solid var(--line);border-radius:13px;padding:13px;margin-bottom:10px}.sectionTop{display:flex;gap:10px;align-items:flex-start}.sectionNum{width:30px;height:30px;border-radius:9px;background:var(--blueSoft);color:var(--blue);font-weight:850;display:grid;place-items:center;flex:0 0 auto}.sectionTop strong{font-size:13px}.sectionTop small{display:block;color:var(--muted);margin-top:3px}.miniGrid{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin-top:11px}.mini{background:#f6f8fb;border:0;border-radius:9px;padding:7px;text-align:center;font:inherit;color:inherit}.dashboardSectionLink{cursor:pointer;transition:background .14s ease,transform .14s ease}.dashboardSectionLink:hover{background:var(--blueSoft);transform:translateY(-1px)}.mini b{display:block;font-size:12px}.mini span{font-size:8px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.suggestion{border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:9px}.suggestion strong{font-size:13px}.suggestion p{font-size:12px;color:var(--muted);margin:4px 0 0}
.filterBar,.filters{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:16px}
.courseSectionChooserWrap{position:relative;background:#fff;border:1px solid var(--line);border-radius:14px 14px 0 0;padding:7px 8px}
.courseSectionChooser{width:100%;border:1px solid var(--line);background:#f8f9fc;border-radius:10px;padding:6px 10px;display:grid;grid-template-columns:28px minmax(0,1fr) 18px;gap:8px;align-items:center;text-align:left;color:#3f4958}
.courseSectionChooser:hover,.courseSectionChooser[aria-expanded="true"]{border-color:#9eb9df;background:#f2f6fd}
.courseSectionRoman{width:27px;height:27px;border-radius:8px;background:var(--blue);color:#fff;font-weight:850;display:grid;place-items:center;font-size:12px}
.courseSectionChooserCopy{min-width:0;display:block}
.courseSectionChooserLine{display:flex;align-items:baseline;gap:7px;min-width:0}
.courseSectionChooserCopy strong{display:block;font-size:12px;font-weight:800;line-height:1.25;white-space:normal;overflow-wrap:anywhere;min-width:0}
.courseSectionChooserCopy span{display:block;font-size:11px;color:var(--muted);font-weight:400;white-space:nowrap;flex:0 0 auto}
.courseSectionChevron{font-size:18px;color:#718099;transition:transform .15s;text-align:center}
.courseSectionChooser[aria-expanded="true"] .courseSectionChevron{transform:rotate(180deg)}
.courseSectionMenu{position:absolute;left:8px;right:8px;top:calc(100% - 4px);z-index:30;background:#fff;border:1px solid var(--line);border-radius:12px;padding:6px;box-shadow:0 18px 40px rgba(25,39,69,.18);max-height:min(430px,60vh);overflow:auto}
.courseSectionOption{width:100%;border:0;background:transparent;border-radius:9px;padding:9px 10px;text-align:left;color:#39475b;display:grid;grid-template-columns:30px minmax(0,1fr);gap:9px;align-items:start}
.courseSectionOption:hover{background:#f1f5fb}
.courseSectionOption.active{background:var(--blueSoft);color:var(--blue)}
.courseSectionOption .courseSectionRoman{background:#e7ebf2;color:#596476}
.courseSectionOption.active .courseSectionRoman{background:var(--blue);color:#fff}
.courseSectionOptionTitle{display:block;font-size:12px;font-weight:800;line-height:1.35;white-space:normal;overflow-wrap:anywhere}
.courseSectionOptionDay{display:block;font-size:10px;color:var(--muted);margin-top:3px}
/* Pas de cadre propre : la carte .courseFilterPanel encadre déjà (évite le « cadre dans un cadre ») */
.filterBar{background:transparent;border:0;border-radius:0;padding:0;margin-bottom:0;align-items:flex-start}
.filterGroup{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.filterGroup+.filterGroup{border-left:1px solid var(--line);padding-left:12px;margin-left:3px}
.filterLabel{font-size:9px;text-transform:uppercase;letter-spacing:.09em;color:#7b8798;font-weight:800;margin-right:1px}
.chip{border:1px solid var(--line);background:#fff;color:#596476;border-radius:999px;padding:7px 11px;font-size:12px;font-weight:750}
.chip.active{background:#17233a;border-color:#17233a;color:#fff}
.filters select{border:1px solid var(--line);background:#fff;border-radius:10px;padding:9px 11px}
.badge{display:inline-flex;align-items:center;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:750;background:#f0f2f6;color:#596272}
.badge.blue{background:var(--blueSoft);color:var(--blue)}.badge.green{background:var(--greenSoft);color:var(--green)}.badge.red{background:var(--redSoft);color:var(--red)}.badge.purple{background:var(--purpleSoft);color:var(--purple)}.badge.amber{background:var(--amberSoft);color:var(--amber)}
.courseQuestionBadge{display:inline-flex;align-items:center;border-radius:999px;padding:4px 8px;font-size:9px;font-weight:850;line-height:1.25;letter-spacing:.02em;white-space:nowrap}.courseQuestionBadge.withDemo,.courseQuestionBadge.withoutDemo{background:var(--colleSoft);color:var(--colle)}.courseQuestionBadgeRow{margin-top:6px}
.colleExerciseBadge{background:var(--colleSoft);color:var(--colle);white-space:nowrap}
.courseStatusToggle.colleCourseLabel{color:var(--colle)!important;font-weight:850}
.sectionHeading{display:flex;align-items:center;gap:11px;margin:22px 0 10px}.sectionHeading:first-child{margin-top:0}.sectionHeading h2{font-size:18px;margin:0}.sectionHeading small{color:var(--muted);display:block;margin-top:2px}.sectionHeadingTitle{flex:1 1 auto;min-width:0}.sectionHeadingDay{flex:0 0 auto;text-align:right;color:var(--muted);font-size:12px;font-weight:800;white-space:nowrap;margin-right:6px}
.objectCard{background:#fff;border:1px solid var(--line);border-radius:14px;display:grid;grid-template-columns:5px minmax(0,1fr);overflow:hidden;margin-bottom:6px}
.objectStripe{grid-column:1;grid-row:1;background:var(--blue)}.objectCard.result .objectStripe{background:var(--red)}.objectCard.methode .objectStripe{background:var(--purple)}.objectCard.remarque .objectStripe{background:var(--green)}.objectCard.question .objectStripe{background:var(--green)}
.objectInner{--cardPadV:3px;grid-column:2;padding:var(--cardPadV) 14px}.courseHeader{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;cursor:pointer;touch-action:manipulation}.courseTitleBlock{min-width:0}.courseTitleLine{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.courseTitle{font-weight:790;font-size:14px;color:var(--blue)}.objectCard.result .courseTitle{color:var(--red)}.objectCard.methode .courseTitle{color:var(--purple)}.objectCard.question .courseTitle{color:var(--green)}.objectCard.remarque .courseTitle{color:var(--green)}
.courseControls{display:flex;flex-direction:column;align-items:stretch;gap:6px;min-width:300px}.courseStatusRows{display:flex;flex-direction:column;gap:5px}.courseStatusRow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}
/* Connu / À revoir regroupés en un contrôle segmenté (|) collé au cadre de la carte à droite */
.stateSeg{display:inline-grid;grid-template-columns:1fr 1fr;width:150px;border:1px solid var(--line);border-right:0;border-radius:0;overflow:hidden}
.stateSeg .stateBtn{width:100%;border:0;border-radius:0;margin:0;white-space:nowrap;justify-content:center;padding:4px 6px}
.stateSeg .stateBtn+.stateBtn{border-left:1px solid var(--line)}
/* collé verticalement au bord de la carte : la 1re rangée touche le haut, la démo touche le bas (padding carte = 13/14px) */
.courseStatusRow .stateSeg{margin-right:-14px}
.courseStatementStatusRow .stateSeg{margin-top:-13px;border-top-left-radius:0}
.courseDemoStatusRow .stateSeg{margin-bottom:-13px;border-bottom-left-radius:0}
.courseStatusRowsWithoutDemo .courseStatementStatusRow .stateSeg{margin-bottom:-13px;border-bottom-left-radius:0}
/* segment étiré sur toute la hauteur de l'en-tête → il touche vraiment le haut et le bas du cadre */
.objectInner>.courseHeader{align-items:stretch}
.objectInner>.courseHeader>.courseTitleBlock{align-self:center}
.courseControls{justify-content:center}
.courseControls>.courseStatusRows{flex:1 1 auto}
.courseStatusRows>.courseStatusRow{flex:1 1 auto;align-items:stretch}
.courseStatusRow>.stateSeg{align-self:stretch}
.stateSeg .stateBtn{align-items:center}
/* Restructuration carte de cours : ligne titre (clic=énoncé) / ligne démonstration séparée (clic=démo) / exercices */
.courseRow{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:stretch}.courseRow[data-mode]{cursor:pointer}
.courseRowDemo{border-top:1px solid var(--line)}
.courseRowLabel{border:0;background:transparent;font:inherit;text-align:left;cursor:pointer;min-width:0;padding:3px 12px 3px 0}
.courseTitleBtn{font-size:15px;font-weight:800;color:var(--blue);line-height:1.25;padding-block:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.objectCard.result .courseTitleBtn{color:var(--red)}
.objectCard.methode .courseTitleBtn{color:var(--purple)}
.objectCard.question .courseTitleBtn,.objectCard.remarque .courseTitleBtn{color:var(--green)}

.courseDemoBtn{font-size:12px;font-weight:850;color:var(--red);align-self:center}
.courseDemoBtn.colleCourseFrame{border:1.5px solid var(--colle);border-radius:8px;padding:5px 10px;justify-self:start}
/* « Au programme de colle » : titre encadré (couleur Colles), et mot « Démonstration »
   encadré à part quand la démo est elle aussi exigible. Le texte garde sa couleur de type. */
.colleEncadre{display:inline-block;border:2px solid var(--colle);border-radius:8px;padding:1px 8px;line-height:1.35}

.courseRow .stateSeg{align-self:stretch;margin-right:-14px}
.courseRowTitle .stateSeg{margin-top:calc(-1 * var(--cardPadV))}
/* dernière rangée (rien en dessous) : le segment touche aussi le bas du cadre */
.objectInner>.courseRowTitle:last-child .stateSeg,.objectInner>.courseRowDemo:last-child .stateSeg{margin-bottom:calc(-1 * var(--cardPadV))}
/* à la barre de séparation entre deux segments, les coins qui se touchent sont carrés */
.courseObjectWithDemo .courseRowTitle .stateSeg{border-bottom-left-radius:0}
.courseRowDemo .stateSeg{border-top-left-radius:0}
/* trait des exercices/contenu aligné avec le bas du segment (pas de marge au-dessus) */
.objectInner>.courseLinkedExercises{margin-top:0;padding-top:3px}
#courseView .objectInner>.courseContent{margin-top:0}
.courseStatusToggle{border:0;background:transparent;border-radius:8px;padding:6px 7px;font-size:10px;font-weight:850;color:#647084;text-align:right;cursor:pointer}.courseStatusToggle:hover{background:#f1f4f8;color:#26344b}.courseStatusToggle.active{background:#17233a;color:#fff}.courseMissingDemo{margin-top:10px;border:1px dashed #d4a955;background:#fff8e8;border-radius:11px;padding:12px 14px;color:#805d16;display:flex;flex-direction:column;gap:3px}.courseMissingDemo strong{font-size:12px}.courseMissingDemo span{font-size:11px}
.stateBtn{border:1px solid var(--line);background:#fff;border-radius:9px;padding:6px 8px;font-size:10px;font-weight:750;color:#606b7c}.stateBtn.blueState.active{background:var(--blueSoft);border-color:#a9c6ed;color:var(--blue)}.stateBtn.blueState.corrected{background:var(--blue);border-color:var(--blue);color:#fff;cursor:default}.stateBtn.known.active{background:var(--greenSoft);border-color:#aad9bd;color:var(--green)}.stateBtn.review.active{background:var(--redSoft);border-color:#edbeb9;color:var(--red)}
.courseContent{border-top:1px solid var(--line);margin-top:12px;padding-top:12px}.courseContent img{display:block;max-width:100%;height:auto;margin:0 auto 10px;border-radius:9px}.questionText{color:#425066;font-size:13px;line-height:1.55;margin-top:10px}
.courseLinkedExercises{display:flex;flex-wrap:wrap;align-items:center;gap:5px 6px;margin-top:10px;padding-top:8px;border-top:1px solid var(--line)}.courseLinkedLabel{font-size:11px;font-weight:700;color:var(--muted);flex:0 0 auto;margin-right:2px}.linkedExBadge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:8px;background:var(--blueSoft);color:var(--blue);font-weight:850;cursor:pointer;border:1.5px solid transparent;white-space:nowrap;line-height:1.5;font:inherit;font-size:11px}.linkedExBadge:hover{border-color:var(--blue);background:#dce8fb}.linkedExParcoursBtn{margin-left:auto;display:inline-flex;align-items:center;gap:3px;padding:2px 9px;border-radius:8px;border:1.5px solid transparent;background:var(--blueSoft);color:var(--blue);font:inherit;font-size:11px;font-weight:850;cursor:pointer;white-space:nowrap;line-height:1.5}.linkedExParcoursBtn:hover{background:var(--blueSoft)}.linkedExParcoursBtn span{font-size:13px;font-weight:900}
/* Badge d'exercice lié = même code couleur d'état que le parcours (+ liseré si corrigé en classe) */
.linkedExBadge.st-white{background:#fff;border-color:var(--line);color:var(--blue)}
.linkedExBadge.st-blue{background:var(--blueSoft);border-color:transparent;color:var(--blue)}
.linkedExBadge.st-green{background:var(--greenSoft);border-color:transparent;color:var(--green)}
.linkedExBadge.st-red{background:var(--redSoft);border-color:transparent;color:var(--red)}
.linkedExBadge.st-white.corrige{border-color:var(--blue)}
.linkedExBadge.st-blue.corrige{border-color:var(--blue)}
.linkedExBadge.st-green.corrige{border-color:var(--green)}
.linkedExBadge.st-red.corrige{border-color:var(--red)}
.linkedExBadge.st-green .linkedExStars,.linkedExBadge.st-red .linkedExStars{color:inherit;opacity:.75}.linkedExStars{font-family:Georgia,serif;color:#d9a123;font-size:7px;line-height:1;letter-spacing:.5px}.exerciseList{display:block}.exerciseSectionHeading{margin-top:24px}.exerciseSectionHeading:first-child{margin-top:0}.exercise{background:#fff;border:1px solid var(--line);border-radius:15px;padding:14px;display:grid;grid-template-columns:48px 58px minmax(180px,1fr) minmax(0,auto) auto;gap:12px;align-items:center;cursor:pointer;touch-action:manipulation;transition:.15s;margin-bottom:11px}.exercise:hover{transform:translateY(-1px);box-shadow:0 9px 24px rgba(25,39,69,.09);border-color:#c6d5ec}.exIdentity{display:flex;align-items:center;justify-content:center}.exStarsMobile{display:none}.exNum,.exRow .num{width:43px;height:43px;border-radius:12px;background:var(--blueSoft);color:var(--blue);display:grid;place-items:center;font-weight:900;border:2px solid transparent}.exercise.colleExo .exTitle,.exRow.colleExo .title,.drawerTitleColle{display:inline-block;width:auto;border:2px solid var(--colle);border-radius:8px;padding:1px 8px}.exMain{min-width:0;display:flex;align-items:center;align-self:stretch;min-height:43px}.exerciseStars{width:58px;min-width:58px;display:inline-flex;justify-content:flex-start;gap:2px;line-height:1;font-size:17px;letter-spacing:0}.exerciseStar{display:inline-block;width:17px;text-align:center}.exerciseStar.filled{color:#e5a31c}.exerciseStar.empty{color:#b8c0cc}.exTitle{font-size:14px;font-weight:790;min-width:0;line-height:1.35;display:block;width:100%}.exTitle mjx-container{margin-top:0!important;margin-bottom:0!important;display:inline-block!important}.exMeta{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.exCompetences{display:flex;align-items:center;justify-content:flex-end;gap:5px;flex-wrap:wrap;max-width:330px}.exCompetences .badge{white-space:nowrap}.exStates{display:grid;grid-template-columns:repeat(2,auto);gap:5px}.exStates button{white-space:nowrap}.exStates .exColleCompact{display:none}
.drawerBackdrop{position:fixed;inset:0;background:rgba(7,14,27,.46);z-index:80;display:flex;justify-content:flex-end}.drawer{width:min(1040px,94vw);height:100%;background:#f7f8fc;box-shadow:-20px 0 60px rgba(14,24,43,.22);display:flex;flex-direction:column}.drawerHead{background:#fff;border-bottom:1px solid var(--line);padding:17px 20px;display:grid;grid-template-columns:54px minmax(0,1fr) 42px;gap:13px;align-items:center}.drawerNumberColumn{display:flex;flex-direction:column;align-items:center;gap:5px}.drawerStarsMobile{display:none}.drawerNumber{width:48px;height:48px;border-radius:13px;background:var(--blueSoft);color:var(--blue);font-size:19px;font-weight:900;display:grid;place-items:center;border:2px solid transparent}.drawerNumber.priority{background:var(--blue);color:#fff;border-color:var(--blue);box-shadow:0 0 0 3px var(--blueSoft)}.drawerHead h2{font-size:20px;margin:3px 0 5px}.drawerClose{border:0;background:#eef1f6;border-radius:11px;width:38px;height:38px;font-size:24px}.drawerScroll{padding:18px 20px 24px;overflow:auto}.relatedPanel{background:#fff;border:1px solid var(--line);border-radius:15px;padding:14px;margin-bottom:14px}.relatedPanel h3{font-size:13px;margin:0 0 10px}.relatedObject{border:1px solid var(--line);border-left:5px solid var(--blue);border-radius:12px;overflow:hidden;margin-top:8px;background:#fff}.relatedObject.result{border-left-color:var(--red)}.relatedObject.methode{border-left-color:var(--purple)}.relatedObject.remarque{border-left-color:var(--green)}.relatedObject.question{border-left-color:var(--green)}.relatedHeader{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:11px 12px}.relatedExpandable .relatedHeader{cursor:pointer}.relatedExpandable .relatedHeader:hover{background:rgba(0,91,211,.035)}.relatedExpandable .relatedHeader:focus-visible{outline:2px solid var(--blue);outline-offset:-2px}.relatedUnavailable .relatedHeader{cursor:default}.relatedChevron{margin-left:auto;color:#7c8798;font-size:20px;line-height:1;transition:transform .15s ease}.relatedHeader[aria-expanded="true"] .relatedChevron{transform:rotate(90deg);color:var(--blue)}.relatedHeader strong{font-size:12px;color:var(--blue)}.relatedObject.result .relatedHeader strong{color:var(--red)}.relatedObject.methode .relatedHeader strong{color:var(--purple)}.relatedObject.remarque .relatedHeader strong{color:var(--green)}.relatedObject.question .relatedHeader strong{color:var(--green)}.relatedContent{border-top:1px solid var(--line);padding:10px}.relatedContent img{display:block;max-width:100%;margin:auto}.relatedVirtualCard{padding:2px 3px}.relatedVirtualPrompt{font-size:12px;font-weight:700;color:#39465b;margin-bottom:8px}.relatedVirtualAnswer{font-size:13px;line-height:1.55;color:#17233a}.relatedVirtualAnswer ul{margin:6px 0 2px;padding-left:21px}.relatedVirtualAnswer p{margin:5px 0}.relatedVirtualSource{margin-top:9px;font-size:10px;color:#7c8798;font-weight:650}.tabs{display:flex;gap:4px;margin-bottom:10px}.tabs button{border:1px solid var(--line);background:#fff;padding:8px 13px;border-radius:10px;font-weight:750}.tabs button.active{background:#17233a;color:#fff;border-color:#17233a}.pdfDocument{background:#fff;border:1px solid var(--line);border-radius:15px;overflow:hidden}.pdfToolbar{padding:10px 12px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.pdfToolbar strong{font-size:12px}.pdfToolbar a{font-size:11px;color:var(--blue);text-decoration:none}.pdfFrame{width:100%;height:68vh;border:0;display:block}.drawerStates{background:#fff;border:1px solid var(--line);border-radius:14px;margin-top:12px;padding:11px;display:flex;gap:7px;flex-wrap:wrap}
.ankiLayout{display:grid;grid-template-columns:minmax(0,1fr);gap:18px}.flashcard{background:#fff;border:1px solid var(--line);border-radius:20px;min-height:470px;padding:25px;display:flex;flex-direction:column;justify-content:space-between;box-shadow:var(--shadow)}.flashcardMeta{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.flashcardMeta .tagCloud{justify-content:flex-end}.flashText{font-size:20px;line-height:1.55;margin-top:28px}.answer{border-top:1px solid var(--line);margin-top:24px;padding-top:22px;color:#25334a;line-height:1.55}.cardFoot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:25px}.cardFoot>div{display:flex;gap:8px}.tagCloud{display:flex;gap:6px;flex-wrap:wrap}.primary,.secondary,.dangerGhost{border-radius:10px;padding:8px 11px;font-weight:750}.primary{border:0;background:var(--blue);color:#fff}.secondary{border:1px solid var(--line);background:#fff;color:#394150}.dangerGhost{border:1px solid #efcfcc;background:#fff;color:#a33b33}.full{width:100%;margin-top:15px}.teacherPlaceholder{font-size:14px;line-height:1.65;max-width:850px}.toast{position:fixed;right:22px;bottom:22px;background:#17233a;color:#fff;border-radius:11px;padding:10px 14px;z-index:100;opacity:0;transform:translateY(8px);pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:none}

.ankiAssessment{border-top:1px solid var(--line);margin-top:20px;padding-top:18px}.ankiAssessmentPrompt{font-size:13px;font-weight:800;margin-bottom:10px;color:#39475b}.ankiRatingButtons{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.ankiRating{border:1px solid var(--line);background:#fff;border-radius:11px;padding:10px 8px;font-size:12px;font-weight:800;color:#526074}.ankiRating:hover{transform:translateY(-1px)}.ankiRating.known.active{background:var(--greenSoft);border-color:#9fd3b5;color:var(--green)}.ankiRating.almost.active{background:var(--blueSoft);border-color:#a9c6ed;color:var(--blue)}.ankiRating.review.active{background:var(--amberSoft);border-color:#e9c98b;color:var(--amber)}.ankiRating.unknown.active{background:var(--redSoft);border-color:#e9b4af;color:var(--red)}.primary:disabled,.secondary:disabled{opacity:.45;cursor:not-allowed}

.ankiTargetPanel{margin:0 0 10px;padding:9px 11px;border:1px solid var(--line);border-radius:13px;background:#fff;box-shadow:0 4px 14px rgba(31,50,86,.045)}
.ankiTargetPanel.ankiTargetPanelHidden{display:none}
.ankiSelectionToggle{display:none;align-items:center;justify-content:center;height:30px;padding:0 12px;border:1px solid #c0aadc;background:#fff;color:var(--purple);border-radius:10px;font:inherit;font-weight:850;cursor:pointer;white-space:nowrap;text-align:center}
.topbar[data-view="anki"] .ankiSelectionToggle{display:inline-flex}
.ankiSelectionToggle:hover{background:var(--purpleSoft)}
.ankiSelectionToggle.active{background:var(--purple);border-color:var(--purple);color:#fff}
.filterIcon{display:none;flex:0 0 auto}   /* desktop : libellé « Filtres » ; mobile : entonnoir seul (cf. @media) */
.ankiTargetRow{display:flex;align-items:center;gap:9px}.ankiTargetRow+.ankiTargetRow{margin-top:6px}.ankiTargetRow>span{flex:0 0 74px;color:var(--muted);font-size:9px;font-weight:850;text-transform:uppercase;letter-spacing:.055em}
.ankiTargetBadges{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.ankiTargetBadge{display:inline-flex;align-items:center;justify-content:space-between;gap:5px;width:108px;box-sizing:border-box;border:1px solid transparent;border-radius:999px;padding:4px 6px 4px 8px;background:#f1f3f6;color:#7b8492;font:inherit;font-size:10px;font-weight:850;line-height:1;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease}.ankiTargetBadge:hover{transform:translateY(-1px)}.ankiTargetBadge.absent{border-color:#d8dde5;background:#f1f3f6;color:#7b8492}
.ankiTargetCount{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 4px;border-radius:999px;background:rgba(255,255,255,.72);color:inherit;font-size:8px;font-weight:900;box-sizing:border-box}
.ankiTargetBadge.present.definition{border-color:#a9c6ed;background:var(--blueSoft);color:var(--blue)}.ankiTargetBadge.present.proposition,.ankiTargetBadge.present.proof,.ankiTargetBadge.present.oral{border-color:#e9b4af;background:var(--redSoft);color:var(--red)}.ankiTargetBadge.present.method{border-color:#cbbce9;background:var(--purpleSoft);color:var(--purple)}
.ankiTargetBadge.competence.present{border-color:#9fd3b5;background:var(--greenSoft);color:var(--green)}
.ankiTargetBadge.evaluation.present.unrated{border-color:#cbd1da;background:#eef0f4;color:#556174}.ankiTargetBadge.evaluation.present.known{border-color:#9fd3b5;background:var(--greenSoft);color:var(--green)}.ankiTargetBadge.evaluation.present.almost{border-color:#a9c6ed;background:var(--blueSoft);color:var(--blue)}.ankiTargetBadge.evaluation.present.review{border-color:#e9c98b;background:var(--amberSoft);color:var(--amber)}.ankiTargetBadge.evaluation.present.unknown{border-color:#e9b4af;background:var(--redSoft);color:var(--red)}
.ankiTargetBadge.pending{box-shadow:0 0 0 2px #fff,0 0 0 4px currentColor}
.ankiTargetIntent{margin:7px 0 0 83px;color:#536079;font-size:10px;font-weight:750}.ankiTargetIntent::before{content:"→ ";color:var(--purple)}
@media(max-width:620px){.ankiTargetPanel{padding:8px}.ankiTargetRow{align-items:flex-start;display:grid;grid-template-columns:1fr;gap:4px}.ankiTargetRow+.ankiTargetRow{margin-top:7px}.ankiTargetRow>span{flex-basis:auto}.ankiTargetBadges{gap:4px}.ankiTargetBadge{padding:5px 8px}.ankiTargetIntent{margin-left:0}}

@media(max-width:1180px){.exercise{grid-template-columns:48px 58px minmax(160px,1fr) auto}.exCompetences{grid-column:3;justify-content:flex-start;max-width:none}.exStates{grid-column:4;grid-row:1 / span 2}}
@media(max-width:1050px){.app{grid-template-columns:235px minmax(0,1fr)}.metricGrid{grid-template-columns:repeat(2,1fr)}.dashboardGrid,.ankiLayout{grid-template-columns:1fr}.exercise{grid-template-columns:45px 52px minmax(0,1fr)}.exerciseStars{width:52px;min-width:52px}.exCompetences{grid-column:3;justify-content:flex-start}.exStates{grid-column:3;display:flex;flex-wrap:wrap}.exMeta{margin-top:6px}}
@media(max-width:760px){.ankiRatingButtons{grid-template-columns:repeat(2,1fr)}.app{display:block}.sidebar{position:relative;height:auto}.topbar{position:relative;padding:12px 16px;height:auto}.topPill{display:none}.content{padding:17px}.courseSectionButton{min-width:155px;max-width:210px}.hero{grid-template-columns:1fr}.heroStats{align-items:stretch}.metricGrid{grid-template-columns:1fr}.courseHeader{align-items:flex-start;flex-direction:column}.courseControls{justify-content:flex-start}.drawer{width:100vw}.pdfFrame{height:62vh}}

.badge.locked{background:#f0f1f4;color:#6d7480;border:1px solid #d9dde4}.tabs button.hidden{display:none}.tabs button:disabled{opacity:.55;cursor:not-allowed}.lockedDocument{padding:34px 22px;text-align:center;background:#fff;color:var(--muted)}.lockedDocument strong{display:block;color:var(--text);margin-bottom:7px}

@media(max-width:900px){
  .courseHeader{grid-template-columns:1fr;align-items:start}
  .courseControls{min-width:0;width:100%}
  .courseStatusRow{grid-template-columns:minmax(0,1fr) auto}
  .courseStatusToggle{text-align:right}
  /* Objets avec démonstration : garder « titre | énoncé » sur une ligne, démo dessous. */
  .courseHeaderWithDemo{grid-template-columns:minmax(0,1fr) auto;align-items:center}
  .courseHeaderWithDemo .courseControls{width:auto;min-width:0}
  .courseHeaderWithDemo .courseStatusToggle{text-align:right}
}
@media(max-width:760px){
  .filterGroup{width:100%}
  .filterGroup+.filterGroup{border-left:0;border-top:1px solid var(--line);padding-left:0;padding-top:9px;margin-left:0}
}
@media(max-width:480px){
  .courseSectionChooser{grid-template-columns:28px minmax(0,1fr) 18px}
  .courseSectionChooserLine{flex-wrap:wrap;gap:3px 6px}
  .courseSectionChooserCopy span{font-size:10px}
  .courseStatusRow{grid-template-columns:minmax(0,1fr) auto}
  .courseStatusToggle{font-size:9px}
  .stateBtn{padding:6px 7px}
}
@media(max-width:620px){.exercise{grid-template-columns:48px minmax(0,1fr);gap:8px 10px;align-items:center}.exIdentity{grid-column:1;grid-row:1 / span 3;align-self:start;display:flex;flex-direction:column;align-items:center;gap:5px}.exIdentity .exNum{width:43px;height:43px}.exStarsMobile{display:block;width:43px}.exStarsMobile .exerciseStars{width:43px;min-width:43px;justify-content:center;font-size:12px;gap:0}.exStarsMobile .exerciseStar{width:13px}.exercise>.exerciseStars{display:none}.exMain{grid-column:2;grid-row:1;align-self:center}.exCompetences{grid-column:2;grid-row:2;justify-content:flex-start}.exStates{grid-column:2;grid-row:3;display:flex;align-items:center;flex-wrap:wrap}.exMeta{margin-top:6px}.drawerHead{grid-template-columns:58px minmax(0,1fr) 42px;align-items:start}.drawerNumberColumn{align-self:start}.drawerStarsMobile{display:block;width:54px}.drawerStarsMobile .exerciseStars{width:54px;min-width:54px;justify-content:center;font-size:13px;gap:0}.drawerStarsMobile .exerciseStar{width:15px}#drawerMeta>.exerciseStars{display:none}}


/* v19 — en-tête et recherche compacts */
.brand.brandText{display:block;padding:1px 8px 20px}.brand.brandText strong{display:block;font-size:15px;letter-spacing:.01em}.brand.brandText small{display:block;color:#97a6c5;margin-top:3px;font-size:12px}.sidebarSearch{max-width:none;flex:none;margin:0 0 18px}.sidebarSearch input{background:#18243b;border-color:#2d3b57;color:#fff;padding-top:10px;padding-bottom:10px}.sidebarSearch input::placeholder{color:#8392ad}.sidebarSearch span{color:#93a4c2}.topbar{height:56px;justify-content:flex-end}.mobileSearchToggle,.mobileSearchPanel{display:none}.mobileSearchToggle{border:1px solid var(--line);background:#fff;color:#3f4958;border-radius:10px;padding:8px 11px;font-weight:750;align-items:center;gap:7px}.mobileSearchPanel{width:100%}.mobileSearchPanel .search{max-width:none}.filterBar{min-height:48px}
@media(max-width:760px){.sidebarSearch{display:none}.topbar{position:sticky;top:0;min-height:34px;height:auto;padding:3px 14px;justify-content:space-between;flex-wrap:wrap;gap:8px}.mobileSearchToggle{display:inline-flex}.mobileSearchPanel:not(.hidden){display:block;order:3;flex-basis:100%;padding:2px 0 4px}.mobileSearchPanel .search input{padding-top:9px;padding-bottom:9px}.content{padding-top:14px}.brand.brandText{padding-bottom:14px}}

/* Refactorisation : aucun bandeau supérieur vide sur ordinateur. */
@media(min-width:761px){.topbar{display:none}}

/* Correctif alignement états exercices */
.exStates{align-items:center}.exStates .stateBtn,.drawerStates .stateBtn{height:auto;margin:0;overflow:visible;line-height:1.2;display:inline-flex;align-items:center;justify-content:center}

/* Mise en page stable des exercices et signature latérale */
.sidebar{display:flex;flex-direction:column}
.brand.brandText{order:99;margin-top:auto;padding:16px 8px 0;border-top:1px solid rgba(255,255,255,.09)}
.sidebarDivider{height:1px;margin:14px 8px 2px;background:rgba(255,255,255,.11)}
.globalNav [data-view="annualProgress"].active{background:#a8821a;color:#fff}.globalNav [data-view="resultats"].active{background:#a8821a;color:#fff}.globalNav [data-view="interros"].active{background:var(--interro);color:#fff}.globalNav [data-view="colles"].active{background:var(--colle);color:#fff}
/* Couleurs par catégorie — nav de chapitre */
.chapterNav [data-view="dashboard"].active{background:#a8821a;color:#fff}.chapterNav [data-view="course"].active{background:var(--red);color:#fff}.chapterNav [data-view="exercises"].active{background:var(--blue);color:#fff}.chapterNav [data-view="anki"].active{background:var(--purple);color:#fff}.chapterNav [data-view="chapterInterros"].active{background:var(--interro);color:#fff}.chapterNav [data-view="documents"].active{background:#14181f;color:#fff;box-shadow:inset 0 0 0 1px rgba(255,255,255,.28)}
.chapterNavLabel{margin-top:10px}
.chapterChooser:disabled,.chapterNav button:disabled{opacity:.5;cursor:not-allowed}

.exercise{
  grid-template-areas:"identity stars main competences states";
  align-items:center;
}
.exIdentity{grid-area:identity;align-self:center}
.exercise>.exerciseStars{grid-area:stars;align-self:center}
.exMain{grid-area:main;align-self:center}
.exCompetences{grid-area:competences;align-self:center}
.exStates{grid-area:states;display:flex;align-items:center;justify-content:flex-end;align-self:center;gap:5px;flex-wrap:wrap}
.exStates .stateBtn,.drawerStates .stateBtn{margin:0;align-self:center}

@media(max-width:1180px){
  .exercise{grid-template-areas:"identity stars main states" "identity stars competences states"}
  .exCompetences{grid-area:competences}
  .exStates{grid-area:states}
}
@media(max-width:1050px){
  .exercise{grid-template-areas:"identity stars main" "identity stars competences" "identity stars states"}
  .exCompetences{grid-area:competences}
  .exStates{grid-area:states;justify-content:flex-start}
}
@media(max-width:620px){
  .exercise{
    grid-template-columns:52px minmax(0,1fr);
    grid-template-areas:"identity main" "identity competences" "identity states";
    align-items:center;
  }
  .exIdentity{grid-area:identity;align-self:center;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px}
  .exercise>.exerciseStars{display:none}
  .exStarsMobile{display:block;width:48px}
  .exStarsMobile .exerciseStars{display:inline-flex;width:48px;min-width:48px;justify-content:center;font-size:12px;gap:0}
  .exStarsMobile .exerciseStar{width:14px}
  .exMain{grid-area:main;align-self:center;min-height:43px;display:flex;align-items:center}
  .exCompetences{grid-area:competences;align-self:center;justify-content:flex-start}
  .exStates{grid-area:states;align-self:center;justify-content:flex-start}
  .drawerHead{align-items:center}
  .drawerNumberColumn{align-self:center;justify-content:center}
}


/* Progression annuelle — synthèse globale indépendante du chapitre courant */
#annualProgressView .annualProgressTitle h1{color:var(--blue)}
.annualProgressLoading{padding:28px;border:1px dashed var(--line);border-radius:16px;background:#fff;color:var(--muted);text-align:center}
.annualProgressTableWrap{width:max-content;max-width:100%;overflow-x:auto;border:1px solid var(--line);border-radius:15px;background:#fff;box-shadow:var(--shadow)}
.annualProgressTable{width:770px;min-width:770px;border-collapse:separate;border-spacing:0;table-layout:fixed}
.annualProgressTable th,.annualProgressTable td{padding:10px;border-bottom:1px solid var(--line);vertical-align:middle}.annualProgressTable tr:last-child th,.annualProgressTable tr:last-child td{border-bottom:0}
.annualProgressTable thead th{background:#f7f9fd;color:var(--muted);font-size:10px;font-weight:850;line-height:1.15;text-align:center;text-transform:uppercase;letter-spacing:.05em}.annualProgressTable thead th:first-child,.annualProgressTable tbody th:first-child{width:310px;min-width:310px;max-width:310px}.annualProgressTable thead th:first-child{text-align:center;color:#111}.annualProgressTable thead th:nth-child(n+2){width:92px}.annualProgressTable thead th:nth-child(n+2),.annualProgressTable tbody td:nth-child(n+2){padding-left:4px;padding-right:4px}
.annualChapterIdentity{display:grid;grid-template-columns:35px minmax(0,1fr);align-items:center;gap:9px;min-width:0;text-align:left}
.annualChapterNumber{width:33px;height:33px;display:grid;place-items:center;border:0;border-radius:10px;background:var(--blueSoft);color:var(--blue);font:inherit;font-size:12px;font-weight:900;cursor:pointer}.annualChapterNumber:hover{background:#dceaff;box-shadow:0 0 0 2px rgba(20,95,201,.14)}.annualChapterNumber:disabled{color:#8b94a2;cursor:not-allowed;box-shadow:none}
.annualChapterIdentity>div{min-width:0}.annualChapterIdentity strong{display:block;color:#29384f;font-size:12px;line-height:1.3}
.annualAchievements{display:flex;align-items:center;gap:4px;flex-wrap:nowrap;margin-top:5px}.annualAchievement{appearance:none;display:inline-flex;align-items:center;padding:2px 5px;border:1px solid transparent;border-radius:999px;font-family:inherit;font-size:8px;font-weight:800;cursor:pointer}.annualAchievement:hover{transform:translateY(-1px)}.annualAchievement:focus-visible{outline:2px solid #b88716;outline-offset:1px}.annualAchievement.earned{background:linear-gradient(180deg,#fff3bd,#f2c85f);border-color:#d6a73b;color:#5f4100}.annualAchievement.locked{background:#f1f3f6;border-color:#d6dbe3;color:#7b8492}
.annualProgressMetricStack{display:grid;gap:3px;width:64px;max-width:64px;margin-inline:auto}.annualProgressMetric{appearance:none;width:100%;max-width:64px;margin:0;padding:1px 2px;border:0;border-radius:7px;background:transparent;font:inherit;cursor:pointer}.annualProgressMetric:hover{background:#f1f5fb}.annualProgressMetric:focus-visible,.annualProgressAction:focus-visible{outline:2px solid var(--blue);outline-offset:1px}.annualProgressMetric:disabled{cursor:not-allowed}
.annualProgressCount{display:flex;align-items:baseline;justify-content:center;color:#344055;line-height:1}.annualProgressCount strong{font-size:12px}.annualProgressCount small{font-size:9px;color:var(--muted);font-weight:750}
.annualProgressTrack{display:block!important;width:100%;height:6px;margin-top:5px;overflow:hidden;border-radius:999px;background:#dfe5ee;box-shadow:inset 0 0 0 1px rgba(22,34,54,.05)}
.annualProgressTrack i{display:block!important;height:100%;border-radius:inherit}
.annualProgressMetric.course .annualProgressCount strong{color:var(--red)}.annualProgressMetric.course .annualProgressTrack i{background:linear-gradient(90deg,var(--red),#ef7a7a)}
.annualProgressMetric.approached .annualProgressCount strong{color:var(--blue)}.annualProgressMetric.approached .annualProgressTrack i{background:linear-gradient(90deg,var(--blue),var(--blueLight))}
.annualProgressMetric.understood .annualProgressCount strong{color:var(--compris)}.annualProgressMetric.understood .annualProgressTrack i{background:linear-gradient(90deg,var(--compris),var(--comprisLight))}
.annualProgressMetric.anki .annualProgressCount strong{color:var(--purple)}.annualProgressMetric.anki .annualProgressTrack i{background:linear-gradient(90deg,var(--purple),#a88ae5)}
.annualProgressMetric.interro .annualProgressCount strong{color:var(--interro)}.annualProgressMetric.interro .annualProgressTrack i{background:linear-gradient(90deg,var(--interro),var(--interroLight))}
.annualProgressActions{display:flex;justify-content:center;min-height:18px}.annualProgressActions.empty{visibility:hidden}.annualProgressAction{border:1px solid #d6dce6;border-radius:6px;background:#f7f8fb;color:#596579;padding:3px 4px;font:inherit;font-size:7px;font-weight:850;line-height:1;text-transform:uppercase;white-space:nowrap;cursor:pointer}.annualProgressAction.action-review{border-color:rgba(190,43,43,.22);background:rgba(190,43,43,.065);color:var(--red)}.annualProgressAction.action-correct{border-color:rgba(15,91,216,.22);background:rgba(15,91,216,.065);color:var(--blue)}.annualProgressAction.action-understand{border-color:rgba(40,119,85,.22);background:rgba(40,119,85,.065);color:var(--compris)}.annualProgressAction.action-anki-review{border-color:rgba(111,73,189,.22);background:rgba(111,73,189,.075);color:var(--purple)}.annualProgressAction.action-interro-review{border-color:rgba(71,85,105,.22);background:rgba(71,85,105,.07);color:var(--interro)}.annualProgressAction.action-exreview{border-color:rgba(15,91,216,.22);background:rgba(15,91,216,.065);color:var(--blue)}.annualProgressAction:hover{filter:brightness(.96)}
/* Cellule Exercices fusionnée (annuelle) : barre segmentée, double compteur, capsules empilées (colonne de largeur uniforme) */
.annualProgressTable tbody td:nth-child(3) .annualProgressMetricStack,.annualProgressTable tbody td:nth-child(3) .annualProgressMetric{width:100%;max-width:none}
.annualTrackStacked{position:relative}
.annualTrackStacked i{position:absolute;left:0;top:0;height:100%;border-radius:inherit}
.annualTrackStacked .segApproached{background:linear-gradient(90deg,var(--blue),var(--blueLight));z-index:1}
.annualTrackStacked .segUnderstood{background:linear-gradient(90deg,var(--compris),var(--comprisLight));z-index:2}
.annualProgressMetric.exerciseCombined .annualProgressCount strong{font-size:11px}
.annualProgressMetric.exerciseCombined .ovUnderstood{color:var(--compris)}
.annualProgressMetric.exerciseCombined .ovApproached{color:var(--blue)}
.annualProgressMetric.exerciseCombined .ovDualSep{color:#b3bcca;font-size:10px;margin:0 1px}
.annualProgressActionsMulti{display:flex;flex-wrap:wrap;gap:3px;justify-content:center}.annualInterroCell,.annualColleCell{text-align:center}.annualInterroValue,.annualColleValue{display:inline-grid;place-items:center;min-width:28px;height:22px;padding:0 3px;border-radius:7px;background:#f1f3f6;color:#7b8492;font-size:10px;font-weight:850}.annualColleValue{background:#fbe7d2;color:var(--colle)}
@media(max-width:760px){
  .annualProgressTableWrap{width:100%;overflow:visible;border:0;background:transparent;box-shadow:none}.annualProgressTable{display:block;width:100%;min-width:0}.annualProgressTable thead{display:none}.annualProgressTable tbody{display:grid;gap:9px}.annualProgressTable tr{display:block;padding:10px;border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:0 5px 15px rgba(31,50,86,.05)}
  .annualProgressTable th,.annualProgressTable td{display:grid;grid-template-columns:105px minmax(0,1fr);align-items:center;gap:9px;padding:5px 0;border-bottom:0}.annualProgressTable th{display:block;padding-bottom:8px;border-bottom:1px solid var(--line)}.annualProgressTable td::before{content:attr(data-label);color:var(--muted);font-size:9px;font-weight:850;text-transform:uppercase;letter-spacing:.04em}
  .annualProgressTable thead th:first-child,.annualProgressTable tbody th:first-child{width:auto;min-width:0;max-width:none}
  .annualAchievements{flex-wrap:wrap}
  .annualProgressMetricStack{width:100%;max-width:none;margin:0}.annualProgressMetric{max-width:none}.annualProgressActions{justify-content:flex-end}.annualProgressCount{justify-content:center}.annualProgressTrack{display:block!important;height:6px!important;visibility:visible!important}.annualProgressTrack i{display:block!important}
}
@media(max-width:430px){.annualChapterIdentity{grid-template-columns:33px minmax(0,1fr)}.annualProgressTable th,.annualProgressTable td{grid-template-columns:92px minmax(0,1fr)}}

/* Synthèse des résultats annuels (S1 / S2 / Année) */
.annualSynthesisWrap{margin-bottom:18px;padding:14px 16px;border:1px solid var(--line);border-radius:15px;background:#fff;box-shadow:var(--shadow)}
.annualSynthesisTitle{margin:0 0 12px;color:var(--muted);font-size:9px;font-weight:850;text-transform:uppercase;letter-spacing:.07em}
.annualSynthesisPeriods{display:grid;gap:10px}
.synthPeriod{display:grid;grid-template-columns:62px 1fr;align-items:start;gap:10px}
.synthPLabel{padding-top:6px;color:#29384f;font-size:11px;font-weight:800;text-align:right}
.synthCards{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.synthCard{padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:#f7f9fd}
.synthCardDS{background:#fafafa;border-style:dashed;opacity:.65}
.synthCardTitle{margin-bottom:6px;color:#29384f;font-size:9px;font-weight:900;letter-spacing:.04em;text-transform:uppercase}
.synthCardSoon{display:inline-block;margin-left:4px;padding:0 4px;border-radius:4px;background:#eef1f6;color:#8a94a6;font-size:7px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;vertical-align:middle}
.synthRow{display:flex;align-items:baseline;justify-content:space-between;gap:4px;font-size:10px;color:var(--muted);line-height:1.7}
.synthValue{font-size:11px;font-weight:800}
.synthDash{color:#b0bac8}
.synthAvailable{color:var(--compris)}
@media(max-width:760px){
  .synthPeriod{grid-template-columns:1fr;gap:4px}
  .synthPLabel{text-align:left;padding-top:0;font-size:12px}
  .synthCards{grid-template-columns:repeat(2,1fr)}
}

/* Page Colles — suivi annuel autonome et local */
#collesView .collesTitle h1{color:var(--colle)}
.collesTitle{align-items:flex-end}
.collesSummary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:10px}
.collesSummaryItem{min-height:76px;padding:14px 16px;border:1px solid var(--line);border-radius:15px;background:#fff;box-shadow:var(--shadow);display:flex;flex-direction:column;justify-content:center}
.collesSummaryItem strong{font-size:20px;line-height:1.2;color:#28364d}
.collesSummaryItem span{margin-top:4px;color:var(--muted);font-size:10px;font-weight:750;text-transform:uppercase;letter-spacing:.045em}
.collesPrivacy{margin:0 0 18px;padding:9px 12px;border-radius:10px;background:var(--colleSoft);color:#9a3412;font-size:11px;line-height:1.45}
.collesBilan{margin:0 0 20px;padding:16px;border:1px solid #f6dcc1;border-radius:17px;background:linear-gradient(180deg,#fffaf5,#fff);box-shadow:0 7px 20px rgba(154,52,18,.06)}
.collesBilanHead{display:flex;align-items:end;justify-content:space-between;gap:12px;margin-bottom:12px}
.collesBilanHead h2{margin:0;color:#9a3412;font-size:18px}
.collesBilanHead p{margin:3px 0 0;color:var(--muted);font-size:11px}
.collesBilanSummary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:12px}
.collesBilanSummary>div{min-width:0;padding:10px 12px;border:1px solid #f3e0cf;border-radius:11px;background:#fff}
.collesBilanSummary span{display:block;margin-bottom:4px;color:#b45309;font-size:9px;font-weight:850;text-transform:uppercase;letter-spacing:.055em}
.collesBilanSummary strong{display:block;color:#344055;font-size:12px;line-height:1.35}
.collesMatrixScroll{overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:#fff}
.collesMatrix{width:100%;border-collapse:collapse;table-layout:fixed;font-size:10px}
.collesMatrix th,.collesMatrix td{height:30px;padding:4px;border-right:1px solid #edf0f5;border-bottom:1px solid #edf0f5;text-align:center;white-space:nowrap}
.collesMatrix tr:last-child th,.collesMatrix tr:last-child td{border-bottom:0}.collesMatrix th:last-child,.collesMatrix td:last-child{border-right:0}
.collesMatrix thead th{background:#fdf3ea;color:#9a5b3a;font-size:9px;font-weight:850}
.collesMatrix thead th span{display:block;line-height:1.15}.collesMatrix thead th span+span{margin-top:2px}
.collesMatrix th:first-child{width:92px;text-align:left;padding-left:9px}.collesMatrix th:nth-child(2){width:66px}.collesMatrix th:nth-child(3){width:38px}.collesMatrix th:nth-child(4){width:72px}
.collesMatrix tbody th{color:#344055;font-size:10px}.collesMatrixValue{font-weight:900;color:#697387}.collesMatrixValue.notEvaluated{color:#c3c8d0;font-weight:600}
.collesBilanLevel{display:inline-flex;align-items:center;justify-content:center;min-width:34px;min-height:23px;padding:0 6px;border-radius:999px;font-size:11px;white-space:nowrap}
.collesBilanLevel.veryStrong,.collesBilanLevel.strong{background:var(--greenSoft);color:var(--green)}
.collesBilanLevel.neutral{background:#f0f2f6;color:#5f6979}
.collesBilanLevel.weak,.collesBilanLevel.veryWeak{background:var(--redSoft);color:var(--red)}
.collesBilanLevel.notEvaluated{background:#f3f4f6;color:#7b8492;font-size:9px}
.collesMatrixValue.veryStrong,.collesMatrixValue.strong{color:var(--green)}.collesMatrixValue.weak,.collesMatrixValue.veryWeak{color:var(--red)}
.collesBilanMobile{display:none}
.collesList{display:grid;grid-template-columns:1fr;gap:12px}
.colleCard{min-width:0;padding:12px 15px;border:1px solid var(--line);border-radius:17px;background:#fff;box-shadow:0 7px 20px rgba(31,50,86,.06)}
.colleCardHead{display:flex;align-items:center;justify-content:space-between;gap:18px;padding-bottom:7px;border-bottom:1px solid var(--line)}
.colleCardHead h3{margin:0;font-size:14px;line-height:1.35;color:#29384f}
.colleCardHead h3 span{display:block}
.colleCardHead h3 span+span{margin-top:2px}
.colleCardControls{display:grid;justify-items:end;gap:2px;flex:0 0 255px}
.colleNote{display:flex;align-items:center;justify-content:flex-end;gap:7px;width:100%;color:#4d596d;font-size:12px;font-weight:850}
.colleNote>span{margin:0!important;color:#4d596d!important;font-size:12px!important;text-transform:none!important;letter-spacing:0!important}
.colleNote select{width:58px!important;height:25px!important;text-align:center;padding-block:0!important}
.colleCard label>span{display:block;margin-bottom:4px;color:#687589;font-size:9px;font-weight:850;text-transform:uppercase;letter-spacing:.055em}
.colleCard input,.colleCard select,.colleCard textarea{width:100%;min-width:0;box-sizing:border-box;border:1px solid #d8deea;border-radius:9px;background:#fbfcfe;color:#28364d;font:inherit;font-size:12px}
.colleCard input,.colleCard select{height:36px;padding:0 9px}
.colleCard select{padding-right:25px}
.colleCard textarea{display:block;padding:9px;resize:vertical;line-height:1.4}
.colleCard input:focus,.colleCard select:focus,.colleCard textarea:focus{outline:2px solid rgba(217,119,6,.18);outline-offset:1px;border-color:#f0a868}
.colleColleur{display:flex;align-items:center;justify-content:flex-end;gap:7px;width:100%;color:#4d596d;font-size:12px;font-weight:850}
.colleColleur>span{margin:0!important;color:#4d596d!important;font-size:12px!important;text-transform:none!important;letter-spacing:0!important;white-space:nowrap}
.colleColleur select{width:122px!important;height:25px!important;padding-block:0!important}
.colleReport{display:block;margin-top:10px}
.colleCompetences{margin:7px 0 0;padding:7px 0 0;border:0}
.colleCompetences>div{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:7px}
.colleCompetence>span{text-align:center}
.colleCompetence select{height:32px;padding-left:25px;text-align:center;text-align-last:center}.colleCompetence option{text-align:center}
@media(max-width:760px){
  .collesTitle{align-items:flex-start;gap:10px}
  .collesBilanSummary{grid-template-columns:1fr}
  .collesBilanMatrix{display:none}.collesBilanMobile{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .collesBilanCard{min-width:0;padding:11px;border:1px solid var(--line);border-radius:12px;background:#fff}
  .collesBilanCard header{display:flex;align-items:center;justify-content:space-between;gap:8px}.collesBilanCard h3{margin:0;font-size:12px;color:#344055}
  .collesBilanCard p{margin:5px 0 8px;color:var(--muted);font-size:10px}
  .collesMobileHistory{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:3px}
  .collesMobileValue{min-width:0;padding:3px 1px;border-radius:5px;background:#f5f6f8;text-align:center}.collesMobileValue small{display:block;min-height:16px;color:#929aa6;font-size:7px;line-height:1.1}.collesMobileValue small span{display:block}.collesMobileValue b{display:block;margin-top:1px;color:#606b7a;font-size:9px}
  .collesMobileValue.veryStrong,.collesMobileValue.strong{background:var(--greenSoft)}.collesMobileValue.veryStrong b,.collesMobileValue.strong b{color:var(--green)}
  .collesMobileValue.weak,.collesMobileValue.veryWeak{background:var(--redSoft)}.collesMobileValue.weak b,.collesMobileValue.veryWeak b{color:var(--red)}
  .colleCompetences>div{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media(max-width:480px){
  .collesTitle{display:grid;grid-template-columns:1fr}
  .collesSummary{grid-template-columns:1fr}.collesSummaryItem{min-height:64px}
  .collesBilan{padding:12px}.collesBilanMobile{grid-template-columns:1fr}
  .colleCard{padding:12px}.colleCardHead{align-items:flex-start;display:grid;grid-template-columns:1fr}.colleCardHead h3{font-size:12px}.colleCardControls{justify-self:stretch;width:100%}.colleNote,.colleColleur{justify-content:flex-end}
  .colleCompetences>div{grid-template-columns:repeat(2,minmax(0,1fr))}
}


/* Correctifs UI : sélecteur de chapitre unifié, signature basse et exercices stables */
.chapterChooserWrap{position:relative;margin:0 0 14px}
.chapterChooser{width:100%;border:1px solid #2d3b57;background:#18243b;color:#fff;border-radius:14px;padding:12px 13px;display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left;transition:.15s}
.chapterChooser:hover,.chapterChooser[aria-expanded="true"]{background:#1d2b46;border-color:#46618f}
.chapterChooserCopy{min-width:0;display:block}
.chapterChooserCopy small{display:block;color:#92a2c0;font-size:10px;text-transform:uppercase;letter-spacing:.1em;margin-bottom:4px}
.chapterChooserCopy strong{display:block;font-size:13px;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chapterChooserChevron{flex:0 0 auto;color:#9fb2d4;font-size:18px;transition:transform .15s}
.chapterChooser[aria-expanded="true"] .chapterChooserChevron{transform:rotate(180deg)}
.chapterMenu{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:50;background:#fff;border:1px solid var(--line);border-radius:13px;padding:6px;box-shadow:0 18px 45px rgba(7,14,27,.3);max-height:min(420px,55vh);overflow:auto}
.chapterMenuItem{width:100%;border:0;background:transparent;border-radius:9px;padding:9px 10px;text-align:left;color:#39475b;display:block}
.chapterMenuItem:hover{background:#f1f5fb}
.chapterMenuItem.active{background:var(--blueSoft);color:var(--blue)}
.chapterMenuItem small{display:block;font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:#7a8698;margin-bottom:2px}
.chapterMenuItem strong{display:block;font-size:12px;line-height:1.3}
.sidebar{display:flex;flex-direction:column}
.brand.brandText{order:99;margin-top:auto;padding:16px 8px 0;border-top:1px solid rgba(255,255,255,.09)}

/* Les quatre états restent sur la même ligne de base et à la même hauteur. */
.exStates,.drawerStates{align-items:center}
.exStates .stateBtn,.drawerStates .stateBtn{height:30px;min-height:30px;padding:0 9px!important;margin:0!important;line-height:1!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;vertical-align:middle;transform:none!important;overflow:visible}

/* Mobile portrait : numéro et étoiles forment une seule colonne ; le titre reste à droite. */
@media(max-width:620px){
  .exercise{grid-template-columns:54px minmax(0,1fr)!important;grid-template-areas:"identity main" "identity competences" "identity states"!important;gap:8px 10px!important;align-items:center!important}
  .exIdentity{grid-area:identity!important;grid-row:1 / span 3!important;align-self:center!important;display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;gap:5px!important}
  .exIdentity .exNum{flex:0 0 43px}
  .exStarsMobile{display:block!important;width:48px!important;line-height:1}
  .exStarsMobile .exerciseStars{display:inline-flex!important;width:48px!important;min-width:48px!important;justify-content:center!important;font-size:12px!important;gap:0!important}
  .exStarsMobile .exerciseStar{width:14px!important}
  .exercise>.exerciseStars{display:none!important}
  .exMain{grid-area:main!important;grid-column:2!important;grid-row:1!important;align-self:center!important;min-height:43px!important;display:flex!important;align-items:center!important}
  .exCompetences{grid-area:competences!important;grid-column:2!important;grid-row:2!important;align-self:center!important;justify-content:flex-start!important}
  .exStates{grid-area:states!important;grid-column:2!important;grid-row:3!important;align-self:center!important;justify-content:flex-start!important;display:flex!important;flex-wrap:wrap!important}
  .drawerNumberColumn{display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;gap:5px!important}
  .drawerStarsMobile{display:block!important;width:54px!important}
  #drawerMeta>.exerciseStars{display:none!important}
}


/* Couleurs explicites des intitulés et mise en valeur du total chapitre */
#sectionProgress .overviewTable thead th:nth-child(1),
#sectionProgress .overviewTable tbody td:nth-child(1)::before{color:var(--red)}
.annualProgressTable thead th:nth-child(2),
.annualProgressTable tbody td:nth-child(2)::before{color:var(--red)}
/* Table annuelle (6 colonnes après fusion) : Exercices(3) bleu · Anki(4) · Interro(5) · Colle(6) */
.annualProgressTable thead th:nth-child(3),
.annualProgressTable tbody td:nth-child(3)::before{color:var(--blue)}
.annualProgressTable thead th:nth-child(4),
.annualProgressTable tbody td:nth-child(4)::before{color:var(--purple)}
.annualProgressTable thead th:nth-child(5),
.annualProgressTable tbody td:nth-child(5)::before{color:var(--interro)}
.annualProgressTable thead th:nth-child(6),
.annualProgressTable tbody td:nth-child(6)::before{color:var(--colle)}
/* Vue d'ensemble « groupée » : Cours(1) rouge · Exercices(2) bleu · Anki(3) violet · Interros(4) vert */
#sectionProgress .overviewTable thead th:nth-child(2),
#sectionProgress .overviewTable tbody td:nth-child(2)::before{color:var(--blue)}
#sectionProgress .overviewTable thead th{text-align:center}
#sectionProgress .overviewTable thead th .overviewColHeader{text-align:center;display:block;width:100%}
#sectionProgress .overviewTable thead th:nth-child(3),
#sectionProgress .overviewTable tbody td:nth-child(3)::before{color:var(--purple)}
#sectionProgress .overviewTable thead th:nth-child(4),
#sectionProgress .overviewTable tbody td:nth-child(4)::before{color:var(--interro)}
/* Cadre bleu à bords carrés autour de la progression globale du chapitre : bande (N°·Titre·plage) + ligne des barres */
#sectionProgress .overviewTotalGroup>td{border-top:2px solid var(--blue)!important;border-left:2px solid var(--blue)!important;border-right:2px solid var(--blue)!important;border-radius:0}
#sectionProgress .overviewTotalRow>td{border-bottom:2px solid var(--blue)!important;border-radius:0}
#sectionProgress .overviewTotalRow>td:first-child{border-left:2px solid var(--blue)!important}
#sectionProgress .overviewTotalRow>td:last-child{border-right:2px solid var(--blue)!important}

/* Défis de TD : ligne neutre comme un exercice (version allégée). Plus de fond
   ni de bordure ambrés : l'identité « défi » tient au repère bleu sans numéro
   et à la capsule « Défi » de la colonne difficulté (voir challengeDifficulty). */
.exercise.priority.challenge .exNum{background:var(--blue);color:#fff;border-color:var(--blue)}
/* Défi : repère bleu clair sans numéro (remplace le badge ambré numéroté). */
.exNum.challengeMarker,.drawerNumber.challengeMarker,.exRow .num.challengeMarker{background:var(--blueSoft);border-color:transparent;color:transparent}
.exNum.challengeMarker::after,.drawerNumber.challengeMarker::after,.exRow .num.challengeMarker::after{content:"";width:9px;height:9px;border-radius:50%;background:var(--blue)}
/* Défi en liste : le point prend la teinte de l'état (le fond porte aussi l'état) */
.exNum.challengeMarker.st-green::after{background:var(--green)}
.exNum.challengeMarker.st-red::after{background:var(--red)}
/* État de l'exercice porté par le numéro : remplissage = progression élève,
   anneau (même teinte saturée que le fond) = « corrigé » (prof). */
.exNum[data-num-toggle]{cursor:pointer}
.exNum.st-white{background:#fff;border-color:#fff;color:var(--blue)}
.exNum.st-blue{background:var(--blueSoft);border-color:transparent;color:var(--blue)}
.exNum.st-green{background:var(--greenSoft);border-color:transparent;color:var(--green)}
.exNum.st-red{background:var(--redSoft);border-color:transparent;color:var(--red)}
.exNumMenu{position:fixed;z-index:90;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 14px 36px rgba(25,39,69,.18);padding:6px;min-width:178px}
.exNumMenu button{display:flex;align-items:center;gap:9px;width:100%;border:0;background:transparent;border-radius:8px;padding:8px 10px;font:inherit;font-size:13px;font-weight:750;color:#39475b;text-align:left;cursor:pointer}
.exNumMenu button:hover{background:#f1f5fb}
.exNumMenu button.on{color:#17233a}
.exNumMenu .dot{width:15px;height:15px;border-radius:50%;border:2px solid transparent;flex:0 0 auto}
.exNumMenu .dot.st-white{background:#fff;border-color:#cdd6e3}
.exNumMenu .dot.st-blue{background:var(--blue)}
.exNumMenu .dot.st-green{background:var(--green)}
.exNumMenu .dot.st-red{background:var(--red)}
.exNumMenu .check{margin-left:auto;color:var(--blue);font-weight:900}
.exNumMenu .sep{height:1px;background:var(--line);margin:5px 4px}
.exNumMenu .exNumMenuNote{margin-top:5px;padding:6px 10px 2px;font-size:11px;color:var(--muted);border-top:1px solid var(--line)}
.exNum.st-white.corrige{border-color:var(--blue)}
.exNum.st-blue.corrige{border-color:var(--blue)}
.exNum.st-green.corrige{border-color:var(--green)}
.exNum.st-red.corrige{border-color:var(--red)}

/* Documents publics du chapitre */
.documentGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:18px}
.documentCard{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-areas:"icon copy" "actions actions";gap:14px 16px;align-items:start;padding:22px;border:1px solid var(--line);border-radius:18px;background:var(--panel);box-shadow:var(--shadow)}
.documentIcon{grid-area:icon;display:grid;place-items:center;width:48px;height:48px;border-radius:14px;background:var(--blueSoft);color:var(--blue);font-size:1.45rem;font-weight:800}
.documentCopy{grid-area:copy;min-width:0}
.documentKind{display:block;margin-bottom:5px;color:var(--blue);font-size:.76rem;font-weight:800;letter-spacing:.055em;text-transform:uppercase}
.documentCopy h2{margin:0;font-size:1.08rem;line-height:1.32}
.documentCopy p{margin:8px 0 0;color:var(--muted);font-size:.92rem;line-height:1.5}
.documentCopy small{display:block;margin-top:9px;color:var(--muted);overflow-wrap:anywhere}
.documentActions{grid-area:actions;display:flex;gap:10px;justify-content:flex-end;padding-top:2px}
.documentActions a{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:0 15px;border-radius:10px;font-size:.9rem;font-weight:750;text-decoration:none}
.documentActions .primaryAction{background:var(--blue);color:#fff}
.documentActions .secondaryAction{border:1px solid var(--line);background:#fff;color:var(--text)}
.documentActions a:hover{filter:brightness(.97);transform:translateY(-1px)}
.documentEmpty{grid-column:1/-1;padding:28px;border:1px dashed var(--line);border-radius:18px;background:var(--panel);color:var(--muted)}
.documentEmpty strong{color:var(--text)}
.documentEmpty p{margin:8px 0 0;line-height:1.5}
@media(max-width:620px){.documentGrid{grid-template-columns:1fr}.documentCard{padding:18px}.documentActions{justify-content:stretch}.documentActions a{flex:1;padding-inline:10px}}


/* Indications progressives des exercices */
.hintsDocument{padding:18px;display:flex;flex-direction:column;gap:12px;background:#fbfcff;min-height:280px}
.hintsIntro{border-left:3px solid var(--purple);padding:4px 0 4px 12px}
.hintsIntro strong{color:var(--purple);font-size:1rem}
.hintsIntro p{margin:4px 0 0;color:var(--muted);font-size:.88rem}
.hintCard{display:grid;grid-template-columns:34px minmax(0,1fr);gap:11px;align-items:start;padding:15px;border:1px solid #ddd5f5;border-radius:14px;background:#fff;box-shadow:0 4px 14px rgba(72,49,126,.05)}
.hintNumber{width:30px;height:30px;display:grid;place-items:center;border-radius:9px;background:var(--purpleSoft);color:var(--purple);font-weight:850}
.hintContent{min-width:0;line-height:1.55;overflow-wrap:anywhere}
.hintContent> :first-child{margin-top:0}.hintContent> :last-child{margin-bottom:0}
.hintContent ul,.hintContent ol{margin:.55em 0 .2em;padding-left:1.4em}.hintContent li+li{margin-top:.3em}
.hintContent mjx-container[display="true"]{overflow-x:auto;overflow-y:hidden;padding:.2em 0}
/* Base globale : réduit l'aération verticale de MathJax display (défaut 1em) partout ; les surcouches scopées (interro .12em, cartes .3em) restent prioritaires */
mjx-container[display="true"]{margin:.3em 0!important}
.hintNext{align-self:flex-start;border:0;border-radius:10px;background:var(--purple);color:#fff;padding:10px 13px;font-weight:800;display:inline-flex;align-items:center;gap:9px}
.hintNext span{font-size:.75rem;opacity:.78}.hintNext:hover{filter:brightness(.96)}
.hintComplete{color:var(--green);font-size:.88rem;font-weight:750;padding:4px 1px}
@media(max-width:620px){.hintsDocument{padding:13px}.hintCard{grid-template-columns:30px minmax(0,1fr);padding:12px;gap:9px}.hintNumber{width:27px;height:27px}.hintNext{width:100%;justify-content:center}}

.latexImage,.foldableImage{cursor:pointer}.foldableImage.imgFolded{display:none!important}
.imagePreviewBackdrop{position:fixed;inset:0;background:rgba(8,13,26,.82);z-index:140;display:flex;align-items:center;justify-content:center;padding:20px}.imagePreviewBackdrop.hidden{display:none}.imagePreviewDialog{position:relative;max-width:min(96vw,1800px);max-height:92vh;width:auto}.imagePreviewClose{position:absolute;top:-14px;right:-14px;width:40px;height:40px;border:0;border-radius:999px;background:#fff;color:#162035;font-size:28px;line-height:1;box-shadow:0 8px 28px rgba(0,0,0,.28)}.imagePreviewBody{background:#fff;border-radius:18px;padding:14px 14px 10px;box-shadow:0 20px 60px rgba(0,0,0,.28)}.imagePreviewImage{display:block;max-width:min(92vw,1700px);max-height:calc(92vh - 56px);width:auto;height:auto;margin:0 auto}.imagePreviewHint{text-align:center;font-size:12px;color:#5d6980;margin-top:8px}

@media(max-width:620px){.sectionProgress .miniGrid{grid-template-columns:repeat(2,1fr)}}

/* Dashboard orienté vers les actions restantes */
.dashboardActionStack{display:grid;gap:14px;margin:21px 0 17px}.dashboardActionPanel{margin:0}.panelSubtitle{margin:4px 0 0;color:var(--muted);font-size:12px}.actionQueueGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.actionQueue{appearance:none;border:1px solid var(--line);border-radius:12px;background:#fff;padding:13px 14px;text-align:left;font:inherit;color:inherit;cursor:pointer;min-width:0;transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease}.actionQueue:hover{transform:translateY(-1px);box-shadow:0 7px 18px rgba(31,50,86,.07)}.actionQueue>span{display:block;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.045em;color:var(--muted)}.actionQueue strong{display:block;font-size:27px;line-height:1;margin:8px 0 6px}.actionQueue small{display:block;color:var(--muted);font-size:10px;line-height:1.35}.actionQueue.action-review{border-color:rgba(190,43,43,.24);background:rgba(190,43,43,.035)}.actionQueue.action-understand{border-color:rgba(35,131,79,.23);background:rgba(35,131,79,.035)}.actionQueue.action-correct{border-color:rgba(15,91,216,.22);background:rgba(15,91,216,.035)}.actionQueue.action-start{background:#f8f9fb}.actionQueue.action-course-not-known{border-color:rgba(15,91,216,.18);background:rgba(15,91,216,.03)}.actionQueue.action-anki-unrated{border-color:rgba(111,73,189,.18);background:rgba(111,73,189,.03)}.actionQueue.action-anki-review{border-color:rgba(111,73,189,.28);background:rgba(111,73,189,.055)}.dashboardSectionPanel{margin-top:8px}.dashboardBlockTitle{display:flex;align-items:end;justify-content:space-between;gap:16px;margin:18px 2px 9px}.dashboardBlockTitle h2{font-size:17px;margin:0}.dashboardBlockTitle p{font-size:12px;color:var(--muted);margin:0}.sectionHeadingCopy{min-width:0;flex:1}.sectionCompletion{margin-left:auto;color:var(--muted);font-size:10px;white-space:nowrap;padding-top:2px}.actionMiniGrid{grid-template-columns:repeat(3,1fr)}.actionMiniGrid .mini{min-height:54px}.mini small{display:block;margin-top:2px;font-size:8px;color:var(--muted)}.mini.action-review{background:rgba(190,43,43,.055)}.mini.action-understand{background:rgba(35,131,79,.055)}.mini.action-correct{background:rgba(15,91,216,.055)}.mini.action-start{background:#f6f8fb}.actionQueue:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
@media(max-width:900px){.actionQueueGrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.dashboardBlockTitle{display:block}.dashboardBlockTitle p{margin-top:3px}.actionQueueGrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.actionQueue{padding:11px}.actionQueue strong{font-size:23px}.actionMiniGrid{grid-template-columns:repeat(2,1fr)}}


/* Vue d’ensemble : progression intégrée aux titres */
.dashboardActionStack{gap:10px;margin:14px 0 16px}
.dashboardKnowledgeBody{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));padding:11px 14px;gap:0}
.knowledgeActionGroup{min-width:0;padding:0 13px}.knowledgeActionGroup:first-child{padding-left:0}.knowledgeActionGroup:last-child{padding-right:0;border-left:1px solid var(--line)}
.dashboardGroupHeader,.dashboardExercisesHead{display:flex;align-items:center;justify-content:space-between;gap:12px}.dashboardGroupHeader{margin-bottom:7px}.dashboardGroupHeader h2,.dashboardExercisesHead h2{font-size:15px;margin:0;text-align:left}
.dashboardGroupHeader[data-dashboard-view],.dashboardExercisesHead[data-dashboard-view]{cursor:pointer}
.knowledgeActionButtons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
.dashboardExercisesPanel .panelHead{padding:9px 14px}.dashboardExercisesPanel .panelBody{padding:10px 14px}
.dashboardExerciseProgress{display:grid;grid-template-columns:repeat(2,minmax(135px,1fr));gap:12px;width:min(390px,60%)}
.inlineProgressMetric{appearance:none;border:0;background:transparent;padding:0;min-width:138px;font:inherit;color:inherit;text-align:left;cursor:pointer}.inlineProgressMetric:hover .inlineProgressLabel{color:var(--blue)}
.inlineProgressLabel{display:block;color:var(--muted);font-size:10px;line-height:1.15;white-space:nowrap;transition:color .14s ease}.inlineProgressLabel strong{font-size:13px;color:var(--text)}.inlineProgressLabel small{font-size:10px;color:inherit;margin-left:1px}
.inlineProgressTrack{display:block;width:100%;height:4px;margin-top:4px;border-radius:999px;overflow:hidden;background:#edf0f5}.inlineProgressTrack i{display:block;height:100%;width:0;border-radius:inherit;background:linear-gradient(90deg,var(--blue),var(--blueLight))}.inlineProgressGreen .inlineProgressTrack i{background:linear-gradient(90deg,var(--compris),#63bc88)}.inlineProgressPurple .inlineProgressTrack i{background:linear-gradient(90deg,var(--purple),#a88ae5)}
.actionQueue{padding:9px 11px}.actionQueue>span{font-size:10px}.actionQueue strong{font-size:23px;margin:6px 0 0}
.dashboardSectionPanel{margin-top:8px}.sectionProgress{padding:9px 10px;margin-bottom:8px}.sectionTop{align-items:center}.sectionTop small{margin-top:1px}.sectionNum{width:28px;height:28px}.sectionDashboardRows{display:grid;gap:7px;margin-top:8px}
.sectionProgressTrack{display:block;width:100%;height:3px;margin-top:3px;border-radius:999px;overflow:hidden;background:#edf0f5}.sectionProgressTrack i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--blue),var(--blueLight))}
.inlineProgressMetric:focus-visible{outline:2px solid var(--blue);outline-offset:3px;border-radius:4px}
@media(max-width:900px){.dashboardExerciseProgress{width:min(360px,68%)}.sectionExerciseProgress{width:min(300px,78%)}}
@media(max-width:760px){.dashboardKnowledgeBody{grid-template-columns:1fr;gap:10px}.knowledgeActionGroup{padding:0}.knowledgeActionGroup:last-child{border-left:0;border-top:1px solid var(--line);padding-top:10px}.dashboardExercisesHead{align-items:flex-start;flex-direction:column}.dashboardExerciseProgress{width:100%}.sectionKnowledgeGrid{grid-template-columns:1fr}.sectionKnowledgeGroup:nth-child(2){border-top:1px solid var(--line);padding-top:6px}.sectionExercisesGroup{grid-column:auto}.sectionExerciseProgress{width:min(320px,75%)}}
@media(max-width:520px){.dashboardGroupHeader{align-items:flex-start;flex-direction:column;gap:5px}.inlineProgressMetric{width:100%}.dashboardExerciseProgress{grid-template-columns:1fr;gap:7px}.sectionGroupHeader{align-items:flex-start;flex-direction:column;gap:4px}.sectionInlineProgress{width:100%}.sectionInlineProgress>span:first-child{text-align:left}.sectionExerciseProgress{grid-template-columns:1fr;width:100%;gap:5px}.sectionRowGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.sectionActionButton{min-height:32px}.sectionProgress{padding:8px}}


/* v1.3.0 — titres et mini-barres regroupés et centrés */
.dashboardGroupHeader,.dashboardExercisesHead,.sectionGroupHeader{
  justify-content:center;
  flex-wrap:wrap;
  text-align:center;
}
.dashboardGroupHeader h2,.dashboardExercisesHead h2,.sectionGroupHeader h4{
  text-align:center;
  flex:0 0 auto;
}
.dashboardGroupHeader .inlineProgressMetric{
  flex:0 1 150px;
  width:auto;
  min-width:125px;
}
.dashboardExercisesHead{
  flex-direction:row;
  align-items:center;
}
.dashboardExerciseProgress{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  align-items:center;
  gap:12px;
  width:auto;
}
.dashboardExerciseProgress .inlineProgressMetric{
  flex:0 1 150px;
}
.sectionGroupHeader{
  align-items:center;
}
.sectionInlineProgress{
  flex:0 1 138px;
  width:auto;
}
.sectionInlineProgress>span:first-child{
  text-align:center;
}
.sectionExerciseProgress{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  align-items:center;
  gap:10px;
  width:auto;
}
.sectionExerciseProgress .sectionInlineProgress{
  flex:0 1 132px;
  width:auto;
}
@media(max-width:760px){
  .dashboardExercisesHead{
    flex-direction:row;
    align-items:center;
    justify-content:center;
  }
  .dashboardExerciseProgress,.sectionExerciseProgress{
    width:auto;
  }
}
@media(max-width:520px){
  .dashboardGroupHeader,.dashboardExercisesHead,.sectionGroupHeader{
    flex-direction:row;
    align-items:center;
    justify-content:center;
    gap:7px;
  }
  .dashboardGroupHeader .inlineProgressMetric,
  .dashboardExerciseProgress .inlineProgressMetric{
    flex:0 1 138px;
    width:auto;
  }
  .dashboardExerciseProgress,.sectionExerciseProgress{
    grid-template-columns:none;
    width:auto;
    gap:7px;
  }
  .sectionInlineProgress,
  .sectionExerciseProgress .sectionInlineProgress{
    flex:0 1 124px;
    width:auto;
  }
  .sectionInlineProgress>span:first-child{
    text-align:center;
  }
}


/* v1.3.1 — les deux progressions des exercices restent côte à côte */
.dashboardExerciseProgress{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
  width:min(330px,100%);
  flex:0 1 330px;
}
.dashboardExerciseProgress .inlineProgressMetric{
  width:100%;
  min-width:0;
  max-width:none;
}
.sectionExerciseProgress{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px;
  width:min(275px,100%);
  flex:0 1 275px;
}
.sectionExerciseProgress .sectionInlineProgress{
  width:100%;
  min-width:0;
  max-width:none;
}
@media(max-width:520px){
  .dashboardExerciseProgress,
  .sectionExerciseProgress{
    grid-template-columns:repeat(2,minmax(0,1fr));
    width:100%;
  }
  .dashboardExerciseProgress{gap:8px}
  .sectionExerciseProgress{gap:6px}
  .dashboardExerciseProgress .inlineProgressLabel,
  .sectionExerciseProgress .sectionInlineProgress>span:first-child{
    white-space:normal;
  }
}

/* v1.3.3 — cartes du cours compactes sur mobile */
.courseLabelMobile,.courseQuestionBadgeShort{display:none}.colleExerciseBadgeShort{display:none}
@media(max-width:760px){
  .objectInner{padding:var(--cardPadV) 12px}
  .courseHeader.courseHeaderWithoutDemo{
    grid-template-columns:minmax(0,1fr) auto;
    align-items:center;
    gap:8px;
  }
  .courseHeaderWithoutDemo .courseControls{
    width:auto;
    min-width:0;
  }
  .courseHeaderWithoutDemo .courseStatusRows,
  .courseHeaderWithoutDemo .courseStatusRow{
    display:flex;
    align-items:center;
    flex-direction:row;
    gap:4px;
  }
  .courseHeaderWithoutDemo .courseStatusToggle{
    display:none;
  }
  .courseHeaderWithDemo{
    grid-template-columns:minmax(0,1fr);
    align-items:start;
    gap:7px;
  }
  .courseHeaderWithDemo .courseControls{
    width:100%;
    min-width:0;
  }
  .courseHeaderWithDemo .courseStatusRows{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    align-items:center;
    gap:5px;
  }
  .courseHeaderWithDemo .courseStatusRow{
    display:grid;
    grid-template-columns:auto auto auto;
    align-items:center;
    justify-content:start;
    gap:3px;
    min-width:0;
  }
  .courseHeaderWithDemo .courseStatusToggle{
    min-width:0;
    padding:4px 2px;
    font-size:8.5px;
    line-height:1.1;
    text-align:left;
    white-space:nowrap;
  }
  .courseHeaderWithDemo .stateBtn{
    min-width:0;
    padding:4px 5px;
    font-size:8.5px;
    line-height:1.1;
    white-space:nowrap;
  }
  .courseHeaderWithoutDemo .stateBtn{
    padding:5px 6px;
    font-size:9px;
    white-space:nowrap;
  }
  .courseLabelDesktop,.courseQuestionBadgeLong{display:none}
  .courseLabelMobile,.courseQuestionBadgeShort{display:inline}
  .colleExerciseBadgeLong{display:none}.colleExerciseBadgeShort{display:inline}
  .courseQuestionBadge{padding:3px 6px;font-size:8px}
}
@media(max-width:380px){
  .objectInner{padding-inline:9px}
  .courseHeader.courseHeaderWithoutDemo{gap:5px}
  .courseHeaderWithDemo .courseStatusRows{gap:3px}
  .courseHeaderWithDemo .courseStatusRow{gap:2px}
  .courseHeaderWithDemo .courseStatusToggle,
  .courseHeaderWithDemo .stateBtn{font-size:8px;padding-inline:3px}
  .courseHeaderWithoutDemo .stateBtn{font-size:8.5px;padding-inline:5px}
}

/* v1.3.7 — bandeau mobile compact de la vue Cours */
.courseMobileFilterBar{display:none}
@media(max-width:760px){
  #courseView .courseSectionChooserWrap{
    display:none;
  }
  .courseMobileFilterBar{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:5px;
    padding:6px;
    background:#fff;
    border:1px solid var(--line);
    border-radius:12px;
  }
  .courseMobileFilterBar select{
    display:block;
    width:100%;
    min-width:0;
    height:36px;
    margin:0;
    padding:0 25px 0 9px;
    border:1px solid var(--line);
    border-radius:9px;
    background-color:#f8f9fc;
    color:#354155;
    font-size:11px;
    font-weight:800;
    text-overflow:ellipsis;
  }
  .courseMobileFilterBar select:focus{
    outline:2px solid rgba(20,95,201,.2);
    outline-offset:1px;
    border-color:#8eb0df;
  }
}
@media(max-width:380px){
  .courseMobileFilterBar{gap:4px;padding:5px}
  .courseMobileFilterBar select{
    height:34px;
    padding-left:7px;
    padding-right:20px;
    font-size:10px;
  }
}

/* v1.4.0 — reprise guidée, bandeau mobile visible et fixe */
.dashboardResumeRow{display:flex;justify-content:flex-start;gap:10px;flex-wrap:nowrap;width:var(--overviewWidth);max-width:100%;margin:14px 0 18px}
.parcoursLaunchBtn{flex:1 1 0;min-width:0;display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:44px;padding:10px 8px;border:1.5px solid;border-radius:13px;background:#fff;font:inherit;font-size:13.5px;font-weight:850;cursor:pointer;transition:background .14s ease;white-space:nowrap}
@media(max-width:620px){.dashboardResumeRow{flex-wrap:wrap}.parcoursLaunchBtn{flex:1 1 100%}}
.parcoursLaunchBtn .parcoursLaunchIcon{font-size:11px}
.parcoursLaunchBtn.course{border-color:var(--red);color:var(--red)}
.parcoursLaunchBtn.course:hover{background:var(--redSoft)}
.parcoursLaunchBtn.exercises{border-color:var(--blue);color:var(--blue)}
.parcoursLaunchBtn.exercises:hover{background:var(--blueSoft)}
.parcoursLaunchBtn.anki{border-color:var(--purple);color:var(--purple)}
.parcoursLaunchBtn.anki:hover{background:var(--purpleSoft)}
.resumeButton{display:flex;align-items:center;justify-content:center;gap:10px;min-height:44px;max-width:560px;width:100%;padding:9px 15px;border:1px solid #b9cbea;border-radius:13px;background:#fff;color:#243247;box-shadow:0 5px 18px rgba(31,50,86,.05);transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease}
.resumeButton:not(:disabled):hover{transform:translateY(-1px);border-color:#7da3dc;box-shadow:0 9px 24px rgba(31,50,86,.09)}
.resumeButton:focus-visible{outline:2px solid var(--blue);outline-offset:3px}
.resumeButton:disabled{cursor:default;opacity:.65}
.resumeButtonLead{font-size:11px;text-transform:uppercase;letter-spacing:.09em;color:var(--blue);font-weight:850}
.resumeButton strong{font-size:13px;text-align:center}
.resumeButtonArrow{font-size:18px;color:var(--blue);line-height:1}

@media(max-width:900px){
  #courseView .courseSectionChooserWrap{display:none!important}
  #courseView .courseMobileFilterBar{
    display:grid!important;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:5px;
    padding:6px;
    background:rgba(255,255,255,.97);
    backdrop-filter:blur(10px);
    border:1px solid var(--line);
    border-radius:12px;
  }
  #courseView .courseMobileFilterBar select{
    display:block!important;
    visibility:visible!important;
    opacity:1!important;
  }
}
@media(max-width:760px){
  .dashboardResumeRow{margin:10px 0 14px}
  .resumeButton{min-height:40px;padding:7px 10px;gap:7px}
  .resumeButton strong{font-size:12px}
}

/* v1.4.4 — tiroir d'exercice stable et bandeau compact */
.exercise .competenceBadge{display:none!important}
.drawerMobileCompetences{display:flex;align-items:center;gap:6px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:12px;padding:9px 10px;margin:0 0 12px}
.drawerMobileCompetences:empty{display:none!important}
.drawerMobileCompetencesLabel{font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:850;margin-right:2px}
.drawerTitleColumn{min-width:0}.drawerTitleColumn h2{overflow-wrap:anywhere}
.drawerHead .drawerStates{margin-top:8px}
.drawerHead #drawerMeta .competenceBadge{display:none!important}
@media(max-width:620px){
  .exercise{grid-template-areas:"identity main" "identity competences" "identity states"!important}
  .drawerHead{grid-template-columns:44px minmax(0,1fr) 34px!important;padding:10px 12px!important;gap:9px!important;align-items:start!important}
  .drawerNumberColumn{display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:flex-start!important;gap:4px!important;align-self:start!important}
  .drawerNumber{width:38px!important;height:38px!important;border-radius:11px!important;font-size:16px!important}
  .drawerStarsMobile{display:flex!important;width:44px!important;min-height:26px!important;align-items:center!important;justify-content:center!important}
  .drawerStarsMobile .exerciseStars{width:44px!important;min-width:44px!important;justify-content:center!important;font-size:12px!important;gap:0!important}
  .drawerStarsMobile .exerciseStar{width:13px!important}
  #drawerSection{display:none!important}
  .drawerTitleColumn h2{min-height:38px!important;display:flex!important;align-items:center!important;margin:0 0 4px!important;font-size:16px!important;line-height:1.18!important}
  #drawerMeta{display:none!important}
  .drawerHead .drawerStates{margin:0!important;padding:0!important;border:0!important;background:transparent!important;display:flex!important;align-items:center!important;gap:4px!important;flex-wrap:wrap!important}
  .drawerHead .drawerStates .stateBtn{height:26px!important;min-height:26px!important;padding:0 7px!important;font-size:11px!important;line-height:1!important}
  .drawerClose{width:32px!important;height:32px!important;border-radius:10px!important;font-size:21px!important}
}

/* v1.4.5 — carte d'exercice mobile alignée comme le bandeau du tiroir */
@media(max-width:620px){
  .exercise{
    grid-template-columns:44px minmax(0,1fr)!important;
    grid-template-areas:"identity main" "identity states"!important;
    gap:4px 9px!important;
    align-items:start!important;
    padding:10px 12px!important;
  }
  .exercise .exIdentity{
    grid-area:identity!important;
    grid-row:1 / span 2!important;
    align-self:start!important;
    display:flex!important;
    flex-direction:column!important;
    align-items:center!important;
    justify-content:flex-start!important;
    gap:4px!important;
    width:44px!important;
  }
  .exercise .exIdentity .exNum{
    width:38px!important;
    height:38px!important;
    border-radius:11px!important;
    font-size:16px!important;
    flex:0 0 38px!important;
  }
  .exercise .exStarsMobile{
    display:flex!important;
    width:44px!important;
    min-height:26px!important;
    align-items:center!important;
    justify-content:center!important;
    line-height:1!important;
  }
  .exercise .exStarsMobile .exerciseStars{
    display:inline-flex!important;
    width:44px!important;
    min-width:44px!important;
    justify-content:center!important;
    font-size:12px!important;
    gap:0!important;
  }
  .exercise .exStarsMobile .exerciseStar{width:13px!important}
  .exercise>.exerciseStars{display:none!important}
  .exercise .exMain{
    grid-area:main!important;
    grid-column:2!important;
    grid-row:1!important;
    min-height:38px!important;
    display:flex!important;
    align-items:center!important;
    align-self:start!important;
  }
  .exercise .exTitle{
    font-size:15px!important;
    line-height:1.18!important;
  }
  .exercise .exCompetences{display:none!important}
  .exercise .exStates .exColleCompact{display:inline-flex!important;margin-left:6px!important}
  .exercise .exStates{
    grid-area:states!important;
    grid-column:2!important;
    grid-row:2!important;
    min-height:26px!important;
    margin:0!important;
    padding:0!important;
    display:flex!important;
    align-items:center!important;
    justify-content:flex-start!important;
    gap:4px!important;
    flex-wrap:wrap!important;
    align-self:start!important;
  }
  .exercise .exStates .stateBtn{
    height:26px!important;
    min-height:26px!important;
    padding:0 3px!important;
    font-size:11px!important;
    line-height:1!important;
  }
}

/* v1.4.6 — bandeau d'exercice ouvert en deux lignes sur tous les écrans */
.drawerHead{
  grid-template-columns:48px minmax(0,1fr) 38px!important;
  align-items:start!important;
  padding:12px 16px!important;
  gap:10px!important;
}
.drawerNumberColumn{
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:5px!important;
  align-self:start!important;
}
.drawerNumber{
  width:42px!important;
  height:42px!important;
  border-radius:12px!important;
  font-size:17px!important;
}
.drawerStarsMobile{
  display:flex!important;
  width:48px!important;
  min-height:28px!important;
  align-items:center!important;
  justify-content:center!important;
  line-height:1!important;
}
.drawerStarsMobile .exerciseStars{
  display:inline-flex!important;
  width:48px!important;
  min-width:48px!important;
  justify-content:center!important;
  font-size:13px!important;
  gap:0!important;
}
.drawerStarsMobile .exerciseStar{width:14px!important}
#drawerSection,#drawerMeta{display:none!important}
.drawerTitleColumn h2{
  min-height:42px!important;
  display:flex!important;
  align-items:center!important;
  margin:0 0 5px!important;
  font-size:19px!important;
  line-height:1.2!important;
}
.drawerHead .drawerStates{
  margin:0!important;
  padding:0!important;
  border:0!important;
  background:transparent!important;
  display:flex!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:5px!important;
  flex-wrap:wrap!important;
}
.drawerHead .drawerStates .stateBtn{
  height:28px!important;
  min-height:28px!important;
  padding:0 8px!important;
  font-size:12px!important;
  line-height:1!important;
}
@media(max-width:620px){
  .drawerHead{grid-template-columns:44px minmax(0,1fr) 34px!important;padding:10px 12px!important;gap:9px!important}
  .drawerNumber{width:38px!important;height:38px!important;border-radius:11px!important;font-size:16px!important}
  .drawerStarsMobile{width:44px!important;min-height:26px!important}
  .drawerStarsMobile .exerciseStars{width:44px!important;min-width:44px!important;font-size:12px!important}
  .drawerStarsMobile .exerciseStar{width:13px!important}
  .drawerTitleColumn h2{min-height:38px!important;margin:0 0 4px!important;font-size:16px!important;line-height:1.18!important}
  .drawerHead .drawerStates{gap:4px!important}
  .drawerHead .drawerStates .stateBtn{height:26px!important;min-height:26px!important;padding:0 7px!important;font-size:11px!important}
}

/* v1.4.8 — cartes d’exercices compactes sur téléphone, tablette et portable étroit */
@media(max-width:1180px){
  .exercise{
    grid-template-columns:44px minmax(0,1fr)!important;
    grid-template-areas:"identity main" "identity states"!important;
    gap:4px 9px!important;
    align-items:start!important;
    padding:10px 12px!important;
  }
  .exercise .exIdentity{
    grid-area:identity!important;
    grid-row:1 / span 2!important;
    align-self:start!important;
    display:flex!important;
    flex-direction:column!important;
    align-items:center!important;
    justify-content:flex-start!important;
    gap:4px!important;
    width:44px!important;
  }
  .exercise .exIdentity .exNum{
    width:38px!important;
    height:38px!important;
    border-radius:11px!important;
    font-size:16px!important;
    flex:0 0 38px!important;
  }
  .exercise .exStarsMobile{
    display:flex!important;
    width:44px!important;
    min-height:26px!important;
    align-items:center!important;
    justify-content:center!important;
    line-height:1!important;
  }
  .exercise .exStarsMobile .exerciseStars{
    display:inline-flex!important;
    width:44px!important;
    min-width:44px!important;
    justify-content:center!important;
    font-size:12px!important;
    gap:0!important;
  }
  .exercise .exStarsMobile .exerciseStar{width:13px!important}
  .exercise>.exerciseStars{display:none!important}
  .exercise .exMain{
    grid-area:main!important;
    grid-column:2!important;
    grid-row:1!important;
    min-height:38px!important;
    display:flex!important;
    align-items:center!important;
    align-self:start!important;
  }
  .exercise .exTitle{
    font-size:15px!important;
    line-height:1.18!important;
  }
  .exercise .exCompetences{display:none!important}
  .exercise .exStates .exColleCompact{display:inline-flex!important;margin-left:6px!important}
  .exercise .exStates{
    grid-area:states!important;
    grid-column:2!important;
    grid-row:2!important;
    min-height:26px!important;
    margin:0!important;
    padding:0!important;
    display:flex!important;
    align-items:center!important;
    justify-content:flex-start!important;
    gap:4px!important;
    flex-wrap:wrap!important;
    align-self:start!important;
  }
  .exercise .exStates .stateBtn{
    height:26px!important;
    min-height:26px!important;
    padding:0 3px!important;
    font-size:11px!important;
    line-height:1!important;
  }
}

/* v1.4.9 — objets liés plus lisibles dans le tiroir d’exercice sur mobile */
@media(max-width:620px){
  .drawerScroll{
    padding:10px 6px 18px!important;
  }
  .drawerMobileCompetences{
    margin:0 0 8px!important;
    padding:7px 8px!important;
    border-radius:10px!important;
  }
  .relatedPanel{
    margin:0 0 10px!important;
    padding:var(--cardPadV) 6px!important;
    border-radius:12px!important;
  }
  .relatedPanel h3{
    margin:0 2px 8px!important;
    font-size:12px!important;
    line-height:1.2!important;
  }
  .relatedObject{
    margin-top:6px!important;
    border-left-width:4px!important;
    border-radius:10px!important;
  }
  .relatedHeader{
    padding:8px 7px!important;
    gap:6px!important;
  }
  .relatedHeader strong{
    font-size:12px!important;
    line-height:1.25!important;
  }
  .relatedContent{
    padding:4px 2px 6px!important;
    overflow-x:auto!important;
  }
  .relatedContent img.latexImage,
  .relatedContent img[data-raster-base]{
    display:block!important;
    width:100%!important;
    max-width:100%!important;
    height:auto!important;
    margin:0 auto!important;
    border-radius:6px!important;
  }
}


/* v1.4.10 — bandeaux de filtres compacts pour Exercices et Anki */
@media(max-width:900px){
  #exercisesView>.filters,
  #ankiView>.filters{
    display:grid!important;
    gap:5px!important;
    padding:6px!important;
    margin:0 0 10px!important;
    background:rgba(255,255,255,.97)!important;
    backdrop-filter:blur(10px);
    border:1px solid var(--line)!important;
    border-radius:12px!important;
    box-shadow:0 7px 20px rgba(30,48,82,.10);
  }
  #exercisesView>.filters{
    grid-template-columns:repeat(4,minmax(0,1fr));
  }
  #ankiView>.filters{
    grid-template-columns:repeat(3,minmax(0,1fr));
  }
  #exercisesView>.filters select,
  #ankiView>.filters select{
    display:block!important;
    width:100%!important;
    min-width:0!important;
    height:36px!important;
    margin:0!important;
    padding:0 24px 0 8px!important;
    border:1px solid var(--line)!important;
    border-radius:9px!important;
    background-color:#f8f9fc!important;
    color:#354155!important;
    font-size:11px!important;
    font-weight:800!important;
    text-overflow:ellipsis!important;
  }
  #exercisesView>.filters select:focus,
  #ankiView>.filters select:focus{
    outline:2px solid rgba(20,95,201,.2);
    outline-offset:1px;
    border-color:#8eb0df!important;
  }
}
@media(max-width:430px){
  #exercisesView>.filters,
  #ankiView>.filters{gap:4px!important;padding:5px!important}
  #exercisesView>.filters select,
  #ankiView>.filters select{
    height:34px!important;
    padding-left:6px!important;
    padding-right:18px!important;
    font-size:10px!important;
  }
}

/* v1.4.13 — marges du cours étendues aux tablettes */
@media(max-width:900px){
  #courseView{
    margin-inline:-10px;
  }
  #courseView .viewTitle{
    padding-inline:6px;
    margin-bottom:10px;
  }
  #courseView .objectCard{
    grid-template-columns:4px minmax(0,1fr);
    border-radius:11px;
    margin-bottom:8px;
  }
  /* Le stateSeg (Connu/À revoir) bleede vers le bord droit : sa marge négative doit
     correspondre au padding de l'objectInner (6px en mobile), sinon il déborde de la carte. */
  #courseView .courseRow .stateSeg{margin-right:-6px}
  #courseView .objectInner{
    padding:var(--cardPadV) 6px!important;
  }
  #courseView .courseHeaderWithDemo{
    gap:5px;
  }
  #courseView .courseContent{
    margin-top:8px;
    padding-top:8px;
  }
  #courseView .courseContent img.latexImage,
  #courseView .courseContent img[data-raster-base]{
    display:block!important;
    width:100%!important;
    max-width:100%!important;
    height:auto!important;
    margin:0 auto 8px!important;
    border-radius:6px!important;
  }
}
@media(max-width:430px){
  #courseView{
    margin-inline:-12px;
  }
  #courseView .viewTitle{
    padding-inline:7px;
  }
  #courseView .objectCard{
    border-radius:10px;
  }
  #courseView .objectInner{
    padding:var(--cardPadV) 4px!important;
  }
}


.brand .projectVersion{color:#6f7f9c;font-size:11px;margin-top:6px}

/* v1.4.18 — panneau des objets liés replié par défaut dans le tiroir d’exercice */
.relatedPanelToggle{width:100%;border:0;background:transparent;color:#17233a;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0;margin:0;text-align:left;font-weight:850;font-size:13px;cursor:pointer}.relatedPanelToggle:hover{color:var(--blue)}.relatedPanelToggle:focus-visible{outline:2px solid rgba(20,95,201,.28);outline-offset:4px;border-radius:8px}.relatedPanelChevron{font-size:21px;line-height:1;color:#7c8798;transition:transform .15s ease}.relatedPanel.open .relatedPanelChevron{transform:rotate(90deg);color:var(--blue)}.relatedPanel.collapsed .relatedPanelBody{display:none}.relatedPanel.open .relatedPanelBody{display:block;margin-top:10px}
@media(max-width:620px){.relatedPanelToggle{font-size:12px;line-height:1.2;padding:0 2px}.relatedPanel.open .relatedPanelBody{margin-top:8px}}

/* v1.4.19 — marges globalement compactes et icônes latérales */
.sidebar{padding:18px 14px}.chapterChooserWrap{margin-bottom:12px}.chapterChooser{padding:10px 11px;border-radius:12px}.navLabel{margin:16px 8px 6px}.nav button{padding:6px 10px;gap:9px;border-radius:10px}.nav button span{width:23px;font-size:18px;line-height:1;text-align:center}.brand.brandText{padding:14px 8px 0}.brand .projectVersion{font-size:10px;margin-top:5px}
.topbar{height:52px;padding-inline:20px}.content{padding:22px;max-width:1520px}.viewTitle{margin-bottom:13px}.hero{padding:22px 24px;border-radius:19px;gap:18px}.heroStats>div{padding:11px}.metricGrid{gap:10px;margin:14px 0}.metric{padding:14px}.dashboardGrid,.dashboardActionStack,.ankiLayout{gap:16px}.panel{border-radius:14px}.panelHead{padding:13px 15px}.panelBody{padding:14px 15px}.sectionProgress{padding:10px;margin-bottom:8px}.sectionHeading{gap:9px;margin:16px 0 8px}.sectionHeading:first-child{margin-top:0}
.filterBar,.filters{gap:7px;margin-bottom:12px}.filters select{padding:8px 10px}.courseSectionChooserWrap{padding:6px}.courseSectionChooser{padding:5px 9px}.filterBar{padding:8px 9px}.chip{padding:6px 10px}.objectCard{border-radius:12px;margin-bottom:6px}.objectInner{padding:var(--cardPadV) 10px}.courseHeader{gap:10px}.courseControls{min-width:270px}.courseContent{margin-top:8px;padding-top:8px}
.exerciseSectionHeading{margin-top:18px}.exercise{padding:11px 12px;margin-bottom:8px;gap:8px}.exMeta{margin-top:4px}.exStates{gap:4px}.exStates .stateBtn,.drawerStates .stateBtn{height:28px;min-height:28px;padding:0 8px!important}.drawerHead{padding:10px 12px!important;gap:9px!important}.drawerScroll{padding:12px 14px 18px}.drawerMobileCompetences{padding:7px 8px;margin-bottom:9px}.relatedPanel{padding:10px 9px;margin-bottom:10px;border-radius:12px}.relatedHeader{padding:9px 10px}.relatedContent{padding:7px}.tabs{margin-bottom:8px}.tabs button{padding:7px 11px}.pdfToolbar{padding:8px 10px}.pdfDocument{border-radius:12px}
@media(max-width:900px){.content{padding:14px 12px}.viewTitle{margin-bottom:10px}.hero{padding:18px 17px}.panelHead{padding:11px 12px}.panelBody{padding:12px}.drawerScroll{padding:10px 8px 16px}}
@media(max-width:620px){.content{padding:12px 8px}.sidebar{padding:16px 12px}.hero{padding:16px 14px;border-radius:16px}.exercise{padding:9px 10px!important}.drawerScroll{padding:9px 6px 15px!important}.relatedPanel{padding:8px 6px!important}}



/* v1.4.20 — progressions plus visibles sans hauteur supplémentaire */
.inlineProgressMetric,.sectionInlineProgress{
  border-radius:10px;
  background:linear-gradient(180deg,#fff,#f6f9ff);
  box-shadow:0 0 0 1px rgba(20,95,201,.12);
  padding:2px 6px;
  margin:-2px 0;
  box-sizing:border-box;
}
.inlineProgressMetric:hover,.sectionInlineProgress:hover{
  background:linear-gradient(180deg,#fff,#eef5ff);
  box-shadow:0 0 0 1px rgba(20,95,201,.22),0 4px 12px rgba(20,95,201,.08);
}
.inlineProgressLabel,.sectionInlineProgress>span:first-child{
  color:#3f4d63;
  font-weight:650;
}
.inlineProgressLabel strong,.sectionInlineProgress b{
  color:var(--blue);
  font-weight:900;
}
.inlineProgressTrack,.sectionProgressTrack{
  background:#d8e1ee;
  box-shadow:inset 0 0 0 1px rgba(22,34,54,.06);
}
.inlineProgressTrack i,.sectionProgressTrack i{
  box-shadow:0 0 0 1px rgba(15,91,216,.16),0 0 7px rgba(15,91,216,.22);
}
.inlineProgressGreen .inlineProgressTrack i,.sectionInlineProgressGreen .sectionProgressTrack i{
  box-shadow:0 0 0 1px rgba(35,131,79,.14),0 0 7px rgba(35,131,79,.20);
}
.inlineProgressPurple .inlineProgressTrack i,.sectionInlineProgressPurple .sectionProgressTrack i{
  box-shadow:0 0 0 1px rgba(111,73,189,.14),0 0 7px rgba(111,73,189,.20);
}
@media(max-width:520px){
  .inlineProgressMetric,.sectionInlineProgress{
    padding:2px 5px;
  }
}

/* v1.4.21 — libellés de progression compacts sans pourcentage */
.inlineProgressLabel,.sectionProgressLabel{
  display:flex!important;
  align-items:baseline;
  justify-content:space-between;
  gap:8px;
  color:#3f4d63;
  font-weight:650;
  white-space:nowrap;
  text-align:left;
}
.progressFraction{
  white-space:nowrap;
}
.progressLabelText{
  white-space:nowrap;
  color:#3f4d63;
}
.inlineProgressLabel strong,.sectionProgressLabel b{
  color:var(--blue);
  font-weight:900;
}
.inlineProgressGreen .inlineProgressLabel strong,
.sectionInlineProgressGreen .sectionProgressLabel b{
  color:var(--compris);
}
.inlineProgressPurple .inlineProgressLabel strong,
.sectionInlineProgressPurple .sectionProgressLabel b{
  color:var(--purple);
}
.inlineProgressLabel small{
  margin-left:0;
  color:inherit;
}
@media(max-width:520px){
  .inlineProgressLabel,.sectionProgressLabel{
    gap:6px;
  }
}

/* v1.4.22 — vue d'ensemble tabulaire par partie */
.overviewTableWrap{overflow-x:auto;border:1px solid var(--line);border-radius:14px;background:#fff}
.overviewTable{width:100%;min-width:880px;border-collapse:separate;border-spacing:0;table-layout:fixed}
.overviewTable th,.overviewTable td{padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:middle;text-align:left}
.overviewTable thead th{font-size:10px;text-transform:uppercase;letter-spacing:.055em;color:var(--muted);font-weight:850;background:#f7f9fd}
.overviewColHeader{appearance:none;border:0;background:transparent;padding:0;font:inherit;color:inherit;cursor:pointer;text-align:left;white-space:normal;text-transform:uppercase}.overviewColHeader:focus-visible{outline:2px solid var(--blue);outline-offset:2px;border-radius:3px}
.overviewTable thead th:first-child{border-top-left-radius:14px}.overviewTable thead th:last-child{border-top-right-radius:14px}
/* table-layout:fixed → la largeur des colonnes vient du thead : colonne titre large, les autres égales */
#sectionProgress .overviewTable thead th:first-child{width:28%}
.overviewTable tbody tr:last-child th,.overviewTable tbody tr:last-child td{border-bottom:0}
.overviewPartCell{width:28%;min-width:220px}.overviewPartTitle{display:flex;align-items:center;gap:8px;min-width:0}.overviewPartCopy{min-width:0}.overviewPartCopy strong{display:inline;font-size:12px;line-height:1.25}.overviewPartDay{color:var(--muted);font-weight:700;font-size:11px;margin-left:6px}.overviewPartCopy small{display:block;color:var(--muted);font-size:10px;margin-top:2px}.overviewPartTitle .sectionNum{width:27px;height:27px}
.overviewProgressMetric{appearance:none;border:0;background:transparent;padding:2px 5px;width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;min-width:0;border-radius:8px;box-sizing:border-box;transition:background .14s ease,box-shadow .14s ease,transform .14s ease}.overviewProgressMetric:hover{background:linear-gradient(180deg,#fff,#eef5ff);box-shadow:0 0 0 1px rgba(20,95,201,.20),0 4px 10px rgba(20,95,201,.07);transform:translateY(-1px)}.overviewProgressMetric:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.overviewProgressMetric .sectionProgressTrack{height:4px;margin-top:4px}.overviewProgressGreen .sectionProgressTrack i{background:linear-gradient(90deg,var(--compris),var(--comprisLight));box-shadow:0 0 0 1px rgba(40,119,85,.14),0 0 7px rgba(40,119,85,.20)}.overviewProgressPurple .sectionProgressTrack i{background:linear-gradient(90deg,var(--purple),#a88ae5);box-shadow:0 0 0 1px rgba(111,73,189,.14),0 0 7px rgba(111,73,189,.20)}.overviewProgressGreen .sectionProgressLabel b{color:var(--compris)}.overviewProgressPurple .sectionProgressLabel b{color:var(--purple)}
/* Barre exercices fusionnée : deux segments superposés (compris vert sur abordés bleu) + double compteur coloré */
.overviewTrackStacked{position:relative}
.overviewTrackStacked i{position:absolute;left:0;top:0;height:100%;border-radius:inherit}
.overviewTrackStacked .segApproached{background:linear-gradient(90deg,var(--blue),var(--blueLight));z-index:1}
.overviewTrackStacked .segUnderstood{background:linear-gradient(90deg,var(--compris),var(--comprisLight));z-index:2}
/* spécificité ≥ .overviewProgressMetric .progressFraction b (qui force le bleu) */
.overviewProgressMetric .overviewExerciseFraction .ovUnderstood{color:var(--compris)}
.overviewProgressMetric .overviewExerciseFraction .ovApproached{color:var(--blue)}
.overviewExerciseFraction .ovDualSep{color:#111;margin:0 1px}
.overviewActionCell{min-width:235px}.overviewActionChips{display:flex;flex-wrap:wrap;gap:5px}.overviewActionChip{appearance:none;border:0;border-radius:8px;background:#f6f8fb;min-height:26px;padding:4px 6px;display:inline-flex;align-items:center;gap:5px;font:inherit;color:inherit;cursor:pointer;min-width:0;transition:background .14s ease,transform .14s ease}.overviewActionChip:hover{background:var(--blueSoft);transform:translateY(-1px)}.overviewActionChip:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.overviewActionChip b{font-size:12px;line-height:1}.overviewActionChip span{font-size:8px;line-height:1.1;text-transform:uppercase;letter-spacing:.035em;color:var(--muted);white-space:nowrap}.overviewActionChip.action-review{background:rgba(190,43,43,.055)}.overviewActionChip.action-understand{background:rgba(40,119,85,.055)}.overviewActionChip.action-correct{background:rgba(15,91,216,.055)}.overviewActionChip.action-start{background:#f6f8fb}.overviewActionChip.action-course-not-known{background:rgba(15,91,216,.035)}.overviewActionChip.action-anki-unrated{background:rgba(111,73,189,.035)}.overviewActionChip.action-anki-review{background:rgba(111,73,189,.065)}.overviewNoAction{display:inline-block;color:var(--muted);font-size:11px;font-weight:750;padding:5px 0}
/* Capsules d'action « à revoir / à corriger » : même visuel que la progression annuelle (pilule bordée), avec le numéro avant le label */
#sectionProgress .overviewActionChip{display:inline-flex;align-items:center;gap:3px;min-height:0;border:1px solid #d6dce6;border-radius:6px;background:#f7f8fb;padding:3px 6px;line-height:1}
#sectionProgress .overviewActionChip b{font-size:8px;font-weight:850;line-height:1}
#sectionProgress .overviewActionChip span{font-size:8px;font-weight:850;line-height:1;letter-spacing:.03em}
#sectionProgress .overviewActionChip.action-review{border-color:rgba(184,59,53,.22);background:rgba(184,59,53,.065)}
#sectionProgress .overviewActionChip.action-correct,#sectionProgress .overviewActionChip.action-exreview{border-color:rgba(31,101,214,.22);background:rgba(31,101,214,.065)}
#sectionProgress .overviewActionChip.action-understand{border-color:rgba(40,119,85,.22);background:rgba(40,119,85,.065)}
#sectionProgress .overviewActionChip.action-anki-review{border-color:rgba(113,80,187,.22);background:rgba(113,80,187,.075)}
#sectionProgress .overviewActionChip.action-interro-review{border-color:rgba(71,85,105,.22);background:rgba(71,85,105,.07)}
@media(max-width:760px){.overviewTableWrap{overflow:visible;border:0;background:transparent}.overviewTable{display:block;min-width:0}.overviewTable thead{display:none}.overviewTable tbody{display:grid;gap:8px}.overviewTable tr{display:block;border:1px solid var(--line);border-radius:13px;background:#fff;padding:8px 9px}.overviewTable th,.overviewTable td{display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:0;padding:5px 0}.overviewTable td::before{content:attr(data-label);font-size:10px;text-transform:uppercase;letter-spacing:.045em;color:var(--muted);font-weight:850;flex:0 0 auto}.overviewPartCell{width:auto;min-width:0;padding-bottom:7px!important;border-bottom:1px solid var(--line)!important}.overviewProgressMetric{max-width:205px}.overviewActionCell{display:block!important}.overviewActionCell::before{display:block;margin-bottom:5px}.overviewActionChips{justify-content:flex-start}.overviewActionChip span{white-space:normal}.overviewNoAction{padding:2px 0}}

/* v1.4.23 — tableau de bord : actions sous les barres */
.overviewTable{min-width:760px}
.overviewTable thead th{text-align:center}
.overviewTable thead th:first-child{text-align:left}
.overviewTable tbody td{text-align:center}
.overviewMetricStack{display:grid;gap:4px;align-items:start;justify-items:stretch;width:100%;max-width:185px;margin-inline:auto}
.overviewMetricStack .overviewProgressMetric{padding:2px 4px;text-align:left}
.overviewMetricActions{display:flex;flex-wrap:wrap;justify-content:center;gap:4px;min-height:0}
.overviewMetricActions .overviewActionChip{min-height:22px;padding:3px 6px;border-radius:7px}
.overviewMetricActions .overviewActionChip b{font-size:11px}
.overviewMetricActions .overviewActionChip span{font-size:8px;letter-spacing:.025em}
@media(max-width:760px){
  .overviewTable{min-width:0}
  .overviewTable tbody td{text-align:left}
  .overviewMetricStack{max-width:210px;margin-left:auto;margin-right:0}
  .overviewMetricActions{justify-content:flex-end}
}

/* v1.4.24 — tableau global du chapitre et réussites */
#dashboardView .dashboardActionStack{display:none}
.overviewTable{min-width:930px}
.overviewTable thead th{text-align:center}
.overviewTable thead th:first-child{text-align:left}
.overviewTotalRow th,.overviewTotalRow td{background:#f9fbff;border-bottom:1px solid #d5deed!important}
.overviewTotalRow .overviewPartTitle{justify-content:center}.overviewTotalRow .overviewPartCopy{text-align:center}.overviewTotalRow .overviewPartCopy strong{color:#111;font-size:13px}.overviewTotalRow .overviewPartCopy small{text-align:center}
.overviewProgressKnown .sectionProgressTrack i{background:linear-gradient(90deg,#4d2fa6,#8b6be0);box-shadow:0 0 0 1px rgba(111,73,189,.14),0 0 7px rgba(111,73,189,.20)}
.achievementStrip{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:10px;padding-top:9px;border-top:1px solid var(--line)}
.achievementTitle{font-size:10px;font-weight:850;text-transform:uppercase;letter-spacing:.055em;color:var(--muted);margin-right:2px}
.achievementBadge{appearance:none;display:inline-flex;align-items:center;border-radius:999px;border:1px solid var(--line);padding:4px 7px;font-family:inherit;font-size:10px;font-weight:780;line-height:1.1;white-space:nowrap;background:#f6f8fb;color:#697385;cursor:pointer}.achievementBadge:hover{transform:translateY(-1px)}.achievementBadge:focus-visible{outline:2px solid #b88716;outline-offset:1px}
.achievementBadge.earned{background:rgba(35,131,79,.075);border-color:rgba(35,131,79,.24);color:var(--compris)}.achievementBadge.locked{background:#f7f8fa;color:#87909e}
@media(max-width:760px){.overviewTable{min-width:0}.overviewTotalRow{border-color:#cfdcf1!important;background:#f9fbff}.achievementStrip{overflow-x:auto;flex-wrap:nowrap;padding-bottom:2px}.achievementBadge{flex:0 0 auto}}


/* v1.4.25 — tableau équilibré et bandeau Cours aligné sur Exercices */
.overviewMetricActions{
  min-height:24px;
  align-items:center;
}
.overviewMetricActions.empty{
  visibility:hidden;
}
#courseCount,#exerciseCount{
  display:none!important;
}
#courseView .courseSectionChooserWrap{
  display:none!important;
}
#courseView .viewCommandShell>.courseMobileFilterBar{
  display:grid!important;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:7px;
  padding:7px;
  margin:0;
  background:rgba(255,255,255,.97);
  backdrop-filter:blur(10px);
  border:1px solid var(--line);
  border-radius:12px;
}
#courseView .courseMobileFilterBar select{
  display:block!important;
  visibility:visible!important;
  opacity:1!important;
  width:100%!important;
  min-width:0!important;
  height:36px!important;
  margin:0!important;
  padding:0 24px 0 8px!important;
  border:1px solid var(--line)!important;
  border-radius:9px!important;
  background-color:#f8f9fc!important;
  color:#354155!important;
  font-size:11px!important;
  font-weight:800!important;
  text-overflow:ellipsis!important;
}
#courseView .courseMobileFilterBar select:focus{
  outline:2px solid rgba(20,95,201,.2);
  outline-offset:1px;
  border-color:#8eb0df!important;
}
@media(max-width:900px){
  #courseView .courseMobileFilterBar{gap:5px;padding:6px}
}
@media(max-width:430px){
  #courseView .courseMobileFilterBar{gap:4px!important;padding:5px!important}
  #courseView .courseMobileFilterBar select{
    height:34px!important;
    padding-left:6px!important;
    padding-right:18px!important;
    font-size:10px!important;
  }
}

/* v1.4.26 — capsules d’état des exercices à taille stable */
.exStates .stateBtn,
.drawerStates .stateBtn{
  box-sizing:border-box;
  gap:3px;
}
.exStates .stateBtn .stateCheck,
.drawerStates .stateBtn .stateCheck{
  display:inline-block;
  width:.9em;
  min-width:.9em;
  text-align:center;
  visibility:hidden;
  line-height:1;
}
.exStates .stateBtn.active .stateCheck,
.drawerStates .stateBtn.active .stateCheck{
  visibility:visible;
}
.exStates .stateBtn .stateText,
.drawerStates .stateBtn .stateText{
  display:inline-block;
  line-height:1;
}

/* v1.4.27 — tableau de bord : Anki fusionné et barres sans libellés */
.overviewTable{min-width:820px}
.overviewProgressMetric .sectionProgressLabel{
  display:block;
  text-align:center;
  font-size:11px;
  line-height:1.1;
  margin-bottom:4px;
}
.overviewProgressMetric .progressFraction{
  display:inline-flex;
  align-items:baseline;
  justify-content:center;
  gap:1px;
  font-weight:850;
  color:var(--text);
}
.overviewProgressMetric .progressFraction b{color:var(--blue)}
.overviewProgressMetric .progressTotal{color:#111;font-weight:760}
.overviewMetricStack .overviewProgressMetric{text-align:center}
.overviewProgressCourse .sectionProgressTrack i{
  background:linear-gradient(90deg,var(--red),#ef7a7a);
  box-shadow:0 0 0 1px rgba(190,43,43,.14),0 0 7px rgba(190,43,43,.20);
}
.overviewProgressCourse .sectionProgressLabel b{color:var(--red)}
.overviewProgressBlue .sectionProgressTrack i{
  background:linear-gradient(90deg,var(--blue),var(--blueLight));
  box-shadow:0 0 0 1px rgba(20,95,201,.12),0 0 7px rgba(20,95,201,.18);
}
.overviewProgressBlue .sectionProgressLabel b{color:var(--blue)}
@media(max-width:760px){.overviewTable{min-width:0}}


/* v1.4.29 — réussites mises en avant en haut du tableau de bord */
#sectionProgress .achievementStrip{
  margin:10px 0;   /* même espace au-dessus (chapitre→achievements) qu'en dessous (achievements→tableau) */
  width:var(--overviewWidth);
  max-width:100%;
  box-sizing:border-box;
  padding:5px 10px;
  border:2px solid rgba(35,131,79,.22);
  border-radius:13px;
  background:linear-gradient(180deg,rgba(35,131,79,.055),rgba(255,255,255,.92));
  box-shadow:0 5px 16px rgba(31,50,86,.045);
}
#sectionProgress .achievementTitle{
  color:var(--compris);
  font-size:11px;
}
#sectionProgress .achievementBadge{
  background:rgba(255,255,255,.78);
}
#sectionProgress .achievementBadge.earned{
  background:rgba(35,131,79,.11);
  border-color:rgba(35,131,79,.34);
}
#sectionProgress .achievementBadge.locked{
  background:rgba(255,255,255,.60);
  border-color:rgba(105,115,133,.18);
}


/* v1.5 — tableau de bord « groupé » : grande ligne N°·Titre·jour, puis 4 colonnes égales de barres pleine largeur */
#sectionProgress .overviewTableWrap{width:max-content;max-width:100%;padding-right:0;box-sizing:border-box}
#sectionProgress .overviewTable{width:100%;min-width:0;table-layout:fixed}
#sectionProgress .overviewTable thead th{background:#fff}
#sectionProgress .overviewTable thead th,
#sectionProgress .overviewTable tbody td{width:25%;padding-left:6px;padding-right:6px}
#sectionProgress .overviewMetricStack{width:100%;max-width:170px;margin-left:auto;margin-right:auto;gap:2px}
/* Compacité verticale des lignes de barres + chips */
#sectionProgress .overviewDataRow>td{padding-top:1px;padding-bottom:2px;vertical-align:top}
#sectionProgress .overviewDataRow .overviewProgressMetric{padding-top:1px;padding-bottom:1px}
#sectionProgress .overviewDataRow .overviewProgressMetric .sectionProgressTrack{margin-top:2px;height:6px;box-sizing:border-box;border:1px solid rgba(17,17,17,.7)}
#sectionProgress .overviewDataRow .overviewMetricActions .overviewActionChip{min-height:19px;padding:2px 6px}
/* Ligne-groupe pleine largeur */
.overviewGroupRow>td{padding:0!important;border-bottom:0!important;background:var(--blueSoft)!important}
.overviewGroupRow:not(:first-child)>td{border-top:1px solid var(--line)}
.overviewGroupInner{display:grid;grid-template-columns:1fr minmax(0,auto) 1fr;align-items:center;gap:8px;padding:4px 12px 3px}
.overviewGroupMain{grid-column:2;justify-self:center;display:inline-flex;align-items:center;gap:8px;min-width:0}
.overviewGroupInner .sectionNum{width:21px;height:21px;font-size:11px;flex:0 0 auto}
.overviewGroupTitle{font-size:13px;font-weight:800;color:var(--blue);line-height:1.25;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.overviewGroupDay{grid-column:3;justify-self:end;color:#111;font-weight:700;font-size:12px;white-space:nowrap}
.overviewGroupDay .dayNum{color:#111;font-weight:700}
.overviewTotalGroup>td{background:#cfe0fb!important}
.overviewTotalGroup .overviewGroupTitle{color:var(--blue)}
.overviewProgressMetric{
  text-align:center;
}
.overviewProgressMetric .sectionProgressLabel{
  display:flex;
  justify-content:center;
  align-items:baseline;
  width:100%;
  text-align:center;
}
.overviewProgressMetric .progressFraction{
  display:flex;
  justify-content:center;
  align-items:baseline;
  width:100%;
  text-align:center;
}
.overviewMetricStack{
  width:76px;
  max-width:76px;
}
@media(max-width:760px){
  #sectionProgress .overviewTableWrap{width:100%;padding-right:0}
  #sectionProgress .overviewTable{width:100%;min-width:0}
  #sectionProgress .overviewTable thead th:first-child,
  #sectionProgress .overviewTable tbody th:first-child{width:auto;min-width:0;max-width:none}
  .overviewTable thead th:nth-child(n+2),
  .overviewTable tbody td:nth-child(n+2){
    width:auto;
    min-width:0;
    max-width:none;
  }
  .overviewMetricStack{
    width:100%;
    max-width:210px;
  }
}


/* v1.4.31 — tableau de bord : couleurs explicites des barres et compteurs */
#sectionProgress .overviewProgressCourse .progressFraction b,
#sectionProgress .overviewProgressCourse .sectionProgressLabel b{
  color:var(--red)!important;
}
#sectionProgress .overviewProgressCourse .sectionProgressTrack i{
  background:linear-gradient(90deg,var(--red),#ef7a7a)!important;
  box-shadow:0 0 0 1px rgba(190,43,43,.14),0 0 7px rgba(190,43,43,.20)!important;
}
#sectionProgress .overviewProgressBlue .progressFraction b,
#sectionProgress .overviewProgressBlue .sectionProgressLabel b{
  color:var(--blue)!important;
}
#sectionProgress .overviewProgressBlue .sectionProgressTrack i{
  background:linear-gradient(90deg,var(--blue),var(--blueLight))!important;
  box-shadow:0 0 0 1px rgba(20,95,201,.12),0 0 7px rgba(20,95,201,.18)!important;
}
#sectionProgress .overviewProgressGreen .progressFraction b,
#sectionProgress .overviewProgressGreen .sectionProgressLabel b{
  color:var(--compris)!important;
}
#sectionProgress .overviewProgressGreen .sectionProgressTrack i{
  background:linear-gradient(90deg,var(--compris),var(--comprisLight))!important;
  box-shadow:0 0 0 1px rgba(40,119,85,.14),0 0 7px rgba(40,119,85,.20)!important;
}
#sectionProgress .overviewProgressPurple .progressFraction b,
#sectionProgress .overviewProgressPurple .sectionProgressLabel b,
#sectionProgress .overviewProgressKnown .progressFraction b,
#sectionProgress .overviewProgressKnown .sectionProgressLabel b{
  color:var(--purple)!important;
}
#sectionProgress .overviewProgressPurple .sectionProgressTrack i,
#sectionProgress .overviewProgressKnown .sectionProgressTrack i{
  background:linear-gradient(90deg,var(--purple),#a88ae5)!important;
  box-shadow:0 0 0 1px rgba(111,73,189,.14),0 0 7px rgba(111,73,189,.20)!important;
}

/* v1.4.32 — tableau de bord : couleurs des actions, badges simplifiés et défis hors compteurs */
#sectionProgress .overviewActionChip.action-review b,
#sectionProgress .overviewActionChip.action-review span{
  color:var(--red);
}
#sectionProgress .overviewActionChip.action-understand{
  background:rgba(40,119,85,.065);
}
#sectionProgress .overviewActionChip.action-understand b,
#sectionProgress .overviewActionChip.action-understand span{
  color:var(--compris);
}
#sectionProgress .overviewActionChip.action-correct b,
#sectionProgress .overviewActionChip.action-correct span,
#sectionProgress .overviewActionChip.action-exreview b,
#sectionProgress .overviewActionChip.action-exreview span{
  color:var(--blue);
}
#sectionProgress .overviewActionChip.action-anki-review b,
#sectionProgress .overviewActionChip.action-anki-review span{
  color:var(--purple);
}
#sectionProgress .achievementStrip{
  gap:8px;
  padding:5px 12px;
}
#sectionProgress .achievementTitle{
  font-size:12px;
}
#sectionProgress .achievementBadge{
  padding:6px 10px;
  font-size:12px;
  font-weight:850;
}


/* v1.4.33 — achievements or et filtre Compétences explicite */
#sectionProgress .achievementStrip{
  border-color:rgba(185,126,18,.5)!important;
  background:linear-gradient(180deg,rgba(255,210,96,.18),rgba(255,255,255,.94))!important;
  box-shadow:0 7px 20px rgba(145,92,9,.075)!important;
}
#sectionProgress .achievementTitle{
  color:#9a6500!important;
  display:inline-flex;
  align-items:center;
  gap:5px;
}
#sectionProgress .achievementBadge{
  gap:5px;
  border-color:rgba(166,119,31,.24)!important;
  background:rgba(255,250,236,.92)!important;
  color:#8a6218!important;
}
#sectionProgress .achievementBadge.earned{
  background:linear-gradient(180deg,#fff3bd,#f2c85f)!important;
  border-color:#d6a73b!important;
  color:#5f4100!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.70),0 4px 10px rgba(145,92,9,.12)!important;
}
#sectionProgress .achievementBadge.locked{
  background:#f1f3f6!important;
  border-color:#d6dbe3!important;
  color:#7b8492!important;
}
#exCompetence{
  min-width:132px;
}
@media(max-width:620px){
  #exercisesView .filters{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  #exercisesView .filters select{
    width:100%;
    min-width:0;
  }
  #exCompetence{
    min-width:0;
  }
}

/* v1.4.35 — bandeaux unifiés encadrés, sans bouton redondant */
#courseView .viewTitle h1{color:var(--red)}
#exercisesView .viewTitle h1{color:var(--blue)}
#ankiView .viewTitle h1{color:var(--purple)}
.viewCommandShell{
  --command-accent:var(--blue);
  position:sticky;
  top:8px;
  z-index:24;
  display:block;
  margin:0 0 12px;
  padding:7px;
  border:2px solid color-mix(in srgb,var(--command-accent) 58%,var(--line));
  border-radius:14px;
  background:linear-gradient(180deg,color-mix(in srgb,var(--command-accent) 4%,#fff),rgba(255,255,255,.97));
  backdrop-filter:blur(10px);
  box-shadow:0 7px 20px rgba(30,48,82,.09);
}
.viewCommandShellCourse{--command-accent:var(--red)}
.viewCommandShellExercises{--command-accent:var(--blue)}
.viewCommandShellAnki{--command-accent:var(--purple)}
.viewCommandShell>.filters,
#courseView .viewCommandShell>.courseMobileFilterBar{
  display:grid!important;
  gap:6px!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
.viewCommandShellExercises>.filters{grid-template-columns:repeat(4,minmax(0,1fr))!important}
.viewCommandShellAnki>.filters{grid-template-columns:repeat(3,minmax(0,1fr))!important}
#courseView .viewCommandShell>.courseMobileFilterBar{grid-template-columns:repeat(3,minmax(0,1fr))!important}
.viewCommandShell select,
#courseView .viewCommandShell select{
  width:100%!important;
  min-width:0!important;
  height:36px!important;
  margin:0!important;
  padding:0 24px 0 9px!important;
  border:1px solid color-mix(in srgb,var(--command-accent) 22%,var(--line))!important;
  border-radius:9px!important;
  background-color:#f8f9fc!important;
  color:#354155!important;
  font-size:11px!important;
  font-weight:850!important;
  text-overflow:ellipsis!important;
}
.viewCommandShell select:focus,
#courseView .viewCommandShell select:focus{
  outline:2px solid color-mix(in srgb,var(--command-accent) 18%,transparent);
  outline-offset:1px;
  border-color:color-mix(in srgb,var(--command-accent) 52%,var(--line))!important;
}
#courseView .viewCommandShell>.courseSectionChooserWrap,
#courseView .viewCommandShell>.filterBar{
  display:none!important;
}
@media(max-width:900px){
  .viewCommandShell{top:0;margin-bottom:10px;padding:6px}
  .viewCommandShellExercises>.filters{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media(max-width:620px){
  .viewCommandShell{
    padding:5px;
    border-radius:12px;
    box-shadow:0 5px 14px rgba(30,48,82,.08);
  }
  #courseView .viewCommandShell>.courseMobileFilterBar,
  .viewCommandShellAnki>.filters{
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
  }
  .viewCommandShellExercises>.filters{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
  .viewCommandShell select,
  #courseView .viewCommandShell select{
    height:34px!important;
    padding-left:6px!important;
    padding-right:18px!important;
    font-size:10px!important;
  }
}
@media(max-width:430px){
  .viewCommandShell select,
  #courseView .viewCommandShell select{font-size:9.5px!important}
}


/* v1.4.35 — tableau complet valorisé et étoiles plus lisibles */
.dashboardSectionPanel{
  border:0!important;
  box-shadow:none!important;
  overflow:visible;
}
.dashboardSectionPanel #sectionProgress{
  padding:0;
  background:transparent;
}
.dashboardResetRow{display:flex;justify-content:flex-end;margin-top:12px}
#sectionProgress .overviewTableWrap{
  border-color:var(--line);
  box-shadow:none;
}
.exerciseStars{
  width:60px;
  min-width:60px;
  gap:0;
  font-size:19px;
  letter-spacing:-.04em;
}
.exerciseStar{
  width:18px;
}
@media(max-width:1050px){
  .exercise{grid-template-columns:45px 54px minmax(0,1fr)}
  .exerciseStars{width:54px;min-width:54px;font-size:18px}
  .exerciseStar{width:17px}
}
@media(max-width:620px){
  .exStarsMobile .exerciseStars{font-size:14px!important;letter-spacing:-.05em!important}
  .exStarsMobile .exerciseStar{width:13px!important}
  .drawerStarsMobile .exerciseStars{font-size:14px!important;letter-spacing:-.05em!important}
  .drawerStarsMobile .exerciseStar{width:15px!important}
}


/* v1.4.36 — états d'exercice centrés sans coche */
.exStates .stateBtn,
.drawerStates .stateBtn{
  gap:0!important;
  min-width:74px;
  text-align:center;
}
.exStates .stateBtn .stateCheck,
.drawerStates .stateBtn .stateCheck{
  display:none!important;
}
.exStates .stateBtn .stateText,
.drawerStates .stateBtn .stateText{
  width:100%;
  text-align:center;
}
@media(max-width:1180px){
  .exercise .exStates .stateBtn{
    min-width:0;
  }
}


/* v1.4.37 — étoiles mobiles plus visibles à largeur constante */
@media(max-width:620px){
  .exercise .exStarsMobile{
    width:44px!important;
    min-height:27px!important;
  }
  .exercise .exStarsMobile .exerciseStars,
  .exStarsMobile .exerciseStars{
    width:44px!important;
    min-width:44px!important;
    font-size:16px!important;
    letter-spacing:-.12em!important;
    line-height:.95!important;
  }
  .exercise .exStarsMobile .exerciseStar,
  .exStarsMobile .exerciseStar{
    width:14px!important;
  }
  .drawerStarsMobile{
    width:48px!important;
    min-height:28px!important;
  }
  .drawerStarsMobile .exerciseStars{
    width:48px!important;
    min-width:48px!important;
    font-size:16px!important;
    letter-spacing:-.10em!important;
    line-height:.95!important;
  }
  .drawerStarsMobile .exerciseStar{
    width:15px!important;
  }
}


/* v1.4.38 — défis affichés comme niveau d'étoiles */
/* Capsule « Défi » mutualisée : page élève (.exerciseStars.challengeDifficulty)
   ET page enseignant (.stars.challengeStars). font-family:inherit neutralise le
   serif hérité de .stars côté admin. */
.exerciseStars.challengeDifficulty,.stars.challengeStars{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:46px;
  min-width:46px;
  height:22px;
  box-sizing:border-box;
  border-radius:999px;
  border:1px solid #ecd9ad;
  background:#fff8ea;
  color:#e5a31c;
  font-family:inherit;
  font-size:11px;
  font-weight:800;
  letter-spacing:.01em;
  line-height:1;
}
@media(max-width:1050px){
  .exerciseStars.challengeDifficulty{width:44px;min-width:44px;font-size:11px}
}
@media(max-width:620px){
  .exercise .exStarsMobile .exerciseStars.challengeDifficulty,
  .exStarsMobile .exerciseStars.challengeDifficulty{
    width:44px!important;
    min-width:44px!important;
    height:23px!important;
    font-size:11px!important;
    letter-spacing:0!important;
  }
  .drawerStarsMobile .exerciseStars.challengeDifficulty{
    width:48px!important;
    min-width:48px!important;
    height:24px!important;
    font-size:12px!important;
    letter-spacing:0!important;
  }
}


/* Progression compacte dans les titres des vues de chapitre */
.viewTitleProgressGroup{display:flex;align-items:center;gap:14px;min-width:0}
.viewTitleProgress{display:grid;grid-template-columns:42px 116px;align-items:center;gap:8px;color:#526074;font-size:11px;font-weight:850}
.viewTitleProgress>span:first-child{text-align:right;font-variant-numeric:tabular-nums}
.viewTitleProgressCount strong{font-size:inherit}.viewTitleProgressCount small{color:var(--muted);font-size:inherit;font-weight:760}.viewTitleProgress.course .viewTitleProgressCount strong{color:var(--red)}.viewTitleProgress.exerciseApproached .viewTitleProgressCount strong{color:var(--blue)}.viewTitleProgress.exercises .viewTitleProgressCount strong{color:var(--green)}.viewTitleProgress.anki .viewTitleProgressCount strong{color:var(--purple)}
.viewTitleProgressTrack{height:7px;border-radius:999px;background:#e7eaf0;overflow:hidden}
.viewTitleProgressTrack i{display:block;width:0;height:100%;border-radius:inherit;transition:width .2s ease}
.viewTitleProgress.course .viewTitleProgressTrack i{background:var(--red)}
.viewTitleProgress.exerciseApproached .viewTitleProgressTrack i{background:var(--blue)}
.viewTitleProgress.exercises .viewTitleProgressTrack i{background:var(--green)}
.viewTitleProgress.anki .viewTitleProgressTrack i{background:var(--purple)}
/* Mode exercice : barre unique segmentée (compris vert emboîté dans abordés bleu) + double compteur compact */
.viewTitleProgress.exercisesCombined{display:flex;align-items:center;gap:8px;min-width:0}
.viewTitleProgress.exercisesCombined .viewTitleProgressTrack{flex:0 0 132px}
.viewTitleProgressCountDual{display:inline-flex;align-items:baseline;gap:4px;white-space:nowrap;font-variant-numeric:tabular-nums}
.viewTitleProgressCountDual .dualMetric{font-weight:850;color:#526074}
.viewTitleProgressCountDual .dualMetric.understood strong{color:var(--green)}
.viewTitleProgressCountDual .dualMetric.approached strong{color:var(--blue)}
.viewTitleProgressCountDual .dualSep{color:#b3bcca;margin-inline:-2px}   /* rapproche les deux nombres du point médian */
.viewTitleProgressCountDual small{color:var(--muted);font-weight:760}
.viewTitleProgressTrackStacked{position:relative}
.viewTitleProgressTrackStacked i{position:absolute;left:0;top:0;height:100%;width:0;border-radius:inherit}
.viewTitleProgressTrackStacked .segApproached{background:var(--blue);z-index:1}
.viewTitleProgressTrackStacked .segUnderstood{background:var(--green);z-index:2}
@media(max-width:620px){
  .viewTitle{align-items:center}
  .viewTitleProgressGroup{gap:9px}
  .viewTitleProgress{grid-template-columns:38px minmax(52px,88px);gap:5px}
  .viewTitleProgressTrack{height:6px}
  #ankiView .viewTitle{align-items:flex-start}
  #ankiView .viewTitleProgressGroup,#exercisesView .viewTitleProgressGroup{flex-wrap:wrap}
  #ankiView #resetAnki{padding:6px 8px;font-size:10px}
}
.visuallyHidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}

/* Essai réversible : masque le bandeau LaTeX redondant des objets de cours. */
#courseView .courseObjectBodyCrop,
.relatedContent .courseObjectBodyCrop{width:min(100%,1080px);margin:0 auto 8px;overflow:hidden;border-radius:6px;clip-path:inset(0 0 1.3% 0)}

#courseView .courseObjectBodyCrop img,
.relatedContent .courseObjectBodyCrop img{display:block!important;width:106%!important;max-width:none!important;height:auto!important;margin:-4.8% 0 -1.6% -3%!important;border-radius:0!important}

/* v1.4.39 — menu de navigation rétractable sur toutes les largeurs */
.menuBackdrop{display:none}
.menuToggle{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:10px;background:#fff;color:#263247;padding:5px 11px;font-weight:800}
.menuToggle:hover{border-color:#b9c8df;background:#f8faff}.menuToggle:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.topbar{display:flex;justify-content:flex-start;padding:0 22px}
.mobileSearchToggle{margin-left:auto}
.app.sidebar-collapsed{grid-template-columns:minmax(0,1fr)}
.app.sidebar-collapsed>.sidebar{display:none}

@media(max-width:900px){
  .app{display:block}
  .app>.sidebar{position:fixed;z-index:50;top:56px;left:0;width:min(320px,88vw);height:calc(100dvh - 56px);padding:20px 18px;box-shadow:16px 0 36px rgba(7,14,27,.28)}
  .app:not(.sidebar-open)>.sidebar{display:none}
  .app.sidebar-open>.sidebar{display:flex}
  .app.sidebar-open>.menuBackdrop{display:block;position:fixed;z-index:40;inset:56px 0 0;background:rgba(7,14,27,.46)}
  .topbar{min-height:56px}
}

/* v1.4.41 — deux lignes compactes et alignées dans le bandeau d’exercice */
.drawerHead{
  grid-template-columns:42px minmax(0,1fr) 34px!important;
  grid-template-areas:"number title close" "toolbar toolbar toolbar";
  grid-template-rows:minmax(36px,auto) 26px;
  column-gap:8px!important;
  row-gap:4px!important;
  align-items:center!important;
  padding:8px 12px!important;
}
.drawerHead>.drawerNumberColumn{grid-area:number}
.drawerHead>.drawerTitleColumn{grid-area:title}
.drawerHead>.drawerClose{grid-area:close;justify-self:end;align-self:center;width:34px!important;height:34px!important}
.drawerHead .drawerNumber{width:36px!important;height:36px!important;border-radius:10px!important;font-size:16px!important}
.drawerHead .drawerTitleColumn h2{min-height:36px!important;margin:0!important}
.drawerHead>.drawerToolbar{grid-area:toolbar;min-width:0;height:26px;display:flex;align-items:center;gap:4px;overflow-x:auto;overflow-y:hidden;scrollbar-width:none}
.drawerHead>.drawerToolbar::-webkit-scrollbar{display:none}
.drawerHead .drawerStarsMobile{flex:0 0 48px!important;width:48px!important;min-height:26px!important;height:26px!important}
.drawerHead .drawerStarsMobile .exerciseStars{height:26px;align-items:center}
.drawerHead .drawerStates{flex:0 0 auto;flex-wrap:nowrap!important;gap:4px!important;margin:0!important}
.drawerHead .drawerStates .stateBtn,.drawerHead .drawerTabs button{height:26px!important;min-height:26px!important;padding:0 8px!important;border-radius:8px!important;font-size:11px!important;line-height:1!important}
.drawerHead .drawerTabs{flex:0 0 auto;align-items:center;gap:4px;margin:0 0 0 auto;flex-wrap:nowrap}
/* Pied du tiroir : navigation exercice précédent / suivant */
.drawer .drawerScroll{flex:1 1 auto;min-height:0}
.drawerFoot{flex:0 0 auto;display:flex;gap:10px;justify-content:space-between;align-items:center;background:#fff;border-top:1px solid var(--line);padding:10px 20px;padding-bottom:max(10px,env(safe-area-inset-bottom))}
.drawerNavBtn{border:1px solid var(--line);background:#fff;border-radius:11px;padding:9px 16px;font-size:14px;font-weight:750;color:#39465b;line-height:1;display:inline-flex;align-items:center;gap:6px;cursor:pointer}
.drawerNavBtn span{font-size:18px;font-weight:900}
.drawerNavBtn:hover:not(:disabled){background:#eef1f6;border-color:#c9d2e0}
.drawerNavBtn:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.drawerNavBtn:disabled{opacity:.34;cursor:default}
@media(max-width:620px){.drawerFoot{padding:8px 14px;padding-bottom:max(8px,env(safe-area-inset-bottom))}.drawerNavBtn{padding:8px 13px;font-size:13px}}
@media(max-width:620px){
  .drawerHead{grid-template-columns:38px minmax(0,1fr) 32px!important;grid-template-rows:minmax(34px,auto) 26px;padding:7px 10px!important}
  .drawerHead .drawerNumber{width:34px!important;height:34px!important}
  .drawerHead .drawerTitleColumn h2{min-height:34px!important}
  .drawerHead .drawerStarsMobile{flex-basis:44px!important;width:44px!important}
}

/* v1.4.42 — contexte de page et progressions dans le bandeau commun */
.topbar{
  display:grid;
  grid-template-columns:minmax(150px,1fr) auto minmax(150px,1fr);
  align-items:center;
  gap:12px;
  height:60px;
  padding:0 20px;
}
.topbarPageContext{grid-column:2;display:flex;align-items:center;justify-content:center;gap:14px;min-width:0}
.viewSwitcherWrap{position:relative}
.viewSwitcherTrigger{border:0;background:transparent;padding:0;margin:0;color:#263247;font-size:17px;font-weight:800;line-height:1.15;white-space:nowrap;cursor:pointer;display:flex;align-items:center;gap:5px}
.viewSwitcherChevron{font-size:11px;line-height:1;opacity:.5}
.viewSwitcherMenu{position:absolute;top:calc(100% + 6px);left:50%;transform:translateX(-50%);background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 4px 16px rgba(0,0,0,.1);padding:5px;z-index:200;min-width:170px}
.viewSwitcherOption{display:flex;align-items:center;gap:9px;width:100%;padding:6px 12px;border:0;background:transparent;border-radius:8px;cursor:pointer;font:inherit;font-size:13px;font-weight:700;color:#425066;text-align:left;white-space:nowrap}
.viewSwitcherOption:hover{background:#f1f4f8}
.viewSwitcherOption.active{background:#f1f4f8;color:#263247;font-weight:800}
.viewSwitcherOptionIcon{font-size:13px;opacity:.6;flex-shrink:0;width:16px;text-align:center}
/* Couleurs par catégorie — options du sélecteur de page (bandeau sticky) */
.viewSwitcherOption[data-switcher-view]{margin:2px 0}
.viewSwitcherOption[data-switcher-view] .viewSwitcherOptionIcon{opacity:1;color:inherit}
.viewSwitcherOption[data-switcher-view="dashboard"]{background:#faf1d6;color:#8a6d12}
.viewSwitcherOption[data-switcher-view="course"]{background:var(--redSoft);color:var(--red)}
.viewSwitcherOption[data-switcher-view="exercises"]{background:var(--blueSoft);color:var(--blue)}
.viewSwitcherOption[data-switcher-view="anki"]{background:var(--purpleSoft);color:var(--purple)}
.viewSwitcherOption[data-switcher-view="chapterInterros"]{background:var(--interroSoft);color:var(--interro)}
.viewSwitcherOption[data-switcher-view="documents"]{background:#eceef2;color:#14181f}
.viewSwitcherOption[data-switcher-view="dashboard"]:hover,.viewSwitcherOption[data-switcher-view="dashboard"].active{background:#a8821a;color:#fff}
.viewSwitcherOption[data-switcher-view="course"]:hover,.viewSwitcherOption[data-switcher-view="course"].active{background:var(--red);color:#fff}
.viewSwitcherOption[data-switcher-view="exercises"]:hover,.viewSwitcherOption[data-switcher-view="exercises"].active{background:var(--blue);color:#fff}
.viewSwitcherOption[data-switcher-view="anki"]:hover,.viewSwitcherOption[data-switcher-view="anki"].active{background:var(--purple);color:#fff}
.viewSwitcherOption[data-switcher-view="chapterInterros"]:hover,.viewSwitcherOption[data-switcher-view="chapterInterros"].active{background:var(--interro);color:#fff}
.viewSwitcherOption[data-switcher-view="documents"]:hover,.viewSwitcherOption[data-switcher-view="documents"].active{background:#14181f;color:#fff}
.viewSwitcherWrap.viewSwitcherDisabled .viewSwitcherTrigger{cursor:default;pointer-events:none}
.viewSwitcherWrap.viewSwitcherDisabled .viewSwitcherChevron{display:none}
.topbarProgress{display:flex;align-items:center;gap:9px;min-width:0}
.topbarEnd{grid-column:3;display:flex;align-items:center;justify-self:end;gap:8px}
.topbarChapter{display:inline-flex;align-items:center;justify-content:center;gap:1px;min-width:30px;height:30px;padding:0 10px;border:1px solid #b8c9e8;border-radius:10px;background:var(--blueSoft);color:var(--blue)}
.topbarChapterPrefix{font-size:inherit;font-weight:800}
.topbarChapter strong{font-size:inherit;font-weight:900;font-variant-numeric:tabular-nums}
.topbar[data-view="exercises"] .viewSwitcherTrigger{color:var(--blue)}
.topbar[data-view="interros"] .viewSwitcherTrigger{color:var(--interro)}
.topbar[data-view="chapterInterros"] .viewSwitcherTrigger{color:var(--interro)}
.topbar[data-view="colles"] .viewSwitcherTrigger{color:var(--colle)}
.topbar[data-view="course"] .viewSwitcherTrigger{color:var(--red)}
.topbar[data-view="anki"] .viewSwitcherTrigger{color:var(--purple)}
.topbar[data-view="annualProgress"] .viewSwitcherTrigger,.topbar[data-view="resultats"] .viewSwitcherTrigger,.topbar[data-view="dashboard"] .viewSwitcherTrigger{color:#8a6d12}
.topbar[data-view="documents"] .viewSwitcherTrigger{color:#14181f}
.viewResultCountRow{display:flex;justify-content:flex-end;min-height:20px;margin:0 0 7px}
.ankiResetRow{display:flex;justify-content:flex-end;margin-top:18px}
#dashboardView>.dashboardResumeRow{margin-top:0}

@media(max-width:760px){
  /* Toutes les topbars de liste : MÊME hauteur, contenu centré verticalement, police de l'accueil (13px). */
  .topbar{grid-template-columns:auto minmax(0,1fr) auto;height:40px;min-height:40px;padding:0 10px;gap:7px;align-items:center;font-size:13px}
  .topbar .menuToggle{padding:5px 8px;height:auto;font-weight:850;line-height:1}   /* même bouton Menu qu'à l'accueil (.courseParcoursMenu) : 13px/850, line-height:1 → ~55×28 */
  .topbarPageContext{grid-column:2;flex-direction:column;gap:2px;overflow:visible;justify-content:center}
  #topbarTitle{font-size:13px;font-weight:800}
  .filterIcon{display:inline-block}
  .filterToggleLbl{display:none}   /* mobile : « Filtres » → entonnoir pour gagner de la place */
  .courseParcoursBar .courseParcoursMenu{font-size:13px}   /* Menu identique partout : accueil, hub ET topbar parcours (run) — même police que .menuToggle (liste). Spécificité > règle de base 15px. */
  /* --- Harmonisation des boutons du topbar liste (référence = topbar accueil) --- */
  /* (1) MÊME HAUTEUR pour tous les boutons. */
  .topbar .menuToggle,
  .topbar .sectionHomeBtn,
  .topbar .courseFilterToggle,.topbar .exFilterToggle,.topbar .ankiSelectionToggle,
  .topbar .topbarExpandToggle,
  .topbar .topbarCourseSection .courseSectionChooser,
  .topbar .topbarChapter{height:28px;min-height:28px}
  /* (2) Boutons ICÔNE (‹ accueil · entonnoir · ▼) : même largeur carrée. */
  .topbar .sectionHomeBtn,
  .topbar .courseFilterToggle,.topbar .exFilterToggle,.topbar .ankiSelectionToggle,
  .topbar .topbarExpandToggle{width:28px;min-width:28px;padding:0;align-items:center;justify-content:center}   /* PAS de display ici : la visibilité par-vue (course/exos/anki) reste gérée par les règles dédiées */
  /* (3) Sélecteur de CHAPITRE (« Ch. 99 ») : largeur fixe. */
  .topbar .topbarChapter{width:54px;min-width:54px;max-width:54px;padding-inline:4px;justify-content:center}
  /* (3bis) Bouton de PARTIE (« I ») : resserré mais assez large pour afficher « Tout » sans déborder. */
  .topbar .topbarCourseSection .courseSectionChooser{width:40px;min-width:40px;max-width:40px;padding-inline:3px;justify-content:center}
  .viewSwitcherTrigger{max-width:100%}
  #topbarTitle{overflow:hidden;text-overflow:ellipsis;min-width:0}
  .topbarProgress{max-width:100%;gap:5px;overflow-x:auto;scrollbar-width:none}
  [data-topbar-progress="exercises"]{flex-direction:column;gap:2px;align-items:stretch;overflow-x:visible}
  .topbarProgress::-webkit-scrollbar{display:none}
  .topbarProgress .viewTitleProgress{grid-template-columns:30px minmax(44px,62px);gap:4px;font-size:9px}
  .topbarProgress .viewTitleProgress.exercisesCombined{font-size:9px;gap:6px}
  .topbarProgress .viewTitleProgress.exercisesCombined .viewTitleProgressTrack{flex:1 1 auto;min-width:56px}
  .topbarProgress .viewTitleProgressTrack{height:5px}
  .topbarEnd{grid-column:3;gap:4px}
  .topbarChapter{min-width:30px;height:28px;padding:0 7px}
  .mobileSearchToggle{margin-left:0;padding:7px 9px}
  .mobileSearchToggle>span:last-child{display:none}
  .mobileSearchPanel:not(.hidden){grid-column:1 / -1;width:100%;padding:2px 0 4px}
}

/* v1.4.43 — bouton Menu stable et ciblage Anki sur une ligne */
.menuToggle{flex:0 0 auto;height:30px;padding:0 10px;justify-content:center}
.ankiTargetLabelMobile{display:none}
@media(max-width:760px){
  .ankiTargetRow{align-items:flex-start;display:grid;grid-template-columns:1fr;gap:4px}
  .ankiTargetBadges{display:grid;width:100%;gap:3px;flex-wrap:nowrap}
  .ankiTargetBadges.fiveColumns{grid-template-columns:repeat(5,minmax(0,1fr))}
  .ankiTargetBadges.fourColumns{grid-template-columns:repeat(4,minmax(0,1fr))}
  .ankiTargetBadge{width:100%;min-width:0;height:27px;padding:3px 3px 3px 5px;gap:2px;overflow:hidden;white-space:nowrap;font-size:clamp(7px,2.2vw,10px)}
  .ankiTargetCount{flex:0 0 auto;min-width:14px;height:14px;padding:0 2px;font-size:7px}
  .ankiTargetLabelDesktop{display:none}
  .ankiTargetLabelMobile{display:inline}
}

/* v1.4.46 — capsules du tiroir réparties sous le titre en portrait */
@media(max-width:760px) and (orientation:portrait){
  .drawerHead>.drawerToolbar{display:grid;grid-template-columns:42px max-content minmax(0,1fr);align-items:center;column-gap:8px}
  .drawerHead .drawerStarsMobile{flex-basis:32px!important;width:32px!important}
  .drawerHead .drawerStarsMobile{grid-column:1;justify-self:center}
  .drawerHead .drawerStarsMobile .exerciseStars{width:32px!important;min-width:32px!important;font-size:9px!important;gap:0!important}
  .drawerHead .drawerStarsMobile .exerciseStar{width:10px!important}
  .drawerHead .drawerStates,.drawerHead .drawerTabs{gap:1px!important}
  .drawerHead .drawerStates{grid-column:2;justify-self:start}
  .drawerHead .drawerStates .stateBtn{min-width:0!important;width:auto!important}
  .drawerHead .drawerTabs{grid-column:3;justify-self:end;margin:0}
  .drawerHead .drawerStates .stateBtn,.drawerHead .drawerTabs button{height:24px!important;min-height:24px!important;padding:0 .35em!important;border-radius:6px!important;font-size:clamp(7px,1.9vw,8.5px)!important}
}
@media(max-width:620px) and (orientation:portrait){
  .drawerHead>.drawerToolbar{grid-template-columns:38px max-content minmax(0,1fr)}
}

/* v1.4.47 — page globale Interros, résultats locaux non déclaratifs */
.interrosPrivacy{margin:0 0 14px;padding:10px 13px;border-radius:11px;background:#edf8f2;color:#32664e;font-size:11px;line-height:1.45}
.interrosList{display:grid;gap:12px}
.interroCard{min-width:0;border:1px solid var(--line);border-radius:17px;background:#fff;box-shadow:0 7px 20px rgba(31,50,86,.06);overflow:hidden}
.interroCardToggle{display:grid;width:100%;grid-template-columns:minmax(0,1fr) auto 18px;align-items:center;gap:18px;padding:15px 17px;border:0;background:#fff;color:inherit;font:inherit;text-align:left;cursor:pointer}
.interroAccordionArrow{display:inline-block;color:#8090a8;font-size:22px;line-height:1;transition:transform .15s}.interroCardToggle[aria-expanded="true"] .interroAccordionArrow,.interroCorrectionToggle[aria-expanded="true"] .interroAccordionArrow{transform:rotate(90deg)}
.interroCardIdentity{min-width:0}.interroCardIdentity time{display:block;margin-bottom:3px;color:var(--compris);font-size:10px;font-weight:850;text-transform:uppercase;letter-spacing:.045em}.interroCardIdentity .interroDay{color:var(--interro)}
.interroCardIdentity h2{margin:0;color:#29384f;font-size:16px;line-height:1.3}.interroCardIdentity p{margin:3px 0 0;color:var(--muted);font-size:11px}
.interroCardState{display:grid;justify-items:end;gap:3px;white-space:nowrap}.interroCardState strong{color:#33435a;font-size:13px}.interroCardState span{color:#718096;font-size:10px}
.interroCardBody{padding:0 17px 17px;border-top:1px solid var(--line)}
.interroYesterday{display:grid;gap:3px;margin:13px 0;padding:10px 12px;border-left:3px solid #6ca98b;border-radius:0 10px 10px 0;background:#f5fbf7;color:#435b4f;font-size:11px}.interroYesterday strong{color:var(--compris);font-size:9px;text-transform:uppercase;letter-spacing:.055em}.interroYesterday div{display:flex;flex-wrap:wrap;gap:4px;margin-top:3px}
.interroYesterday code,.interroRecoveryRefs code{padding:3px 6px;border-radius:6px;background:#eef2f6;color:#4c5b70;font-family:inherit;font-size:9px}
.interroQuestions{display:grid;gap:8px;margin:13px 0;padding:0;list-style:none;counter-reset:interro-question}
.interroQuestion{padding:12px;border:1px solid #e2e7ef;border-radius:12px;background:#fbfcfe}
.interroQuestion.reussie{border-left:4px solid #2d925d}.interroQuestion.fragile{border-left:4px solid #d59a22}.interroQuestion.aReprendre{border-left:4px solid #c64a4a}
.interroQuestionHead{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.interroQuestionCopy{min-width:0}.interroQuestionNumber{display:inline;font-weight:900;color:#4b596f}.interroQuestionCopy p{margin:0;color:#2f3b4d;font-size:13px;line-height:1.4}
.interroQuestionNote{flex:0 0 auto;display:flex;align-items:center;justify-content:flex-end;white-space:nowrap;font-weight:850;color:#28364d;font-size:13px}
.interroPointInput{display:flex;align-items:center;gap:5px}.interroPointInput input{width:68px;height:35px;padding:0 7px;border:1px solid #ccd5e2;border-radius:8px;background:#fff;color:#28364d;font:inherit;font-size:13px;text-align:center}.interroPointInput b{color:#5f6c80;font-size:11px}.interroPointInput input:focus{outline:2px solid rgba(40,119,85,.18);border-color:#69a78b}
.interroLineMarks{display:inline-flex;gap:5px;flex:0 0 auto}
.interroLineMark{width:34px;height:30px;border:1px solid #d8e0ec;background:#fff;border-radius:8px;font:inherit;font-size:15px;font-weight:800;line-height:1;cursor:pointer;color:#9aa6b6;transition:.12s;display:grid;place-items:center}
.interroLineMark:hover{background:#f5f7fb}
.interroLineMark.reussi.active{border-color:#69a78b;background:#eaf7f0;color:#1f7a4d}
.interroLineMark.rate.active{border-color:#e0a3a3;background:#fbeeee;color:#b23b3b}
.interroLines{display:grid;gap:6px;width:100%;margin-top:10px}
/* Maths display \[...\] dans une interro : marges verticales resserrées (énoncé + correction). */
.interroQuestion mjx-container[display="true"]{margin:.04em 0!important;padding:0!important}
.interroQuestion mjx-container[display="true"]:first-child{margin-top:0!important}
.interroQuestion mjx-container[display="true"]:last-child{margin-bottom:0!important}
.interroCollect{display:flex;justify-content:flex-end;margin-top:10px}.interroCollectBtn{border:1px solid var(--line);background:#fff;border-radius:9px;padding:8px 12px;font:inherit;font-size:12px;font-weight:800;color:#4d596d;cursor:pointer}.interroCollectBtn:hover{background:#f5f7fb}.interroCollectBtn.collected{background:var(--interroSoft);border-color:var(--interroLight);color:var(--interro)}
.interroLine{display:grid;grid-template-columns:auto auto 1fr;align-items:center;gap:9px;padding:7px 9px;border:1px solid #d8e0ec;border-radius:9px;background:#fff;font-size:12px}
.interroLine.obtained{border-color:#69a78b;background:#f2faf6}
.interroLine.failed{border-color:#e0a3a3;background:#fdf4f4}
.interroLinePoints{font-weight:850;color:var(--compris);min-width:24px}
.interroLine:not(.obtained) .interroLinePoints{color:#9aa6b6}
.interroLineCriterion{color:#3a465a;line-height:1.3}
.interroLineComp{display:block;color:#7686a6;font-size:10px;text-transform:uppercase;letter-spacing:.04em;margin-top:2px}
.interroLineTotal{justify-self:end;font-weight:850;color:#28364d;font-size:13px}
.interroQuestionStatus{display:inline-flex;align-items:center;min-height:21px;padding:0 7px;border-radius:999px;font-size:8px;font-weight:900;text-transform:uppercase}.interroQuestionStatus.reussie{background:var(--greenSoft);color:var(--green)}.interroQuestionStatus.fragile{background:#fff3d8;color:#986514}.interroQuestionStatus.aReprendre{background:var(--redSoft);color:var(--red)}.interroQuestionStatus.empty{background:#eef1f5;color:#7e8897}
.interroAssessment{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;margin:14px 0}.interroAssessment>div{min-width:0;padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:#fff}.interroAssessment span{display:block;color:#778397;font-size:8px;font-weight:850;text-transform:uppercase;letter-spacing:.045em}.interroAssessment strong{display:block;margin-top:3px;color:#344055;font-size:14px}
.interroRecoveryGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.interroRecovery{min-width:0;padding:12px;border:1px solid var(--line);border-radius:12px}.interroRecovery.priority{background:#fff8f8;border-color:#ead0d0}.interroRecovery.consolidate{background:#fffaf0;border-color:#eadcbf}.interroRecovery h4{margin:0 0 7px;color:#3d495b;font-size:13px}.interroRecovery p{margin:0;color:#788397;font-size:10px}.interroRecovery ol{display:grid;gap:5px;margin:0 0 9px;padding-left:18px}.interroRecovery li{color:#445066;font-size:10px;line-height:1.35}.interroRecovery li strong{margin-right:5px}.interroRecoveryRefs{margin-top:7px}.interroRecoveryRefs>strong{display:block;margin-bottom:4px;color:#66748a;font-size:8px;text-transform:uppercase}.interroRecoveryRefs>div{display:flex;flex-wrap:wrap;gap:4px}.interroStatusBoundary{margin:11px 0 0;color:#778397;font-size:9px;line-height:1.4}
@media(max-width:760px){
  .interroCardToggle{grid-template-columns:minmax(0,1fr) auto 14px;gap:9px;padding:13px}.interroCardState strong{font-size:11px}.interroCardBody{padding:0 12px 13px}.interroQuestion{grid-template-columns:minmax(0,1fr) 120px;gap:8px}.interroAssessment{grid-template-columns:repeat(3,minmax(0,1fr))}.interroRecoveryGrid{grid-template-columns:1fr}
}
@media(max-width:480px){
  .interroCardToggle{grid-template-columns:minmax(0,1fr) 14px}.interroCardState{grid-column:1;justify-items:start}.interroCardToggle>.interroAccordionArrow{grid-column:2;grid-row:1 / span 2}.interroQuestion{grid-template-columns:1fr}.interroQuestionScore{grid-template-columns:1fr auto;align-items:end;justify-items:start}.interroAssessment{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* v1.4.48 — Interros rattachées aux chapitres et bilan global transversal */
.interroQuestionStatus.nonSaisi{background:#eef1f5;color:#7e8897}.interroQuestionStatus.partiel{background:#eaf1fb;color:#34679d}
.interroChapterMetrics{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin:0 0 10px}.interroChapterMetrics>div{min-width:0;padding:11px 12px;border:1px solid var(--line);border-radius:11px;background:#fff}.interroChapterMetrics span{display:block;color:#778397;font-size:8px;font-weight:850;text-transform:uppercase;letter-spacing:.045em}.interroChapterMetrics strong{display:block;margin-top:4px;color:#344055;font-size:16px}
.interroChapterRecovery{display:grid;grid-template-columns:1fr;gap:9px;margin:0 0 14px}
.interroRecovery li small{display:block;margin:0 0 2px;color:#7b8798;font-size:8px;font-weight:750}
.interroGlobalRecovery{margin:0 0 13px}.interroGlobalRecovery .interroRecovery{padding:14px}
.interroGlobalChapters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.interroGlobalChapterCard{min-width:0;padding:13px;border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:0 6px 17px rgba(31,50,86,.055)}
.interroGlobalChapterCard header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid var(--line)}.interroGlobalChapterCard header>div{display:grid;justify-items:start;gap:5px}.interroGlobalChapterCard header>div>span:first-child{color:#29384f;font-size:13px;font-weight:850;line-height:1.35}.interroGlobalChapterCard button{flex:0 0 auto;min-height:30px;padding:0 10px;border:1px solid #a9ceb9;border-radius:8px;background:#edf8f2;color:var(--compris);font:inherit;font-size:9px;font-weight:850;cursor:pointer}.interroGlobalChapterCard button:hover{background:#e1f2e9}
.interroGlobalChapterMetrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;padding-top:10px}.interroGlobalChapterMetrics>div{min-width:0;padding:7px;border-radius:8px;background:#f7f9fc}.interroGlobalChapterMetrics strong{display:block;color:#344055;font-size:13px}.interroGlobalChapterMetrics span{display:block;margin-top:2px;color:#7b8798;font-size:7px;font-weight:800;text-transform:uppercase;line-height:1.25}
@media(max-width:760px){
  .interroChapterMetrics{grid-template-columns:repeat(3,minmax(0,1fr))}.interroChapterRecovery{grid-template-columns:1fr}.interroGlobalChapters{grid-template-columns:1fr}
}
@media(max-width:480px){
  .interroChapterMetrics{grid-template-columns:repeat(2,minmax(0,1fr))}.interroGlobalChapterCard header{display:grid;grid-template-columns:1fr}.interroGlobalChapterCard button{justify-self:start}.interroGlobalChapterMetrics{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* v1.4.49 — points entiers, corrigés et reprise manuelle des interros */
.interroChapterMetrics{grid-template-columns:repeat(7,minmax(0,1fr))}
.interroManualReview{display:flex!important;align-items:center;gap:6px;color:#5d6879;font-size:10px;font-weight:800;cursor:pointer}.interroManualReview input{width:16px;height:16px;margin:0;accent-color:#b63f3f}.interroManualReview span{white-space:nowrap}
.interroCorrection{margin-top:9px;border:1px solid #dce3ed;border-radius:9px;background:#fff;overflow:hidden}.interroCorrectionToggle{display:flex;width:100%;align-items:center;justify-content:space-between;gap:8px;padding:7px 9px;border:0;background:#fff;color:#356a53;font:inherit;font-size:9px;font-weight:850;text-align:left;cursor:pointer}.interroCorrectionToggle .interroAccordionArrow{font-size:16px}.interroCorrection>div{display:grid;gap:8px;padding:9px;border-top:1px solid #e5e9f0;color:#3e4a5d;font-size:10px;line-height:1.45}.interroCorrection h5{margin:0 0 5px;color:#607087;font-size:9px;text-transform:uppercase}.interroCorrection p{margin:0}.interroCorrection ol,.interroCorrection ul{display:grid;gap:5px;margin:0;padding-left:18px}.interroCorrection li span{margin-left:5px}.interroCorrection li small{display:block;color:#778397}
.interroCorrection>div[hidden]{display:none}
.interroRefContent{display:block}
.interroRefContent img{display:block;max-width:100%;height:auto;margin:4px auto;border-radius:6px}
.interroRefContent.ankiBack{font-size:13px;line-height:1.5}
.interroRefDemo{margin-top:6px}
.interroRefDemo summary{cursor:pointer;color:#607087;font-size:10px;font-weight:850;text-transform:uppercase}
.interroCorrection .pdfFrame{height:60vh;min-height:320px}
.interroCorrection .pdfToolbar{padding:6px 0}
.interroChapterAnalysis{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:0 0 10px}.interroEvolution,.interroCompetencies{min-width:0;padding:12px;border:1px solid var(--line);border-radius:12px;background:#fff}.interroEvolution h3,.interroCompetencies h3{margin:0 0 9px;color:#344055;font-size:13px}.interroEvolution>div,.interroCompetencies>div{display:grid;gap:5px}.interroEvolution article{display:grid;grid-template-columns:82px minmax(0,1fr) auto;align-items:center;gap:7px;padding:7px;border-radius:8px;background:#f7f9fc}.interroEvolution time{color:#778397;font-size:8px}.interroEvolution article strong{min-width:0;color:#435066;font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.interroEvolution article span{color:#56647a;font-size:9px;font-weight:800;white-space:nowrap}.interroEvolution footer{display:flex;justify-content:space-between;gap:8px;margin-top:8px;padding-top:8px;border-top:1px solid var(--line);color:#344055;font-size:10px}.interroCompetencies>p{margin:0;color:#778397;font-size:10px}.interroCompetencies article{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:8px;padding:7px 8px;border-left:3px solid #c7ced9;border-radius:7px;background:#f7f9fc}.interroCompetencies article.reussie{border-left-color:#2d925d}.interroCompetencies article.fragile{border-left-color:#d59a22}.interroCompetencies article.aReprendre{border-left-color:#c64a4a}.interroCompetencies article strong{font-size:10px}.interroCompetencies article span,.interroCompetencies article b{font-size:9px}
.interroTypeProfile{min-width:0;padding:12px;border:1px solid var(--line);border-radius:12px;background:#fff}
.interroTypeProfile h3{margin:0 0 9px;color:#344055;font-size:13px}
.interroTypeProfile>div{display:grid;gap:5px}
.interroTypeProfile>p{margin:0;color:#778397;font-size:10px}
.interroTypeProfile article{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:8px;padding:7px 8px;border-left:3px solid #c7ced9;border-radius:7px;background:#f7f9fc}
.interroTypeProfile article.reussie{border-left-color:#2d925d}
.interroTypeProfile article.fragile{border-left-color:#d59a22}
.interroTypeProfile article.aReprendre{border-left-color:#c64a4a}
.interroTypeProfile article strong{font-size:10px}
.interroTypeProfile article span,.interroTypeProfile article b{font-size:9px}
.interroRecovery li{position:relative;padding-right:56px}.interroRecovery li>span{display:block}.interroRecovery li em{display:block;margin-top:2px;color:#a13b3b;font-size:8px;font-style:normal;font-weight:800}.interroRecovery li button{position:absolute;top:0;right:0;min-height:23px;padding:0 7px;border:1px solid #cbd5e1;border-radius:7px;background:#fff;color:#506078;font:inherit;font-size:8px;font-weight:850;cursor:pointer}.interroRecoveryRemaining{margin-top:7px!important;font-style:italic}.interroGlobalChapterMetrics{grid-template-columns:repeat(5,minmax(0,1fr))}.interroGlobalCompetencies{display:grid;gap:3px;margin:9px 0 0;padding-top:8px;border-top:1px solid var(--line);color:#66748a;font-size:9px}.interroGlobalCompetencies strong{color:#4a586d;font-size:8px;text-transform:uppercase}
.interroRecoveryRefs .interroRecoveryLink{min-height:24px;padding:3px 7px;border:1px solid #b9c8dc;border-radius:7px;background:#fff;color:#315f91;font:inherit;font-size:9px;font-weight:800;cursor:pointer}.interroRecoveryRefs .interroRecoveryLink:hover,.interroRecoveryRefs .interroRecoveryLink:focus-visible{border-color:#6f94c0;background:#eef5fc;outline:none}.interroRecoveryRefs .interroRecoveryLink.anki{border-color:#cbbbe5;color:#67449a}.interroRecoveryRefs .interroRecoveryLink.exercise{border-color:#b7d6c3;color:var(--compris)}

/* Démonstrations du cours : retire une largeur source fixe à gauche. */
#courseView .courseContent .courseObjectDemoCrop{
  position:relative!important;
  width:min(100%,1080px)!important;
  margin:0 auto 8px!important;
  overflow:hidden!important;
  border-radius:6px!important;
}
#courseView .courseContent .courseObjectDemoCrop > img.latexImage,
#courseView .courseContent .courseObjectDemoCrop > img{
  display:block!important;
  width:var(--course-demo-image-width,100%)!important;
  max-width:none!important;
  height:auto!important;
  margin:0 0 0 var(--course-demo-image-left,0)!important;
  border-radius:0!important;
}

/* Commandes du cours : filtres compacts, sans duplication des actions du bandeau. */
#courseView .viewCommandShell>.courseMobileFilterBar{
  grid-template-columns:repeat(2,minmax(110px,1fr))!important;
  align-items:center!important;
}
#courseView #courseMobileType{order:1}
#courseView #courseMobileStatus{order:2}
@media(max-width:620px){
  #courseView .viewCommandShell>.courseMobileFilterBar{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important}
  #courseView #courseMobileType{grid-column:1;grid-row:1}
  #courseView #courseMobileStatus{grid-column:2;grid-row:1}
}

/* Parties du cours : contrôle compact dans le bandeau sticky, après Menu. */
.topbarStart{grid-column:1;display:flex;align-items:center;gap:7px;justify-self:start}
.topbarCourseSection{display:none;position:relative;padding:0;background:transparent;border:0;border-radius:0}
.topbar[data-view="course"] .topbarCourseSection{display:block}
.topbarCourseSection .courseSectionChooser{display:flex;width:auto;min-width:44px;max-width:60px;height:30px;padding:0 8px;align-items:center;justify-content:center;gap:4px;border:1px solid #d6b2ae;background:#fff;color:var(--red);border-radius:10px;text-align:center}
.topbarCourseSection .courseSectionChooserValue{min-width:0;font-weight:850;white-space:nowrap}
.topbarCourseSection .courseSectionChevron{display:none}
.topbarCourseSection .courseSectionMenu{right:0;left:auto;top:calc(100% + 6px);width:min(380px,calc(100vw - 20px));max-height:min(430px,calc(100dvh - 80px))}
@media(max-width:760px){
  .topbarStart{gap:4px}
  .topbarCourseSection .courseSectionChooser{width:auto;min-width:40px;max-width:54px;height:30px;padding-inline:6px}   /* n'affiche que le roman (I/II/Tout) → bouton resserré au contenu */
  .topbarCourseSection .courseSectionMenu{width:min(340px,calc(100vw - 20px))}
}
.courseBulkToggle{display:none;height:34px;padding:0 9px;border:1px solid #d6b2ae;border-radius:9px;background:#fff;color:var(--red);font:inherit;font-weight:850;white-space:nowrap}
.topbar[data-view="course"] .courseBulkToggle{display:inline-flex;align-items:center;justify-content:center}
.courseBulkToggle:hover,.courseBulkToggle:focus-visible{border-color:#c47771;background:var(--redSoft);outline:none}
.courseBulkToggle:disabled{opacity:.5;cursor:default}
@media(max-width:760px){.courseBulkToggle{height:32px;padding-inline:6px}}
/* Page Cours — mode Parcours (un objet à la fois) */
.courseModeToggle{display:none;height:30px;min-width:40px;padding:0 10px;border:1px solid var(--red);background:#fff;color:var(--red);border-radius:10px;font:inherit;font-weight:850;font-size:14px;line-height:1;cursor:pointer;white-space:nowrap}
.topbar[data-view="course"] .courseModeToggle{display:inline-flex;align-items:center;justify-content:center}
.courseModeToggle:hover{background:var(--redSoft)}
.courseModeToggle[aria-pressed="true"]{background:var(--red);border-color:var(--red);color:#fff}
.courseModeToggle:focus-visible{outline:2px solid var(--red);outline-offset:2px}
.courseParcoursBar{position:sticky;top:0;z-index:6;display:flex;align-items:center;justify-content:space-between;gap:10px;margin:-14px -14px 12px;padding:6px 14px;background:#fff;border:0;border-bottom:1px solid var(--line);border-radius:0;box-shadow:0 2px 6px rgba(31,50,86,.05)}
/* Parcours : compaction verticale (un seul objet à l'écran) */
.courseParcours .objectCard{margin-bottom:0}
.courseParcours .objectInner{padding:var(--cardPadV) 13px}
.courseParcours .courseContent{margin-top:8px;padding-top:8px}
.courseParcours .courseParcoursExos{margin-top:9px;padding-top:9px}
.courseParcours .courseParcoursLinks{margin-top:8px}
.courseParcoursTop{display:flex;align-items:center;gap:9px;min-width:0;flex:0 1 auto}
.courseParcoursBar>.courseParcoursNav{flex:0 0 auto;margin-left:auto}
.courseParcoursBar>.courseParcoursExit{flex:0 0 auto;margin-left:auto}
.courseParcoursNav{display:flex;align-items:center;gap:7px}
.courseParcoursNav .courseParcoursForward{flex:1 1 auto}
.courseParcoursForward{display:flex;align-items:center;gap:7px;flex-wrap:nowrap;justify-content:flex-end}
.courseParcoursFwd{border:1px solid var(--line);background:#fff;border-radius:10px;padding:5px 13px;font:inherit;font-weight:850;color:#39465b;cursor:pointer;display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.courseParcoursFwd span{font-size:16px;font-weight:900}
.courseParcoursFwd:hover:not(:disabled){background:#eef1f6;border-color:#c9d2e0}
.courseParcoursFwd:disabled{opacity:.4;cursor:default}
.courseParcoursFwd.known{border-color:#aad9bd;background:var(--greenSoft);color:var(--green)}
.courseParcoursFwd.known:hover:not(:disabled){background:#d8f0e3}
.courseParcoursFwd.review{border-color:#edbeb9;background:var(--redSoft);color:var(--red)}
.courseParcoursFwd.review:hover:not(:disabled){background:#fbe0dd}
.courseParcoursPrev{padding:5px 11px}
.courseParcoursExit{border:1px solid var(--line);background:#fff;color:#39465b;border-radius:10px;padding:5px 11px;font:inherit;font-size:15px;font-weight:850;line-height:1;cursor:pointer;display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.courseParcoursExit:hover{filter:brightness(1.07)}
.courseParcoursExit:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.courseParcoursBtn{border:1px solid var(--line);background:#fff;border-radius:10px;padding:5px 14px;font:inherit;font-weight:800;color:#39465b;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.courseParcoursBtn span{font-size:17px;font-weight:900}
.courseParcoursBtn:hover:not(:disabled){background:#eef1f6;border-color:#c9d2e0}
.courseParcoursBtn:disabled{opacity:.4;cursor:default}
.courseParcoursPos{font-size:12px;font-weight:850;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.courseParcoursLinks{margin-top:10px;border:1px solid var(--line);border-radius:12px;background:#fff;overflow:hidden}
.courseParcoursLinks>summary{cursor:pointer;padding:10px 12px;font-size:12px;font-weight:850;color:var(--blue);list-style:none}
.courseParcoursLinks>summary::-webkit-details-marker{display:none}
.courseParcoursLinks>summary::before{content:"▸ ";color:#9aa6b6}
.courseParcoursLinks[open]>summary::before{content:"▾ "}
.courseParcoursLinksBody{padding:10px 12px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:12px}
.courseParcoursAnki{display:flex;flex-direction:column;gap:8px}
.courseParcoursAnki .relatedVirtualCard{border:1px solid var(--line);border-radius:10px;padding:0;background:#fff;overflow:hidden}.courseParcoursAnki .relatedVirtualPrompt{margin:0;padding:8px 10px;background:#eef2f8;border-bottom:1px solid var(--line)}.courseParcoursAnki .relatedVirtualAnswer{padding:9px 10px}.relatedVirtualCard mjx-container[display="true"],#cardFront mjx-container[display="true"],#cardBack mjx-container[display="true"]{margin:.3em 0!important}.relatedVirtualCard mjx-container[display="true"]:last-child,#cardFront mjx-container[display="true"]:last-child,#cardBack mjx-container[display="true"]:last-child{margin-bottom:0!important}.relatedVirtualCard .relatedVirtualAnswer>:last-child,#cardFront>:last-child,#cardBack>:last-child{margin-bottom:0}
.courseParcoursExos{margin-top:12px;border-top:1px solid var(--line);padding-top:11px}
.courseParcoursExos .courseLinkedLabel{display:block;margin-bottom:7px}.courseParcoursExosHead{display:flex;align-items:center;gap:8px;margin-bottom:7px}.courseParcoursExosHead .courseLinkedLabel{display:inline;margin-bottom:0}
.courseParcoursExos .linkedExParcoursBtn{border-color:transparent;background:var(--blueSoft)}
.courseParcoursExos .linkedExParcoursBtn:hover{background:#dce8fb}
.parcoursExItem{border:1px solid var(--line);border-radius:10px;background:#fff;margin-bottom:6px;overflow:hidden}
.parcoursExHead{width:100%;display:flex;align-items:center;gap:9px;padding:9px 11px;background:transparent;border:0;font:inherit;text-align:left;cursor:pointer;overflow:hidden}
.parcoursExHead:hover{background:rgba(0,91,211,.04)}
.parcoursExHead:focus-visible{outline:2px solid var(--blue);outline-offset:-2px}
.parcoursExNum{flex:0 0 auto;width:28px;min-width:28px;height:28px;border-radius:8px;font-weight:900;font-size:12px}
.parcoursExTitle{flex:1 1 auto;min-width:0;overflow:hidden;font-size:13px;font-weight:750;color:#26344a}
/* Bouton « Ouvrir » à droite de chaque titre d'exercice lié (ouvre l'énoncé en dessous). */
.parcoursExOpen{margin-left:auto;flex:0 0 auto;display:inline-flex;align-items:center;gap:3px;border:1px solid #b9cef0;background:#f2f6fd;color:var(--blue);border-radius:8px;padding:4px 9px;font-size:12px;font-weight:800;white-space:nowrap}
.parcoursExHead:hover .parcoursExOpen{background:#e6eefb;border-color:#9bbaea}
.parcoursExItem.open .parcoursExOpen{background:var(--blue);border-color:var(--blue);color:#fff}
.parcoursExChevron{transition:transform .15s}
.parcoursExItem.open .parcoursExChevron{transform:rotate(90deg)}
.parcoursExStars{flex:0 0 auto}
.parcoursExStars .exerciseStars{width:auto;min-width:0;font-size:13px}
.parcoursExChevron{flex:0 0 auto;color:#9aa6b6;font-size:18px;line-height:1;transition:transform .15s ease}
.parcoursExItem.open .parcoursExChevron{transform:rotate(90deg);color:var(--blue)}
.parcoursExItem .exerciseInlineStatement{border-top:1px solid var(--line);padding:10px 11px;background:#fbfcfe}
/* Libellé de la partie au centre de la barre */
.courseParcoursPartie{flex:1 1 auto;min-width:0;text-align:left;font-size:13px;font-weight:850;color:#26344a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Écran de choix de la partie */
.courseParcoursPickTitle{position:absolute;left:50%;transform:translateX(-50%);text-align:center;font-size:15px;font-weight:850;color:#26344a;white-space:nowrap;pointer-events:none}
#courseView .courseParcoursPickTitle{color:var(--red)}
.exoParcoursPick .courseParcoursPickTitle{color:var(--blue)}
#courseView .courseParcoursPartie{color:var(--red)}
.drawerParcoursTop .courseParcoursPartie{color:var(--blue)}
.coursePartiePick .courseParcoursBar,.exoParcoursPick .courseParcoursBar,.ankiParcoursPick .courseParcoursBar,.interroParcoursPick .courseParcoursBar,#dashboardView .courseParcoursBar,#ceSoirContent .courseParcoursBar{margin-bottom:9px}   /* même écart barre→sélecteur pour les sections ET les hubs (Bilan/Jour) et l'interro */
.parcoursChapterRow{margin:6px 0 9px}   /* petit espace au-dessus du sélecteur de chapitre : ne colle pas la barre d'onglets */
.parcoursChapterSelect{width:100%;border:1px solid var(--blue);border-radius:11px;background:#fff;padding:9px 12px;font:inherit;font-size:14px;font-weight:850;color:var(--blue);cursor:pointer}
.parcoursChapterSelect:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.partiePickGrid{display:grid;gap:7px}
/* 3e ligne de la carte « Tout le chapitre » : accès direct aux listes filtrées (type / étoiles / compétences / colle).
   Boutons de MÊME largeur qui s'empilent (grille), même hauteur que .pickBtn ; couleur par type. Pas de trait. */
/* Boutons de type PLEINE LARGEUR alignés en colonnes sous la ligne « barre + boutons » (flex 1 1 0, gap 6px). */
.pickTypeRow{display:flex;flex-wrap:nowrap;gap:6px;margin-top:8px}
.pickTypeRow+.pickTypeRow{margin-top:6px}
.pickTypeBtn{flex:1 1 0;min-width:0;border:1px solid var(--line);background:#fff;border-radius:9px;padding:6px 6px;font:inherit;font-size:11px;line-height:1.15;font-weight:850;color:#39465b;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:4px;white-space:normal;text-align:center}
.pickTypeBtn:hover{filter:brightness(.97)}
.pickTypeBtn b{color:inherit;font-weight:900}
/* Couleurs par type (cours) : Définitions=bleu, Propositions/Théorème=rouge, Méthodes=violet, Colle=orange colle. */
.pickTypeBtn[data-course-type-link="definition"]{border-color:#b9cef0;color:var(--blue);background:var(--blueSoft)}
.pickTypeBtn[data-course-type-link="result"],.pickTypeBtn[data-course-type-link="theoreme"]{border-color:#e6b6b2;color:var(--red);background:var(--redSoft)}
.pickTypeBtn[data-course-type-link="methode"]{border-color:#cbbce6;color:var(--purple);background:var(--purpleSoft)}
.pickTypeBtn.colle{border-color:#eab873;color:var(--colle);background:var(--colleSoft)}
.pickTypeBtn.comp{border-color:#a9d9bd;color:var(--green);background:var(--greenSoft)}
/* Exos : étoiles de même largeur (étroites) + Colles à la largeur du texte ; compétences à la largeur
   du contenu (icône seule / icône+nom), jamais étirées ; les deux sous-lignes wrappent si besoin. */
.pickTypeStars{flex-wrap:wrap}
.pickTypeStars .pickTypeBtn:not(.colle){flex:0 0 auto;width:50px}
.pickTypeStars .pickTypeBtn.colle{flex:0 0 auto}   /* Colles : largeur du texte */
/* Compétences : ligne à part, MÊME largeur, remplissent la ligne (flex:1 1 0). */
.pickTypeComps{flex-wrap:nowrap}
.pickTypeComps .pickTypeBtn{flex:1 1 0;min-width:0}
/* Icône (symbole FontAwesome) de compétence : à côté du nom sur desktop, seule sur mobile (place réduite). */
.pickTypeBtn.comp{gap:4px;padding-inline:9px}
.compIcon{display:inline-flex;align-items:center;flex:0 0 auto}
.compIcon svg{height:.95em;width:auto;fill:currentColor}
@media(max-width:760px){.pickTypeComps .compName{display:none}}
/* Bloc « tout le chapitre » + cartes de partie : barre segmentée (répartit l'info) + 3 boutons de périmètre toujours visibles */
.pickChapterBlock{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:11px;margin-bottom:16px}
.pickChapterTop{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.pickChapterLabel{font-size:14px;font-weight:850;color:#1c2738}
.partiePickCard{background:#fff;border:1px solid var(--line);border-radius:12px;padding:6px 12px;display:flex;flex-direction:column;gap:5px}
.partiePickInfo{display:flex;align-items:center;gap:8px;min-width:0}
.partiePickNum{flex:0 0 auto;min-width:26px;height:20px;padding:0 6px;border-radius:6px;background:var(--blueSoft);color:var(--blue);font-weight:900;font-size:12px;display:grid;place-items:center}
.partiePickDay{flex:0 0 auto;text-align:right;font-size:11px;font-weight:800;color:#111;white-space:nowrap}
.partiePickBody{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:6px}
.partiePickTitle{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:800;color:#1c2738}
.partiePickKnown{flex:0 0 auto;font-size:11px;font-weight:850;color:var(--green);white-space:nowrap}
.pickSegBar{position:relative;height:8px;border-radius:999px;overflow:hidden;background:#edf0f5}
.pickSegBar.pickSegBarBig{height:12px}
.pickSeg{position:absolute;left:0;top:0;height:100%;border-radius:999px}
.pickSeg.review{background:linear-gradient(90deg,#c0392b,#e57368);z-index:1}
.pickSeg.revu{background:linear-gradient(90deg,#e0850f,#f2ad55);z-index:1}
.pickSeg.known{background:linear-gradient(90deg,var(--compris),var(--comprisLight));z-index:2}
/* Cartes « partie » de l'accueil parcours interro : bouton pleine largeur calqué sur les autres pages */
.interroPickCard{width:100%;font:inherit;text-align:left;cursor:pointer;transition:.15s}
.interroPickCard:hover{border-color:#9ccbb0;box-shadow:0 6px 16px rgba(31,50,86,.06)}
.interroPickCard .partiePickInfo{width:100%}
.interroPickCard .pickBarCount.interroPending{color:#8a94a6;font-weight:800}
/* Case « Absent·e » (interro ignorée dans les bilans) */
.interroAbsentToggle{margin-left:auto;flex:0 0 auto;border:1px solid #cbd5e1;background:#fff;color:#6b7688;border-radius:999px;padding:2px 10px;font:inherit;font-size:10px;line-height:1.4;font-weight:800;cursor:pointer;white-space:nowrap}
.interroAbsentToggle:hover{background:#f1f4f8}
.interroAbsentToggle.on{background:#6b7688;border-color:#6b7688;color:#fff}
.interroPickCard.absent{opacity:.75}
/* Bouton « Liste » (≣) compact, en fin de rangée de périmètre d'une partie (Cours/Exos/Anki). */
.pickBtn.pickBtnListMini{flex:0 0 auto;padding:6px 9px;font-size:14px;font-weight:900;color:#54627a;background:#f4f6fb;border-style:dashed}
.pickBtn.pickBtnListMini:hover{background:#e9edf4}
.exPickChoices .pickBtn.pickBtnListMini{flex:0 0 auto}
/* Bouton « ‹ Accueil » de la topbar (entre Menu et Filtres), visible seulement en vue liste
   d'une section — l'accueil et le run masquent toute la topbar (mode immersif). */
.sectionHomeBtn{display:none;align-items:center;justify-content:center;gap:5px;height:30px;padding:0 12px;border:1px solid var(--line);background:#fff;color:#3f4958;border-radius:10px;font:inherit;font-weight:850;cursor:pointer;white-space:nowrap}
.sectionHomeBtn:focus-visible{outline:2px solid currentColor;outline-offset:2px}
@media(max-width:760px){.sectionHomeBtnLabel{display:none}.sectionHomeBtn{padding:0 9px}}   /* « ‹ Accueil » → « ‹ » pour gagner de la place */
.topbar[data-view="course"] .sectionHomeBtn,.topbar[data-view="exercises"] .sectionHomeBtn,.topbar[data-view="anki"] .sectionHomeBtn,.topbar[data-view="chapterInterros"] .sectionHomeBtn{display:inline-flex}
/* Couleur ad hoc de la section (comme le bouton Filtres). */
.topbar[data-view="course"] .sectionHomeBtn{color:var(--red);border-color:#d6b2ae}
.topbar[data-view="exercises"] .sectionHomeBtn{color:var(--blue);border-color:var(--blueBorder)}
.topbar[data-view="anki"] .sectionHomeBtn{color:var(--purple);border-color:#c0aadc}
.topbar[data-view="chapterInterros"] .sectionHomeBtn{color:var(--interro);border-color:#9ccbb0}
.topbar[data-view="course"] .sectionHomeBtn:hover{background:var(--redSoft)}
.topbar[data-view="exercises"] .sectionHomeBtn:hover{background:var(--blueSoft)}
.topbar[data-view="anki"] .sectionHomeBtn:hover{background:var(--purpleSoft)}
.topbar[data-view="chapterInterros"] .sectionHomeBtn:hover{background:var(--interroSoft)}
/* Rangée de 6 onglets de MÊME largeur (Jour · Bilan · Cours · Exos · Anki · Interro), centrée à droite de « Menu ».
   Vaut pour les accueils de section ET les pages hub (Bilan/Jour). */
.coursePartiePick .parcoursViewTabs,.exoParcoursPick .parcoursViewTabs,.ankiParcoursPick .parcoursViewTabs,.interroParcoursPick .parcoursViewTabs,#dashboardView .parcoursViewTabs,#ceSoirContent .parcoursViewTabs{flex:1 1 auto;margin:0;justify-content:center;gap:6px;flex-wrap:nowrap}
/* Onglets de MÊME largeur sur UNE seule ligne à TOUTES les largeurs (y compris tablette >760px) :
   flex:1 1 0 → ils se partagent la largeur et rétrécissent, jamais de passage à deux lignes ni de tailles inégales. */
.coursePartiePick .parcoursViewTab,.exoParcoursPick .parcoursViewTab,.ankiParcoursPick .parcoursViewTab,.interroParcoursPick .parcoursViewTab,#dashboardView .parcoursViewTab,#ceSoirContent .parcoursViewTab{flex:1 1 0;min-width:0;padding:7px 8px;text-align:center;justify-content:center;white-space:nowrap}
/* Barre de progression des cartes d'accueil : MÊME LARGEUR qu'un bouton. Piège flex-basis:0 + border-box :
   les boutons gagnent leur padding+bordure (12px) en plus de la part égale → on donne le même padding à la barre. */
.exPickChoices .pickBarWrap,.pickChoicesRow .pickBarWrap{flex:1 1 0;min-width:0;padding-inline:6px}
/* La barre colorée remplit toute la largeur du slot (annule le padding de compensation) → bord à bord comme les boutons. */
.exPickChoices .pickBarWrap .pickSegBar.pickSegBarRow,.pickChoicesRow .pickBarWrap .pickSegBar.pickSegBarRow{margin-inline:-6px;width:calc(100% + 12px)!important}
.achievementTitleStar{display:none}   /* médaille : cachée sur desktop (mot « Achievements » affiché) */
.lblShort{display:none}   /* boutons de périmètre : libellé long par défaut (« À faire »…), court sur mobile */
/* Mobile : onglets qui rétrécissent (une seule ligne), « Menu » resserré, barres sans libellé
   (« Connu : » etc.), marges réduites, et « Achievements » remplacé par la médaille 🏅. */
@media(max-width:760px){
  .coursePartiePick .parcoursViewTabs,.exoParcoursPick .parcoursViewTabs,.ankiParcoursPick .parcoursViewTabs,.interroParcoursPick .parcoursViewTabs,#dashboardView .parcoursViewTabs,#ceSoirContent .parcoursViewTabs{flex-wrap:nowrap;gap:4px}
  .coursePartiePick .parcoursViewTab,.exoParcoursPick .parcoursViewTab,.ankiParcoursPick .parcoursViewTab,.interroParcoursPick .parcoursViewTab,#dashboardView .parcoursViewTab,#ceSoirContent .parcoursViewTab{flex:1 1 0;padding:6px 3px;font-size:11px;white-space:nowrap}   /* police/padding réduits + nowrap : « Interro » (le libellé le plus long) tient dans sa pastille, avec de la marge pour les polices plus larges des vrais téléphones */
  .coursePartiePick .courseParcoursMenu,.exoParcoursPick .courseParcoursMenu,.ankiParcoursPick .courseParcoursMenu,.interroParcoursPick .courseParcoursMenu,#dashboardView .courseParcoursMenu,#ceSoirContent .courseParcoursMenu{padding:5px 8px;font-size:13px;flex:0 0 auto}
  .pickBarLabel{display:none}   /* barres de progression : pas de « Connu : » / « Compris : » sur mobile */
  .lblLong{display:none}
  .lblShort{display:inline}   /* « À faire » → « Faire », « À revoir » → « Revoir », etc. */
  .app.courseFocus .content,.app.exoFocus .content,.app.ankiFocus .content,.app.interroFocus .content,.app.hubFocus .content{padding-inline:6px!important}   /* marges g/d réduites sur les accueils (bat le padding:14px des règles focus) */
  .achievementTitleWord{display:none}
  .achievementTitleStar{display:inline-flex;align-items:center;font-size:17px;line-height:1}   /* médaille 🏅, distincte des étoiles ★ */
}
/* Raccourcis « Bilan » et « Jour » : mêmes dimensions que les onglets, teinte neutre pour les distinguer des sections. */
.parcoursHubTab{color:#5a6577}
.parcoursHubTab:hover{background:#f5f7fa;border-color:#c7d0de}
.parcoursViewTab.parcoursHubTab.active{background:#39465b;border-color:#39465b;color:#fff}
/* Bilan actif : couleur « or » (résultats/achievements) — à tester. */
.parcoursViewTab.parcoursHubTab.active[data-hub-view="dashboard"]{background:linear-gradient(180deg,#f4cf6a,#e0b143);border-color:#cc9e34;color:#5f4100}
/* Jour actif : jaune — à tester. */
.parcoursViewTab.parcoursHubTab.active[data-hub-view="ceSoir"]{background:#ffdd57;border-color:#e6be00;color:#5a4600}
/* Pages hub (Vue d'ensemble = Bilan, Travail du jour = Jour) rendues comme les accueils de section :
   menu replié, topbar masquée, plein écran. Même traitement que .courseFocus/.ankiFocus. */
.app.hubFocus{grid-template-columns:1fr}
.app.hubFocus:not(.sidebar-open)>.sidebar{display:none}
.app.hubFocus.sidebar-open>.sidebar{display:flex;position:fixed;z-index:60;top:0;left:0;width:min(320px,88vw);height:100dvh;box-shadow:16px 0 36px rgba(7,14,27,.28)}
.app.hubFocus.sidebar-open>.menuBackdrop{display:block;position:fixed;z-index:55;inset:0;background:rgba(7,14,27,.46)}
.app.hubFocus .topbar{display:none}
.app.hubFocus .content{padding:14px;max-width:900px;margin:0 auto}   /* même contrainte/centrage que .courseFocus/.ankiFocus */
/* Le host ne doit pas créer de bloc conteneur, sinon la barre sticky reste piégée dans sa hauteur → pas de sticky. */
.accueilHeaderHost{display:contents}
/* Parcours en RUN sur appareil tactile (portrait ET paysage) : plein écran fixe (100dvh), corps
   non-scrollable, contenu qui défile à l'intérieur → la barre d'adresse ne se cache/réaffiche plus.
   overscroll-behavior:none = pas de rebond en bout de course (qui, sinon, fait réapparaître la barre). */
@media(pointer:coarse){
  /* Toute vue de chapitre (accueil, liste, parcours, Bilan/Jour) en plein écran fixe :
     corps non-scrollable, seul .content défile → la barre d'adresse du navigateur ne bouge plus. */
  .app.chapterFixed{height:100dvh;overflow:hidden}
  .app.chapterFixed .main{height:100dvh;min-height:0;display:flex;flex-direction:column;overflow:hidden}
  .app.chapterFixed .content{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:none;width:100%}   /* largeur pleine et stable : sans width:100%, margin:0 auto (focus) désactive le stretch flex → la largeur suivrait celle de l'image → clignotement au chargement */
  .app.listView .content{padding-inline:6px!important}   /* liste : marges gauche/droite fines */
  .app.chapterFixed:not(.listView):not(.parcoursRun) .content{padding-top:0!important}   /* accueil/hub : barre d'onglets collée en haut (pas de gap) */
  .app.parcoursRun .content{padding:0 6px 24px!important}   /* parcours : pas d'espace en haut (bat le padding:14px focus) */
  /* La barre bleede jusqu'aux bords de l'écran EXACTEMENT (le contenu a 6px de padding, pas 14px) :
     sinon margin-inline:-14px déborde de 8px et pousse le dernier onglet (« Interro ») hors écran ; top:0 évite tout rognage en haut. */
  .app.chapterFixed .courseParcoursBar{margin-top:0;margin-inline:-6px}
}
.pickChoices{display:flex;gap:8px;flex-wrap:wrap}
.pickChoicesRow{flex-wrap:nowrap;align-items:center}
.pickChoicesRow .pickSegBar.pickSegBarRow{flex:1 1 auto;min-width:44px;height:10px}
/* Picker exos : barre de progression sur sa ligne, puis les 4 boutons de périmètre sur une ligne */
.exoParcoursPick .partiePickCard{gap:7px}
.exPickChoices{display:flex;flex-wrap:nowrap;align-items:center;gap:6px}
.exPickChoices .pickSegBar.pickSegBarRow{flex:1 1 0;width:auto;min-width:0;height:10px}
.exPickChoices .pickBtn{flex:1 1 0;min-width:0;padding:6px 5px;font-size:11px;gap:3px;white-space:normal;line-height:1.15;text-align:center}
.exPickChoices .pickBtn b{font-size:11px}
/* Barre du picker exos : jamais sur deux lignes (titre tronqué) */
.exoParcoursPick .courseParcoursBar{flex-wrap:nowrap}
.exoParcoursPick .courseParcoursPickTitle{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
/* Accueil parcours (Cours + Exos) : barre toujours sur une ligne, « Vue liste » à droite (même en portable) */
.coursePartiePick .courseParcoursBar{flex-wrap:nowrap}
.coursePartiePick .courseParcoursTop{flex:0 1 auto}
.pickBtn.amber{background:var(--amberSoft);border-color:#e6c98a;color:var(--amber)}
/* Couleurs des boutons de périmètre alignées sur les segments de la barre */
.pickBtn.allEx{background:#fff;border:1.5px solid #111;color:#111;font-weight:900}
.pickBtn.todoGrey{background:#f1f3f7;border-color:#8f9cb0;color:#5a6577}
.pickBtn.evalBlue{background:var(--blueSoft);border-color:#5a8fd4;color:var(--blue)}
.pickBtn{flex:1 1 0;min-width:0;border:1.5px solid var(--line);background:#fff;border-radius:10px;padding:6px 6px;font:inherit;font-weight:800;font-size:11px;line-height:1.15;color:#39465b;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap;padding-block:6px}
.pickBtn b{font-weight:900}
.pickBtn.review{border-color:#cf8579;background:var(--redSoft);color:var(--red)}.pickBtn[data-pick="all"]{background:#fff;border:1.5px solid #111;color:#111;font-weight:900}.pickBtn[data-pick="notKnown"]{background:#f1f3f7;border-color:#8f9cb0;color:#5a6577}
.pickBtnEmpty{visibility:hidden;pointer-events:none}
/* Récap de fin de partie */
.courseParcoursRecap{display:flex;justify-content:center;padding-top:16px}
.recapCard{background:#fff;border:1px solid var(--line);border-radius:18px;padding:26px 22px;max-width:520px;width:100%;text-align:center;box-shadow:var(--shadow)}
.recapDone{width:52px;height:52px;border-radius:50%;background:var(--greenSoft);color:var(--green);font-size:26px;font-weight:900;display:grid;place-items:center;margin:0 auto 12px}
.recapCard h2{font-size:20px;margin:0 0 16px}
.recapStats{display:flex;justify-content:center;gap:18px;flex-wrap:wrap;margin-bottom:20px}
.recapStat{font-size:12px;font-weight:800;color:#46566e}
.recapStat b{font-size:21px;display:block;line-height:1.1}
.recapStat.known b{color:var(--green)}
.recapStat.review b{color:var(--red)}
.recapStat.none b{color:var(--muted)}
.recapActions{display:flex;flex-direction:column;gap:9px}
/* Bilan de fin de parcours cours (variante A) : top compact, blocs Cours/Exos, barres + boutons. */
.courseParcoursRecap.recap2{display:block;padding:6px 0 24px}
.recap2{max-width:640px;margin:0 auto;padding:0 14px}
.recap2Head{display:flex;align-items:center;gap:9px;font-size:17px;font-weight:900;color:#17233a;margin:2px 0 14px}
.recap2Check{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--greenSoft);color:var(--green);font-size:15px;font-weight:900;flex:0 0 auto}
.recap2Group{margin-bottom:15px}
.recap2GroupTitle{font-size:11px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin-bottom:7px}
/* Ligne unique : partie · barre de progression · boutons (repli multi-lignes si trop étroit).
   Largeurs FIXES (libellé, barre) pour que les lignes s'alignent d'un groupe à l'autre. */
/* Fin de parcours : chaque ligne sur DEUX lignes → (1) libellé de partie (III + titre),
   (2) barre de progression + boutons. */
.recap2Row{background:#fff;border:1px solid var(--line);border-radius:12px;padding:9px 12px;margin-bottom:8px;display:flex;flex-direction:column;align-items:stretch;gap:6px}
.recap2RowLabel{font-size:13px;font-weight:850;color:#26344a;min-width:0}
.recap2RowBottom{display:flex;align-items:center;gap:10px}
.recap2RowBottom .pickBarWrap{flex:1 1 auto;min-width:0}
.recap2RowBtns{display:flex;flex-wrap:wrap;gap:6px;margin-left:auto;flex:0 0 auto}
.recap2InterroNote{font-size:12px;font-weight:800;color:#7c8798;white-space:nowrap}
/* Étiquette « … : partie suivante » au-dessus de la 2e carte (couleur de la matière). */
.recapNextLabel{font-size:12.5px;font-weight:850;margin:10px 2px 3px}
/* Groupes du récap (par activité) : encadré teinté à la couleur de la matière. */
.recapGroup{border-radius:14px;padding:10px 12px;margin-bottom:10px}
.recapGroup.rcCours{background:var(--redSoft)}
.recapGroup.rcExos{background:var(--blueSoft)}
.recapGroup.rcAnki{background:var(--purpleSoft)}
.recapGroupTitle{font-size:12.5px;font-weight:850;margin:0 2px 7px}
.recapGroup.rcCours .recapGroupTitle,.recapGroup.rcCours .recapNextLabel{color:var(--red)}
.recapGroup.rcExos .recapGroupTitle,.recapGroup.rcExos .recapNextLabel{color:var(--blue)}
.recapGroup.rcAnki .recapGroupTitle,.recapGroup.rcAnki .recapNextLabel{color:var(--purple)}
/* Titres de rubrique dans la couleur de leur page */
.recap2Group.rcCours .recap2GroupTitle,.recap2Group.rcCours .recap2RowLabel{color:var(--red)}
.recap2Group.rcExos .recap2GroupTitle,.recap2Group.rcExos .recap2RowLabel{color:var(--blue)}
.recap2Group.rcAnki .recap2GroupTitle,.recap2Group.rcAnki .recap2RowLabel{color:var(--purple)}
.recap2Group.rcInterro .recap2GroupTitle,.recap2Group.rcInterro .recap2RowLabel{color:var(--interro)}
.recapBtn2{font:inherit;font-size:12px;font-weight:800;padding:5px 12px;border-radius:9px;border:1px solid var(--line);background:#fff;color:#39465b;cursor:pointer}
.recapBtn2:hover{background:#eef1f6;border-color:#c9d2e0}
.recapBtn2.primary{background:var(--blue);border-color:var(--blue);color:#fff}
.recapBtn2.review{border-color:#edbeb9;background:var(--redSoft);color:var(--red)}
.recap2Foot{margin-top:4px}
.recapBtn{border:1px solid var(--line);background:#fff;border-radius:11px;padding:11px 14px;font:inherit;font-weight:800;color:#39465b;cursor:pointer}
.recapBtn:hover{background:#eef1f6}
.recapBtn.review{border-color:#edbeb9;background:var(--redSoft);color:var(--red)}
.recapBtn.primary{border-color:var(--blue);background:var(--blue);color:#fff}
.recapBtn.primary:hover{filter:brightness(1.06)}
.recapBtn.recapExercices{border-color:var(--blueBorder);background:var(--blueSoft);color:var(--blue)}
.recapBtn.recapExercices:hover{background:#dbe8fb}
.recapBtn.recapCours{border-color:#d6b2ae;background:var(--redSoft);color:var(--red)}
.recapBtn.recapCours:hover{background:#fbe0dd}
@media(max-width:760px){.courseParcoursBtn{padding:5px 11px;font-size:13px}.courseParcoursExit{padding:5px 11px;font-size:13px}.courseParcoursBar{flex-wrap:wrap;gap:4px 8px}.courseParcoursTop{flex:1 1 100%;min-width:0}.courseParcoursBar>.courseParcoursNav{flex:1 1 0;order:1;margin-left:0}.courseParcoursBar>.courseParcoursExit{flex:0 0 auto;order:1;margin-left:0}.courseParcoursForward{flex-wrap:nowrap;gap:6px}.courseParcoursFwd{flex:1 1 0;justify-content:center;padding:5px 7px;font-size:12px}}
/* Mode focus (immersif) du Parcours : on masque la chrome de l'app, l'objet occupe tout l'écran */
.app.courseFocus{grid-template-columns:1fr}
/* Parcours cours : chrome masquée, mais le bouton menu de la barre parcours ouvre la sidebar en overlay */
.app.courseFocus:not(.sidebar-open)>.sidebar{display:none}
.app.courseFocus.sidebar-open>.sidebar{display:flex;position:fixed;z-index:60;top:0;left:0;width:min(320px,88vw);height:100dvh;box-shadow:16px 0 36px rgba(7,14,27,.28)}
.app.courseFocus.sidebar-open>.menuBackdrop{display:block;position:fixed;z-index:55;inset:0;background:rgba(7,14,27,.46)}
.app.courseFocus .topbar{display:none}
/* Barre parcours : menu à gauche, « Vue liste » poussé à droite */
.parcoursFilterChip{flex:0 0 auto;border:1px solid #d6b2ae;background:var(--redSoft);color:var(--red);border-radius:999px;padding:5px 11px;font:inherit;font-weight:800;font-size:12px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.parcoursFilterChip:hover{background:#fbe0dd}
.courseParcoursMenu{flex:0 0 auto;border:1px solid var(--line);background:#fff;border-radius:10px;padding:5px 12px;font:inherit;font-size:15px;font-weight:850;color:#39465b;cursor:pointer;line-height:1}
.courseParcoursMenu:hover{background:#eef1f6;border-color:#c9d2e0}
.courseParcoursTop>.courseParcoursExit{margin-left:0}
/* Parcours : Menu et Suivant/Connu/À revoir à hauteur identique. */
.courseParcoursMenu,.courseParcoursForward .courseParcoursFwd{height:28px;padding-top:0;padding-bottom:0;box-sizing:border-box}
.app.courseFocus .content{padding:14px;max-width:900px;margin:0 auto}
.app.courseFocus #courseView .courseActiveFilters,
.app.courseFocus #courseView .courseFilterPanel{display:none}
/* Mode Parcours des exercices : focus immersif (miroir de courseFocus) + tiroir en page plein écran */
.app.exoFocus{grid-template-columns:1fr}
.app.exoFocus:not(.sidebar-open)>.sidebar{display:none}
.app.exoFocus.sidebar-open>.sidebar{display:flex;position:fixed;z-index:60;top:0;left:0;width:min(320px,88vw);height:100dvh;box-shadow:16px 0 36px rgba(7,14,27,.28)}
.app.exoFocus.sidebar-open>.menuBackdrop{display:block;position:fixed;z-index:55;inset:0;background:rgba(7,14,27,.46)}
.app.exoFocus .topbar{display:none}
.app.exoFocus .content{padding:14px;max-width:900px;margin:0 auto}
.app.exoFocus #exercisesView .courseActiveFilters,
.app.exoFocus #exercisesView .courseFilterPanel{display:none}
/* Boutons topbar exos (mode parcours + Filtrer) : bleus, visibles seulement en vue Exercices */
.topbar[data-view="course"] button.exModeToggle,.topbar[data-view="course"] button.exFilterToggle{display:none}
.topbar[data-view="exercises"] .exModeToggle{display:inline-flex;align-items:center;justify-content:center;border-color:var(--blueBorder);color:var(--blue)}
.topbar[data-view="exercises"] .exModeToggle:hover{background:var(--blueSoft)}
.topbar[data-view="exercises"] .exModeToggle[aria-pressed="true"]{background:var(--blue);border-color:var(--blue);color:#fff}
.topbar[data-view="exercises"] .exModeToggle:focus-visible{outline-color:var(--blue)}
.topbar[data-view="exercises"] .exFilterToggle{display:inline-flex;border-color:var(--blueBorder);color:var(--blue)}
.exBulkToggleFoot{border-color:var(--blueBorder)!important;color:var(--blue)!important}
/* Le tiroir latéral devient une page focus pleine largeur (au clic depuis la liste ET en parcours) */
.drawerBackdrop.parcoursFocus{background:#f7f8fc;justify-content:flex-start}
.drawerBackdrop.parcoursFocus .drawer{width:100%;box-shadow:none}
/* Parcours : cadres empilés plus serrés (moins d'air entre panneau lié / compétences / énoncé) */
.drawerBackdrop.parcoursFocus .drawerScroll{padding-top:10px;padding-bottom:16px}
.drawerBackdrop.parcoursFocus .drawerMobileCompetences{margin-bottom:8px}
.drawerBackdrop.parcoursFocus .relatedPanel{margin-bottom:8px}
/* Pied du run : position i/N + barre de validation */
.drawerParcoursValidate{display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end;flex:1 1 auto}
.drawerParcoursValidate.hidden,.drawerParcoursPos.hidden,#drawerNext.hidden{display:none}
.drawerParcoursPos{font-size:12px;font-weight:800;color:#7c8798;white-space:nowrap;padding:0 4px}
.courseParcoursFwd.blue{border-color:#a9c6ef;background:var(--blueSoft);color:var(--blue)}
.courseParcoursFwd.blue:hover:not(:disabled){background:#dbe8fb}
/* Picker « Construis ton parcours » */
.exoParcoursPick .parcoursChapterRow{margin-bottom:12px}
.exoPickBuilder{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px}
.exoPickField{display:flex;flex-direction:column;gap:6px}
.exoPickField>span{text-transform:uppercase;letter-spacing:.02em;font-size:11px;font-weight:850;color:#7c8798}
.exoPickField select{border:1px solid var(--line);border-radius:10px;padding:9px 10px;font:inherit;font-weight:700;background:#fff;color:#17233a}
.pickSeg2Row{display:flex;gap:5px;flex-wrap:wrap}
.pickSeg2{border:1px solid var(--line);background:#fff;border-radius:9px;padding:8px 11px;font:inherit;font-weight:800;color:#39465b;cursor:pointer}
.pickSeg2.active{background:var(--blue);border-color:var(--blue);color:#fff}
.exoPickLaunchRow{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:14px}
.pickLaunch{border:1px solid var(--blue);background:var(--blue);color:#fff;border-radius:12px;padding:12px 20px;font:inherit;font-size:15px;font-weight:850;cursor:pointer;display:inline-flex;align-items:center;gap:8px}
.pickLaunch b{background:rgba(255,255,255,.22);border-radius:8px;padding:1px 9px}
.pickLaunch:hover:not(:disabled){filter:brightness(1.07)}
.pickLaunch:disabled{opacity:.45;cursor:default}
.exoPickPoolNote{font-size:12px;color:#7c8798;font-weight:700}
@media(max-width:620px){.exoPickBuilder{grid-template-columns:1fr}}
/* Réorg vue Liste : bouton Filtrer (topbar) + panneau repliable + rappel des filtres actifs */
.courseFilterToggle{display:none;position:relative;height:30px;padding:0 12px;border:1px solid var(--red);border-radius:9px;background:#fff;color:var(--red);font:inherit;font-weight:850;white-space:nowrap;align-items:center;justify-content:center}
.topbar[data-view="course"] .courseFilterToggle{display:inline-flex}
.courseFilterToggle.hasFilters{background:var(--redSoft)}
.courseFilterToggle[aria-pressed="true"]{background:var(--red);border-color:var(--red);color:#fff}
.courseFilterToggle.hasFilters::after{content:attr(data-count);position:absolute;top:-6px;right:-6px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:var(--nav);color:#fff;font-size:10px;font-weight:900;display:grid;place-items:center}
/* Vue Exercices : le bouton « Filtres » prend la couleur exercices (bleu), pas cours (rouge).
   Scopé sous .topbar[data-view="exercises"] pour battre la règle resting (0,3,0) existante. */
.topbar[data-view="exercises"] .exFilterToggle.hasFilters{background:var(--blueSoft)}
.topbar[data-view="exercises"] .exFilterToggle[aria-pressed="true"]{background:var(--blue);border-color:var(--blue);color:#fff}
/* Cadre des filtres à la largeur des listes (« comme le reste ») */
.courseFilterPanel{background:#fff;border:1px solid #e8edf5;border-radius:14px;padding:6px 16px;margin-bottom:12px;display:flex;flex-direction:column;gap:0;box-shadow:0 2px 10px rgba(29,45,78,.05);width:100%;max-width:var(--listMaxWidth)}
/* Compteur « N résultats » retiré du panneau : gagne l'espace vertical du bas */
.courseFilterPanel .courseFilterFoot{display:none}
/* Neutralise la marge globale !important (-10/+8) qui créait du blanc asymétrique sous la barre */
.courseFilterPanel .filterBar{margin:0!important}
/* Chips un peu plus bas pour un cadre serré (pas de blanc superflu) */
.courseFilterPanel .chip{padding-top:5px;padding-bottom:5px}
/* Cours : Type et Progression empilés, chacun sur SA ligne (label aligné à gauche + chips) */
#courseFilterPanel .filterBar{flex-direction:column;align-items:stretch;gap:4px}
#courseFilterPanel .filterGroup+.filterGroup{border-left:0;padding-left:0;margin-left:0}
#courseFilterPanel .filterLabel{min-width:94px}
.filterBar .filterLabel{font-size:9.5px;letter-spacing:.1em;color:var(--muted);font-weight:850;margin:0}
.chipRow{display:flex;flex-wrap:wrap;align-items:center;gap:7px}
/* Chips : chaque valeur dans SA couleur ; Tout / Tous en noir. */
.filterBar .chip{cursor:pointer;color:#4b5768;transition:background .13s ease,border-color .13s ease,color .13s ease,box-shadow .13s ease}
.filterBar .chip:hover:not(.active){background:#eef2f8;border-color:#cdd8e8;color:var(--text)}
.filterBar .chip.active{background:var(--nav);border-color:var(--nav);color:#fff;box-shadow:0 2px 6px rgba(25,39,69,.16)}
.filterBar .chip[data-course-type-filter="definition"].active{background:var(--blue);border-color:var(--blue)}
.filterBar .chip[data-course-type-filter="result"].active{background:var(--red);border-color:var(--red)}
.filterBar .chip[data-course-type-filter="methode"].active{background:var(--purple);border-color:var(--purple)}
.filterBar .chip[data-course-status-filter="known"].active{background:var(--green);border-color:var(--green)}
.filterBar .chip[data-course-status-filter="review"].active{background:var(--red);border-color:var(--red)}
.filterBar .chip[data-course-status-filter="notKnown"].active{background:#5b6b82;border-color:#5b6b82}
/* Exos : menus déroulants habillés (chevron custom, focus bleu) + pas de bande inutile sous les menus */
.filterBar select{appearance:none;-webkit-appearance:none;border:1px solid var(--line);background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236f7886' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") no-repeat right 11px center;border-radius:10px;padding:8px 32px 8px 12px;font:inherit;font-size:12.5px;font-weight:700;color:var(--text);cursor:pointer;transition:border-color .13s ease,box-shadow .13s ease}
.filterBar select:hover{border-color:#cdd8e8}
.filterBar select:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px var(--blueSoft)}
.courseFilterFoot{display:flex;align-items:center;justify-content:flex-end;gap:10px}
.courseFilterFoot .courseBulkToggle{display:inline-flex!important;align-items:center;justify-content:center}
.courseActiveFilters{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:12px}
.courseActiveFilters:empty{display:none;margin:0}
.courseFilterChip{display:inline-flex;align-items:center;gap:6px;border:1px solid #c9d6ea;background:var(--blueSoft);color:var(--blue);border-radius:999px;padding:6px 11px;font:inherit;font-weight:800;font-size:12px;cursor:pointer}
.courseFilterChip:hover{background:#dce8fb}
.courseFilterChip span{font-size:10px;opacity:.75}
@media(max-width:900px){.interroChapterMetrics{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:760px){.interroChapterAnalysis{grid-template-columns:1fr}.interroChapterMetrics{grid-template-columns:repeat(3,minmax(0,1fr))}.interroGlobalChapterMetrics{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:480px){.interroChapterMetrics{grid-template-columns:repeat(2,minmax(0,1fr))}.interroEvolution article{grid-template-columns:1fr auto}.interroEvolution time{grid-column:1 / -1}.interroEvolution footer{display:grid}.interroGlobalChapterMetrics{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* v1.4.51 — tags Anki distincts des compétences d’interro */
.interroQuestionTags span.ankiTag{background:var(--purpleSoft);color:var(--purple)}

/* v1.4.52 — accordéons Interros sans saut de défilement */

/* Crop final des objets de cours — priorité desktop/tablette/mobile */
#courseView .courseContent .courseObjectBodyCrop,
.relatedContent .courseObjectBodyCrop{
  width:min(100%,1080px)!important;
  margin:0 auto 8px!important;
  overflow:hidden!important;
  border-radius:6px!important;
  clip-path:inset(0 0 1.3% 0)!important;
}

#courseView .courseContent .courseObjectBodyCrop > img.latexImage,
#courseView .courseContent .courseObjectBodyCrop > img,
.relatedContent .courseObjectBodyCrop > img.latexImage,
.relatedContent .courseObjectBodyCrop > img{
  display:block!important;
  width:106%!important;
  max-width:none!important;
  height:auto!important;
  margin:-4.8% 0 -1.6% -3%!important;
  border-radius:0!important;
}

/* Correction tablette : titre à gauche, type + statuts à droite sur une ligne */
@media (min-width:761px) and (max-width:900px){
  #courseView .courseHeader.courseHeaderWithoutDemo{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) auto auto!important;
    align-items:center!important;
    column-gap:8px!important;
  }

  #courseView .courseHeaderWithoutDemo .courseTitleBlock,
  #courseView .courseHeaderWithoutDemo .courseTitleLine{
    display:contents!important;
  }

  #courseView .courseHeaderWithoutDemo .courseTitle{
    min-width:0!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
    white-space:nowrap!important;
  }

  #courseView .courseHeaderWithoutDemo .courseQuestionBadgeRow{
    grid-column:1 / -1!important;
    grid-row:2!important;
    margin-top:5px!important;
    justify-self:start!important;
  }
  #courseView .courseHeaderWithoutDemo .courseQuestionBadge{
    width:auto!important;
    max-width:max-content!important;
    flex:0 0 auto!important;
    white-space:nowrap!important;
    padding:3px 7px!important;
    font-size:8px!important;
    line-height:1.15!important;
  }

  #courseView .courseHeaderWithoutDemo .courseControls{
    width:auto!important;
    min-width:0!important;
    justify-self:end!important;
  }

  #courseView .courseHeaderWithoutDemo .courseStatusRows{
    display:flex!important;
    flex-direction:row!important;
    align-items:center!important;
    gap:5px!important;
  }

  #courseView .courseHeaderWithoutDemo .courseStatusRow{
    display:flex!important;
    align-items:center!important;
    gap:4px!important;
  }

  #courseView .courseHeaderWithoutDemo .courseLabelDesktop{
    display:none!important;
  }

  #courseView .courseHeaderWithoutDemo .courseLabelMobile{
    display:inline!important;
  }

  #courseView .courseHeaderWithoutDemo .courseStatusToggle{
    white-space:nowrap!important;
    padding:5px 7px!important;
    font-size:9px!important;
    text-align:center!important;
  }
}

/* v1.4.xx — bandeaux de filtres non sticky, placés en haut du contenu */
.filterBar,
.filters,
.ankiTargetPanel{
  position:static!important;
  top:auto!important;
  z-index:auto!important;
}

.filterBar,
.filters,
.ankiTargetPanel{
  margin-top:-10px!important;
  margin-bottom:8px!important;
}

/* v1.4.xx — bandeaux de commande Cours / Exercices / Cartes Anki non sticky */
#courseView .viewCommandShell,
#exercisesView .viewCommandShell,
#exercisesView .viewCommandShellExercises,
#ankiView .viewCommandShell,
#ankiView .viewCommandShellAnki{
  position:static!important;
  top:auto!important;
  z-index:auto!important;
  margin-top:-18px!important;
  margin-bottom:8px!important;
}

#courseView .viewCommandShell > .filterBar,
#exercisesView .viewCommandShell > .filters,
#exercisesView .viewCommandShellExercises > .filters,
#ankiView .viewCommandShell > .filters,
#ankiView .viewCommandShellAnki > .filters{
  position:static!important;
  top:auto!important;
  z-index:auto!important;
  margin-top:0!important;
  margin-bottom:0!important;
}

/* Cas où les filtres seraient directement enfants de la vue */
#exercisesView > .filters,
#ankiView > .filters{
  position:static!important;
  top:auto!important;
  z-index:auto!important;
  margin-top:-18px!important;
  margin-bottom:8px!important;
}

/* v1.5.1 — harmonisation commandes topbar (Cours / Exercices / Anki) */
.topbar[data-view="exercises"] .topbarCourseSection{display:block}
.topbar[data-view="anki"] .topbarCourseSection{display:block}
.topbar[data-view="chapterInterros"] .topbarCourseSection{display:block}
.topbar[data-view="exercises"] .topbarCourseSection .courseSectionChooser{border-color:var(--blueBorder);color:var(--blue)}
.topbar[data-view="anki"] .topbarCourseSection .courseSectionChooser{border-color:#c0aadc;color:var(--purple)}
.topbar[data-view="chapterInterros"] .topbarCourseSection .courseSectionChooser{border-color:#8fc6bd;color:var(--interro)}
.topbar[data-view="course"] .topbarChapter{border-color:#d6b2ae;background:var(--redSoft);color:var(--red)}
.topbar[data-view="exercises"] .topbarChapter{border-color:var(--blueBorder);background:var(--blueSoft);color:var(--blue)}
.topbar[data-view="anki"] .topbarChapter{border-color:#c0aadc;background:var(--purpleSoft);color:var(--purple)}
.topbar[data-view="chapterInterros"] .topbarChapter{border-color:#8fc6bd;background:var(--interroSoft);color:var(--interro)}
.topbar[data-view="dashboard"] .topbarChapter{border-color:#dac79a;background:#fbf3df;color:#8a6d12}
.topbar[data-view="documents"] .topbarChapter{border-color:#c9d0db;background:#eef1f6;color:#14181f}
.topbar[data-view="corrections"] .topbarChapter{border-color:var(--blueBorder);background:var(--blueSoft);color:var(--blue)}
.topbar[data-view="interrogations"] .topbarChapter{border-color:#8fc6bd;background:var(--interroSoft);color:var(--interro)}
.topbar[data-view="dm"] .topbarChapter{border-color:#dac79a;background:#fbf3df;color:#8a6d12}
.exBulkToggle{display:none;height:30px;padding:0 9px;border:1px solid var(--blueBorder);border-radius:9px;background:#fff;color:var(--blue);font:inherit;font-weight:850;white-space:nowrap;cursor:pointer}
.exBulkToggle:hover{background:#f0f5fb}
.topbar[data-view="exercises"] .exBulkToggle{display:inline-flex;align-items:center;justify-content:center}
button.topbarChapter{background:var(--blueSoft);cursor:pointer;font:inherit}
.topbarChapterWrap{position:relative}
.topbarChapterPopover{position:absolute;right:0;top:calc(100% + 6px);z-index:50;background:#fff;border:1px solid var(--line);border-radius:13px;padding:6px;box-shadow:0 18px 45px rgba(7,14,27,.3);max-height:min(400px,55vh);overflow:auto;min-width:220px;width:min(300px,calc(100vw - 20px))}
.viewCommandShellExercises>.filters{grid-template-columns:repeat(3,minmax(0,1fr))!important}
@media(max-width:900px){.viewCommandShellExercises>.filters{grid-template-columns:repeat(3,minmax(0,1fr))!important}}
@media(max-width:620px){.viewCommandShellExercises>.filters{grid-template-columns:repeat(3,minmax(0,1fr))!important}}
@media(max-width:760px){
  .exBulkToggle{height:30px;padding:0 7px}
  .topbarChapterPopover{right:-4px;min-width:min(280px,calc(100vw - 16px))}
}

/* v1.5.0 — énoncé inline des exercices sans ouvrir le tiroir */
.exDetailsBtn{height:30px;min-height:30px;padding:0 10px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--text);font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap;display:inline-flex;align-items:center;line-height:1}
.exDetailsBtn:hover{border-color:#c6d5ec;background:#f4f7fb}
.exercise.exerciseInlineOpen{border-radius:15px 15px 0 0!important;margin-bottom:0!important}
.exerciseInlineStatement{background:#f8fafd;border:1px solid var(--line);border-top:0;border-radius:0 0 15px 15px;margin-bottom:11px}
.exerciseInlineImg{display:block;max-width:100%;height:auto;margin:0 auto}
.exercisePdfImages img{display:block;max-width:100%;height:auto;margin:0 auto}
.exerciseInlineEmpty{padding:24px;color:var(--muted);font-size:14px;text-align:center}
@media(max-width:620px){
  .exercise.exerciseInlineOpen{margin-bottom:0!important}
  .exerciseInlineStatement{margin-bottom:8px}
  .exerciseInlineImg{border-radius:0 0 11px 11px}
  .exercise .exStates .exDetailsBtn{height:26px!important;min-height:26px!important;padding:0 8px!important;font-size:11px!important}
}

/* v1.4.52 — Interros élève plus sobres : liste d'abord et reprise structurée */
.interroChapterList{display:grid;gap:10px;margin:0 0 12px}.interroChapterList>h2{margin:0;color:#29384f;font-size:16px}
.interroChapterFinal{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 10px;padding:12px 14px;border:1px solid var(--line);border-radius:13px;background:#fff;box-shadow:0 5px 14px rgba(31,50,86,.04)}.interroChapterFinal h3{margin:0;color:#344055;font-size:13px}.interroChapterFinal div{display:flex;align-items:baseline;gap:10px}.interroChapterFinal strong{color:#29384f;font-size:17px}.interroChapterFinal span{color:#56647a;font-size:10px;font-weight:850}
.interroChapterAnalysis{grid-template-columns:1fr}.interroChapterAnalysis .interroCompetencies{max-width:none}.interroRecoveryGrid{grid-template-columns:1fr}.interroRecovery{background:#fff;border-color:var(--line)}.interroRecovery.consolidate{background:#fff;border-color:var(--line)}
.interroRecoveryBucket{margin-top:9px}.interroRecoveryBucket:first-of-type{margin-top:0}.interroRecoveryBucket h5{margin:0 0 5px;color:#647187;font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.045em}.interroRecoveryBucket ul{display:grid;gap:5px;margin:0;padding:0;list-style:none}.interroRecoveryBucket li{display:flex;align-items:center;gap:6px;min-height:26px;padding:0!important}.interroRecoveryItemLink{min-width:0;padding:5px 8px;border:1px solid #b9c8dc;border-radius:8px;background:#fff;color:#315f91;font:inherit;font-size:10px;font-weight:850;text-align:left;cursor:pointer;overflow:hidden;text-overflow:ellipsis}.interroRecoveryItemLink:hover,.interroRecoveryItemLink:focus-visible{border-color:#6f94c0;background:#eef5fc;outline:none}.interroRecoveryItemLink.anki{border-color:#cbbbe5;color:#67449a}.interroRecoveryItemLink.exercise{border-color:#b7d6c3;color:var(--compris)}.interroReviewDone{margin-left:auto;min-height:23px;padding:0 7px;border:1px solid #cbd5e1;border-radius:7px;background:#fff;color:#506078;font:inherit;font-size:8px;font-weight:850;cursor:pointer}.interroRecovery li em{margin-left:0}.interroRecovery li button.interroReviewDone{position:static}
@media(max-width:480px){.interroChapterFinal{display:grid}.interroChapterFinal div{display:grid;gap:3px}.interroRecoveryBucket li{align-items:flex-start;flex-wrap:wrap}.interroReviewDone{margin-left:0}.interroRecoveryItemLink{max-width:100%}}
/* v1.4.?? — Interros élève : À revoir sobre par chapitre */
.interroChapterRecovery .interroRecovery{background:#fff;border-color:var(--line)}
.interroRecoveryBucket ul{display:grid;gap:7px;margin:0;padding:0;list-style:none}
.interroRecoveryBucket li{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;min-height:30px;padding:0!important;color:#445066;font-size:10px;line-height:1.35}
.interroRecoveryBucket li .interroRecoveryItemLink{position:static!important;min-width:0;width:100%;padding:5px 0;border:0;background:transparent;color:#315f91;font:inherit;font-size:10px;font-weight:850;text-align:left;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.interroRecoveryBucket li .interroRecoveryItemLink:hover,.interroRecoveryBucket li .interroRecoveryItemLink:focus-visible{color:#1d4f82;background:transparent;outline:2px solid #d6e6f7;outline-offset:2px}
.interroRecoveryBucket.definitions li .interroRecoveryItemLink,.interroRecoveryBucket li .interroRecoveryItemLink.definitions{color:var(--blue)}
.interroRecoveryBucket.results li .interroRecoveryItemLink,.interroRecoveryBucket li .interroRecoveryItemLink.results{color:var(--red)}
.interroRecoveryBucket.methods li .interroRecoveryItemLink,.interroRecoveryBucket li .interroRecoveryItemLink.methods{color:var(--purple)}
.interroRecoveryBucket.anki li .interroRecoveryItemLink,.interroRecoveryBucket li .interroRecoveryItemLink.anki{color:#67449a}
.interroRecoveryBucket li .interroRecoveryItemLink.exercise{color:var(--compris)}
.interroReviewSwitch{position:static!important;display:inline-grid!important;grid-template-columns:auto auto;align-items:center;min-height:24px;padding:2px;border:1px solid #d4dae4;border-radius:999px;background:#f7f9fc;color:#69768a;font:inherit;font-size:8px;font-weight:900;cursor:pointer;text-transform:uppercase;letter-spacing:.035em;white-space:nowrap}
.interroReviewSwitch span{padding:3px 6px;border-radius:999px;color:#718098}.interroReviewSwitch span:first-child{background:#fff;color:#a13b3b;box-shadow:0 1px 3px rgba(31,50,86,.08)}.interroReviewSwitch span:last-child{color:#718098}.interroReviewSwitch.reviewed span:first-child{background:transparent;color:#718098;box-shadow:none}.interroReviewSwitch.reviewed span:last-child{background:var(--greenSoft);color:var(--green);box-shadow:0 1px 3px rgba(31,50,86,.08)}
@media(max-width:480px){.interroRecoveryBucket li{grid-template-columns:1fr;align-items:start;gap:4px}.interroRecoveryBucket li .interroRecoveryItemLink{white-space:normal}.interroReviewSwitch{justify-self:start}}
.interroRecoveryBucket li.reviewed .interroRecoveryItemLink,.interroRecoveryBucket li.reviewed .interroRecoveryItemLink.definitions,.interroRecoveryBucket li.reviewed .interroRecoveryItemLink.results,.interroRecoveryBucket li.reviewed .interroRecoveryItemLink.methods,.interroRecoveryBucket li.reviewed .interroRecoveryItemLink.anki,.interroRecoveryBucket li.reviewed .interroRecoveryItemLink.exercise{color:#7c8798;text-decoration:none;opacity:.72}

/* v1.4.xx — Vue d'ensemble : colonne Interros harmonisée */
#sectionProgress .overviewTable{width:var(--overviewWidth);min-width:var(--overviewWidth)}
#sectionProgress .overviewTable thead th:nth-child(5),
#sectionProgress .overviewTable tbody td:nth-child(5)::before{color:var(--interro)}
#sectionProgress .overviewProgressInterro .progressFraction b,
#sectionProgress .overviewProgressInterro .sectionProgressLabel b{
  color:var(--interro)!important;
}
#sectionProgress .overviewProgressInterro .sectionProgressTrack i{
  background:linear-gradient(90deg,var(--interro),var(--interroLight))!important;
  box-shadow:0 0 0 1px rgba(71,85,105,.16),0 0 7px rgba(71,85,105,.22)!important;
}
#sectionProgress .overviewActionChip.action-interro-review b,
#sectionProgress .overviewActionChip.action-interro-review span{
  color:var(--interro);
}
.overviewInterroEmpty{color:#aeb7c5;font-size:11px;font-weight:850;text-align:center}
@media(max-width:760px){#sectionProgress .overviewTable{width:100%;min-width:0}#sectionProgress .overviewTable thead th:nth-child(5),#sectionProgress .overviewTable tbody td:nth-child(5){width:auto;min-width:0;max-width:none}}

/* DM (devoirs maison) — vue élève annuelle */
.dmFilterBar{display:flex;align-items:center;gap:10px;margin-bottom:16px;flex-wrap:wrap}
.dmFilterBar label{font-size:12px;font-weight:850;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.dmFilterBar select{height:38px;border:1px solid var(--line);border-radius:10px;background:#fff;padding:0 32px 0 11px;font:inherit;font-weight:700;color:var(--ink)}
.dmCard{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 16px;margin-bottom:12px}
.dmCardHead{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.dmNum{flex:0 0 auto;font-weight:900;color:var(--blue);background:var(--blueSoft);border-radius:999px;padding:3px 11px;font-size:13px}
.dmTitle{margin:0;font-size:16px}
.dmMeta{display:flex;flex-wrap:wrap;gap:6px 18px;margin:10px 0 12px;font-size:13px;color:#4a5568}
.dmDocs{display:flex;flex-direction:column;gap:6px;border-top:1px solid var(--line);padding-top:10px}
.dmDoc{display:flex;align-items:center;gap:10px;font-size:13px}
.dmDocLabel{flex:0 0 130px;font-weight:800;color:var(--ink)}
.dmDocLink{font-weight:800;color:var(--blue);text-decoration:none}
.dmDocLink:hover{text-decoration:underline}
.dmDoc.dmDocOff .dmDocNote{color:var(--muted);font-style:italic}
@media(max-width:600px){.dmDocLabel{flex-basis:100%}.dmDoc{flex-wrap:wrap;gap:2px}}

/* Autocorrection guidée (vue élève, compacte) */
button.dmDocLink{border:1px solid var(--blue);background:#fff;cursor:pointer;border-radius:8px;padding:2px 10px;font:inherit}
button.dmDocLink:hover{background:var(--blue);color:#fff;text-decoration:none}
.dmAutocorrBody{margin:6px 0 2px}
.dmQList{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.dmQRow{border:1px solid var(--line,#e2e6ee);border-radius:10px;overflow:hidden;background:#fff}
.dmQRow.flagged{border-left:4px solid #f0a020}
.dmQTop{display:flex;align-items:center;gap:8px}
.dmQHead{display:flex;align-items:center;gap:10px;flex:1 1 auto;border:0;background:transparent;cursor:pointer;padding:8px 12px;text-align:left;font:inherit}
.dmQHead:hover{background:#f6f8fc}
.dmQFlag{flex:0 0 auto;margin-right:8px;border:1px solid #e0a030;background:#fff;color:#8a5800;border-radius:8px;padding:3px 10px;cursor:pointer;font:inherit;font-weight:700;white-space:nowrap}
.dmQFlag.on{background:#f0a020;color:#fff;border-color:#f0a020}
.dmQLabel{flex:0 0 auto;font-weight:800;background:#eef2fb;border-radius:6px;padding:1px 8px}
.dmQTitle{flex:1 1 auto;color:var(--ink)}
.dmQStatus{flex:0 0 auto;font-size:.86em;font-weight:700;color:var(--muted)}
.dmQRow.st-seems_ok .dmQStatus{color:#1a7f37}
.dmQRow.st-needs_teacher .dmQStatus{color:#b25e00}
.dmQRow.st-cannot_do .dmQStatus{color:#c0392b}
.dmQRow.st-seems_ok{border-left:4px solid #1a7f37}
.dmQRow.st-needs_teacher{border-left:4px solid #f0a020}
.dmQRow.st-cannot_do{border-left:4px solid #e05151}
.dmQDetail{padding:4px 12px 12px;border-top:1px dashed var(--line,#e2e6ee)}
.dmItems{list-style:none;margin:8px 0;padding:0;display:flex;flex-direction:column;gap:6px}
.dmItem{display:flex;flex-direction:column;gap:4px}
.dmItemRow{display:flex;align-items:center;gap:10px}
.dmItemText{flex:1 1 auto}
.dmRevoir{font-size:.85em;color:var(--muted);display:flex;flex-wrap:wrap;gap:6px;align-items:baseline;padding:2px 0 2px 4px}
.dmRevoirLabel{font-weight:800;color:#b25e00}
.dmRevoirChip{background:#fff4e5;border:1px solid #f0c890;border-radius:6px;padding:0 6px;color:var(--ink)}
.dmBilan{margin-top:12px;border:1px solid var(--line,#e2e6ee);border-radius:12px;background:#f8fafc;padding:10px 12px;display:flex;flex-direction:column;gap:8px}
.dmBilanHead{font-weight:900;font-size:1.05em}
.dmBilanStats{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.dmBilanStat{border-radius:999px;padding:2px 10px;font-size:.9em;font-weight:700;background:#eef2fb;border:1px solid var(--line,#cbd3e1)}
.dmBilanStat.ok{background:#e6f4ea;border-color:#1a7f37;color:#14622b}
.dmBilanStat.non{background:#fde8e8;border-color:#e05151;color:#a32020}
.dmBilanStat.flag{background:#fdf0db;border-color:#e0a030;color:#8a5800}
.dmBilanStat.na{background:#fff;color:var(--muted)}
.dmBilanComp,.dmBilanRevoir{display:flex;flex-wrap:wrap;gap:6px;align-items:baseline;font-size:.9em}
.dmBilanLabel{font-weight:800}
.dmBilanEmpty{color:var(--muted);font-style:italic}
.dmGoto{color:var(--blue);text-decoration:none;background:#eef4ff;border:1px solid #c7dbff;border-radius:6px;padding:0 6px;font-weight:600}
.dmGoto:hover{text-decoration:underline}
/* barre Tout ouvrir/fermer */
.dmPanelBar{display:flex;justify-content:flex-end;margin-bottom:8px}
.dmBulk{border:1px solid var(--line,#cbd3e1);background:#fff;border-radius:8px;padding:3px 12px;cursor:pointer;font:inherit;font-weight:700}
.dmBulk:hover{background:#f6f8fc}
/* indicateur d'état de question (abordée ou non) */
.dmQState{flex:0 0 auto;font-size:.78em;font-weight:800;border-radius:999px;padding:1px 8px;border:1px solid var(--line,#cbd3e1)}
.dmQState.done{background:#1a7f37;color:#fff;border-color:#1a7f37}
.dmQState.partial{background:#eef2fb;color:#2a4d8f}
.dmQState.none{background:#fff;color:var(--muted)}
.dmQRow.q-done{border-left:4px solid #1a7f37}
.dmQRow.q-partial{border-left:4px solid #9bb4e0}
.dmQRow.flagged{border-left:4px solid #f0a020}
/* bilan en cartes (calqué sur la synthèse des interros) */
.dmBilanGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.dmBilanGrid2{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:8px}
@media(max-width:700px){.dmBilanGrid2{grid-template-columns:1fr}}
.dmBilanRevoirWrap{border:1px solid var(--line,#e2e6ee);border-radius:10px;background:#fff;padding:8px 10px}
.dmBilanRevoirWrap .interroRecoveryBucket{margin-top:8px}
.dmBilanRevoirWrap .interroRecoveryBucket:first-of-type{margin-top:4px}
.dmBilanRevoirWrap .interroRecoveryBucket li{display:block}
.dmRecHead{display:flex;align-items:center;gap:8px}
.dmBilanRevoirWrap .interroRecoveryItemLink{flex:1 1 auto;width:auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dmBilanRevoirWrap .interroReviewSwitch{flex:0 0 auto;margin-left:0}
.dmCoursInline{flex-basis:100%;margin:6px 0 2px;padding:8px;border:1px solid var(--line,#e2e6ee);border-radius:8px;background:#fff;overflow:auto}
.dmCoursImg{max-width:100%;height:auto;display:block;margin:4px auto}
.dmCoursLoading{color:var(--muted);font-style:italic;font-size:.9em}
.dmAnkiInline{display:flex;flex-direction:column;gap:8px}
.dmBilanRevoirWrap .interroRecoveryBucket li .interroRecoveryItemLink.exercise{color:var(--blue);display:flex;align-items:center;gap:5px;overflow:hidden}
.dmBilanRevoirWrap .interroRecoveryBucket li .interroRecoveryItemLink.exercise:hover,.dmBilanRevoirWrap .interroRecoveryBucket li .interroRecoveryItemLink.exercise:focus-visible{outline:none;background:transparent}
.dmExoNum{color:var(--blue);font-weight:900;flex:0 0 auto}
.dmExoStars{flex:0 0 auto;letter-spacing:1px;white-space:nowrap;font-size:13px;line-height:1;position:relative;top:-2px}
.dmExoStars .sf{color:#e5a31c}
.dmExoStars .se{color:#b8c0cc}
.dmExoTitle{color:var(--blue);font-weight:650;flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dmExoChap{flex:0 0 auto;font-size:.85em;color:var(--muted);font-weight:700}
.dmAnkiRecto{cursor:pointer;border:1px solid var(--line,#e2e6ee);border-radius:8px;padding:6px 8px}
.dmAnkiRecto:hover{background:#f6f8fc}
.dmAnkiLabel{display:inline-block;font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.04em;color:#647187;margin-bottom:2px}
.dmAnkiContent{font-size:.95em}
.dmAnkiContent img{max-width:100%;height:auto}
.dmAnkiHint{color:var(--muted);font-style:italic;font-size:.85em}
.dmBilanCard{border:1px solid var(--line,#e2e6ee);border-radius:10px;background:#fff;padding:8px 10px;min-width:0}
.dmBilanCardTitle{font-size:9px;font-weight:900;letter-spacing:.04em;text-transform:uppercase;color:#29384f;margin-bottom:6px}
.dmBilanCardBody{display:flex;flex-wrap:wrap;gap:6px;align-items:baseline;font-size:.9em}
.dmBilanTotal{flex-basis:100%;color:var(--muted);font-size:.85em;margin-top:4px}
.dmRevoirRow{flex-basis:100%;display:flex;flex-wrap:wrap;gap:4px;align-items:baseline}
.dmRevoirCat{font-weight:800;color:#b25e00;font-size:.85em}
@media(max-width:700px){.dmBilanGrid{grid-template-columns:1fr}}
/* bandeau retour au bilan */
.dmReturnBanner{position:fixed;left:50%;transform:translateX(-50%);bottom:16px;z-index:9999}
.dmReturnBanner button{background:#1f2a44;color:#fff;border:0;border-radius:999px;padding:10px 18px;font-weight:800;cursor:pointer;box-shadow:0 6px 18px rgba(0,0,0,.25)}
.dmReturnBanner button:hover{background:#2a3a5e}
.dmYn{flex:0 0 auto;display:inline-flex;gap:4px}
.dmYnBtn{border:1px solid var(--line,#cbd3e1);background:#fff;border-radius:6px;padding:1px 12px;cursor:pointer;font:inherit;font-weight:700}
.dmYnBtn.yn-yes{background:#e6f4ea;border-color:#1a7f37;color:#14622b}
.dmYnBtn.yn-no{background:#fde8e8;border-color:#e05151;color:#a32020}
.dmYnBtn.yn-yes.active{background:#1a7f37;color:#fff}
.dmYnBtn.yn-no.active{background:#e05151;color:#fff}
.dmStatuses{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.dmStatusBtn{border:1px solid var(--line,#cbd3e1);border-radius:8px;padding:4px 14px;cursor:pointer;font:inherit;font-weight:700}
.dmStatusBtn.seems_ok{background:#e6f4ea;border-color:#1a7f37;color:#14622b}
.dmStatusBtn.needs_teacher{background:#fdf0db;border-color:#e08a00;color:#8a5800}
.dmStatusBtn.cannot_do{background:#fde8e8;border-color:#e05151;color:#a32020}
.dmStatusBtn.seems_ok.active{background:#1a7f37;color:#fff}
.dmStatusBtn.needs_teacher.active{background:#f0a020;color:#fff}
.dmStatusBtn.cannot_do.active{background:#e05151;color:#fff}
.dmMsg{margin-top:8px;display:flex;flex-direction:column;gap:3px}
.dmMsg label{font-size:.85em;color:var(--muted);font-weight:700}
.dmMsgInput{width:100%;border:1px solid var(--line,#cbd3e1);border-radius:8px;padding:6px;font:inherit;resize:vertical}
@media(max-width:600px){.dmQHead{flex-wrap:wrap}.dmItem{flex-wrap:wrap}}

/* ===== Page Calendrier (planning : chapitres/parties + DM + DS + vacances/fériés) ===== */
.calBar{max-width:720px;margin:0 auto 22px;display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.calViews{display:inline-flex;background:#eef1f6;border-radius:11px;padding:3px;gap:2px}
.calViews button{appearance:none;border:0;background:transparent;font:inherit;font-size:12.5px;font-weight:750;color:var(--muted);padding:7px 15px;border-radius:8px;cursor:pointer;transition:.14s}
.calViews button:hover{color:var(--text)}
.calViews button.active{background:var(--panel);color:var(--blue);box-shadow:0 2px 6px rgba(31,50,86,.1)}
.calNav{display:inline-flex;align-items:center;gap:6px}
.calNavTitle{font-size:13px;font-weight:800;color:var(--text);min-width:170px;text-align:center;text-transform:capitalize}
.calNavBtn{appearance:none;width:32px;height:32px;border:1px solid var(--line);background:var(--panel);border-radius:9px;font-size:17px;line-height:1;color:var(--text);cursor:pointer;transition:.14s}
.calNavBtn:hover{border-color:var(--blue);color:var(--blue);background:var(--blueSoft)}
.calendrier{max-width:720px;margin:0 auto;display:flex;flex-direction:column;gap:22px}
.calPeriod{display:flex;flex-direction:column;gap:9px}
.calPeriodHead{display:flex;align-items:center;gap:10px;padding-bottom:2px}
.calPeriodTag{font-size:11px;font-weight:850;color:#fff;background:var(--nav);padding:4px 10px;border-radius:999px;letter-spacing:.02em}
.calPeriodRange{font-size:11px;font-weight:750;color:var(--muted);text-transform:capitalize}
.calEmpty{margin:0;color:var(--muted);font-size:12px;font-style:italic}
.calMonthSep{margin:6px 0 1px;font-size:10px;font-weight:850;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.calMonthSep:first-letter{text-transform:uppercase}
.calVacance{display:flex;flex-direction:column;gap:2px;padding:10px 16px;border-radius:14px;background:repeating-linear-gradient(135deg,#fff7e6,#fff7e6 11px,#fff2d6 11px,#fff2d6 22px);border:1px dashed var(--amber)}
.calVacanceMain{font-size:12.5px;font-weight:850;color:var(--amber)}
.calVacance small{font-size:11px;color:#8a6a1f;text-transform:capitalize}
.calEvents{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}
.calEvent{display:grid;grid-template-columns:48px 58px minmax(0,1fr);align-items:center;gap:14px;padding:10px 14px;border:1px solid var(--line);border-radius:14px;background:var(--panel);box-shadow:0 4px 14px rgba(31,50,86,.04);transition:transform .14s ease,box-shadow .14s ease}
.calEvent:hover{transform:translateY(-1px);box-shadow:0 9px 22px rgba(31,50,86,.09)}
.calTile{display:flex;flex-direction:column;align-items:center;justify-content:center;width:48px;height:48px;border-radius:12px;background:#f5f7fb;line-height:1}
.calTile b{font-size:18px;font-weight:850;color:var(--text)}
.calTile span{font-size:8px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-top:3px}
.calCat{font-size:9px;font-weight:850;text-transform:uppercase;letter-spacing:.05em;text-align:center;padding:5px 2px;border-radius:8px;background:#eef1f6;color:var(--muted)}
.calLabel{font-size:13.5px;font-weight:650;line-height:1.3;color:var(--text);min-width:0}
.calLabel .calMeta{display:block;font-size:11px;font-weight:500;color:var(--muted);margin-top:2px}
/* Couleurs par type (tuile + pastille) */
.calType-chapter .calTile{background:var(--blueSoft)}.calType-chapter .calTile b{color:var(--blue)}.calType-chapter .calCat{background:var(--blueSoft);color:var(--blue)}
.calType-section .calCat{background:var(--blueSoft);color:var(--blue)}.calType-section .calLabel{font-weight:600}
.calType-dm-out .calTile,.calType-dm-in .calTile{background:var(--greenSoft)}.calType-dm-out .calTile b,.calType-dm-in .calTile b{color:var(--green)}.calType-dm-out .calCat,.calType-dm-in .calCat{background:var(--greenSoft);color:var(--green)}
.calType-ds .calTile{background:var(--redSoft)}.calType-ds .calTile b{color:var(--red)}.calType-ds .calCat{background:var(--red);color:#fff}.calType-ds{border-color:rgba(184,59,53,.26)}.calType-ds .calLabel{font-weight:800}
.calType-ferie{background:#fafbfc}.calType-ferie .calTile{background:#f0f1f4}.calType-ferie .calTile b{color:#8a8f98}.calType-ferie .calCat{background:#eceef1;color:#8a8f98}.calType-ferie .calLabel{font-weight:600;color:var(--muted)}
/* États temporels */
.calEvent.cal-past{opacity:.52}
.calEvent.cal-today{border-color:var(--amber);box-shadow:0 0 0 2px var(--amberSoft),0 4px 14px rgba(31,50,86,.04)}
.calEvent.cal-today .calTile{background:var(--amberSoft)}.calEvent.cal-today .calTile b{color:var(--amber)}
@media(max-width:560px){.calendrier{gap:20px}.calEvent{grid-template-columns:42px 50px minmax(0,1fr);gap:10px;padding:9px 11px}.calTile{width:42px;height:42px}.calTile b{font-size:16px}}

/* ===== Calendrier — vue Période : grille semaine par semaine ===== */
.calGridScroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.calGrid{min-width:560px}
.calWeekHead{display:grid;grid-template-columns:repeat(6,1fr);gap:7px;margin-bottom:7px;padding:0 2px}
.calWeekHead span{font-size:9px;font-weight:850;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);text-align:center}
.calWeeks{display:flex;flex-direction:column;gap:7px}
.calWeek{display:grid;grid-template-columns:repeat(6,1fr);gap:7px}
.calDayCell{min-width:0;min-height:66px;border:1px solid var(--line);border-radius:11px;background:var(--panel);padding:5px 5px 7px;display:flex;flex-direction:column;gap:4px}
.calChip{max-width:100%}
.calDayNum{font-size:11px;font-weight:800;color:var(--muted);padding-left:1px}
.calDayOut{background:#f6f7f9;opacity:.55}
/* Vacances scolaires : grisé (via .calDayOut) + fines hachures pour les distinguer des jours hors-mois */
.calDayVac{background-image:repeating-linear-gradient(135deg,transparent,transparent 5px,rgba(0,0,0,.045) 5px,rgba(0,0,0,.045) 10px)}
.calDayToday{border-color:var(--amber);box-shadow:inset 0 0 0 1px var(--amber)}
.calDayToday .calDayNum{color:var(--amber)}
.calChip{display:block;width:100%;text-align:left;appearance:none;border:0;font:inherit;font-size:10px;font-weight:800;line-height:1.25;padding:3px 6px;border-radius:7px;background:#eef1f6;color:var(--text);cursor:pointer;overflow:hidden;text-overflow:clip;white-space:nowrap;transition:filter .12s ease,transform .12s ease}
.calChip:hover{filter:brightness(.97);transform:translateY(-1px)}
.calChip:focus-visible{outline:2px solid var(--blue);outline-offset:1px}
.calChip.calType-chapter{background:var(--blue);color:#fff;font-weight:850}
.calChip.calType-section{background:var(--blueSoft);color:var(--blue)}
.calChip.calType-dm-out,.calChip.calType-dm-in{background:var(--greenSoft);color:var(--green)}
.calChip.calType-ds{background:var(--red);color:#fff}
.calChip.calType-ferie{background:#eceef1;color:#8a8f98}
.calVacList{margin-top:12px}
.calEvent[data-cal-item],.calVacance[data-cal-item]{cursor:pointer}
.calEvent[data-cal-item]:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
/* ===== Calendrier — fenêtre de détail (clic sur un événement) ===== */
.calDetailBackdrop{position:fixed;inset:0;background:rgba(17,26,45,.45);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;z-index:120;padding:20px}
.calDetailDialog{position:relative;background:var(--panel);border-radius:18px;box-shadow:var(--shadow);max-width:420px;width:100%;padding:26px}
.calDetailClose{position:absolute;top:12px;right:14px;border:0;background:transparent;font-size:24px;line-height:1;color:var(--muted);cursor:pointer}
.calDetailClose:hover{color:var(--text)}
.calDetailType{display:inline-block;font-size:9px;font-weight:850;text-transform:uppercase;letter-spacing:.06em;padding:4px 9px;border-radius:999px;background:#eef1f6;color:var(--muted)}
.calDetailType.calType-chapter,.calDetailType.calType-section{background:var(--blueSoft);color:var(--blue)}
.calDetailType.calType-dm-out,.calDetailType.calType-dm-in{background:var(--greenSoft);color:var(--green)}
.calDetailType.calType-ds{background:var(--red);color:#fff}
.calDetailTitle{margin:12px 0 6px;font-size:18px;line-height:1.25}
.calDetailDate{color:var(--muted);font-size:13px;text-transform:capitalize}
.calDetailMetaLine{margin:10px 0 0;font-size:13px;color:#3a4458;line-height:1.5}
.calDetailActions{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}
.calDetailEdit{margin-top:18px;padding-top:14px;border-top:1px dashed var(--line)}
.calDetailEdit strong{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--amber)}
.calDetailEdit p{margin:6px 0 0;font-size:12px;color:var(--muted)}
.calDetailEdit code{background:#f3f5f9;padding:1px 6px;border-radius:5px;font-size:11.5px;color:#3a4458}
.calDetailEditNote{font-style:italic}
@media(max-width:560px){.calDayCell{min-height:58px}.calChip{font-size:9.5px}}

/* ===== Calendrier — vue Année : une case par semaine ===== */
.calYearWeeks{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.calWeekCell{min-width:0;min-height:60px;border:1px solid var(--line);border-radius:11px;background:var(--panel);padding:6px 7px 8px;display:flex;flex-direction:column;gap:4px}
.calWeekCellLabel{font-size:9px;font-weight:850;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.calWeekCellEmpty{background:#f8f9fb;opacity:.65}
.calWeekCellToday{border-color:var(--amber);box-shadow:inset 0 0 0 1px var(--amber)}
.calWeekCellToday .calWeekCellLabel{color:var(--amber)}

/* ===== Calendrier — mode édition prof (DS) ===== */
.calEditBar{max-width:720px;margin:0 auto 14px;padding:10px 14px;border-radius:11px;background:var(--amberSoft);border:1px solid var(--amber);color:#8a6a1f;font-size:12.5px;font-weight:700}
.calDayEditable{cursor:pointer}
.calDayEditable:hover{border-color:var(--blue);box-shadow:0 0 0 2px var(--blueSoft)}
.calEdForm{display:flex;flex-direction:column;gap:10px;margin-top:14px}
.calEdForm>label{display:flex;flex-direction:column;gap:4px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.calEdForm input,.calEdForm select{border:1px solid var(--line);border-radius:9px;padding:8px 10px;font:inherit;font-size:13px;font-weight:500;text-transform:none;letter-spacing:0;color:var(--text);background:#fff}
.calEdForm input:focus,.calEdForm select:focus{outline:2px solid var(--blue);outline-offset:1px;border-color:var(--blue)}
.calEdChaps>span{display:block;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:6px}
.calEdChapList{display:flex;flex-wrap:wrap;gap:6px 12px}
.calEdChap{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;font-weight:600;color:var(--text);cursor:pointer}
/* Page DS élève */
.dsGroupLabel{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:18px 2px 8px}
.dsGroupLabel:first-child{margin-top:4px}
.dsCard{border:1px solid var(--border);border-radius:12px;padding:12px 14px;margin-bottom:10px;background:var(--card,#fff)}
.dsCardHead{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.dsNum{font-weight:800;color:var(--text)}
.dsDate{font-size:13px;font-weight:600;color:var(--muted);white-space:nowrap}
.dsMeta{margin-top:4px;font-size:13px;color:var(--muted)}
.dsTitre{margin-top:4px;font-size:13.5px;color:var(--text)}

/* Vue d'ensemble : même rendu « groupé » en portable (pas de bascule en cartes empilées).
   La ligne-groupe (N°·Titre·jour) prend toute la largeur, puis 4 colonnes égales de barres. */
@media(max-width:760px){
  #sectionProgress .overviewTableWrap{overflow:visible;width:100%;max-width:100%;border:1px solid var(--line);border-radius:14px;background:#fff;padding-right:0}
  #sectionProgress .overviewTable{display:table;width:100%;min-width:0;table-layout:fixed}
  #sectionProgress .overviewTable thead{display:table-header-group}
  #sectionProgress .overviewTable tbody{display:table-row-group;gap:0}
  #sectionProgress .overviewTable tr{display:table-row;border:0;border-radius:0;background:transparent;padding:0}
  #sectionProgress .overviewTable th,#sectionProgress .overviewTable td{display:table-cell;border-bottom:1px solid var(--line);padding:8px 4px;text-align:center;width:25%}
  #sectionProgress .overviewTable td::before{display:none}
  #sectionProgress .overviewGroupRow>td{width:auto;text-align:left;padding:0!important;border-bottom:0!important}
  #sectionProgress .overviewMetricStack{margin-left:auto;margin-right:auto}
  #sectionProgress .overviewMetricActions{justify-content:center}
}

/* Vue Liste des exercices : une seule ligne (numéro · étoiles/défi · titre tronqué · Ouvrir) */
.exercise.exOneLine{display:flex;align-items:center;gap:10px;padding:7px 12px;margin-bottom:6px}
.exercise.exOneLine>.exNum{flex:0 0 auto;width:32px;height:32px;font-size:14px;border-radius:9px}
.exercise.exOneLine .exStars{flex:0 0 auto;display:inline-flex;align-items:center}
.exercise.exOneLine .exStars .exerciseStars{font-size:12px}
.exercise.exOneLine .exTitle{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}
.exercise.exOneLine .exStates{flex:0 0 auto;margin-left:auto}
.exercise.exOneLine .exDetailsBtn{white-space:nowrap}
@media(max-width:620px){.exercise.exOneLine{padding:6px 10px!important;gap:8px}.exercise.exOneLine>.exNum{width:29px;height:29px;font-size:13px}}

/* Vue Liste exos une-ligne : centrage vertical homogène de tous les éléments */
.exercise.exOneLine{align-items:center;min-height:40px}
.exercise.exOneLine>*{align-self:center;grid-area:auto}
.exercise.exOneLine .exStars,.exercise.exOneLine .exStars .exerciseStars{line-height:1;height:auto}
.exercise.exOneLine .exTitle{line-height:1.2;align-self:center}
.exercise.exOneLine .exStates{align-self:center}

/* Vue Liste exos : compaction verticale forte — le cadre colle au contenu */
.exercise.exOneLine{padding:2px 11px!important;margin-bottom:3px;min-height:0;gap:9px}
.exercise.exOneLine>.exNum{width:26px;height:26px;font-size:12px;border-radius:8px;border-width:1px}
#exercisesView .exerciseSectionHeading{margin-top:14px}
#exercisesView .exerciseSectionHeading:first-child{margin-top:0}

/* Vue Liste exos : créneau étoiles/défi de largeur fixe → titres alignés (exos et défis) */
.exercise.exOneLine .exStars{flex:0 0 50px;width:50px;display:inline-flex;justify-content:flex-start;align-items:center;overflow:hidden}
.exercise.exOneLine .exStars .exerciseStars{width:auto;min-width:0;font-size:12px}
.exercise.exOneLine .exStars .exerciseStar{width:14px}
.exercise.exOneLine .exStars .exerciseStars.challengeDifficulty{min-width:0;width:auto;padding:0 9px;height:20px}

/* Vue Liste exos : point du marqueur « défi » plus petit */
.exercise.exOneLine .exNum.challengeMarker::after{width:6px;height:6px}

/* Picker parties : autoriser le rétrécissement des cartes/lignes → le titre se tronque en … */
.partiePickCard{min-width:0}
.partiePickInfo,.exPickChoices{min-width:0}
.partiePickTitle{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}


/* Cours parcours — exercices liés : compaction verticale, le contour colle aux mots */
.courseParcours .courseParcoursExos{margin-top:8px;padding-top:8px}
.courseParcoursExos .parcoursExItem{margin-bottom:4px}
.courseParcoursExos .parcoursExHead{padding:3px 9px;gap:8px}
.courseParcoursExos .parcoursExNum{width:24px;min-width:24px;height:24px;font-size:11px}

/* Picker exos : segment bleu « abordé » (base sous vert/rouge) */
.pickSeg.abordSeg{background:linear-gradient(90deg,#4f8cff,#93bbff);z-index:0}
.pickSeg.revu{background:linear-gradient(90deg,#e08a0c,#f5b64e);z-index:2}

/* Focus parcours exo : l'état courant est rempli sur le bouton de validation correspondant */
.courseParcoursFwd.blue.current{background:var(--blue);border-color:var(--blue);color:#fff}
.courseParcoursFwd.known.current{background:var(--green);border-color:var(--green);color:#fff}
.courseParcoursFwd.review.current{background:var(--red);border-color:var(--red);color:#fff}
.courseParcoursFwd.current span{color:#fff}

/* Bord épais + plus foncé du gros cadre de la Vue d'ensemble */
#sectionProgress .overviewTableWrap{border:2px solid #c4cddb}

/* En-têtes de colonnes = boutons de lancement de parcours (plus gros, contour couleur colonne) */
#sectionProgress .overviewColHeaderBtn{display:inline-flex;align-items:center;justify-content:center;width:100%;font-size:14px;font-weight:900;text-transform:none;letter-spacing:0;line-height:1.1;padding:5px 6px;border:1.5px solid currentColor;border-radius:10px;background:#fff;cursor:pointer}
#sectionProgress .overviewColHeaderBtn:hover{background:rgba(0,0,0,.035)}
#sectionProgress .overviewTable thead th{padding-top:4px;padding-bottom:4px;vertical-align:middle}

/* Vue d'ensemble : remonter le bloc (moins d'espace avant achievements) */
#dashboardView>.dashboardSectionPanel{margin-top:0}

/* Topbar : moins d'espace vertical autour des boutons (menu/chapitre) sur ordi/tablette */
@media(min-width:761px){.topbar{height:38px;min-height:0;padding-top:0;padding-bottom:0}}

/* Page Paramètres */
.settingsGroup{max-width:var(--overviewWidth)}
.settingsGroupTitle{font-size:13px;font-weight:850;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:0 0 10px}
.settingsCard{display:flex;align-items:center;justify-content:space-between;gap:16px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:13px 16px;margin-bottom:10px}
.settingsCardCopy{min-width:0}
.settingsCardCopy strong{display:block;font-size:14px;color:#17233a}
.settingsCardCopy p{margin:4px 0 0;font-size:12.5px;color:var(--muted);line-height:1.4}
.settingsCard .dangerGhost{flex:0 0 auto}
@media(max-width:620px){.settingsCard{flex-direction:column;align-items:stretch}.settingsCard .dangerGhost{width:100%}}

/* Topbar : masquer le titre de vue (redondant avec le menu latéral) quand la largeur rétrécit */

/* Paramètres : sélecteur segmenté (Parcours / Liste) */
.settingsSeg{display:inline-flex;flex:0 0 auto;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.settingsSeg button{border:0;background:#fff;padding:8px 16px;font:inherit;font-weight:800;font-size:13px;color:#5a6577;cursor:pointer}
.settingsSeg button+button{border-left:1px solid var(--line)}
.settingsSeg button.active{background:var(--blue);color:#fff}

/* Bouton « Vue liste » (☰) : fond blanc, symbole à la couleur de la page */
#courseView .courseParcoursExit{color:var(--red);border-color:#d6b2ae}
.exoParcoursPick .courseParcoursExit,.drawerParcoursTop .courseParcoursExit{color:var(--blue);border-color:var(--blueBorder)}
/* Croix de sortie du parcours scopé « exos liés » : ferme le run et revient au cours */
.drawerParcoursTop .drawerParcoursClose{color:var(--red);border-color:#dcb4b1;margin-left:2px}

/* Vue d'ensemble : compaction verticale forte des lignes de barres (override cascade) */
#sectionProgress .overviewDataRow>td{padding-top:4px!important;padding-bottom:6px!important;vertical-align:top!important}
#sectionProgress .overviewMetricStack{gap:5px!important}
#sectionProgress .overviewMetricStack>.overviewProgressMetric{padding-top:0!important;padding-bottom:0!important}
#sectionProgress .overviewProgressMetric .sectionProgressLabel{margin-bottom:3px!important;line-height:1.1!important}
#sectionProgress .overviewMetricActions{min-height:0!important}
#sectionProgress .overviewMetricActions .overviewActionChip{min-height:0!important}

/* Boutons ▼/▲ « tout déplier/replier » dans la topbar (à gauche de « Tout ») */
.topbarExpandToggle{display:none;height:30px;min-width:34px;padding:0 8px;border:1px solid var(--line);border-radius:10px;background:#fff;color:#39465b;font-size:11px;font-weight:900;cursor:pointer;align-items:center;justify-content:center;line-height:1}
.topbarExpandToggle:hover{background:#eef1f6}
.topbarExpandToggle:disabled{opacity:.4;cursor:default}
.topbar[data-view="course"] #courseBulkToggle{display:inline-flex;border-color:#d6b2ae;color:var(--red)}
.topbar[data-view="exercises"] #exBulkToggle{display:inline-flex;border-color:var(--blueBorder);color:var(--blue)}

/* Vue Liste : largeur max = largeur des images (elles sont en max-width:100%, donc elles s'y calent). Icônes moins espacées. */
.app:not(.exoFocus) #exerciseList{max-width:var(--listMaxWidth)}
.app:not(.courseFocus) #courseView>#courseObjects{max-width:var(--listMaxWidth)}


/* Vue Liste (Cours/Exercices) : contenu de la topbar calé sur la même colonne que la liste (largeur des images) */
@media(min-width:761px){.topbar[data-view="course"],.topbar[data-view="exercises"]{padding-left:22px;padding-right:max(22px, calc(100% - 22px - var(--listMaxWidth)))}}

/* Vue d'ensemble : contenu de la topbar calé sur la colonne du grand cadre (--overviewWidth) */
@media(min-width:761px){.topbar[data-view="dashboard"]{padding-left:22px;padding-right:max(22px, calc(100% - 22px - var(--overviewWidth)))}}

/* Picker Parcours cours : compte « XX connus / total » au-dessus de la barre de progression de chaque partie */
.pickBarWrap{display:flex;flex-direction:column;gap:3px;flex:1 1 auto;min-width:44px}
.pickChoicesRow .pickBarWrap .pickSegBar.pickSegBarRow{flex:none;width:100%}
.pickBarCount{font-size:11px;font-weight:800;color:var(--compris);line-height:1;white-space:nowrap;text-align:center}
.pickBarCount b{color:var(--compris)}
.pickBarCount small{color:#19202a;font-weight:800}

/* Onglets de bascule Cours/Exercices/Fiches/Interros sur les écrans d'accueil du parcours */
.parcoursViewTabs{display:flex;justify-content:center;gap:6px;margin:12px 0 6px;flex-wrap:wrap}
.parcoursViewTab{border:1.5px solid var(--line);background:#fff;color:#5a6577;border-radius:10px;padding:7px 15px;font:inherit;font-weight:800;font-size:13px;line-height:1;cursor:pointer}
.parcoursViewTab:hover{background:#f1f3f7}
.parcoursViewTab.active{color:#fff}
.parcoursViewTab.active[data-pv="course"]{background:var(--red);border-color:var(--red)}
.parcoursViewTab.active[data-pv="exercises"]{background:var(--blue);border-color:var(--blue)}
.parcoursViewTab.active[data-pv="anki"]{background:var(--purple);border-color:var(--purple)}
.parcoursViewTab.active[data-pv="chapterInterros"]{background:var(--interro);border-color:var(--interro)}

/* Parcours exercices : topbar 2 lignes uniformisée avec le Cours (drawer en run) */
.drawerRunMode .drawerHead,.drawerRunMode .drawerFoot{display:none}
.drawerParcoursBar{position:sticky;top:0;z-index:6;background:#fff;border-bottom:1px solid var(--line);box-shadow:0 2px 6px rgba(31,50,86,.05);padding:7px 14px;display:flex;flex-direction:column;gap:7px}
.drawerParcoursBar.hidden{display:none}
.drawerParcoursRow{display:flex;align-items:center;gap:8px;min-width:0}
.drawerParcoursTop .exNum.drawerParcoursNum{flex:0 0 auto;width:30px;height:30px;min-width:0;border-radius:9px;font-size:14px;display:inline-flex;align-items:center;justify-content:center}
.drawerParcoursStars{flex:0 0 auto;display:inline-flex;align-items:center}
.drawerParcoursTitle{flex:1 1 auto;min-width:0;font-weight:800;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.drawerParcoursPos{flex:0 0 auto;color:#8a93a6;font-weight:800;font-size:12px}
.drawerParcoursActions{flex-wrap:wrap}
.drawerParcoursActions .courseParcoursBtn,.drawerParcoursActions .courseParcoursFwd{flex:0 0 auto}
.drawerParcoursActions .dpStateStart{margin-left:auto}
/* Hauteur identique pour tous les boutons de la ligne (la plus petite) */
.drawerParcoursActions .courseParcoursBtn,.drawerParcoursActions .courseParcoursFwd,.drawerParcoursActions .dpTab{height:28px;padding-top:0;padding-bottom:0;font-size:13px;line-height:1;box-sizing:border-box;display:inline-flex;align-items:center}
.drawerParcoursActions .courseParcoursBtn span,.drawerParcoursActions .courseParcoursFwd span{font-size:15px}
.dpTab{flex:0 0 auto;border:1.5px solid var(--line);background:#fff;color:#39465b;border-radius:10px;padding:6px 13px;font:inherit;font-weight:800;font-size:13px;line-height:1;cursor:pointer}
/* Groupe Énoncé/Corrigé dans la 1re rangée du tiroir : poussé à droite, mais le compteur reste à sa droite. */
.drawerTabGroup{margin-left:auto;display:flex;align-items:center;gap:8px;flex:0 0 auto}
/* Énoncé/Corrigé au même gabarit que les boutons de validation (Abordé/Compris…). */
.drawerTabGroup .dpTab{height:28px;padding:0 13px;font-size:13px;display:inline-flex;align-items:center}
@media(max-width:760px){
  .drawerTabGroup .dpTab{padding:0 8px;font-size:12px}   /* plus étroits sur mobile */
  .drawerPrevLabel{display:none}                          /* « ‹ Précédent » → « ‹ » */
}
.dpTab:hover{background:#f1f3f7}
.dpTab.active{background:#111;border-color:#111;color:#fff}
.dpTab[disabled]{opacity:.4;cursor:not-allowed}

/* ===== Mode Parcours Anki (miroir Cours/Exos, teinte violette) ===== */
.ankiModeToggle{display:none;height:30px;min-width:40px;padding:0 10px;border:1px solid #c0aadc;background:#fff;color:var(--purple);border-radius:10px;font:inherit;font-weight:850;font-size:14px;line-height:1;cursor:pointer;white-space:nowrap}
.topbar[data-view="anki"] .ankiModeToggle{display:inline-flex;align-items:center;justify-content:center}
.ankiModeToggle:hover{background:var(--purpleSoft)}
.ankiModeToggle[aria-pressed="true"]{background:var(--purple);border-color:var(--purple);color:#fff}
.ankiModeToggle:focus-visible{outline:2px solid var(--purple);outline-offset:2px}
.app.ankiFocus{grid-template-columns:1fr}
.app.ankiFocus:not(.sidebar-open)>.sidebar{display:none}
.app.ankiFocus.sidebar-open>.sidebar{display:flex;position:fixed;z-index:60;top:0;left:0;width:min(320px,88vw);height:100dvh;box-shadow:16px 0 36px rgba(7,14,27,.28)}
.app.ankiFocus.sidebar-open>.menuBackdrop{display:block;position:fixed;z-index:55;inset:0;background:rgba(7,14,27,.46)}
.app.ankiFocus .topbar{display:none}
.app.ankiFocus .content{padding:14px;max-width:900px;margin:0 auto}
.ankiParcoursPick .courseParcoursExit,.app.ankiFocus #ankiParcoursBar .courseParcoursExit{color:var(--purple);border-color:#c0aadc}
#ankiParcoursBar .parcoursFilterChip{border-color:#c0aadc;background:var(--purpleSoft);color:var(--purple)}
#ankiParcoursBar .parcoursFilterChip:hover{background:#e7ddff}
.partiePickEmpty{padding:24px;text-align:center;color:var(--muted);font-weight:700}

/* Récap Anki : boutons couleur Anki (violet) au lieu de cours (rouge) */
.recapBtn.recapAnki{border-color:#c0aadc;background:var(--purpleSoft);color:var(--purple)}
.recapBtn.recapAnki:hover{background:#e7ddff}

/* Onglets Cours/Exercices/Anki/Interros intégrés dans la barre parcours.
   Mono-ligne centrée par DÉFAUT (filet de sécurité) : ces onglets n'apparaissent que dans les
   accueils, donc même hors des sélecteurs de contexte ils ne doivent jamais passer à deux lignes. */
.parcoursViewTabs{margin:0;flex-wrap:nowrap;justify-content:center}
.parcoursViewTab{flex:1 1 0;min-width:0;padding:6px 13px;font-size:12.5px;white-space:nowrap}
.coursePartiePick .courseParcoursTop,.exoParcoursPick .courseParcoursTop,.ankiParcoursPick .courseParcoursTop,.interroParcoursPick .courseParcoursTop,#dashboardView .courseParcoursTop,#ceSoirContent .courseParcoursTop{flex-wrap:nowrap;flex:1 1 auto;gap:8px}   /* Menu + 6 onglets sur UNE seule ligne (les onglets rétrécissent, flex:1 1 0) — sinon « Interro » actif déborde et passe à la ligne */
.coursePartiePick .courseParcoursBar,.exoParcoursPick .courseParcoursBar,.ankiParcoursPick .courseParcoursBar,.interroParcoursPick .courseParcoursBar,#dashboardView .courseParcoursBar,#ceSoirContent .courseParcoursBar{flex-wrap:wrap}

/* Unification des 3 pickers : label « Compris/Connu » aussi côté exos → même hauteur de carte */
.exPickChoices .pickBarWrap{flex:1 1 0;min-width:0}
.exPickChoices .pickBarWrap .pickSegBar.pickSegBarRow{flex:none;width:100%}
.exoParcoursPick .partiePickCard{gap:6px}
.partiePickCard{gap:6px}
.exoParcoursPick .parcoursChapterRow{margin-bottom:9px}

/* Marges gauche/droite identiques : réserve toujours la gouttière du scrollbar */
html{scrollbar-gutter:stable}

/* Pickers unifiés : label+barre centrés verticalement dans la ligne (même espace au-dessus partout) */
.pickBarWrap{justify-content:center}

/* Parcours cours (focus) : annuler le débord mobile propre au #courseView (−10/−12px) → mêmes marges qu'Exos/Anki */
.app.courseFocus #courseView{margin-inline:0}
/* Vue liste du cours : annuler ce même débord → marges de 6px comme partout ailleurs (padding-inline du .content) */
.app.listView #courseView{margin-inline:0}


/* Sélecteur de chapitre parcours : identique partout (bleu, comme Exos) — pas de teinte matière */
/* Onglets Cours/Exercices/Anki/Interros : centrés dans la barre */
.parcoursViewTabs{flex:1 1 auto;justify-content:center}

/* Sélecteur de chapitre : rouge pour le Cours (matière) ; Exos/Anki restent bleus */
#courseView .parcoursChapterSelect{border-color:var(--red);color:var(--red)}
#courseView .parcoursChapterSelect:focus-visible{outline-color:var(--red)}

/* Fine bordure extérieure systématique sur les barres de progression (comme la vue d'ensemble) */
.pickSegBar,.viewTitleProgressTrack,.inlineProgressTrack,.sectionProgressTrack,.progress,.annualProgressTrack{box-sizing:border-box;border:1px solid rgba(17,17,17,.5)}

/* Sélecteur de chapitre Anki : violet (matière) */
#ankiView .parcoursChapterSelect{border-color:var(--purple);color:var(--purple)}
#ankiView .parcoursChapterSelect:focus-visible{outline-color:var(--purple)}

/* Vue d'ensemble : hover des en-têtes = fond doux de la couleur de la colonne (au lieu du gris) */
#sectionProgress .overviewTable thead th:nth-child(1) .overviewColHeaderBtn:hover{background:var(--redSoft)}
#sectionProgress .overviewTable thead th:nth-child(2) .overviewColHeaderBtn:hover{background:var(--blueSoft)}
#sectionProgress .overviewTable thead th:nth-child(3) .overviewColHeaderBtn:hover{background:var(--purpleSoft)}
#sectionProgress .overviewTable thead th:nth-child(4) .overviewColHeaderBtn:hover{background:var(--interroSoft)}

/* Vue Liste Anki : flashcard + filtres plafonnés à la largeur des autres listes (comme Cours/Exos) */
.app:not(.ankiFocus) #ankiView .ankiLayout,.app:not(.ankiFocus) #ankiView .ankiTargetPanel{max-width:var(--listMaxWidth)}

/* Parcours (focus) : barres pleine largeur (fond edge-to-edge comme la topbar), contenu recentré sur la colonne 900px */
.app.courseFocus .courseParcoursBar,.app.exoFocus .courseParcoursBar,.app.ankiFocus .courseParcoursBar,.app.hubFocus .courseParcoursBar{margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);padding-left:max(14px,calc(50vw - 450px));padding-right:max(14px,calc(50vw - 450px))}

/* Vue Liste Anki : contenu de la topbar calé sur la colonne de la liste (820px), comme Cours/Exos */
@media(min-width:761px){.topbar[data-view="anki"]{padding-left:22px;padding-right:max(22px, calc(100% - 22px - var(--listMaxWidth)))}}

/* Parcours : hover des onglets (non actifs) = fond doux de la matière (comme la vue d'ensemble) */
.parcoursViewTab:not(.active)[data-pv="course"]:hover{background:var(--redSoft)}
.parcoursViewTab:not(.active)[data-pv="exercises"]:hover{background:var(--blueSoft)}
.parcoursViewTab:not(.active)[data-pv="anki"]:hover{background:var(--purpleSoft)}
.parcoursViewTab:not(.active)[data-pv="chapterInterros"]:hover{background:var(--interroSoft)}


/* ===== Mode Parcours Interro (squelette, teinte verte --interro) ===== */
.interroModeToggle{display:none;height:30px;min-width:40px;padding:0 10px;border:1px solid #9ccbb0;background:#fff;color:var(--interro);border-radius:10px;font:inherit;font-weight:850;font-size:14px;line-height:1;cursor:pointer;white-space:nowrap}
.topbar[data-view="chapterInterros"] .interroModeToggle{display:inline-flex;align-items:center;justify-content:center}
.interroModeToggle:hover{background:var(--interroSoft)}
.interroModeToggle[aria-pressed="true"]{background:var(--interro);border-color:var(--interro);color:#fff}
.interroModeToggle:focus-visible{outline:2px solid var(--interro);outline-offset:2px}
.app.interroFocus{grid-template-columns:1fr}
.app.interroFocus:not(.sidebar-open)>.sidebar{display:none}
.app.interroFocus.sidebar-open>.sidebar{display:flex;position:fixed;z-index:60;top:0;left:0;width:min(320px,88vw);height:100dvh;box-shadow:16px 0 36px rgba(7,14,27,.28)}
.app.interroFocus.sidebar-open>.menuBackdrop{display:block;position:fixed;z-index:55;inset:0;background:rgba(7,14,27,.46)}
.app.interroFocus .topbar{display:none}
.app.interroFocus .content{padding:14px;max-width:900px;margin:0 auto}
.app.interroFocus .courseParcoursBar{margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);padding-left:max(14px,calc(50vw - 450px));padding-right:max(14px,calc(50vw - 450px))}
.interroParcoursPick .courseParcoursExit,.app.interroFocus .courseParcoursExit{color:var(--interro);border-color:#9ccbb0}
/* Parcours interro : accueil (choisir la partie / bilan) + une question par page */
/* « À revoir » : déroulé inline de l'objet / fiche (pas de navigation) */
.interroRefReveal{margin:6px 0 10px;padding:10px 12px;border:1px solid #e2e7ef;border-radius:10px;background:#fbfcfe;overflow-x:auto}
.interroRefReveal .interroRefFront{font-weight:700;margin-bottom:6px}
.interroRefReveal .interroRefBack{border-top:1px solid #eef2f7;padding-top:6px}
.interroRefReveal img{max-width:100%}
.interroRecoveryBucket li>.interroRefReveal{grid-column:1/-1;width:100%}
.interroRecoveryRefs>div>.interroRefReveal{flex-basis:100%;width:100%}
.interroRefEmpty{color:#8a94a6;font-style:italic;margin:0}
.interroRecoveryItemLink.open,.interroRecoveryLink.open{outline:2px solid currentColor;outline-offset:2px;border-radius:6px}
.interroParcoursHome{max-width:760px;margin:0 auto}
.interroParcoursHome h2{margin:0 0 14px;font-size:18px}
.interroBilanBtn{margin-top:16px;width:100%;border:1px solid #d7dee9;border-radius:12px;background:#fff;padding:12px;font:inherit;font-weight:800;font-size:14px;color:var(--interro,#15803d);cursor:pointer}
.interroBilanBtn:hover{background:#f3faf6}
.interroPickCard{cursor:pointer;text-align:left}
.interroParcoursOne{list-style:none;margin:0;padding:0}
.interroRunNav{display:flex;justify-content:space-between;gap:12px;margin-top:16px}
#chapterInterrosView .parcoursChapterSelect{border-color:var(--interro);color:var(--interro)}
.parcoursViewTab.active[data-pv="chapterInterros"]~*,.interroParcoursPick #interroParcoursExit{}
.interroCorrectBtn{flex:1 1 0;background:var(--interro)!important;border-color:var(--interro)!important;color:#fff!important;font-weight:900}
.interroPending{color:var(--muted)}
/* Run correction / review */
.interroRun{max-width:760px;margin:0 auto;padding:4px 2px 20px}
.interroQHead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.interroQPos{font-weight:850;color:var(--interro)}
.interroQBareme{font-weight:800;color:var(--muted);font-size:13px}
.interroEnonce{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px;font-size:16px;line-height:1.55}
.interroRevealBtn{margin-top:12px;width:100%;border:1px solid #9ccbb0;background:var(--interroSoft);color:var(--interro);border-radius:12px;padding:11px;font:inherit;font-weight:850;cursor:pointer}
.interroCorrige{margin-top:14px;background:#fff;border:1px solid var(--line);border-left:4px solid var(--interro);border-radius:12px;padding:14px;line-height:1.55}
.interroBlockLabel{font-size:11px;font-weight:850;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:8px}
.interroBareme{margin-top:14px}
.interroLines{display:flex;flex-direction:column;gap:7px}
.interroLine{display:flex;align-items:center;gap:10px;border:1.5px solid var(--line);background:#fff;border-radius:11px;padding:10px 12px;font:inherit;cursor:pointer;text-align:left}
.interroLine:hover{background:#f6f8fb}
.interroLine.on{border-color:var(--interro);background:var(--interroSoft)}
.interroLineCheck{width:20px;height:20px;flex:0 0 auto;border-radius:6px;border:1.5px solid #b9c2d0;display:grid;place-items:center;font-weight:900;color:#fff}
.interroLine.on .interroLineCheck{background:var(--interro);border-color:var(--interro)}
.interroLineLabel{flex:1 1 auto;font-weight:700}
.interroLinePts{flex:0 0 auto;font-size:12px;font-weight:800;color:var(--muted)}
.interroRunNav{display:flex;gap:10px;margin-top:18px;justify-content:space-between}
/* Nav Précédent/Suivant du run d'interro, déplacée dans la barre du haut et alignée à droite. */
.interroRunNavTop{display:flex;gap:8px;align-items:center;margin-left:auto;flex:0 0 auto}
@media(max-width:760px){.interroRunNavTop{flex:1 1 100%;justify-content:flex-end;margin-left:0}}
.interroReviewHead{font-weight:850;margin-bottom:12px;color:var(--interro)}
.interroErrCard{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px;margin-bottom:12px}
.interroErrList{margin-top:12px;display:flex;flex-wrap:wrap;gap:6px}
.interroErrLinks{margin-top:10px}
.interroLinkHint{font-size:12px;color:var(--muted)}
.interroErrCard [data-interro-reviewed]{margin-top:12px}
.interroDemoNote{margin-top:14px;font-size:12px;color:#8a6a1f;background:var(--amberSoft);border:1px solid #e9c98b;border-radius:10px;padding:8px 11px;font-weight:700}
.interroParcoursRecap h2{color:var(--interro)}

/* Interro reprise : carte revue = teinte jaune */
.interroErrCard.revu{border-color:#e9c98b;background:#fffaf0}
.interroErrCard.revu .interroQPos{color:#8a6a1f}

/* #3 Compétences : retirées de la LISTE des exercices (conservées dans le DOM, juste invisibles) */
.exercise .exCompetences{display:none}
/* #2 Badge « Défis » des réussites : retiré (conservé dans le code, juste invisible) — dashboard + vue annuelle */
.achievementBadge[data-dashboard-difficulty="challenge"],.annualAchievement[data-annual-difficulty="challenge"]{display:none}

/* Vue liste : énoncé d'un exo lié révélé sous les badges (un à la fois) */
.courseLinkedInline{flex:0 0 100%;width:100%;margin-top:0;padding-top:8px;border-top:1px dashed var(--line)}
.courseLinkedInline img{display:block;max-width:100%;margin:0 auto}
.linkedExBadge.active{color:#fff}
.linkedExBadge.active.st-white,.linkedExBadge.active.st-blue{background:var(--blue);border-color:var(--blue)}
.linkedExBadge.active.st-green{background:var(--green);border-color:var(--green)}
.linkedExBadge.active.st-red{background:var(--red);border-color:var(--red)}
.linkedExBadge.active .linkedExStars{color:#fff}
.courseLinkedLabel{cursor:pointer}

/* Exos liés : étoiles toujours jaunes (indépendant de l'état du badge) et plus grosses */
.linkedExStars{color:#e5a31c!important;opacity:1!important;font-size:10px;display:inline-flex;align-items:center;line-height:1}

/* ===== Page « Ce soir » — rituel quotidien (docs/CONCEPTION_CE_SOIR.md) ===== */
.ceSoir{max-width:var(--listMaxWidth);margin:0 auto}
.ceSoirHead{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin:2px 0 16px}
.ceSoirHead h1{margin:0;font-size:22px}
.ceSoirDate{color:var(--muted);font-weight:700;font-size:13px;text-transform:capitalize}
.ceSoirDone{margin-left:auto;background:var(--greenSoft);color:var(--green);font-weight:850;font-size:13px;border-radius:999px;padding:5px 12px}
.ceSoirList{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}
.ceSoirItem{display:flex;align-items:center;gap:9px;width:100%;text-align:left;background:#fff;border:1px solid var(--line);border-radius:11px;padding:9px 12px;font:inherit;font-size:13.5px;font-weight:700;color:var(--text);cursor:pointer}
.ceSoirItem:hover{border-color:var(--blueBorder);background:#fbfcff}
.ceSoirItemStatic{cursor:default}
.ceSoirItemStatic:hover{border-color:var(--line);background:#fff}
.ceSoirItemNum{flex:0 0 auto;min-width:24px;height:24px;border-radius:7px;background:var(--blueSoft);color:var(--blue);display:inline-grid;place-items:center;font-size:12px;font-weight:900;padding:0 4px}
.ceSoirItemTitle{min-width:0;flex:1 1 auto}
.ceSoirState{flex:0 0 auto;font-size:13px;line-height:1}
.ceSoirState.st-known{color:var(--green)}
.ceSoirState.st-review{color:var(--red)}
.ceSoirState.st-none{color:#b8c0cc}
.ceSoirBtns{margin-top:2px}
.ceSoirPret{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 12px}
.ceSoirPretLabel{font-weight:850;font-size:13.5px;color:var(--text)}
.ceSoirHint{margin-top:6px;color:var(--muted);font-size:12px;font-weight:650}
.ceSoirEmpty p{margin:0;font-size:14px;line-height:1.6}

/* ── Page « Ma colle » (colle.js) : le bloc de colle en cours ────────────────
   Accent couleur Colles (--colle), cohérent avec les pastilles « au programme de
   colle » du cours et des exos. Réutilise .stateSeg/.stateBtn de la page Cours et
   .colleCard du journal (le bloc de déclaration EST une carte de journal). */
.colleHead{align-items:flex-start;gap:16px}
.colleGotoDeclare{flex:0 0 auto;padding:8px 14px;border:1px solid var(--colle);border-radius:999px;background:var(--colleSoft);color:var(--colle);font-size:12px;font-weight:850;text-decoration:none;white-space:nowrap}
.colleScope{margin:0 0 16px;color:var(--muted);font-size:13px;line-height:1.55}
.colleScope strong{color:var(--text)}
.colleChapter{margin-bottom:16px;padding:14px 16px;border:1px solid var(--line);border-radius:17px;background:var(--panel);box-shadow:0 7px 20px rgba(31,50,86,.06)}
.colleChapterClosed{background:#fbfcfe}
.colleChapterTitle{margin:0 0 6px;font-size:16px;line-height:1.3;color:#29384f}
.colleChapterTitle small{display:inline;margin-right:7px;color:var(--colle);font-size:11px;font-weight:850;text-transform:uppercase;letter-spacing:.055em}
.colleChapterTitle small::after{content:"·";margin-left:7px;color:var(--line)}   /* numéro et titre sur une seule ligne */
.colleChapterNote{margin:6px 0 0;color:var(--muted);font-size:12.5px;line-height:1.5}
.colleLink{border:1px solid var(--line);border-radius:999px;padding:5px 11px;background:#fbfcfe;color:#4d596d;font:inherit;font-size:11.5px;font-weight:800;cursor:pointer;white-space:nowrap}
.colleLink:hover{border-color:var(--colle);color:var(--colle)}
.colleLinkStrong{border-color:var(--colle);background:var(--colleSoft);color:var(--colle)}
.colleDeclare{margin-top:22px;padding-top:16px;border-top:2px solid var(--colleSoft)}
.colleDeclareHead h2{margin:0;font-size:17px;color:#29384f}
.colleDeclareHead p{margin:4px 0 12px;color:var(--muted);font-size:12.5px;line-height:1.5}
.colleColleurRemark textarea{background:#fffdf8!important;border-color:#f0d9b4!important}
@media(max-width:480px){
  .colleHead{flex-direction:column}
}

/* Bilan chiffré des questions de cours (plus de liste : la page Cours la fait mieux). */
/* Retour vers « Ma colle » quand on en vient (Cours / Exercices / Anki). */
.colleReturnBar{display:block;margin:0 0 12px;border:1px solid var(--colle);border-radius:999px;padding:7px 15px;background:var(--colleSoft);color:var(--colle);font:inherit;font-size:12px;font-weight:850;cursor:pointer}
.colleReturnBar:hover{background:#fde3bf}
.parcoursRun .colleReturnBar{display:none}
/* Barres de progression réutilisées dans « Ma colle » : .pickBarWrap/.pickSeg* portent
   déjà tout, il ne reste que le calage dans le groupe (compteur à gauche, pas centré)
   et la couleur. Surcharges SCOPÉES à #colleView : .pickSeg.known et .pickBarCount sont
   partagés avec les accueils Cours/Exos/Anki/Interros, qui restent en vert. */
#colleView .pickBarCount,#colleView .pickBarCount b{color:var(--colle)}   /* le <b> porte sa propre couleur (.pickBarCount b) : le parent ne suffit pas */
#colleView .pickSeg.known{background:linear-gradient(90deg,var(--colle),#f0a868)}
/* Titres de groupe à la couleur de leur section — même convention que .recapGroup.rc* :
   Cours rouge, Exercices bleu, Anki violet. Le nombre suit son titre (une seule phrase). */
#colleView .colleGroupCourse h3{color:var(--red)}
#colleView .colleGroupExos h3{color:var(--blue)}
#colleView .colleGroupAnki h3{color:var(--purple)}

/* Une ligne par section : intitulé · barre · Parcours/Liste. Le compte est dans la barre.
   Grille COMMUNE aux trois lignes (display:contents sur la ligne) : les colonnes se calent
   sur le plus large intitulé, donc tout s'aligne verticalement sans largeur codée en dur. */
.colleRows{display:grid;grid-template-columns:max-content minmax(60px,1fr) max-content;gap:11px 14px;align-items:center;margin-top:12px}
.colleRow{display:contents}
.colleRow h3{margin:0;font-size:11.5px;font-weight:850;text-transform:uppercase;letter-spacing:.055em}
.colleRow .pickBarCount{text-align:left}
.colleRowActions{display:flex;gap:7px}
@media(max-width:480px){
  /* Trop étroit pour trois colonnes : chaque ligne redevient un bloc autonome. */
  .colleRows{display:block}
  .colleRow{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-top:11px;padding-top:11px;border-top:1px solid var(--line)}
  .colleRow h3{flex:1 0 100%}
  .colleRow .pickBarWrap{flex:1 1 90px}
}
/* Validation : le seul passage à la colle suivante. */
.colleValidateRow{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-top:12px}
.colleValidateHint{margin:0;color:var(--muted);font-size:12px;line-height:1.45}
.colleValidateDone{margin-top:12px;color:var(--colle);font-weight:850}
.colleValidateBtn{flex:0 0 auto;border:1px solid var(--colle);border-radius:999px;padding:9px 20px;background:var(--colle);color:#fff;font:inherit;font-size:13px;font-weight:850;cursor:pointer}
.colleValidateBtn:hover{background:#c26a05}
.colleValidateBtn:disabled{border-color:var(--line);background:#eef1f6;color:#9aa4b4;cursor:not-allowed}
