{"id":5745,"date":"2025-12-22T07:43:09","date_gmt":"2025-12-22T07:43:09","guid":{"rendered":"https:\/\/promotionexams.com\/?page_id=5745"},"modified":"2026-01-30T15:25:39","modified_gmt":"2026-01-30T15:25:39","slug":"previous-year-papers-delegation-of-financial-power-rulesdfpr","status":"publish","type":"page","link":"https:\/\/promotionexams.com\/?page_id=5745","title":{"rendered":"Previous Year Papers-Delegation of Financial Power Rules(DFPR)"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"5745\" class=\"elementor elementor-5745\">\n\t\t\t\t<div class=\"elementor-element elementor-element-34d1428 e-con-full e-flex e-con e-parent\" data-id=\"34d1428\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-52d1a3c elementor-widget elementor-widget-html\" data-id=\"52d1a3c\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!--\n============================================\nCSS ADDA - LDCE QUIZ WITH PROGRESS TRACKING\n& SMART WEAK AREAS PRACTICE SYSTEM\n============================================\nFIXES APPLIED:\n1. Year\/Chapter filters now use EVENT DELEGATION (not inline onclick)\n2. Reset Session now clears weak areas\n3. Filter state properly maintained\n============================================\n-->\n\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.4.0\/css\/all.min.css\">\n\n<style>\n\/* ========================================\n   CSS ADDA - ENHANCED QUIZ STYLES\n======================================== *\/\n\n:root {\n    --primary-blue: #2563EB;\n    --primary-blue-dark: #1D4ED8;\n    --primary-blue-light: #3B82F6;\n    --accent-orange: #ff6b35;\n    --accent-orange-light: #f59e0b;\n    --accent-orange-dark: #d97706;\n    --success-green: #10B981;\n    --success-green-light: #d1fae5;\n    --error-red: #EF4444;\n    --error-red-light: #fee2e2;\n    --warning-yellow: #fbbf24;\n    --bg-light: #F8FAFC;\n    --bg-card: #FFFFFF;\n    --text-dark: #1E293B;\n    --text-medium: #475569;\n    --text-light: #94A3B8;\n    --border-color: #E2E8F0;\n    --shadow-sm: 0 1px 2px 0 rgb(0 0 0 \/ 0.05);\n    --shadow-md: 0 4px 6px -1px rgb(0 0 0 \/ 0.1), 0 2px 4px -2px rgb(0 0 0 \/ 0.1);\n    --shadow-lg: 0 10px 15px -3px rgb(0 0 0 \/ 0.1), 0 4px 6px -4px rgb(0 0 0 \/ 0.1);\n    --shadow-xl: 0 20px 25px -5px rgb(0 0 0 \/ 0.1), 0 8px 10px -6px rgb(0 0 0 \/ 0.1);\n    --radius-sm: 6px;\n    --radius-md: 10px;\n    --radius-lg: 14px;\n    --radius-xl: 20px;\n}\n\n\/* Reset *\/\n.ldce-quiz-wrapper * {\n    margin: 0;\n    padding: 0;\n    box-sizing: border-box;\n}\n\n.ldce-quiz-wrapper {\n    font-family: 'Source Sans 3', -apple-system, BlinkMacSystemFont, sans-serif;\n    background: linear-gradient(135deg, #EFF6FF 0%, #F8FAFC 50%, #FFFBEB 100%);\n    color: var(--text-dark);\n    -webkit-user-select: none;\n    -moz-user-select: none;\n    -ms-user-select: none;\n    user-select: none;\n    border-radius: var(--radius-lg);\n    overflow: hidden;\n    box-shadow: var(--shadow-lg);\n}\n\n@media print {\n    .ldce-quiz-wrapper { display: none !important; }\n}\n\n\/* ========================================\n   HEADER\n======================================== *\/\n.quiz-header {\n    background: linear-gradient(135deg, var(--primary-blue-dark) 0%, var(--primary-blue) 100%);\n    padding: 18px 24px;\n}\n\n.header-content {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    flex-wrap: wrap;\n    gap: 15px;\n}\n\n.topic-title {\n    display: flex;\n    align-items: center;\n    gap: 14px;\n}\n\n.topic-icon {\n    width: 48px;\n    height: 48px;\n    background: rgba(255, 255, 255, 0.15);\n    border-radius: var(--radius-md);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    font-size: 20px;\n    color: var(--accent-orange-light);\n}\n\n.topic-info h1 {\n    font-family: 'Poppins', sans-serif;\n    font-size: 1.3rem;\n    font-weight: 700;\n    color: white;\n}\n\n.topic-info p {\n    font-size: 0.8rem;\n    color: rgba(255, 255, 255, 0.8);\n    margin-top: 2px;\n}\n\n.header-stats {\n    display: flex;\n    gap: 10px;\n}\n\n.stat-badge {\n    background: rgba(255, 255, 255, 0.15);\n    padding: 8px 14px;\n    border-radius: var(--radius-xl);\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    color: white;\n    font-weight: 500;\n    font-size: 0.82rem;\n}\n\n.stat-badge i { color: var(--accent-orange-light); }\n.stat-badge.progress-badge { background: linear-gradient(135deg, var(--success-green) 0%, #059669 100%); }\n.stat-badge.weak-badge { \n    background: linear-gradient(135deg, var(--error-red) 0%, #dc2626 100%); \n    cursor: pointer;\n    transition: transform 0.3s;\n}\n.stat-badge.weak-badge:hover { transform: scale(1.05); }\n\n\/* ========================================\n   MODE SELECTOR\n======================================== *\/\n.mode-selector {\n    background: var(--bg-card);\n    padding: 14px 20px;\n    border-bottom: 1px solid var(--border-color);\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    flex-wrap: wrap;\n    gap: 12px;\n}\n\n.mode-tabs {\n    display: flex;\n    gap: 8px;\n    flex-wrap: wrap;\n}\n\n.mode-tab {\n    padding: 9px 18px;\n    border: 2px solid var(--border-color);\n    border-radius: var(--radius-md);\n    background: var(--bg-light);\n    font-family: 'Poppins', sans-serif;\n    font-size: 0.8rem;\n    font-weight: 600;\n    color: var(--text-medium);\n    cursor: pointer;\n    transition: all 0.3s ease;\n    display: flex;\n    align-items: center;\n    gap: 6px;\n}\n\n.mode-tab:hover {\n    border-color: var(--primary-blue-light);\n    color: var(--primary-blue);\n}\n\n.mode-tab.active {\n    background: linear-gradient(135deg, var(--primary-blue) 0%, var(--primary-blue-dark) 100%);\n    border-color: var(--primary-blue);\n    color: white;\n}\n\n.mode-tab.weak-mode { border-color: var(--error-red); }\n.mode-tab.weak-mode.active {\n    background: linear-gradient(135deg, var(--error-red) 0%, #dc2626 100%);\n    border-color: var(--error-red);\n}\n\n.mode-tab .badge {\n    background: rgba(255, 255, 255, 0.3);\n    padding: 2px 8px;\n    border-radius: 20px;\n    font-size: 0.7rem;\n}\n\n.mode-tab:not(.active) .badge { background: var(--primary-blue); color: white; }\n.mode-tab.weak-mode:not(.active) .badge { background: var(--error-red); }\n\n.session-info {\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    font-size: 0.82rem;\n    color: var(--text-medium);\n}\n\n.session-info i { color: var(--accent-orange); }\n\n.resume-btn {\n    padding: 7px 14px;\n    background: linear-gradient(135deg, var(--accent-orange) 0%, var(--accent-orange-dark) 100%);\n    border: none;\n    border-radius: var(--radius-md);\n    color: white;\n    font-family: 'Poppins', sans-serif;\n    font-size: 0.78rem;\n    font-weight: 600;\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    gap: 5px;\n    transition: all 0.3s ease;\n}\n\n.resume-btn:hover {\n    transform: translateY(-2px);\n    box-shadow: var(--shadow-md);\n}\n\n\/* ========================================\n   MAIN LAYOUT - 3 COLUMN GRID\n======================================== *\/\n.quiz-container {\n    display: grid;\n    grid-template-columns: 250px 1fr 280px;\n    gap: 18px;\n    padding: 18px;\n    align-items: stretch;\n    min-height: 650px;\n}\n\n\/* ========================================\n   UNIFIED CARD STYLES\n======================================== *\/\n.quiz-card {\n    background: var(--bg-card);\n    border-radius: var(--radius-lg);\n    box-shadow: var(--shadow-md);\n    overflow: hidden;\n    display: flex;\n    flex-direction: column;\n}\n\n.quiz-card-header {\n    background: linear-gradient(135deg, var(--primary-blue) 0%, var(--primary-blue-dark) 100%);\n    padding: 14px 16px;\n    color: white;\n}\n\n.quiz-card-header h3 {\n    font-family: 'Poppins', sans-serif;\n    font-size: 0.85rem;\n    font-weight: 600;\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    color: white;\n}\n\n.quiz-card-header h3 i {\n    color: var(--accent-orange-light);\n}\n\n.quiz-card-header.light {\n    background: linear-gradient(135deg, var(--bg-light) 0%, #E0E7FF 100%);\n}\n\n.quiz-card-header.light h3 {\n    color: var(--primary-blue);\n}\n\n.quiz-card-header.light h3 i {\n    color: var(--accent-orange);\n}\n\n\n.quiz-card-body {\n    padding: 16px;\n    flex: 1;\n    display: flex;\n    flex-direction: column;\n}\n\n\/* ========================================\n   LEFT SIDEBAR\n======================================== *\/\n.left-sidebar {\n    display: flex;\n    flex-direction: column;\n    gap: 16px;\n    height: 100%;\n}\n\n.left-sidebar .quiz-card {\n    flex: none;\n    display: flex;\n    flex-direction: column;\n}\n\n.left-sidebar .quiz-card-body {\n    flex: 1;\n    display: flex;\n    flex-direction: column;\n}\n\n.left-sidebar .filter-list {\n    flex: 1;\n    max-height: 220px;\n}\n\n\/* Filter Lists *\/\n.filter-list {\n    display: flex;\n    flex-direction: column;\n    gap: 6px;\n    overflow-y: auto;\n    padding-right: 4px;\n    flex: 1;\n    max-height: 220px;\n}\n\n.filter-list::-webkit-scrollbar { width: 4px; }\n.filter-list::-webkit-scrollbar-track { background: var(--bg-light); border-radius: 10px; }\n.filter-list::-webkit-scrollbar-thumb { background: var(--primary-blue); border-radius: 10px; }\n\n.filter-item {\n    padding: 10px 12px;\n    border-radius: var(--radius-sm);\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    transition: all 0.3s ease;\n    border: 2px solid transparent;\n    background: var(--bg-light);\n    font-size: 0.82rem;\n}\n\n.filter-item:hover {\n    background: #EFF6FF;\n    border-color: var(--primary-blue-light);\n    transform: translateX(3px);\n}\n\n.filter-item.active {\n    background: linear-gradient(135deg, var(--primary-blue) 0%, var(--primary-blue-dark) 100%);\n    color: white;\n}\n\n.filter-item .filter-text {\n    font-weight: 600;\n    display: flex;\n    align-items: center;\n    gap: 6px;\n    font-size: 0.8rem;\n}\n\n.filter-item .filter-count {\n    background: rgba(255, 255, 255, 0.2);\n    padding: 2px 8px;\n    border-radius: 20px;\n    font-size: 0.7rem;\n    font-weight: 600;\n}\n\n.filter-item:not(.active) .filter-count {\n    background: var(--primary-blue);\n    color: white;\n}\n\n\/* Weak Areas Card *\/\n.weak-areas-card .quiz-card-header {\n    background: linear-gradient(135deg, var(--error-red) 0%, #dc2626 100%);\n}\n\n.weak-areas-card .quiz-card-body {\n    display: flex;\n    flex-direction: column;\n}\n\n.weak-question-list {\n    flex: 1;\n    overflow-y: auto;\n    margin-bottom: 10px;\n    max-height: 180px;\n}\n\n.weak-question-item {\n    background: var(--bg-light);\n    padding: 10px 12px;\n    border-radius: var(--radius-sm);\n    margin-bottom: 8px;\n    font-size: 0.78rem;\n    display: flex;\n    align-items: center;\n    gap: 10px;\n    cursor: pointer;\n    transition: all 0.3s ease;\n    border-left: 3px solid var(--error-red);\n}\n\n.weak-question-item:hover {\n    background: #fef2f2;\n    transform: translateX(3px);\n}\n\n.weak-question-item .q-num { \n    font-weight: 700; \n    color: var(--error-red);\n    flex-shrink: 0;\n}\n\n.weak-question-item .q-text {\n    flex: 1;\n    color: var(--text-medium);\n    font-size: 0.72rem;\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n}\n\n.weak-question-item .wrong-count {\n    background: var(--error-red);\n    color: white;\n    padding: 2px 6px;\n    border-radius: 20px;\n    font-size: 0.65rem;\n    font-weight: 600;\n}\n\n.practice-weak-btn {\n    width: 100%;\n    padding: 10px;\n    background: linear-gradient(135deg, var(--error-red) 0%, #dc2626 100%);\n    border: none;\n    border-radius: var(--radius-md);\n    color: white;\n    font-family: 'Poppins', sans-serif;\n    font-size: 0.8rem;\n    font-weight: 600;\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    gap: 6px;\n    margin-top: 10px;\n    transition: all 0.3s ease;\n}\n\n.practice-weak-btn:hover {\n    transform: translateY(-2px);\n    box-shadow: var(--shadow-md);\n}\n\n\/* ========================================\n   QUESTION PANEL (CENTER)\n======================================== *\/\n.question-panel {\n    background: var(--bg-card);\n    border-radius: var(--radius-lg);\n    box-shadow: var(--shadow-md);\n    overflow: hidden;\n    align-self: start;\n}\n\n.question-header {\n    background: linear-gradient(135deg, var(--bg-light) 0%, #E0E7FF 100%);\n    padding: 14px 20px;\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    border-bottom: 1px solid var(--border-color);\n    flex-wrap: wrap;\n    gap: 10px;\n}\n\n.question-number {\n    font-family: 'Poppins', sans-serif;\n    font-size: 0.95rem;\n    font-weight: 600;\n    color: var(--primary-blue);\n}\n\n.question-meta {\n    display: flex;\n    gap: 8px;\n    align-items: center;\n    flex-wrap: wrap;\n}\n.question-text {\n    white-space: pre-line;\n}\n\n.meta-badge {\n    padding: 5px 10px;\n    border-radius: 20px;\n    font-size: 0.75rem;\n    font-weight: 600;\n    display: flex;\n    align-items: center;\n    gap: 4px;\n}\n\n.meta-badge.year {\n    background: linear-gradient(135deg, var(--primary-blue) 0%, var(--primary-blue-dark) 100%);\n    color: white;\n}\n\n.meta-badge.chapter {\n    background: linear-gradient(135deg, var(--accent-orange) 0%, var(--accent-orange-dark) 100%);\n    color: white;\n}\n\n.meta-badge.weak {\n    background: linear-gradient(135deg, var(--error-red) 0%, #dc2626 100%);\n    color: white;\n}\n\n.meta-badge i { font-size: 0.65rem; }\n\n.question-body {\n    padding: 22px;\n}\n\n.question-text {\n    font-size: 1.05rem;\n    line-height: 1.7;\n    color: var(--text-dark);\n    padding: 16px 20px;\n    background: linear-gradient(135deg, #F8FAFC 0%, #F1F5F9 100%);\n    border-left: 4px solid var(--primary-blue);\n    border-radius: 0 var(--radius-md) var(--radius-md) 0;\n    margin-bottom: 20px;\n}\n\n\/* Options *\/\n.options-list {\n    display: flex;\n    flex-direction: column;\n    gap: 10px;\n}\n\n.option-item {\n    padding: 14px 18px;\n    border: 2px solid var(--border-color);\n    border-radius: var(--radius-md);\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    transition: all 0.3s ease;\n    background: white;\n}\n\n.option-item:hover:not(.disabled) {\n    border-color: var(--primary-blue-light);\n    background: #EFF6FF;\n    transform: translateX(4px);\n}\n\n.option-item.selected {\n    border-color: var(--primary-blue);\n    background: linear-gradient(135deg, #EFF6FF 0%, #DBEAFE 100%);\n}\n\n.option-item.correct {\n    border-color: var(--success-green);\n    background: linear-gradient(135deg, #D1FAE5 0%, #A7F3D0 100%);\n}\n\n.option-item.incorrect {\n    border-color: var(--error-red);\n    background: linear-gradient(135deg, #FEE2E2 0%, #FECACA 100%);\n}\n\n.option-item.disabled { cursor: default; }\n\n.option-letter {\n    width: 34px;\n    height: 34px;\n    border-radius: 50%;\n    background: var(--bg-light);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    font-weight: 700;\n    font-size: 0.9rem;\n    color: var(--text-medium);\n    border: 2px solid var(--border-color);\n    flex-shrink: 0;\n    transition: all 0.3s ease;\n}\n\n.option-item.selected .option-letter {\n    background: var(--primary-blue);\n    color: white;\n    border-color: var(--primary-blue);\n}\n\n.option-item.correct .option-letter {\n    background: var(--success-green);\n    color: white;\n    border-color: var(--success-green);\n}\n\n.option-item.incorrect .option-letter {\n    background: var(--error-red);\n    color: white;\n    border-color: var(--error-red);\n}\n\n.option-text {\n    font-size: 0.92rem;\n    color: var(--text-dark);\n    flex: 1;\n}\n\n.option-icon {\n    font-size: 1rem;\n    display: none;\n}\n\n.option-item.correct .option-icon,\n.option-item.incorrect .option-icon { display: block; }\n.option-item.correct .option-icon { color: var(--success-green); }\n.option-item.incorrect .option-icon { color: var(--error-red); }\n\n\/* Explanation Box *\/\n.explanation-box {\n    margin-top: 18px;\n    padding: 16px;\n    background: linear-gradient(135deg, #FFFBEB 0%, #FEF3C7 100%);\n    border-radius: var(--radius-md);\n    border-left: 4px solid var(--accent-orange);\n    display: none;\n    animation: slideDown 0.4s ease;\n}\n\n.explanation-box.show { display: block; }\n\n@keyframes slideDown {\n    from { opacity: 0; transform: translateY(-10px); }\n    to { opacity: 1; transform: translateY(0); }\n}\n\n.explanation-title {\n    font-family: 'Poppins', sans-serif;\n    font-size: 0.85rem;\n    font-weight: 600;\n    color: var(--accent-orange-dark);\n    margin-bottom: 8px;\n    display: flex;\n    align-items: center;\n    gap: 6px;\n}\n\n.explanation-text {\n    font-size: 0.88rem;\n    line-height: 1.6;\n    color: var(--text-dark);\n}\n\n\/* Mastery Indicator *\/\n.mastery-indicator {\n    margin-top: 14px;\n    padding: 10px 14px;\n    background: var(--bg-light);\n    border-radius: var(--radius-md);\n    display: none;\n}\n\n.mastery-indicator.show {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n}\n\n.mastery-label {\n    font-size: 0.78rem;\n    color: var(--text-medium);\n    display: flex;\n    align-items: center;\n    gap: 5px;\n}\n\n.mastery-stars { display: flex; gap: 2px; }\n.mastery-stars i { color: var(--border-color); font-size: 0.85rem; }\n.mastery-stars i.filled { color: var(--warning-yellow); }\n\n\/* Navigation Buttons - Now inside question body *\/\n.question-nav {\n    margin-top: 20px;\n    padding: 16px 20px;\n    background: var(--bg-light);\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    gap: 12px;\n    border-radius: var(--radius-md);\n    border: 1px solid var(--border-color);\n}\n\n.nav-btn {\n    padding: 11px 22px;\n    border: none;\n    border-radius: var(--radius-md);\n    font-family: 'Poppins', sans-serif;\n    font-size: 0.85rem;\n    font-weight: 600;\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    gap: 7px;\n    transition: all 0.3s ease;\n}\n\n.nav-btn.prev {\n    background: white;\n    color: var(--text-medium);\n    border: 2px solid var(--border-color);\n}\n\n.nav-btn.prev:hover:not(:disabled) {\n    border-color: var(--primary-blue);\n    color: var(--primary-blue);\n    transform: translateX(-3px);\n}\n\n.nav-btn.check {\n    background: linear-gradient(135deg, var(--accent-orange) 0%, var(--accent-orange-dark) 100%);\n    color: white;\n    flex: 1;\n    justify-content: center;\n    max-width: 220px;\n    box-shadow: var(--shadow-md);\n}\n\n.nav-btn.check:hover:not(:disabled) {\n    transform: translateY(-2px);\n    box-shadow: var(--shadow-lg);\n}\n\n.nav-btn.next {\n    background: linear-gradient(135deg, var(--primary-blue) 0%, var(--primary-blue-dark) 100%);\n    color: white;\n    box-shadow: var(--shadow-md);\n}\n\n.nav-btn.next:hover:not(:disabled) {\n    transform: translateX(3px);\n    box-shadow: var(--shadow-lg);\n}\n\n.nav-btn:disabled { opacity: 0.5; cursor: not-allowed; }\n\n\/* ========================================\n   RIGHT SIDEBAR\n======================================== *\/\n.dashboard-sidebar {\n    display: flex;\n    flex-direction: column;\n    gap: 16px;\n    align-self: start;\n}\n\n\/* Progress Ring *\/\n.progress-ring-container {\n    display: flex;\n    justify-content: center;\n    margin-bottom: 12px;\n}\n\n.progress-ring {\n    position: relative;\n    width: 100px;\n    height: 100px;\n}\n\n.progress-ring svg { transform: rotate(-90deg); }\n\n.progress-ring-bg {\n    fill: none;\n    stroke: var(--border-color);\n    stroke-width: 8;\n}\n\n.progress-ring-fill {\n    fill: none;\n    stroke: var(--success-green);\n    stroke-width: 8;\n    stroke-linecap: round;\n    transition: stroke-dashoffset 0.5s ease;\n}\n\n.progress-ring-text {\n    position: absolute;\n    inset: 0;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: center;\n}\n\n.progress-ring-percentage {\n    font-family: 'Poppins', sans-serif;\n    font-size: 1.4rem;\n    font-weight: 700;\n    color: var(--text-dark);\n}\n\n.progress-ring-label {\n    font-size: 0.65rem;\n    color: var(--text-medium);\n}\n\n.progress-stats-mini {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 8px;\n}\n\n.progress-stat-mini {\n    background: var(--bg-light);\n    padding: 10px;\n    border-radius: var(--radius-sm);\n    text-align: center;\n}\n\n.progress-stat-mini .value {\n    font-family: 'Poppins', sans-serif;\n    font-size: 1.1rem;\n    font-weight: 700;\n}\n\n.progress-stat-mini .value.correct { color: var(--success-green); }\n.progress-stat-mini .value.incorrect { color: var(--error-red); }\n\n.progress-stat-mini .label {\n    font-size: 0.65rem;\n    color: var(--text-medium);\n    margin-top: 2px;\n}\n\n\/* Question Grid *\/\n.question-grid {\n    display: grid;\n    grid-template-columns: repeat(5, 1fr);\n    gap: 6px;\n    max-height: 200px;\n    overflow-y: auto;\n    padding: 2px;\n}\n\n.grid-item {\n    width: 100%;\n    aspect-ratio: 1;\n    border-radius: var(--radius-sm);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    font-weight: 600;\n    font-size: 0.75rem;\n    cursor: pointer;\n    transition: all 0.3s ease;\n    border: 2px solid transparent;\n    position: relative;\n}\n\n.grid-item.unattempted { background: var(--primary-blue); color: white; }\n.grid-item.current { \n    background: var(--accent-orange); \n    color: white; \n    transform: scale(1.1); \n    box-shadow: var(--shadow-md);\n    z-index: 1;\n}\n.grid-item.attempted { background: var(--accent-orange-light); color: var(--text-dark); }\n.grid-item.correct-answered { background: var(--success-green); color: white; }\n.grid-item.incorrect-answered { background: var(--error-red); color: white; }\n\n.grid-item.weak-marked::after {\n    content: '!';\n    position: absolute;\n    top: -3px;\n    right: -3px;\n    width: 12px;\n    height: 12px;\n    background: var(--error-red);\n    border-radius: 50%;\n    font-size: 0.55rem;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    color: white;\n    font-weight: 700;\n}\n\n.grid-item:hover:not(.current) { transform: scale(1.05); }\n\n\/* Legend *\/\n.legend {\n    padding-top: 12px;\n    border-top: 1px solid var(--border-color);\n    margin-top: 4px;\n}\n\n.legend-title {\n    font-weight: 600;\n    font-size: 0.75rem;\n    color: var(--text-dark);\n    margin-bottom: 8px;\n}\n\n.legend-items {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 10px;\n}\n\n.legend-item {\n    display: flex;\n    align-items: center;\n    gap: 5px;\n    font-size: 0.68rem;\n    color: var(--text-medium);\n}\n\n.legend-color {\n    width: 14px;\n    height: 14px;\n    border-radius: 3px;\n}\n\n.legend-color.unattempted { background: var(--primary-blue); }\n.legend-color.attempted { background: var(--accent-orange-light); }\n.legend-color.correct { background: var(--success-green); }\n.legend-color.incorrect { background: var(--error-red); }\n\n\/* Stats Rows *\/\n.stat-row {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    padding: 8px 0;\n    border-bottom: 1px dashed var(--border-color);\n}\n\n.stat-row:last-child { border-bottom: none; }\n\n.stat-label {\n    color: var(--text-medium);\n    font-size: 0.82rem;\n}\n\n.stat-value {\n    font-weight: 700;\n    font-size: 0.95rem;\n    color: var(--text-dark);\n}\n\n.stat-value.correct { color: var(--success-green); }\n.stat-value.incorrect { color: var(--error-red); }\n\n\/* Action Buttons *\/\n.action-buttons {\n    display: flex;\n    flex-direction: column;\n    gap: 10px;\n}\n\n.action-btn {\n    width: 100%;\n    padding: 12px;\n    border: none;\n    border-radius: var(--radius-md);\n    font-family: 'Poppins', sans-serif;\n    font-size: 0.85rem;\n    font-weight: 600;\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    gap: 7px;\n    transition: all 0.3s ease;\n}\n\n.action-btn.submit {\n    background: linear-gradient(135deg, var(--success-green) 0%, #059669 100%);\n    color: white;\n    box-shadow: var(--shadow-md);\n}\n\n.action-btn.submit:hover {\n    transform: translateY(-2px);\n    box-shadow: var(--shadow-lg);\n}\n\n.action-btn.reset {\n    background: var(--bg-light);\n    color: var(--text-medium);\n    border: 2px solid var(--border-color);\n}\n\n.action-btn.reset:hover {\n    border-color: var(--error-red);\n    color: var(--error-red);\n}\n\n\/* ========================================\n   TOAST & MODAL\n======================================== *\/\n.warning-toast {\n    position: fixed;\n    bottom: 30px;\n    left: 50%;\n    transform: translateX(-50%);\n    background: var(--error-red);\n    color: white;\n    padding: 12px 24px;\n    border-radius: var(--radius-md);\n    font-weight: 600;\n    box-shadow: var(--shadow-xl);\n    z-index: 10000;\n    display: none;\n    animation: slideUp 0.3s ease;\n    font-size: 0.88rem;\n}\n\n.warning-toast.show { display: flex; align-items: center; gap: 8px; }\n.warning-toast.success { background: var(--success-green); }\n\n@keyframes slideUp {\n    from { opacity: 0; transform: translateX(-50%) translateY(20px); }\n    to { opacity: 1; transform: translateX(-50%) translateY(0); }\n}\n\n.result-modal {\n    position: fixed;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    background: rgba(0, 0, 0, 0.7);\n    display: none;\n    justify-content: center;\n    align-items: center;\n    z-index: 10000;\n    padding: 20px;\n}\n\n.result-modal.show { display: flex; }\n\n.result-content {\n    background: white;\n    padding: 32px;\n    border-radius: var(--radius-lg);\n    text-align: center;\n    max-width: 440px;\n    width: 100%;\n    box-shadow: var(--shadow-xl);\n    animation: modalSlideIn 0.3s ease;\n}\n\n@keyframes modalSlideIn {\n    from { opacity: 0; transform: scale(0.9); }\n    to { opacity: 1; transform: scale(1); }\n}\n\n.result-icon { font-size: 50px; margin-bottom: 16px; }\n\n.result-title {\n    font-family: 'Poppins', sans-serif;\n    font-size: 1.3rem;\n    font-weight: 700;\n    color: var(--text-dark);\n    margin-bottom: 8px;\n}\n\n.result-message {\n    color: var(--text-medium);\n    margin-bottom: 20px;\n    font-size: 0.9rem;\n}\n\n.result-stats {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: 10px;\n    margin-bottom: 20px;\n}\n\n.result-stat {\n    background: var(--bg-light);\n    padding: 12px;\n    border-radius: var(--radius-md);\n}\n\n.result-stat-value {\n    font-family: 'Poppins', sans-serif;\n    font-size: 1.3rem;\n    font-weight: 700;\n    color: var(--primary-blue);\n}\n\n.result-stat-label {\n    font-size: 0.72rem;\n    color: var(--text-medium);\n}\n\n.result-buttons {\n    display: flex;\n    gap: 10px;\n    justify-content: center;\n    flex-wrap: wrap;\n}\n\n.result-btn {\n    padding: 10px 20px;\n    border: none;\n    border-radius: var(--radius-md);\n    font-family: 'Poppins', sans-serif;\n    font-weight: 600;\n    cursor: pointer;\n    transition: all 0.3s ease;\n    display: flex;\n    align-items: center;\n    gap: 6px;\n    font-size: 0.82rem;\n}\n\n.result-btn.primary {\n    background: linear-gradient(135deg, var(--primary-blue) 0%, var(--primary-blue-dark) 100%);\n    color: white;\n}\n\n.result-btn.secondary { background: var(--bg-light); color: var(--text-medium); }\n\n.result-btn.weak {\n    background: linear-gradient(135deg, var(--error-red) 0%, #dc2626 100%);\n    color: white;\n}\n\n.result-btn:hover { transform: translateY(-2px); }\n\n\/* ========================================\n   RESPONSIVE\n======================================== *\/\n@media (max-width: 1100px) {\n    .quiz-container {\n        grid-template-columns: 220px 1fr 250px;\n        gap: 14px;\n    }\n}\n\n@media (max-width: 960px) {\n    .quiz-container {\n        grid-template-columns: 1fr;\n        padding: 14px;\n        min-height: auto;\n    }\n\n    .left-sidebar { \n        order: 1; \n        display: grid;\n        grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n        gap: 14px;\n        height: auto;\n    }\n    \n    .left-sidebar .quiz-card {\n        flex: none;\n    }\n    \n    .left-sidebar .filter-list {\n        max-height: 180px;\n    }\n    \n    .question-panel { order: 2; }\n    .dashboard-sidebar { \n        order: 3;\n        display: grid;\n        grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n        gap: 14px;\n        align-self: auto;\n    }\n\n    .header-stats { display: none; }\n    .mode-selector { flex-direction: column; align-items: stretch; }\n    .mode-tabs { justify-content: center; }\n    .session-info { justify-content: center; }\n}\n\n@media (max-width: 600px) {\n    .quiz-header { padding: 14px 16px; }\n    .topic-icon { width: 40px; height: 40px; font-size: 18px; }\n    .topic-info h1 { font-size: 1.1rem; }\n    .topic-info p { font-size: 0.75rem; }\n    \n    .mode-tab { padding: 7px 12px; font-size: 0.75rem; }\n    \n    .question-header { padding: 12px 16px; }\n    .question-number { font-size: 0.88rem; }\n    .question-body { padding: 16px; }\n    .question-text { font-size: 0.95rem; padding: 14px 16px; }\n    .option-item { padding: 12px 14px; }\n    \n    .question-nav { flex-wrap: wrap; padding: 14px; }\n    .nav-btn { padding: 10px 16px; font-size: 0.8rem; }\n    .nav-btn.check { order: -1; width: 100%; max-width: none; margin-bottom: 10px; }\n    \n    .left-sidebar, .dashboard-sidebar { grid-template-columns: 1fr; }\n    \n    .result-stats { grid-template-columns: 1fr; }\n    .result-buttons { flex-direction: column; }\n}\n<\/style>\n\n<div class=\"ldce-quiz-wrapper\" id=\"quizWrapper\">\n    <!-- Warning Toast -->\n    <div class=\"warning-toast\" id=\"warningToast\">\n        <i class=\"fas fa-exclamation-triangle\"><\/i>\n        <span id=\"toastMessage\">Message<\/span>\n    <\/div>\n\n    <!-- Result Modal -->\n    <div class=\"result-modal\" id=\"resultModal\">\n        <div class=\"result-content\">\n            <div class=\"result-icon\" id=\"resultIcon\">\ud83c\udf89<\/div>\n            <h2 class=\"result-title\" id=\"resultTitle\">Great Job!<\/h2>\n            <p class=\"result-message\" id=\"resultMessage\">You have completed the quiz.<\/p>\n            <div class=\"result-stats\">\n                <div class=\"result-stat\">\n                    <div class=\"result-stat-value\" id=\"resultCorrect\">0<\/div>\n                    <div class=\"result-stat-label\">Correct<\/div>\n                <\/div>\n                <div class=\"result-stat\">\n                    <div class=\"result-stat-value\" id=\"resultIncorrect\">0<\/div>\n                    <div class=\"result-stat-label\">Incorrect<\/div>\n                <\/div>\n                <div class=\"result-stat\">\n                    <div class=\"result-stat-value\" id=\"resultScore\">0%<\/div>\n                    <div class=\"result-stat-label\">Score<\/div>\n                <\/div>\n            <\/div>\n            <div class=\"result-buttons\">\n                <button class=\"result-btn secondary\" id=\"reviewBtn\">\n                    <i class=\"fas fa-eye\"><\/i> Review\n                <\/button>\n                <button class=\"result-btn weak\" id=\"practiceWeakBtn\" style=\"display: none;\">\n                    <i class=\"fas fa-exclamation-circle\"><\/i> Practice Weak\n                <\/button>\n                <button class=\"result-btn primary\" id=\"retryBtn\">\n                    <i class=\"fas fa-redo\"><\/i> Try Again\n                <\/button>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <!-- Header -->\n    <header class=\"quiz-header\">\n        <div class=\"header-content\">\n            <div class=\"topic-title\">\n                <div class=\"topic-icon\">\n                    <i class=\"fas fa-file-invoice-dollar\" id=\"topicIcon\"><\/i>\n                <\/div>\n                <div class=\"topic-info\">\n                    <h1 id=\"topicName\">Delegation of Financial Power Rules (DFPR)-PYQs<\/h1>\n                    <p>Combined SO\/Steno LDCE Previous Year Questions \u2022 Paper 2<\/p>\n                <\/div>\n            <\/div>\n            <div class=\"header-stats\">\n                <div class=\"stat-badge progress-badge\">\n                    <i class=\"fas fa-chart-line\"><\/i>\n                    <span id=\"overallProgress\">0% Mastered<\/span>\n                <\/div>\n                <div class=\"stat-badge weak-badge\" id=\"weakBadgeHeader\" style=\"display: none;\">\n                    <i class=\"fas fa-exclamation-circle\"><\/i>\n                    <span id=\"weakCountHeader\">0 Weak Areas<\/span>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/header>\n\n    <!-- Mode Selector -->\n    <div class=\"mode-selector\">\n        <div class=\"mode-tabs\">\n            <button class=\"mode-tab active\" data-mode=\"all\" id=\"modeAll\">\n                <i class=\"fas fa-list\"><\/i>\n                All Questions\n                <span class=\"badge\" id=\"allCount\">0<\/span>\n            <\/button>\n            <button class=\"mode-tab\" data-mode=\"year\" id=\"modeYear\">\n                <i class=\"fas fa-calendar\"><\/i>\n                By Year\n            <\/button>\n            <button class=\"mode-tab\" data-mode=\"chapter\" id=\"modeChapter\">\n                <i class=\"fas fa-book\"><\/i>\n                By Chapter\n            <\/button>\n            <button class=\"mode-tab weak-mode\" data-mode=\"weak\" id=\"modeWeak\">\n                <i class=\"fas fa-exclamation-circle\"><\/i>\n                Weak Areas\n                <span class=\"badge\" id=\"weakModeCount\">0<\/span>\n            <\/button>\n        <\/div>\n        <div class=\"session-info\" id=\"sessionInfo\" style=\"display: none;\">\n            <i class=\"fas fa-history\"><\/i>\n            <span id=\"sessionText\">Last session: Q5<\/span>\n            <button class=\"resume-btn\" id=\"resumeBtn\">\n                <i class=\"fas fa-play\"><\/i>\n                Resume\n            <\/button>\n        <\/div>\n    <\/div>\n\n    <!-- Main Container -->\n    <div class=\"quiz-container\">\n        <!-- Left Sidebar -->\n        <aside class=\"left-sidebar\">\n            <!-- Year Filter -->\n            <div class=\"quiz-card\" id=\"yearFilterCard\">\n                <div class=\"quiz-card-header light\">\n                    <h3><i class=\"fas fa-calendar-alt\"><\/i> Filter by Year<\/h3>\n                <\/div>\n                <div class=\"quiz-card-body\">\n                    <div class=\"filter-list\" id=\"yearList\"><\/div>\n                <\/div>\n            <\/div>\n\n            <!-- Chapter Filter -->\n            <div class=\"quiz-card\" id=\"chapterFilterCard\">\n                <div class=\"quiz-card-header light\">\n                    <h3><i class=\"fas fa-book-open\"><\/i> Filter by Chapter<\/h3>\n                <\/div>\n                <div class=\"quiz-card-body\">\n                    <div class=\"filter-list\" id=\"chapterList\"><\/div>\n                <\/div>\n            <\/div>\n\n            <!-- Weak Areas Card -->\n            <div class=\"quiz-card weak-areas-card\" id=\"weakAreasCard\" style=\"display: none;\">\n                <div class=\"quiz-card-header\">\n                    <h3><i class=\"fas fa-exclamation-triangle\"><\/i> Weak Areas<\/h3>\n                <\/div>\n                <div class=\"quiz-card-body\">\n                    <div class=\"weak-question-list\" id=\"weakQuestionList\"><\/div>\n                    <button class=\"practice-weak-btn\" id=\"practiceWeakAreasBtn\">\n                        <i class=\"fas fa-redo\"><\/i>\n                        Practice All Weak Areas\n                    <\/button>\n                <\/div>\n            <\/div>\n        <\/aside>\n\n        <!-- Question Panel -->\n        <main class=\"question-panel\">\n            <div class=\"question-header\">\n                <span class=\"question-number\" id=\"questionNumber\">Question 1 of 20<\/span>\n                <div class=\"question-meta\">\n                    <div class=\"meta-badge year\">\n                        <i class=\"fas fa-calendar-alt\"><\/i>\n                        <span id=\"currentQuestionYear\">2023<\/span>\n                    <\/div>\n                    <div class=\"meta-badge chapter\">\n                        <i class=\"fas fa-book\"><\/i>\n                        <span id=\"currentQuestionChapter\">Chapter 1<\/span>\n                    <\/div>\n                    <div class=\"meta-badge weak\" id=\"weakBadge\" style=\"display: none;\">\n                        <i class=\"fas fa-exclamation-circle\"><\/i>\n                        <span>Weak<\/span>\n                    <\/div>\n                <\/div>\n            <\/div>\n            <div class=\"question-body\">\n                <div class=\"question-text\" id=\"questionText\">Loading question...<\/div>\n                <div class=\"options-list\" id=\"optionsList\"><\/div>\n                <div class=\"explanation-box\" id=\"explanationBox\">\n                    <div class=\"explanation-title\">\n                        <i class=\"fas fa-lightbulb\"><\/i>\n                        Explanation\n                    <\/div>\n                    <p class=\"explanation-text\" id=\"explanationText\"><\/p>\n                <\/div>\n                <div class=\"mastery-indicator\" id=\"masteryIndicator\">\n                    <span class=\"mastery-label\">\n                        <i class=\"fas fa-star\"><\/i>\n                        Mastery:\n                    <\/span>\n                    <div class=\"mastery-stars\" id=\"masteryStars\">\n                        <i class=\"fas fa-star\"><\/i>\n                        <i class=\"fas fa-star\"><\/i>\n                        <i class=\"fas fa-star\"><\/i>\n                        <i class=\"fas fa-star\"><\/i>\n                        <i class=\"fas fa-star\"><\/i>\n                    <\/div>\n                <\/div>\n                <!-- Navigation Buttons -->\n                <div class=\"question-nav\">\n                    <button class=\"nav-btn prev\" id=\"prevBtn\">\n                        <i class=\"fas fa-arrow-left\"><\/i>\n                        Previous\n                    <\/button>\n                    <button class=\"nav-btn check\" id=\"checkBtn\">\n                        <i class=\"fas fa-check-circle\"><\/i>\n                        Check Answer\n                    <\/button>\n                    <button class=\"nav-btn next\" id=\"nextBtn\">\n                        Next\n                        <i class=\"fas fa-arrow-right\"><\/i>\n                    <\/button>\n                <\/div>\n            <\/div>\n        <\/main>\n\n        <!-- Right Sidebar -->\n        <aside class=\"dashboard-sidebar\">\n            <!-- Question Navigator -->\n            <div class=\"quiz-card\">\n                <div class=\"quiz-card-header light\">\n                    <h3><i class=\"fas fa-th\"><\/i> Question Navigator<\/h3>\n                <\/div>\n                <div class=\"quiz-card-body\">\n                    <div class=\"question-grid\" id=\"questionGrid\"><\/div>\n                    <div class=\"legend\">\n                        <div class=\"legend-title\">Legend:<\/div>\n                        <div class=\"legend-items\">\n                            <div class=\"legend-item\">\n                                <div class=\"legend-color unattempted\"><\/div>\n                                <span>Unattempted<\/span>\n                            <\/div>\n                            <div class=\"legend-item\">\n                                <div class=\"legend-color attempted\"><\/div>\n                                <span>Attempted<\/span>\n                            <\/div>\n                            <div class=\"legend-item\">\n                                <div class=\"legend-color correct\"><\/div>\n                                <span>Correct<\/span>\n                            <\/div>\n                            <div class=\"legend-item\">\n                                <div class=\"legend-color incorrect\"><\/div>\n                                <span>Incorrect<\/span>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n            \n            <!-- Your Progress -->\n            <div class=\"quiz-card\">\n                <div class=\"quiz-card-header\">\n                    <h3><i class=\"fas fa-trophy\"><\/i> Your Progress<\/h3>\n                <\/div>\n                <div class=\"quiz-card-body\">\n                    <div class=\"progress-ring-container\">\n                        <div class=\"progress-ring\">\n                            <svg width=\"100\" height=\"100\">\n                                <circle class=\"progress-ring-bg\" cx=\"50\" cy=\"50\" r=\"42\"><\/circle>\n                                <circle class=\"progress-ring-fill\" cx=\"50\" cy=\"50\" r=\"42\" \n                                        stroke-dasharray=\"264\" \n                                        stroke-dashoffset=\"264\"\n                                        id=\"progressRingFill\"><\/circle>\n                            <\/svg>\n                            <div class=\"progress-ring-text\">\n                                <span class=\"progress-ring-percentage\" id=\"progressPercentage\">0%<\/span>\n                                <span class=\"progress-ring-label\">Mastered<\/span>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                    <div class=\"progress-stats-mini\">\n                        <div class=\"progress-stat-mini\">\n                            <div class=\"value correct\" id=\"totalCorrectProgress\">0<\/div>\n                            <div class=\"label\">Correct<\/div>\n                        <\/div>\n                        <div class=\"progress-stat-mini\">\n                            <div class=\"value incorrect\" id=\"totalWeakProgress\">0<\/div>\n                            <div class=\"label\">Weak Areas<\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n\n\n            <!-- Session Stats -->\n            <div class=\"quiz-card\">\n                <div class=\"quiz-card-header\">\n                    <h3><i class=\"fas fa-chart-pie\"><\/i> Session Stats<\/h3>\n                <\/div>\n                <div class=\"quiz-card-body\">\n                    <div class=\"stat-row\">\n                        <span class=\"stat-label\">Total Questions<\/span>\n                        <span class=\"stat-value\" id=\"totalQuestions\">0<\/span>\n                    <\/div>\n                    <div class=\"stat-row\">\n                        <span class=\"stat-label\">Attempted<\/span>\n                        <span class=\"stat-value\" id=\"attemptedCount\">0<\/span>\n                    <\/div>\n                    <div class=\"stat-row\">\n                        <span class=\"stat-label\">Correct<\/span>\n                        <span class=\"stat-value correct\" id=\"correctCount\">0<\/span>\n                    <\/div>\n                    <div class=\"stat-row\">\n                        <span class=\"stat-label\">Incorrect<\/span>\n                        <span class=\"stat-value incorrect\" id=\"incorrectCount\">0<\/span>\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <!-- Action Buttons -->\n            <div class=\"action-buttons\">\n                <button class=\"action-btn submit\" id=\"submitBtn\">\n                    <i class=\"fas fa-paper-plane\"><\/i>\n                    Submit & View Results\n                <\/button>\n                <button class=\"action-btn reset\" id=\"resetBtn\">\n                    <i class=\"fas fa-redo-alt\"><\/i>\n                    Reset Session\n                <\/button>\n            <\/div>\n        <\/aside>\n    <\/div>\n<\/div>\n\n<script>\n\/\/ ==========================================\n\/\/ QUIZ CONFIGURATION\n\/\/ ==========================================\nconst quizConfig = {\n    quizId: 'cca-pyq-quiz',\n    topic: 'CCS (CCA) Rules',\n    paper: 'Paper 2',\n    wpAjaxUrl: '\/wp-admin\/admin-ajax.php',\n    useWordPressSync: false,\n    masteryThreshold: 3,\n    weakThreshold: 1\n};\n\n\/\/ ==========================================\n\/\/ QUESTIONS DATA (Sample - add your full data)\n\/\/ ==========================================\nconst allQuestions = [\n    {\n        id: 1,\n        year: '2025',\n        chapter: 'ANNEXURES:General conditions for incurring Expenditure',\n        question: \"As per the provisions of the Delegation of Financial Powers Rules, 2024, expenditure already incurred under an emergent situation by an authority in excess of its powers should be treated as:\",\n        options: [\"Contingent expenditure\", \"Miscellaneous expenditure\", \"Irregular expenditure\", \"Regular expenditure\"],\n        correct: 2,\n        explanation: \"According to Annexure-II, General Conditions for incurring expenditure, point (3): 'Expenditure, already incurred under an emergent situation by an authority in excess of its powers should be treated as irregular expenditure. Any irregular expenditure under emergent situations should be regularised by issue of an ex-post facto sanction with the concurrence of Financial Adviser and approval of Administrative Secretary.'\"\n    },\n    {\n        id: 2,\n        year: '2025',\n        chapter: 'ANNEXURES: List of Object Heads',\n        question: \"In terms of the Delegation of Financial Powers Rules, 2024, the Object Head 'Office Expenses' belongs to which one of the following Object Classes?\",\n        options: [\"Object Class II \u2013 Social Security of Employees\", \"Object Class III \u2013 Goods and Services\", \"Object Class IV \u2013 Aid and Assistance\", \"Object Class V \u2013 Miscellaneous Revenue Expenditure\"],\n        correct: 1,\n        explanation: \"As per Annexure-I (List of Object Heads), Serial No. 11, Object Code 13, 'Office Expenses' is listed under 'Object Class III - Goods and Services' in the Revenue Expenditure section.\"\n    },\n    {\n        id: 3,\n        year: '2025',\n        chapter: 'Rule 13: Powers of Subordinate Authorities to write off loss',\n        question: \"The monetary limit up to which the loss due to deficiencies and depreciation in the value of stores (other than motor vehicles or motor cycles) included in the stock and other accounts including losses on food grains, sugar, etc. can be written off in each case by a Department of the Government of India, is:\",\n        options: [\"\u20b9 10,00,000\", \"\u20b9 8,00,000\", \"\u20b9 6,00,000\", \"\u20b9 5,00,000\"],\n        correct: 3,\n        explanation: \"As per Rule 13 - Government of India's Decision (1), the table specifying powers to write off loss states that for 'Deficiencies and depreciation in the value of stores (other than motor vehicles or motor cycle) included in the stock and other accounts including losses on food grains, sugar, etc', Department of the Government of India has monetary limit of Rs. 5,00,000.\"\n    },\n    {\n        id: 4,\n        year: '2025',\n        chapter: 'Rule 10: Appropriation and Re-Appropriation',\n        question: \"Rule 10 of the Delegation of Financial Powers Rules, 2024 deals with:\",\n        options: [\"Appraisal and approval of Schemes or Projects\", \"Waiver of Recovery of overpayment made to Government Servants\", \"Indents, contracts and purchases\", \"Appropriation and Re-appropriation of funds\"],\n        correct: 3,\n        explanation: \"Rule 10 is explicitly titled 'Rule 10- Appropriation and Re-Appropriation'. This rule deals with general restrictions on appropriation and re-appropriation, powers of Administrative Ministries\/Departments, and cases requiring prior approval of Ministry of Finance.\"\n    },\n    {\n        id: 5,\n        year: '2025',\n        chapter: 'ANNEXURES: List of Object Heads',\n        question: \"As per the Delegation of Financial Powers Rules, 2024, which one of the following Object Heads is not included under the 'Object Class VII \u2013 Financial Assets'?\",\n        options: [\"Investment\", \"Subscription\", \"Loans and Advances\", \"Infrastructural Assets\"],\n        correct: 3,\n        explanation: \"As per Annexure-I, Object Class VII - Financial Assets includes Investment (54), Loans and Advances (55), Repayment of borrowings (56), and Subscription (57). However, 'Infrastructural Assets' (Object Code 73) is listed under 'Object Class-VI - Non-Financial Assets (Fixed and Intangible Assets)', not under Financial Assets.\"\n    },\n    {\n        id: 6,\n        year: '2025',\n        chapter: 'ANNEXURES:General conditions for incurring Expenditure',\n        question: \"Which one of the following statements regarding general conditions for incurring Expenditure in terms of the Delegation of Financial Powers Rules, 2024, is not correct?\",\n        options: [\"In exercising powers to sanction unusual expenditure, Departments of Government of India should exercise due care and restrict the growth of expenditure on new lines or new types of items.\", \"An officer appointed to perform the current duties of a post in addition to his own cannot exercise financial powers vested in the full-fledged incumbent of the post.\", \"The financial limits and guidelines for expenditure on conveyance hire would be in accordance with the extant instructions issued by the Finance Ministry.\", \"Expenditure on legal charges shall ordinarily be incurred only with the previous consent of the Ministry of Law and Justice except for charges, the rates of which are notified by the Ministry of Law and Justice from time to time.\"],\n        correct: 1,\n        explanation: \"This statement is incorrect. According to Annexure-II, General Conditions for incurring expenditure, point (5): 'An officer appointed to perform the current duties of a post in addition to his own can exercise financial powers vested in the full-fledged incumbent of the post.' All other statements are correctly stated in the DFPR 2024.\"\n    },\n    {\n        id: 7,\n        year: '2025',\n        chapter: 'Rule 11: Indents, contracts and purchases',\n        question: \"In terms of the Delegation of Financial Powers Rules, 2024, what are the financial powers of a Secretary of the Department of Government of India for limited tender contracts?\",\n        options: [\"\u20b9 100 Crores\", \"\u20b9 50 Crores\", \"\u20b9 25 Crores\", \"\u20b9 5 Crores\"],\n        correct: 0,\n        explanation: \"Rule 11(2) clearly states: 'The powers under this rule shall be exercised by the Secretary of the Department concerned up to rupees one hundred crores for open or limited tender contracts.'\"\n    },\n    {\n        id: 8,\n        year: '2025',\n        chapter: 'Rule 19: Dismantlement of public buildings',\n        question: \"As per Delegation of Financial Powers Rules, 2024, 'a purely temporary structure' means a structure, the life of which is not more than:\",\n        options: [\"1 year\", \"2 years\", \"3 years\", \"5 years\"],\n        correct: 1,\n        explanation: \"Rule 19 (Dismantlement of public buildings) provides an explanation: 'Explanation \u2013 for the purposes of this rule, 'a purely temporary structure' mean a structure, the life of which is not more than two years.'\"\n    },\n    \n    {\n        id: 9,\n        year: '2024',\n        chapter: 'Rule 10: Appropriation and Re-Appropriation',\n        question: \"In terms of the Delegation of Financial Powers Rules, 2024, the monetary limits for reappropriation powers of Ministries\/Departments in the case of non-establishment expenditure is up to:\",\n        options: [\"\u20b9 2 Crore\", \"\u20b9 5 Crore\", \"\u20b9 10 Crore\", \"\u20b9 15 Crore\"],\n        correct: 3,\n        explanation: \"According to Rule 10 - Government of India's decision (1), point v: Monetary Limits for re-appropriation powers, Non-Establishment Expenditure covering 'All other object heads' has a delegated power of 'Up to Rs 15 crore' for Administrative Department\/Ministry.\"\n    },\n    {\n        id: 10,\n        year: '2024',\n        chapter: 'ANNEXURES: List of Object Heads',\n        question: \"In terms of the provisions contained in the Delegation of Financial Powers Rules, 2024, the expenditure on account of reimbursement of newspapers purchased or supplied to officer's residence shall be booked under the Object Head:\",\n        options: [\"Office Expenses\", \"Allowances\", \"Materials and Supplies\", \"Other Revenue Expenditure\"],\n        correct: 3,\n        explanation: \"As per Annexure-I, Sl.No. 37, Object Code 49 - Other Revenue expenditure: 'It will include payment out of discretionary grant, other discounts, fees and fines, custom duty compensation, commitment charges, notional value of gifts, re-imbursement of newspapers purchased or supplied to officer's residence and purchase or re-imbursement of briefcase or ladies purse to Government servants', etc.'\"\n    },\n    {\n        id: 11,\n        year: '2024',\n        chapter: 'Rule 11: Indents, contracts and purchases',\n        question: \"According to the Delegation of Financial Powers Rules, 2024, the powers of the Secretary of the Department concerned for negotiated or single tender or proprietary contracts and agreements are up to:\",\n        options: [\"\u20b9 100 Crore\", \"\u20b9 50 Crore\", \"\u20b9 25 Crore\", \"\u20b9 5 Crore\"],\n        correct: 2,\n        explanation: \"Rule 11(3) clearly states: 'The powers under this rule shall be exercised by the Secretary of the Department concerned up to rupees twenty-five crores for negotiated or single tender or proprietary contracts and agreements.' Note: This limit has been enhanced in DFPR 2024 from the previous DFPR 1978 limits for better administrative efficiency.\"\n    },\n    {\n        id: 12,\n        year: '2024',\n        chapter: 'Rule 8: Primary unit of appropriation',\n        question: \"In terms of the Delegation of Financial Powers Rules, 2024, which one of the following Budget Heads is also known as 'Primary Unit of Appropriation'?\",\n        options: [\"Major Head\", \"Minor Head\", \"Detailed Head\", \"Object Head\"],\n        correct: 3,\n        explanation: \"Rule 8(1) defines: 'A grant or Appropriation for charged expenditure is distributed by standard Object Heads under which it shall be accounted for and each such standard Object Head, against which the provision for expenditure appears, constitutes a primary unit of appropriation. The primary unit of appropriation is the lowest unit of accounting classification denoting the objects of expenditure.'\"\n    },\n    {\n        id: 13,\n        year: '2024',\n        chapter: 'Rule 13: Powers of Subordinate Authorities to write off loss',\n        question: \"Which one of the following is the life of Light Commercial Motor Vehicles fixed in terms of distance run (in kilometres) and length of use (in years) whichever is reached later, for the purpose of the powers of Subordinate Authorities to write off losses under the Delegation of Financial Powers Rules, 2024?\",\n        options: [\"4,00,000 km; 10 years\", \"2,00,000 km; 7 years\", \"1,50,000 km; 6.5 years\", \"1,20,000 km; 7 years\"],\n        correct: 2,\n        explanation: \"As per Rule 13 - Government of India's decision (1), table under 'Condemnation of motor vehicles and motorcycles', the lives of various types of vehicles are: HCVs - 4,00,000 km\/10 years; Light Commercial Motor Vehicles (LCVs) - 1,50,000 km\/6\u00bd years; Motor cycles - 1,20,000 km\/7 years. The table specifies that distance run (in kilometers) and length of use (in years) whichever is reached later should be considered.\"\n    },\n    {\n        id: 14,\n        year: '2024',\n        chapter: 'ANNEXURES: List of Object Heads',\n        question: \"In terms of the Delegation of Financial Powers Rules, 2024, which one of the following Object Heads does not fall under the Capital Expenditure (Assets)?\",\n        options: [\"Furniture and Fixtures\", \"Digital Equipment\", \"Machinery and Equipment\", \"Information, Computer, Telecommunications (ICT) equipment\"],\n        correct: 1,\n        explanation: \"Under Annexure-I, Capital Expenditure (Assets) includes: Furniture & Fixtures (Object Code 74), Machinery and Equipment (Object Code 52), and ICT equipment (Object Code 71). However, 'Digital Equipment' (Object Code 19) is listed under Revenue Expenditure, Object Class III - Goods and Services: 'It will include expenses to be classified as revenue expenditure on procurement or development of hardware and software where the cost of individual item does not exceed the threshold limit of one lakh rupees or three years of useful life, either of the two as decided by the Government from time to time.'\"\n    },\n    {\n        id: 15,\n        year: '2024',\n        chapter: 'Rule 16: Expenditure on Schemes or Projects',\n        question: \"The appraisal authority for Scheme\/Project whose Original Cost Estimate is greater than \u20b9 100 Crores and up to \u20b9 500 Crores is:\",\n        options: [\"The Financial Adviser of the Ministry\/Department concerned\", \"The Expenditure Finance Committee\/Public Investment Board chaired by the Expenditure Secretary\", \"The Standing Finance Committee\/Delegated Investment Board chaired by the Secretary of the Administrative Department\", \"Cabinet\/Committee of the Cabinet concerned with the subject\"],\n        correct: 2,\n        explanation: \"According to Rule 16 - Government of India's decision (1), Appendix-III, paragraph 8 - Original Cost Estimates table: For cost > 100 & up to 500 crore, the appraisal is by 'SFC\/DIB Chaired by Secretary of the Admn. Dept.' and approval by 'Minister-in-charge of the Administrative Department'. SFC = Standing Finance Committee (for Schemes), DIB = Delegated Investment Board (for Projects). For costs up to 100 crore, appraisal is by Financial Adviser; above 500 crore, by EFC\/PIB chaired by Expenditure Secretary.\"\n    },\n    {\n        id: 16,\n        year: '2024',\n        chapter: 'Rule 16: Expenditure on Schemes or Projects',\n        question: \"Pre-investment activities up to what amount (including budgetary and extra-budgetary resources) can be approved by the Secretary of the Administrative Department with the concurrence of the Financial Adviser concerned provided financial resources are available and in-principle approval has been obtained, wherever necessary?\",\n        options: [\"\u20b9 50 Crore\", \"\u20b9 100 Crore\", \"\u20b9 250 Crore\", \"\u20b9 500 Crore\"],\n        correct: 1,\n        explanation: \"As per Rule 16 - Government of India's decision (1), Appendix-III, paragraph 10: 'Pre-investment activities up to Rs, 100 crore (including budgetary and extra-budgetary resources) may be approved by the Secretary of the Administrative Department with the concurrence of the Financial Adviser concerned provided financial resources are available and in-principle approval has been obtained, wherever necessary.' Pre-investment activities include preparation of Feasibility Reports, DPRs, Pilot Studies, Survey\/Investigation, land acquisition payments, construction of boundary wall, site offices, etc.\"\n    },\n    {\n    id: 17,\n    year: '2023',\n    chapter: 'Creation, Revival, Continuation, Conversion, Up-gradation, Down-gradation and Abolition of posts',\n    question: \"Consider the following statements regarding the creation of posts:\\n1. All powers with respect to the creation of posts delegated under Delegation of Financial Powers Rules, 1978, stand withdrawn.\\n2. The competent authority to create posts below Joint Secretary Level is the Finance Minister.\\n3. A post falling into the Category of 'deemed abolished' can be filled up with prior 'revival' approval from the Department of Expenditure.\\n\\nWhich of the statement(s) given above is\/are correct?\",\n    options: [\n      \"1 only\",\n      \"2 only\",\n      \"2 and 3 only\",\n      \"1, 2, and 3\"\n    ],\n    correct: 0,\n    explanation: \"Statement 1 is CORRECT: As per Ministry of Finance DoE O.M. No. F No. 7(1)\/E.Coord-I\/2017, dated 05.01.2024, para 2.2: 'Any specific exemption allowed to any Ministry or Department on creation, revival, continuation, conversion, transfer, up-gradation and down-gradation of posts is also withdrawn except for delegations contained in Appendix-1.' Statement 2 is INCORRECT: As per para 3.5 of the Compendium: 'The Authority competent to approve creation of post(s) shall be as below: Posts equivalent to SAG and above levels [Pay Level-14 and above]: Cabinet; Posts below SAG Level [Below Pay Level-14]: Department of Expenditure.' The Finance Minister is NOT the competent authority. Statement 3 is INCORRECT: As per para 5.5: 'Once a post stands abolished under para 5.1, it (unless covered under para 5.2) shall not be filled, except by creating it de novo by following the procedure under para 3.' The post cannot simply be filled with revival approval\u2014it must be created afresh unless specific exceptions apply. DFPR 1978 Position: Under the old rules, similar restrictions existed but were less clearly defined. DFPR 2024 Position: The new rules have been comprehensively revised and consolidated in the Compendium issued vide O.M. dated 05.01.2024.\"\n  },\n  {\n    id: 18,\n    year: '2023',\n    chapter: 'Rule 10: Appropriation and Re-Appropriation',\n    question: \"Which of the following are covered under the general restrictions relating to appropriation and reappropriation of funds in terms of Delegation of Financial Powers Rules, 1978?\\n1.\\tAppropriation of funds to meet expenditure not sanctioned by a competent authority.\\n2.\\tReappropriation of funds provided for charged expenditure to meet votable expenditure.\\n3.\\tReappropriation of funds from one grant for charged expenditure to another grant for charged expenditure.\\n4.\\tAppropriation of funds to meet expenditure on a new service not contemplated in the budget as approved by Parliament.\\nSelect the correct answer using the code given below:\",\n    options: [\n      \"1 and 4 only\",\n      \"1, 2, and 3 only\",\n      \"2 and 4 only\",\n      \"1, 2, 3, and 4\"\n    ],\n    correct: 3,\n    explanation: \"As per Rule 10 - Appropriation and Re-Appropriation \u2013 General Restrictions of DFPR 2024 (corresponding to Rule 10 of DFPR 1978):\\n\\nStatement 1 is CORRECT: Sub-rule (2) states: 'Funds shall not be appropriated or re-appropriated to meet expenditure which has not been sanctioned by an authority competent to sanction it.'\\n\\nStatement 2 is CORRECT: Sub-rule (4) states: 'Funds provided for charged expenditure shall not be appropriated or re-appropriated to meet voted expenditure and funds provided for voted expenditure shall not be appropriated or re-appropriated to meet charged expenditure.'\\n\\nStatement 3 is CORRECT: Sub-rule (5) states: 'No Re-appropriation shall be made from one grant or Appropriation for charged expenditure to another Grant or Appropriation for charged expenditure.'\\n\\nStatement 4 is CORRECT: Sub-rule (1) states: 'Save with prior approval of the Parliament, funds shall not be appropriated or re-appropriated to meet expenditure on a New Service or New Instrument of Service (NS or NIS) not contemplated in the budget as approved by Parliament.'\\n\\nDFPR 1978 & 2024 Position: These restrictions remain substantially the same in both versions of the rules, reflecting fundamental principles of parliamentary control over public expenditure.\"\n  },\n    {\n    id: 19,\n    year: '2023',\n    chapter: 'Rule 8: Primary unit of appropriation',\n    question: \"Consider the following statements regarding Primary units of Appropriation in the context of the Delegation of Financial Powers Rules, 1978:\\n1.\\tIt includes provision for voted expenditure only.\\n2.\\tIt includes provision for charged expenditure only.\\n3.\\tIt includes provision for both voted and charged expenditure.\\n4.\\tSalaries constitute the Primary unit of Appropriation.\\nSelect the correct answer using the code given below:\",\n    options: [\n      \"1 and 4 only\",\n      \"2 and 4 only\",\n      \"3 and 4 only\",\n      \"3 only\"\n    ],\n    correct: 2,\n    explanation: \"As per Rule 8 - Primary unit of appropriation of DFPR 2024 (corresponding to Rule 8 of DFPR 1978):\\n\\nStatements 1 and 2 are INCORRECT: Sub-rule (2) explicitly states: 'The primary unit may include provision for both voted and charged expenditure and in that case the amount of each is shown separately.'\\n\\nStatement 3 is CORRECT: As quoted above from sub-rule (2), primary units can include provision for both voted and charged expenditure.\\n\\nStatement 4 is CORRECT: As per Annexure-I (List of Object Heads), Object Head Code 01 - Salaries is defined as: 'It will include pay of the Government employees as defined under FR 9(21), honorarium to Government servant and stipend to interns. It will also include expenditure on emoluments and allowances of Heads of States and other high dignitaries including Sumptuary Allowance, salary payable to the staff of Departmental canteens and leave encashment on LTC.'\\n\\nSalaries constitute one of the primary units of appropriation.\\n\\nDFPR 1978 & 2024 Position: The definition and treatment of primary units of appropriation remain consistent across both versions of the rules.\"\n  },\n  {\n    id: 20,\n    year: '2023',\n    chapter: 'Rule 12: Powers of Subordinate Authorities',\n    question: \"Under which one of the following Rules of the Delegation of Financial Powers Rules, 1978, do Heads of departments have powers to declare any Gazetted Officer subordinate to them as Head of an Office for the purpose of these rules?\",\n    options: [\n      \"Rule 11\",\n      \"Rule 13\",\n      \"Rule 14 [Rule 12 in DFPR 2024] \",\n      \"Rule 16\"\n    ],\n    correct: 2,\n    explanation: \"DFPR 1978 Position: Under the old rules, this power was contained in Rule 14 (Head of Office). DFPR 2024 Position: As per the Concordance Table, Rule 14 of DFPR 1978 has been deleted as a separate rule, and its provisions have been merged into Rule 12 - Powers of Subordinate Authorities. The relevant provision is now in Rule 12, Sub-rule (4) which states: 'Departments of the Government of India, Administrators and Heads of the Departments shall have the power to declare any Gazetted Officer subordinate to them as the Head of the Office for the purpose of these rules: Provided that the Head of Office shall exercise such powers as delegated by the Department, Administrator or Head of Department and as provided in the rules for the time being in force: Provided further that not more than one Gazetted Officer shall be declared as Head of Office in respect of the same office or establishment, unless such office or establishment is distinctly separate from one another.' For the SO\/Steno 2023 exam based on DFPR 1978, the correct answer is Rule 14.\"\n  },\n  {\n    id: 21,\n    year: '2023',\n    chapter: 'Rule 12: Powers of Subordinate Authorities and Rule 15: Waiver of recovery of overpayment made to Government servants',\n    question: \"Consider the following statements in the context of Delegation of Financial Powers Rules, 1978:\\n1.\\tA Gazetted Officer authorized by a Head of Office serving under him to incur contingent expenditure on his behalf shall be responsible for the correctness, regularity, and propriety of the expenditure.\\n2.\\tAuthorizing Section Officer to sign sanctions for petty contingent expenditure amounts to redelegation under the Delegation of Financial Powers Rules, 1978.\\n3.\\tA Department of the Central Government to whom powers are delegated by the President shall not have powers to waive the recoveries relating to a gazetted Government servant.\\nSelect the correct answer using the code given below:\",\n    options: [\n      \"1 and 2 only\",\n      \"3 only\",\n      \"2 only\",\n      \"1, 2, and 3\"\n    ],\n    correct: 1,\n    explanation: \"Statement 1 is INCORRECT: As per Rule 12 - Powers of Subordinate Authorities, Sub-rule (3) of DFPR 2024: 'The Administrator or Head of the Department referred to in sub-rule (2) may, by an order in writing, authorise a Gazetted Officer serving under him to exercise to such extent, as may be specified in that order, all or any of the powers conferred on such Administrator or Head of the Department under sub-rule (2). The Administrator or Head of the Department shall, however, continue to be responsible for the correctness, regularity and propriety of the decisions taken by the Gazetted Officer so authorised.'\\n\\nThe Head of Department remains responsible, not the authorized officer.\\n\\nStatement 2 is INCORRECT: Authorizing a Section Officer to sign sanctions for petty contingent expenditure does not amount to prohibited redelegation. Rule 12, Sub-rule (2) specifies that redelegation is prohibited only for:\\n(a) Rule 10-Re-appropriation of funds;\\n(b) Rule 15-Waiver of recovery of overpayment; and\\n(c) Rule 16-Appraisal and Approval of Schemes or Projects.\\n\\nStatement 3 is CORRECT (for the 2023 exam context):\\n\\nDFPR 1978 Position: Departments had very limited or no powers to waive recoveries relating to gazetted government servants.\\n\\nDFPR 2024 Position: Rule 15, Sub-rule (2) now states: 'A Department of Government of India may waive recovery of overpayment upto Rs. 2,00,000\/- (Rupees Two Lakhs only) in the case of each individual with the concurrence of Financial Advisers of the Department. Proposals for waiver of recovery of amount greater than Rs. 2,00,000\/- (Rupees Two Lakhs only) in each case shall be referred to the Finance Ministry for concurrence.'\\n\\nThe statement as framed for 2023 exam was considered correct under DFPR 1978.\"\n  },\n  {\n    id: 22,\n    year: '2023',\n    chapter: 'Rule 19: Dismantlement of public buildings',\n    question: \"In terms of the Delegation of Financial Powers Rules, 1978, the Departments of the Central Government have full powers to sanction the sale or dismantlement of purely temporary structures. In this context, a purely temporary structure means a structure, the life of which is not more than:\",\n    options: [\n      \"Two years\",\n      \"Three years\",\n      \"Five years\",\n      \"Seven years\"\n    ],\n    correct: 0,\n    explanation: \"As per Rule 19 - Dismantlement of public buildings of DFPR 2024 (corresponding to Rule 24 of DFPR 1978), the Explanation at the end of the rule states: 'Explanation \u2013 for the purposes of this rule, 'a purely temporary structure' mean a structure, the life of which is not more than two years.' The rule also provides under Condition (iv): 'The Departments or Ministries of the Government of India and Administrators shall have full powers to sanction dismantlement of purely temporary structures.' DFPR 1978 Position: Two years. DFPR 2024 Position: Two years (unchanged). Both versions of the rules maintain the same definition that a purely temporary structure has a life of not more than two years.\"\n  },\n  {\n    id: 23,\n    year: '2023',\n    chapter: 'Rule 13: Office Expenses and Other Related Orders on Hospitality',\n    question: \"In terms of the Delegation of Financial Powers Rules, 1978, the per month ceiling of office expenditure on hospitality in the case of the Cabinet Secretary is:\",\n    options: [\n      \"\u20b923,000\",\n      \"\u20b925,000\",\n      \"\u20b927,000\",\n      \"\u20b934,000\"\n    ],\n    correct: 0,\n    explanation: \"Note: The specific monthly ceiling for Cabinet Secretary's hospitality expenditure is NOT explicitly mentioned in the DFPR 2024 rules document provided. However, related guidance on hospitality expenditure is provided in Other Related Orders. As per Department of Expenditure O.M. No. F No. 7(3)\/E-Coord\/2013, dated 06.05.2015: For general meetings\/seminars\/conferences, the ceilings are: 'Tea + Snacks: Rs.200\/-; High Tea: Rs.500\/-; Lunch\/Dinner: Rs.750\/-' For international engagements at Five Star Hotels, Banquet Rates are: 'Buffet Lunch: Rs.950; Buffet Dinner: Rs.950; Sit down lunch: Rs.950; Sit down dinner: Rs.1050; Cocktail: Rs.575.' Rule 13 - Office Expenses in DFPR 2024 includes: 'It will include all recurring and non-recurring contingent expenses incurred for the maintenance of office establishment such as... hospitality expenses including entertainment of foreign delegates, gifts and souvenirs...' DFPR 1978 Position: The specific monthly ceiling of \u20b923,000 for Cabinet Secretary was likely contained in DFPR 1978 or related orders. DFPR 2024 Position: DFPR 2024 does not specify individual officer-wise monthly ceilings for hospitality, but provides event-based ceilings through related orders. The question appears to test knowledge of DFPR 1978 specific provisions that have since been revised or removed.\"\n  },\n   {\n    id: 24,\n    year: '2023',\n    chapter: 'Rule 3: Definitions',\n    question: \"Which of the following are the duties of Internal Financial Advisers?\\n1.\\tTo watch the settlement of audit objections, inspection reports, draft audit paras.\\n2.\\tTo screen the proposals for supplementary demands for grants.\\n3.\\tTo scrutinize proposals for re-delegation of powers to subordinate authorities.\\n4.\\tTo screen all expenditure proposals required to be referred to the Finance Ministry for concurrence.\\nSelect the correct answer using the code given below:\",\n    options: [\n      \"3 and 4 only\",\n      \"1, 2, and 3 only\",\n      \"2 and 4 only\",\n      \"1, 2, 3, and 4\"\n    ],\n    correct: 3,\n    explanation: \"As per Rule 3 - Definitions, Sub-rule (1)(f) of DFPR 2024: ''Finance Ministry' means the Department of Expenditure, Ministry of Finance of the Government of India: Provided that in any Department of the Government of India where the Scheme of Integrated Financial Adviser is in force, the Integrated Financial Adviser of that Department, will, subject to supervision by Finance Ministry, exercise all or any of the powers delegated by Finance Ministry.'\\n\\nThe duties of Internal\/Integrated Financial Advisers include:\\n\\nStatement 1 is CORRECT: Watching settlement of audit objections, inspection reports, and draft audit paras is a core financial oversight and audit liaison function.\\n\\nStatement 2 is CORRECT: Screening proposals for supplementary demands for grants is required under Rule 10 and Government of India's decision (1) on re-appropriation guidelines which mandates FA consultation.\\n\\nStatement 3 is CORRECT: As per Rule 12, Sub-rule (2): 'A Department of the Central Government may, by general or special order, confer powers, not exceeding those vested in that Department, upon an Administrator or Head of Department or any other authority subordinate to the Department in respect of any matter covered by these rules, in consultation with the Internal Financial Adviser.'\\n\\nStatement 4 is CORRECT: This is a fundamental duty\u2014screening all expenditure proposals requiring Finance Ministry concurrence before forwarding them. As per Rule 5, Sub-rule (1): 'No Authority shall sanction expenditure or advances without the previous consent of the Finance Ministry if it involves the introduction of a new principle or practice likely to lead to increased expenditure in future.'\\n\\nDFPR 1978 & 2024 Position: These duties have remained consistent across both versions, forming the core responsibilities of Financial Advisers in ensuring financial propriety and oversight.\"\n  }\n\n\n  \n];\n\n\/\/ ==========================================\n\/\/ STATE MANAGEMENT\n\/\/ ==========================================\nlet state = {\n    currentMode: 'all',\n    selectedYear: null,\n    selectedChapter: null,\n    filteredQuestions: [],\n    currentQuestionIndex: 0,\n    sessionAnswers: {},\n    sessionChecked: {},\n    isReviewMode: false,\n    progress: {\n        questionStats: {},\n        weakQuestions: [],\n        masteredQuestions: [],\n        totalCorrect: 0,\n        totalIncorrect: 0,\n        lastSession: null\n    }\n};\n\n\/\/ ==========================================\n\/\/ DOM ELEMENTS (cached for performance)\n\/\/ ==========================================\nconst DOM = {};\n\n\/\/ ==========================================\n\/\/ INITIALIZATION\n\/\/ ==========================================\nfunction initQuiz() {\n    console.log('\ud83d\ude80 Quiz Initializing...');\n    \n    \/\/ Cache DOM elements\n    cacheDOM();\n    \n    \/\/ Load saved progress\n    loadProgress();\n    \n    \/\/ Set initial filtered questions\n    state.filteredQuestions = [...allQuestions];\n    \n    \/\/ Populate filters\n    populateYearList();\n    populateChapterList();\n    \n    \/\/ Setup event listeners (EVENT DELEGATION - THIS IS THE KEY FIX!)\n    setupEventListeners();\n    \n    \/\/ Update UI\n    updateModeTabCounts();\n    updateProgressDisplay();\n    updateWeakAreasDisplay();\n    checkForResumableSession();\n    \n    \/\/ Load first question\n    loadQuestion(0);\n    \n    \/\/ Setup screenshot prevention\n    initScreenshotPrevention();\n    \n    console.log('\u2705 Quiz Initialized Successfully');\n}\n\nfunction cacheDOM() {\n    DOM.yearList = document.getElementById('yearList');\n    DOM.chapterList = document.getElementById('chapterList');\n    DOM.questionGrid = document.getElementById('questionGrid');\n    DOM.questionText = document.getElementById('questionText');\n    DOM.optionsList = document.getElementById('optionsList');\n    DOM.questionNumber = document.getElementById('questionNumber');\n    DOM.currentQuestionYear = document.getElementById('currentQuestionYear');\n    DOM.currentQuestionChapter = document.getElementById('currentQuestionChapter');\n    DOM.explanationBox = document.getElementById('explanationBox');\n    DOM.explanationText = document.getElementById('explanationText');\n    DOM.weakBadge = document.getElementById('weakBadge');\n    DOM.masteryIndicator = document.getElementById('masteryIndicator');\n    DOM.masteryStars = document.getElementById('masteryStars');\n    DOM.prevBtn = document.getElementById('prevBtn');\n    DOM.nextBtn = document.getElementById('nextBtn');\n    DOM.checkBtn = document.getElementById('checkBtn');\n    DOM.warningToast = document.getElementById('warningToast');\n    DOM.toastMessage = document.getElementById('toastMessage');\n    DOM.resultModal = document.getElementById('resultModal');\n}\n\n\/\/ ==========================================\n\/\/ EVENT LISTENERS - USING EVENT DELEGATION\n\/\/ THIS IS THE KEY FIX FOR FILTER ISSUES!\n\/\/ ==========================================\nfunction setupEventListeners() {\n    console.log('\ud83d\udcce Setting up event listeners...');\n    \n    \/\/ ============================================\n    \/\/ FIX: Year filter using EVENT DELEGATION\n    \/\/ ============================================\n    document.getElementById('yearList').addEventListener('click', function(e) {\n        const filterItem = e.target.closest('.filter-item');\n        if (filterItem) {\n            const year = filterItem.getAttribute('data-year');\n            console.log('\ud83d\udcc5 Year filter clicked:', year);\n            filterByYear(year);\n        }\n    });\n    \n    \/\/ ============================================\n    \/\/ FIX: Chapter filter using EVENT DELEGATION\n    \/\/ ============================================\n    document.getElementById('chapterList').addEventListener('click', function(e) {\n        const filterItem = e.target.closest('.filter-item');\n        if (filterItem) {\n            const chapter = filterItem.getAttribute('data-chapter');\n            console.log('\ud83d\udcd6 Chapter filter clicked:', chapter);\n            filterByChapter(chapter);\n        }\n    });\n    \n    \/\/ Mode tabs\n    document.querySelectorAll('.mode-tab').forEach(tab => {\n        tab.addEventListener('click', function() {\n            const mode = this.getAttribute('data-mode');\n            console.log('\ud83d\udd04 Mode changed to:', mode);\n            setMode(mode);\n        });\n    });\n    \n    \/\/ Navigation buttons\n    document.getElementById('prevBtn').addEventListener('click', previousQuestion);\n    document.getElementById('nextBtn').addEventListener('click', nextQuestion);\n    document.getElementById('checkBtn').addEventListener('click', checkAnswer);\n    \n    \/\/ Action buttons\n    document.getElementById('submitBtn').addEventListener('click', submitExam);\n    document.getElementById('resetBtn').addEventListener('click', resetQuiz);\n    document.getElementById('resumeBtn').addEventListener('click', resumeSession);\n    \n    \/\/ Result modal buttons\n    document.getElementById('reviewBtn').addEventListener('click', reviewAnswers);\n    document.getElementById('retryBtn').addEventListener('click', retryQuiz);\n    document.getElementById('practiceWeakBtn').addEventListener('click', practiceWeakAreas);\n    \n    \/\/ Weak areas buttons\n    document.getElementById('practiceWeakAreasBtn').addEventListener('click', practiceWeakAreas);\n    document.getElementById('weakBadgeHeader').addEventListener('click', practiceWeakAreas);\n    \n    \/\/ Question grid (event delegation)\n    document.getElementById('questionGrid').addEventListener('click', function(e) {\n        const gridItem = e.target.closest('.grid-item');\n        if (gridItem) {\n            const index = parseInt(gridItem.getAttribute('data-index'));\n            loadQuestion(index);\n        }\n    });\n    \n    \/\/ Options list (event delegation)\n    document.getElementById('optionsList').addEventListener('click', function(e) {\n        const optionItem = e.target.closest('.option-item');\n        if (optionItem && !optionItem.classList.contains('disabled')) {\n            const index = parseInt(optionItem.getAttribute('data-index'));\n            selectOption(index);\n        }\n    });\n    \n    \/\/ Weak question list (event delegation)\n    document.getElementById('weakQuestionList').addEventListener('click', function(e) {\n        const weakItem = e.target.closest('.weak-question-item');\n        if (weakItem) {\n            const qId = parseInt(weakItem.getAttribute('data-qid'));\n            goToQuestion(qId);\n        }\n    });\n    \n    console.log('\u2705 Event listeners setup complete');\n}\n\n\/\/ ==========================================\n\/\/ PROGRESS PERSISTENCE\n\/\/ ==========================================\nfunction loadProgress() {\n    const saved = localStorage.getItem(`quiz_progress_${quizConfig.quizId}`);\n    if (saved) {\n        state.progress = JSON.parse(saved);\n        console.log('\ud83d\udcc2 Progress loaded from localStorage');\n    }\n}\n\nfunction saveProgress() {\n    localStorage.setItem(`quiz_progress_${quizConfig.quizId}`, JSON.stringify(state.progress));\n    if (quizConfig.useWordPressSync) syncWithWordPress();\n}\n\nfunction syncWithWordPress() {\n    fetch(quizConfig.wpAjaxUrl, {\n        method: 'POST',\n        headers: { 'Content-Type': 'application\/x-www-form-urlencoded' },\n        body: new URLSearchParams({\n            action: 'save_quiz_progress',\n            quiz_id: quizConfig.quizId,\n            progress: JSON.stringify(state.progress)\n        })\n    }).catch(err => console.log('WordPress sync failed:', err));\n}\n\nfunction saveSessionPosition() {\n    state.progress.lastSession = {\n        questionIndex: state.currentQuestionIndex,\n        mode: state.currentMode,\n        selectedYear: state.selectedYear,\n        selectedChapter: state.selectedChapter\n    };\n    saveProgress();\n}\n\nfunction checkForResumableSession() {\n    if (state.progress.lastSession && state.progress.lastSession.questionIndex > 0) {\n        document.getElementById('sessionInfo').style.display = 'flex';\n        document.getElementById('sessionText').textContent = `Last session: Q${state.progress.lastSession.questionIndex + 1}`;\n    }\n}\n\nfunction resumeSession() {\n    if (state.progress.lastSession) {\n        const session = state.progress.lastSession;\n        if (session.mode) {\n            state.currentMode = session.mode;\n            state.selectedYear = session.selectedYear;\n            state.selectedChapter = session.selectedChapter;\n            applyFilters();\n        }\n        loadQuestion(session.questionIndex);\n        document.getElementById('sessionInfo').style.display = 'none';\n    }\n}\n\n\/\/ ==========================================\n\/\/ QUESTION STATS & MASTERY\n\/\/ ==========================================\nfunction updateQuestionStats(questionId, isCorrect) {\n    if (!state.progress.questionStats[questionId]) {\n        state.progress.questionStats[questionId] = { correct: 0, incorrect: 0, lastAttempt: null };\n    }\n    \n    const stats = state.progress.questionStats[questionId];\n    stats.lastAttempt = new Date().toISOString();\n    \n    if (isCorrect) {\n        stats.correct++;\n        state.progress.totalCorrect++;\n        if (stats.correct >= quizConfig.masteryThreshold) {\n            if (!state.progress.masteredQuestions.includes(questionId)) {\n                state.progress.masteredQuestions.push(questionId);\n            }\n            const weakIndex = state.progress.weakQuestions.indexOf(questionId);\n            if (weakIndex > -1) state.progress.weakQuestions.splice(weakIndex, 1);\n        }\n    } else {\n        stats.incorrect++;\n        state.progress.totalIncorrect++;\n        if (stats.incorrect >= quizConfig.weakThreshold && !state.progress.masteredQuestions.includes(questionId)) {\n            if (!state.progress.weakQuestions.includes(questionId)) {\n                state.progress.weakQuestions.push(questionId);\n            }\n        }\n    }\n    \n    saveProgress();\n    updateProgressDisplay();\n    updateWeakAreasDisplay();\n}\n\nfunction getQuestionMasteryLevel(questionId) {\n    const stats = state.progress.questionStats[questionId];\n    if (!stats) return 0;\n    return Math.min(stats.correct, 5);\n}\n\nfunction isQuestionWeak(questionId) {\n    return state.progress.weakQuestions.includes(questionId);\n}\n\n\/\/ ==========================================\n\/\/ PROGRESS DISPLAY\n\/\/ ==========================================\nfunction updateProgressDisplay() {\n    const total = allQuestions.length;\n    const mastered = state.progress.masteredQuestions.length;\n    const percentage = total > 0 ? Math.round((mastered \/ total) * 100) : 0;\n    \n    const circumference = 2 * Math.PI * 42;\n    const offset = circumference - (percentage \/ 100) * circumference;\n    document.getElementById('progressRingFill').style.strokeDashoffset = offset;\n    document.getElementById('progressPercentage').textContent = percentage + '%';\n    document.getElementById('totalCorrectProgress').textContent = state.progress.totalCorrect;\n    document.getElementById('totalWeakProgress').textContent = state.progress.weakQuestions.length;\n    document.getElementById('overallProgress').textContent = percentage + '% Mastered';\n}\n\nfunction updateWeakAreasDisplay() {\n    const weakCount = state.progress.weakQuestions.length;\n    \n    const weakBadgeHeader = document.getElementById('weakBadgeHeader');\n    if (weakCount > 0) {\n        weakBadgeHeader.style.display = 'flex';\n        document.getElementById('weakCountHeader').textContent = weakCount + ' Weak';\n    } else {\n        weakBadgeHeader.style.display = 'none';\n    }\n    \n    const weakCard = document.getElementById('weakAreasCard');\n    if (weakCount > 0) {\n        weakCard.style.display = 'flex';\n        weakCard.style.flexDirection = 'column';\n        const weakList = document.getElementById('weakQuestionList');\n        weakList.innerHTML = state.progress.weakQuestions.map(qId => {\n            const question = allQuestions.find(q => q.id === qId);\n            if (!question) return '';\n            const stats = state.progress.questionStats[qId] || { incorrect: 0 };\n            return `<div class=\"weak-question-item\" data-qid=\"${qId}\">\n                <span class=\"q-num\">Q${question.id}<\/span>\n                <span class=\"q-text\">${question.question.substring(0, 40)}...<\/span>\n                <span class=\"wrong-count\">${stats.incorrect}x<\/span>\n            <\/div>`;\n        }).join('');\n    } else {\n        weakCard.style.display = 'none';\n    }\n    \n    document.getElementById('weakModeCount').textContent = weakCount;\n}\n\nfunction updateModeTabCounts() {\n    document.getElementById('allCount').textContent = allQuestions.length;\n}\n\n\/\/ ==========================================\n\/\/ MODE & FILTERING - FIXED VERSION\n\/\/ ==========================================\nfunction setMode(mode) {\n    console.log('\ud83d\udd04 setMode called with:', mode);\n    \n    state.currentMode = mode;\n    \n    \/\/ Reset filters when switching to 'all' or 'weak' modes\n    if (mode === 'all' || mode === 'weak') {\n        state.selectedYear = null;\n        state.selectedChapter = null;\n    }\n    \n    \/\/ Update mode tab UI\n    document.querySelectorAll('.mode-tab').forEach(tab => tab.classList.remove('active'));\n    const modeTab = document.getElementById('mode' + mode.charAt(0).toUpperCase() + mode.slice(1));\n    if (modeTab) modeTab.classList.add('active');\n    \n    \/\/ \u2705 ADD THIS: Show\/hide filter cards based on mode\n    const yearCard = document.getElementById('yearFilterCard');\n    const chapterCard = document.getElementById('chapterFilterCard');\n    \n    yearCard.style.display = (mode === 'year' || mode === 'all') ? 'block' : 'none';\n    chapterCard.style.display = (mode === 'chapter' || mode === 'all') ? 'block' : 'none';\n    \n    applyFilters();\n}\n\n\/\/ ============================================\n\/\/ FIXED: filterByYear function\n\/\/ ============================================\nfunction filterByYear(year) {\n    console.log('\ud83d\udcc5 filterByYear called with:', year);\n    console.log('   Previous selectedYear:', state.selectedYear);\n    \n    \/\/ Toggle selection\n    state.selectedYear = (state.selectedYear === year) ? null : year;\n    state.selectedChapter = null;\n    state.currentMode = 'year';\n    \n    console.log('   New selectedYear:', state.selectedYear);\n    \n    \/\/ Update mode tab UI\n    document.querySelectorAll('.mode-tab').forEach(tab => tab.classList.remove('active'));\n    document.getElementById('modeYear').classList.add('active');\n    \n    applyFilters();\n}\n\n\/\/ ============================================\n\/\/ FIXED: filterByChapter function\n\/\/ ============================================\nfunction filterByChapter(chapter) {\n    console.log('\ud83d\udcd6 filterByChapter called with:', chapter);\n    console.log('   Previous selectedChapter:', state.selectedChapter);\n    \n    \/\/ Toggle selection\n    state.selectedChapter = (state.selectedChapter === chapter) ? null : chapter;\n    state.selectedYear = null;\n    state.currentMode = 'chapter';\n    \n    console.log('   New selectedChapter:', state.selectedChapter);\n    \n    \/\/ Update mode tab UI\n    document.querySelectorAll('.mode-tab').forEach(tab => tab.classList.remove('active'));\n    document.getElementById('modeChapter').classList.add('active');\n    \n    applyFilters();\n}\n\nfunction applyFilters() {\n    console.log('\ud83d\udd0d applyFilters called');\n    console.log('   Mode:', state.currentMode);\n    console.log('   Selected Year:', state.selectedYear);\n    console.log('   Selected Chapter:', state.selectedChapter);\n    \n    state.currentQuestionIndex = 0;\n    state.sessionAnswers = {};\n    state.sessionChecked = {};\n    state.isReviewMode = false;\n    \n    \/\/ Apply filtering\n    if (state.currentMode === 'weak') {\n        state.filteredQuestions = allQuestions.filter(q => state.progress.weakQuestions.includes(q.id));\n        console.log('   Filtering by weak areas');\n    } else if (state.selectedYear) {\n        state.filteredQuestions = allQuestions.filter(q => q.year === state.selectedYear);\n        console.log('   Filtering by year:', state.selectedYear);\n    } else if (state.selectedChapter) {\n        state.filteredQuestions = allQuestions.filter(q => q.chapter === state.selectedChapter);\n        console.log('   Filtering by chapter:', state.selectedChapter);\n    } else {\n        state.filteredQuestions = [...allQuestions];\n        console.log('   No filter - showing all');\n    }\n    \n    console.log('   Filtered questions count:', state.filteredQuestions.length);\n    \n    \/\/ Refresh filter lists to show active state\n    populateYearList();\n    populateChapterList();\n    updateQuestionGrid();\n    updateSessionStats();\n    \n    if (state.filteredQuestions.length > 0) {\n        loadQuestion(0);\n    } else {\n        document.getElementById('questionText').textContent = 'No questions available for this filter.';\n        document.getElementById('optionsList').innerHTML = '';\n    }\n}\n\nfunction practiceWeakAreas() {\n    document.getElementById('resultModal').classList.remove('show');\n    setMode('weak');\n}\n\n\/\/ ==========================================\n\/\/ FILTER LIST POPULATION - USING DATA ATTRIBUTES\n\/\/ ==========================================\nfunction populateYearList() {\n    const years = [...new Set(allQuestions.map(q => q.year))].sort().reverse();\n    const yearList = document.getElementById('yearList');\n    \n    \/\/ Use data-year attribute instead of onclick\n    yearList.innerHTML = years.map(year => {\n        const count = allQuestions.filter(q => q.year === year).length;\n        const isActive = state.selectedYear === year;\n        return `<div class=\"filter-item ${isActive ? 'active' : ''}\" data-year=\"${year}\">\n            <span class=\"filter-text\"><i class=\"fas fa-calendar\"><\/i> ${year}<\/span>\n            <span class=\"filter-count\">${count}<\/span>\n        <\/div>`;\n    }).join('');\n}\n\nfunction populateChapterList() {\n    const chapters = [...new Set(allQuestions.map(q => q.chapter))].sort();\n    const chapterList = document.getElementById('chapterList');\n    \n    \/\/ Use data-chapter attribute instead of onclick\n    chapterList.innerHTML = chapters.map(chapter => {\n        const count = allQuestions.filter(q => q.chapter === chapter).length;\n        const shortName = chapter.length > 25 ? chapter.substring(0, 25) + '...' : chapter;\n        const isActive = state.selectedChapter === chapter;\n        return `<div class=\"filter-item ${isActive ? 'active' : ''}\" data-chapter=\"${chapter}\" title=\"${chapter}\">\n            <span class=\"filter-text\"><i class=\"fas fa-book\"><\/i> ${shortName}<\/span>\n            <span class=\"filter-count\">${count}<\/span>\n        <\/div>`;\n    }).join('');\n}\n\n\/\/ ==========================================\n\/\/ QUESTION LOADING & NAVIGATION\n\/\/ ==========================================\nfunction loadQuestion(index) {\n    if (index < 0 || index >= state.filteredQuestions.length) return;\n    \n    state.currentQuestionIndex = index;\n    const question = state.filteredQuestions[index];\n    \n    document.getElementById('questionNumber').textContent = `Question ${index + 1} of ${state.filteredQuestions.length}`;\n    document.getElementById('questionText').innerHTML = question.question;\n    document.getElementById('currentQuestionYear').textContent = question.year;\n    document.getElementById('currentQuestionChapter').textContent = question.chapter;\n    \n    document.getElementById('weakBadge').style.display = isQuestionWeak(question.id) ? 'flex' : 'none';\n    \n    renderOptions(question);\n    \n    const isChecked = state.sessionChecked[index];\n    const explanationBox = document.getElementById('explanationBox');\n    if (isChecked || state.isReviewMode) {\n        document.getElementById('explanationText').innerHTML = question.explanation;\n        explanationBox.classList.add('show');\n    } else {\n        explanationBox.classList.remove('show');\n    }\n    \n    updateMasteryIndicator(question.id);\n    \n    document.getElementById('prevBtn').disabled = index === 0;\n    document.getElementById('nextBtn').disabled = index === state.filteredQuestions.length - 1;\n    document.getElementById('checkBtn').disabled = isChecked || state.isReviewMode;\n    \n    updateQuestionGrid();\n    saveSessionPosition();\n}\n\nfunction renderOptions(question) {\n    const optionsList = document.getElementById('optionsList');\n    const letters = ['A', 'B', 'C', 'D'];\n    const isChecked = state.sessionChecked[state.currentQuestionIndex];\n    const selectedAnswer = state.sessionAnswers[state.currentQuestionIndex];\n    \n    optionsList.innerHTML = question.options.map((option, i) => {\n        let classes = 'option-item';\n        let icon = '';\n        \n        if (isChecked || state.isReviewMode) {\n            classes += ' disabled';\n            if (i === question.correct) {\n                classes += ' correct';\n                icon = '<i class=\"fas fa-check-circle option-icon\"><\/i>';\n            } else if (i === selectedAnswer && i !== question.correct) {\n                classes += ' incorrect';\n                icon = '<i class=\"fas fa-times-circle option-icon\"><\/i>';\n            }\n        } else if (selectedAnswer === i) {\n            classes += ' selected';\n        }\n        \n        return `<div class=\"${classes}\" data-index=\"${i}\">\n            <span class=\"option-letter\">${letters[i]}<\/span>\n            <span class=\"option-text\">${option}<\/span>\n            ${icon}\n        <\/div>`;\n    }).join('');\n}\n\nfunction updateMasteryIndicator(questionId) {\n    const indicator = document.getElementById('masteryIndicator');\n    const stats = state.progress.questionStats[questionId];\n    \n    if (stats && (stats.correct > 0 || stats.incorrect > 0)) {\n        indicator.classList.add('show');\n        const level = getQuestionMasteryLevel(questionId);\n        document.getElementById('masteryStars').innerHTML = [1, 2, 3, 4, 5].map(i => \n            `<i class=\"fas fa-star ${i <= level ? 'filled' : ''}\"><\/i>`\n        ).join('');\n    } else {\n        indicator.classList.remove('show');\n    }\n}\n\nfunction selectOption(optionIndex) {\n    if (state.sessionChecked[state.currentQuestionIndex] || state.isReviewMode) return;\n    state.sessionAnswers[state.currentQuestionIndex] = optionIndex;\n    loadQuestion(state.currentQuestionIndex);\n    updateSessionStats();\n}\n\nfunction checkAnswer() {\n    const selectedAnswer = state.sessionAnswers[state.currentQuestionIndex];\n    if (selectedAnswer === undefined) {\n        showToast('Please select an option first!', 'error');\n        return;\n    }\n    \n    state.sessionChecked[state.currentQuestionIndex] = true;\n    const question = state.filteredQuestions[state.currentQuestionIndex];\n    const isCorrect = selectedAnswer === question.correct;\n    \n    updateQuestionStats(question.id, isCorrect);\n    loadQuestion(state.currentQuestionIndex);\n    updateSessionStats();\n    \n    showToast(isCorrect ? 'Correct! \ud83c\udf89' : 'Incorrect. Review the explanation.', isCorrect ? 'success' : 'error');\n}\n\nfunction previousQuestion() {\n    if (state.currentQuestionIndex > 0) loadQuestion(state.currentQuestionIndex - 1);\n}\n\nfunction nextQuestion() {\n    if (state.currentQuestionIndex < state.filteredQuestions.length - 1) loadQuestion(state.currentQuestionIndex + 1);\n}\n\nfunction goToQuestion(questionId) {\n    const index = state.filteredQuestions.findIndex(q => q.id === questionId);\n    if (index !== -1) loadQuestion(index);\n}\n\n\/\/ ==========================================\n\/\/ QUESTION GRID\n\/\/ ==========================================\nfunction updateQuestionGrid() {\n    const grid = document.getElementById('questionGrid');\n    grid.innerHTML = state.filteredQuestions.map((q, i) => {\n        let className = 'grid-item';\n        \n        if (i === state.currentQuestionIndex) {\n            className += ' current';\n        } else if (state.sessionChecked[i] || state.isReviewMode) {\n            if (state.sessionAnswers[i] === state.filteredQuestions[i].correct) {\n                className += ' correct-answered';\n            } else if (state.sessionAnswers[i] !== undefined) {\n                className += ' incorrect-answered';\n            } else {\n                className += ' unattempted';\n            }\n        } else if (state.sessionAnswers[i] !== undefined) {\n            className += ' attempted';\n        } else {\n            className += ' unattempted';\n        }\n        \n        if (isQuestionWeak(q.id)) className += ' weak-marked';\n        \n        return `<div class=\"${className}\" data-index=\"${i}\">${i + 1}<\/div>`;\n    }).join('');\n}\n\n\/\/ ==========================================\n\/\/ SESSION STATS\n\/\/ ==========================================\nfunction updateSessionStats() {\n    const total = state.filteredQuestions.length;\n    const attempted = Object.keys(state.sessionAnswers).length;\n    let correct = 0, incorrect = 0;\n    \n    Object.keys(state.sessionChecked).forEach(index => {\n        if (state.filteredQuestions[index] && state.sessionAnswers[index] === state.filteredQuestions[index].correct) correct++;\n        else if (state.sessionAnswers[index] !== undefined) incorrect++;\n    });\n    \n    document.getElementById('totalQuestions').textContent = total;\n    document.getElementById('attemptedCount').textContent = attempted;\n    document.getElementById('correctCount').textContent = correct;\n    document.getElementById('incorrectCount').textContent = incorrect;\n}\n\n\/\/ ==========================================\n\/\/ SUBMIT & RESULTS\n\/\/ ==========================================\nfunction submitExam() {\n    let correct = 0, incorrect = 0;\n    \n    state.filteredQuestions.forEach((q, i) => {\n        if (state.sessionAnswers[i] === q.correct) correct++;\n        else if (state.sessionAnswers[i] !== undefined) incorrect++;\n    });\n    \n    const percentage = state.filteredQuestions.length > 0 ? Math.round((correct \/ state.filteredQuestions.length) * 100) : 0;\n    \n    document.getElementById('resultCorrect').textContent = correct;\n    document.getElementById('resultIncorrect').textContent = incorrect;\n    document.getElementById('resultScore').textContent = percentage + '%';\n    \n    if (percentage >= 80) {\n        document.getElementById('resultIcon').textContent = '\ud83c\udf89';\n        document.getElementById('resultTitle').textContent = 'Excellent!';\n        document.getElementById('resultMessage').textContent = 'Outstanding performance!';\n    } else if (percentage >= 60) {\n        document.getElementById('resultIcon').textContent = '\ud83d\udc4d';\n        document.getElementById('resultTitle').textContent = 'Good Job!';\n        document.getElementById('resultMessage').textContent = 'Keep practicing!';\n    } else {\n        document.getElementById('resultIcon').textContent = '\ud83d\udcaa';\n        document.getElementById('resultTitle').textContent = 'Keep Learning!';\n        document.getElementById('resultMessage').textContent = 'Focus on weak areas.';\n    }\n    \n    document.getElementById('practiceWeakBtn').style.display = state.progress.weakQuestions.length > 0 ? 'flex' : 'none';\n    document.getElementById('resultModal').classList.add('show');\n}\n\nfunction reviewAnswers() {\n    document.getElementById('resultModal').classList.remove('show');\n    state.isReviewMode = true;\n    state.filteredQuestions.forEach((_, i) => { state.sessionChecked[i] = true; });\n    loadQuestion(0);\n    updateQuestionGrid();\n}\n\nfunction retryQuiz() {\n    document.getElementById('resultModal').classList.remove('show');\n    state.sessionAnswers = {};\n    state.sessionChecked = {};\n    state.isReviewMode = false;\n    updateQuestionGrid();\n    updateSessionStats();\n    loadQuestion(0);\n}\n\n\/\/ ============================================\n\/\/ FIXED: resetQuiz - NOW RESETS WEAK AREAS\n\/\/ ============================================\nfunction resetQuiz() {\n    if (confirm('Reset this session?\\n\\nThis will clear:\\n\u2022 Current answers\\n\u2022 Weak areas\\n\u2022 All progress')) {\n        \n        \/\/ Reset session data\n        state.sessionAnswers = {};\n        state.sessionChecked = {};\n        state.isReviewMode = false;\n        \n        \/\/ Reset ALL progress including weak areas\n        state.progress = {\n            questionStats: {},\n            weakQuestions: [],\n            masteredQuestions: [],\n            totalCorrect: 0,\n            totalIncorrect: 0,\n            lastSession: null\n        };\n        \n        \/\/ Save reset progress\n        saveProgress();\n        \n        \/\/ Reset filters\n        state.currentMode = 'all';\n        state.selectedYear = null;\n        state.selectedChapter = null;\n        state.filteredQuestions = [...allQuestions];\n        \n        \/\/ Update mode tabs UI\n        document.querySelectorAll('.mode-tab').forEach(tab => tab.classList.remove('active'));\n        document.getElementById('modeAll').classList.add('active');\n        \n        \/\/ Update all UI\n        populateYearList();\n        populateChapterList();\n        updateProgressDisplay();\n        updateWeakAreasDisplay();\n        updateQuestionGrid();\n        updateSessionStats();\n        loadQuestion(0);\n        \n        \/\/ Hide session info\n        document.getElementById('sessionInfo').style.display = 'none';\n        \n        showToast('Session reset successfully!', 'success');\n    }\n}\n\n\/\/ ==========================================\n\/\/ TOAST\n\/\/ ==========================================\nfunction showToast(message, type = 'error') {\n    const toast = document.getElementById('warningToast');\n    document.getElementById('toastMessage').textContent = message;\n    toast.classList.remove('success');\n    if (type === 'success') toast.classList.add('success');\n    toast.classList.add('show');\n    setTimeout(() => toast.classList.remove('show'), 3000);\n}\n\n\/\/ ==========================================\n\/\/ SCREENSHOT PREVENTION\n\/\/ ==========================================\nfunction initScreenshotPrevention() {\n    document.addEventListener('keydown', function(e) {\n        if (e.key === 'PrintScreen' || (e.ctrlKey && e.key === 'p') || (e.ctrlKey && e.shiftKey && e.key === 'S')) {\n            e.preventDefault();\n            showToast('Screenshots and printing are not allowed!');\n            return false;\n        }\n    });\n    \n    document.addEventListener('contextmenu', function(e) {\n        e.preventDefault();\n        showToast('Right-click is disabled!');\n        return false;\n    });\n}\n\n\/\/ Initialize when DOM is ready\ndocument.addEventListener('DOMContentLoaded', initQuiz);\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>Message \ud83c\udf89 Great Job! You have completed the quiz. 0 Correct 0 Incorrect 0% Score Review Practice Weak Try Again [&hellip;]<\/p>\n","protected":false},"author":1,"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":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"disabled","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":[44],"tags":[],"class_list":["post-5745","page","type-page","status-publish","hentry","category-pyq"],"_links":{"self":[{"href":"https:\/\/promotionexams.com\/index.php?rest_route=\/wp\/v2\/pages\/5745","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\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/promotionexams.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5745"}],"version-history":[{"count":29,"href":"https:\/\/promotionexams.com\/index.php?rest_route=\/wp\/v2\/pages\/5745\/revisions"}],"predecessor-version":[{"id":11051,"href":"https:\/\/promotionexams.com\/index.php?rest_route=\/wp\/v2\/pages\/5745\/revisions\/11051"}],"wp:attachment":[{"href":"https:\/\/promotionexams.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5745"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/promotionexams.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5745"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/promotionexams.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5745"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}