{"id":1674,"date":"2026-09-08T08:08:07","date_gmt":"2026-09-08T08:08:07","guid":{"rendered":"https:\/\/maroczain.com\/scolaire.maroczain.com\/?page_id=1674"},"modified":"2026-09-08T08:08:09","modified_gmt":"2026-09-08T08:08:09","slug":"bac-blanc-cockpit-pro-max","status":"publish","type":"page","link":"https:\/\/maroczain.com\/scolaire.maroczain.com\/bac-blanc-cockpit-pro-max\/","title":{"rendered":"BAC BLANC COCKPIT PRO MAX"},"content":{"rendered":"\n<div id=\"mza-bac-cockpit\">\n\n<style>\n#mza-bac-cockpit,#mza-bac-cockpit *{box-sizing:border-box}\n#mza-bac-cockpit{\n --navy:#06172c;--navy2:#0b2948;--blue:#0d416d;\n --gold:#c99a36;--gold2:#efd68c;--paper:#f4f6f8;\n --text:#17283a;--muted:#68798b;--line:#dde4ea;\n font-family:Arial,Helvetica,sans-serif;background:var(--paper);color:var(--text)\n}\n#mza-bac-cockpit .wrap{max-width:1280px;margin:auto;padding:0 24px}\n#mza-bac-cockpit section{padding:58px 0}\n#mza-bac-cockpit a{text-decoration:none;color:inherit}\n#mza-bac-cockpit button,#mza-bac-cockpit input,#mza-bac-cockpit select{font:inherit}\n\n#mza-bac-cockpit .hero{\n padding:70px 0 55px;color:#fff;\n background:\n radial-gradient(circle at 82% 8%,rgba(239,214,140,.22),transparent 27%),\n linear-gradient(135deg,#041224,#082b4c 68%,#10517e)\n}\n#mza-bac-cockpit .badge{\n display:inline-block;padding:8px 13px;border-radius:999px;\n border:1px solid rgba(239,214,140,.4);color:var(--gold2);\n font-size:11px;font-weight:900;letter-spacing:1.3px\n}\n#mza-bac-cockpit h1{\n font:500 clamp(43px,7vw,78px)\/1 Georgia,serif;\n margin:17px 0;color:#fff\n}\n#mza-bac-cockpit .lead{\n max-width:900px;color:#d7e1ea;font-size:18px;line-height:1.75\n}\n#mza-bac-cockpit .actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:23px}\n#mza-bac-cockpit .btn{\n min-height:45px;padding:0 16px;border:0;border-radius:10px;\n display:inline-flex;align-items:center;justify-content:center;\n cursor:pointer;font-size:11px;font-weight:900\n}\n#mza-bac-cockpit .gold{\n background:linear-gradient(135deg,#bd892b,#efd483);color:#142238\n}\n#mza-bac-cockpit .darkbtn{background:var(--navy);color:#fff}\n#mza-bac-cockpit .lightbtn{background:#edf2f6;color:var(--navy)}\n#mza-bac-cockpit .danger{background:#7f2430;color:#fff}\n#mza-bac-cockpit .glass{\n background:rgba(255,255,255,.08);color:#fff;\n border:1px solid rgba(255,255,255,.16)\n}\n\n#mza-bac-cockpit .head{max-width:900px;margin-bottom:28px}\n#mza-bac-cockpit .kicker{\n color:#987023;font-size:10px;font-weight:900;letter-spacing:1.3px\n}\n#mza-bac-cockpit h2{\n color:var(--navy);font:500 clamp(30px,4vw,46px)\/1.1 Georgia,serif;\n margin:8px 0 10px\n}\n#mza-bac-cockpit .head p{color:var(--muted);line-height:1.7}\n\n#mza-bac-cockpit .profile{\n display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:12px;\n margin-top:30px;padding:18px;background:rgba(255,255,255,.08);\n border:1px solid rgba(255,255,255,.13);border-radius:18px\n}\n#mza-bac-cockpit .profile label{\n display:block;color:#cbd7e0;font-size:10px;font-weight:900;margin-bottom:7px\n}\n#mza-bac-cockpit .profile input,\n#mza-bac-cockpit .profile select{\n width:100%;padding:12px;border:1px solid rgba(255,255,255,.15);\n background:rgba(255,255,255,.09);color:#fff;border-radius:9px;outline:none\n}\n#mza-bac-cockpit .profile select option{color:#111}\n\n#mza-bac-cockpit .kpis{\n display:grid;grid-template-columns:repeat(4,1fr);gap:14px;\n margin-top:-28px;position:relative;z-index:2\n}\n#mza-bac-cockpit .kpi{\n background:#fff;border:1px solid var(--line);border-radius:18px;\n padding:22px;box-shadow:0 10px 30px rgba(3,20,38,.08)\n}\n#mza-bac-cockpit .kpi small{\n display:block;color:var(--muted);font-size:10px;font-weight:900;\n letter-spacing:.7px;text-transform:uppercase\n}\n#mza-bac-cockpit .kpi strong{\n display:block;font:600 36px Georgia,serif;color:var(--navy);margin:8px 0 3px\n}\n#mza-bac-cockpit .kpi span{font-size:11px;color:var(--muted)}\n\n#mza-bac-cockpit .subjects{\n display:grid;grid-template-columns:repeat(3,1fr);gap:16px\n}\n#mza-bac-cockpit .subject{\n background:#fff;border:1px solid var(--line);border-radius:20px;padding:22px;\n position:relative;overflow:hidden\n}\n#mza-bac-cockpit .subject:before{\n content:\"\";position:absolute;left:0;top:0;width:5px;height:100%;\n background:linear-gradient(var(--gold),var(--gold2))\n}\n#mza-bac-cockpit .subject-top{\n display:flex;justify-content:space-between;gap:10px;align-items:flex-start\n}\n#mza-bac-cockpit .icon{font-size:27px}\n#mza-bac-cockpit .subject h3{color:var(--navy);margin:12px 0 5px}\n#mza-bac-cockpit .subject p{color:var(--muted);font-size:12px;line-height:1.6}\n#mza-bac-cockpit .score{\n font:600 30px Georgia,serif;color:var(--navy)\n}\n#mza-bac-cockpit .bar{\n height:8px;background:#e8edf1;border-radius:999px;overflow:hidden;margin:16px 0\n}\n#mza-bac-cockpit .bar span{\n display:block;height:100%;width:0;\n background:linear-gradient(90deg,var(--gold),var(--blue));\n transition:.4s\n}\n#mza-bac-cockpit .subject-actions{display:flex;gap:7px;flex-wrap:wrap}\n\n#mza-bac-cockpit .dashboard{\n display:grid;grid-template-columns:1.15fr .85fr;gap:18px\n}\n#mza-bac-cockpit .panel{\n background:#fff;border:1px solid var(--line);border-radius:21px;padding:24px\n}\n#mza-bac-cockpit .panel h3{color:var(--navy);margin:0 0 16px}\n#mza-bac-cockpit .radar{\n width:190px;height:190px;border-radius:50%;\n margin:15px auto;display:flex;align-items:center;justify-content:center;\n background:conic-gradient(var(--gold) 0deg,#e6ebef 0deg)\n}\n#mza-bac-cockpit .radar-inner{\n width:145px;height:145px;background:#fff;border-radius:50%;\n display:flex;flex-direction:column;align-items:center;justify-content:center\n}\n#mza-bac-cockpit .radar-inner strong{\n font:600 37px Georgia,serif;color:var(--navy)\n}\n#mza-bac-cockpit .radar-inner span{\n color:var(--muted);font-size:9px;font-weight:900\n}\n#mza-bac-cockpit .readiness{\n text-align:center;padding:13px;background:#f5f7f9;border-radius:10px;\n color:#536477;line-height:1.5\n}\n\n#mza-bac-cockpit .planner{\n display:grid;grid-template-columns:repeat(3,1fr);gap:13px\n}\n#mza-bac-cockpit .plan{\n background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px\n}\n#mza-bac-cockpit .plan b{color:var(--navy)}\n#mza-bac-cockpit .plan p{color:var(--muted);font-size:12px;line-height:1.6}\n\n#mza-bac-cockpit .formrow{\n display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:9px;margin-bottom:15px\n}\n#mza-bac-cockpit input,\n#mza-bac-cockpit select{\n width:100%;padding:12px;border:1px solid #d9e1e7;border-radius:9px;background:#fff\n}\n#mza-bac-cockpit .sessions{display:grid;gap:9px}\n#mza-bac-cockpit .session{\n display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;\n padding:14px;border:1px solid #e2e7eb;border-radius:12px;background:#fafbfc\n}\n#mza-bac-cockpit .session b{color:var(--navy)}\n#mza-bac-cockpit .session small{display:block;color:var(--muted);margin-top:4px}\n\n#mza-bac-cockpit .timerpanel{text-align:center}\n#mza-bac-cockpit .timer{\n font:600 clamp(50px,7vw,78px)\/1 Georgia,serif;color:var(--navy);\n margin:22px 0\n}\n#mza-bac-cockpit .mission{\n margin-top:18px;padding:18px;border-radius:13px;background:#f5f7f9;\n color:#526376;line-height:1.65\n}\n\n#mza-bac-cockpit .errors{display:grid;gap:9px}\n#mza-bac-cockpit .error{\n padding:14px;border-left:4px solid var(--gold);\n background:#f7f8fa;border-radius:9px\n}\n#mza-bac-cockpit .error b{color:var(--navy)}\n#mza-bac-cockpit .error small{display:block;color:var(--muted);margin-top:4px}\n\n#mza-bac-cockpit .objective-add{\n display:grid;grid-template-columns:1fr auto;gap:9px;margin-bottom:14px\n}\n#mza-bac-cockpit .objective{\n display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;\n padding:12px;border-bottom:1px solid #edf0f3\n}\n#mza-bac-cockpit .objective.done span{\n text-decoration:line-through;color:#98a3ae\n}\n\n#mza-bac-cockpit .dark{background:var(--navy);color:#fff}\n#mza-bac-cockpit .dark h2{color:#fff}\n#mza-bac-cockpit .dark .head p{color:#cbd7e0}\n#mza-bac-cockpit .examgrid{\n display:grid;grid-template-columns:repeat(4,1fr);gap:13px\n}\n#mza-bac-cockpit .examcard{\n padding:22px;border-radius:16px;background:rgba(255,255,255,.07);\n border:1px solid rgba(255,255,255,.1)\n}\n#mza-bac-cockpit .examcard h3{color:#fff;margin:0 0 8px}\n#mza-bac-cockpit .examcard p{color:#c7d3dc;font-size:12px;line-height:1.6}\n#mza-bac-cockpit .examcard .btn{margin-top:8px}\n\n#mza-bac-cockpit .cta{\n text-align:center;padding:50px 24px;border-radius:24px;\n background:linear-gradient(135deg,#06172c,#0d416d);color:#fff\n}\n#mza-bac-cockpit .cta h2{color:#fff}\n#mza-bac-cockpit .cta p{\n max-width:820px;margin:0 auto 20px;color:#cfdae4;line-height:1.7\n}\n\n#mza-bac-cockpit .modal{\n display:none;position:fixed;inset:0;z-index:99999;\n background:rgba(1,10,20,.78);padding:20px;\n align-items:center;justify-content:center\n}\n#mza-bac-cockpit .modal.open{display:flex}\n#mza-bac-cockpit .modalbox{\n width:min(480px,100%);background:#fff;border-radius:20px;padding:25px\n}\n#mza-bac-cockpit .modalbox h3{color:var(--navy);margin-top:0}\n#mza-bac-cockpit .modalbox p{color:var(--muted);line-height:1.6}\n\n@media(max-width:1000px){\n #mza-bac-cockpit .subjects{grid-template-columns:repeat(2,1fr)}\n #mza-bac-cockpit .kpis{grid-template-columns:repeat(2,1fr)}\n #mza-bac-cockpit .dashboard{grid-template-columns:1fr}\n #mza-bac-cockpit .examgrid{grid-template-columns:repeat(2,1fr)}\n #mza-bac-cockpit .profile{grid-template-columns:1fr 1fr}\n}\n@media(max-width:680px){\n #mza-bac-cockpit .subjects,\n #mza-bac-cockpit .kpis,\n #mza-bac-cockpit .planner,\n #mza-bac-cockpit .examgrid,\n #mza-bac-cockpit .profile{grid-template-columns:1fr}\n #mza-bac-cockpit .formrow{grid-template-columns:1fr}\n #mza-bac-cockpit .session{grid-template-columns:1fr}\n}\n<\/style>\n\n<header class=\"hero\">\n<div class=\"wrap\">\n\n<span class=\"badge\">MAROC ZAIN ACADEMY \u2022 MZA EXAM CENTER<\/span>\n\n<h1>BAC BLANC<br>COCKPIT<\/h1>\n\n<p class=\"lead\">\nLe centre de commandement de la pr\u00e9paration au baccalaur\u00e9at :\nnotes, progression, mati\u00e8res prioritaires, simulations, calendrier,\nmissions quotidiennes, objectifs et analyse des erreurs.\n<\/p>\n\n<div class=\"actions\">\n<a href=\"#matieres\" class=\"btn gold\">\ud83d\udcda MES MATI\u00c8RES<\/a>\n<a href=\"#planning\" class=\"btn glass\">\ud83d\udcc5 PLANNING<\/a>\n<a href=\"#training\" class=\"btn glass\">\u23f1 TRAINING<\/a>\n<a href=\"#examcenter\" class=\"btn glass\">\ud83c\udfc6 EXAM CENTER<\/a>\n<\/div>\n\n<div class=\"profile\">\n<div>\n<label>\u00c9L\u00c8VE<\/label>\n<input id=\"studentName\" type=\"text\" placeholder=\"Nom et pr\u00e9nom\" oninput=\"mzaBacSaveProfile()\">\n<\/div>\n\n<div>\n<label>FILI\u00c8RE<\/label>\n<select id=\"studentTrack\" onchange=\"mzaBacSaveProfile()\">\n<option value=\"\">Choisir<\/option>\n<option>Sciences Math\u00e9matiques<\/option>\n<option>Sciences Physiques<\/option>\n<option>SVT<\/option>\n<option>Sciences \u00c9conomiques<\/option>\n<option>Lettres<\/option>\n<option>Autre<\/option>\n<\/select>\n<\/div>\n\n<div>\n<label>OBJECTIF \/20<\/label>\n<input id=\"targetAverage\" type=\"number\" min=\"0\" max=\"20\" step=\".25\" placeholder=\"15\" oninput=\"mzaBacSaveProfile()\">\n<\/div>\n\n<div>\n<label>HEURES \/ SEMAINE<\/label>\n<input id=\"weeklyHours\" type=\"number\" min=\"1\" max=\"80\" placeholder=\"12\" oninput=\"mzaBacSaveProfile()\">\n<\/div>\n<\/div>\n\n<\/div>\n<\/header>\n\n<div class=\"wrap\">\n<div class=\"kpis\">\n\n<div class=\"kpi\">\n<small>Moyenne g\u00e9n\u00e9rale<\/small>\n<strong id=\"globalAverage\">\u2014<\/strong>\n<span>sur 20<\/span>\n<\/div>\n\n<div class=\"kpi\">\n<small>Progression<\/small>\n<strong id=\"globalProgress\">0%<\/strong>\n<span>indice p\u00e9dagogique MZA<\/span>\n<\/div>\n\n<div class=\"kpi\">\n<small>Simulations<\/small>\n<strong id=\"simulationCount\">0<\/strong>\n<span>sessions enregistr\u00e9es<\/span>\n<\/div>\n\n<div class=\"kpi\">\n<small>Objectifs<\/small>\n<strong id=\"objectiveCount\">0\/0<\/strong>\n<span>objectifs termin\u00e9s<\/span>\n<\/div>\n\n<\/div>\n<\/div>\n\n<section id=\"matieres\">\n<div class=\"wrap\">\n\n<div class=\"head\">\n<span class=\"kicker\">MES MATI\u00c8RES<\/span>\n<h2>Le tableau de bord des 6 Bac Blanc.<\/h2>\n<p>\nEntrez la derni\u00e8re note obtenue dans chaque mati\u00e8re.\nLe cockpit calcule automatiquement la moyenne et identifie les priorit\u00e9s.\n<\/p>\n<\/div>\n\n<div class=\"subjects\">\n\n<div class=\"subject\" data-subject=\"Math\u00e9matiques\">\n<div class=\"subject-top\"><span class=\"icon\">\u2797<\/span><span class=\"score\" id=\"score-maths\">\u2014<\/span><\/div>\n<h3>Math\u00e9matiques<\/h3>\n<p>Analyse \u2022 Suites \u2022 Probabilit\u00e9s \u2022 G\u00e9om\u00e9trie \u2022 Raisonnement.<\/p>\n<div class=\"bar\"><span id=\"bar-maths\"><\/span><\/div>\n<div class=\"subject-actions\">\n<button class=\"btn gold\" onclick=\"mzaBacScoreModal('maths','Math\u00e9matiques')\">NOTE<\/button>\n<button class=\"btn lightbtn\" onclick=\"mzaBacFocus('Math\u00e9matiques')\">TRAVAILLER<\/button>\n<\/div>\n<\/div>\n\n<div class=\"subject\" data-subject=\"Physique-Chimie\">\n<div class=\"subject-top\"><span class=\"icon\">\u269b\ufe0f<\/span><span class=\"score\" id=\"score-pc\">\u2014<\/span><\/div>\n<h3>Physique-Chimie<\/h3>\n<p>M\u00e9canique \u2022 \u00c9lectricit\u00e9 \u2022 Ondes \u2022 Chimie \u2022 M\u00e9thode scientifique.<\/p>\n<div class=\"bar\"><span id=\"bar-pc\"><\/span><\/div>\n<div class=\"subject-actions\">\n<button class=\"btn gold\" onclick=\"mzaBacScoreModal('pc','Physique-Chimie')\">NOTE<\/button>\n<button class=\"btn lightbtn\" onclick=\"mzaBacFocus('Physique-Chimie')\">TRAVAILLER<\/button>\n<\/div>\n<\/div>\n\n<div class=\"subject\" data-subject=\"SVT\">\n<div class=\"subject-top\"><span class=\"icon\">\ud83e\uddec<\/span><span class=\"score\" id=\"score-svt\">\u2014<\/span><\/div>\n<h3>SVT<\/h3>\n<p>G\u00e9n\u00e9tique \u2022 Immunologie \u2022 Physiologie \u2022 G\u00e9ologie \u2022 Documents.<\/p>\n<div class=\"bar\"><span id=\"bar-svt\"><\/span><\/div>\n<div class=\"subject-actions\">\n<button class=\"btn gold\" onclick=\"mzaBacScoreModal('svt','SVT')\">NOTE<\/button>\n<button class=\"btn lightbtn\" onclick=\"mzaBacFocus('SVT')\">TRAVAILLER<\/button>\n<\/div>\n<\/div>\n\n<div class=\"subject\" data-subject=\"Fran\u00e7ais\">\n<div class=\"subject-top\"><span class=\"icon\">\ud83d\udcd6<\/span><span class=\"score\" id=\"score-fr\">\u2014<\/span><\/div>\n<h3>Fran\u00e7ais<\/h3>\n<p>Compr\u00e9hension \u2022 Analyse \u2022 Langue \u2022 Argumentation \u2022 R\u00e9daction.<\/p>\n<div class=\"bar\"><span id=\"bar-fr\"><\/span><\/div>\n<div class=\"subject-actions\">\n<button class=\"btn gold\" onclick=\"mzaBacScoreModal('fr','Fran\u00e7ais')\">NOTE<\/button>\n<button class=\"btn lightbtn\" onclick=\"mzaBacFocus('Fran\u00e7ais')\">TRAVAILLER<\/button>\n<\/div>\n<\/div>\n\n<div class=\"subject\" data-subject=\"Arabe\">\n<div class=\"subject-top\"><span class=\"icon\">\u2712\ufe0f<\/span><span class=\"score\" id=\"score-ar\">\u2014<\/span><\/div>\n<h3>Arabe<\/h3>\n<p>\u0641\u0647\u0645 \u0627\u0644\u0646\u0635 \u2022 \u0627\u0644\u0644\u063a\u0629 \u2022 \u0627\u0644\u062a\u062d\u0644\u064a\u0644 \u2022 \u0627\u0644\u062d\u062c\u0627\u062c \u2022 \u0627\u0644\u062a\u0639\u0628\u064a\u0631 \u0627\u0644\u0643\u062a\u0627\u0628\u064a.<\/p>\n<div class=\"bar\"><span id=\"bar-ar\"><\/span><\/div>\n<div class=\"subject-actions\">\n<button class=\"btn gold\" onclick=\"mzaBacScoreModal('ar','Arabe')\">NOTE<\/button>\n<button class=\"btn lightbtn\" onclick=\"mzaBacFocus('Arabe')\">TRAVAILLER<\/button>\n<\/div>\n<\/div>\n\n<div class=\"subject\" data-subject=\"Anglais\">\n<div class=\"subject-top\"><span class=\"icon\">\ud83c\udf0d<\/span><span class=\"score\" id=\"score-en\">\u2014<\/span><\/div>\n<h3>Anglais<\/h3>\n<p>Reading \u2022 Vocabulary \u2022 Grammar \u2022 Communication \u2022 Writing.<\/p>\n<div class=\"bar\"><span id=\"bar-en\"><\/span><\/div>\n<div class=\"subject-actions\">\n<button class=\"btn gold\" onclick=\"mzaBacScoreModal('en','Anglais')\">NOTE<\/button>\n<button class=\"btn lightbtn\" onclick=\"mzaBacFocus('Anglais')\">TRAVAILLER<\/button>\n<\/div>\n<\/div>\n\n<\/div>\n<\/div>\n<\/section>\n\n<section style=\"background:#eceae4\">\n<div class=\"wrap\">\n\n<div class=\"head\">\n<span class=\"kicker\">PERFORMANCE<\/span>\n<h2>Votre niveau de pr\u00e9paration.<\/h2>\n<\/div>\n\n<div class=\"dashboard\">\n\n<div class=\"panel\">\n<h3>Progression par mati\u00e8re<\/h3>\n\n<div id=\"progressList\"><\/div>\n\n<\/div>\n\n<div class=\"panel\">\n<h3>Indice MZA Bac<\/h3>\n\n<div class=\"radar\" id=\"bacRadar\">\n<div class=\"radar-inner\">\n<strong id=\"radarScore\">0%<\/strong>\n<span>READINESS<\/span>\n<\/div>\n<\/div>\n\n<div class=\"readiness\" id=\"readinessText\">\nAjoutez vos premi\u00e8res notes pour obtenir une analyse.\n<\/div>\n\n<\/div>\n\n<\/div>\n<\/div>\n<\/section>\n\n<section id=\"planning\">\n<div class=\"wrap\">\n\n<div class=\"head\">\n<span class=\"kicker\">SMART PLANNER<\/span>\n<h2>Programme hebdomadaire intelligent.<\/h2>\n<p>\nLe moteur r\u00e9partit vos heures disponibles en donnant davantage de temps\naux mati\u00e8res dont les notes sont les plus faibles.\n<\/p>\n<\/div>\n\n<div class=\"actions\">\n<button class=\"btn gold\" onclick=\"mzaGeneratePlan()\">\u26a1 G\u00c9N\u00c9RER MON PLANNING<\/button>\n<\/div>\n\n<div id=\"plannerResult\" class=\"planner\" style=\"margin-top:18px\"><\/div>\n\n<\/div>\n<\/section>\n\n<section style=\"background:#eceae4\">\n<div class=\"wrap\">\n\n<div class=\"head\">\n<span class=\"kicker\">CALENDRIER BAC BLANC<\/span>\n<h2>Planifiez vos simulations.<\/h2>\n<\/div>\n\n<div class=\"panel\">\n\n<div class=\"formrow\">\n\n<select id=\"sessionSubject\">\n<option>Math\u00e9matiques<\/option>\n<option>Physique-Chimie<\/option>\n<option>SVT<\/option>\n<option>Fran\u00e7ais<\/option>\n<option>Arabe<\/option>\n<option>Anglais<\/option>\n<option>Bac Blanc complet<\/option>\n<\/select>\n\n<input type=\"date\" id=\"sessionDate\">\n\n<select id=\"sessionType\">\n<option>Entra\u00eenement<\/option>\n<option>Mini Bac Blanc<\/option>\n<option>Bac Blanc<\/option>\n<option>Simulation finale<\/option>\n<\/select>\n\n<button class=\"btn gold\" onclick=\"mzaAddSession()\">AJOUTER<\/button>\n\n<\/div>\n\n<div id=\"sessionList\" class=\"sessions\"><\/div>\n\n<\/div>\n\n<\/div>\n<\/section>\n\n<section id=\"training\">\n<div class=\"wrap\">\n\n<div class=\"head\">\n<span class=\"kicker\">TRAINING CENTER<\/span>\n<h2>Une s\u00e9ance. Une mission. Un chrono.<\/h2>\n<\/div>\n\n<div class=\"dashboard\">\n\n<div class=\"panel timerpanel\">\n\n<select id=\"trainingSubject\">\n<option>Math\u00e9matiques<\/option>\n<option>Physique-Chimie<\/option>\n<option>SVT<\/option>\n<option>Fran\u00e7ais<\/option>\n<option>Arabe<\/option>\n<option>Anglais<\/option>\n<\/select>\n\n<select id=\"trainingDuration\" onchange=\"mzaSetTrainingDuration()\" style=\"margin-top:9px\">\n<option value=\"600\">10 minutes<\/option>\n<option value=\"1200\">20 minutes<\/option>\n<option value=\"1800\">30 minutes<\/option>\n<option value=\"3600\">60 minutes<\/option>\n<\/select>\n\n<div id=\"trainingTimer\" class=\"timer\">10:00<\/div>\n\n<div class=\"actions\" style=\"justify-content:center\">\n<button class=\"btn gold\" onclick=\"mzaStartTraining()\">\u25b6 START<\/button>\n<button class=\"btn darkbtn\" onclick=\"mzaPauseTraining()\">\u2161 PAUSE<\/button>\n<button class=\"btn lightbtn\" onclick=\"mzaResetTraining()\">\u21bb RESET<\/button>\n<\/div>\n\n<\/div>\n\n<div class=\"panel\">\n\n<h3>Mission du jour<\/h3>\n\n<div id=\"dailyMission\" class=\"mission\">\nCliquez sur \u00ab Nouvelle mission \u00bb pour recevoir une mission d\u2019entra\u00eenement.\n<\/div>\n\n<div class=\"actions\">\n<button class=\"btn gold\" onclick=\"mzaNewMission()\">\ud83c\udfaf NOUVELLE MISSION<\/button>\n<\/div>\n\n<\/div>\n\n<\/div>\n<\/div>\n<\/section>\n\n<section>\n<div class=\"wrap\">\n\n<div class=\"head\">\n<span class=\"kicker\">ERROR DNA<\/span>\n<h2>Construisez votre carte personnelle des erreurs.<\/h2>\n<p>Chaque erreur enregistr\u00e9e devient un point de vigilance pour la simulation suivante.<\/p>\n<\/div>\n\n<div class=\"panel\">\n\n<div class=\"formrow\" style=\"grid-template-columns:1fr 2fr auto\">\n\n<select id=\"errorSubject\">\n<option>Math\u00e9matiques<\/option>\n<option>Physique-Chimie<\/option>\n<option>SVT<\/option>\n<option>Fran\u00e7ais<\/option>\n<option>Arabe<\/option>\n<option>Anglais<\/option>\n<\/select>\n\n<input id=\"errorText\" type=\"text\" placeholder=\"Ex. erreur de signe dans une d\u00e9riv\u00e9e\">\n\n<button class=\"btn gold\" onclick=\"mzaAddError()\">AJOUTER<\/button>\n\n<\/div>\n\n<div id=\"errorList\" class=\"errors\"><\/div>\n\n<\/div>\n\n<\/div>\n<\/section>\n\n<section style=\"background:#eceae4\">\n<div class=\"wrap\">\n\n<div class=\"head\">\n<span class=\"kicker\">OBJECTIFS<\/span>\n<h2>Votre feuille de route vers le Bac.<\/h2>\n<\/div>\n\n<div class=\"panel\">\n\n<div class=\"objective-add\">\n<input id=\"objectiveInput\" type=\"text\" placeholder=\"Ex. atteindre 15\/20 en math\u00e9matiques\">\n<button class=\"btn gold\" onclick=\"mzaAddObjective()\">AJOUTER<\/button>\n<\/div>\n\n<div id=\"objectiveList\"><\/div>\n\n<\/div>\n\n<\/div>\n<\/section>\n\n<section class=\"dark\" id=\"examcenter\">\n<div class=\"wrap\">\n\n<div class=\"head\">\n<span class=\"kicker\" style=\"color:#efd68c\">MZA EXAM CENTER<\/span>\n<h2>Montez progressivement en pression.<\/h2>\n<p>Ces formats sont des simulations p\u00e9dagogiques MZA personnalisables.<\/p>\n<\/div>\n\n<div class=\"examgrid\">\n\n<div class=\"examcard\">\n<h3>Diagnostic<\/h3>\n<p>Identifier rapidement les forces et les lacunes.<\/p>\n<button class=\"btn gold\" onclick=\"mzaLaunchExam('Diagnostic')\">LANCER<\/button>\n<\/div>\n\n<div class=\"examcard\">\n<h3>Mini Bac<\/h3>\n<p>Entra\u00eenement cibl\u00e9 sous contrainte de temps.<\/p>\n<button class=\"btn gold\" onclick=\"mzaLaunchExam('Mini Bac')\">LANCER<\/button>\n<\/div>\n\n<div class=\"examcard\">\n<h3>Bac Blanc<\/h3>\n<p>Simulation longue avec m\u00e9thode et gestion du temps.<\/p>\n<button class=\"btn gold\" onclick=\"mzaLaunchExam('Bac Blanc')\">LANCER<\/button>\n<\/div>\n\n<div class=\"examcard\">\n<h3>Final Simulation<\/h3>\n<p>Mode haute pression avant l\u2019\u00e9ch\u00e9ance finale.<\/p>\n<button class=\"btn gold\" onclick=\"mzaLaunchExam('Simulation Finale')\">LANCER<\/button>\n<\/div>\n\n<\/div>\n\n<div id=\"examMessage\" style=\"margin-top:18px;color:#efd68c;font-weight:900\"><\/div>\n\n<\/div>\n<\/section>\n\n<section>\n<div class=\"wrap\">\n\n<div class=\"cta\">\n\n<h2>MZA BAC COMMAND CENTER<\/h2>\n\n<p>\nUn seul cockpit pour transformer les Bac Blanc en v\u00e9ritable syst\u00e8me de progression :\nmesurer, comprendre, planifier, travailler, simuler, analyser et recommencer.\n<\/p>\n\n<div class=\"actions\" style=\"justify-content:center\">\n<button class=\"btn gold\" onclick=\"window.print()\">\ud83d\udda8 IMPRIMER MON TABLEAU DE BORD<\/button>\n<button class=\"btn glass\" onclick=\"mzaConfirmReset()\">\u21bb R\u00c9INITIALISER MES DONN\u00c9ES<\/button>\n<\/div>\n\n<\/div>\n\n<\/div>\n<\/section>\n\n<div id=\"scoreModal\" class=\"modal\">\n<div class=\"modalbox\">\n\n<h3 id=\"scoreModalTitle\">Ajouter une note<\/h3>\n\n<p>Entrez votre derni\u00e8re note obtenue sur 20.<\/p>\n\n<input type=\"number\" id=\"scoreInput\" min=\"0\" max=\"20\" step=\".25\" placeholder=\"Ex. 14.5\">\n\n<div class=\"actions\">\n<button class=\"btn gold\" onclick=\"mzaSaveScore()\">ENREGISTRER<\/button>\n<button class=\"btn lightbtn\" onclick=\"mzaCloseScoreModal()\">ANNULER<\/button>\n<\/div>\n\n<\/div>\n<\/div>\n\n<script>\nconst BAC_KEY=\"mza_bac_cockpit_v1\";\n\nconst bacSubjects={\n maths:\"Math\u00e9matiques\",\n pc:\"Physique-Chimie\",\n svt:\"SVT\",\n fr:\"Fran\u00e7ais\",\n ar:\"Arabe\",\n en:\"Anglais\"\n};\n\nlet bacState={\n profile:{\n  name:\"\",\n  track:\"\",\n  target:\"\",\n  hours:\"\"\n },\n scores:{\n  maths:null,\n  pc:null,\n  svt:null,\n  fr:null,\n  ar:null,\n  en:null\n },\n sessions:[],\n objectives:[],\n errors:[],\n trainingSessions:0\n};\n\nlet currentScoreKey=null;\n\nfunction mzaLoad(){\n try{\n  const saved=localStorage.getItem(BAC_KEY);\n  if(saved){\n   const data=JSON.parse(saved);\n   bacState=Object.assign(bacState,data);\n   bacState.profile=Object.assign(\n    {name:\"\",track:\"\",target:\"\",hours:\"\"},\n    data.profile||{}\n   );\n   bacState.scores=Object.assign(\n    {maths:null,pc:null,svt:null,fr:null,ar:null,en:null},\n    data.scores||{}\n   );\n   bacState.sessions=data.sessions||[];\n   bacState.objectives=data.objectives||[];\n   bacState.errors=data.errors||[];\n  }\n }catch(e){}\n}\n\nfunction mzaSave(){\n localStorage.setItem(BAC_KEY,JSON.stringify(bacState));\n}\n\nfunction mzaBacSaveProfile(){\n bacState.profile.name=document.getElementById(\"studentName\").value;\n bacState.profile.track=document.getElementById(\"studentTrack\").value;\n bacState.profile.target=document.getElementById(\"targetAverage\").value;\n bacState.profile.hours=document.getElementById(\"weeklyHours\").value;\n mzaSave();\n}\n\nfunction mzaRenderProfile(){\n document.getElementById(\"studentName\").value=bacState.profile.name||\"\";\n document.getElementById(\"studentTrack\").value=bacState.profile.track||\"\";\n document.getElementById(\"targetAverage\").value=bacState.profile.target||\"\";\n document.getElementById(\"weeklyHours\").value=bacState.profile.hours||\"\";\n}\n\nfunction mzaBacScoreModal(key,label){\n currentScoreKey=key;\n document.getElementById(\"scoreModalTitle\").textContent=\"Note \u2014 \"+label;\n document.getElementById(\"scoreInput\").value=\n  bacState.scores[key]===null ? \"\" : bacState.scores[key];\n document.getElementById(\"scoreModal\").classList.add(\"open\");\n document.getElementById(\"scoreInput\").focus();\n}\n\nfunction mzaCloseScoreModal(){\n document.getElementById(\"scoreModal\").classList.remove(\"open\");\n currentScoreKey=null;\n}\n\nfunction mzaSaveScore(){\n if(!currentScoreKey)return;\n\n const val=parseFloat(document.getElementById(\"scoreInput\").value);\n\n if(isNaN(val)||val<0||val>20){\n  alert(\"Entrez une note comprise entre 0 et 20.\");\n  return;\n }\n\n bacState.scores[currentScoreKey]=val;\n mzaSave();\n mzaCloseScoreModal();\n mzaRenderAll();\n}\n\nfunction mzaAverage(){\n const values=Object.values(bacState.scores)\n  .filter(v=>typeof v===\"number\"&&!isNaN(v));\n\n if(!values.length)return null;\n\n return values.reduce((a,b)=>a+b,0)\/values.length;\n}\n\nfunction mzaProgress(){\n const avg=mzaAverage();\n if(avg===null)return 0;\n return Math.round(avg\/20*100);\n}\n\nfunction mzaRenderSubjects(){\n Object.keys(bacSubjects).forEach(key=>{\n  const val=bacState.scores[key];\n\n  const scoreEl=document.getElementById(\"score-\"+key);\n  const barEl=document.getElementById(\"bar-\"+key);\n\n  if(val===null){\n   scoreEl.textContent=\"\u2014\";\n   barEl.style.width=\"0%\";\n  }else{\n   scoreEl.textContent=val.toFixed(2).replace(\".00\",\"\")+\"\/20\";\n   barEl.style.width=Math.min(100,val\/20*100)+\"%\";\n  }\n });\n}\n\nfunction mzaRenderKpis(){\n const avg=mzaAverage();\n const progress=mzaProgress();\n\n document.getElementById(\"globalAverage\").textContent=\n  avg===null ? \"\u2014\" : avg.toFixed(2);\n\n document.getElementById(\"globalProgress\").textContent=progress+\"%\";\n document.getElementById(\"simulationCount\").textContent=bacState.trainingSessions;\n\n const completed=bacState.objectives.filter(o=>o.done).length;\n document.getElementById(\"objectiveCount\").textContent=\n  completed+\"\/\"+bacState.objectives.length;\n\n const radar=document.getElementById(\"bacRadar\");\n radar.style.background=\n  \"conic-gradient(#c99a36 \"+(progress*3.6)+\"deg,#e6ebef 0deg)\";\n\n document.getElementById(\"radarScore\").textContent=progress+\"%\";\n\n let text=\"Ajoutez vos premi\u00e8res notes pour obtenir une analyse.\";\n\n if(avg!==null){\n  if(avg<8) text=\"Priorit\u00e9 : reconstruire les fondamentaux et travailler r\u00e9guli\u00e8rement.\";\n  else if(avg<10) text=\"Vous approchez du seuil de ma\u00eetrise. Renforcez les mati\u00e8res faibles.\";\n  else if(avg<12) text=\"Base correcte. La r\u00e9gularit\u00e9 peut maintenant faire progresser la moyenne.\";\n  else if(avg<14) text=\"Bon niveau de pr\u00e9paration. Travaillez la pr\u00e9cision et la gestion du temps.\";\n  else if(avg<16) text=\"Tr\u00e8s bonne pr\u00e9paration. Passez davantage en mode Bac Blanc chronom\u00e9tr\u00e9.\";\n  else text=\"Niveau MZA tr\u00e8s \u00e9lev\u00e9. Priorit\u00e9 \u00e0 la r\u00e9gularit\u00e9 et aux simulations compl\u00e8tes.\";\n }\n\n document.getElementById(\"readinessText\").textContent=text;\n}\n\nfunction mzaRenderProgress(){\n const box=document.getElementById(\"progressList\");\n box.innerHTML=\"\";\n\n Object.keys(bacSubjects).forEach(key=>{\n  const val=bacState.scores[key];\n\n  const row=document.createElement(\"div\");\n  row.style.marginBottom=\"15px\";\n\n  const pct=val===null?0:Math.round(val\/20*100);\n\n  row.innerHTML=\n   \"<div style='display:flex;justify-content:space-between;gap:10px;margin-bottom:6px'>\"+\n   \"<b style='color:#06172c'>\"+bacSubjects[key]+\"<\/b>\"+\n   \"<span style='color:#68798b'>\"+(val===null?\"\u2014\":val+\"\/20\")+\"<\/span>\"+\n   \"<\/div>\"+\n   \"<div class='bar' style='margin:0'><span style='width:\"+pct+\"%'><\/span><\/div>\";\n\n  box.appendChild(row);\n });\n}\n\nfunction mzaBacFocus(subject){\n document.getElementById(\"trainingSubject\").value=subject;\n document.getElementById(\"training\").scrollIntoView({behavior:\"smooth\"});\n mzaNewMission();\n}\n\nfunction mzaGeneratePlan(){\n let hours=parseFloat(document.getElementById(\"weeklyHours\").value);\n\n if(!hours||hours<=0){\n  hours=12;\n  document.getElementById(\"weeklyHours\").value=12;\n  mzaBacSaveProfile();\n }\n\n const entries=Object.keys(bacSubjects).map(key=>{\n  const score=bacState.scores[key];\n  const weakness=score===null ? 10 : Math.max(1,21-score);\n  return {key:key,name:bacSubjects[key],score:score,weight:weakness};\n });\n\n const totalWeight=entries.reduce((a,b)=>a+b.weight,0);\n const box=document.getElementById(\"plannerResult\");\n box.innerHTML=\"\";\n\n entries.forEach(item=>{\n  const allocation=Math.max(.5,hours*item.weight\/totalWeight);\n\n  const card=document.createElement(\"div\");\n  card.className=\"plan\";\n\n  card.innerHTML=\n   \"<b>\"+item.name+\"<\/b>\"+\n   \"<p><strong style='font-size:25px;color:#06172c'>\"+\n   allocation.toFixed(1)+\" h<\/strong> \/ semaine<\/p>\"+\n   \"<p>Derni\u00e8re note : \"+\n   (item.score===null?\"non renseign\u00e9e\":item.score+\"\/20\")+\"<\/p>\";\n\n  box.appendChild(card);\n });\n}\n\nfunction mzaAddSession(){\n const subject=document.getElementById(\"sessionSubject\").value;\n const date=document.getElementById(\"sessionDate\").value;\n const type=document.getElementById(\"sessionType\").value;\n\n if(!date){\n  alert(\"Choisissez une date.\");\n  return;\n }\n\n bacState.sessions.push({\n  id:Date.now(),\n  subject:subject,\n  date:date,\n  type:type\n });\n\n mzaSave();\n mzaRenderSessions();\n}\n\nfunction mzaDeleteSession(id){\n bacState.sessions=bacState.sessions.filter(s=>s.id!==id);\n mzaSave();\n mzaRenderSessions();\n}\n\nfunction mzaRenderSessions(){\n const box=document.getElementById(\"sessionList\");\n box.innerHTML=\"\";\n\n if(!bacState.sessions.length){\n  box.innerHTML=\"<div style='color:#68798b'>Aucune simulation planifi\u00e9e.<\/div>\";\n  return;\n }\n\n [...bacState.sessions]\n .sort((a,b)=>a.date.localeCompare(b.date))\n .forEach(s=>{\n  const el=document.createElement(\"div\");\n  el.className=\"session\";\n\n  el.innerHTML=\n   \"<div><b>\"+s.subject+\"<\/b>\"+\n   \"<small>\"+s.type+\" \u2022 \"+s.date+\"<\/small><\/div>\"+\n   \"<button class='btn danger' onclick='mzaDeleteSession(\"+s.id+\")'>SUPPRIMER<\/button>\";\n\n  box.appendChild(el);\n });\n}\n\nlet trainingSeconds=600;\nlet trainingInterval=null;\n\nfunction mzaRenderTrainingTimer(){\n const h=Math.floor(trainingSeconds\/3600);\n const m=Math.floor((trainingSeconds%3600)\/60);\n const s=trainingSeconds%60;\n\n document.getElementById(\"trainingTimer\").textContent=\n  h>0\n  ? String(h).padStart(2,\"0\")+\":\"+String(m).padStart(2,\"0\")+\":\"+String(s).padStart(2,\"0\")\n  : String(m).padStart(2,\"0\")+\":\"+String(s).padStart(2,\"0\");\n}\n\nfunction mzaSetTrainingDuration(){\n mzaPauseTraining();\n trainingSeconds=parseInt(document.getElementById(\"trainingDuration\").value,10);\n mzaRenderTrainingTimer();\n}\n\nfunction mzaStartTraining(){\n if(trainingInterval)return;\n\n trainingInterval=setInterval(function(){\n  if(trainingSeconds>0){\n   trainingSeconds--;\n   mzaRenderTrainingTimer();\n  }else{\n   clearInterval(trainingInterval);\n   trainingInterval=null;\n\n   document.getElementById(\"trainingTimer\").textContent=\"TERMIN\u00c9\";\n\n   bacState.trainingSessions++;\n   mzaSave();\n   mzaRenderKpis();\n  }\n },1000);\n}\n\nfunction mzaPauseTraining(){\n clearInterval(trainingInterval);\n trainingInterval=null;\n}\n\nfunction mzaResetTraining(){\n mzaPauseTraining();\n trainingSeconds=parseInt(document.getElementById(\"trainingDuration\").value,10);\n mzaRenderTrainingTimer();\n}\n\nconst missions={\n \"Math\u00e9matiques\":[\n  \"R\u00e9soudre 3 exercices de d\u00e9rivation sans consulter le cours.\",\n  \"Faire un probl\u00e8me de suites puis contr\u00f4ler chaque \u00e9tape.\",\n  \"Travailler 20 minutes uniquement sur les probabilit\u00e9s.\",\n  \"Refaire un exercice d\u00e9j\u00e0 rat\u00e9 et identifier l'erreur initiale.\"\n ],\n \"Physique-Chimie\":[\n  \"R\u00e9soudre un exercice en \u00e9crivant d'abord les lois avant les nombres.\",\n  \"Faire 5 contr\u00f4les d'unit\u00e9s sur des formules du cours.\",\n  \"Travailler un exercice de m\u00e9canique avec sch\u00e9ma et bilan des forces.\",\n  \"R\u00e9soudre un exercice de chimie puis interpr\u00e9ter chaque r\u00e9sultat.\"\n ],\n \"SVT\":[\n  \"Analyser un document sans utiliser le cours pendant 10 minutes.\",\n  \"R\u00e9diger une conclusion scientifique en cinq lignes maximum.\",\n  \"Transformer un graphique en trois observations puis une interpr\u00e9tation.\",\n  \"R\u00e9viser un m\u00e9canisme biologique en r\u00e9alisant un sch\u00e9ma.\"\n ],\n \"Fran\u00e7ais\":[\n  \"Lire un texte et \u00e9crire son id\u00e9e principale en une phrase.\",\n  \"Construire un plan argumentatif en moins de 10 minutes.\",\n  \"R\u00e9diger une introduction et une conclusion sur un sujet.\",\n  \"Corriger un ancien texte en supprimant r\u00e9p\u00e9titions et phrases trop longues.\"\n ],\n \"Arabe\":[\n  \"\u0627\u0642\u0631\u0623 \u0646\u0635\u0627 \u0648\u062d\u062f\u062f \u0641\u0643\u0631\u062a\u0647 \u0627\u0644\u0639\u0627\u0645\u0629 \u0648\u0627\u0644\u0623\u0641\u0643\u0627\u0631 \u0627\u0644\u0623\u0633\u0627\u0633\u064a\u0629.\",\n  \"\u0627\u0643\u062a\u0628 \u0641\u0642\u0631\u0629 \u062d\u062c\u0627\u062c\u064a\u0629 \u062a\u062a\u0636\u0645\u0646 \u062d\u062c\u062a\u064a\u0646 \u0648\u0645\u062b\u0627\u0644\u064a\u0646.\",\n  \"\u0631\u0627\u062c\u0639 \u0645\u0648\u0636\u0648\u0639\u0627 \u0633\u0627\u0628\u0642\u0627 \u0648\u0635\u062d\u062d \u0627\u0644\u0623\u062e\u0637\u0627\u0621 \u0627\u0644\u0644\u063a\u0648\u064a\u0629.\",\n  \"\u0627\u0643\u062a\u0628 \u0645\u0642\u062f\u0645\u0629 \u0648\u062e\u0627\u062a\u0645\u0629 \u0644\u0645\u0648\u0636\u0648\u0639 \u0625\u0646\u0634\u0627\u0626\u064a.\"\n ],\n \"Anglais\":[\n  \"Read a short text and summarize it in five sentences.\",\n  \"Write 10 sentences using different linking words.\",\n  \"Review one grammar point and create five examples.\",\n  \"Write a short opinion paragraph and proofread it.\"\n ]\n};\n\nfunction mzaNewMission(){\n const subject=document.getElementById(\"trainingSubject\").value;\n const arr=missions[subject]||[];\n const mission=arr[Math.floor(Math.random()*arr.length)];\n\n document.getElementById(\"dailyMission\").innerHTML=\n  \"<b style='color:#06172c'>\"+subject+\"<\/b><br>\"+mission;\n}\n\nfunction mzaAddError(){\n const subject=document.getElementById(\"errorSubject\").value;\n const text=document.getElementById(\"errorText\").value.trim();\n\n if(!text)return;\n\n bacState.errors.unshift({\n  id:Date.now(),\n  subject:subject,\n  text:text\n });\n\n document.getElementById(\"errorText\").value=\"\";\n mzaSave();\n mzaRenderErrors();\n}\n\nfunction mzaDeleteError(id){\n bacState.errors=bacState.errors.filter(e=>e.id!==id);\n mzaSave();\n mzaRenderErrors();\n}\n\nfunction mzaRenderErrors(){\n const box=document.getElementById(\"errorList\");\n box.innerHTML=\"\";\n\n if(!bacState.errors.length){\n  box.innerHTML=\"<div style='color:#68798b'>Aucune erreur enregistr\u00e9e.<\/div>\";\n  return;\n }\n\n bacState.errors.slice(0,20).forEach(e=>{\n  const el=document.createElement(\"div\");\n  el.className=\"error\";\n\n  el.innerHTML=\n   \"<b>\"+e.subject+\"<\/b>\"+\n   \"<small>\"+mzaEscape(e.text)+\"<\/small>\"+\n   \"<button class='btn lightbtn' style='margin-top:8px' onclick='mzaDeleteError(\"+e.id+\")'>EFFACER<\/button>\";\n\n  box.appendChild(el);\n });\n}\n\nfunction mzaAddObjective(){\n const input=document.getElementById(\"objectiveInput\");\n const text=input.value.trim();\n\n if(!text)return;\n\n bacState.objectives.push({\n  id:Date.now(),\n  text:text,\n  done:false\n });\n\n input.value=\"\";\n mzaSave();\n mzaRenderObjectives();\n mzaRenderKpis();\n}\n\nfunction mzaToggleObjective(id){\n const obj=bacState.objectives.find(o=>o.id===id);\n if(obj)obj.done=!obj.done;\n\n mzaSave();\n mzaRenderObjectives();\n mzaRenderKpis();\n}\n\nfunction mzaDeleteObjective(id){\n bacState.objectives=bacState.objectives.filter(o=>o.id!==id);\n mzaSave();\n mzaRenderObjectives();\n mzaRenderKpis();\n}\n\nfunction mzaRenderObjectives(){\n const box=document.getElementById(\"objectiveList\");\n box.innerHTML=\"\";\n\n if(!bacState.objectives.length){\n  box.innerHTML=\"<div style='color:#68798b'>Ajoutez votre premier objectif.<\/div>\";\n  return;\n }\n\n bacState.objectives.forEach(o=>{\n  const el=document.createElement(\"div\");\n  el.className=\"objective\"+(o.done?\" done\":\"\");\n\n  el.innerHTML=\n   \"<input type='checkbox' \"+(o.done?\"checked\":\"\")+\n   \" onchange='mzaToggleObjective(\"+o.id+\")'>\"+\n   \"<span>\"+mzaEscape(o.text)+\"<\/span>\"+\n   \"<button class='btn lightbtn' onclick='mzaDeleteObjective(\"+o.id+\")'>\u00d7<\/button>\";\n\n  box.appendChild(el);\n });\n}\n\nfunction mzaLaunchExam(type){\n bacState.trainingSessions++;\n mzaSave();\n mzaRenderKpis();\n\n document.getElementById(\"examMessage\").textContent=\n  type+\" \u2014 mode entra\u00eenement MZA activ\u00e9. Choisissez maintenant une mati\u00e8re dans le Training Center.\";\n\n document.getElementById(\"training\").scrollIntoView({behavior:\"smooth\"});\n}\n\nfunction mzaEscape(str){\n return String(str)\n  .replace(\/&\/g,\"&amp;\")\n  .replace(\/<\/g,\"&lt;\")\n  .replace(\/>\/g,\"&gt;\")\n  .replace(\/\"\/g,\"&quot;\")\n  .replace(\/'\/g,\"&#039;\");\n}\n\nfunction mzaConfirmReset(){\n if(confirm(\"Effacer toutes les donn\u00e9es locales de ce cockpit Bac Blanc ?\")){\n  localStorage.removeItem(BAC_KEY);\n  location.reload();\n }\n}\n\nfunction mzaRenderAll(){\n mzaRenderProfile();\n mzaRenderSubjects();\n mzaRenderKpis();\n mzaRenderProgress();\n mzaRenderSessions();\n mzaRenderObjectives();\n mzaRenderErrors();\n}\n\ndocument.getElementById(\"objectiveInput\").addEventListener(\"keydown\",function(e){\n if(e.key===\"Enter\")mzaAddObjective();\n});\n\ndocument.getElementById(\"errorText\").addEventListener(\"keydown\",function(e){\n if(e.key===\"Enter\")mzaAddError();\n});\n\ndocument.getElementById(\"scoreInput\").addEventListener(\"keydown\",function(e){\n if(e.key===\"Enter\")mzaSaveScore();\n});\n\nmzaLoad();\nmzaRenderAll();\nmzaRenderTrainingTimer();\n\n<\/script>\n\n<\/div>\n&#8220;`\n","protected":false},"excerpt":{"rendered":"<p>MAROC ZAIN ACADEMY \u2022 MZA EXAM CENTER BAC BLANCCOCKPIT Le centre de commandement de la pr\u00e9paration au baccalaur\u00e9at : notes, progression, mati\u00e8res prioritaires, simulations, calendrier, missions quotidiennes, objectifs et analyse des erreurs. \ud83d\udcda MES MATI\u00c8RES \ud83d\udcc5 PLANNING \u23f1 TRAINING \ud83c\udfc6 EXAM CENTER \u00c9L\u00c8VE FILI\u00c8RE ChoisirSciences Math\u00e9matiquesSciences PhysiquesSVTSciences \u00c9conomiquesLettresAutre OBJECTIF \/20 HEURES \/ SEMAINE Moyenne g\u00e9n\u00e9rale [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1674","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/maroczain.com\/scolaire.maroczain.com\/wp-json\/wp\/v2\/pages\/1674","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/maroczain.com\/scolaire.maroczain.com\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/maroczain.com\/scolaire.maroczain.com\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/maroczain.com\/scolaire.maroczain.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/maroczain.com\/scolaire.maroczain.com\/wp-json\/wp\/v2\/comments?post=1674"}],"version-history":[{"count":2,"href":"https:\/\/maroczain.com\/scolaire.maroczain.com\/wp-json\/wp\/v2\/pages\/1674\/revisions"}],"predecessor-version":[{"id":1677,"href":"https:\/\/maroczain.com\/scolaire.maroczain.com\/wp-json\/wp\/v2\/pages\/1674\/revisions\/1677"}],"wp:attachment":[{"href":"https:\/\/maroczain.com\/scolaire.maroczain.com\/wp-json\/wp\/v2\/media?parent=1674"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}