{"id":13602,"date":"2026-07-16T04:31:39","date_gmt":"2026-07-16T04:31:39","guid":{"rendered":"https:\/\/promotionexams.com\/?page_id=13602"},"modified":"2026-07-16T13:13:29","modified_gmt":"2026-07-16T13:13:29","slug":"mcqs-on-make-in-india-order","status":"publish","type":"page","link":"https:\/\/promotionexams.com\/?page_id=13602","title":{"rendered":"MCQs on Make in India Order"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"13602\" class=\"elementor elementor-13602\">\n\t\t\t\t<div class=\"elementor-element elementor-element-964af5c e-con-full e-flex e-con e-parent\" data-id=\"964af5c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-90eed75 elementor-widget elementor-widget-html\" data-id=\"90eed75\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!--\r\n============================================================\r\nCSS ADDA \u00b7 PromotionExams.com\r\nCHAPTER-WISE MCQ PRACTICE + AI COACH  (Reusable Template)\r\n------------------------------------------------------------\r\nTABS:\r\n  1. Practice Quiz   \u2014 chapter-wise quiz (progress, weak areas,\r\n                       chapter filter, mastery stars)\r\n  2. My Performance  \u2014 AI coach: readiness score, focus areas,\r\n                       study plan, spaced-repetition revision queue\r\n\r\nHOW TO REUSE THIS TEMPLATE (3 steps):\r\n  1. In quizConfig below, change:\r\n       quizId   -> a UNIQUE id per topic (e.g. 'RTI-chapterwise-quiz').\r\n                   This keys localStorage; two quizzes sharing an id\r\n                   will share\/overwrite each other's progress!\r\n       topic    -> heading shown in the header\r\n       paper    -> 'Paper 1' \/ 'Paper 2' (shown in the eyebrow line)\r\n  2. Paste your question bank into  const allQuestions = [ ... ]\r\n     (format documented at the array).\r\n     NOTE: No 'year' field \u2014 this template is chapter-wise only.\r\n  3. Nothing else needs editing.\r\n\r\nRESET BEHAVIOUR:\r\n  \u2022 \"Reset Session\" (Practice tab)   -> clears ONLY the current\r\n    session's answers\/score. Lifetime mastery, weak areas and the\r\n    My Performance data are KEPT.\r\n  \u2022 \"Reset My Performance\" (My Performance tab) -> wipes lifetime\r\n    stats, mastery, weak areas and attempt history (with confirm).\r\n\r\nAll progress persists in localStorage (per quizId).\r\n============================================================\r\n-->\r\n\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, viewport-fit=cover\">\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\r\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Crimson+Pro:wght@500;600;700&family=DM+Sans:wght@400;500;600;700&display=swap\" rel=\"stylesheet\">\r\n\r\n<style>\r\n\/* =====================================================\r\n   CSS ADDA \u2014 INTEGRATED PORTAL DESIGN SYSTEM\r\n   NOTE ON FONT STABILITY: all font sizes are in px (not\r\n   rem) so the widget looks identical on every WordPress\r\n   page\/theme, regardless of the site's root font size.\r\n   Key exam-paper typography carries !important to defeat\r\n   theme overrides. The Google Fonts stylesheet link above\r\n   is REQUIRED \u2014 without it Crimson Pro \/ DM Sans never\r\n   load and the MCQ style changes page to page.\r\n===================================================== *\/\r\n.cwq-portal{\r\n  --navy:#2563EB; --navy-d:#1D4ED8; --navy-l:#3B82F6; --navy-ink:#12275c;\r\n  --gold:#c9992a; --gold-l:#e6c14e; --gold-d:#a37b1c;\r\n  --green:#10B981; --green-d:#059669; --green-bg:#ecfdf5;\r\n  --red:#EF4444; --red-d:#dc2626; --red-bg:#fef2f2;\r\n  --amber:#f59e0b; --amber-d:#d97706;\r\n  --bg:#F6F8FC; --card:#FFFFFF;\r\n  --ink:#1E293B; --mut:#5b6472; --faint:#94A3B8; --line:#E2E8F0;\r\n  --sh-sm:0 1px 2px rgba(16,41,66,.06);\r\n  --sh-md:0 4px 10px -2px rgba(16,41,66,.10);\r\n  --sh-lg:0 12px 26px -8px rgba(16,41,66,.16);\r\n  --r-sm:8px; --r-md:12px; --r-lg:16px;\r\n  --serif:'Crimson Pro',Georgia,'Times New Roman',serif;\r\n  --sans:'DM Sans',-apple-system,BlinkMacSystemFont,sans-serif;\r\n  font-family:var(--sans) !important;\r\n  font-size:16px;\r\n  color:var(--ink); line-height:1.55;\r\n  background:linear-gradient(160deg,#EFF4FF 0%,#F6F8FC 45%,#FDF9EE 100%);\r\n  border-radius:var(--r-lg); overflow:hidden; box-shadow:var(--sh-lg);\r\n  -webkit-user-select:none; user-select:none;\r\n}\r\n.cwq-portal *{margin:0;padding:0;box-sizing:border-box;min-width:0}\r\n\/* Font-stability shield: inherit our stack everywhere unless a rule below overrides *\/\r\n.cwq-portal *:not(i):not(.ic){font-family:inherit}\r\n.cwq-portal img,.cwq-portal svg,.cwq-portal table{max-width:100%}\r\n.cwq-portal table{max-width:none}\r\n@media print{.cwq-portal{display:none!important}}\r\n\r\n.ic{font-style:normal;display:inline-block;line-height:1}\r\n\/* ---------- HEADER ---------- *\/\r\n.gp-header{background:linear-gradient(135deg,#173db3 0%,var(--navy) 62%,#3b6cf0 100%);border-bottom:4px solid var(--gold);padding:26px 28px 0}\r\n.gp-head-top{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:18px}\r\n.gp-brand .eyebrow{font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--gold-l);font-weight:700;margin-bottom:6px}\r\n.gp-brand h1{font-family:var(--serif) !important;font-weight:600;font-size:clamp(20px,3.5vw,28px);line-height:1.15;color:#fff;letter-spacing:-.01em}\r\n.gp-brand p{font-size:13.6px;color:#cfe0ff;margin-top:5px}\r\n.gp-stats{display:flex;gap:10px;flex-wrap:wrap}\r\n.gp-stat{background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.16);border-radius:var(--r-md);padding:9px 16px;min-width:96px;text-align:center}\r\n.gp-stat .n{font-family:var(--serif);font-size:23px;font-weight:600;color:var(--gold-l);line-height:1.1}\r\n.gp-stat .l{font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:#bfdbfe;margin-top:2px}\r\n.gp-stat.clickable{cursor:pointer;transition:transform .25s}\r\n.gp-stat.clickable:hover{transform:translateY(-2px);background:rgba(255,255,255,.16)}\r\n\r\n\/* Tab navigation *\/\r\n.gp-tabs{display:flex;gap:6px;margin-top:22px;flex-wrap:wrap}\r\n.gp-tab{padding:11px 22px;border:none;border-radius:var(--r-md) var(--r-md) 0 0;background:rgba(255,255,255,.10);color:#dbeafe;font-family:var(--sans);font-size:13.6px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:8px;transition:all .25s}\r\n.gp-tab i{color:var(--gold-l);font-size:12.8px}\r\n.gp-tab:hover{background:rgba(255,255,255,.2);color:#fff}\r\n.gp-tab.active{background:var(--bg);color:var(--navy-d)}\r\n.gp-tab.active i{color:var(--gold)}\r\n.gp-tab .pill{background:var(--red);color:#fff;font-size:10.4px;font-weight:700;padding:1px 7px;border-radius:20px}\r\n\r\n.gp-view{display:none;animation:gpFade .35s ease}\r\n.gp-view.active{display:block}\r\n@keyframes gpFade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}\r\n\r\n\/* ---------- SHARED CARDS ---------- *\/\r\n.quiz-card,.an-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-sm);overflow:hidden;display:flex;flex-direction:column}\r\n.quiz-card-header{background:linear-gradient(135deg,var(--navy) 0%,var(--navy-d) 100%);padding:13px 16px;color:#fff}\r\n.quiz-card-header h3{font-size:13.4px;font-weight:700;display:flex;align-items:center;gap:8px;color:#fff}\r\n.quiz-card-header h3 i{color:var(--gold-l)}\r\n.quiz-card-header.light{background:linear-gradient(135deg,#F1F5FB 0%,#E4ECFB 100%);border-bottom:1px solid var(--line)}\r\n.quiz-card-header.light h3{color:var(--navy-d)}\r\n.quiz-card-header.light h3 i{color:var(--gold)}\r\n.quiz-card-body{padding:16px;flex:1;display:flex;flex-direction:column}\r\n\r\n.sec-head{display:flex;align-items:baseline;gap:12px;margin:34px 0 16px;border-bottom:1px solid var(--line);padding-bottom:10px}\r\n.sec-head .num{font-family:var(--serif);color:var(--gold);font-size:16.8px;font-weight:600}\r\n.sec-head h2{font-size:18.4px;font-weight:700;letter-spacing:-.01em;color:var(--navy-ink)}\r\n.sec-head .hint{margin-left:auto;color:var(--mut);font-size:12.8px;font-style:italic;font-family:var(--serif)}\r\n\r\n\/* ---------- MODE SELECTOR ---------- *\/\r\n.mode-selector{background:var(--card);padding:13px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px}\r\n.mode-tabs{display:flex;gap:8px;flex-wrap:wrap}\r\n.mode-tab{padding:9px 16px;min-height:40px;border:2px solid var(--line);border-radius:var(--r-md);background:#F8FAFC;font-size:12.8px;font-weight:600;color:var(--mut);cursor:pointer;transition:all .3s;display:flex;align-items:center;gap:6px;font-family:var(--sans)}\r\n.mode-tab:hover{border-color:var(--navy-l);color:var(--navy)}\r\n.mode-tab.active{background:linear-gradient(135deg,var(--navy) 0%,var(--navy-d) 100%);border-color:var(--navy);color:#fff}\r\n.mode-tab.weak-mode{border-color:#f3c1c1}\r\n.mode-tab.weak-mode.active{background:linear-gradient(135deg,var(--red) 0%,var(--red-d) 100%);border-color:var(--red)}\r\n.mode-tab .badge{background:rgba(255,255,255,.3);padding:2px 8px;border-radius:20px;font-size:11.2px}\r\n.mode-tab:not(.active) .badge{background:var(--navy);color:#fff}\r\n.mode-tab.weak-mode:not(.active) .badge{background:var(--red)}\r\n.session-info{display:flex;align-items:center;gap:12px;font-size:12.8px;color:var(--mut)}\r\n.session-info i{color:var(--gold)}\r\n.resume-btn{padding:7px 14px;background:linear-gradient(135deg,var(--gold) 0%,var(--gold-d) 100%);border:none;border-radius:var(--r-md);color:#fff;font-size:12.2px;font-weight:700;cursor:pointer;display:flex;align-items:center;gap:5px;transition:all .3s;font-family:var(--sans)}\r\n.resume-btn:hover{transform:translateY(-2px);box-shadow:var(--sh-md)}\r\n\r\n\/* ---------- QUIZ GRID LAYOUT (filter bar | question | dashboard) ---------- *\/\r\n.quiz-container{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:18px;padding:0 18px 18px;align-items:start}\r\n\/* Full-width horizontal FILTER BAR shown before the MCQ content *\/\r\n.filter-bar{display:block;padding:14px 18px 0}\r\n.filter-bar .quiz-card{margin-bottom:12px}\r\n.filter-bar-row{display:grid;grid-template-columns:1fr;gap:12px}\r\n.filter-list{display:flex;flex-direction:row;flex-wrap:wrap;gap:7px;padding:2px 0;max-height:none;overflow:visible}\r\n.filter-item{padding:7px 12px;border-radius:20px;cursor:pointer;display:inline-flex;align-items:center;gap:8px;transition:all .25s;border:1.5px solid var(--line);background:#F8FAFC;font-size:12.8px;flex:0 0 auto}\r\n.filter-item:hover{background:#EFF6FF;border-color:var(--navy-l)}\r\n.filter-item.active{background:linear-gradient(135deg,var(--navy) 0%,var(--navy-d) 100%);color:#fff}\r\n.filter-item .filter-text{font-weight:600;display:flex;align-items:center;gap:6px;font-size:12.6px}\r\n.filter-item .filter-count{background:rgba(255,255,255,.2);padding:2px 8px;border-radius:20px;font-size:11.2px;font-weight:600}\r\n.filter-item:not(.active) .filter-count{background:var(--navy);color:#fff}\r\n\r\n.weak-areas-card .quiz-card-header{background:linear-gradient(135deg,var(--red) 0%,var(--red-d) 100%)}\r\n.weak-question-list{flex:1;overflow-y:auto;margin-bottom:10px;max-height:180px}\r\n.weak-question-item{background:#F8FAFC;padding:10px 12px;border-radius:var(--r-sm);margin-bottom:8px;font-size:12.5px;display:flex;align-items:center;gap:10px;cursor:pointer;transition:all .3s;border-left:3px solid var(--red)}\r\n.weak-question-item:hover{background:var(--red-bg);transform:translateX(3px)}\r\n.weak-question-item .q-num{font-weight:700;color:var(--red);flex-shrink:0}\r\n.weak-question-item .q-text{flex:1;color:var(--mut);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\r\n.weak-question-item .wrong-count{background:var(--red);color:#fff;padding:2px 6px;border-radius:20px;font-size:10.4px;font-weight:600}\r\n.practice-weak-btn{width:100%;padding:10px;background:linear-gradient(135deg,var(--red) 0%,var(--red-d) 100%);border:none;border-radius:var(--r-md);color:#fff;font-size:12.8px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px;margin-top:10px;transition:all .3s;font-family:var(--sans)}\r\n.practice-weak-btn:hover{transform:translateY(-2px);box-shadow:var(--sh-md)}\r\n\r\n\/* ---------- QUESTION PANEL ---------- *\/\r\n.question-panel{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-sm);overflow:hidden;align-self:start}\r\n.question-header{background:linear-gradient(135deg,#F1F5FB 0%,#E4ECFB 100%);padding:13px 20px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);flex-wrap:wrap;gap:10px}\r\n.question-number{font-family:var(--serif);font-size:16.3px;font-weight:600;color:var(--navy-d)}\r\n.question-meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap}\r\n.meta-badge{padding:5px 10px;border-radius:20px;font-size:11.7px;font-weight:600;display:flex;align-items:center;gap:4px}\r\n\/* WRAP FIX: long chapter names wrap in the badge instead of one huge pill *\/\r\n.meta-badge.chapter{background:linear-gradient(135deg,var(--gold) 0%,var(--gold-d) 100%);color:#fff;white-space:normal;max-width:100%;line-height:1.3;text-align:left}\r\n.meta-badge.weak{background:linear-gradient(135deg,var(--red) 0%,var(--red-d) 100%);color:#fff}\r\n.meta-badge i{font-size:10.1px}\r\n.question-body{padding:22px}\r\n\/* ---- EXAM-PAPER TYPOGRAPHY (UPSC QP style) ----\r\n   font-family + font-size are !important so the WordPress theme can\r\n   never change how the MCQs look from page to page. *\/\r\n.question-text{font-family:var(--serif) !important;font-size:18.5px !important;line-height:1.7;color:#161b26;padding:20px 22px;background:#fffef9;border:1px solid #e9e3d2;border-left:4px solid var(--gold);border-radius:var(--r-md);margin-bottom:18px;box-shadow:inset 0 1px 0 #fff;text-align:justify;text-justify:inter-word;hyphens:auto;-webkit-hyphens:auto}\r\n.question-text b{font-weight:700}\r\n.question-text .q-stem{display:block}\r\n.q-stmt{display:grid;grid-template-columns:30px 1fr;gap:4px;margin:12px 0 0 14px;line-height:1.65}\r\n.q-stmt .sn{font-weight:600;text-align:left}\r\n.q-lead{display:block;margin-top:16px}\r\n.options-list{display:flex;flex-direction:column;gap:9px}\r\n.option-item{font-family:var(--serif) !important;padding:12px 16px;border:1.5px solid var(--line);border-radius:var(--r-md);cursor:pointer;display:flex;align-items:flex-start;gap:12px;transition:all .25s;background:#fff}\r\n.option-item:hover:not(.disabled){border-color:var(--navy-l);background:#F6F9FF;transform:translateX(4px)}\r\n.option-item.selected{border-color:var(--navy);background:#EFF5FF;box-shadow:0 0 0 1px var(--navy)}\r\n.option-item.correct{border-color:var(--green);background:#F0FDF6;box-shadow:0 0 0 1px var(--green)}\r\n.option-item.incorrect{border-color:var(--red);background:#FEF4F4;box-shadow:0 0 0 1px var(--red)}\r\n.option-item.disabled{cursor:default}\r\n.option-letter{min-width:34px;font-family:inherit;font-weight:600;font-size:17.3px !important;color:#161b26;flex-shrink:0;line-height:1.6;transition:color .25s}\r\n.option-item.selected .option-letter{color:var(--navy-d)}\r\n.option-item.correct .option-letter{color:var(--green-d)}\r\n.option-item.incorrect .option-letter{color:var(--red-d)}\r\n.option-text{font-size:17.3px !important;line-height:1.6;color:#161b26;flex:1;text-align:justify;text-justify:inter-word;hyphens:auto;-webkit-hyphens:auto}\r\n.option-icon{font-size:16px;display:none}\r\n.option-item.correct .option-icon,.option-item.incorrect .option-icon{display:block}\r\n.option-item.correct .option-icon{color:var(--green)}\r\n.option-item.incorrect .option-icon{color:var(--red)}\r\n.explanation-box{margin-top:18px;padding:16px;background:linear-gradient(135deg,#FFFBEB 0%,#FEF3C7 100%);border-radius:var(--r-md);border-left:4px solid var(--gold);display:none;animation:gpSlide .4s ease}\r\n.explanation-box.show{display:block}\r\n@keyframes gpSlide{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:none}}\r\n.explanation-title{font-size:13.4px;font-weight:700;color:var(--gold-d);margin-bottom:8px;display:flex;align-items:center;gap:6px}\r\n.explanation-text{font-family:var(--serif) !important;font-size:16.3px !important;line-height:1.68;color:#1c2330;text-align:justify;text-justify:inter-word;hyphens:auto;-webkit-hyphens:auto}\r\n.mastery-indicator{margin-top:14px;padding:10px 14px;background:#F8FAFC;border-radius:var(--r-md);display:none}\r\n.mastery-indicator.show{display:flex;align-items:center;justify-content:space-between}\r\n.mastery-label{font-size:12.5px;color:var(--mut);display:flex;align-items:center;gap:5px}\r\n.mastery-stars{display:flex;gap:2px}\r\n.mastery-stars i{color:var(--line);font-size:13.6px}\r\n.mastery-stars i.filled{color:#fbbf24}\r\n.question-nav{margin-top:20px;padding:16px 20px;background:#F8FAFC;display:flex;justify-content:space-between;align-items:center;gap:12px;border-radius:var(--r-md);border:1px solid var(--line)}\r\n.nav-btn{padding:11px 22px;min-height:44px;border:none;border-radius:var(--r-md);font-size:13.6px;font-weight:700;cursor:pointer;display:flex;align-items:center;gap:7px;transition:all .3s;font-family:var(--sans);touch-action:manipulation}\r\n.nav-btn.prev{background:#fff;color:var(--mut);border:2px solid var(--line)}\r\n.nav-btn.prev:hover:not(:disabled){border-color:var(--navy);color:var(--navy);transform:translateX(-3px)}\r\n.nav-btn.check{background:linear-gradient(135deg,var(--gold) 0%,var(--gold-d) 100%);color:#fff;flex:1;justify-content:center;max-width:220px;box-shadow:var(--sh-md)}\r\n.nav-btn.check:hover:not(:disabled){transform:translateY(-2px);box-shadow:var(--sh-lg)}\r\n.nav-btn.next{background:linear-gradient(135deg,var(--navy) 0%,var(--navy-d) 100%);color:#fff;box-shadow:var(--sh-md)}\r\n.nav-btn.next:hover:not(:disabled){transform:translateX(3px);box-shadow:var(--sh-lg)}\r\n.nav-btn:disabled{opacity:.5;cursor:not-allowed}\r\n\r\n\/* ---------- RIGHT SIDEBAR ---------- *\/\r\n.dashboard-sidebar{display:flex;flex-direction:column;gap:16px;align-self:start;min-width:0}\r\n\/* Combined Progress + Session card *\/\r\n.progress-combo{display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:center}\r\n.progress-combo .stat-col{display:flex;flex-direction:column;gap:2px}\r\n.progress-combo .stat-row{padding:5px 0}\r\n.progress-ring-container{display:flex;justify-content:center}\r\n.progress-ring{position:relative;width:100px;height:100px}\r\n.progress-ring svg{transform:rotate(-90deg)}\r\n.progress-ring-bg{fill:none;stroke:var(--line);stroke-width:8}\r\n.progress-ring-fill{fill:none;stroke:var(--green);stroke-width:8;stroke-linecap:round;transition:stroke-dashoffset .5s}\r\n.progress-ring-text{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}\r\n.progress-ring-percentage{font-family:var(--serif);font-size:24px;font-weight:600;color:var(--ink)}\r\n.progress-ring-label{font-size:10.1px;color:var(--mut)}\r\n.progress-stats-mini{display:grid;grid-template-columns:1fr 1fr;gap:8px}\r\n.progress-stat-mini{background:#F8FAFC;padding:10px;border-radius:var(--r-sm);text-align:center}\r\n.progress-stat-mini .value{font-family:var(--serif);font-size:19.2px;font-weight:600}\r\n.progress-stat-mini .value.correct{color:var(--green)}\r\n.progress-stat-mini .value.incorrect{color:var(--red)}\r\n.progress-stat-mini .label{font-size:10.1px;color:var(--mut);margin-top:2px}\r\n.question-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;max-height:200px;overflow-y:auto;padding:2px}\r\n.grid-item{width:100%;aspect-ratio:1;border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;font-weight:600;font-size:11.7px;cursor:pointer;transition:all .3s;border:2px solid transparent;position:relative}\r\n.grid-item.unattempted{background:var(--navy);color:#fff}\r\n.grid-item.current{background:var(--gold);color:#fff;transform:scale(1.1);box-shadow:var(--sh-md);z-index:1}\r\n.grid-item.attempted{background:#f7ce6b;color:var(--ink)}\r\n.grid-item.correct-answered{background:var(--green);color:#fff}\r\n.grid-item.incorrect-answered{background:var(--red);color:#fff}\r\n.grid-item.weak-marked::after{content:'!';position:absolute;top:-3px;right:-3px;width:12px;height:12px;background:var(--red);border-radius:50%;font-size:8.8px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700}\r\n.grid-item:hover:not(.current){transform:scale(1.05)}\r\n.legend{padding-top:12px;border-top:1px solid var(--line);margin-top:4px}\r\n.legend-title{font-weight:700;font-size:11.7px;color:var(--ink);margin-bottom:8px}\r\n.legend-items{display:flex;flex-wrap:wrap;gap:10px}\r\n.legend-item{display:flex;align-items:center;gap:5px;font-size:10.9px;color:var(--mut)}\r\n.legend-color{width:14px;height:14px;border-radius:3px}\r\n.legend-color.unattempted{background:var(--navy)}\r\n.legend-color.attempted{background:#f7ce6b}\r\n.legend-color.correct{background:var(--green)}\r\n.legend-color.incorrect{background:var(--red)}\r\n.stat-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px dashed var(--line)}\r\n.stat-row:last-child{border-bottom:none}\r\n.stat-label{color:var(--mut);font-size:13.1px}\r\n.stat-value{font-weight:700;font-size:15.2px;color:var(--ink)}\r\n.stat-value.correct{color:var(--green)}\r\n.stat-value.incorrect{color:var(--red)}\r\n.action-buttons{display:flex;flex-direction:column;gap:10px}\r\n.action-btn{width:100%;padding:12px;min-height:46px;border:none;border-radius:var(--r-md);font-size:13.6px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:7px;transition:all .3s;font-family:var(--sans)}\r\n.action-btn.submit{background:linear-gradient(135deg,var(--green) 0%,var(--green-d) 100%);color:#fff;box-shadow:var(--sh-md)}\r\n.action-btn.submit:hover{transform:translateY(-2px);box-shadow:var(--sh-lg)}\r\n.action-btn.reset{background:#F8FAFC;color:var(--mut);border:2px solid var(--line)}\r\n.action-btn.reset:hover{border-color:var(--red);color:var(--red)}\r\n.reset-note{font-size:11.5px;color:var(--faint);text-align:center;margin-top:6px;line-height:1.45}\r\n\r\n\/* ---------- TOAST & MODAL ---------- *\/\r\n.warning-toast{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);background:var(--red);color:#fff;padding:12px 24px;border-radius:var(--r-md);font-weight:600;box-shadow:var(--sh-lg);z-index:10000;display:none;animation:gpUp .3s ease;font-size:14.1px}\r\n.warning-toast.show{display:flex;align-items:center;gap:8px}\r\n.warning-toast.success{background:var(--green)}\r\n@keyframes gpUp{from{opacity:0;transform:translateX(-50%) translateY(20px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}\r\n.result-modal{position:fixed;inset:0;background:rgba(9,20,45,.72);display:none;justify-content:center;align-items:center;z-index:10000;padding:20px}\r\n.result-modal.show{display:flex}\r\n.result-content{background:#fff;padding:32px;border-radius:var(--r-lg);text-align:center;max-width:440px;width:100%;box-shadow:var(--sh-lg);animation:gpModal .3s ease;max-height:90vh;overflow-y:auto}\r\n@keyframes gpModal{from{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}\r\n.result-icon{font-size:50px;margin-bottom:16px}\r\n.result-title{font-family:var(--serif);font-size:24px;font-weight:600;color:var(--ink);margin-bottom:8px}\r\n.result-message{color:var(--mut);margin-bottom:20px;font-size:14.4px}\r\n.result-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:20px}\r\n.result-stat{background:#F8FAFC;padding:12px;border-radius:var(--r-md)}\r\n.result-stat-value{font-family:var(--serif);font-size:22.4px;font-weight:600;color:var(--navy)}\r\n.result-stat-label{font-size:11.5px;color:var(--mut)}\r\n.result-buttons{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}\r\n.result-btn{padding:10px 20px;border:none;border-radius:var(--r-md);font-weight:700;cursor:pointer;transition:all .3s;display:flex;align-items:center;gap:6px;font-size:13.1px;font-family:var(--sans)}\r\n.result-btn.primary{background:linear-gradient(135deg,var(--navy) 0%,var(--navy-d) 100%);color:#fff}\r\n.result-btn.secondary{background:#F8FAFC;color:var(--mut)}\r\n.result-btn.weak{background:linear-gradient(135deg,var(--red) 0%,var(--red-d) 100%);color:#fff}\r\n.result-btn:hover{transform:translateY(-2px)}\r\n\r\n\/* =====================================================\r\n   TAB 2 \u2014 MY PERFORMANCE (AI COACH)\r\n===================================================== *\/\r\n.ai-wrap{padding:6px 28px 40px;max-width:1080px;margin:0 auto}\r\n.an-card{padding:22px 22px}\r\n.bar-row{display:grid;grid-template-columns:34px minmax(190px,1.5fr) 2.3fr auto;align-items:center;gap:12px;padding:6px 0}\r\n.bar-row+.bar-row{border-top:1px dashed #eef1f6}\r\n.bar-rank{font-family:var(--serif);color:var(--mut);font-size:14.4px;text-align:right}\r\n\/* WRAP FIX: long chapter names wrap onto multiple lines instead of overflowing *\/\r\n.bar-name{font-size:13.8px;font-weight:500;line-height:1.35;overflow-wrap:break-word;word-break:break-word}\r\n.bar-track{background:#eef1f6;border-radius:8px;height:20px;overflow:hidden}\r\n.bar-fill{height:100%;border-radius:8px;transition:width .8s ease}\r\n.bar-val{font-weight:700;font-size:14.7px;min-width:64px;text-align:right}\r\n.tbl-scroll{overflow-x:auto;border:1px solid var(--line);border-radius:14px;background:#fff}\r\n.ai-hero{display:grid;grid-template-columns:280px 1fr;gap:18px;align-items:stretch}\r\n.ai-ring-card{background:linear-gradient(150deg,var(--navy-ink) 0%,var(--navy-d) 70%,#2f5fe0 100%);border-radius:var(--r-lg);padding:26px 20px;color:#fff;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:var(--sh-md)}\r\n.ai-ring{position:relative;width:150px;height:150px}\r\n.ai-ring svg{transform:rotate(-90deg)}\r\n.ai-ring .bg{fill:none;stroke:rgba(255,255,255,.14);stroke-width:11}\r\n.ai-ring .fg{fill:none;stroke:var(--gold-l);stroke-width:11;stroke-linecap:round;transition:stroke-dashoffset 1s ease}\r\n.ai-ring-txt{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}\r\n.ai-ring-txt .n{font-family:var(--serif);font-size:40px;font-weight:600;color:var(--gold-l);line-height:1}\r\n.ai-ring-txt .l{font-size:9.9px;letter-spacing:.12em;text-transform:uppercase;color:#bfdbfe;margin-top:4px}\r\n.ai-verdict{margin-top:14px;font-size:13.8px;color:#dbeafe;line-height:1.5}\r\n.ai-verdict b{color:#fff}\r\n.ai-coach-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:22px;box-shadow:var(--sh-sm)}\r\n.ai-coach-card h3{font-size:15.2px;color:var(--navy-ink);display:flex;align-items:center;gap:8px;margin-bottom:12px}\r\n.ai-coach-card h3 i{color:var(--gold)}\r\n.ai-reco{display:flex;gap:12px;padding:11px 0;border-bottom:1px dashed var(--line);align-items:flex-start}\r\n.ai-reco:last-child{border-bottom:none}\r\n.ai-reco .ic{width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:12.8px;flex-shrink:0;margin-top:2px}\r\n.ai-reco .ic.hot{background:var(--red-bg);color:var(--red-d)}\r\n.ai-reco .ic.warm{background:#fef7e6;color:var(--amber-d)}\r\n.ai-reco .ic.cool{background:#eff6ff;color:var(--navy)}\r\n.ai-reco .ic.good{background:var(--green-bg);color:var(--green-d)}\r\n.ai-reco p{font-size:13.9px;color:#37414f}\r\n.ai-reco p b{color:var(--navy-ink)}\r\n.ai-reco .go{margin-left:auto;flex-shrink:0;background:#EFF6FF;color:var(--navy-d);border:1px solid #d4e2fb;border-radius:8px;padding:6px 12px;font-size:11.5px;font-weight:700;cursor:pointer;transition:all .25s;font-family:var(--sans);white-space:nowrap}\r\n.ai-reco .go:hover{background:var(--navy);color:#fff}\r\n\r\n.ai-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-top:18px}\r\n.ai-kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);padding:14px 16px;box-shadow:var(--sh-sm)}\r\n.ai-kpi .n{font-family:var(--serif);font-size:25.6px;font-weight:600;color:var(--navy-d)}\r\n.ai-kpi .n.g{color:var(--green-d)} .ai-kpi .n.r{color:var(--red-d)} .ai-kpi .n.a{color:var(--amber-d)}\r\n.ai-kpi .l{font-size:10.9px;letter-spacing:.05em;text-transform:uppercase;color:var(--mut);margin-top:2px}\r\n\r\ntable.perf{border-collapse:collapse;width:100%;font-size:13.1px;min-width:760px}\r\ntable.perf th,table.perf td{padding:10px 10px;border-bottom:1px solid #eef1f6;text-align:center}\r\ntable.perf thead th{background:var(--navy);color:#fff;font-weight:600;font-size:11.5px}\r\ntable.perf th:first-child,table.perf td:first-child{text-align:left;padding-left:14px}\r\n\/* WRAP FIX: chapter column wraps; bounded so metric columns stay visible *\/\r\ntable.perf td:first-child{font-weight:500;background:#fbfcfe;white-space:normal;overflow-wrap:break-word;word-break:break-word;min-width:150px;max-width:260px;line-height:1.4}\r\n.mini-track{background:#eef1f6;border-radius:6px;height:9px;overflow:hidden;min-width:80px}\r\n.mini-fill{height:100%;border-radius:6px}\r\n.tag{display:inline-block;font-size:10.6px;font-weight:700;padding:3px 9px;border-radius:20px;text-transform:uppercase;letter-spacing:.03em}\r\n.tag.hot{background:var(--red-bg);color:var(--red-d)}\r\n.tag.warm{background:#fef7e6;color:var(--amber-d)}\r\n.tag.ok{background:#eff6ff;color:var(--navy-d)}\r\n.tag.good{background:var(--green-bg);color:var(--green-d)}\r\n.tag.na{background:#f1f5f9;color:var(--faint)}\r\n.mini-go{background:none;border:1px solid var(--line);border-radius:8px;padding:5px 10px;font-size:11.2px;font-weight:700;color:var(--navy-d);cursor:pointer;transition:all .25s;font-family:var(--sans)}\r\n.mini-go:hover{background:var(--navy);color:#fff;border-color:var(--navy)}\r\n\r\n.rev-item{display:flex;align-items:center;gap:10px;background:#F8FAFC;border-left:3px solid var(--amber);border-radius:var(--r-sm);padding:10px 12px;margin-bottom:8px;font-size:12.6px;cursor:pointer;transition:all .25s}\r\n.rev-item:hover{background:#fef7e6;transform:translateX(3px)}\r\n.rev-item .q-num{font-weight:700;color:var(--amber-d);flex-shrink:0}\r\n.rev-item .q-text{flex:1;color:var(--mut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\r\n.rev-item .days{background:var(--amber);color:#fff;padding:2px 8px;border-radius:20px;font-size:10.2px;font-weight:700;white-space:nowrap}\r\n.ai-empty{text-align:center;padding:34px 20px;color:var(--mut)}\r\n.ai-empty i{font-size:32px;color:var(--gold);margin-bottom:12px;display:block}\r\n.ai-empty .big{font-family:var(--serif);font-size:19.2px;color:var(--navy-ink);margin-bottom:6px}\r\n.ai-empty p{font-size:13.9px;max-width:52ch;margin:0 auto}\r\n.ai-two{display:grid;grid-template-columns:1fr 1fr;gap:18px}\r\n.perf-reset-wrap{margin-top:34px;padding:18px;border:1px dashed #f3c1c1;border-radius:var(--r-lg);background:#fffafa;display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}\r\n.perf-reset-wrap p{font-size:13.1px;color:var(--mut);flex:1;min-width:220px}\r\n.perf-reset-wrap p b{color:var(--red-d)}\r\n.perf-reset-btn{padding:11px 20px;background:#fff;border:2px solid #f3c1c1;border-radius:var(--r-md);color:var(--red-d);font-size:13.1px;font-weight:700;cursor:pointer;transition:all .25s;font-family:var(--sans);display:flex;align-items:center;gap:7px;white-space:nowrap}\r\n.perf-reset-btn:hover{background:var(--red);border-color:var(--red);color:#fff}\r\n\r\n\/* ---------- RESPONSIVE ---------- *\/\r\n@media(max-width:1024px){.quiz-container{grid-template-columns:minmax(0,1fr) 270px;gap:14px}}\r\n@media(max-width:900px){\r\n  \/* MOBILE: question first, everything else stacks below *\/\r\n  .quiz-container{grid-template-columns:1fr;padding:0 12px 12px;gap:14px}\r\n  .filter-bar{padding:12px 12px 0}\r\n  .filter-list{flex-wrap:nowrap;overflow-x:auto;padding-bottom:6px;-webkit-overflow-scrolling:touch}\r\n  .question-panel{order:1}\r\n  .dashboard-sidebar{order:2}\r\n  .gp-head-top{flex-direction:column;gap:12px}\r\n  .gp-stats{width:100%;flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px;-webkit-overflow-scrolling:touch}\r\n  .gp-stat{min-width:84px;padding:7px 12px;flex:0 0 auto}\r\n  .gp-stat .n{font-size:19.2px}\r\n  .gp-tabs{overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch}\r\n  .gp-tab{flex:0 0 auto;white-space:nowrap}\r\n  .mode-selector{flex-direction:column;align-items:stretch;padding:10px 12px}\r\n  .mode-tabs{overflow-x:auto;flex-wrap:nowrap;padding-bottom:4px;-webkit-overflow-scrolling:touch}\r\n  .mode-tab{flex:0 0 auto;white-space:nowrap}\r\n  .session-info{justify-content:center}\r\n  \/* navigator becomes a horizontal strip *\/\r\n  .question-grid{display:flex;flex-wrap:nowrap;overflow-x:auto;max-height:none;padding-bottom:6px;gap:7px;-webkit-overflow-scrolling:touch}\r\n  .grid-item{flex:0 0 40px;height:40px;aspect-ratio:auto}\r\n  .weak-question-list{max-height:150px}\r\n  .ai-hero{grid-template-columns:1fr}\r\n  .ai-two{grid-template-columns:1fr}\r\n}\r\n@media(max-width:600px){\r\n  .gp-header{padding:18px 14px 0}\r\n  .gp-brand h1{font-size:20.5px}\r\n  .gp-brand p{font-size:12.5px}\r\n  .gp-tabs{overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch}\r\n  .gp-tab{padding:9px 13px;font-size:12px;flex:0 0 auto;white-space:nowrap}\r\n  .ai-wrap{padding:6px 12px 30px}\r\n  .question-header{padding:11px 14px}\r\n  .question-number{font-size:15px}\r\n  .question-body{padding:14px}\r\n  .question-text{font-size:17px !important;padding:15px 16px;line-height:1.68}\r\n  .q-stmt{margin-left:6px;grid-template-columns:26px 1fr}\r\n  .option-item{padding:11px 12px;gap:9px}\r\n  .option-letter{min-width:30px;font-size:16.3px !important}\r\n  .option-text{font-size:16.3px !important}\r\n  .option-item:hover:not(.disabled){transform:none}\r\n  .question-nav{flex-wrap:wrap;padding:12px;gap:9px}\r\n  .nav-btn{padding:11px 16px;font-size:12.8px;flex:1;justify-content:center}\r\n  .nav-btn.check{order:-1;width:100%;max-width:none;flex-basis:100%}\r\n  .progress-combo{grid-template-columns:auto 1fr;gap:10px}\r\n  .result-stats{grid-template-columns:repeat(3,1fr);gap:7px}\r\n  .result-content{padding:22px}\r\n  .result-buttons{flex-direction:column}\r\n  .bar-row{grid-template-columns:28px 1fr;row-gap:4px}\r\n  .bar-track{grid-column:1\/-1}\r\n  .bar-name,.bar-val{grid-column:2;text-align:left}\r\n  .sec-head{flex-wrap:wrap;gap:6px}\r\n  .sec-head .hint{margin-left:0;flex-basis:100%}\r\n  .sec-head h2{font-size:16px}\r\n  .ai-ring{transform:scale(.85);margin:-8px}\r\n  .ai-ring-txt .n{font-size:33.6px}\r\n  .ai-kpis{grid-template-columns:repeat(2,1fr)}\r\n  .ai-kpi .n{font-size:20.8px}\r\n  .ai-reco{flex-wrap:wrap}\r\n  .ai-reco .go{margin-left:42px}\r\n  .warning-toast{width:calc(100% - 32px);justify-content:center;font-size:12.8px}\r\n  .gp-stat{min-width:76px}\r\n  .perf-reset-wrap{flex-direction:column;align-items:stretch}\r\n  .perf-reset-btn{justify-content:center}\r\n}\r\n\/* very small phones *\/\r\n@media(max-width:380px){\r\n  .gp-header{padding:14px 10px 0}\r\n  .gp-tab{padding:8px 10px;font-size:11.2px}\r\n  .mode-tab{padding:8px 11px;font-size:11.7px}\r\n  .question-text{font-size:16px !important;padding:12px}\r\n  .option-text,.option-letter{font-size:15.5px !important}\r\n  .ai-wrap{padding:6px 8px 24px}\r\n  .quiz-container{padding:0 8px 8px}\r\n  .filter-bar{padding:10px 8px 0}\r\n}\r\n<\/style>\r\n\r\n<div class=\"cwq-portal\" id=\"quizWrapper\">\r\n    <!-- Warning Toast -->\r\n    <div class=\"warning-toast\" id=\"warningToast\">\r\n        <span class=\"ic\">\u26a0\ufe0f<\/span>\r\n        <span id=\"toastMessage\">Message<\/span>\r\n    <\/div>\r\n\r\n    <!-- Result Modal -->\r\n    <div class=\"result-modal\" id=\"resultModal\">\r\n        <div class=\"result-content\">\r\n            <div class=\"result-icon\" id=\"resultIcon\">\ud83c\udf89<\/div>\r\n            <h2 class=\"result-title\" id=\"resultTitle\">Great Job!<\/h2>\r\n            <p class=\"result-message\" id=\"resultMessage\">You have completed the quiz.<\/p>\r\n            <div class=\"result-stats\">\r\n                <div class=\"result-stat\">\r\n                    <div class=\"result-stat-value\" id=\"resultCorrect\">0<\/div>\r\n                    <div class=\"result-stat-label\">Correct<\/div>\r\n                <\/div>\r\n                <div class=\"result-stat\">\r\n                    <div class=\"result-stat-value\" id=\"resultIncorrect\">0<\/div>\r\n                    <div class=\"result-stat-label\">Incorrect<\/div>\r\n                <\/div>\r\n                <div class=\"result-stat\">\r\n                    <div class=\"result-stat-value\" id=\"resultScore\">0%<\/div>\r\n                    <div class=\"result-stat-label\">Score<\/div>\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"result-buttons\">\r\n                <button class=\"result-btn secondary\" id=\"reviewBtn\"><span class=\"ic\">\ud83d\udc41<\/span> Review<\/button>\r\n                <button class=\"result-btn weak\" id=\"practiceWeakBtn\" style=\"display:none;\"><span class=\"ic\">\u26a0\ufe0f<\/span> Practice Weak<\/button>\r\n                <button class=\"result-btn primary\" id=\"retryBtn\"><span class=\"ic\">\u21bb<\/span> Try Again<\/button>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- ================= HEADER ================= -->\r\n    <header class=\"gp-header\">\r\n        <div class=\"gp-head-top\">\r\n            <div class=\"gp-brand\">\r\n                <div class=\"eyebrow\" id=\"topicEyebrow\">CSS ADDA \u00b7 PromotionExams.com<\/div>\r\n                <h1 id=\"topicName\">Public Procurement (Preference to Make in India) Order<\/h1>\r\n                <p>Chapter-wise MCQs \u00b7 Smart Practice, Weak-Area Drills &amp; AI Coach<\/p>\r\n            <\/div>\r\n            <div class=\"gp-stats\">\r\n                <div class=\"gp-stat\"><div class=\"n\" id=\"hdrTotalQ\">0<\/div><div class=\"l\">MCQs<\/div><\/div>\r\n                <div class=\"gp-stat\"><div class=\"n\" id=\"hdrChapters\">0<\/div><div class=\"l\">Chapters<\/div><\/div>\r\n                <div class=\"gp-stat\"><div class=\"n\" id=\"hdrMastered\">0%<\/div><div class=\"l\">Mastered<\/div><\/div>\r\n                <div class=\"gp-stat clickable\" id=\"weakBadgeHeader\" style=\"display:none;\"><div class=\"n\" id=\"weakCountHeader\">0<\/div><div class=\"l\">Weak Areas<\/div><\/div>\r\n                <div class=\"gp-stat\"><div class=\"n\" id=\"hdrReadiness\">\u2014<\/div><div class=\"l\">Readiness<\/div><\/div>\r\n            <\/div>\r\n        <\/div>\r\n        <nav class=\"gp-tabs\">\r\n            <button class=\"gp-tab active\" data-view=\"practice\"><span class=\"ic\">\u270d\ufe0f<\/span> Practice Quiz<\/button>\r\n            <button class=\"gp-tab\" data-view=\"performance\"><span class=\"ic\">\ud83e\udde0<\/span> My Performance <span class=\"pill\" id=\"perfPill\" style=\"display:none;\">!<\/span><\/button>\r\n        <\/nav>\r\n    <\/header>\r\n\r\n    <!-- ================= VIEW 1 : PRACTICE QUIZ ================= -->\r\n    <div class=\"gp-view active\" id=\"view-practice\">\r\n\r\n    <!-- Mode Selector -->\r\n    <div class=\"mode-selector\">\r\n        <div class=\"mode-tabs\">\r\n            <button class=\"mode-tab active\" data-mode=\"all\" id=\"modeAll\">\r\n                <span class=\"ic\">\ud83d\udccb<\/span> All Questions <span class=\"badge\" id=\"allCount\">0<\/span>\r\n            <\/button>\r\n            <button class=\"mode-tab\" data-mode=\"chapter\" id=\"modeChapter\">\r\n                <span class=\"ic\">\ud83d\udcda<\/span> By Chapter\r\n            <\/button>\r\n            <button class=\"mode-tab weak-mode\" data-mode=\"weak\" id=\"modeWeak\">\r\n                <span class=\"ic\">\u26a0\ufe0f<\/span> Weak Areas <span class=\"badge\" id=\"weakModeCount\">0<\/span>\r\n            <\/button>\r\n        <\/div>\r\n        <div class=\"session-info\" id=\"sessionInfo\" style=\"display:none;\">\r\n            <span class=\"ic\">\ud83d\udd58<\/span>\r\n            <span id=\"sessionText\">Last session: Q5<\/span>\r\n            <button class=\"resume-btn\" id=\"resumeBtn\"><span class=\"ic\">\u25b6<\/span> Resume<\/button>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- FILTER BAR (before the MCQ content) -->\r\n    <div class=\"filter-bar\">\r\n        <div class=\"filter-bar-row\">\r\n            <div class=\"quiz-card\" id=\"chapterFilterCard\">\r\n                <div class=\"quiz-card-header light\"><h3><span class=\"ic\">\ud83d\udcda<\/span> Filter by Chapter<\/h3><\/div>\r\n                <div class=\"quiz-card-body\" style=\"padding:10px 14px\"><div class=\"filter-list\" id=\"chapterList\"><\/div><\/div>\r\n            <\/div>\r\n            <div class=\"quiz-card weak-areas-card\" id=\"weakAreasCard\" style=\"display:none;\">\r\n                <div class=\"quiz-card-header\"><h3><span class=\"ic\">\u26a0\ufe0f<\/span> Weak Areas<\/h3><\/div>\r\n                <div class=\"quiz-card-body\" style=\"padding:10px 14px\">\r\n                    <div class=\"weak-question-list\" id=\"weakQuestionList\"><\/div>\r\n                    <button class=\"practice-weak-btn\" id=\"practiceWeakAreasBtn\"><span class=\"ic\">\u21bb<\/span> Practice All Weak Areas<\/button>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- Main Container -->\r\n    <div class=\"quiz-container\">\r\n        <!-- Question Panel (primary) -->\r\n        <main class=\"question-panel\">\r\n            <div class=\"question-header\">\r\n                <span class=\"question-number\" id=\"questionNumber\">Question 1 of 20<\/span>\r\n                <div class=\"question-meta\">\r\n                    <div class=\"meta-badge chapter\"><span class=\"ic\">\ud83d\udcd6<\/span> <span id=\"currentQuestionChapter\">\u2014<\/span><\/div>\r\n                    <div class=\"meta-badge weak\" id=\"weakBadge\" style=\"display:none;\"><span class=\"ic\">\u26a0\ufe0f<\/span> <span>Weak<\/span><\/div>\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"question-body\">\r\n                <div class=\"question-text\" id=\"questionText\">Loading question...<\/div>\r\n                <div class=\"options-list\" id=\"optionsList\"><\/div>\r\n                <div class=\"explanation-box\" id=\"explanationBox\">\r\n                    <div class=\"explanation-title\"><span class=\"ic\">\ud83d\udca1<\/span> Explanation<\/div>\r\n                    <p class=\"explanation-text\" id=\"explanationText\"><\/p>\r\n                <\/div>\r\n                <div class=\"mastery-indicator\" id=\"masteryIndicator\">\r\n                    <span class=\"mastery-label\"><span class=\"ic\">\u2b50<\/span> Mastery:<\/span>\r\n                    <div class=\"mastery-stars\" id=\"masteryStars\">\r\n                        <i>\u2605<\/i><i>\u2605<\/i><i>\u2605<\/i><i>\u2605<\/i><i>\u2605<\/i>\r\n                    <\/div>\r\n                <\/div>\r\n                <div class=\"question-nav\">\r\n                    <button class=\"nav-btn prev\" id=\"prevBtn\"><span class=\"ic\">\u2190<\/span> Previous<\/button>\r\n                    <button class=\"nav-btn check\" id=\"checkBtn\"><span class=\"ic\">\u2713<\/span> Check Answer<\/button>\r\n                    <button class=\"nav-btn next\" id=\"nextBtn\">Next <span class=\"ic\">\u2192<\/span><\/button>\r\n                <\/div>\r\n            <\/div>\r\n        <\/main>\r\n\r\n        <!-- Right Rail: navigator \u2192 progress \u2192 actions -->\r\n        <aside class=\"dashboard-sidebar\">\r\n            <div class=\"quiz-card\">\r\n                <div class=\"quiz-card-header light\"><h3><span class=\"ic\">\ud83d\uddc2\ufe0f<\/span> Question Navigator<\/h3><\/div>\r\n                <div class=\"quiz-card-body\">\r\n                    <div class=\"question-grid\" id=\"questionGrid\"><\/div>\r\n                    <div class=\"legend\">\r\n                        <div class=\"legend-items\">\r\n                            <div class=\"legend-item\"><div class=\"legend-color unattempted\"><\/div><span>New<\/span><\/div>\r\n                            <div class=\"legend-item\"><div class=\"legend-color attempted\"><\/div><span>Seen<\/span><\/div>\r\n                            <div class=\"legend-item\"><div class=\"legend-color correct\"><\/div><span>Correct<\/span><\/div>\r\n                            <div class=\"legend-item\"><div class=\"legend-color incorrect\"><\/div><span>Incorrect<\/span><\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"quiz-card\">\r\n                <div class=\"quiz-card-header\"><h3><span class=\"ic\">\ud83c\udfc6<\/span> Progress &amp; Session<\/h3><\/div>\r\n                <div class=\"quiz-card-body\">\r\n                    <div class=\"progress-combo\">\r\n                        <div class=\"progress-ring-container\">\r\n                            <div class=\"progress-ring\">\r\n                                <svg width=\"100\" height=\"100\">\r\n                                    <circle class=\"progress-ring-bg\" cx=\"50\" cy=\"50\" r=\"42\"><\/circle>\r\n                                    <circle class=\"progress-ring-fill\" cx=\"50\" cy=\"50\" r=\"42\" stroke-dasharray=\"264\" stroke-dashoffset=\"264\" id=\"progressRingFill\"><\/circle>\r\n                                <\/svg>\r\n                                <div class=\"progress-ring-text\">\r\n                                    <span class=\"progress-ring-percentage\" id=\"progressPercentage\">0%<\/span>\r\n                                    <span class=\"progress-ring-label\">Mastered<\/span>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"stat-col\">\r\n                            <div class=\"stat-row\"><span class=\"stat-label\">Questions<\/span><span class=\"stat-value\" id=\"totalQuestions\">0<\/span><\/div>\r\n                            <div class=\"stat-row\"><span class=\"stat-label\">Attempted<\/span><span class=\"stat-value\" id=\"attemptedCount\">0<\/span><\/div>\r\n                            <div class=\"stat-row\"><span class=\"stat-label\">Correct<\/span><span class=\"stat-value correct\" id=\"correctCount\">0<\/span><\/div>\r\n                            <div class=\"stat-row\"><span class=\"stat-label\">Incorrect<\/span><span class=\"stat-value incorrect\" id=\"incorrectCount\">0<\/span><\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                    <div class=\"progress-stats-mini\" style=\"margin-top:10px\">\r\n                        <div class=\"progress-stat-mini\"><div class=\"value correct\" id=\"totalCorrectProgress\">0<\/div><div class=\"label\">Lifetime Correct<\/div><\/div>\r\n                        <div class=\"progress-stat-mini\"><div class=\"value incorrect\" id=\"totalWeakProgress\">0<\/div><div class=\"label\">Weak Areas<\/div><\/div>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"action-buttons\">\r\n                <button class=\"action-btn submit\" id=\"submitBtn\"><span class=\"ic\">\ud83d\udce4<\/span> Submit &amp; View Results<\/button>\r\n                <button class=\"action-btn reset\" id=\"resetBtn\"><span class=\"ic\">\u21ba<\/span> Reset Session<\/button>\r\n                <p class=\"reset-note\">Resets only this session's answers.<br>Lifetime performance &amp; mastery are kept.<\/p>\r\n            <\/div>\r\n        <\/aside>\r\n    <\/div>\r\n    <\/div><!-- \/view-practice -->\r\n\r\n    <!-- ================= VIEW 2 : MY PERFORMANCE (AI COACH) ================= -->\r\n    <div class=\"gp-view\" id=\"view-performance\">\r\n        <div class=\"ai-wrap\">\r\n            <div id=\"aiEmptyState\" class=\"an-card ai-empty\" style=\"display:none;margin-top:24px;\">\r\n                <span class=\"ic\" style=\"font-size:32px\">\ud83e\udde0<\/span>\r\n                <div class=\"big\">Your AI coach is waiting for data<\/div>\r\n                <p>Attempt a few questions in the Practice tab. The coach will then compute your readiness score, detect weak chapters weighted by their share of the question bank, and build a personalised study plan.<\/p>\r\n            <\/div>\r\n\r\n            <div id=\"aiContent\">\r\n                <div class=\"sec-head\" style=\"margin-top:24px;\"><span class=\"num\">01<\/span><h2>Readiness \u2014 AI Assessment<\/h2><span class=\"hint\">weighted by chapter share of the bank<\/span><\/div>\r\n                <div class=\"ai-hero\">\r\n                    <div class=\"ai-ring-card\">\r\n                        <div class=\"ai-ring\">\r\n                            <svg width=\"150\" height=\"150\">\r\n                                <circle class=\"bg\" cx=\"75\" cy=\"75\" r=\"64\"><\/circle>\r\n                                <circle class=\"fg\" cx=\"75\" cy=\"75\" r=\"64\" stroke-dasharray=\"402\" stroke-dashoffset=\"402\" id=\"aiRingFill\"><\/circle>\r\n                            <\/svg>\r\n                            <div class=\"ai-ring-txt\"><span class=\"n\" id=\"aiScore\">0<\/span><span class=\"l\">Readiness \/ 100<\/span><\/div>\r\n                        <\/div>\r\n                        <div class=\"ai-verdict\" id=\"aiVerdict\"><\/div>\r\n                    <\/div>\r\n                    <div class=\"ai-coach-card\">\r\n                        <h3><span class=\"ic\">\ud83e\ude84<\/span> Smart Study Plan \u2014 What to do next<\/h3>\r\n                        <div id=\"aiRecoList\"><\/div>\r\n                    <\/div>\r\n                <\/div>\r\n                <div class=\"ai-kpis\" id=\"aiKpis\"><\/div>\r\n\r\n                <div class=\"sec-head\"><span class=\"num\">02<\/span><h2>Chapter Performance vs Chapter Weight<\/h2><span class=\"hint\">priority = high weight \u00d7 low accuracy<\/span><\/div>\r\n                <div class=\"tbl-scroll\"><table class=\"perf\">\r\n                    <thead><tr><th>Chapter<\/th><th>Weight<\/th><th>Coverage<\/th><th>Accuracy<\/th><th>Status<\/th><th>Action<\/th><\/tr><\/thead>\r\n                    <tbody id=\"perfTableBody\"><\/tbody>\r\n                <\/table><\/div>\r\n\r\n                <div class=\"ai-two\" style=\"margin-top:34px;\">\r\n                    <div>\r\n                        <div class=\"sec-head\" style=\"margin-top:0;\"><span class=\"num\">03<\/span><h2>Revision Queue<\/h2><span class=\"hint\">spaced repetition<\/span><\/div>\r\n                        <div class=\"an-card\" id=\"revisionQueue\"><\/div>\r\n                    <\/div>\r\n                    <div>\r\n                        <div class=\"sec-head\" style=\"margin-top:0;\"><span class=\"num\">04<\/span><h2>Mastery Distribution<\/h2><\/div>\r\n                        <div class=\"an-card\" id=\"masteryDist\"><\/div>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <!-- Performance reset (lifetime data) -->\r\n                <div class=\"perf-reset-wrap\">\r\n                    <p><b>Danger zone:<\/b> this permanently erases your lifetime performance for this quiz \u2014 mastery stars, weak areas, accuracy history and the readiness score. Session reset on the Practice tab does <b>not<\/b> touch this data.<\/p>\r\n                    <button class=\"perf-reset-btn\" id=\"resetPerfBtn\"><span class=\"ic\">\ud83d\uddd1\ufe0f<\/span> Reset My Performance<\/button>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div><!-- \/view-performance -->\r\n<\/div>\r\n<script>\r\n\/\/ ==========================================\r\n\/\/ QUIZ CONFIGURATION  \u2190 EDIT PER TOPIC\r\n\/\/ ==========================================\r\nconst quizConfig = {\r\n    \/\/ UNIQUE id per topic. Progress is stored in localStorage under this key,\r\n    \/\/ so two quizzes MUST NOT share the same quizId.\r\n    quizId: 'CHANGE-ME-chapterwise-quiz',\r\n    topic: 'Public Procurement (Preference to Make in India) Order',                     \/\/ \u2190 shown in header h1\r\n    paper: 'Paper 5',                        \/\/ \u2190 shown in header eyebrow\r\n    masteryThreshold: 3,   \/\/ total correct needed for \"mastered\"\r\n    weakThreshold: 1,      \/\/ wrong attempts before a question is flagged weak\r\n    revisionGapDays: 7     \/\/ days after which a mastered Q re-enters revision\r\n};\r\n\r\n\/\/ ==========================================\r\n\/\/ QUESTIONS DATA  \u2190 PASTE YOUR QUESTION BANK HERE\r\n\/\/ ------------------------------------------\r\n\/\/ Each question object looks like this:\r\n\/\/ {\r\n\/\/   id: 1,                                  \/\/ unique number across the bank\r\n\/\/   chapter: 'Ch 1: Chapter Name',          \/\/ chapter label (used by filter,\r\n\/\/                                           \/\/ performance table & AI coach)\r\n\/\/   question: \"Question text...\\n1. Statement one\\n2. Statement two\\nSelect the correct answer using the code given below:\",\r\n\/\/   options: [\"Option A\", \"Option B\", \"Option C\", \"Option D\"],\r\n\/\/   correct: 2,                             \/\/ 0-based index of the right option\r\n\/\/   explanation: \"Explanation text shown after checking the answer.\"\r\n\/\/ },\r\n\/\/ Numbered statements: start a line with \"1.\" \/ \"2.\" etc (use \\n or <br>).\r\n\/\/ Lines starting with \"Select the correct answer\u2026\" \/ \"Which of the above\u2026\"\r\n\/\/ are auto-styled as the lead line, UPSC question-paper style.\r\n\/\/ NOTE: No 'year' field \u2014 this template is chapter-wise only.\r\n\/\/ ==========================================\r\n\/\/ ============================================================================\r\n\/\/ PUBLIC PROCUREMENT (PREFERENCE TO MAKE IN INDIA), ORDER 2017 \u2014 Revised 19.07.2024\r\n\/\/ Combined MCQ bank (40 questions): concept-based (1-30) + crisp-fact (31-40).\r\n\/\/ Zero fabrication; every option\/key\/explanation traceable to the Order.\r\n\/\/ ============================================================================\r\n\r\nconst allQuestions = [\r\n\r\n{\r\n    id: 1,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"The 'Public Procurement (Preference to Make in India), Order 2017' is issued pursuant to which provision of the General Financial Rules, 2017?\",\r\n    options: [\r\n      \"Rule 153(iii)\",\r\n      \"Rule 130\",\r\n      \"Rule 161(iv)\",\r\n      \"Rule 151(iii)\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 1 of the Order.<\/b><br>The Order is issued pursuant to <b>Rule 153(iii)<\/b> of the GFR 2017.<br><br>The distractors are all real GFR rules cited elsewhere in the same Order, used as plausible near-misses: <b>Rule 130<\/b> defines 'Works', <b>Rule 161(iv)<\/b> governs global tender enquiry, and <b>Rule 151(iii)<\/b> governs debarment \u2014 none of these is the enabling rule for the Order itself.\"\r\n  },\r\n\r\n  {\r\n    id: 2,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"For the purposes of the Order, 'local content' means the amount of value added in India, which shall (unless otherwise prescribed by the Nodal Ministry) be:\",\r\n    options: [\r\n      \"The total value of the item procured (excluding net domestic indirect taxes) minus the value of imported content (including all customs duties), as a proportion of the total value, in percent\",\r\n      \"The total value of the item procured (including net domestic indirect taxes) minus the value of imported content (excluding customs duties), as a proportion of the total value, in percent\",\r\n      \"The value of imported content as a proportion of the total value of the item procured, in percent\",\r\n      \"The total value of the item procured minus the profit margin of the supplier, in percent\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 2 (Definitions), 'Local content'.<\/b><br>Local content is the total value of the item procured <b>excluding net domestic indirect taxes<\/b>, minus the value of imported content <b>including all customs duties<\/b>, as a proportion of the total value, in percent.<br><br>(b) reverses the two tax treatments (indirect taxes and customs duties). (c) measures the imported content instead of the value added in India. (d) substitutes an irrelevant 'profit margin' basis not mentioned in the Order.\"\r\n  },\r\n\r\n  {\r\n    id: 3,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"As per the explanatory notes for calculation of local content, which of the following shall be excluded from the calculation of local content?\\n1. Imported items sourced locally from resellers\/distributors\\n2. License fees, royalties and technical charges paid out of India\\n3. Procurement\/supply of repackaged, refurbished or rebranded imported products\\nSelect the correct answer using the code given below:\",\r\n    options: [\r\n      \"1, 2 and 3\",\r\n      \"1 and 2 only\",\r\n      \"2 and 3 only\",\r\n      \"1 and 3 only\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 2, Explanatory notes (a), (b) and (c).<\/b><br>Statement 1 \u2713 \u2014 imported items sourced locally from resellers\/distributors are excluded.<br>Statement 2 \u2713 \u2014 license fees\/royalties\/technical charges paid out of India are excluded.<br>Statement 3 \u2713 \u2014 repackaged\/refurbished\/rebranded imported products are treated as reselling of imported products and excluded.<br><br>All three are excluded, so the answer is 1, 2 and 3.\"\r\n  },\r\n\r\n  {\r\n    id: 4,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"Match the following terms with their meaning under the Order, and select the correct answer:\\nList-I (Term)\\nA. Refurbishing\\nB. Repackaging\\nC. Rebranding\\nList-II (Meaning)\\n1. Repacking of imported goods from bulk pack to smaller packs\\n2. Relabeling or renaming or change in symbol or logo\/makes or corporate image\\n3. Repair or reconditioning of an imported product\",\r\n    options: [\r\n      \"A-3, B-1, C-2\",\r\n      \"A-1, B-3, C-2\",\r\n      \"A-3, B-2, C-1\",\r\n      \"A-2, B-1, C-3\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 2, Explanatory note (c).<\/b><br>A\u20133: <b>Refurbishing<\/b> means repair or reconditioning of an imported product, which does not amount to manufacture as no new goods come into existence.<br>B\u20131: <b>Repackaging<\/b> means repacking of imported goods from bulk pack to smaller packs, which would not ordinarily amount to manufacture of a new item.<br>C\u20132: <b>Rebranding<\/b> means relabeling or renaming or change in symbol or logo\/makes or corporate image.\"\r\n  },\r\n\r\n  {\r\n    id: 5,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"Under the Order, a 'Non-local supplier' means a supplier whose goods, services or works offered for procurement have local content:\",\r\n    options: [\r\n      \"Less than that prescribed for a 'Class-II local supplier'\",\r\n      \"Less than that prescribed for a 'Class-I local supplier' but not less than that for 'Class-II local supplier'\",\r\n      \"Equal to that prescribed for a 'Class-II local supplier'\",\r\n      \"Less than fifty percent\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 2 (Definitions), 'Non-local supplier'.<\/b><br>A Non-local supplier is one whose local content is <b>less than that prescribed for a 'Class-II local supplier'<\/b>.<br><br>(b) describes a 'Class-II local supplier' (meets the Class-II minimum but less than Class-I). (c) is wrong \u2014 a Non-local supplier falls below, not equal to, the Class-II threshold. (d) fixes an absolute 50% figure, but the definition is framed relative to the Class-II threshold (which is a minimum of 20%), not 50%.\"\r\n  },\r\n\r\n  {\r\n    id: 6,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"Consider the following statements regarding the minimum local content requirement:\\n1. The local content requirement to categorize a supplier as 'Class-I local supplier' is a minimum of 50%.\\n2. The local content requirement to categorize a supplier as 'Class-II local supplier' is a minimum of 20%.\\n3. A Nodal Ministry\/Department may prescribe only a higher percentage of minimum local content to categorize a supplier.\\nWhich of the statements given above are correct?\",\r\n    options: [\r\n      \"1, 2 and 3\",\r\n      \"1 and 2 only\",\r\n      \"2 and 3 only\",\r\n      \"1 and 3 only\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 5 (Minimum local content).<\/b><br>Statement 1 \u2713 \u2014 Class-I minimum is <b>50%<\/b>.<br>Statement 2 \u2713 \u2014 Class-II minimum is <b>20%<\/b>.<br>Statement 3 \u2713 \u2014 a Nodal Ministry may prescribe only a <b>higher<\/b> percentage; where none is prescribed, it remains 50% and 20% respectively.<br><br>All three are correct. Note the key word 'higher' in statement 3 \u2014 the Nodal Ministry cannot prescribe a lower minimum through this route.\"\r\n  },\r\n\r\n  {\r\n    id: 7,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"The margin of purchase preference under the Order shall be:\",\r\n    options: [\r\n      \"20%\",\r\n      \"15%\",\r\n      \"25%\",\r\n      \"10%\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 6 (Margin of Purchase Preference).<\/b><br>The margin of purchase preference shall be <b>20%<\/b> \u2014 this is the maximum extent to which the price quoted by a 'Class-I local supplier' may be above L1 for the purpose of purchase preference.<br><br>The distractors are plausible round percentages, but the Order fixes the margin at 20%.\"\r\n  },\r\n\r\n  {\r\n    id: 8,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"Notwithstanding anything contained in paragraph 3, procurement is exempt from the Order where the estimated value to be procured is less than:\",\r\n    options: [\r\n      \"Rs. 5 lakhs\",\r\n      \"Rs. 10 lakhs\",\r\n      \"Rs. 5 crore\",\r\n      \"Rs. 10 crore\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 4 (Exemption of small purchases).<\/b><br>Procurement where the estimated value is less than <b>Rs. 5 lakhs<\/b> is exempt from the Order; however, procurement must not be split to avoid the provisions.<br><br>(d) Rs. 10 crore is the threshold for the <b>auditor's certificate<\/b> on local content (Para 9), an adjacent figure used as a distractor. (b) and (c) do not appear in this context.\"\r\n  },\r\n\r\n  {\r\n    id: 9,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"In cases of procurement for a value in excess of which amount is a 'Class-I local supplier'\/'Class-II local supplier' required to provide a certificate from the statutory auditor or cost auditor (or a practising cost\/chartered accountant) giving the percentage of local content?\",\r\n    options: [\r\n      \"Rs. 10 crores\",\r\n      \"Rs. 5 lakhs\",\r\n      \"Rs. 200 crore\",\r\n      \"Rs. 1000 crore\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 9(b) (Verification of local content).<\/b><br>Where procurement value exceeds <b>Rs. 10 crores<\/b>, the supplier must provide a certificate from the statutory auditor or cost auditor (for companies), or from a practising cost accountant or practising chartered accountant (for others), giving the percentage of local content.<br><br>(b) Rs. 5 lakhs is the small-purchase exemption; (c) Rs. 200 crore relates to global tender enquiry; (d) Rs. 1000 crore relates to notifying procurement projections \u2014 all real figures from the Order, wrongly attributed here.\"\r\n  },\r\n\r\n  {\r\n    id: 10,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"Consider the following statements regarding verification of local content where a contractor\/supplier does not meet the stipulated local content requirement and the category of the supplier changes:\\n1. A penalty of up to 10% of the contract value may be imposed.\\n2. The contract, once awarded, shall be terminated on this account.\\nWhich of the statements given above is\/are correct?\",\r\n    options: [\r\n      \"1 only\",\r\n      \"2 only\",\r\n      \"Both 1 and 2\",\r\n      \"Neither 1 nor 2\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 9(c) (Verification of local content).<\/b><br>Statement 1 \u2713 \u2014 a penalty of <b>up to 10%<\/b> of the contract value may be imposed where the supplier fails to meet the requirement and its category changes (e.g. Class-I to Class-II\/Non-local).<br>Statement 2 \u2717 \u2014 the Order expressly provides that the contract, once awarded, <b>shall not be terminated<\/b> on this account. The reversed polarity makes statement 2 false.<br><br>Hence only statement 1 is correct.\"\r\n  },\r\n\r\n  {\r\n    id: 11,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"A false declaration regarding local content is treated as a breach of the Code of Integrity under the General Financial Rules, for which a bidder or its successors can be debarred for up to:\",\r\n    options: [\r\n      \"Two years, as per Rule 151(iii) of the GFR\",\r\n      \"One year, as per Rule 153(iii) of the GFR\",\r\n      \"Three years, as per Rule 161(iv) of the GFR\",\r\n      \"Five years, as per Rule 130 of the GFR\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 9(g) (Verification of local content).<\/b><br>A false declaration breaches the Code of Integrity under <b>Rule 175(1)(i)(h)<\/b> of the GFR, and the bidder can be debarred for up to <b>two years as per Rule 151(iii)<\/b> of the GFR.<br><br>The distractors combine wrong durations with real-but-unrelated GFR rules: Rule 153(iii) is the Order's enabling rule, Rule 161(iv) concerns global tenders, and Rule 130 defines 'Works'.\"\r\n  },\r\n\r\n  {\r\n    id: 12,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"For the purposes of applying the Order, which of the following is expressly included within the meaning of 'works'?\",\r\n    options: [\r\n      \"Turnkey works\",\r\n      \"Maintenance and service contracts with the Original Equipment Manufacturer\",\r\n      \"Procurement of spare parts for closed systems\",\r\n      \"System Integrator (SI) contracts\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 2 (Definitions), 'Works'.<\/b><br>'Works' means all works as per Rule 130 of GFR 2017 and expressly <b>includes 'turnkey works'<\/b>.<br><br>(b) and (c) are items expressly <b>exempted<\/b> from the Order (Para 4A), not part of the definition of works. (d) 'System Integrator contracts' are included within <b>services<\/b>, not works (Para 3(c)).\"\r\n  },\r\n\r\n  {\r\n    id: 13,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"For procurement of goods, services or works with an estimated value of purchases below a specified amount, a Global tender enquiry shall not be issued except with the approval of the competent authority designated by the Department of Expenditure. That specified value is:\",\r\n    options: [\r\n      \"Rs. 200 Crore\",\r\n      \"Rs. 100 Crore\",\r\n      \"Rs. 500 Crore\",\r\n      \"Rs. 1000 Crore\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 3(b) read with Rule 161(iv), GFR 2017.<\/b><br>For purchases of estimated value less than <b>Rs. 200 Crore<\/b>, a Global tender enquiry shall not be issued except with the approval of the competent authority designated by the Department of Expenditure.<br><br>(d) Rs. 1000 Crore is the threshold for notifying procurement projections (Para 10) \u2014 an adjacent figure used as a distractor. (b) and (c) do not appear in this context.\"\r\n  },\r\n\r\n  {\r\n    id: 14,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"In procurement of all goods, services or works in respect of which the Nodal Ministry has communicated that there is sufficient local capacity and local competition, only 'Class-I local supplier' shall be eligible to bid:\",\r\n    options: [\r\n      \"Irrespective of the purchase value\",\r\n      \"Only where the purchase value exceeds Rs. 5 lakhs\",\r\n      \"Only where the purchase value exceeds Rs. 200 crore\",\r\n      \"Only in a global tender enquiry\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 3(a) (Eligibility).<\/b><br>Where the Nodal Ministry has communicated sufficient local capacity and local competition, only 'Class-I local supplier' is eligible to bid <b>irrespective of the purchase value<\/b>.<br><br>(b) and (c) invent value thresholds the sub-para does not impose. (d) is the opposite of the intent \u2014 in global tender enquiries even Non-local suppliers may bid; Para 3(a) instead restricts eligibility to Class-I regardless of value.\"\r\n  },\r\n\r\n  {\r\n    id: 15,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"Consider the following statements regarding eligibility to bid under the Order:\\n1. Ordinarily, only 'Class-I local supplier' and 'Class-II local supplier' are eligible to bid in procurement undertaken by procuring entities.\\n2. In a global tender enquiry, 'Non-local suppliers' shall also be eligible to bid along with 'Class-I' and 'Class-II' local suppliers.\\n3. 'Class-II local supplier' will get purchase preference over 'Non-local supplier' in every procurement.\\nWhich of the statements given above are correct?\",\r\n    options: [\r\n      \"1 and 2 only\",\r\n      \"1 and 3 only\",\r\n      \"2 and 3 only\",\r\n      \"1, 2 and 3\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Paras 3(b) and 3A(d).<\/b><br>Statement 1 \u2713 \u2014 ordinarily only Class-I and Class-II local suppliers are eligible, except where a global tender enquiry is issued.<br>Statement 2 \u2713 \u2014 in global tender enquiries, Non-local suppliers are also eligible.<br>Statement 3 \u2717 \u2014 Para 3A(d) states that a 'Class-II local supplier' will <b>NOT<\/b> get purchase preference in any procurement. The added entitlement makes statement 3 false.<br><br>Hence only 1 and 2 are correct.\"\r\n  },\r\n\r\n  {\r\n    id: 16,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"In the procurement of divisible goods or works where a purchase preference for 'Class-I local supplier' is applicable, the lowest bid (L1) is NOT from a 'Class-I local supplier'. The procedure provides that:\",\r\n    options: [\r\n      \"50% of the order quantity shall be awarded to L1, and the lowest 'Class-I local supplier' shall then be invited to match the L1 price for the remaining 50%, subject to being within the margin of purchase preference\",\r\n      \"100% of the order quantity shall be awarded to L1 without any purchase preference\",\r\n      \"The entire quantity shall be awarded to the lowest 'Class-I local supplier' at its quoted price\",\r\n      \"The tender shall be cancelled and re-issued as a global tender enquiry\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 3A(b)(ii).<\/b><br>For divisible items, if L1 is not a Class-I local supplier, <b>50%<\/b> of the order quantity is awarded to L1; thereafter the lowest Class-I local supplier is invited to match the L1 price for the remaining 50%, subject to its quoted price falling within the margin of purchase preference.<br><br>(b) ignores the purchase-preference mechanism entirely. (c) wrongly awards the whole quantity to the Class-I supplier at its own price. (d) invents a cancellation not provided for.\"\r\n  },\r\n\r\n  {\r\n    id: 17,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"Under the special treatment for items covered under the PLI Scheme, a manufacturer manufacturing an item under the PLI scheme (having received incentive from the concerned PLI Ministry) shall be treated as:\",\r\n    options: [\r\n      \"A deemed Class-II local supplier, unless it has minimum local content equal to or higher than that notified for Class-I local supplier for that item\",\r\n      \"A deemed Class-I local supplier in all cases\",\r\n      \"A Non-local supplier until it achieves 50% local content\",\r\n      \"Exempt from the Order for the entire duration of the PLI scheme\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 2A (Special treatment for items under PLI Scheme).<\/b><br>Such a manufacturer is treated as a <b>deemed Class-II local supplier<\/b> for that item, unless it has minimum local content equal to or higher than that notified for Class-I local supplier \u2014 in which case it qualifies as Class-I. This applies for the specific time period notified by the concerned PLI Ministry.<br><br>(b) overstates the treatment (deemed Class-I in all cases). (c) and (d) invent categorisations and exemptions not provided in Para 2A.\"\r\n  },\r\n\r\n  {\r\n    id: 18,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"Match the following members of the Standing Committee with their roles under the Order, and select the correct answer:\\nList-I (Member)\\nA. Secretary, DPIIT\\nB. Joint Secretary (DPIIT)\\nC. Joint Secretary (Public Procurement), Department of Expenditure\\nList-II (Role)\\n1. Member-Convenor\\n2. Chairman\\n3. Member\",\r\n    options: [\r\n      \"A-2, B-1, C-3\",\r\n      \"A-1, B-2, C-3\",\r\n      \"A-2, B-3, C-1\",\r\n      \"A-3, B-1, C-2\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 16 (Standing Committee).<\/b><br>A\u20132: <b>Secretary, DPIIT<\/b> is the Chairman.<br>B\u20131: <b>Joint Secretary (DPIIT)<\/b> is the Member-Convenor.<br>C\u20133: <b>Joint Secretary (Public Procurement), Department of Expenditure<\/b> is a Member (along with Secretary, Commerce and Secretary, MeitY).<br><br>The distractors swap the Chairman\/Convenor\/Member roles among these officials.\"\r\n  },\r\n\r\n  {\r\n    id: 19,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"The Standing Committee constituted under the Order shall meet as often as necessary, but not less than:\",\r\n    options: [\r\n      \"Once in six months\",\r\n      \"Once in three months\",\r\n      \"Once in a year\",\r\n      \"Once in two months\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 17 (Functions of the Standing Committee).<\/b><br>The Committee shall meet as often as necessary, but <b>not less than once in six months<\/b>.<br><br>The distractors are plausible meeting frequencies, but the Order fixes the minimum at once in six months.\"\r\n  },\r\n\r\n  {\r\n    id: 20,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"Administrative Ministries\/Departments whose procurement exceeds a specified amount per annum shall notify\/update their procurement projections every year, including those of PSEs\/PSUs, on their respective website for the next 5 years. That specified amount is:\",\r\n    options: [\r\n      \"Rs. 1000 Crore per annum\",\r\n      \"Rs. 200 Crore per annum\",\r\n      \"Rs. 500 Crore per annum\",\r\n      \"Rs. 10 Crore per annum\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 10(f).<\/b><br>Administrative Ministries\/Departments whose procurement exceeds <b>Rs. 1000 Crore per annum<\/b> shall notify\/update their procurement projections every year, including those of PSEs\/PSUs, for the next 5 years on their website.<br><br>(b) Rs. 200 Crore relates to the global tender enquiry threshold; (d) Rs. 10 Crore relates to auditor certification \u2014 both are real figures from the Order used as distractors.\"\r\n  },\r\n\r\n  {\r\n    id: 21,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"Procuring entities are required to review all existing eligibility norms and conditions with reference to prior-experience and unreasonable-exclusion provisions within what period of the issue of the Order?\",\r\n    options: [\r\n      \"2 months\",\r\n      \"1 month\",\r\n      \"6 months\",\r\n      \"1 year\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 10(c) (Specifications in tenders and other procurement solicitations).<\/b><br>Procuring entities shall, within <b>2 months<\/b> of the issue of the Order, review all existing eligibility norms and conditions with reference to sub-paragraphs (a) and (b).<br><br>The distractors are plausible review periods, but the Order specifies 2 months.\"\r\n  },\r\n\r\n  {\r\n    id: 22,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"Where a Ministry or Department has its own policy for preference to local content approved by the Cabinet, such policy will prevail over the provisions of this Order only if it was approved after:\",\r\n    options: [\r\n      \"1st January 2015\",\r\n      \"15th June 2017\",\r\n      \"1st January 2017\",\r\n      \"19th July 2024\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 19 (Ministries having existing policies).<\/b><br>A Ministry\/Department's own Cabinet-approved policy prevails over this Order only if it was approved <b>after 1st January 2015<\/b>; all other existing orders on local-content preference are to be reviewed and revised to conform, within two months.<br><br>(b) 15th June 2017 is the date of the original Make in India Order; (d) 19th July 2024 is the date of this revised Order \u2014 dates used as distractors. (c) does not appear.\"\r\n  },\r\n\r\n  {\r\n    id: 23,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"Under the transitional provision, the Order shall NOT apply to:\",\r\n    options: [\r\n      \"Any tender or procurement for which the notice inviting tender or other form of procurement solicitation was issued before the issue of this Order\",\r\n      \"Any procurement below Rs. 5 lakhs, in every case\",\r\n      \"Any procurement undertaken by Government companies\",\r\n      \"Any procurement made through the Government e-Marketplace\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 20 (Transitional provision).<\/b><br>The Order does not apply to any tender or procurement for which the <b>notice inviting tender (or other solicitation) was issued before the issue of this Order<\/b>.<br><br>(b) restates the small-purchase exemption, not the transitional provision. (c) is wrong \u2014 Government companies are within the definition of 'procuring entity'. (d) is wrong \u2014 GeM procurement is expressly covered by the Order (Para 8).\"\r\n  },\r\n\r\n  {\r\n    id: 24,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"The power to reduce the minimum local content below the prescribed level, or to reduce the margin of purchase preference below 20%, or to exempt any particular item from the Order, is exercisable by the administrative Department with the approval of:\",\r\n    options: [\r\n      \"The Minister-in-charge, by written order and for reasons to be recorded in writing\",\r\n      \"The Standing Committee, by a majority decision\",\r\n      \"The Nodal Ministry, without recording reasons\",\r\n      \"The Secretary, Department of Expenditure\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 14 (Powers to grant exemption and to reduce minimum local content).<\/b><br>These powers are exercised by the administrative Department with the approval of the <b>Minister-in-charge<\/b>, by written order and for reasons to be recorded in writing; a copy of every such order goes to the Standing Committee and the Nodal Ministry.<br><br>(b), (c) and (d) name authorities not vested with this specific power; the requirement to record reasons in writing is also part of the safeguard that (c) omits.\"\r\n  },\r\n\r\n  {\r\n    id: 25,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"Under the Order, the term 'procuring entity' includes:\",\r\n    options: [\r\n      \"Government companies as defined in the Companies Act\",\r\n      \"Only Ministries and Departments of the Government of India\",\r\n      \"Only autonomous bodies controlled by State Governments\",\r\n      \"Foreign companies participating through joint ventures\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 2 (Definitions), 'Procuring entity'.<\/b><br>A 'procuring entity' means a Ministry or department or attached or subordinate office of, or autonomous body controlled by, the Government of India, and <b>includes Government companies as defined in the Companies Act<\/b>.<br><br>(b) omits the express inclusion of Government companies and autonomous bodies. (c) wrongly limits it to State-Government bodies. (d) is unrelated to the definition of procuring entity.\"\r\n  },\r\n\r\n  {\r\n    id: 26,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"For contracts involving supply of multiple items, the local content is to be calculated by taking:\",\r\n    options: [\r\n      \"The weighted average of all items\",\r\n      \"The simple average of all items\",\r\n      \"The local content of the highest-value item only\",\r\n      \"The local content of the lowest-value item only\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 2, Explanatory note (e).<\/b><br>For contracts involving supply of multiple items, the <b>weighted average<\/b> of all items is taken while calculating the local content.<br><br>(b) 'simple average' ignores the differing values of the items; (c) and (d) wrongly rely on a single item rather than all items.\"\r\n  },\r\n\r\n  {\r\n    id: 27,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"Items notified as having sufficient local capacity and competition are to be mandatorily sourced from 'Class-I local suppliers' in System Integrator\/EPC\/Turnkey\/Service tenders. Where it is not practically feasible to do so in a project, relaxation from this stipulation may be taken with the approval of the:\",\r\n    options: [\r\n      \"Secretary of the administrative Ministry\/Department, or the Competent Authority specified by the Administrative Ministry\/Department, on a case-specific basis\",\r\n      \"Nodal Ministry, in every case\",\r\n      \"Standing Committee, by a two-thirds majority\",\r\n      \"Department of Expenditure, irrespective of the value\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 3.1(b).<\/b><br>Relaxation from the mandatory Class-I sourcing stipulation may be taken with the approval of the <b>Secretary of the administrative Ministry\/Department<\/b>, or the Competent Authority specified by the Administrative Ministry\/Department, on a case-specific basis.<br><br>(b), (c) and (d) name authorities not designated for this relaxation; the case-specific nature of the approval is also part of the provision.\"\r\n  },\r\n\r\n  {\r\n    id: 28,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"Consider the following statements regarding requirements applicable to a particular procurement transaction:\\n1. The minimum local content, the margin of purchase preference and the procedure for preference to Make in India shall be specified in the notice inviting tenders or other procurement solicitation.\\n2. These requirements may be varied during a particular procurement transaction if the procuring entity records reasons in writing.\\nWhich of the statements given above is\/are correct?\",\r\n    options: [\r\n      \"1 only\",\r\n      \"2 only\",\r\n      \"Both 1 and 2\",\r\n      \"Neither 1 nor 2\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 7 (Requirement for specification in advance).<\/b><br>Statement 1 \u2713 \u2014 the minimum local content, the margin of purchase preference and the preference procedure must be specified in the NIT\/solicitation.<br>Statement 2 \u2717 \u2014 these <b>shall not be varied<\/b> during a particular procurement transaction; the added 'may be varied' condition makes statement 2 false.<br><br>Hence only statement 1 is correct.\"\r\n  },\r\n\r\n  {\r\n    id: 29,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"Procurement of spare parts and consumables for closed systems, and Maintenance\/Service contracts, with the Original Equipment Manufacturer\/Original Equipment Supplier\/Original Part Manufacturer, are:\",\r\n    options: [\r\n      \"Exempted from the Order\",\r\n      \"Subject to mandatory Class-I local supplier sourcing\",\r\n      \"Permitted only through a global tender enquiry\",\r\n      \"Subject to a reduced margin of purchase preference of 10%\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 4A (Exemption in sourcing of spares and consumables of closed systems).<\/b><br>Procurement of spare parts and consumables for closed systems, and Maintenance\/Service contracts, with the OEM\/OES\/OPM are <b>exempted<\/b> from the Order.<br><br>(b), (c) and (d) impose requirements that the exemption removes; there is no reduced-margin or global-tender treatment prescribed for these items.\"\r\n  },\r\n\r\n  {\r\n    id: 30,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"Under the Reciprocity Clause, the term 'entity' of a country shall have the same meaning as under:\",\r\n    options: [\r\n      \"The FDI Policy of DPIIT, as amended from time to time\",\r\n      \"The Companies Act, 2013\",\r\n      \"The General Financial Rules, 2017\",\r\n      \"The Foreign Exchange Management Act, 1999\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 10(d)(v) (Reciprocity Clause).<\/b><br>The term 'entity' of a country shall have the same meaning as under the <b>FDI Policy of DPIIT, as amended from time to time<\/b>.<br><br>The distractors are plausible legal instruments, but the Order specifically ties the meaning of 'entity' to the DPIIT FDI Policy.\"\r\n  },\r\n\r\n{\r\n    id: 31,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"In the procurement of divisible goods or works where a purchase preference for 'Class-I local supplier' is applicable, the lowest bid (L1) turns out to be from a 'Class-I local supplier'. In this situation, the contract will be awarded:\",\r\n    options: [\r\n      \"To L1 for the full quantity\",\r\n      \"To L1 for 50% of the quantity, the balance going to the next 'Class-I local supplier'\",\r\n      \"Equally among all qualifying 'Class-I local suppliers'\",\r\n      \"To L1 only after it matches a lower 'Class-II local supplier' price\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 3A(b)(i).<\/b><br>Among all qualified bids the lowest is termed L1; when L1 is itself a 'Class-I local supplier', the contract for the <b>full quantity<\/b> is awarded to L1.<br><br>(b) is the treatment when L1 is NOT a Class-I supplier (50% to L1, rest offered to Class-I on price-matching). (c) and (d) invent splitting or matching steps that do not apply when L1 is already Class-I.\"\r\n  },\r\n\r\n  {\r\n    id: 32,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"For all contracts above INR 10 Crore, at the time of execution of the project the contractor\/supplier is required to give local content certification duly certified by:\",\r\n    options: [\r\n      \"A cost accountant or chartered accountant in practice\",\r\n      \"The Nodal Ministry for the item\",\r\n      \"The procuring entity's own technical committee\",\r\n      \"The Standing Committee constituted under the Order\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 9(c) (Verification of local content).<\/b><br>The bidder self-certifies at the tendering stage; but for all contracts <b>above INR 10 Crore<\/b>, at the time of execution the supplier must give local content certification duly certified by a <b>cost accountant or chartered accountant in practice<\/b>. Where this is not possible at execution, the certificate may be furnished after completion, within a time limit acceptable to the procuring entity.<br><br>(b), (c) and (d) are not the certifying authorities specified for execution-stage local content certification.\"\r\n  },\r\n\r\n  {\r\n    id: 33,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"A procuring entity finds that a domestic supplier is being unreasonably excluded because a tender requires proof of exports and proof of supply in other countries. Under the Order, such eligibility conditions relating to previous experience:\",\r\n    options: [\r\n      \"Must not require proof of supply in other countries or proof of exports\",\r\n      \"Are permissible if the estimated value exceeds Rs. 200 crore\",\r\n      \"Are permissible only in a global tender enquiry\",\r\n      \"May be retained with the approval of the Nodal Ministry\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 10(a) (Specifications in tenders).<\/b><br>Eligibility conditions on previous experience <b>must not require proof of supply in other countries or proof of exports<\/b>. Procuring entities must also ensure that conditions on turnover, production capability and financial strength do not unreasonably exclude eligible Class-I\/Class-II local suppliers.<br><br>(b), (c) and (d) invent value thresholds, tender types or approvals that would permit such conditions, which the Order does not allow.\"\r\n  },\r\n\r\n  {\r\n    id: 34,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"A Department wishes to stipulate a foreign certification in a bid document because the relevant Indian Standard is not available. This may be done only after the written approval of the:\",\r\n    options: [\r\n      \"Secretary of the Department concerned (or an Authority designated such power by that Secretary)\",\r\n      \"Joint Secretary (Public Procurement), Department of Expenditure\",\r\n      \"Chairman of the Standing Committee\",\r\n      \"Nodal Ministry for the item\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 10(e) (Specifications in tenders).<\/b><br>Where foreign certification must be stipulated (owing to non-availability of Indian Standards or any other reason), it may be done only after the written approval of the <b>Secretary of the Department concerned<\/b>, or any other Authority designated such power by that Secretary. Otherwise, specifying foreign certifications\/brands is treated as a restrictive and discriminatory practice.<br><br>(b), (c) and (d) are not vested with this specific approval.\"\r\n  },\r\n\r\n  {\r\n    id: 35,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"Where restrictive or discriminatory conditions against domestic suppliers are found in bid documents, the inquiry to fix responsibility is to be conducted by the:\",\r\n    options: [\r\n      \"Administrative Department undertaking the procurement\",\r\n      \"Standing Committee\",\r\n      \"Department of Expenditure\",\r\n      \"Comptroller and Auditor General\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 10A (Action for non-compliance).<\/b><br>The inquiry to fix responsibility is conducted by the <b>Administrative Department undertaking the procurement<\/b> (including procurement by any entity under its administrative control); appropriate action is then taken against erring officials, and intimation of all such actions is sent to the Standing Committee.<br><br>(b) receives intimation but does not conduct the inquiry; (c) and (d) have no such inquiry role here.\"\r\n  },\r\n\r\n  {\r\n    id: 36,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"In the procurement of goods, services or works for which the nodal ministry has not notified that there is sufficient local capacity and competition, the nodal ministry notifies an upper threshold value of procurement. For participating in procurement beyond this threshold value, foreign companies are required to:\",\r\n    options: [\r\n      \"Enter into a joint venture with an Indian company to participate in the tender\",\r\n      \"Be treated as 'Class-I local suppliers' for that procurement\",\r\n      \"Deposit an additional performance security equal to 20% of the bid value\",\r\n      \"Obtain prior clearance from the Department of Expenditure\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 13A.<\/b><br>The concerned nodal ministry notifies an upper threshold value beyond which foreign companies shall <b>enter into a joint venture with an Indian company<\/b> to participate in the tender; such joint ventures may be given special provisions exempting them from the stipulated minimum local content, to be increased in a phased manner.<br><br>(b), (c) and (d) invent treatments not stated in para 13A; participation is conditioned on forming a JV with an Indian company.\"\r\n  },\r\n\r\n  {\r\n    id: 37,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"The administrative Department, with the approval of the Minister-in-charge and for reasons recorded in writing, may (among other powers) reduce the margin of purchase preference:\",\r\n    options: [\r\n      \"Below 20%\",\r\n      \"Below 10%\",\r\n      \"Below 50%\",\r\n      \"Below 5%\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 14 (Powers to grant exemption and to reduce minimum local content).<\/b><br>Among the powers is the reduction of the margin of purchase preference <b>below 20%<\/b> \u2014 20% being the standard margin fixed under Para 6.<br><br>The distractors are plausible percentages, but the power is framed as reducing the margin below the standard 20%.\"\r\n  },\r\n\r\n  {\r\n    id: 38,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"For Government companies and other procuring entities that are NOT governed by the General Financial Rules, compliance with the Order is to be secured by:\",\r\n    options: [\r\n      \"Policy directions issued by the administrative Ministry or Department\",\r\n      \"Direct operation of the General Financial Rules on such entities\",\r\n      \"An enforcement order of the Standing Committee\",\r\n      \"A notification issued by the Nodal Ministry\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 15 (Directions to Government companies).<\/b><br>Because such entities are not governed by the GFR, the administrative Ministry\/Department shall issue <b>policy directions<\/b> requiring compliance with the Order.<br><br>(b) is precisely what does not apply, as these entities fall outside the GFR; (c) and (d) misplace the responsibility, which rests with the administrative Ministry through policy directions.\"\r\n  },\r\n\r\n  {\r\n    id: 39,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"The Standing Committee under the Order shall meet as often as necessary. Which one of the following officials is its Member-Convenor?\",\r\n    options: [\r\n      \"Joint Secretary (DPIIT)\",\r\n      \"Secretary, DPIIT\",\r\n      \"Joint Secretary (Public Procurement), Department of Expenditure\",\r\n      \"Secretary, Ministry of Electronics and Information Technology\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 16 (Standing Committee).<\/b><br>The <b>Joint Secretary (DPIIT)<\/b> is the Member-Convenor.<br><br>(b) Secretary, DPIIT is the Chairman; (c) Joint Secretary (Public Procurement), Department of Expenditure and (d) Secretary, MeitY are Members \u2014 the question tests whether the candidate can distinguish the Convenor from the Chairman and the other members.\"\r\n  },\r\n\r\n  {\r\n    id: 40,\r\n    chapter: 'Make in India Order 2017 (Revised 2024)',\r\n    question: \"A supplier is debarred by one procuring entity for violation of the Order. For procurement by any OTHER procuring entity, its ineligibility for preference under the Order lasts for:\",\r\n    options: [\r\n      \"The duration of the debarment, taking effect prospectively from the date it comes to the notice of the other procuring entities\",\r\n      \"A uniform period of two years from the date of debarment\",\r\n      \"One year from the date of the original violation\",\r\n      \"Only the balance of the financial year in which it was debarred\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Option (a) is correct \u2014 Para 9(h) (Verification of local content).<\/b><br>The ineligibility lasts for the <b>duration of the debarment<\/b>, and for other procuring entities it takes effect <b>prospectively from the date it comes to their notice<\/b> (in the manner prescribed under Para 9).<br><br>(b), (c) and (d) fix arbitrary fixed periods, whereas the Order ties the ineligibility to the actual debarment period and its prospective effect.\"\r\n  }\r\n\r\n];\r\n\r\n\/\/ export default allQuestions; \/\/ uncomment if using as an ES module\r\n\r\n\/\/ ==========================================\r\n\/\/ STATE\r\n\/\/ ==========================================\r\nlet initDone = false;\r\nlet currentMode = 'all';\r\nlet currentFilter = null;\r\nlet filteredQuestions = [...allQuestions];\r\nlet currentQuestionIndex = 0;\r\nlet selectedOption = null;\r\nlet answerChecked = false;\r\nlet sessionStats = { attempted: 0, correct: 0, incorrect: 0 };\r\nlet sessionStartTs = Date.now();\r\nlet sessionAnswers = {};\r\nlet progress = { questionStats: {}, weakAreas: [], lastQuestionId: null, lastMode: 'all', lastFilter: null, attemptLog: [] };\r\n\r\nconst $id = (x) => document.getElementById(x);\r\nconst CHAPTERS = [...new Set(allQuestions.map(q => q.chapter))];\r\n\/\/ Case-insensitive helpers: work for \"Ch 1:\", \"CH 1:\", \"ch 1:\" alike.\r\nconst chShort = (c) => c.replace(\/^CH\\s*(\\d+):.*$\/i, 'CH $1').replace('ANNEXURE\/Appendices', 'Annexures');\r\nconst chFull = (c) => { const m = c.match(\/^CH\\s*\\d+:\\s*(.+)$\/i); return m ? m[1] : c; };\r\n\/\/ One label, printed once (avoids the \"name: name\" doubling bug).\r\nconst chLabel = (c) => \/^CH\\s*\\d+:\/i.test(c) ? (chShort(c) + ': ' + chFull(c)) : c;\r\n\r\n\/\/ ==========================================\r\n\/\/ PERSISTENCE (localStorage)\r\n\/\/ ==========================================\r\nfunction loadProgress() {\r\n    try {\r\n        const saved = localStorage.getItem('quiz_progress_' + quizConfig.quizId);\r\n        if (saved) {\r\n            const p = JSON.parse(saved);\r\n            progress = Object.assign(progress, p);\r\n            if (!progress.questionStats) progress.questionStats = {};\r\n            if (!Array.isArray(progress.weakAreas)) progress.weakAreas = [];\r\n            if (!Array.isArray(progress.attemptLog)) progress.attemptLog = [];\r\n        }\r\n    } catch (e) { console.warn('Progress load failed', e); }\r\n}\r\nfunction saveProgress() {\r\n    try {\r\n        if (progress.attemptLog.length > 500) progress.attemptLog = progress.attemptLog.slice(-500);\r\n        localStorage.setItem('quiz_progress_' + quizConfig.quizId, JSON.stringify(progress));\r\n    } catch (e) { console.warn('Progress save failed', e); }\r\n}\r\nfunction getQStat(qid) {\r\n    if (!progress.questionStats[qid]) progress.questionStats[qid] = { correct: 0, incorrect: 0, lastAttempt: null, lastCorrect: null };\r\n    return progress.questionStats[qid];\r\n}\r\n\r\n\/\/ ==========================================\r\n\/\/ TOAST\r\n\/\/ ==========================================\r\nlet toastTimer = null;\r\nfunction showToast(msg, type) {\r\n    const t = $id('warningToast');\r\n    $id('toastMessage').textContent = msg;\r\n    t.classList.toggle('success', type === 'success');\r\n    t.classList.add('show');\r\n    clearTimeout(toastTimer);\r\n    toastTimer = setTimeout(() => t.classList.remove('show'), 2600);\r\n}\r\n\r\n\/\/ ==========================================\r\n\/\/ TAB NAVIGATION\r\n\/\/ ==========================================\r\nfunction switchView(view) {\r\n    document.querySelectorAll('.cwq-portal .gp-tab').forEach(b => b.classList.toggle('active', b.dataset.view === view));\r\n    document.querySelectorAll('.cwq-portal .gp-view').forEach(v => v.classList.toggle('active', v.id === 'view-' + view));\r\n    if (view === 'performance') renderAI();\r\n}\r\n\r\n\/\/ ==========================================\r\n\/\/ MODE \/ FILTERS\r\n\/\/ ==========================================\r\nfunction setMode(mode, filter) {\r\n    currentMode = mode;\r\n    currentFilter = filter || null;\r\n    document.querySelectorAll('.cwq-portal .mode-tab').forEach(t => t.classList.toggle('active', t.dataset.mode === mode));\r\n    $id('chapterFilterCard').style.display = (mode === 'chapter') ? '' : 'none';\r\n    $id('weakAreasCard').style.display = (mode === 'weak') ? '' : 'none';\r\n    applyFilters();\r\n    progress.lastMode = mode; progress.lastFilter = currentFilter; saveProgress();\r\n}\r\nfunction applyFilters() {\r\n    if (currentMode === 'all') filteredQuestions = [...allQuestions];\r\n    else if (currentMode === 'chapter') filteredQuestions = currentFilter ? allQuestions.filter(q => q.chapter === currentFilter) : [...allQuestions];\r\n    else if (currentMode === 'weak') {\r\n        filteredQuestions = allQuestions.filter(q => progress.weakAreas.includes(q.id));\r\n        if (!filteredQuestions.length) { showToast('No weak areas yet \u2014 great going!', 'success'); filteredQuestions = [...allQuestions]; setMode('all'); return; }\r\n    }\r\n    currentQuestionIndex = 0;\r\n    sessionStats = { attempted: 0, correct: 0, incorrect: 0 };\r\n    sessionStartTs = Date.now();\r\n    sessionAnswers = {};\r\n    renderFilters(); renderGrid(); loadQuestion(); updateStats();\r\n}\r\nfunction renderFilters() {\r\n    $id('chapterList').innerHTML = CHAPTERS.map(c => {\r\n        const n = allQuestions.filter(q => q.chapter === c).length;\r\n        return '<div class=\"filter-item' + (currentMode === 'chapter' && currentFilter === c ? ' active' : '') + '\" data-chapter=\"' + encodeURIComponent(c) + '\" title=\"' + c + '\"><span class=\"filter-text\">' + chLabel(c) + '<\/span><span class=\"filter-count\">' + n + '<\/span><\/div>';\r\n    }).join('');\r\n    renderWeakList();\r\n}\r\nfunction renderWeakList() {\r\n    const list = $id('weakQuestionList');\r\n    const weak = allQuestions.filter(q => progress.weakAreas.includes(q.id));\r\n    list.innerHTML = weak.length ? weak.map(q => {\r\n        const s = getQStat(q.id);\r\n        return '<div class=\"weak-question-item\" data-goto=\"' + q.id + '\"><span class=\"q-num\">Q' + q.id + '<\/span><span class=\"q-text\">' + q.question.replace(\/<br\\s*\\\/?>|\\n\/gi, ' ').substring(0, 60) + '\u2026<\/span><span class=\"wrong-count\">' + s.incorrect + '\u2717<\/span><\/div>';\r\n    }).join('') : '<p style=\"font-size:12.5px;color:var(--mut);text-align:center;padding:14px 4px;\">No weak areas. Keep practising!<\/p>';\r\n}\r\n\r\n\/\/ ==========================================\r\n\/\/ QUESTION RENDERING\r\n\/\/ ==========================================\r\nfunction loadQuestion() {\r\n    const q = filteredQuestions[currentQuestionIndex];\r\n    if (!q) {\r\n        $id('questionText').innerHTML = '<b>No questions loaded yet.<\/b> Paste your question bank into the <code>allQuestions<\/code> array in this file (format documented at the array) and reload.';\r\n        $id('optionsList').innerHTML = '';\r\n        $id('questionNumber').textContent = 'Question 0 of 0';\r\n        return;\r\n    }\r\n    selectedOption = null; answerChecked = false;\r\n    $id('questionNumber').textContent = 'Question ' + (currentQuestionIndex + 1) + ' of ' + filteredQuestions.length;\r\n    $id('currentQuestionChapter').textContent = chLabel(q.chapter);\r\n    $id('weakBadge').style.display = progress.weakAreas.includes(q.id) ? '' : 'none';\r\n    $id('questionText').innerHTML = formatQuestion(q);\r\n    $id('explanationBox').classList.remove('show');\r\n    renderOptions(q);\r\n    renderMastery(q);\r\n    const prior = sessionAnswers[q.id];\r\n    if (prior !== undefined) revealAnswer(q, prior, true);\r\n    $id('prevBtn').disabled = currentQuestionIndex === 0;\r\n    $id('nextBtn').disabled = currentQuestionIndex === filteredQuestions.length - 1;\r\n    $id('checkBtn').disabled = prior !== undefined;\r\n    renderGrid();\r\n    progress.lastQuestionId = q.id; saveProgress();\r\n    if (initDone && window.innerWidth <= 900) {\r\n        const p = document.querySelector('.cwq-portal .question-panel');\r\n        if (p) p.scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n    }\r\n}\r\n\/\/ UPSC exam-paper formatting: numbered statements get their own spaced rows,\r\n\/\/ the \"Select the correct answer \/ Which of the above\" lead sits on its own line.\r\n\/\/ Splits on BOTH \"\\n\" and \"<br>\" so either style works in pasted data.\r\nfunction formatQuestion(q) {\r\n    const parts = q.question.split(\/<br\\s*\\\/?>|\\n\/i);\r\n    let html = '<span class=\"q-stem\"><b>Q' + q.id + '.<\/b> ' + (parts[0] || '') + '<\/span>';\r\n    for (let i = 1; i < parts.length; i++) {\r\n        const seg = parts[i].trim();\r\n        if (!seg) continue;\r\n        const m = seg.match(\/^(\\d+)\\.\\s*(.*)$\/s);\r\n        if (m) html += '<span class=\"q-stmt\"><span class=\"sn\">' + m[1] + '.<\/span><span>' + m[2] + '<\/span><\/span>';\r\n        else if (\/^(select the correct|which of the (above|following|statements)|choose the correct|consider the following|statement)\/i.test(seg))\r\n            html += '<span class=\"q-lead\">' + seg + '<\/span>';\r\n        else html += '<span class=\"q-lead\" style=\"font-style:normal\">' + seg + '<\/span>';\r\n    }\r\n    return html;\r\n}\r\nfunction renderOptions(q) {\r\n    $id('optionsList').innerHTML = q.options.map((opt, i) =>\r\n        '<div class=\"option-item\" data-opt=\"' + i + '\"><span class=\"option-letter\">(' + String.fromCharCode(97 + i) + ')<\/span><span class=\"option-text\">' + opt + '<\/span><i class=\"option-icon\" style=\"margin-top:4px\"><\/i><\/div>'\r\n    ).join('');\r\n}\r\nfunction renderMastery(q) {\r\n    const s = getQStat(q.id);\r\n    const mi = $id('masteryIndicator');\r\n    if (s.correct + s.incorrect === 0) { mi.classList.remove('show'); return; }\r\n    mi.classList.add('show');\r\n    const stars = $id('masteryStars').querySelectorAll('i');\r\n    stars.forEach((st, i) => st.classList.toggle('filled', i < Math.min(s.correct, 5)));\r\n}\r\nfunction checkAnswer() {\r\n    if (answerChecked || selectedOption === null) { if (selectedOption === null) showToast('Select an option first'); return; }\r\n    const q = filteredQuestions[currentQuestionIndex];\r\n    const isCorrect = selectedOption === q.correct;\r\n    sessionAnswers[q.id] = selectedOption;\r\n    sessionStats.attempted++; isCorrect ? sessionStats.correct++ : sessionStats.incorrect++;\r\n    updateQuestionStats(q, isCorrect);\r\n    revealAnswer(q, selectedOption, false);\r\n    updateStats(); renderGrid(); renderWeakList(); updateHeader();\r\n}\r\nfunction revealAnswer(q, chosen, restoring) {\r\n    answerChecked = true;\r\n    const items = $id('optionsList').querySelectorAll('.option-item');\r\n    items.forEach((it, i) => {\r\n        it.classList.add('disabled');\r\n        if (i === q.correct) { it.classList.add('correct'); const oi = it.querySelector('.option-icon'); oi.textContent = '\\u2713'; oi.style.fontStyle = 'normal'; }\r\n        else if (i === chosen) { it.classList.add('incorrect'); const oj = it.querySelector('.option-icon'); oj.textContent = '\\u2717'; oj.style.fontStyle = 'normal'; }\r\n    });\r\n    $id('explanationText').innerHTML = q.explanation;\r\n    $id('explanationBox').classList.add('show');\r\n    $id('checkBtn').disabled = true;\r\n    renderMastery(q);\r\n    if (!restoring) showToast(chosen === q.correct ? 'Correct! Well done.' : 'Incorrect \u2014 read the explanation.', chosen === q.correct ? 'success' : '');\r\n}\r\nfunction updateQuestionStats(q, isCorrect) {\r\n    const s = getQStat(q.id);\r\n    isCorrect ? s.correct++ : s.incorrect++;\r\n    s.lastAttempt = Date.now(); s.lastCorrect = isCorrect;\r\n    progress.attemptLog.push({ qid: q.id, correct: isCorrect, ts: Date.now() });\r\n    const isWeak = progress.weakAreas.includes(q.id);\r\n    if (!isCorrect && s.incorrect >= quizConfig.weakThreshold && !isWeak) progress.weakAreas.push(q.id);\r\n    if (isCorrect && isWeak && s.correct >= quizConfig.masteryThreshold) progress.weakAreas = progress.weakAreas.filter(id => id !== q.id);\r\n    saveProgress();\r\n}\r\n\r\n\/\/ ==========================================\r\n\/\/ GRID + STATS\r\n\/\/ ==========================================\r\nfunction renderGrid() {\r\n    $id('questionGrid').innerHTML = filteredQuestions.map((q, i) => {\r\n        let cls = 'unattempted';\r\n        const ans = sessionAnswers[q.id];\r\n        if (ans !== undefined) cls = (ans === q.correct) ? 'correct-answered' : 'incorrect-answered';\r\n        else { const s = progress.questionStats[q.id]; if (s && (s.correct + s.incorrect) > 0) cls = 'attempted'; }\r\n        if (i === currentQuestionIndex) cls = 'current';\r\n        const weak = progress.weakAreas.includes(q.id) ? ' weak-marked' : '';\r\n        return '<div class=\"grid-item ' + cls + weak + '\" data-idx=\"' + i + '\" title=\"Q' + q.id + '\">' + (i + 1) + '<\/div>';\r\n    }).join('');\r\n}\r\nfunction masteredCount() { return allQuestions.filter(q => { const s = progress.questionStats[q.id]; return s && s.correct >= quizConfig.masteryThreshold; }).length; }\r\nfunction updateStats() {\r\n    $id('totalQuestions').textContent = filteredQuestions.length;\r\n    $id('attemptedCount').textContent = sessionStats.attempted;\r\n    $id('correctCount').textContent = sessionStats.correct;\r\n    $id('incorrectCount').textContent = sessionStats.incorrect;\r\n    const mastered = masteredCount();\r\n    const pct = allQuestions.length ? Math.round(mastered \/ allQuestions.length * 100) : 0;\r\n    $id('progressPercentage').textContent = pct + '%';\r\n    $id('progressRingFill').style.strokeDashoffset = 264 - (264 * pct \/ 100);\r\n    $id('totalCorrectProgress').textContent = Object.values(progress.questionStats).reduce((a, s) => a + s.correct, 0);\r\n    $id('totalWeakProgress').textContent = progress.weakAreas.length;\r\n    $id('allCount').textContent = allQuestions.length;\r\n    $id('weakModeCount').textContent = progress.weakAreas.length;\r\n}\r\nfunction updateHeader() {\r\n    $id('hdrTotalQ').textContent = allQuestions.length;\r\n    $id('hdrChapters').textContent = CHAPTERS.length;\r\n    const pct = allQuestions.length ? Math.round(masteredCount() \/ allQuestions.length * 100) : 0;\r\n    $id('hdrMastered').textContent = pct + '%';\r\n    const w = progress.weakAreas.length;\r\n    $id('weakBadgeHeader').style.display = w ? '' : 'none';\r\n    $id('weakCountHeader').textContent = w;\r\n    const r = computeReadiness();\r\n    $id('hdrReadiness').textContent = r.attempted ? r.score + '%' : '\u2014';\r\n    $id('perfPill').style.display = w >= 5 ? '' : 'none';\r\n}\r\n\r\n\/\/ ==========================================\r\n\/\/ SUBMIT \/ RESULT \/ RESETS\r\n\/\/ ==========================================\r\nfunction submitExam() {\r\n    if (!sessionStats.attempted) { showToast('Attempt at least one question first'); return; }\r\n    const pct = Math.round(sessionStats.correct \/ sessionStats.attempted * 100);\r\n    $id('resultCorrect').textContent = sessionStats.correct;\r\n    $id('resultIncorrect').textContent = sessionStats.incorrect;\r\n    $id('resultScore').textContent = pct + '%';\r\n    $id('resultIcon').textContent = pct >= 80 ? '\ud83c\udfc6' : pct >= 60 ? '\ud83c\udf89' : pct >= 40 ? '\ud83d\udcd6' : '\ud83d\udcaa';\r\n    $id('resultTitle').textContent = pct >= 80 ? 'Outstanding!' : pct >= 60 ? 'Great Job!' : pct >= 40 ? 'Keep Practising!' : 'Needs Revision';\r\n    $id('resultMessage').textContent = 'You attempted ' + sessionStats.attempted + ' of ' + filteredQuestions.length + ' questions in this session.';\r\n    $id('practiceWeakBtn').style.display = progress.weakAreas.length ? '' : 'none';\r\n    $id('resultModal').classList.add('show');\r\n}\r\nfunction reviewAnswers() { $id('resultModal').classList.remove('show'); currentQuestionIndex = 0; loadQuestion(); }\r\nfunction retryQuiz() { $id('resultModal').classList.remove('show'); sessionStats = { attempted: 0, correct: 0, incorrect: 0 }; sessionAnswers = {}; currentQuestionIndex = 0; loadQuestion(); updateStats(); }\r\n\/\/ SESSION RESET (Practice tab): clears ONLY this session's answers\/score.\r\n\/\/ Lifetime performance (mastery, weak areas, attempt history) is preserved.\r\nfunction resetSession() {\r\n    if (!confirm('Reset this session? Only the current answers and session score are cleared \u2014 your lifetime performance and mastery are kept.')) return;\r\n    sessionStats = { attempted: 0, correct: 0, incorrect: 0 };\r\n    sessionAnswers = {};\r\n    sessionStartTs = Date.now();\r\n    currentQuestionIndex = 0;\r\n    loadQuestion(); updateStats(); renderGrid();\r\n    showToast('Session reset \u2014 performance data kept', 'success');\r\n}\r\n\/\/ PERFORMANCE RESET (My Performance tab): wipes lifetime data after confirm.\r\nfunction resetPerformance() {\r\n    if (!confirm('Permanently erase ALL lifetime performance for this quiz?\\n\\nThis clears mastery stars, weak areas, accuracy history and the readiness score. This cannot be undone.')) return;\r\n    progress = { questionStats: {}, weakAreas: [], lastQuestionId: null, lastMode: 'all', lastFilter: null, attemptLog: [] };\r\n    saveProgress();\r\n    sessionStats = { attempted: 0, correct: 0, incorrect: 0 };\r\n    sessionAnswers = {};\r\n    sessionStartTs = Date.now();\r\n    setMode('all');\r\n    updateHeader();\r\n    renderAI();\r\n    showToast('Lifetime performance erased', 'success');\r\n}\r\n\r\n\/\/ ==========================================\r\n\/\/ TAB 2 \u2014 AI COACH ENGINE (rule-based, client-side)\r\n\/\/ Chapter weight = chapter's share of the question bank\r\n\/\/ ==========================================\r\nfunction chapterCounts() {\r\n    const map = {};\r\n    allQuestions.forEach(q => { map[q.chapter] = (map[q.chapter] || 0) + 1; });\r\n    return Object.entries(map).sort((a, b) => b[1] - a[1]);\r\n}\r\nfunction chapterStats() {\r\n    const total = allQuestions.length;\r\n    return chapterCounts().map(([c, n]) => {\r\n        const qs = allQuestions.filter(q => q.chapter === c);\r\n        let attempted = 0, correct = 0, incorrect = 0, scoreSum = 0;\r\n        qs.forEach(q => {\r\n            const s = progress.questionStats[q.id];\r\n            if (s && (s.correct + s.incorrect) > 0) { attempted++; correct += s.correct; incorrect += s.incorrect; }\r\n            scoreSum += s ? Math.min(s.correct \/ quizConfig.masteryThreshold, 1) : 0;\r\n        });\r\n        const acc = (correct + incorrect) ? correct \/ (correct + incorrect) : null;\r\n        const weight = n \/ total;\r\n        const coverage = attempted \/ n;\r\n        const mastery = scoreSum \/ n;\r\n        const priority = weight * (acc === null ? 0.85 : (1 - acc)) * (0.5 + 0.5 * (1 - coverage));\r\n        return { chapter: c, count: n, weight, attempted, coverage, acc, mastery, priority };\r\n    });\r\n}\r\nfunction computeReadiness() {\r\n    const stats = chapterStats();\r\n    const score = Math.round(stats.reduce((a, s) => a + s.weight * s.mastery, 0) * 100);\r\n    const attempted = Object.values(progress.questionStats).some(s => (s.correct + s.incorrect) > 0);\r\n    return { score, attempted, stats };\r\n}\r\nfunction renderAI() {\r\n    if (!allQuestions.length) {\r\n        $id('aiEmptyState').style.display = '';\r\n        $id('aiContent').style.display = 'none';\r\n        return;\r\n    }\r\n    const { score, attempted, stats } = computeReadiness();\r\n    $id('aiEmptyState').style.display = attempted ? 'none' : '';\r\n    $id('aiContent').style.display = attempted ? '' : 'none';\r\n    if (!attempted) return;\r\n\r\n    \/\/ Readiness ring\r\n    $id('aiScore').textContent = score;\r\n    $id('aiRingFill').style.strokeDashoffset = 402 - (402 * score \/ 100);\r\n    const verdict = score >= 80 ? '<b>Exam-ready.<\/b> Maintain with the revision queue and weak-area drills.'\r\n        : score >= 60 ? '<b>Strong base.<\/b> Close the gaps in your top-weight chapters to cross 80.'\r\n        : score >= 35 ? '<b>Building up.<\/b> Focus on the priority chapters below \u2014 they move your score fastest.'\r\n        : '<b>Early stage.<\/b> Start with the highest-weight chapters; every mastered question compounds.';\r\n    $id('aiVerdict').innerHTML = verdict + '<br><span style=\"font-size:11.8px;opacity:.8\">Score = \u03a3 (chapter weight \u00d7 your mastery), computed across ' + CHAPTERS.length + ' chapters of the bank.<\/span>';\r\n\r\n    \/\/ KPIs\r\n    const totalAttempted = allQuestions.filter(q => { const s = progress.questionStats[q.id]; return s && (s.correct + s.incorrect) > 0; }).length;\r\n    const allC = Object.values(progress.questionStats).reduce((a, s) => a + s.correct, 0);\r\n    const allI = Object.values(progress.questionStats).reduce((a, s) => a + s.incorrect, 0);\r\n    const accAll = (allC + allI) ? Math.round(allC \/ (allC + allI) * 100) : 0;\r\n    const recent = progress.attemptLog.slice(-20);\r\n    const accRecent = recent.length ? Math.round(recent.filter(a => a.correct).length \/ recent.length * 100) : 0;\r\n    const trendArrow = recent.length >= 5 ? (accRecent > accAll ? ' <span style=\"color:var(--green)\">\\u2197<\/span>' : accRecent < accAll ? ' <span style=\"color:var(--red)\">\\u2198<\/span>' : '') : '';\r\n    $id('aiKpis').innerHTML =\r\n        '<div class=\"ai-kpi\"><div class=\"n\">' + totalAttempted + '\/' + allQuestions.length + '<\/div><div class=\"l\">Coverage<\/div><\/div>' +\r\n        '<div class=\"ai-kpi\"><div class=\"n ' + (accAll >= 70 ? 'g' : accAll >= 45 ? 'a' : 'r') + '\">' + accAll + '%<\/div><div class=\"l\">Lifetime Accuracy<\/div><\/div>' +\r\n        '<div class=\"ai-kpi\"><div class=\"n ' + (accRecent >= 70 ? 'g' : accRecent >= 45 ? 'a' : 'r') + '\">' + accRecent + '%' + trendArrow + '<\/div><div class=\"l\">Last 20 Attempts<\/div><\/div>' +\r\n        '<div class=\"ai-kpi\"><div class=\"n g\">' + masteredCount() + '<\/div><div class=\"l\">Mastered (' + quizConfig.masteryThreshold + '\u2605)<\/div><\/div>' +\r\n        '<div class=\"ai-kpi\"><div class=\"n r\">' + progress.weakAreas.length + '<\/div><div class=\"l\">Weak Questions<\/div><\/div>';\r\n\r\n    \/\/ Smart study plan\r\n    const byPriority = [...stats].sort((a, b) => b.priority - a.priority);\r\n    const recos = [];\r\n    byPriority.slice(0, 3).forEach(s => {\r\n        if (s.acc === null) recos.push({ ic: 'warm', icon: '\ud83e\udded', txt: '<b>' + chShort(s.chapter) + '<\/b> carries <b>' + Math.round(s.weight * 100) + '%<\/b> of the bank but you haven\\u2019t attempted it yet \u2014 begin here.', ch: s.chapter });\r\n        else if (s.acc < 0.6) recos.push({ ic: 'hot', icon: '\ud83d\udd25', txt: '<b>' + chShort(s.chapter) + '<\/b>: chapter weight <b>' + Math.round(s.weight * 100) + '%<\/b>, your accuracy only <b>' + Math.round(s.acc * 100) + '%<\/b> \u2014 highest payoff zone right now.', ch: s.chapter });\r\n        else if (s.coverage < 0.6) recos.push({ ic: 'cool', icon: '\ud83d\udd0d', txt: '<b>' + chShort(s.chapter) + '<\/b>: accuracy is fine (' + Math.round(s.acc * 100) + '%) but you\\u2019ve only covered <b>' + Math.round(s.coverage * 100) + '%<\/b> of its questions \u2014 finish the set.', ch: s.chapter });\r\n    });\r\n    if (progress.weakAreas.length >= 3) recos.push({ ic: 'hot', icon: '\u26a0\ufe0f', txt: 'You have <b>' + progress.weakAreas.length + ' weak questions<\/b> flagged. One focused Weak-Areas session will clear the backlog.', weak: true });\r\n    const due = revisionDue();\r\n    if (due.length) recos.push({ ic: 'warm', icon: '\ud83d\udd01', txt: '<b>' + due.length + ' mastered questions<\/b> haven\\u2019t been touched in over ' + quizConfig.revisionGapDays + ' days \u2014 revise before they fade.' });\r\n    const best = [...stats].filter(s => s.acc !== null).sort((a, b) => b.acc - a.acc)[0];\r\n    if (best && best.acc >= 0.75) recos.push({ ic: 'good', icon: '\ud83c\udfc5', txt: 'Strongest area: <b>' + chShort(best.chapter) + '<\/b> at <b>' + Math.round(best.acc * 100) + '%<\/b> accuracy \u2014 bank these marks on exam day.' });\r\n    $id('aiRecoList').innerHTML = recos.map(r =>\r\n        '<div class=\"ai-reco\"><span class=\"ic ' + r.ic + '\">' + r.icon + '<\/span><p>' + r.txt + '<\/p>' +\r\n        (r.ch ? '<button class=\"go\" data-practice-ch=\"' + encodeURIComponent(r.ch) + '\">Practice \\u2192<\/button>' : r.weak ? '<button class=\"go\" data-practice-weak=\"1\">Start \\u2192<\/button>' : '') + '<\/div>'\r\n    ).join('');\r\n\r\n    \/\/ Performance table\r\n    $id('perfTableBody').innerHTML = byPriority.map(s => {\r\n        const accPct = s.acc === null ? null : Math.round(s.acc * 100);\r\n        const tag = s.acc === null ? '<span class=\"tag na\">Not started<\/span>'\r\n            : accPct < 45 ? '<span class=\"tag hot\">Critical<\/span>'\r\n            : accPct < 65 ? '<span class=\"tag warm\">Needs work<\/span>'\r\n            : accPct < 85 ? '<span class=\"tag ok\">On track<\/span>'\r\n            : '<span class=\"tag good\">Strong<\/span>';\r\n        const accBar = s.acc === null ? '\u2014' : '<div class=\"mini-track\"><div class=\"mini-fill\" style=\"width:' + accPct + '%;background:' + (accPct < 45 ? 'var(--red)' : accPct < 65 ? 'var(--amber)' : 'var(--green)') + '\"><\/div><\/div><span style=\"font-size:11.5px\">' + accPct + '%<\/span>';\r\n        return '<tr><td title=\"' + s.chapter + '\">' + chLabel(s.chapter) + '<\/td><td><b>' + Math.round(s.weight * 100) + '%<\/b> <span style=\"color:var(--faint);font-size:11.2px\">(' + s.count + ' Qs)<\/span><\/td><td>' + s.attempted + '\/' + s.count + '<\/td><td>' + accBar + '<\/td><td>' + tag + '<\/td><td><button class=\"mini-go\" data-practice-ch=\"' + encodeURIComponent(s.chapter) + '\">Practice<\/button><\/td><\/tr>';\r\n    }).join('');\r\n\r\n    \/\/ Revision queue\r\n    $id('revisionQueue').innerHTML = due.length ? due.slice(0, 8).map(({ q, days }) =>\r\n        '<div class=\"rev-item\" data-goto=\"' + q.id + '\"><span class=\"q-num\">Q' + q.id + '<\/span><span class=\"q-text\">' + q.question.replace(\/<br\\s*\\\/?>|\\n\/gi, ' ').substring(0, 55) + '\u2026<\/span><span class=\"days\">' + days + 'd ago<\/span><\/div>'\r\n    ).join('') : '<div class=\"ai-empty\" style=\"padding:18px\"><p style=\"font-size:13.3px\">Nothing due for revision. Mastered questions reappear here after ' + quizConfig.revisionGapDays + ' days.<\/p><\/div>';\r\n\r\n    \/\/ Mastery distribution\r\n    const buckets = [0, 0, 0, 0]; \/\/ untouched, learning, close, mastered\r\n    allQuestions.forEach(q => {\r\n        const s = progress.questionStats[q.id];\r\n        if (!s || (s.correct + s.incorrect) === 0) buckets[0]++;\r\n        else if (s.correct >= quizConfig.masteryThreshold) buckets[3]++;\r\n        else if (s.correct >= 2) buckets[2]++;\r\n        else buckets[1]++;\r\n    });\r\n    const labels = ['Untouched', 'Learning (0\u20131\u2605)', 'Almost there (2\u2605)', 'Mastered (' + quizConfig.masteryThreshold + '\u2605+)'];\r\n    const colors = ['#cbd5e1', 'var(--amber)', 'var(--navy-l)', 'var(--green)'];\r\n    $id('masteryDist').innerHTML = buckets.map((n, i) =>\r\n        '<div class=\"bar-row\" style=\"grid-template-columns:minmax(130px,1fr) 2fr auto\"><span class=\"bar-name\">' + labels[i] + '<\/span><div class=\"bar-track\"><div class=\"bar-fill\" style=\"width:' + (allQuestions.length ? n \/ allQuestions.length * 100 : 0) + '%;background:' + colors[i] + '\"><\/div><\/div><span class=\"bar-val\">' + n + '<\/span><\/div>'\r\n    ).join('');\r\n}\r\nfunction revisionDue() {\r\n    const now = Date.now(), gap = quizConfig.revisionGapDays * 86400000;\r\n    return allQuestions.map(q => {\r\n        const s = progress.questionStats[q.id];\r\n        if (s && s.correct >= quizConfig.masteryThreshold && s.lastAttempt && (now - s.lastAttempt) > gap)\r\n            return { q, days: Math.floor((now - s.lastAttempt) \/ 86400000) };\r\n        return null;\r\n    }).filter(Boolean).sort((a, b) => b.days - a.days);\r\n}\r\nfunction gotoQuestion(qid) {\r\n    switchView('practice');\r\n    let idx = filteredQuestions.findIndex(q => q.id === qid);\r\n    if (idx === -1) { setMode('all'); idx = filteredQuestions.findIndex(q => q.id === qid); }\r\n    if (idx !== -1) { currentQuestionIndex = idx; loadQuestion(); }\r\n}\r\nfunction practiceChapter(ch) {\r\n    switchView('practice');\r\n    setMode('chapter', ch);\r\n    showToast('Filtered to ' + chShort(ch), 'success');\r\n}\r\n\r\n\/\/ ==========================================\r\n\/\/ EVENT DELEGATION (single listener)\r\n\/\/ ==========================================\r\ndocument.addEventListener('click', function (e) {\r\n    const w = e.target.closest('.cwq-portal');\r\n    if (!w) return;\r\n    const tab = e.target.closest('.gp-tab'); if (tab) { switchView(tab.dataset.view); return; }\r\n    const mode = e.target.closest('.mode-tab'); if (mode) { setMode(mode.dataset.mode); return; }\r\n    const cf = e.target.closest('.filter-item[data-chapter]'); if (cf) { const c = decodeURIComponent(cf.dataset.chapter); setMode('chapter', currentFilter === c ? null : c); return; }\r\n    const gi = e.target.closest('.grid-item'); if (gi) { currentQuestionIndex = parseInt(gi.dataset.idx, 10); loadQuestion(); return; }\r\n    const go = e.target.closest('[data-goto]'); if (go) { gotoQuestion(parseInt(go.dataset.goto, 10)); return; }\r\n    const pc = e.target.closest('[data-practice-ch]'); if (pc) { practiceChapter(decodeURIComponent(pc.dataset.practiceCh)); return; }\r\n    const pw = e.target.closest('[data-practice-weak]'); if (pw) { switchView('practice'); setMode('weak'); return; }\r\n    const opt = e.target.closest('.option-item'); if (opt && !answerChecked) {\r\n        $id('optionsList').querySelectorAll('.option-item').forEach(o => o.classList.remove('selected'));\r\n        opt.classList.add('selected'); selectedOption = parseInt(opt.dataset.opt, 10); return;\r\n    }\r\n    switch (e.target.closest('button') ? e.target.closest('button').id : '') {\r\n        case 'checkBtn': checkAnswer(); break;\r\n        case 'prevBtn': if (currentQuestionIndex > 0) { currentQuestionIndex--; loadQuestion(); } break;\r\n        case 'nextBtn': if (currentQuestionIndex < filteredQuestions.length - 1) { currentQuestionIndex++; loadQuestion(); } break;\r\n        case 'submitBtn': submitExam(); break;\r\n        case 'resetBtn': resetSession(); break;\r\n        case 'resetPerfBtn': resetPerformance(); break;\r\n        case 'reviewBtn': reviewAnswers(); break;\r\n        case 'retryBtn': retryQuiz(); break;\r\n        case 'practiceWeakBtn': $id('resultModal').classList.remove('show'); setMode('weak'); break;\r\n        case 'practiceWeakAreasBtn': setMode('weak'); break;\r\n        case 'resumeBtn': {\r\n            const qid = progress.lastQuestionId;\r\n            if (progress.lastMode) setMode(progress.lastMode, progress.lastFilter);\r\n            if (qid) gotoQuestion(qid);\r\n            $id('sessionInfo').style.display = 'none';\r\n            break;\r\n        }\r\n    }\r\n});\r\n\r\n\/\/ Screenshot \/ copy deterrents\r\ndocument.addEventListener('contextmenu', function (e) { if (e.target.closest('.cwq-portal')) { e.preventDefault(); showToast('Right-click is disabled to protect content'); } });\r\ndocument.addEventListener('keydown', function (e) {\r\n    if ((e.ctrlKey || e.metaKey) && ['c', 's', 'p', 'u'].includes(e.key.toLowerCase()) && document.querySelector('.cwq-portal')) {\r\n        e.preventDefault(); showToast('Copying is disabled to protect content');\r\n    }\r\n    if (e.key === 'PrintScreen') showToast('Screenshots are discouraged \u2014 content is protected');\r\n});\r\n\r\n\/\/ ==========================================\r\n\/\/ INIT\r\n\/\/ ==========================================\r\ndocument.addEventListener('DOMContentLoaded', function () {\r\n    $id('topicName').textContent = quizConfig.topic;\r\n    $id('topicEyebrow').textContent = 'CSS ADDA \u00b7 PromotionExams.com \u00b7 ' + quizConfig.paper;\r\n    loadProgress();\r\n    renderFilters();\r\n    setMode(progress.lastMode || 'all', progress.lastFilter || null);\r\n    updateHeader();\r\n    if (progress.lastQuestionId) {\r\n        const q = allQuestions.find(x => x.id === progress.lastQuestionId);\r\n        if (q) { $id('sessionInfo').style.display = ''; $id('sessionText').textContent = 'Last session: Q' + q.id + ' (' + chShort(q.chapter) + ')'; }\r\n    }\r\n    initDone = true;\r\n});\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u26a0\ufe0f Message \ud83c\udf89 Great Job! You have completed the quiz. 0 Correct 0 Incorrect 0% Score \ud83d\udc41 Review \u26a0\ufe0f Practice [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"disabled","ast-banner-title-visibility":"disabled","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"disabled","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[],"tags":[],"class_list":["post-13602","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/promotionexams.com\/index.php?rest_route=\/wp\/v2\/pages\/13602","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/promotionexams.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/promotionexams.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/promotionexams.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/promotionexams.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=13602"}],"version-history":[{"count":7,"href":"https:\/\/promotionexams.com\/index.php?rest_route=\/wp\/v2\/pages\/13602\/revisions"}],"predecessor-version":[{"id":13609,"href":"https:\/\/promotionexams.com\/index.php?rest_route=\/wp\/v2\/pages\/13602\/revisions\/13609"}],"wp:attachment":[{"href":"https:\/\/promotionexams.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=13602"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/promotionexams.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=13602"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/promotionexams.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=13602"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}