{"id":13882,"date":"2026-07-18T08:56:59","date_gmt":"2026-07-18T08:56:59","guid":{"rendered":"https:\/\/promotionexams.com\/?page_id=13882"},"modified":"2026-07-18T09:24:53","modified_gmt":"2026-07-18T09:24:53","slug":"mcqs-on-cpwd-works-manual-2024","status":"publish","type":"page","link":"https:\/\/promotionexams.com\/?page_id=13882","title":{"rendered":"MCQS ON CPWD WORKS MANUAL 2024"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"13882\" class=\"elementor elementor-13882\">\n\t\t\t\t<div class=\"elementor-element elementor-element-dbde9a1 e-con-full e-flex e-con e-parent\" data-id=\"dbde9a1\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4273ed7 elementor-widget elementor-widget-html\" data-id=\"4273ed7\" 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\">CPWD Works Manual 2024<\/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: 'CPWD Works Manual 2024',            \/\/ \u2190 shown in header h1\r\n    paper: 'Paper 2',                        \/\/ \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\nconst allQuestions = [{\r\n    id: 1,\r\n    chapter: \"CH 1: General Provisions\",\r\n    question: \"Consider the following with respect to the functions of the Central Public Works Department:\\n1. Planning, construction, maintenance and repairs of all buildings and other works assigned by Central Government Ministries, Departments, Public Sector Undertakings and autonomous bodies.\\n2. Valuation of properties\/assets as and when requested by statutory authorities such as the Income Tax Department, the Enforcement Directorate and the Central Bureau of Investigation.\\n3. Assessment of rent for hiring of private properties and assessment of value of properties for purchase by various Ministries\/Departments of the Government of India.\\n4. Advising the Government of India on various technical matters relating to public works.\\n\\nWhich of the above is\/are a function of the Central Public Works Department?\",\r\n    options: [\r\n      \"1 and 4 only\",\r\n      \"1, 2 and 3 only\",\r\n      \"2, 3 and 4 only\",\r\n      \"1, 2, 3 and 4\"\r\n    ],\r\n    correct: 3,\r\n    explanation: \"<b>Para 1.0<\/b><br>All four are among the functions of CPWD, which is the Central Government agency operating throughout the country for planning\/construction\/maintenance & repairs, valuation of properties\/assets for statutory authorities, assessment of rent and value of properties, and advising the GoI on technical matters relating to public works. Hence <b>1, 2, 3 and 4<\/b> are all correct.\"\r\n  },\r\n  {\r\n    id: 2,\r\n    chapter: \"CH 1: General Provisions\",\r\n    question: \"The Percentage Rate Tender document, used for works in which contractors are required to quote rates on a percentage basis i.e. above or below the estimated cost put to tender, is:\",\r\n    options: [\r\n      \"CPWD Form 7\",\r\n      \"CPWD Form 8\",\r\n      \"CPWD Form 11A\",\r\n      \"CPWD Form 12\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Para 1.1(1)<\/b><br>The <b>Percentage Rate Tender document is CPWD Form 7<\/b>, used where contractors quote rates on a percentage basis (above\/below the estimated cost put to tender).\"\r\n  },\r\n  {\r\n    id: 3,\r\n    chapter: \"CH 1: General Provisions\",\r\n    question: \"CPWD Form 8 (the Item Rate Tender document) is generally used in works where:\",\r\n    options: [\r\n      \"most of the items are non-scheduled or specialized and a detailed analysis of rates is not available\",\r\n      \"contractors quote rates on a percentage basis, above or below the estimated cost put to tender\",\r\n      \"the purchase of materials, whether raw or finished, is involved\",\r\n      \"the work is to be awarded without any call of tender\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Para 1.1(2)<\/b><br>In <b>Form 8 (Item Rate Tender)<\/b>, contractors quote rates against each item of work. It is generally used where <b>most of the items are non-scheduled or specialized and a detailed analysis of rates is not available<\/b>.\"\r\n  },\r\n  {\r\n    id: 4,\r\n    chapter: \"CH 1: General Provisions\",\r\n    question: \"Which standard form is normally used where the purchase of materials is involved, requiring contractors to quote rates for supply of the required quantity of materials, whether raw or finished?\",\r\n    options: [\r\n      \"CPWD Form 8\",\r\n      \"CPWD Form 9\",\r\n      \"CPWD Form 10\",\r\n      \"CPWD Form 11A\"\r\n    ],\r\n    correct: 1,\r\n    explanation: \"<b>Para 1.1(3)<\/b><br><b>CPWD Form 9 (Supply of materials)<\/b> is normally used where the purchase of materials is involved, contractors quoting rates for supply of the required quantity of materials, whether raw or finished.\"\r\n  },\r\n  {\r\n    id: 5,\r\n    chapter: \"CH 1: General Provisions\",\r\n    question: \"The Piece Work agreement (CPWD Form 10) is used mainly in cases where it is necessary to:\",\r\n    options: [\r\n      \"start the work in anticipation of formal acceptance of contract\",\r\n      \"award works to registered labour co-operative societies\",\r\n      \"quote rates on a percentage basis above or below the estimated cost\",\r\n      \"complete the work for a lump sum amount as per given designs\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Para 1.1(4)<\/b><br>Form 10 (Piece Work) is used mainly where it is necessary to <b>start the work in anticipation of formal acceptance of contract<\/b>; the piece work agreement may be cancelled as soon as the regular contract is signed.\"\r\n  },\r\n  {\r\n    id: 6,\r\n    chapter: \"CH 1: General Provisions\",\r\n    question: \"CPWD Form 11A (the Work Order) is normally used for works which are:\",\r\n    options: [\r\n      \"to be awarded without call of tender, with the contractor bound as to the quantity of work and the time of completion\",\r\n      \"started in anticipation of formal acceptance of the contract\",\r\n      \"to be completed for a lump sum amount as per given designs and specifications\",\r\n      \"adopted for demolition of buildings and removal of debris\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Para 1.1(5)<\/b><br><b>Form 11A (Work Order)<\/b> is normally used for works to be awarded <b>without call of tender<\/b>; in this form the contractor is bound in respect of the <b>quantity of work and the time<\/b> in which it is to be completed.\"\r\n  },\r\n  {\r\n    id: 7,\r\n    chapter: \"CH 1: General Provisions\",\r\n    question: \"Which standard form of contract is used for works in which contractors are required to quote a lump sum amount for completing the work in accordance with the given designs, specifications and functional requirements?\",\r\n    options: [\r\n      \"CPWD Form 7\",\r\n      \"CPWD Form 8\",\r\n      \"CPWD Form 12\",\r\n      \"CPWD Form 10\"\r\n    ],\r\n    correct: 2,\r\n    explanation: \"<b>Para 1.1(6)<\/b><br>The <b>Lump sum Contract document is CPWD Form 12<\/b>. Form 7 is the Percentage Rate Tender, Form 8 the Item Rate Tender, and Form 10 the Piece Work agreement.\"\r\n  },\r\n  {\r\n    id: 8,\r\n    chapter: \"CH 1: General Provisions\",\r\n    question: \"The standard form of tender adopted for demolition of buildings and removal of debris from the site is:\",\r\n    options: [\r\n      \"CPWD Form 12\",\r\n      \"CPWD Form 47\",\r\n      \"CPWD Form 11A\",\r\n      \"CPWD Form 9\"\r\n    ],\r\n    correct: 1,\r\n    explanation: \"<b>Para 1.1(7)<\/b><br>The <b>Tender document for demolition of Buildings is CPWD Form 47<\/b>. Form 11A is the Work Order, Form 9 is Supply of materials, and Form 12 is the Lump sum Contract.\"\r\n  },\r\n  {\r\n    id: 9,\r\n    chapter: \"CH 1: General Provisions\",\r\n    question: \"Which one of the following standard forms is NOT correctly matched with its use?\",\r\n    options: [\r\n      \"CPWD Form 7 \u2014 Percentage Rate Tender\",\r\n      \"CPWD Form 11A \u2014 Work Order for works awarded without call of tender\",\r\n      \"CPWD Form 12 \u2014 Tender for demolition of buildings and removal of debris\",\r\n      \"CPWD Form 9 \u2014 Supply of materials\"\r\n    ],\r\n    correct: 2,\r\n    explanation: \"<b>Para 1.1<\/b><br>The incorrect match is Form 12 \u2014 <b>CPWD Form 12 is the Lump sum Contract document<\/b>, whereas the tender for <b>demolition of buildings and removal of debris is CPWD Form 47<\/b>. The other three pairings are correct.\"\r\n  },\r\n  {\r\n    id: 10,\r\n    chapter: \"CH 1: General Provisions\",\r\n    question: \"Match List-I (standard form) with List-II (use) and select the correct answer using the code given below:\\n\\nList-I (Form)\\nA. CPWD Form 7\\nB. CPWD Form 9\\nC. CPWD Form 12\\nD. CPWD Form 47\\n\\nList-II (Use)\\n1. Tender for demolition of buildings\\n2. Percentage Rate Tender\\n3. Supply of materials\\n4. Lump sum Contract document\",\r\n    options: [\r\n      \"A-2, B-4, C-3, D-1\",\r\n      \"A-4, B-3, C-2, D-1\",\r\n      \"A-1, B-3, C-4, D-2\",\r\n      \"A-2, B-3, C-4, D-1\"\r\n    ],\r\n    correct: 3,\r\n    explanation: \"<b>Para 1.1<\/b><br>A \u2192 2 (Form 7 = Percentage Rate Tender); B \u2192 3 (Form 9 = Supply of materials); C \u2192 4 (Form 12 = Lump sum Contract document); D \u2192 1 (Form 47 = Tender for demolition of buildings). Hence the correct code is <b>A-2, B-3, C-4, D-1<\/b>.\"\r\n  },\r\n  {\r\n    id: 11,\r\n    chapter: \"CH 1: General Provisions\",\r\n    question: \"For works aided by the World Bank, the two authorities administering the contract, viz. the \\\"Employer\\\" and the \\\"Engineer\\\", are to be substituted in the Additional Conditions of Contract respectively by:\",\r\n    options: [\r\n      \"The Executive Engineer\/Engineer-in-Charge and the Central Public Works Department (represented by the Chief Engineer\/Superintending Engineer)\",\r\n      \"The Director General, Central Public Works Department and the Superintending Engineer\",\r\n      \"The Central Public Works Department (represented by the Chief Engineer\/Superintending Engineer) and the Executive Engineer\/Engineer-in-Charge\",\r\n      \"The Chief Engineer and the Assistant Executive Engineer\"\r\n    ],\r\n    correct: 2,\r\n    explanation: \"<b>Para 1.1(9)<\/b><br>For World Bank-aided works, in the Additional Conditions of Contract the <b>\\\"Employer\\\" is substituted by \\\"The Central Public Works Department\\\" (represented by CE\/SE or any other authority designated by the CPWD Directorate)<\/b> and the <b>\\\"Engineer\\\" by \\\"The EE\/Engineer-in-Charge\\\"<\/b>.\"\r\n  },\r\n  {\r\n    id: 12,\r\n    chapter: \"CH 1: General Provisions\",\r\n    question: \"The Cash Settlement Suspense Account (CSSA) mode of funding is adopted for carrying out works pertaining to:\",\r\n    options: [\r\n      \"State governments and local bodies\",\r\n      \"the Cabinet Secretariat and the Ministry of Defence\",\r\n      \"autonomous organizations and Public Sector Undertakings\",\r\n      \"projects funded by foreign countries\"\r\n    ],\r\n    correct: 3,\r\n    explanation: \"<b>Para 1.2(4)<\/b><br>Under <b>CSSA<\/b>, funds are made available after carrying out works pertaining to the <b>Cabinet Secretariat and the Ministry of Defence<\/b>. The expenditure is booked first in a suspense account, then billed to the client, and the LOC is given by CCA against client assurances. Works of State governments\/local bodies fall under the <b>Deposit<\/b> mode.\"\r\n  },\r\n  {\r\n    id: 13,\r\n    chapter: \"CH 1: General Provisions\",\r\n    question: \"Under which mode of funding is the outlay provided from the financial estimates and accounts of the Union of India, which are laid before and voted by both the Houses of Parliament through the Ministry of Housing & Urban Affairs?\",\r\n    options: [\r\n      \"By Letter of Authorization\",\r\n      \"Deposit\",\r\n      \"Budgeted works\",\r\n      \"Cash Settlement Suspense Account\"\r\n    ],\r\n    correct: 2,\r\n    explanation: \"<b>Para 1.2(2)<\/b><br>In the <b>Budgeted works<\/b> mode, the outlay is provided from the financial estimates and accounts of the Union of India that are <b>laid before and voted by both the Houses of Parliament through MoHUA<\/b>.\"\r\n  },\r\n  {\r\n    id: 14,\r\n    chapter: \"CH 1: General Provisions\",\r\n    question: \"Under the \\\"By Letter of Authorization\\\" mode of funding, the Pay and Accounts Officer of the Central Public Works Department \/ Ministry of Housing and Urban Affairs is authorized to charge the expenditure to the relevant Heads of Account by:\",\r\n    options: [\r\n      \"the Pay and Accounts Officer of the client Department\",\r\n      \"the Chief Controller of Accounts, Ministry of Housing and Urban Affairs\",\r\n      \"the Director (Finance), Central Public Works Department\",\r\n      \"the Director General, Central Public Works Department\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Para 1.2(1)<\/b><br>Under Letter of Authorization, the <b>PAO of CPWD\/MoHUA is authorized by the PAO of the client Department<\/b> to charge the expenditure to the Heads of Account operated by the respective Ministries. This mode is adopted for transfer of funds from one department of the GoI to another.\"\r\n  },\r\n  {\r\n    id: 15,\r\n    chapter: \"CH 1: General Provisions\",\r\n    question: \"The 'Deposit' mode of funding is adopted for the works of:\",\r\n    options: [\r\n      \"the Cabinet Secretariat and the Ministry of Defence\",\r\n      \"State governments, local bodies, Public Sector Undertakings and autonomous organizations\",\r\n      \"projects completely funded by foreign countries\",\r\n      \"Central Government Ministries through the budgetary grants of the Ministry of Housing and Urban Affairs\"\r\n    ],\r\n    correct: 1,\r\n    explanation: \"<b>Para 1.2(3)<\/b><br>The <b>Deposit<\/b> mode is adopted for the works of <b>State governments, local bodies, PSUs, autonomous organizations etc.<\/b> Works of the Cabinet Secretariat\/Ministry of Defence use the CSSA mode.\"\r\n  },\r\n  {\r\n    id: 16,\r\n    chapter: \"CH 1: General Provisions\",\r\n    question: \"The Central Works Board, constituted for approval of tenders and other miscellaneous matters relating to execution of works, consists of a Chairman and how many Members?\",\r\n    options: [\r\n      \"three Members\",\r\n      \"four Members\",\r\n      \"six Members\",\r\n      \"seven Members\"\r\n    ],\r\n    correct: 2,\r\n    explanation: \"<b>Para 1.3.1(1)<\/b><br>The Central Works Board consists of a <b>Chairman and six Members<\/b>. The Director General, CPWD is the Chairman.\"\r\n  },\r\n  {\r\n    id: 17,\r\n    chapter: \"CH 1: General Provisions\",\r\n    question: \"Who acts as the Member Secretary of the Central Works Board?\",\r\n    options: [\r\n      \"The Additional Director General (Technical)\",\r\n      \"The Director (Works) of the Ministry of Housing and Urban Affairs\",\r\n      \"The Director (Finance), Central Public Works Department\",\r\n      \"The Chief Engineer CSQ (Civil)\"\r\n    ],\r\n    correct: 2,\r\n    explanation: \"<b>Para 1.3.1(1)<\/b><br>The <b>Director (Finance), CPWD acts as the Member Secretary<\/b> of the Board. The ADG (Tech), Director (Works) of MoHUA, CE CSQ (E), Chief Controller of Accounts (MoHUA) and CE CSQ (Civil) are Members.\"\r\n  },\r\n  {\r\n    id: 18,\r\n    chapter: \"CH 1: General Provisions\",\r\n    question: \"Consider the following officers with respect to the Central Works Board:\\n1. Additional Director General (Technical)\\n2. Director (Works) of the Ministry of Housing and Urban Affairs\\n3. Chief Controller of Accounts, Ministry of Housing and Urban Affairs\\n4. Director (Finance), Central Public Works Department\\n\\nWhich of the above are Members (and not the Member Secretary) of the Board?\",\r\n    options: [\r\n      \"1, 2 and 3 only\",\r\n      \"1, 2 and 4 only\",\r\n      \"2, 3 and 4 only\",\r\n      \"1, 2, 3 and 4\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Para 1.3.1(1)<\/b><br>The <b>Members<\/b> include the ADG (Tech), Director (Works) MoHUA, CE CSQ (E), Chief Controller of Accounts MoHUA and CE CSQ (Civil). Statement 4 \u2717 \u2014 the <b>Director (Finance), CPWD is the Member Secretary<\/b>, not a Member.\"\r\n  },\r\n  {\r\n    id: 19,\r\n    chapter: \"CH 1: General Provisions\",\r\n    question: \"The Regional Works Board (RWB), constituted for approval of tenders within its delegation of financial powers, consists of a Chairman and how many members?\",\r\n    options: [\r\n      \"six members\",\r\n      \"four members\",\r\n      \"three members\",\r\n      \"two members\"\r\n    ],\r\n    correct: 2,\r\n    explanation: \"<b>Para 1.4.1(1)<\/b><br>The <b>RWB consists of a Chairman and three members<\/b>.\"\r\n  },\r\n  {\r\n    id: 20,\r\n    chapter: \"CH 1: General Provisions\",\r\n    question: \"In the Regional Works Board, who acts as the Chairman?\",\r\n    options: [\r\n      \"The Director General, Central Public Works Department\",\r\n      \"The Special Director General concerned, as notified by the Central Public Works Department Directorate\",\r\n      \"The Additional Director General of the Region\",\r\n      \"The Chief Engineer (W & TLQA)\"\r\n    ],\r\n    correct: 3,\r\n    explanation: \"<b>Para 1.4.1(1)<\/b><br>The <b>Special DG concerned (as notified by the CPWD Directorate) acts as Chairman<\/b> of the RWB. The ADG of the Region and Director (Finance) CPWD\/representative of CCA are members; the CE (W & TLQA) is the Member Secretary.\"\r\n  },\r\n  {\r\n    id: 21,\r\n    chapter: \"CH 1: General Provisions\",\r\n    question: \"Who is the Member Secretary of the Regional Works Board (unless otherwise notified by the Central Public Works Department Directorate)?\",\r\n    options: [\r\n      \"The Director (Finance), Central Public Works Department\",\r\n      \"The Additional Director General of the Region\",\r\n      \"The Chief Engineer (W & TLQA)\",\r\n      \"The concerned Chief Engineer\/Superintending Engineer\"\r\n    ],\r\n    correct: 2,\r\n    explanation: \"<b>Para 1.4.1(1)<\/b><br>The <b>Chief Engineer (W & TLQA), or as notified by CPWD Directorate, is the Member Secretary<\/b> of the RWB. The concerned CE\/SE only presents the case before the Board.\"\r\n  },\r\n  {\r\n    id: 22,\r\n    chapter: \"CH 1: General Provisions\",\r\n    question: \"To ensure transparency and uniformity while declaring works as emergent, the competent authority who should record the prescribed certificate (that the work has arisen all of a sudden and is of inescapable nature) is the:\",\r\n    options: [\r\n      \"Engineer-in-Charge\",\r\n      \"Executive Engineer\/Assistant Executive Engineer\",\r\n      \"Chief Engineer\/Additional Director General\/Special Director General\",\r\n      \"Superintending Engineer\/Executive Engineer\"\r\n    ],\r\n    correct: 2,\r\n    explanation: \"<b>Para 1.5(1)(xi)<\/b><br>The Competent Authority i.e. <b>CE\/ADG\/SDG<\/b> should record a certificate that (a) the work has arisen all of a sudden and (b) it is of inescapable nature requiring immediate action that cannot brook any delay.\"\r\n  },\r\n  {\r\n    id: 23,\r\n    chapter: \"CH 1: General Provisions\",\r\n    question: \"For emergent works executed without call of tenders, spot quotations shall be collected by officers not below the level of:\",\r\n    options: [\r\n      \"Junior Engineer\/Assistant Engineer\",\r\n      \"Assistant Engineer\/Assistant Executive Engineer\",\r\n      \"Executive Engineer\",\r\n      \"Superintending Engineer\/Chief Engineer\"\r\n    ],\r\n    correct: 1,\r\n    explanation: \"<b>Para 1.5(1)<\/b><br>Emergent works can be executed without call of tenders by issuing a work order or on hand receipt after collecting spot quotations, which <b>shall be collected by officers not below the level of AE\/AEE<\/b>.\"\r\n  },\r\n  {\r\n    id: 24,\r\n    chapter: \"CH 1: General Provisions\",\r\n    question: \"Details of works awarded on the basis of spot quotation are to be compiled by each circle or zone (by the Superintending Engineer\/Chief Engineer) and submitted to the Additional Director General\/Special Director General on which basis?\",\r\n    options: [\r\n      \"Monthly\",\r\n      \"Annually\",\r\n      \"Half-yearly\",\r\n      \"Quarterly\"\r\n    ],\r\n    correct: 3,\r\n    explanation: \"<b>Para 1.5(1)(xii)<\/b><br>Details of works awarded on the basis of spot quotation should be compiled by each circle\/zone (SE\/CE) on a <b>quarterly basis<\/b> and submitted to ADG\/SDG.\"\r\n  },\r\n  {\r\n    id: 25,\r\n    chapter: \"CH 1: General Provisions\",\r\n    question: \"In the case of emergent works, the Engineer-in-Charge, on proceeding with the necessary work, shall immediately intimate the approximate amount of liability being incurred to the:\",\r\n    options: [\r\n      \"Pay and Accounts Officer concerned\",\r\n      \"Additional Director General\/Special Director General concerned\",\r\n      \"Director (Finance), Central Public Works Department\",\r\n      \"Chief Engineer of the Zone\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Para 1.5(1)<\/b><br>The Engineer-in-Charge shall proceed to carry out the necessary work and shall <b>immediately intimate the PAO concerned that such liability is being incurred, with the approximate amount of liability<\/b>. The competent officer then initiates action for A\/A & E\/S and accord of T\/S (if applicable) to regularize the liability.\"\r\n  },\r\n  {\r\n    id: 26,\r\n    chapter: \"CH 1: General Provisions\",\r\n    question: \"With reference to works of inescapable nature, consider the following statements:\\n1. Emergent works can be executed without call of tenders by issuing a work order or on hand receipt after collecting spot quotations.\\n2. Normal works which require a compressed schedule for completion or early start should be treated as Emergent works.\\n3. For urgent works, availability of funds needs to be ensured before taking up execution.\\n\\nWhich of the statements is\/are correct?\",\r\n    options: [\r\n      \"1 and 3 only\",\r\n      \"1 and 2 only\",\r\n      \"2 and 3 only\",\r\n      \"1, 2 and 3\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Para 1.5<\/b><br>1 \u2713 (<b>Para 1.5(1)<\/b>) and 3 \u2713 (<b>Para 1.5(2)(i)<\/b> \u2014 availability of funds must be ensured before execution of urgent works). Statement 2 \u2717 \u2014 the note to Para 1.5(1) states that <b>normal works requiring a compressed schedule for completion\/early start should NOT be considered as Emergent works<\/b>.\"\r\n  },\r\n  {\r\n    id: 27,\r\n    chapter: \"CH 1: General Provisions\",\r\n    question: \"For urgent works, normally work orders shall be placed after an open call of quotations with publicity through the web for works up to an estimated cost of:\",\r\n    options: [\r\n      \"Rs. 2 lacs\",\r\n      \"Rs. 5 lacs\",\r\n      \"Rs. 10 lacs\",\r\n      \"Rs. 20 lacs\"\r\n    ],\r\n    correct: 1,\r\n    explanation: \"<b>Para 1.5(2)(i)<\/b><br>For urgent works, work orders are normally placed after open call of quotations with web publicity for works <b>up to Rs. 5 lacs<\/b>. Quotations for works with estimated cost <b>more than Rs. 5 lacs shall be invited through the e-tendering platform<\/b>.\"\r\n  },\r\n  {\r\n    id: 28,\r\n    chapter: \"CH 1: General Provisions\",\r\n    question: \"Who shall be responsible for assessing the urgency of an urgent work?\",\r\n    options: [\r\n      \"The Engineer-in-Charge\",\r\n      \"The Chief Engineer\/Superintending Engineer\",\r\n      \"The Additional Director General\/Special Director General\",\r\n      \"The Notice Inviting Tender approving authority\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Para 1.5(2)(i)<\/b><br>The <b>Engineer-in-Charge shall be responsible for assessing the urgency<\/b> of the work.\"\r\n  },\r\n  {\r\n    id: 29,\r\n    chapter: \"CH 1: General Provisions\",\r\n    question: \"For clarification or interpretation of any provision of the Manual in engineering and technical matters, the matter shall be referred to:\",\r\n    options: [\r\n      \"Ministry of Housing and Urban Affairs\",\r\n      \"Director General, Central Public Works Department\",\r\n      \"Ministry of Finance\",\r\n      \"Central Vigilance Commission\"\r\n    ],\r\n    correct: 3,\r\n    explanation: \"<b>Para 1.6<\/b><br>For clarification\/interpretation of engineering and technical matters, the matter shall be referred to <b>DG, CPWD<\/b>, who, being technical Advisor to the GoI, is the competent authority to decide and make necessary amendments.\"\r\n  },\r\n  {\r\n    id: 30,\r\n    chapter: \"CH 1: General Provisions\",\r\n    question: \"Matters relating to financial policy, delegation of financial powers or any other policy matters issued by the Government of India shall be referred to:\",\r\n    options: [\r\n      \"Director General, Central Public Works Department\",\r\n      \"Ministry of Housing and Urban Affairs\",\r\n      \"the Central Works Board\",\r\n      \"Ministry of Finance\"\r\n    ],\r\n    correct: 1,\r\n    explanation: \"<b>Para 1.6<\/b><br>For matters relating to <b>financial policy, delegation of financial powers or any other policy matters issued by the GoI, the matter shall be referred to MoHUA<\/b> (engineering\/technical matters go to DG, CPWD).\"\r\n  },\r\n  {\r\n    id: 31,\r\n    chapter: \"CH 2: Budget and Reconciliation of Accounts\",\r\n    question: \"Consider the following documents:\\n1. Bills Register\\n2. Register of works\\n3. Register of Buildings\\n4. Materials Account\\n\\nWhich of the above are among the mandatory documents of accounts prescribed for proper accounting of works?\",\r\n    options: [\r\n      \"1, 2 and 4 only\",\r\n      \"1, 3 and 4 only\",\r\n      \"2, 3 and 4 only\",\r\n      \"1, 2, 3 and 4\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Para 2.1<\/b><br>The five mandatory documents are <b>Bills Register, Contractor's ledger, Register of works, Materials Account and Cash Book<\/b>. Statement 3 \u2717 \u2014 the <b>Register of Buildings<\/b> is a maintenance-side record (Chapter 15.3), not part of the Para 2.1 list.\"\r\n  },\r\n  {\r\n    id: 32,\r\n    chapter: \"CH 2: Budget and Reconciliation of Accounts\",\r\n    question: \"Who is the budget authority for the preparation and submission of all Budget related proposals for the Central Public Works Department to the Ministry of Housing and Urban Affairs?\",\r\n    options: [\r\n      \"The Director (Finance), Central Public Works Department\",\r\n      \"The Director General, Central Public Works Department\",\r\n      \"The Additional Director General (Technical)\",\r\n      \"The Chief Controller of Accounts, Ministry of Housing and Urban Affairs\"\r\n    ],\r\n    correct: 3,\r\n    explanation: \"<b>Para 2.4.2<\/b><br>The <b>Director General is the budget authority<\/b> for the preparation and submission of all Budget related proposals for CPWD to MoHUA.\"\r\n  },\r\n  {\r\n    id: 33,\r\n    chapter: \"CH 2: Budget and Reconciliation of Accounts\",\r\n    question: \"As regards appropriations granted by Parliament from the Consolidated Fund of India, which of the following is correct?\",\r\n    options: [\r\n      \"Unspent budget can be carried forward to meet demands in the next financial year\",\r\n      \"Appropriations expire at the end of the financial year and all unutilized funds 'lapse'\",\r\n      \"Savings may be held in reserve for meeting possible future excesses\",\r\n      \"Unspent budget is transferred to the Contingency Fund of India\"\r\n    ],\r\n    correct: 1,\r\n    explanation: \"<b>Para 2.5<\/b><br>All appropriations granted by Parliament <b>expire at the end of the financial year<\/b>; no deduction of unspent budget can be appropriated for the next financial year, so <b>all unutilized funds 'lapse'<\/b> at year-end.\"\r\n  },\r\n  {\r\n    id: 34,\r\n    chapter: \"CH 2: Budget and Reconciliation of Accounts\",\r\n    question: \"Relatively large expenditure arising out of an important expansion of an existing activity is treated as a:\",\r\n    options: [\r\n      \"New Service\",\r\n      \"Supplementary Grant\",\r\n      \"Charged Expenditure\",\r\n      \"New Instrument of Service\"\r\n    ],\r\n    correct: 3,\r\n    explanation: \"<b>Para 2.7<\/b><br>A <b>'New Instrument of Service'<\/b> is relatively large expenditure arising out of important expansion of an existing activity. A 'New Service' is expenditure arising out of a new policy decision not brought to Parliament earlier.\"\r\n  },\r\n  {\r\n    id: 35,\r\n    chapter: \"CH 2: Budget and Reconciliation of Accounts\",\r\n    question: \"No expenditure can be incurred from the Consolidated Fund of India on a 'New Service' or 'New Instrument of Service' without prior approval of the Parliament through a:\",\r\n    options: [\r\n      \"Re-appropriation\",\r\n      \"Supplementary Grant\",\r\n      \"advance from the Contingency Fund of India\",\r\n      \"Vote on Account\"\r\n    ],\r\n    correct: 1,\r\n    explanation: \"<b>Para 2.7<\/b><br>No expenditure can be incurred from the Consolidated Fund of India on a 'New Service'\/'New Instrument of Service' <b>without prior approval of the Parliament through a Supplementary Grant<\/b>.\"\r\n  },\r\n  {\r\n    id: 36,\r\n    chapter: \"CH 2: Budget and Reconciliation of Accounts\",\r\n    question: \"The Final Budget is required to be based on the expenditure actually incurred for the months till which date, together with an assessment of anticipated expenditure for the remaining three months (i.e. till 31st March)?\",\r\n    options: [\r\n      \"31st October\",\r\n      \"30th November\",\r\n      \"31st December\",\r\n      \"28th February\"\r\n    ],\r\n    correct: 2,\r\n    explanation: \"<b>Para 2.8<\/b><br>The Final Budget is based on expenditure actually incurred for the months <b>till 31st December<\/b> and an assessment of anticipated expenditure for the remaining three months (till 31st March). Modifications thereafter are treated as 'Surrenders of Anticipated Savings' or 'Applications for Supplementary Grants'.\"\r\n  },\r\n  {\r\n    id: 37,\r\n    chapter: \"CH 2: Budget and Reconciliation of Accounts\",\r\n    question: \"All expenditure connected with the satisfaction of decrees of the Courts is treated as 'Charged' expenditure, except in certain cases. Which of the following Act\u2013year pairings is correctly stated as one such case NOT treated as 'Charged' expenditure?\",\r\n    options: [\r\n      \"Workmen's Compensation Act, 1923\",\r\n      \"Arbitration and Conciliation Act, 1956\",\r\n      \"Industrial Disputes Act, 1956\",\r\n      \"Workmen's Compensation Act, 1948\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Para 2.13(1)(a)<\/b><br>Payments NOT treated as 'Charged' include awards under the Land Acquisition Act, compensation under the <b>Workmen's Compensation Act, 1923<\/b>, awards by Arbitrators under the <b>Arbitration and Conciliation Act, 1996<\/b>, and payments by Arbitrators under the <b>Industrial Disputes Act, 1947<\/b>. The other options carry wrong years.\"\r\n  },\r\n  {\r\n    id: 38,\r\n    chapter: \"CH 2: Budget and Reconciliation of Accounts\",\r\n    question: \"Refunds of Security Deposits are debited to 'Public Accounts' if kept in that account. However, if the deposit has been forfeited, the refund should be treated as:\",\r\n    options: [\r\n      \"a refund of revenue\",\r\n      \"a Deposit in the Public Accounts\",\r\n      \"a deduction from the receipt heads\",\r\n      \"'Charged Expenditure'\"\r\n    ],\r\n    correct: 3,\r\n    explanation: \"<b>Para 2.13(3)<\/b><br>Refunds of Security Deposits are debited to 'Public Accounts' if kept there; but <b>if the deposit has been forfeited, the refund should be treated as 'Charged Expenditure'<\/b>.\"\r\n  },\r\n  {\r\n    id: 39,\r\n    chapter: \"CH 2: Budget and Reconciliation of Accounts\",\r\n    question: \"For new construction projects (other than those of the Ministry of Housing and Urban Affairs), the new works proposals are to be sent by the concerned Chief Engineer\/Budgetary Head to the Director (Finance), Central Public Works Department by which date every year?\",\r\n    options: [\r\n      \"31st August\",\r\n      \"30th September\",\r\n      \"30th November\",\r\n      \"31st December\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Para 2.14(2)<\/b><br>New works proposals should be sent by the concerned Chief Engineer\/Budgetary Head to the Director (Fin), CPWD <b>by 31st August every year<\/b>.\"\r\n  },\r\n  {\r\n    id: 40,\r\n    chapter: \"CH 2: Budget and Reconciliation of Accounts\",\r\n    question: \"The Director (Finance), Central Public Works Department scrutinizes the new works proposals (projects other than those of the Ministry of Housing and Urban Affairs) and forwards the findings to the Ministry of Housing and Urban Affairs by which date every year?\",\r\n    options: [\r\n      \"31st August\",\r\n      \"30th September\",\r\n      \"30th November\",\r\n      \"31st December\"\r\n    ],\r\n    correct: 1,\r\n    explanation: \"<b>Para 2.14(3)<\/b><br>The Director (Finance), CPWD scrutinizes the proposals and forwards the findings through ADG (Works)\/DG to MoHUA <b>by 30th September of every year<\/b>.\"\r\n  },\r\n  {\r\n    id: 41,\r\n    chapter: \"CH 2: Budget and Reconciliation of Accounts\",\r\n    question: \"For 'Minor Works' and 'Maintenance and Repairs', the demands are chargeable to which Major heads of account?\",\r\n    options: [\r\n      \"'059 Public Works' and '0216 Housing'\",\r\n      \"'059 Public Works' and '2216 Housing-Government Residential Buildings'\",\r\n      \"'2059 Public Works' and '0216 Housing'\",\r\n      \"'2059 Public Works' and '2216 Housing-Government Residential Buildings'\"\r\n    ],\r\n    correct: 3,\r\n    explanation: \"<b>Para 2.16(2)<\/b><br>'Minor Works' and 'Maintenance and Repairs' are chargeable to the Major heads <b>'2059 Public Works' and '2216 Housing-Government Residential Buildings'<\/b>. The heads 059\/0216 are the <b>receipt<\/b> heads used for Revenue Estimates (Para 2.18), not the expenditure Major heads.\"\r\n  },\r\n  {\r\n    id: 42,\r\n    chapter: \"CH 2: Budget and Reconciliation of Accounts\",\r\n    question: \"As an expenditure department, the Central Public Works Department deals with miscellaneous receipts occurring in discharge of its departmental functions under which Heads of Accounts?\",\r\n    options: [\r\n      \"'2059 Public Works' and '2216 Housing'\",\r\n      \"'059 Public Works' and '0216 Housing'\",\r\n      \"'2059 Public Works' and '0216 Housing'\",\r\n      \"'059 Public Works' and '2216 Housing'\"\r\n    ],\r\n    correct: 1,\r\n    explanation: \"<b>Para 2.18(1)<\/b><br>CPWD, being an expenditure department, deals with miscellaneous receipts under the Heads of Accounts <b>'059 Public Works' and '0216 Housing'<\/b> (rents, licence fee, sale of tender forms, etc.).\"\r\n  },\r\n  {\r\n    id: 43,\r\n    chapter: \"CH 2: Budget and Reconciliation of Accounts\",\r\n    question: \"The estimate of miscellaneous revenue receipts is required to be submitted as per the CPW Accounts Code to the Chief Controller of Accounts of the Ministry of Housing and Urban Affairs by which date every year?\",\r\n    options: [\r\n      \"31st August\",\r\n      \"30th September\",\r\n      \"30th November\",\r\n      \"31st December\"\r\n    ],\r\n    correct: 2,\r\n    explanation: \"<b>Para 2.18(1)<\/b><br>The revenue receipts estimate is to be submitted as per CPW Accounts Code <b>by 30th November every year to the Chief Controller of Accounts of MoHUA<\/b>.\"\r\n  },\r\n  {\r\n    id: 44,\r\n    chapter: \"CH 2: Budget and Reconciliation of Accounts\",\r\n    question: \"The estimates of funds required under the Head 'Salaries' in the Budget are framed on the basis of trends over the preceding:\",\r\n    options: [\r\n      \"2 years\",\r\n      \"3 years\",\r\n      \"5 years\",\r\n      \"1 year\"\r\n    ],\r\n    correct: 1,\r\n    explanation: \"<b>Para 2.17(1)<\/b><br>Estimates under the Head 'Salaries' are framed on the basis of <b>trends over the preceding 3 years<\/b>, considering changes in rates of pay, allowances, number of posts and economy instructions of MoF.\"\r\n  },\r\n\r\n  {\r\n    id: 46,\r\n    chapter: \"CH 2: Budget and Reconciliation of Accounts\",\r\n    question: \"When savings are not available within the Grant to which the payment is to be debited, the necessary Supplementary Grant or Appropriation is to be obtained in accordance with which Article of the Constitution before payment is authorized?\",\r\n    options: [\r\n      \"Article 112\",\r\n      \"Article 299(1)\",\r\n      \"Article 114\",\r\n      \"Article 115(1)\"\r\n    ],\r\n    correct: 3,\r\n    explanation: \"<b>Para 2.20.3<\/b><br>As per <b>Rule 66 of GFR<\/b>, the Supplementary Grant or Appropriation should be obtained in accordance with <b>Article 115(1) of the Constitution<\/b>. Article 299(1) governs execution of Government contracts (Chapter 5), not supplementary grants.\"\r\n  },\r\n  {\r\n    id: 47,\r\n    chapter: \"CH 2: Budget and Reconciliation of Accounts\",\r\n    question: \"Where the variation in a sub-head does not exceed the prescribed limit and is in excess, reasons must be included in the Appropriation Account in all cases in which the excess exceeds what percentage of the total sanctioned provision (or as prescribed, whichever is higher)?\",\r\n    options: [\r\n      \"5%\",\r\n      \"10%\",\r\n      \"15%\",\r\n      \"33%\"\r\n    ],\r\n    correct: 1,\r\n    explanation: \"<b>Para 2.21(2)(b)(i)<\/b><br>Where the variation is in excess, all cases in which the <b>excess exceeds 10%<\/b> of the total sanctioned provision (or as prescribed, whichever is higher) must be explained. The same 10% threshold applies to savings against the original provision under sub-clause (ii).\"\r\n  },\r\n  {\r\n    id: 48,\r\n    chapter: \"CH 2: Budget and Reconciliation of Accounts\",\r\n    question: \"A transfer of funds within one primary unit of appropriation under the same grant and involving two or more Zones:\",\r\n    options: [\r\n      \"amounts to re-appropriation and attracts Rule 10 of the Delegation of Financial Powers Rules\",\r\n      \"does not amount to re-appropriation and does not attract Rule 10 of the Delegation of Financial Powers Rules\",\r\n      \"requires prior approval of the Parliament\",\r\n      \"is permissible only with the sanction of the Ministry of Finance\"\r\n    ],\r\n    correct: 3,\r\n    explanation: \"<b>Para 2.22(2)<\/b><br>Such a transfer <b>does not amount to re-appropriation and does not attract Rule 10 of the DFPR<\/b>, because Appropriation Accounts are prepared on the basis of the total grant under a particular primary unit of appropriation in all the CPWD Zones.\"\r\n  },\r\n  {\r\n    id: 50,\r\n    chapter: \"CH 2: Budget and Reconciliation of Accounts\",\r\n    question: \"According to the guidelines issued by the Ministry of Finance, the last Quarter expenditure should not exceed what percentage of the Budget Estimates, and the expenditure in the month of March should not exceed what percentage?\",\r\n    options: [\r\n      \"25% of the Budget Estimates and 10% in March\",\r\n      \"33% of the Budget Estimates and 15% in March\",\r\n      \"40% of the Budget Estimates and 20% in March\",\r\n      \"33% of the Budget Estimates and 10% in March\"\r\n    ],\r\n    correct: 3,\r\n    explanation: \"<b>Para 2.24(3)<\/b><br>As per MoF guidelines, last Quarter expenditure <b>should not exceed 33% of BE and 15% in the month of March<\/b> of the financial year; a rush of expenditure in any month is to be avoided.\"\r\n  },\r\n  {\r\n    id: 51,\r\n    chapter: \"CH 2: Budget and Reconciliation of Accounts\",\r\n    question: \"With reference to Reconciliation of Accounts, consider the following statements:\\n1. Reconciliation should be made monthly.\\n2. Chief Engineers\/Director General maintain consolidated Zone-wise and grant-wise records in Form no. GFR 12.\\n3. The initial responsibility for reconciliation rests with the Chief Engineer.\\n\\nWhich of the statements is\/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>Para 2.25<\/b><br>1 \u2713 (reconciliation is to be made monthly) and 2 \u2713 (records maintained in <b>Form no. GFR 12<\/b>). Statement 3 \u2717 \u2014 the <b>initial responsibility rests with the Accounts Officer<\/b>, not the Chief Engineer.\"\r\n  },\r\n  {\r\n    id: 52,\r\n    chapter: \"CH 2: Budget and Reconciliation of Accounts\",\r\n    question: \"A statement in Form no. 8, showing the causes of excesses and savings under different sub-heads, should be prepared annually for submission to the Ministry by which date every year?\",\r\n    options: [\r\n      \"end of September\",\r\n      \"end of November\",\r\n      \"end of December\",\r\n      \"end of March\"\r\n    ],\r\n    correct: 2,\r\n    explanation: \"<b>Para 2.26.2(1)<\/b><br>A statement in <b>Form no. 8<\/b> should be prepared annually for submission to the Ministry <b>by the end of December every year<\/b>; separate statements are to be prepared for each grant.\"\r\n  },\r\n  {\r\n    id: 53,\r\n    chapter: \"CH 2: Budget and Reconciliation of Accounts\",\r\n    question: \"If a grant has been exceeded, sanction to the excess is to be obtained from the Ministry of Finance in the case of ____ and from the Parliament in the case of ____.\",\r\n    options: [\r\n      \"voted expenditure; non-voted expenditure\",\r\n      \"revenue expenditure; capital expenditure\",\r\n      \"charged expenditure; voted expenditure\",\r\n      \"non-voted expenditure; voted expenditure\"\r\n    ],\r\n    correct: 3,\r\n    explanation: \"<b>Para 2.26.2(2)<\/b><br>If a grant is exceeded, sanction is obtained from the <b>Ministry of Finance in the case of non-voted expenditure<\/b>, and from the <b>Parliament in the case of voted expenditure<\/b>.\"\r\n  },\r\n  {\r\n    id: 54,\r\n    chapter: \"CH 2: Budget and Reconciliation of Accounts\",\r\n    question: \"Under the scheme of Departmentalization of Accounts, who is the Chief Accounting Authority responsible for the preparation of the Monthly and Annual Accounts?\",\r\n    options: [\r\n      \"The Director General, Central Public Works Department\",\r\n      \"The Chief Controller of Accounts, Ministry of Housing and Urban Affairs\",\r\n      \"The Secretary, Ministry of Housing and Urban Affairs\",\r\n      \"The Controller General of Accounts\"\r\n    ],\r\n    correct: 2,\r\n    explanation: \"<b>Para 2.27.1(1)<\/b><br>The <b>Chief Accounting Authority (Secretary)<\/b> is responsible for preparation of the Monthly and Annual Accounts. The CCA, MoHUA prepares the annual Appropriation Accounts and submits them, duly signed by the Chief Accounting Authority (Secretary, MoHUA), to the CGA, Ministry of Finance.\"\r\n  },\r\n  {\r\n    id: 55,\r\n    chapter: \"CH 2: Budget and Reconciliation of Accounts\",\r\n    question: \"The Internal Audit and External Audit of the Divisions and Offices are respectively conducted by:\",\r\n    options: [\r\n      \"the Comptroller and Auditor General Office and the Chief Controller of Accounts office\",\r\n      \"the Chief Controller of Accounts office and the Comptroller and Auditor General Office\",\r\n      \"the Controller General of Accounts and the Comptroller and Auditor General Office\",\r\n      \"the Chief Controller of Accounts office and the Controller General of Accounts\"\r\n    ],\r\n    correct: 3,\r\n    explanation: \"<b>Para 2.27.2<\/b><br><b>Internal Audit is conducted by the CCA office<\/b>, while the <b>External Audit is conducted by the CAG Office<\/b>. CPWD Directorate mainly deals with disposal of Draft CAG\/PAC paras.\"\r\n  },\r\n  {\r\n    id: 56,\r\n    chapter: \"CH 2: Budget and Reconciliation of Accounts\",\r\n    question: \"With reference to the Audit Committees formed in CPWD, which of the following meeting frequencies is correctly matched?\",\r\n    options: [\r\n      \"Central Audit Committee \u2014 quarterly\",\r\n      \"Regional Audit Committee \u2014 monthly\",\r\n      \"Zonal\/Circle Audit Committee \u2014 monthly\",\r\n      \"Central Audit Committee \u2014 annually\"\r\n    ],\r\n    correct: 2,\r\n    explanation: \"<b>Para 2.27.2.1<\/b><br>The <b>Central Audit Committee<\/b> (DG, CPWD Chairman) meets <b>half-yearly<\/b>; the <b>Regional Audit Committee<\/b> (SDG\/ADG Chairman) meets <b>quarterly<\/b>; and the <b>Zonal\/Circle Audit Committee<\/b> (CE\/SE Chairman) meets <b>monthly<\/b>.\"\r\n  },\r\n  {\r\n    id: 57,\r\n    chapter: \"CH 2: Budget and Reconciliation of Accounts\",\r\n    question: \"The Public Accounts Committee (PAC), described as a miniature Parliament, comprises representatives of:\",\r\n    options: [\r\n      \"the Lok Sabha only\",\r\n      \"the Lok Sabha and Rajya Sabha\",\r\n      \"the Rajya Sabha and State Legislative Assemblies\",\r\n      \"the Lok Sabha and the Council of Ministers\"\r\n    ],\r\n    correct: 1,\r\n    explanation: \"<b>Para 2.28<\/b><br>The PAC is a miniature Parliament having the representatives of <b>Lok Sabha and Rajya Sabha<\/b>. The Secretary to the Government of India in the Department concerned represents the Government in PAC meetings.\"\r\n  },\r\n   {\r\n    id: 1,\r\n    chapter: \"CH 3: General Provisions (Construction)\",\r\n    question: \"Construction works are those taken up as all new constructions, rehabilitation and seismic retrofitting works, the expenditure of which is charged to:\",\r\n    options: [\r\n      \"capital heads\",\r\n      \"revenue heads\",\r\n      \"the suspense head \\\"Stock\\\"\",\r\n      \"the deposit head\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Para 3.0<\/b><br>Construction works are all new constructions, rehabilitation and seismic retrofitting works, the expenditure of which is <b>charged to capital heads<\/b>.\"\r\n  },\r\n  {\r\n    id: 2,\r\n    chapter: \"CH 3: General Provisions (Construction)\",\r\n    question: \"In respect of a construction work, the amount of the Technical Sanction:\",\r\n    options: [\r\n      \"may exceed the Administrative Approval & Expenditure Sanction amount by up to 10%\",\r\n      \"may not exceed the Administrative Approval & Expenditure Sanction amount\",\r\n      \"must be exactly equal to the Administrative Approval & Expenditure Sanction amount\",\r\n      \"is accorded before the Administrative Approval & Expenditure Sanction\"\r\n    ],\r\n    correct: 1,\r\n    explanation: \"<b>Para 3.1.1.2<\/b><br>On receipt of Administrative Approval & Expenditure Sanction, the detailed estimate is prepared; the <b>Technical Sanction amount may not exceed the Administrative Approval & Expenditure Sanction amount<\/b>.\"\r\n  },\r\n  {\r\n    id: 3,\r\n    chapter: \"CH 3: General Provisions (Construction)\",\r\n    question: \"For construction works of local bodies and Public Sector Undertakings costing Rs. 100 crore or more, the rate of Departmental Charges to be levied is:\",\r\n    options: [\r\n      \"10.0%\",\r\n      \"5.50%\",\r\n      \"4.0%\",\r\n      \"No departmental charges\"\r\n    ],\r\n    correct: 2,\r\n    explanation: \"<b>Para 3.1.1.4<\/b><br>For local bodies and Public Sector Undertakings, Departmental Charges are <b>10.0% for maintenance\/minor works, 4.0% for construction works costing Rs. 100 crore or more, and 5.50% for construction works costing below Rs. 100 crore<\/b>.\"\r\n  },\r\n  {\r\n    id: 4,\r\n    chapter: \"CH 3: General Provisions (Construction)\",\r\n    question: \"With reference to the levy of Departmental Charges, consider the following statements:\\n1. No departmental charges are to be levied for Government Works.\\n2. No reduction in departmental charges is allowed for the works of local bodies and Public Sector Undertakings.\\n3. Departmental charges shall be levied on Government works funded through the Public-Private Partnership mode.\\n\\nWhich of the statements is\/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>Para 3.1.1.4<\/b><br>1 \u2713 (no departmental charges for Government Works); 2 \u2713 (Note I \u2014 no reduction for local bodies\/Public Sector Undertakings). Statement 3 \u2717 \u2014 for Government works funded through the <b>Public-Private Partnership mode, no departmental charges shall be levied<\/b>.\"\r\n  },\r\n  {\r\n    id: 5,\r\n    chapter: \"CH 3: General Provisions (Construction)\",\r\n    question: \"For the purpose of levying Departmental Charges on works of local bodies and Public Sector Undertakings, the term \\\"cost of work\\\" means the:\",\r\n    options: [\r\n      \"actual cost of the completed work\",\r\n      \"detailed estimate amount\",\r\n      \"technically sanctioned amount\",\r\n      \"preliminary estimate amount\"\r\n    ],\r\n    correct: 3,\r\n    explanation: \"<b>Para 3.1.1.4 (Note II)<\/b><br>For departmental charges, <b>cost of work means the preliminary estimate amount<\/b>.\"\r\n  },\r\n  {\r\n    id: 6,\r\n    chapter: \"CH 3: General Provisions (Construction)\",\r\n    question: \"The exemption of Government buildings from the operation of municipal bye laws \u2014 by virtue of which the approval of architectural drawings from local bodies is not required \u2014 is provided under:\",\r\n    options: [\r\n      \"Section 3 of the Government Buildings Act, 1899\",\r\n      \"Article 299 of the Constitution of India\",\r\n      \"Rule 130 of the General Financial Rules, 2017\",\r\n      \"Section 3 of the Indian Contract Act\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Para 3.1.1.7<\/b><br><b>Section 3 of the Government Buildings Act, 1899<\/b> exempts Government buildings from the regulation of municipal bye laws. However, the Engineer-in-Charge shall still give notice to the local bodies before erection of a building.\"\r\n  },\r\n  {\r\n    id: 7,\r\n    chapter: \"CH 3: General Provisions (Construction)\",\r\n    question: \"The Schedules of Rates are ordinarily revised once in every:\",\r\n    options: [\r\n      \"one year\",\r\n      \"two years\",\r\n      \"three years\",\r\n      \"five years\"\r\n    ],\r\n    correct: 1,\r\n    explanation: \"<b>Para 3.1.1.9(ii)<\/b><br>The Schedules of Rates <b>are ordinarily revised once in two years<\/b>.\"\r\n  },\r\n  {\r\n    id: 8,\r\n    chapter: \"CH 3: General Provisions (Construction)\",\r\n    question: \"The cost index is to be issued as on which dates every year?\",\r\n    options: [\r\n      \"31st March and 30th September\",\r\n      \"1st January and 1st July\",\r\n      \"1st April and 1st October\",\r\n      \"1st April and 1st November\"\r\n    ],\r\n    correct: 2,\r\n    explanation: \"<b>Para 3.1.1.9(iv)<\/b><br>The cost index shall be issued as on <b>1st April and 1st October every year<\/b>.\"\r\n  },\r\n  {\r\n    id: 9,\r\n    chapter: \"CH 3: General Provisions (Construction)\",\r\n    question: \"The Schedule of Rates for Delhi is issued by the:\",\r\n    options: [\r\n      \"Superintending Engineer concerned\",\r\n      \"Additional Director General of the Region\",\r\n      \"Chief Engineer (CSQ) Civil\",\r\n      \"Director General, Central Public Works Department\"\r\n    ],\r\n    correct: 3,\r\n    explanation: \"<b>Para 3.1.1.9(i)<\/b><br>The Schedule of Rates for Delhi is issued by the <b>Director General, Central Public Works Department<\/b> (Special Director Generals may issue the Schedule of Rates for their coordination jurisdiction).\"\r\n  },\r\n  {\r\n    id: 10,\r\n    chapter: \"CH 3: General Provisions (Construction)\",\r\n    question: \"The cost index for Delhi is to be issued by the:\",\r\n    options: [\r\n      \"Chief Engineer (CSQ) Civil\",\r\n      \"Director General, Central Public Works Department\",\r\n      \"Additional Director General \/ Special Director General\",\r\n      \"Superintending Engineer concerned\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Para 3.1.1.9(iv)<\/b><br>The cost index for Delhi is issued by the <b>Chief Engineer (CSQ) Civil<\/b>; for other places it is issued by the Additional Director General \/ Special Director General on the basis of details received from the Chief Engineer or Superintending Engineer concerned.\"\r\n  },\r\n  {\r\n    id: 11,\r\n    chapter: \"CH 3: General Provisions (Construction)\",\r\n    question: \"It is desirable that the Preliminary Estimates of specialized Electrical & Mechanical systems (such as Lifts, Heating Ventilation and Air Conditioning systems and Wet Riser & Sprinkler System) for budgeted works of the Ministry of Housing and Urban Affairs include a provision for maintenance and operation for a period of:\",\r\n    options: [\r\n      \"3 years\",\r\n      \"5 years\",\r\n      \"7 years\",\r\n      \"10 years\"\r\n    ],\r\n    correct: 1,\r\n    explanation: \"<b>Para 3.1.3(4)<\/b><br>It is desirable that Preliminary Estimates of specialized Electrical & Mechanical systems include a <b>5-year provision for maintenance\/comprehensive maintenance and operation<\/b> for budgeted works of the Ministry of Housing and Urban Affairs.\"\r\n  },\r\n  {\r\n    id: 12,\r\n    chapter: \"CH 3: General Provisions (Construction)\",\r\n    question: \"In the case of budgetary works of the Ministry of Housing and Urban Affairs, expenditure in excess of the Administrative Approval & Expenditure Sanction may be authorized by officers of the Central Public Works Department up to:\",\r\n    options: [\r\n      \"15% of the Administrative Approval & Expenditure Sanction amount\",\r\n      \"5% of the Administrative Approval & Expenditure Sanction amount\",\r\n      \"10% of the Administrative Approval & Expenditure Sanction amount\",\r\n      \"no excess is permissible in any case\"\r\n    ],\r\n    correct: 2,\r\n    explanation: \"<b>Para 3.1.4(3)<\/b><br>For budgetary works of the Ministry of Housing and Urban Affairs, excess <b>up to 10% of the Administrative Approval & Expenditure Sanction<\/b> may be authorized by officers of the Central Public Works Department, provided the total (including the excess) is within the officer's powers to accord technical sanction.\"\r\n  },\r\n  {\r\n    id: 13,\r\n    chapter: \"CH 3: General Provisions (Construction)\",\r\n    question: \"For Deposit works and works on letter of authorization, a revised estimate is to be submitted for works having expenditure in excess of:\",\r\n    options: [\r\n      \"20% of the Administrative Approval & Expenditure Sanction amount\",\r\n      \"5% of the Administrative Approval & Expenditure Sanction amount\",\r\n      \"15% of the Administrative Approval & Expenditure Sanction amount\",\r\n      \"10% of the Administrative Approval & Expenditure Sanction amount\"\r\n    ],\r\n    correct: 3,\r\n    explanation: \"<b>Para 3.1.4(1)<\/b><br>For Deposit works and works on letter of authorization, a revised estimate is to be submitted where the expenditure is in <b>excess of 10% of the Administrative Approval & Expenditure Sanction amount<\/b>.\"\r\n  },\r\n  {\r\n    id: 14,\r\n    chapter: \"CH 3: General Provisions (Construction)\",\r\n    question: \"The provision for contingencies of a sanctioned work can be utilized for which of the following?\\n1. Construction of a site office.\\n2. Engagement of watch and ward staff.\\n3. Hiring of an inspection vehicle.\\n4. Material testing and structural designing.\\n\\nSelect the correct answer using the code given below:\",\r\n    options: [\r\n      \"1 and 4 only\",\r\n      \"1, 2 and 3 only\",\r\n      \"2, 3 and 4 only\",\r\n      \"1, 2, 3 and 4\"\r\n    ],\r\n    correct: 3,\r\n    explanation: \"<b>Para 3.1.1.3(3)<\/b><br>Contingencies can be utilized for construction of a site office, engagement of watch & ward staff, job works such as surveying, material testing, estimating, structural designing, architectural drawings, models, and hiring of an inspection vehicle. Hence <b>all four<\/b> are correct.\"\r\n  },\r\n  {\r\n    id: 15,\r\n    chapter: \"CH 3: General Provisions (Construction)\",\r\n    question: \"The coordination of all pre-construction activities involved in the execution of a construction work is to be done by the:\",\r\n    options: [\r\n      \"Technical Sanction Authority\",\r\n      \"Engineer-in-Charge\",\r\n      \"Notice Inviting Tender approving authority\",\r\n      \"client department\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Para 3.1<\/b><br>Coordination of all pre-construction activities will be done by the <b>Technical Sanction Authority<\/b>.\"\r\n  },\r\n  {\r\n    id: 16,\r\n    chapter: \"CH 3: General Provisions (Construction)\",\r\n    question: \"Tenders for all Specialized Works are to be invited through which system?\",\r\n    options: [\r\n      \"Single Bid system\",\r\n      \"Two\/Three Bid system\",\r\n      \"Percentage Rate Tender only\",\r\n      \"award without call of tenders\"\r\n    ],\r\n    correct: 1,\r\n    explanation: \"<b>Para 3.1.3(1)<\/b><br>Tenders for all Specialized Works shall be invited in the <b>Two\/Three Bid system<\/b> from specialized agencies as well as Central Public Works Department and non-Central Public Works Department contractors, subject to fulfilling the eligibility criteria.\"\r\n  },\r\n  {\r\n    id: 17,\r\n    chapter: \"CH 3: General Provisions (Construction)\",\r\n    question: \"When a Technical Sanction Authority splits a sanctioned work into packages, the tender for any package is to be accepted by the officer as per the:\",\r\n    options: [\r\n      \"powers to sanction extra items\",\r\n      \"powers to accord Administrative Approval\",\r\n      \"financial powers delegated for acceptance of the lowest tender\",\r\n      \"discretion of the Engineer-in-Charge\"\r\n    ],\r\n    correct: 2,\r\n    explanation: \"<b>Para 3.1.1.8(iv)<\/b><br>Tender for any package is to be accepted by the officer as per the <b>financial powers delegated for acceptance of the lowest tender<\/b>. The Technical Sanction Authority may split the work into packages with recorded reasons.\"\r\n  },\r\n  {\r\n    id: 18,\r\n    chapter: \"CH 3: General Provisions (Construction)\",\r\n    question: \"The Technical Sanction for all works, except emergent works, shall be issued:\",\r\n    options: [\r\n      \"only after completion of the work\",\r\n      \"after opening of the financial bids\",\r\n      \"after award of the work\",\r\n      \"before inviting tenders\/work orders\"\r\n    ],\r\n    correct: 3,\r\n    explanation: \"<b>Para 3.1.1.6(1)<\/b><br>The Technical Sanction for all works, except emergent works, shall be issued <b>before inviting tenders\/work orders<\/b>.\"\r\n  },\r\n  {\r\n    id: 19,\r\n    chapter: \"CH 3: General Provisions (Construction)\",\r\n    question: \"In the case of Deposit works, the scope of work shall not be altered, either during preparation of the Detailed Estimate or during execution, without:\",\r\n    options: [\r\n      \"the written permission of the client\",\r\n      \"the approval of the Director General, Central Public Works Department\",\r\n      \"a revised Technical Sanction\",\r\n      \"the approval of the Ministry of Finance\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Para 3.1.2.1(4)<\/b><br>For Deposit works, the scope of work shall not be altered during preparation of the Detailed Estimate or during execution <b>without the written permission of the client<\/b>.\"\r\n  },\r\n  {\r\n    id: 20,\r\n    chapter: \"CH 3: General Provisions (Construction)\",\r\n    question: \"The competent authority of the Administrative Ministry\/Department\/Client accords the Administrative Approval & Expenditure Sanction on the basis of the:\",\r\n    options: [\r\n      \"Measurement Book\",\r\n      \"Preliminary Estimate \/ Preliminary Project Report \/ Detailed Project Report\",\r\n      \"Schedule of Rates alone\",\r\n      \"Justification of Tenders\"\r\n    ],\r\n    correct: 1,\r\n    explanation: \"<b>Para 3.1.1.5<\/b><br>The competent authority accords the Administrative Approval & Expenditure Sanction on the basis of the <b>Preliminary Estimate \/ Preliminary Project Report \/ Detailed Project Report<\/b>, as the case may be.\"\r\n  },\r\n  {\r\n    id: 21,\r\n    chapter: \"CH 3: General Provisions (Construction)\",\r\n    question: \"For works of attached and subordinate offices (such as the Directorate of Estates and the Land & Development Office) under the Ministry of Housing and Urban Affairs budgetary head, the Administrative Approval is issued by the respective Department, while the Expenditure Sanction is issued by the:\",\r\n    options: [\r\n      \"client department itself\",\r\n      \"Ministry of Finance\",\r\n      \"competent authority of the Central Public Works Department\",\r\n      \"Director General, Central Public Works Department only\"\r\n    ],\r\n    correct: 2,\r\n    explanation: \"<b>Para 3.1.1.5(2)<\/b><br>For attached and subordinate offices, the Administrative Approval is issued by the respective Department, and the Expenditure Sanction is issued by the <b>competent authority of the Central Public Works Department<\/b> (subject to availability of funds).\"\r\n  },\r\n  {\r\n    id: 22,\r\n    chapter: \"CH 3: General Provisions (Construction)\",\r\n    question: \"Match List-I (category of work of local bodies\/Public Sector Undertakings) with List-II (rate of Departmental Charges) and select the correct answer using the code given below:\\n\\nList-I (Category)\\nA. All maintenance works and minor works\\nB. Construction works costing Rs. 100 crore or more\\nC. Construction works costing below Rs. 100 crore\\n\\nList-II (Rate)\\n1. 4.0%\\n2. 5.50%\\n3. 10.0%\",\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>Para 3.1.1.4<\/b><br>A \u2192 3 (maintenance\/minor works = 10.0%); B \u2192 1 (Rs. 100 crore or more = 4.0%); C \u2192 2 (below Rs. 100 crore = 5.50%). Hence <b>A-3, B-1, C-2<\/b>.\"\r\n  },\r\n  {\r\n    id: 23,\r\n    chapter: \"CH 3: General Provisions (Construction)\",\r\n    question: \"The Technical Sanction Authority, after obtaining approval from the client, has full powers (up to its tender acceptance limits) to execute smaller works likely to crop up during execution, subject to availability of funds under which sub-head of the sanctioned estimate?\",\r\n    options: [\r\n      \"\\\"Suspense\\\"\",\r\n      \"\\\"Departmental Charges\\\"\",\r\n      \"\\\"Establishment\\\"\",\r\n      \"\\\"Contingencies\\\"\"\r\n    ],\r\n    correct: 3,\r\n    explanation: \"<b>Para 3.1.1.3(2)<\/b><br>The Technical Sanction Authority has full powers, up to its tender acceptance limits, to execute smaller works subject to availability of funds under the sub-head <b>\\\"Contingencies\\\"<\/b> in the sanctioned project estimate.\"\r\n  },\r\n  {\r\n    id: 24,\r\n    chapter: \"CH 4: Modes of Bidding System\",\r\n    question: \"Earnest Money Deposit is exempted for works awarded to registered labour Co-operative Societies with an estimated cost up to:\",\r\n    options: [\r\n      \"Rs. 3 lakhs\",\r\n      \"Rs. 2 lakhs\",\r\n      \"Rs. 5 lakhs\",\r\n      \"Rs. 50,000\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Para 4.2(1)<\/b><br>Earnest Money Deposit is exempted for works with estimated cost <b>up to Rs. 3 lakhs<\/b>; however, Security Deposit shall still be deducted from their bills.\"\r\n  },\r\n  {\r\n    id: 25,\r\n    chapter: \"CH 4: Modes of Bidding System\",\r\n    question: \"In respect of works awarded to registered labour Co-operative Societies, monthly running payments may be made if the value of work executed is more than:\",\r\n    options: [\r\n      \"Rs. 25,000\",\r\n      \"Rs. 50,000\",\r\n      \"Rs. 1,00,000\",\r\n      \"Rs. 3,00,000\"\r\n    ],\r\n    correct: 1,\r\n    explanation: \"<b>Para 4.2(2)<\/b><br>Monthly running payments may be made if the value of work executed is <b>more than Rs. 50,000<\/b>.\"\r\n  },\r\n  {\r\n    id: 26,\r\n    chapter: \"CH 4: Modes of Bidding System\",\r\n    question: \"With reference to the award of works to contractors belonging to Scheduled Castes and Scheduled Tribes, consider the following:\\n1. A price preference up to 5% may be allowed in favour of an individual SC\/ST contractor.\\n2. For works up to an estimated cost of Rs. 2.70 lakh, no earnest money is required.\\n3. For works beyond Rs. 2.70 lakh and up to Rs. 6.20 lakh, earnest money at a reduced rate of half per cent may be accepted.\\n\\nWhich of the statements is\/are correct?\",\r\n    options: [\r\n      \"1 and 2 only\",\r\n      \"2 and 3 only\",\r\n      \"1 and 3 only\",\r\n      \"1, 2 and 3\"\r\n    ],\r\n    correct: 3,\r\n    explanation: \"<b>Para 4.3.1 & 4.3.2<\/b><br>1 \u2713 (price preference up to 5%); 2 \u2713 (no earnest money for works up to Rs. 2.70 lakh); 3 \u2713 (beyond Rs. 2.70 lakh and up to Rs. 6.20 lakh, earnest money at a reduced rate of half per cent). Hence <b>all three<\/b> are correct.\"\r\n  },\r\n  {\r\n    id: 27,\r\n    chapter: \"CH 4: Modes of Bidding System\",\r\n    question: \"For award of works to contractors belonging to Scheduled Castes\/Scheduled Tribes, tenders may be invited only from Central Public Works Department enlisted contractors when the estimated cost is beyond Rs. 2.70 lakh and up to:\",\r\n    options: [\r\n      \"Rs. 10.00 lakh\",\r\n      \"Rs. 5.00 lakh\",\r\n      \"Rs. 6.20 lakh\",\r\n      \"Rs. 2.70 lakh\"\r\n    ],\r\n    correct: 2,\r\n    explanation: \"<b>Para 4.3.2<\/b><br>For works beyond Rs. 2.70 lakh and <b>up to Rs. 6.20 lakh<\/b>, tenders may be invited only from Central Public Works Department enlisted contractors, with a price preference up to 5% and earnest money at a reduced rate of half per cent.\"\r\n  },\r\n  {\r\n    id: 28,\r\n    chapter: \"CH 4: Modes of Bidding System\",\r\n    question: \"The price-preference concessions for contractors belonging to Scheduled Castes\/Scheduled Tribes are stated to be admissible up to:\",\r\n    options: [\r\n      \"31.12.2026\",\r\n      \"31.12.2024\",\r\n      \"31.03.2025\",\r\n      \"31.12.2025\"\r\n    ],\r\n    correct: 3,\r\n    explanation: \"<b>Para 4.3.3<\/b><br>These concessions will be admissible <b>up to 31.12.2025<\/b>.\"\r\n  },\r\n  {\r\n    id: 29,\r\n    chapter: \"CH 4: Modes of Bidding System\",\r\n    question: \"Match List-I (tender situation) with List-II (desirable publicity time limit) and select the correct answer using the code given below:\\n\\nList-I (Situation)\\nA. Estimated cost put to tender up to Rs. 5 crore\\nB. Estimated cost put to tender more than Rs. 5 crore (single bid system)\\nC. Two\/three bid system\\nD. Short notice tender (minimum)\\n\\nList-II (Time limit)\\n1. 21 days\\n2. 3 days\\n3. 7 days\\n4. 14 days\",\r\n    options: [\r\n      \"A-3, B-4, C-1, D-2\",\r\n      \"A-4, B-3, C-1, D-2\",\r\n      \"A-3, B-4, C-2, D-1\",\r\n      \"A-1, B-4, C-3, D-2\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Para 4.13<\/b><br>A \u2192 3 (up to Rs. 5 crore = 7 days); B \u2192 4 (more than Rs. 5 crore, single bid = 14 days); C \u2192 1 (two\/three bid = 21 days); D \u2192 2 (short notice, minimum = 3 days). Hence <b>A-3, B-4, C-1, D-2<\/b>.\"\r\n  },\r\n  {\r\n    id: 30,\r\n    chapter: \"CH 4: Modes of Bidding System\",\r\n    question: \"For tenders invited under the two\/three bid system, the desirable publicity time limit is 21 days, subject to the condition that the minimum period given for submission of the bid after issue of clarifications\/modifications consequent to the pre-bid meeting shall be:\",\r\n    options: [\r\n      \"14 days\",\r\n      \"7 days\",\r\n      \"21 days\",\r\n      \"3 days\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Para 4.13.1(iii)<\/b><br>For the two\/three bid system the desirable limit is 21 days, subject to a <b>minimum of 14 days<\/b> for submission of the bid after issue of clarifications\/modifications consequent to the pre-bid meeting.\"\r\n  },\r\n  {\r\n    id: 31,\r\n    chapter: \"CH 4: Modes of Bidding System\",\r\n    question: \"The validity period for acceptance of tenders, in cases where only financial bids are invited, shall be:\",\r\n    options: [\r\n      \"75 days from the last date of receipt of bids\",\r\n      \"30 days from the last date of receipt of bids\",\r\n      \"45 days from the last date of receipt of bids\",\r\n      \"90 days from the last date of receipt of bids\"\r\n    ],\r\n    correct: 1,\r\n    explanation: \"<b>Para 4.14<\/b><br>Where only financial bids are invited, the validity period is <b>30 days from the last date of receipt of bids<\/b>.\"\r\n  },\r\n  {\r\n    id: 32,\r\n    chapter: \"CH 4: Modes of Bidding System\",\r\n    question: \"In all cases other than where only financial bids are invited, the validity period for acceptance of tenders shall be:\",\r\n    options: [\r\n      \"60 days from the last day of receipt of the technical bid\",\r\n      \"30 days from the last day of receipt of the technical bid\",\r\n      \"75 days from the last day of receipt of the technical bid\",\r\n      \"90 days from the last day of receipt of the technical bid\"\r\n    ],\r\n    correct: 2,\r\n    explanation: \"<b>Para 4.14<\/b><br>In all other cases, the validity period is <b>75 days from the last day of receipt of the technical bid<\/b>.\"\r\n  },\r\n  {\r\n    id: 33,\r\n    chapter: \"CH 4: Modes of Bidding System\",\r\n    question: \"The responsibility for obtaining the validity of a tender rests with the:\",\r\n    options: [\r\n      \"Chief Engineer\",\r\n      \"Notice Inviting Tender approving authority\",\r\n      \"Superintending Engineer\",\r\n      \"Executive Engineer\"\r\n    ],\r\n    correct: 3,\r\n    explanation: \"<b>Para 4.14<\/b><br>The responsibility for obtaining the validity of the tender is that of the <b>Executive Engineer<\/b>, who must keep a close watch at every stage.\"\r\n  },\r\n  {\r\n    id: 34,\r\n    chapter: \"CH 4: Modes of Bidding System\",\r\n    question: \"The cutoff value of projects, above which all contracts are to be taken up under the Engineering, Procurement and Construction methodology, is:\",\r\n    options: [\r\n      \"Rs. 100 crore\",\r\n      \"Rs. 50 crore\",\r\n      \"Rs. 200 crore\",\r\n      \"Rs. 300 crore\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Para 4.8<\/b><br>The cutoff value above which all contracts are taken up under the Engineering, Procurement and Construction methodology is <b>Rs. 100 crore<\/b> (as decided and notified by the Ministry of Housing and Urban Affairs \/ Central Public Works Department from time to time).\"\r\n  },\r\n  {\r\n    id: 35,\r\n    chapter: \"CH 4: Modes of Bidding System\",\r\n    question: \"In the Engineering, Procurement and Construction mode, the order of preference of tendering is:\",\r\n    options: [\r\n      \"Mode III, then Mode II, then Mode I\",\r\n      \"Mode I, then Mode II, then Mode III\",\r\n      \"Mode II, then Mode I, then Mode III\",\r\n      \"Mode I, then Mode III, then Mode II\"\r\n    ],\r\n    correct: 1,\r\n    explanation: \"<b>Para 4.8<\/b><br>The order of preference is <b>Mode I (Technology Neutral \u2014 Preferred), Mode II (Technology Neutral \u2014 Second), and Mode III (Technology Pre-Selected \u2014 Third)<\/b>.\"\r\n  },\r\n  {\r\n    id: 36,\r\n    chapter: \"CH 4: Modes of Bidding System\",\r\n    question: \"In the Engineering, Procurement and Construction mode, tenders can be invited under Mode III only if which of the following is satisfied?\\n1. The client resolves for a particular technology.\\n2. The client has already finalized all drawings.\\n3. The functional requirement of the work or site so demands.\\n\\nSelect the correct answer using the code given below:\",\r\n    options: [\r\n      \"1 and 2 only\",\r\n      \"2 and 3 only\",\r\n      \"1 and 3 only\",\r\n      \"1, 2 or 3\"\r\n    ],\r\n    correct: 3,\r\n    explanation: \"<b>Para 4.8<\/b><br>Tenders can be invited under Mode III only if <b>any one of<\/b> (a) the client resolves for a particular technology, (b) the client has already finalized all drawings, or (c) the functional\/site requirement so demands \u2014 i.e. <b>1, 2 or 3<\/b>.\"\r\n  },\r\n\r\n  {\r\n    id: 39,\r\n    chapter: \"CH 4: Modes of Bidding System\",\r\n    question: \"Where a bidder associates with a contractor for the opted technology in the Engineering, Procurement and Construction mode, the associated contractor must have successfully completed one work of that technology with the cost of the structural system not less than what percentage of the estimated cost put to tender (during the last seven years)?\",\r\n    options: [\r\n      \"20%\",\r\n      \"10%\",\r\n      \"30%\",\r\n      \"50%\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Para 4.8(11)<\/b><br>The associated contractor must have completed one work of the opted technology with the cost of the structural system <b>not less than 20% of the estimated cost put to tender<\/b> during the last seven years.\"\r\n  },\r\n  {\r\n    id: 40,\r\n    chapter: \"CH 4: Modes of Bidding System\",\r\n    question: \"In the Engineering, Procurement and Construction mode, if the separate cost of the structural system of a particular technology is not available in the experience certificate of the associated contractor, it will be taken as what percentage of the completed cost of the project\/work?\",\r\n    options: [\r\n      \"20%\",\r\n      \"30%\",\r\n      \"50%\",\r\n      \"10%\"\r\n    ],\r\n    correct: 1,\r\n    explanation: \"<b>Para 4.8<\/b><br>Where the separate cost of the structural system is not available in the experience certificate, it will be taken as <b>30% of the completed cost of the project\/work<\/b>.\"\r\n  },\r\n  {\r\n    id: 41,\r\n    chapter: \"CH 4: Modes of Bidding System\",\r\n    question: \"As per the amendment to the General Financial Rules, 2017, no Global Tender Enquiry shall ordinarily be invited for tenders up to:\",\r\n    options: [\r\n      \"Rs. 300 crore\",\r\n      \"Rs. 100 crore\",\r\n      \"Rs. 200 crore\",\r\n      \"Rs. 50 crore\"\r\n    ],\r\n    correct: 2,\r\n    explanation: \"<b>Para 4.5.4<\/b><br>Under the amendment to rule 161(iv) of the General Financial Rules, 2017, <b>no Global Tender Enquiry shall be invited for tenders up to Rs. 200 crore<\/b> (or such limit as prescribed by the Ministry of Finance).\"\r\n  },\r\n  {\r\n    id: 42,\r\n    chapter: \"CH 4: Modes of Bidding System\",\r\n    question: \"In the Two Bid System of tendering, the two bids called for are:\",\r\n    options: [\r\n      \"an Eligibility bid and a Financial bid\",\r\n      \"an Eligibility bid and a Technical specifications bid\",\r\n      \"a Technical specifications bid and a Financial bid\",\r\n      \"a Technical cum eligibility bid and a Financial bid\"\r\n    ],\r\n    correct: 3,\r\n    explanation: \"<b>Para 4.5.3(1)<\/b><br>In the Two Bid System, Bid-1 is the <b>Technical cum eligibility bid<\/b> and Bid-2 is the <b>Financial bid<\/b>.\"\r\n  },\r\n  {\r\n    id: 43,\r\n    chapter: \"CH 4: Modes of Bidding System\",\r\n    question: \"In the Three Bid System of tendering, the three bids to be submitted, in order, are:\",\r\n    options: [\r\n      \"Eligibility bid, Technical specifications, Financial bid\",\r\n      \"Technical specifications, Eligibility bid, Financial bid\",\r\n      \"Financial bid, Eligibility bid, Technical specifications\",\r\n      \"Eligibility bid, Financial bid, Technical specifications\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Para 4.5.3(2)<\/b><br>In the Three Bid System the bids are Bid-1 <b>Eligibility bid<\/b>, Bid-2 <b>Technical specifications<\/b>, and Bid-3 <b>Financial bid<\/b>.\"\r\n  },\r\n  {\r\n    id: 44,\r\n    chapter: \"CH 4: Modes of Bidding System\",\r\n    question: \"The system of composite tendering shall be followed for all kinds of building and road works:\",\r\n    options: [\r\n      \"only for works costing above Rs. 100 crore\",\r\n      \"irrespective of cost\",\r\n      \"only for works costing above Rs. 50 crore\",\r\n      \"only for maintenance works\"\r\n    ],\r\n    correct: 1,\r\n    explanation: \"<b>Para 4.5.2(1)<\/b><br>The system of composite tendering shall be followed for all kinds of building and road works, <b>irrespective of cost<\/b>.\"\r\n  },\r\n  {\r\n    id: 45,\r\n    chapter: \"CH 4: Modes of Bidding System\",\r\n    question: \"Apart from civil work and horticulture work, a composite tender should also include the component of:\",\r\n    options: [\r\n      \"arbitration and litigation charges\",\r\n      \"land acquisition and rehabilitation\",\r\n      \"internal electric installations and other internal & external electrical works including services\",\r\n      \"departmental charges and contingencies\"\r\n    ],\r\n    correct: 2,\r\n    explanation: \"<b>Para 4.5.2(1)<\/b><br>Apart from civil and horticulture work, a composite tender should also include <b>internal electric installations and other internal & external electrical works including services<\/b>.\"\r\n  },\r\n  {\r\n    id: 46,\r\n    chapter: \"CH 4: Modes of Bidding System\",\r\n    question: \"All tenders are to be invited on behalf of the President of India, and the words to be incorporated in all Notices Inviting Tender are:\",\r\n    options: [\r\n      \"\\\"On behalf of the Ministry of Housing and Urban Affairs\\\"\",\r\n      \"\\\"On behalf of the Central Public Works Department\\\"\",\r\n      \"\\\"For & on behalf of the Government of India\\\"\",\r\n      \"\\\"For & on behalf of the President of India\\\"\"\r\n    ],\r\n    correct: 3,\r\n    explanation: \"<b>Para 4.10(1)<\/b><br>The words <b>\\\"For & on behalf of the President of India\\\"<\/b> should be incorporated in all Notices Inviting Tender.\"\r\n  },\r\n  {\r\n    id: 47,\r\n    chapter: \"CH 4: Modes of Bidding System\",\r\n    question: \"The estimated cost put to tender in the Notice Inviting Tender shall be worked out based on the rates considered in the:\",\r\n    options: [\r\n      \"Technical Sanction\",\r\n      \"Administrative Approval & Expenditure Sanction\",\r\n      \"Preliminary Estimate\",\r\n      \"Schedule of Rates for the previous year\"\r\n    ],\r\n    correct: 0,\r\n    explanation: \"<b>Para 4.10(2)<\/b><br>The estimated cost put to tender in the Notice Inviting Tender shall be worked out based on the rates considered in the <b>Technical Sanction<\/b>.\"\r\n  },\r\n  {\r\n    id: 48,\r\n    chapter: \"CH 4: Modes of Bidding System\",\r\n    question: \"If, after a Notice Inviting Tender has been issued, the change in the estimated cost put to tender is more than plus\/minus 2 per cent (or the variation in the amount of an individual item is more than 10%), then:\",\r\n    options: [\r\n      \"the tender may proceed without any change\",\r\n      \"the Notice Inviting Tender is to be revised and tenders re-invited afresh\",\r\n      \"only the estimated cost is corrected, without re-inviting tenders\",\r\n      \"the work is to be awarded without call of tenders\"\r\n    ],\r\n    correct: 1,\r\n    explanation: \"<b>Para 4.10(4)<\/b><br>If the change in the estimated cost put to tender is more than plus\/minus 2 per cent, or the variation in an individual item is more than 10%, and the Notice Inviting Tender is already issued, then the <b>Notice Inviting Tender is to be revised and tenders re-invited afresh<\/b>.\"\r\n  },\r\n  {\r\n    id: 49,\r\n    chapter: \"CH 4: Modes of Bidding System\",\r\n    question: \"Tenders for works costing up to the maximum tendering limit of Central Public Works Department contractors enlisted in Class-I of the Buildings & Roads\/Horticulture category are, as a rule, to be invited under:\",\r\n    options: [\r\n      \"restricted tenders\",\r\n      \"the Two\/Three Bid system\",\r\n      \"the Single Bid system\",\r\n      \"a Global Tender Enquiry\"\r\n    ],\r\n    correct: 2,\r\n    explanation: \"<b>Para 4.11(2)<\/b><br>Tenders up to the maximum tendering limit of Class-I contractors are invited under the <b>Single Bid system<\/b>; works costing more than that limit are invited under the Two\/Three Bid System.\"\r\n  },\r\n  {\r\n    id: 50,\r\n    chapter: \"CH 4: Modes of Bidding System\",\r\n    question: \"In respect of works of inescapable nature awarded without call of tenders, the quotation accepting authority may decide the publicity period (except in the case of spot quotations), subject to a minimum period of:\",\r\n    options: [\r\n      \"three working days\",\r\n      \"two working days\",\r\n      \"five working days\",\r\n      \"seven working days\"\r\n    ],\r\n    correct: 1,\r\n    explanation: \"<b>Para 4.1(4)<\/b><br>The quotation accepting authority may decide the publicity period (except for spot quotations), subject to a <b>minimum of two working days<\/b>.\"\r\n  },\r\n\r\n  \r\n  {\r\n    id: 55,\r\n    chapter: \"CH 4: Modes of Bidding System\",\r\n    question: \"If no response is received from contractors of the appropriate class, or unreasonably high rates are received, one of the measures the Notice Inviting Tender approving authority may take (after approval of the Additional Director General\/Special Director General) is to:\",\r\n    options: [\r\n      \"reduce the estimated cost put to tender by 10%\",\r\n      \"award the work departmentally without any tender\",\r\n      \"open the tenders to the next lower class, including contractors registered with other departments such as the Railways and State Public Works Departments\",\r\n      \"cancel the work permanently\"\r\n    ],\r\n    correct: 2,\r\n    explanation: \"<b>Para 4.15<\/b><br>The Notice Inviting Tender approving authority may <b>open the tenders to the next lower class, including contractors registered with other departments such as the Railways and State Public Works Departments<\/b>, and\/or suitably modify the eligibility criteria.\"\r\n  }];\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-13882","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/promotionexams.com\/index.php?rest_route=\/wp\/v2\/pages\/13882","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=13882"}],"version-history":[{"count":19,"href":"https:\/\/promotionexams.com\/index.php?rest_route=\/wp\/v2\/pages\/13882\/revisions"}],"predecessor-version":[{"id":13903,"href":"https:\/\/promotionexams.com\/index.php?rest_route=\/wp\/v2\/pages\/13882\/revisions\/13903"}],"wp:attachment":[{"href":"https:\/\/promotionexams.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=13882"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/promotionexams.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=13882"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/promotionexams.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=13882"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}