{"id":2989,"date":"2026-08-21T16:22:52","date_gmt":"2026-08-21T16:22:52","guid":{"rendered":"https:\/\/maroczain.com\/?page_id=2989"},"modified":"2026-08-21T17:35:20","modified_gmt":"2026-08-21T17:35:20","slug":"certification-professionnelle-examen","status":"publish","type":"page","link":"https:\/\/maroczain.com\/en\/certification-professionnelle-examen\/","title":{"rendered":"Certification professionnelle examen"},"content":{"rendered":"\n<!-- ==========================================================\n MAROC ZAIN ACADEMY\n EXAMEN PROFESSIONNEL \u2014 MOUVEMENTS DE VOLS\n \u00c0 placer apr\u00e8s le simulateur OCC\n========================================================== -->\n\n<section id=\"mza-examen\" class=\"exam-section\">\n\n<div class=\"container\">\n\n  <div class=\"section-title\">\n    <div class=\"label\">15 \u2022 Certification professionnelle<\/div>\n    <h2>Examen \u2014 Mouvements de vols<\/h2>\n    <p>\n      Prenez les commandes de l&rsquo;escale. Vous devrez traiter\n      20 situations op\u00e9rationnelles et choisir la d\u00e9cision\n      la plus appropri\u00e9e.\n    <\/p>\n  <\/div>\n\n  <!-- INTRO EXAMEN -->\n\n  <div id=\"examIntro\" class=\"exam-intro\">\n\n    <div class=\"exam-hero\">\n\n      <div>\n        <span class=\"exam-tag\">\n          MAROC ZAIN ACADEMY\n        <\/span>\n\n        <h3>Flight Operations Challenge<\/h3>\n\n        <p>\n          \u00c9valuation professionnelle de la capacit\u00e9 \u00e0 surveiller,\n          anticiper et g\u00e9rer les mouvements de vols.\n        <\/p>\n      <\/div>\n\n      <div class=\"exam-plane\">\u2708<\/div>\n\n    <\/div>\n\n    <div class=\"exam-rules\">\n\n      <div class=\"rule\">\n        <strong>20<\/strong>\n        <span>situations<\/span>\n      <\/div>\n\n      <div class=\"rule\">\n        <strong>15:00<\/strong>\n        <span>minutes<\/span>\n      <\/div>\n\n      <div class=\"rule\">\n        <strong>100<\/strong>\n        <span>points<\/span>\n      <\/div>\n\n      <div class=\"rule\">\n        <strong>80%<\/strong>\n        <span>objectif expert<\/span>\n      <\/div>\n\n    <\/div>\n\n    <div class=\"candidate-form\">\n\n      <input\n        id=\"candidateName\"\n        type=\"text\"\n        placeholder=\"Nom et pr\u00e9nom du candidat\"\n      >\n\n      <select id=\"candidateRole\">\n        <option value=\"Agent d'escale\">\n          Agent d&rsquo;escale\n        <\/option>\n\n        <option value=\"Superviseur\">\n          Superviseur\n        <\/option>\n\n        <option value=\"Chef d'escale\">\n          Chef d&rsquo;escale\n        <\/option>\n\n        <option value=\"Repr\u00e9sentant\">\n          Repr\u00e9sentant\n        <\/option>\n      <\/select>\n\n      <button\n        class=\"btn btn-gold\"\n        onclick=\"startProfessionalExam()\"\n      >\n        D\u00e9marrer l&rsquo;examen\n      <\/button>\n\n    <\/div>\n\n  <\/div>\n\n\n  <!-- EXAMEN -->\n\n  <div id=\"examInterface\" class=\"exam-interface hidden\">\n\n    <!-- TOP -->\n\n    <div class=\"exam-top\">\n\n      <div>\n        <span class=\"exam-small\">\n          CANDIDAT\n        <\/span>\n\n        <strong id=\"examCandidate\">\n          \u2014\n        <\/strong>\n      <\/div>\n\n      <div class=\"exam-progress-box\">\n\n        <span>\n          Situation\n          <strong id=\"questionNumber\">1<\/strong>\n          \/ 20\n        <\/span>\n\n        <div class=\"exam-progress\">\n          <span id=\"examProgressBar\"><\/span>\n        <\/div>\n\n      <\/div>\n\n      <div class=\"timer-box\">\n\n        <span>\u23f1 TEMPS<\/span>\n\n        <strong id=\"examTimer\">\n          15:00\n        <\/strong>\n\n      <\/div>\n\n    <\/div>\n\n\n    <!-- SCORE LIVE -->\n\n    <div class=\"exam-scoreboard\">\n\n      <div>\n        <span>\ud83d\udee1<\/span>\n        <small>S\u00e9curit\u00e9<\/small>\n        <strong id=\"liveSafety\">100<\/strong>\n      <\/div>\n\n      <div>\n        <span>\u23f1<\/span>\n        <small>Ponctualit\u00e9<\/small>\n        <strong id=\"livePunctuality\">100<\/strong>\n      <\/div>\n\n      <div>\n        <span>\ud83e\udd1d<\/span>\n        <small>Coordination<\/small>\n        <strong id=\"liveCoordination\">100<\/strong>\n      <\/div>\n\n      <div>\n        <span>\ud83d\ude42<\/span>\n        <small>Client<\/small>\n        <strong id=\"liveCustomer\">100<\/strong>\n      <\/div>\n\n    <\/div>\n\n\n    <!-- QUESTION -->\n\n    <div class=\"exam-question-card\">\n\n      <div class=\"scenario-top\">\n\n        <div>\n          <span id=\"scenarioCategory\"\n                class=\"scenario-category\">\n            OP\u00c9RATIONS\n          <\/span>\n\n          <h3 id=\"scenarioTitle\">\n            Situation\n          <\/h3>\n        <\/div>\n\n        <span id=\"scenarioPriority\"\n              class=\"priority-badge\">\n          PRIORIT\u00c9\n        <\/span>\n\n      <\/div>\n\n\n      <div class=\"flight-strip\">\n\n        <div>\n          <small>VOL<\/small>\n          <strong id=\"scenarioFlight\">MZA000<\/strong>\n        <\/div>\n\n        <div>\n          <small>ROUTE<\/small>\n          <strong id=\"scenarioRoute\">\u2014<\/strong>\n        <\/div>\n\n        <div>\n          <small>HORAIRE<\/small>\n          <strong id=\"scenarioTime\">\u2014<\/strong>\n        <\/div>\n\n      <\/div>\n\n\n      <div class=\"scenario-description\">\n\n        <span class=\"alert-symbol\">\n          \u26a0\n        <\/span>\n\n        <p id=\"scenarioDescription\">\n        <\/p>\n\n      <\/div>\n\n\n      <h4>\n        Quelle est votre d\u00e9cision ?\n      <\/h4>\n\n\n      <div id=\"scenarioAnswers\"\n           class=\"scenario-answers\">\n      <\/div>\n\n\n      <div id=\"examFeedback\"\n           class=\"exam-feedback\">\n      <\/div>\n\n\n      <div class=\"next-area\">\n\n        <button\n          id=\"nextQuestionBtn\"\n          class=\"btn btn-gold hidden\"\n          onclick=\"nextExamQuestion()\"\n        >\n          Situation suivante \u2192\n        <\/button>\n\n      <\/div>\n\n    <\/div>\n\n  <\/div>\n\n\n  <!-- RESULTATS -->\n\n  <div id=\"examResults\"\n       class=\"exam-results hidden\">\n\n    <div class=\"result-banner\">\n\n      <div>\n\n        <span class=\"exam-tag\">\n          R\u00c9SULTAT FINAL\n        <\/span>\n\n        <h2 id=\"resultLevel\">\n          \u2014\n        <\/h2>\n\n        <p id=\"resultMessage\">\n        <\/p>\n\n      <\/div>\n\n      <div class=\"result-circle\">\n\n        <strong id=\"finalExamScore\">\n          0\n        <\/strong>\n\n        <span>\/100<\/span>\n\n      <\/div>\n\n    <\/div>\n\n\n    <!-- COMPETENCES -->\n\n    <div class=\"result-grid\">\n\n      <div class=\"result-skill\">\n\n        <span>\ud83d\udee1\ufe0f<\/span>\n\n        <small>\n          S\u00e9curit\u00e9 &#038; s\u00fbret\u00e9\n        <\/small>\n\n        <strong id=\"resultSafety\">\n          0%\n        <\/strong>\n\n        <div class=\"result-bar\">\n          <span id=\"resultSafetyBar\"><\/span>\n        <\/div>\n\n      <\/div>\n\n\n      <div class=\"result-skill\">\n\n        <span>\u23f1\ufe0f<\/span>\n\n        <small>\n          Ponctualit\u00e9\n        <\/small>\n\n        <strong id=\"resultPunctuality\">\n          0%\n        <\/strong>\n\n        <div class=\"result-bar\">\n          <span id=\"resultPunctualityBar\"><\/span>\n        <\/div>\n\n      <\/div>\n\n\n      <div class=\"result-skill\">\n\n        <span>\ud83e\udd1d<\/span>\n\n        <small>\n          Coordination\n        <\/small>\n\n        <strong id=\"resultCoordination\">\n          0%\n        <\/strong>\n\n        <div class=\"result-bar\">\n          <span id=\"resultCoordinationBar\"><\/span>\n        <\/div>\n\n      <\/div>\n\n\n      <div class=\"result-skill\">\n\n        <span>\ud83d\ude42<\/span>\n\n        <small>\n          Exp\u00e9rience client\n        <\/small>\n\n        <strong id=\"resultCustomer\">\n          0%\n        <\/strong>\n\n        <div class=\"result-bar\">\n          <span id=\"resultCustomerBar\"><\/span>\n        <\/div>\n\n      <\/div>\n\n    <\/div>\n\n\n    <!-- NIVEAU -->\n\n    <div class=\"level-scale\">\n\n      <h3>\n        \u00c9chelle Maroc Zain Academy\n      <\/h3>\n\n      <div class=\"levels\">\n\n        <div>\n          <strong>0\u201349<\/strong>\n          <span>D\u00e9butant<\/span>\n        <\/div>\n\n        <div>\n          <strong>50\u201364<\/strong>\n          <span>Op\u00e9rationnel<\/span>\n        <\/div>\n\n        <div>\n          <strong>65\u201379<\/strong>\n          <span>Confirm\u00e9<\/span>\n        <\/div>\n\n        <div>\n          <strong>80\u201389<\/strong>\n          <span>Expert<\/span>\n        <\/div>\n\n        <div>\n          <strong>90\u2013100<\/strong>\n          <span>Chef d&rsquo;escale<\/span>\n        <\/div>\n\n      <\/div>\n\n    <\/div>\n\n\n    <!-- DEBRIEF -->\n\n    <div class=\"professional-debrief\">\n\n      <h3>\n        D\u00e9briefing p\u00e9dagogique\n      <\/h3>\n\n      <div id=\"examDebrief\"><\/div>\n\n    <\/div>\n\n\n    <div class=\"result-actions\">\n\n      <button\n        class=\"btn btn-gold\"\n        onclick=\"showCertificate()\"\n      >\n        \ud83c\udf93 Voir le certificat\n      <\/button>\n\n      <button\n        class=\"exam-secondary-btn\"\n        onclick=\"restartExam()\"\n      >\n        \u21bb Repasser l&rsquo;examen\n      <\/button>\n\n    <\/div>\n\n  <\/div>\n\n<\/div>\n\n<\/section>\n\n\n<!-- ==========================================================\n CERTIFICAT\n========================================================== -->\n\n<section\n  id=\"certificateSection\"\n  class=\"certificate-section hidden\"\n>\n\n<div class=\"certificate\">\n\n  <div class=\"certificate-border\">\n\n    <div class=\"certificate-logo\">\n      \u2708\n    <\/div>\n\n    <div class=\"certificate-brand\">\n      MAROC ZAIN ACADEMY\n    <\/div>\n\n    <div class=\"certificate-sub\">\n      EXCELLENCE \u2022 COMP\u00c9TENCE \u2022 TERRAIN\n    <\/div>\n\n\n    <h1>\n      CERTIFICAT DE R\u00c9USSITE\n    <\/h1>\n\n    <p>\n      Il est attest\u00e9 que\n    <\/p>\n\n    <h2 id=\"certificateName\">\n      \u2014\n    <\/h2>\n\n    <p>\n      a compl\u00e9t\u00e9 l&rsquo;\u00e9valuation professionnelle\n    <\/p>\n\n    <h3>\n      LES MOUVEMENTS DE VOLS\n    <\/h3>\n\n    <p>\n      avec un r\u00e9sultat de\n    <\/p>\n\n    <div class=\"certificate-score\">\n      <span id=\"certificateScore\">0<\/span>\/100\n    <\/div>\n\n    <div class=\"certificate-level\"\n         id=\"certificateLevel\">\n      \u2014\n    <\/div>\n\n\n    <div class=\"certificate-footer\">\n\n      <div>\n        <span>Date<\/span>\n        <strong id=\"certificateDate\"><\/strong>\n      <\/div>\n\n      <div>\n        <span>R\u00e9f\u00e9rence<\/span>\n        <strong id=\"certificateRef\"><\/strong>\n      <\/div>\n\n      <div>\n        <span>Maroc Zain Academy<\/span>\n        <strong>Direction p\u00e9dagogique<\/strong>\n      <\/div>\n\n    <\/div>\n\n  <\/div>\n\n<\/div>\n\n\n<div class=\"certificate-actions\">\n\n  <button\n    class=\"btn btn-gold\"\n    onclick=\"window.print()\"\n  >\n    \ud83d\udda8 Imprimer le certificat\n  <\/button>\n\n<\/div>\n\n<\/section>\n\n\n<style>\n\n\/* ======================================\n EXAM\n====================================== *\/\n\n.exam-section{\n  padding:100px 0;\n  background:#eef4fa;\n}\n\n.hidden{\n  display:none !important;\n}\n\n.exam-intro{\n  background:white;\n  border-radius:30px;\n  overflow:hidden;\n  box-shadow:0 25px 70px rgba(0,0,0,.10);\n}\n\n.exam-hero{\n  min-height:270px;\n  padding:45px;\n  background:\n    linear-gradient(120deg,#04111f,#0d426e);\n  color:white;\n  display:flex;\n  align-items:center;\n  justify-content:space-between;\n  gap:30px;\n}\n\n.exam-tag{\n  display:inline-block;\n  padding:7px 12px;\n  border-radius:999px;\n  background:rgba(233,200,74,.13);\n  border:1px solid rgba(233,200,74,.35);\n  color:#ffe88b;\n  font-size:11px;\n  font-weight:900;\n  letter-spacing:1.3px;\n}\n\n.exam-hero h3{\n  font-size:40px;\n  margin:15px 0 10px;\n}\n\n.exam-hero p{\n  color:#bdd0df;\n  max-width:620px;\n}\n\n.exam-plane{\n  font-size:120px;\n  color:rgba(255,255,255,.10);\n}\n\n.exam-rules{\n  display:grid;\n  grid-template-columns:repeat(4,1fr);\n  border-bottom:1px solid #e4ebf2;\n}\n\n.rule{\n  padding:25px;\n  text-align:center;\n  border-right:1px solid #e4ebf2;\n}\n\n.rule:last-child{\n  border-right:none;\n}\n\n.rule strong{\n  display:block;\n  color:#071b33;\n  font-size:31px;\n}\n\n.rule span{\n  color:#718096;\n  font-size:12px;\n}\n\n.candidate-form{\n  padding:30px;\n  display:grid;\n  grid-template-columns:1fr 1fr auto;\n  gap:15px;\n}\n\n.candidate-form input,\n.candidate-form select{\n  border:1px solid #d5e0ea;\n  border-radius:13px;\n  padding:14px;\n  font-size:14px;\n}\n\n\n\/* INTERFACE *\/\n\n.exam-interface{\n  display:grid;\n  gap:20px;\n}\n\n.exam-top{\n  background:#071b33;\n  color:white;\n  padding:20px 24px;\n  border-radius:20px;\n  display:grid;\n  grid-template-columns:1fr 2fr 1fr;\n  gap:20px;\n  align-items:center;\n}\n\n.exam-small{\n  display:block;\n  color:#8ea8bd;\n  font-size:10px;\n}\n\n.exam-progress-box{\n  text-align:center;\n}\n\n.exam-progress{\n  height:8px;\n  background:rgba(255,255,255,.10);\n  border-radius:999px;\n  overflow:hidden;\n  margin-top:8px;\n}\n\n.exam-progress span{\n  display:block;\n  height:100%;\n  width:5%;\n  background:#e9c84a;\n  transition:.4s;\n}\n\n.timer-box{\n  text-align:right;\n}\n\n.timer-box span{\n  display:block;\n  font-size:10px;\n  color:#8fa8bc;\n}\n\n.timer-box strong{\n  font-size:27px;\n  color:#e9c84a;\n}\n\n\n.exam-scoreboard{\n  display:grid;\n  grid-template-columns:repeat(4,1fr);\n  gap:12px;\n}\n\n.exam-scoreboard > div{\n  background:white;\n  padding:17px;\n  border-radius:16px;\n  display:grid;\n  grid-template-columns:auto 1fr;\n  gap:3px 12px;\n  align-items:center;\n  border:1px solid #dde7f0;\n}\n\n.exam-scoreboard > div > span{\n  font-size:25px;\n  grid-row:1\/3;\n}\n\n.exam-scoreboard small{\n  color:#718096;\n}\n\n.exam-scoreboard strong{\n  color:#071b33;\n  font-size:22px;\n}\n\n\n.exam-question-card{\n  background:white;\n  padding:32px;\n  border-radius:25px;\n  box-shadow:0 15px 40px rgba(0,0,0,.07);\n}\n\n.scenario-top{\n  display:flex;\n  justify-content:space-between;\n  gap:20px;\n  flex-wrap:wrap;\n}\n\n.scenario-category{\n  color:#0d6efd;\n  font-size:11px;\n  font-weight:900;\n  letter-spacing:1px;\n}\n\n.scenario-top h3{\n  color:#071b33;\n  font-size:29px;\n}\n\n.priority-badge{\n  background:#fff1dd;\n  color:#a55d00;\n  padding:7px 11px;\n  border-radius:999px;\n  font-size:10px;\n  font-weight:900;\n}\n\n\n.flight-strip{\n  margin:22px 0;\n  display:grid;\n  grid-template-columns:1fr 2fr 1fr;\n  background:#071b33;\n  color:white;\n  border-radius:16px;\n  overflow:hidden;\n}\n\n.flight-strip > div{\n  padding:16px;\n  border-right:1px solid rgba(255,255,255,.08);\n}\n\n.flight-strip small{\n  display:block;\n  color:#8fa9be;\n  font-size:9px;\n}\n\n.flight-strip strong{\n  display:block;\n  margin-top:3px;\n}\n\n\n.scenario-description{\n  display:flex;\n  gap:15px;\n  background:#fff8e8;\n  border-left:5px solid #f59e0b;\n  padding:20px;\n  border-radius:14px;\n  margin-bottom:25px;\n}\n\n.alert-symbol{\n  font-size:25px;\n}\n\n\n.scenario-answers{\n  display:grid;\n  gap:11px;\n  margin-top:15px;\n}\n\n.exam-answer{\n  text-align:left;\n  padding:16px;\n  background:white;\n  border:1px solid #dbe5ee;\n  border-radius:13px;\n  cursor:pointer;\n  transition:.2s;\n}\n\n.exam-answer:hover{\n  border-color:#0d6efd;\n  background:#f3f8ff;\n}\n\n.exam-answer.good{\n  background:#eafaf1;\n  border-color:#5ed29a;\n}\n\n.exam-answer.bad{\n  background:#fff0f0;\n  border-color:#f09b9b;\n}\n\n.exam-feedback{\n  margin-top:18px;\n}\n\n.feedback-good,\n.feedback-bad{\n  padding:17px;\n  border-radius:13px;\n  font-weight:700;\n}\n\n.feedback-good{\n  background:#eafaf1;\n  color:#087043;\n}\n\n.feedback-bad{\n  background:#fff0f0;\n  color:#a52222;\n}\n\n.next-area{\n  text-align:right;\n  margin-top:20px;\n}\n\n\n\/* RESULTS *\/\n\n.exam-results{\n  display:grid;\n  gap:25px;\n}\n\n.result-banner{\n  background:\n    linear-gradient(120deg,#04111f,#0c3f69);\n  color:white;\n  padding:40px;\n  border-radius:28px;\n  display:flex;\n  align-items:center;\n  justify-content:space-between;\n  gap:30px;\n}\n\n.result-banner h2{\n  font-size:43px;\n  color:#e9c84a;\n  margin:12px 0;\n}\n\n.result-banner p{\n  max-width:650px;\n  color:#c0d0de;\n}\n\n.result-circle{\n  min-width:165px;\n  width:165px;\n  height:165px;\n  border-radius:50%;\n  display:grid;\n  place-items:center;\n  align-content:center;\n  border:8px solid #e9c84a;\n}\n\n.result-circle strong{\n  font-size:54px;\n  line-height:1;\n}\n\n.result-grid{\n  display:grid;\n  grid-template-columns:repeat(4,1fr);\n  gap:15px;\n}\n\n.result-skill{\n  background:white;\n  padding:22px;\n  border-radius:18px;\n  border:1px solid #dfe8ef;\n}\n\n.result-skill > span{\n  font-size:26px;\n}\n\n.result-skill small{\n  display:block;\n  color:#718096;\n  margin-top:8px;\n}\n\n.result-skill strong{\n  display:block;\n  color:#071b33;\n  font-size:25px;\n}\n\n.result-bar{\n  height:7px;\n  background:#e7edf3;\n  border-radius:999px;\n  overflow:hidden;\n  margin-top:9px;\n}\n\n.result-bar span{\n  display:block;\n  height:100%;\n  background:#0d6efd;\n}\n\n.level-scale,\n.professional-debrief{\n  background:white;\n  padding:27px;\n  border-radius:20px;\n  border:1px solid #dde6ee;\n}\n\n.level-scale h3,\n.professional-debrief h3{\n  color:#071b33;\n  margin-bottom:18px;\n}\n\n.levels{\n  display:grid;\n  grid-template-columns:repeat(5,1fr);\n  gap:10px;\n}\n\n.levels > div{\n  padding:16px;\n  background:#f5f8fb;\n  border-radius:12px;\n  text-align:center;\n}\n\n.levels strong{\n  display:block;\n  color:#071b33;\n}\n\n.levels span{\n  color:#718096;\n  font-size:12px;\n}\n\n.result-actions{\n  display:flex;\n  gap:12px;\n  flex-wrap:wrap;\n}\n\n.exam-secondary-btn{\n  border:1px solid #cad7e2;\n  background:white;\n  padding:13px 18px;\n  border-radius:12px;\n  cursor:pointer;\n  font-weight:800;\n}\n\n\n\/* CERTIFICATE *\/\n\n.certificate-section{\n  padding:90px 20px;\n  background:#e9eef3;\n}\n\n.certificate{\n  max-width:1050px;\n  margin:auto;\n  background:white;\n  padding:18px;\n  box-shadow:0 25px 70px rgba(0,0,0,.15);\n}\n\n.certificate-border{\n  border:4px double #c5a52e;\n  min-height:690px;\n  padding:55px;\n  text-align:center;\n  position:relative;\n}\n\n.certificate-logo{\n  width:70px;\n  height:70px;\n  border-radius:50%;\n  background:#071b33;\n  color:#e9c84a;\n  display:grid;\n  place-items:center;\n  margin:0 auto 10px;\n  font-size:30px;\n}\n\n.certificate-brand{\n  font-weight:900;\n  color:#071b33;\n  font-size:22px;\n  letter-spacing:2px;\n}\n\n.certificate-sub{\n  color:#a28b33;\n  font-size:10px;\n  letter-spacing:2px;\n}\n\n.certificate h1{\n  margin-top:50px;\n  color:#071b33;\n  font-size:42px;\n}\n\n.certificate h2{\n  color:#b29327;\n  font-size:38px;\n  margin:20px 0;\n}\n\n.certificate h3{\n  color:#071b33;\n  margin:15px 0;\n}\n\n.certificate-score{\n  font-size:42px;\n  font-weight:900;\n  color:#071b33;\n}\n\n.certificate-level{\n  display:inline-block;\n  margin-top:10px;\n  background:#071b33;\n  color:#e9c84a;\n  padding:9px 20px;\n  border-radius:999px;\n  font-weight:900;\n}\n\n.certificate-footer{\n  margin-top:60px;\n  display:grid;\n  grid-template-columns:repeat(3,1fr);\n  gap:30px;\n}\n\n.certificate-footer span{\n  display:block;\n  color:#7b8792;\n  font-size:11px;\n}\n\n.certificate-footer strong{\n  display:block;\n  color:#071b33;\n  margin-top:7px;\n}\n\n.certificate-actions{\n  text-align:center;\n  margin-top:25px;\n}\n\n\n\/* RESPONSIVE *\/\n\n@media(max-width:850px){\n\n  .exam-rules,\n  .exam-scoreboard,\n  .result-grid{\n    grid-template-columns:repeat(2,1fr);\n  }\n\n  .candidate-form,\n  .exam-top{\n    grid-template-columns:1fr;\n  }\n\n  .timer-box{\n    text-align:left;\n  }\n\n  .levels{\n    grid-template-columns:1fr 1fr;\n  }\n\n}\n\n@media(max-width:600px){\n\n  .exam-rules,\n  .exam-scoreboard,\n  .result-grid,\n  .levels,\n  .flight-strip,\n  .certificate-footer{\n    grid-template-columns:1fr;\n  }\n\n  .result-banner{\n    flex-direction:column;\n    align-items:flex-start;\n  }\n\n  .certificate-border{\n    padding:25px;\n  }\n\n}\n\n@media print{\n\n  body *{\n    visibility:hidden;\n  }\n\n  #certificateSection,\n  #certificateSection *{\n    visibility:visible;\n  }\n\n  #certificateSection{\n    position:absolute;\n    left:0;\n    top:0;\n    width:100%;\n    padding:0;\n    background:white;\n  }\n\n  .certificate-actions{\n    display:none;\n  }\n\n}\n\n<\/style>\n\n\n<script>\n\n\/* =========================================\n BANQUE DE SCENARIOS\n========================================= *\/\n\nconst professionalScenarios = [\n\n{\n category:\"BAGAGES\",\n title:\"Chargement incomplet\",\n priority:\"\u00c9LEV\u00c9E\",\n flight:\"MZA482\",\n route:\"Casablanca \u2192 Paris\",\n time:\"STD 20:10\",\n description:\n \"\u00c0 18 minutes du d\u00e9part, 37 bagages ne sont pas encore charg\u00e9s.\",\n answers:[\n   \"Fermer imm\u00e9diatement le vol.\",\n   \"Identifier la cause, coordonner l'\u00e9quipe bagages et mesurer l'impact sur le d\u00e9part.\",\n   \"Attendre sans intervenir.\"\n ],\n correct:1,\n skill:\"coordination\",\n explanation:\n \"Le chef d'escale doit identifier le blocage, coordonner l'action et prot\u00e9ger la rotation.\"\n},\n\n{\n category:\"PARKING\",\n title:\"Stand indisponible\",\n priority:\"CRITIQUE\",\n flight:\"MZA216\",\n route:\"Marrakech \u2192 Casablanca\",\n time:\"ETA 20:25\",\n description:\n \"Le parking pr\u00e9vu devient indisponible alors que l'avion est en approche.\",\n answers:[\n   \"Attendre l'arriv\u00e9e.\",\n   \"Coordonner imm\u00e9diatement une nouvelle position et informer les acteurs concern\u00e9s.\",\n   \"Demander \u00e0 l'\u00e9quipage de trouver seul une solution.\"\n ],\n correct:1,\n skill:\"coordination\",\n explanation:\n \"Le changement doit \u00eatre anticip\u00e9 avant l'arriv\u00e9e afin que les ressources soient repositionn\u00e9es.\"\n},\n\n{\n category:\"M\u00c9DICAL\",\n title:\"Malaise en porte\",\n priority:\"CRITIQUE\",\n flight:\"MZA701\",\n route:\"Casablanca \u2192 Jeddah\",\n time:\"STD 22:15\",\n description:\n \"Un passager pr\u00e9sente un malaise important au moment de l'embarquement.\",\n answers:[\n   \"L'embarquer rapidement.\",\n   \"Suspendre sa prise en charge et demander uniquement \u00e0 sa famille.\",\n   \"D\u00e9clencher l'assistance m\u00e9dicale conform\u00e9ment aux proc\u00e9dures.\"\n ],\n correct:2,\n skill:\"safety\",\n explanation:\n \"La s\u00e9curit\u00e9 de la personne pr\u00e9vaut sur la ponctualit\u00e9.\"\n},\n\n{\n category:\"CORRESPONDANCES\",\n title:\"Connexion critique\",\n priority:\"\u00c9LEV\u00c9E\",\n flight:\"MZA315\",\n route:\"Bruxelles \u2192 Casablanca\",\n time:\"ETA 18:55\",\n description:\n \"14 passagers disposent de moins de 35 minutes pour rejoindre leur correspondance.\",\n answers:[\n   \"Identifier les passagers et coordonner leur prise en charge.\",\n   \"Attendre leur arriv\u00e9e en zone de transit.\",\n   \"D\u00e9clarer imm\u00e9diatement les correspondances perdues.\"\n ],\n correct:0,\n skill:\"customer\",\n explanation:\n \"Une correspondance courte doit \u00eatre anticip\u00e9e avant l'arriv\u00e9e.\"\n},\n\n{\n category:\"CATERING\",\n title:\"Prestataire en retard\",\n priority:\"MOYENNE\",\n flight:\"MZA624\",\n route:\"Casablanca \u2192 Tunis\",\n time:\"STD 20:15\",\n description:\n \"Le catering annonce 20 minutes de retard.\",\n answers:[\n   \"Arr\u00eater toutes les autres op\u00e9rations.\",\n   \"Poursuivre les op\u00e9rations parall\u00e8les et coordonner le prestataire.\",\n   \"Ignorer l'information.\"\n ],\n correct:1,\n skill:\"punctuality\",\n explanation:\n \"La parall\u00e9lisation des t\u00e2ches contribue \u00e0 prot\u00e9ger la ponctualit\u00e9.\"\n},\n\n{\n category:\"PORTE\",\n title:\"Changement de porte\",\n priority:\"\u00c9LEV\u00c9E\",\n flight:\"MZA915\",\n route:\"Casablanca \u2192 Istanbul\",\n time:\"STD 22:30\",\n description:\n \"La porte B07 devient indisponible 25 minutes avant l'embarquement.\",\n answers:[\n   \"Changer de porte sans informer les passagers.\",\n   \"Maintenir B07.\",\n   \"Coordonner la nouvelle porte et mettre \u00e0 jour les informations op\u00e9rationnelles et passagers.\"\n ],\n correct:2,\n skill:\"customer\",\n explanation:\n \"Un changement de porte exige une information coordonn\u00e9e.\"\n},\n\n{\n category:\"RETARD\",\n title:\"Arriv\u00e9e tardive\",\n priority:\"\u00c9LEV\u00c9E\",\n flight:\"MZA840\",\n route:\"Rome \u2192 Casablanca\",\n time:\"ETA +40\",\n description:\n \"L'avion arrive avec 40 minutes de retard et doit repartir 55 minutes plus tard.\",\n answers:[\n   \"Analyser le chemin critique du turnaround et pr\u00e9parer les ressources.\",\n   \"Accepter automatiquement 40 minutes de retard au d\u00e9part.\",\n   \"Supprimer des op\u00e9rations sans coordination.\"\n ],\n correct:0,\n skill:\"punctuality\",\n explanation:\n \"Le retard d'arriv\u00e9e doit d\u00e9clencher une analyse du turnaround.\"\n},\n\n{\n category:\"S\u00dbRET\u00c9\",\n title:\"Bagage sans passager\",\n priority:\"CRITIQUE\",\n flight:\"MZA730\",\n route:\"Casablanca \u2192 Paris\",\n time:\"D-12\",\n description:\n \"Une anomalie est signal\u00e9e concernant la concordance passager\/bagage.\",\n answers:[\n   \"Ignorer l'anomalie pour pr\u00e9server l'heure de d\u00e9part.\",\n   \"Appliquer imm\u00e9diatement les proc\u00e9dures de s\u00fbret\u00e9 applicables.\",\n   \"Demander au passager voisin.\"\n ],\n correct:1,\n skill:\"safety\",\n explanation:\n \"Une question de s\u00fbret\u00e9 ne peut jamais \u00eatre sacrifi\u00e9e \u00e0 la ponctualit\u00e9.\"\n},\n\n{\n category:\"FUEL\",\n title:\"Avitaillement retard\u00e9\",\n priority:\"\u00c9LEV\u00c9E\",\n flight:\"MZA512\",\n route:\"Casablanca \u2192 Madrid\",\n time:\"D-30\",\n description:\n \"L'avitaillement n'a pas commenc\u00e9 \u00e0 l'heure pr\u00e9vue.\",\n answers:[\n   \"V\u00e9rifier imm\u00e9diatement la cause et coordonner les acteurs comp\u00e9tents.\",\n   \"Attendre D-5.\",\n   \"D\u00e9cider soi-m\u00eame de la quantit\u00e9 de carburant.\"\n ],\n correct:0,\n skill:\"coordination\",\n explanation:\n \"Le chef d'escale coordonne et alerte ; les responsabilit\u00e9s techniques restent celles des acteurs habilit\u00e9s.\"\n},\n\n{\n category:\"PASSAGER\",\n title:\"Passager absent\",\n priority:\"\u00c9LEV\u00c9E\",\n flight:\"MZA440\",\n route:\"Casablanca \u2192 Dakar\",\n time:\"D-15\",\n description:\n \"Un passager enregistr\u00e9 ne s'est pas pr\u00e9sent\u00e9 en porte.\",\n answers:[\n   \"Ne rien faire.\",\n   \"Appliquer les proc\u00e9dures pr\u00e9vues et coordonner les services concern\u00e9s.\",\n   \"Fermer automatiquement le vol.\"\n ],\n correct:1,\n skill:\"coordination\",\n explanation:\n \"Le traitement doit respecter les proc\u00e9dures et les contraintes op\u00e9rationnelles.\"\n},\n\n{\n category:\"\u00c9QUIPAGE\",\n title:\"\u00c9quipage en retard\",\n priority:\"\u00c9LEV\u00c9E\",\n flight:\"MZA630\",\n route:\"Casablanca \u2192 Lyon\",\n time:\"D-45\",\n description:\n \"Une partie de l'\u00e9quipage n'est pas encore pr\u00e9sente.\",\n answers:[\n   \"Identifier imm\u00e9diatement la situation et alerter les interlocuteurs comp\u00e9tents.\",\n   \"Attendre l'heure de d\u00e9part.\",\n   \"Embarquer les passagers sans suivi.\"\n ],\n correct:0,\n skill:\"punctuality\",\n explanation:\n \"L'anticipation permet d'activer plus t\u00f4t les solutions disponibles.\"\n},\n\n{\n category:\"ASSISTANCE\",\n title:\"Passager PMR\",\n priority:\"\u00c9LEV\u00c9E\",\n flight:\"MZA118\",\n route:\"Casablanca \u2192 Bruxelles\",\n time:\"D-25\",\n description:\n \"L'assistance pr\u00e9vue pour un passager n'est pas encore disponible.\",\n answers:[\n   \"Demander au passager de se d\u00e9brouiller.\",\n   \"Coordonner imm\u00e9diatement l'assistance et surveiller son acheminement.\",\n   \"Fermer la porte.\"\n ],\n correct:1,\n skill:\"customer\",\n explanation:\n \"La prise en charge doit \u00eatre anticip\u00e9e et coordonn\u00e9e.\"\n},\n\n{\n category:\"TECHNIQUE\",\n title:\"Anomalie signal\u00e9e\",\n priority:\"CRITIQUE\",\n flight:\"MZA355\",\n route:\"Casablanca \u2192 Madrid\",\n time:\"D-35\",\n description:\n \"Une anomalie technique est signal\u00e9e pendant la pr\u00e9paration du vol.\",\n answers:[\n   \"Acc\u00e9l\u00e9rer le d\u00e9part.\",\n   \"Attendre sans informer personne.\",\n   \"Alerter les services comp\u00e9tents et adapter la rotation selon leurs instructions.\"\n ],\n correct:2,\n skill:\"safety\",\n explanation:\n \"La s\u00e9curit\u00e9 et la d\u00e9cision des acteurs techniques habilit\u00e9s priment.\"\n},\n\n{\n category:\"M\u00c9T\u00c9O\",\n title:\"D\u00e9gradation m\u00e9t\u00e9o\",\n priority:\"\u00c9LEV\u00c9E\",\n flight:\"MZA809\",\n route:\"Casablanca \u2192 Paris\",\n time:\"D-50\",\n description:\n \"Une d\u00e9gradation m\u00e9t\u00e9orologique susceptible d'affecter les op\u00e9rations est annonc\u00e9e.\",\n answers:[\n   \"Anticiper les impacts et coordonner les informations op\u00e9rationnelles.\",\n   \"Ignorer jusqu'au d\u00e9part.\",\n   \"Annuler soi-m\u00eame le vol.\"\n ],\n correct:0,\n skill:\"coordination\",\n explanation:\n \"Le r\u00f4le consiste \u00e0 anticiper et coordonner, pas \u00e0 improviser une d\u00e9cision hors proc\u00e9dure.\"\n},\n\n{\n category:\"EMBARQUEMENT\",\n title:\"Flux trop lent\",\n priority:\"MOYENNE\",\n flight:\"MZA510\",\n route:\"Casablanca \u2192 Lisbonne\",\n time:\"D-22\",\n description:\n \"L'embarquement progresse moins vite que pr\u00e9vu.\",\n answers:[\n   \"Analyser le flux et renforcer l'organisation lorsque cela est possible.\",\n   \"Fermer imm\u00e9diatement la porte.\",\n   \"Ne rien changer.\"\n ],\n correct:0,\n skill:\"punctuality\",\n explanation:\n \"Une action pr\u00e9coce sur le flux peut prot\u00e9ger l'heure de fermeture.\"\n},\n\n{\n category:\"INFORMATION\",\n title:\"Information contradictoire\",\n priority:\"\u00c9LEV\u00c9E\",\n flight:\"MZA923\",\n route:\"Casablanca \u2192 Montr\u00e9al\",\n time:\"D-60\",\n description:\n \"Deux syst\u00e8mes affichent des heures de d\u00e9part diff\u00e9rentes.\",\n answers:[\n   \"Choisir l'heure la plus favorable.\",\n   \"V\u00e9rifier la source op\u00e9rationnelle de r\u00e9f\u00e9rence avant communication.\",\n   \"Communiquer les deux heures.\"\n ],\n correct:1,\n skill:\"coordination\",\n explanation:\n \"Une information op\u00e9rationnelle doit \u00eatre v\u00e9rifi\u00e9e avant diffusion.\"\n},\n\n{\n category:\"D\u00c9ROUTEMENT\",\n title:\"Arriv\u00e9e impr\u00e9vue\",\n priority:\"CRITIQUE\",\n flight:\"MZA777\",\n route:\"D\u00e9routement vers l'escale\",\n time:\"ETA 25 min\",\n description:\n \"Un vol d\u00e9rout\u00e9 doit arriver dans 25 minutes.\",\n answers:[\n   \"Pr\u00e9parer imm\u00e9diatement la coordination escale, parking et ressources n\u00e9cessaires.\",\n   \"Attendre l'atterrissage.\",\n   \"Refuser automatiquement le vol.\"\n ],\n correct:0,\n skill:\"coordination\",\n explanation:\n \"Un d\u00e9routement exige une mobilisation rapide et structur\u00e9e.\"\n},\n\n{\n category:\"BAGAGES\",\n title:\"Bagage prioritaire\",\n priority:\"MOYENNE\",\n flight:\"MZA606\",\n route:\"Casablanca \u2192 Gen\u00e8ve\",\n time:\"D-20\",\n description:\n \"Un flux bagages prioritaire est retard\u00e9.\",\n answers:[\n   \"Identifier l'impact et coordonner son acheminement.\",\n   \"Ignorer.\",\n   \"Retarder automatiquement le vol.\"\n ],\n correct:0,\n skill:\"punctuality\",\n explanation:\n \"Il faut mesurer l'impact r\u00e9el avant toute d\u00e9cision.\"\n},\n\n{\n category:\"CLIENT\",\n title:\"Passagers m\u00e9contents\",\n priority:\"MOYENNE\",\n flight:\"MZA320\",\n route:\"Casablanca \u2192 Marseille\",\n time:\"Retard +75\",\n description:\n \"De nombreux passagers demandent simultan\u00e9ment des explications.\",\n answers:[\n   \"\u00c9viter la zone.\",\n   \"Donner une heure non confirm\u00e9e.\",\n   \"Communiquer une information v\u00e9rifi\u00e9e, claire et r\u00e9guli\u00e8rement actualis\u00e9e.\"\n ],\n correct:2,\n skill:\"customer\",\n explanation:\n \"Une communication fiable contribue directement \u00e0 la ma\u00eetrise de l'irr\u00e9gularit\u00e9.\"\n},\n\n{\n category:\"LEADERSHIP\",\n title:\"Deux incidents simultan\u00e9s\",\n priority:\"CRITIQUE\",\n flight:\"MULTI-VOLS\",\n route:\"Escale\",\n time:\"HEURE DE POINTE\",\n description:\n \"Un incident m\u00e9dical et un retard catering surviennent simultan\u00e9ment.\",\n answers:[\n   \"Traiter d'abord le catering.\",\n   \"Prioriser le m\u00e9dical et d\u00e9l\u00e9guer le suivi catering \u00e0 un collaborateur comp\u00e9tent.\",\n   \"Attendre que l'un des probl\u00e8mes se r\u00e9solve.\"\n ],\n correct:1,\n skill:\"safety\",\n explanation:\n \"Le leadership consiste \u00e0 hi\u00e9rarchiser les risques puis \u00e0 d\u00e9l\u00e9guer efficacement.\"\n}\n\n];\n\n\n\/* =========================================\n VARIABLES\n========================================= *\/\n\nlet examQuestions = [];\nlet examIndex = 0;\nlet examCorrect = 0;\nlet examSeconds = 900;\nlet examInterval = null;\nlet answerLocked = false;\n\nlet examSkills = {\n safety:100,\n punctuality:100,\n coordination:100,\n customer:100\n};\n\n\n\/* =========================================\n START\n========================================= *\/\n\nfunction startProfessionalExam(){\n\n const name =\n   document.getElementById(\"candidateName\")\n   .value.trim();\n\n if(!name){\n\n   alert(\"Veuillez saisir le nom du candidat.\");\n\n   return;\n }\n\n examQuestions =\n   [...professionalScenarios]\n   .sort(() => Math.random() - .5)\n   .slice(0,20);\n\n examIndex = 0;\n examCorrect = 0;\n examSeconds = 900;\n\n examSkills = {\n   safety:100,\n   punctuality:100,\n   coordination:100,\n   customer:100\n };\n\n document.getElementById(\"examCandidate\")\n .innerText = name;\n\n document.getElementById(\"examIntro\")\n .classList.add(\"hidden\");\n\n document.getElementById(\"examResults\")\n .classList.add(\"hidden\");\n\n document.getElementById(\"examInterface\")\n .classList.remove(\"hidden\");\n\n renderExamQuestion();\n\n clearInterval(examInterval);\n\n examInterval =\n   setInterval(updateExamTimer,1000);\n\n}\n\n\n\/* =========================================\n QUESTION\n========================================= *\/\n\nfunction renderExamQuestion(){\n\n answerLocked = false;\n\n const q = examQuestions[examIndex];\n\n document.getElementById(\"questionNumber\")\n .innerText = examIndex + 1;\n\n document.getElementById(\"examProgressBar\")\n .style.width =\n   (((examIndex + 1)\/20)*100) + \"%\";\n\n document.getElementById(\"scenarioCategory\")\n .innerText = q.category;\n\n document.getElementById(\"scenarioTitle\")\n .innerText = q.title;\n\n document.getElementById(\"scenarioPriority\")\n .innerText = q.priority;\n\n document.getElementById(\"scenarioFlight\")\n .innerText = q.flight;\n\n document.getElementById(\"scenarioRoute\")\n .innerText = q.route;\n\n document.getElementById(\"scenarioTime\")\n .innerText = q.time;\n\n document.getElementById(\"scenarioDescription\")\n .innerText = q.description;\n\n\n const answers =\n   document.getElementById(\"scenarioAnswers\");\n\n answers.innerHTML = \"\";\n\n q.answers.forEach((answer,index)=>{\n\n   const button =\n     document.createElement(\"button\");\n\n   button.className = \"exam-answer\";\n\n   button.innerHTML =\n     `<strong>${String.fromCharCode(65+index)}.<\/strong>\n      ${answer}`;\n\n   button.onclick =\n     () => answerExamQuestion(index,button);\n\n   answers.appendChild(button);\n\n });\n\n\n document.getElementById(\"examFeedback\")\n .innerHTML = \"\";\n\n document.getElementById(\"nextQuestionBtn\")\n .classList.add(\"hidden\");\n\n}\n\n\n\/* =========================================\n ANSWER\n========================================= *\/\n\nfunction answerExamQuestion(index,button){\n\n if(answerLocked) return;\n\n answerLocked = true;\n\n const q = examQuestions[examIndex];\n\n const buttons =\n   document.querySelectorAll(\".exam-answer\");\n\n\n buttons.forEach((b,i)=>{\n\n   b.disabled = true;\n\n   if(i === q.correct){\n     b.classList.add(\"good\");\n   }\n\n });\n\n\n if(index === q.correct){\n\n   examCorrect++;\n\n   document.getElementById(\"examFeedback\")\n   .innerHTML =\n   `<div class=\"feedback-good\">\n     \u2705 Bonne d\u00e9cision.<br>\n     ${q.explanation}\n   <\/div>`;\n\n }else{\n\n   button.classList.add(\"bad\");\n\n   applyExamPenalty(q.skill);\n\n   document.getElementById(\"examFeedback\")\n   .innerHTML =\n   `<div class=\"feedback-bad\">\n     \u274c D\u00e9cision incorrecte.<br>\n     ${q.explanation}\n   <\/div>`;\n\n }\n\n updateLiveScores();\n\n document.getElementById(\"nextQuestionBtn\")\n .classList.remove(\"hidden\");\n\n}\n\n\n\/* =========================================\n PENALTY\n========================================= *\/\n\nfunction applyExamPenalty(skill){\n\n let penalty = 10;\n\n if(skill === \"safety\"){\n   penalty = 18;\n }\n\n examSkills[skill] -= penalty;\n\n if(examSkills[skill] < 0){\n   examSkills[skill] = 0;\n }\n\n}\n\n\n\/* =========================================\n NEXT\n========================================= *\/\n\nfunction nextExamQuestion(){\n\n examIndex++;\n\n if(examIndex >= 20){\n\n   finishProfessionalExam();\n\n   return;\n\n }\n\n renderExamQuestion();\n\n}\n\n\n\/* =========================================\n LIVE SCORES\n========================================= *\/\n\nfunction updateLiveScores(){\n\n document.getElementById(\"liveSafety\")\n .innerText = examSkills.safety;\n\n document.getElementById(\"livePunctuality\")\n .innerText = examSkills.punctuality;\n\n document.getElementById(\"liveCoordination\")\n .innerText = examSkills.coordination;\n\n document.getElementById(\"liveCustomer\")\n .innerText = examSkills.customer;\n\n}\n\n\n\/* =========================================\n TIMER\n========================================= *\/\n\nfunction updateExamTimer(){\n\n examSeconds--;\n\n const minutes =\n   Math.floor(examSeconds \/ 60);\n\n const seconds =\n   examSeconds % 60;\n\n document.getElementById(\"examTimer\")\n .innerText =\n   String(minutes).padStart(2,\"0\") +\n   \":\" +\n   String(seconds).padStart(2,\"0\");\n\n\n if(examSeconds <= 0){\n\n   clearInterval(examInterval);\n\n   finishProfessionalExam();\n\n }\n\n}\n\n\n\/* =========================================\n FINISH\n========================================= *\/\n\nfunction finishProfessionalExam(){\n\n clearInterval(examInterval);\n\n document.getElementById(\"examInterface\")\n .classList.add(\"hidden\");\n\n document.getElementById(\"examResults\")\n .classList.remove(\"hidden\");\n\n\n const knowledgeScore =\n   Math.round((examCorrect\/20)*100);\n\n const skillAverage =\n   Math.round(\n     (\n       examSkills.safety +\n       examSkills.punctuality +\n       examSkills.coordination +\n       examSkills.customer\n     ) \/ 4\n   );\n\n\n const finalScore =\n   Math.round(\n     knowledgeScore * .65 +\n     skillAverage * .35\n   );\n\n\n let level;\n let message;\n\n if(finalScore >= 90){\n\n   level = \"CHEF D'ESCALE\";\n\n   message =\n   \"Excellente ma\u00eetrise des priorit\u00e9s op\u00e9rationnelles, de la s\u00e9curit\u00e9 et de la coordination.\";\n\n }\n\n else if(finalScore >= 80){\n\n   level = \"EXPERT\";\n\n   message =\n   \"Tr\u00e8s bonne ma\u00eetrise op\u00e9rationnelle. Le candidat d\u00e9montre une forte capacit\u00e9 d'anticipation.\";\n\n }\n\n else if(finalScore >= 65){\n\n   level = \"CONFIRM\u00c9\";\n\n   message =\n   \"Les fondamentaux sont ma\u00eetris\u00e9s. Certaines situations complexes doivent encore \u00eatre renforc\u00e9es.\";\n\n }\n\n else if(finalScore >= 50){\n\n   level = \"OP\u00c9RATIONNEL\";\n\n   message =\n   \"Les connaissances de base sont acquises, mais l'entra\u00eenement doit \u00eatre poursuivi.\";\n\n }\n\n else{\n\n   level = \"D\u00c9BUTANT\";\n\n   message =\n   \"Un renforcement des fondamentaux et des mises en situation est recommand\u00e9.\";\n\n }\n\n\n document.getElementById(\"finalExamScore\")\n .innerText = finalScore;\n\n document.getElementById(\"resultLevel\")\n .innerText = level;\n\n document.getElementById(\"resultMessage\")\n .innerText = message;\n\n\n setResultSkill(\n   \"Safety\",\n   examSkills.safety\n );\n\n setResultSkill(\n   \"Punctuality\",\n   examSkills.punctuality\n );\n\n setResultSkill(\n   \"Coordination\",\n   examSkills.coordination\n );\n\n setResultSkill(\n   \"Customer\",\n   examSkills.customer\n );\n\n\n document.getElementById(\"examDebrief\")\n .innerHTML = `\n\n <p>\n <strong>Bonnes d\u00e9cisions :<\/strong>\n ${examCorrect} \/ 20\n <\/p>\n\n <p>\n <strong>Score connaissances :<\/strong>\n ${knowledgeScore}%\n <\/p>\n\n <p>\n <strong>Score comportement op\u00e9rationnel :<\/strong>\n ${skillAverage}%\n <\/p>\n\n <p>\n <strong>R\u00e9sultat final :<\/strong>\n ${finalScore}\/100\n <\/p>\n\n `;\n\n\n prepareCertificate(\n   finalScore,\n   level\n );\n\n document.getElementById(\"examResults\")\n .scrollIntoView({\n   behavior:\"smooth\"\n });\n\n}\n\n\n\/* =========================================\n RESULT SKILLS\n========================================= *\/\n\nfunction setResultSkill(name,value){\n\n document.getElementById(\"result\"+name)\n .innerText = value + \"%\";\n\n document.getElementById(\"result\"+name+\"Bar\")\n .style.width = value + \"%\";\n\n}\n\n\n\/* =========================================\n CERTIFICATE\n========================================= *\/\n\nfunction prepareCertificate(score,level){\n\n const name =\n   document.getElementById(\"candidateName\")\n   .value.trim();\n\n document.getElementById(\"certificateName\")\n .innerText = name;\n\n document.getElementById(\"certificateScore\")\n .innerText = score;\n\n document.getElementById(\"certificateLevel\")\n .innerText = level;\n\n\n const today =\n   new Date();\n\n document.getElementById(\"certificateDate\")\n .innerText =\n   today.toLocaleDateString(\"fr-FR\");\n\n\n const ref =\n   \"MZA-MV-\" +\n   today.getFullYear() +\n   \"-\" +\n   Math.floor(100000 + Math.random()*900000);\n\n document.getElementById(\"certificateRef\")\n .innerText = ref;\n\n}\n\n\n\/* =========================================\n SHOW CERTIFICATE\n========================================= *\/\n\nfunction showCertificate(){\n\n document.getElementById(\"certificateSection\")\n .classList.remove(\"hidden\");\n\n document.getElementById(\"certificateSection\")\n .scrollIntoView({\n   behavior:\"smooth\"\n });\n\n}\n\n\n\/* =========================================\n RESTART\n========================================= *\/\n\nfunction restartExam(){\n\n clearInterval(examInterval);\n\n document.getElementById(\"examResults\")\n .classList.add(\"hidden\");\n\n document.getElementById(\"certificateSection\")\n .classList.add(\"hidden\");\n\n document.getElementById(\"examIntro\")\n .classList.remove(\"hidden\");\n\n document.getElementById(\"mza-examen\")\n .scrollIntoView({\n   behavior:\"smooth\"\n });\n\n}\n\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>15 \u2022 Certification professionnelle Examen \u2014 Mouvements de vols Prenez les commandes de l&rsquo;escale. Vous devrez traiter 20 situations op\u00e9rationnelles et choisir la d\u00e9cision la plus appropri\u00e9e. MAROC ZAIN ACADEMY Flight Operations Challenge \u00c9valuation professionnelle de la capacit\u00e9 \u00e0 surveiller, anticiper et g\u00e9rer les mouvements de vols. \u2708 20 situations 15:00 minutes 100 points 80% [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2989","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/maroczain.com\/en\/wp-json\/wp\/v2\/pages\/2989","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/maroczain.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/maroczain.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/maroczain.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/maroczain.com\/en\/wp-json\/wp\/v2\/comments?post=2989"}],"version-history":[{"count":2,"href":"https:\/\/maroczain.com\/en\/wp-json\/wp\/v2\/pages\/2989\/revisions"}],"predecessor-version":[{"id":3097,"href":"https:\/\/maroczain.com\/en\/wp-json\/wp\/v2\/pages\/2989\/revisions\/3097"}],"wp:attachment":[{"href":"https:\/\/maroczain.com\/en\/wp-json\/wp\/v2\/media?parent=2989"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}