ÿþ<!DOCTYPE html> <html lang="hi"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>UP * A 2 ? 8  >  8 M  G , 2 . > ( 8 ?   - ? 0 A  ?  5  $ > 0 M  ?   M 7 . $ > & H ( ?   - M / > 8 8 . 8 M / >  ( 0 G  0 </title> <link href="img/logo1.jpg" rel="icon"> <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> <style> :root { --primary: #4361ee; --primary-dark: #3f37c9; --secondary: #4895ef; --danger: #f72585; --success: #4cc9f0; --light: #f8f9fa; --dark: #212529; --gray: #6c757d; --border-radius: 12px; --box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); --transition: all 0.3s ease; } * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; } body { background: linear-gradient(135deg, #f5f7fa 0%, #e2e8f0 100%); min-height: 100vh; display: flex; justify-content: center; align-items: center; padding: 20px; color: var(--dark); line-height: 1.6; } .container { width: 100%; max-width: 950px; background: white; border-radius: var(--border-radius); box-shadow: var(--box-shadow); overflow: hidden; transition: var(--transition); animation: fadeIn 0.5s ease-out; } @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .header { background: linear-gradient(135deg, var(--primary), var(--primary-dark)); color: white; padding: 30px 20px; text-align: center; position: relative; overflow: hidden; } .header::before { content: ''; position: absolute; top: -50px; right: -50px; width: 150px; height: 150px; background: rgba(255, 255, 255, 0.1); border-radius: 50%; } .header h1 { font-size: 2rem; margin-bottom: 10px; font-weight: 700; position: relative; z-index: 1; } .header p { font-size: 1rem; opacity: 0.9; position: relative; z-index: 1; } .content-area { padding: 30px; } .hidden { display: none !important; } .btn { display: inline-block; padding: 12px 28px; border-radius: 50px; font-weight: 600; cursor: pointer; transition: var(--transition); border: none; text-align: center; box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1); margin: 10px 5px; } .btn-primary { background: var(--primary); color: white; } .btn-primary:hover { background: var(--primary-dark); transform: translateY(-2px); } .btn-success { background: var(--success); color: white; } .btn-success:hover { background: #3ab0d6; transform: translateY(-2px); } .btn-danger { background: var(--danger); color: white; } .btn-danger:hover { background: #d3166b; transform: translateY(-2px); } .btn-level { background: var(--light); color: var(--dark); border: 2px solid var(--gray); font-size: 1.2rem; padding: 15px 30px; width: 200px; } .btn-level:hover { transform: translateY(-5px); box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2); } .btn-level.selected { background: var(--primary); color: white; border-color: var(--primary); } .btn-group { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; margin: 20px 0; } .level-buttons { display: flex; justify-content: center; gap: 20px; margin: 30px 0; flex-wrap: wrap; } .section-title { text-align: center; margin-bottom: 25px; color: var(--primary-dark); font-size: 1.5rem; position: relative; padding-bottom: 10px; } .section-title::after { content: ''; position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); width: 80px; height: 3px; background: var(--secondary); border-radius: 3px; } .checkbox-container { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 15px; margin: 25px 0; max-height: 450px; overflow-y: auto; padding: 10px; border: 1px solid #eee; border-radius: 12px; } .checkbox-item { display: flex; align-items: center; } .checkbox-item input { margin-right: 10px; width: 18px; height: 18px; cursor: pointer; } .checkbox-item label { cursor: pointer; font-size: 0.95rem; font-weight: 500; } .question { margin-bottom: 20px; page-break-inside: avoid; } .question-text { font-weight: 500; margin-bottom: 8px; } .option { margin-left: 20px; margin-bottom: 5px; } .action-buttons { display: flex; justify-content: center; flex-wrap: wrap; gap: 15px; margin-top: 40px; } .answer-sheet { margin-top: 40px; padding: 20px; background: #f8f9fa; border-radius: var(--border-radius); } .answer-table { width: 100%; border-collapse: collapse; margin-top: 15px; } .answer-table th, .answer-table td { border: 1px solid #ddd; padding: 8px; text-align: center; } .answer-table th { background-color: var(--primary); color: white; } .streak-container { display: flex; justify-content: center; align-items: center; margin: 20px 0; gap: 15px; flex-wrap: wrap; } .streak-counter { background: var(--success); color: white; padding: 10px 20px; border-radius: 50px; font-weight: bold; } .date-display { font-size: 1.1rem; font-weight: 600; color: var(--primary-dark); } .progress-container { margin: 20px 0; background: #f8f9fa; padding: 20px; border-radius: var(--border-radius); } .progress-bar { height: 10px; background: #e9ecef; border-radius: 5px; overflow: hidden; margin-top: 10px; } .progress-fill { height: 100%; background: var(--success); border-radius: 5px; transition: width 0.5s ease; } .problem-of-day { background: linear-gradient(135deg, #fff5f5, #fff0f6); border-left: 4px solid var(--danger); padding: 20px; margin: 20px 0; border-radius: var(--border-radius); } .daily-summary { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 15px; margin: 20px 0; } .summary-card { flex: 1; min-width: 120px; background: white; padding: 15px; border-radius: var(--border-radius); box-shadow: 0 4px 10px rgba(0,0,0,0.05); text-align: center; } .home-icon { position: absolute; top: 20px; left: 20px; color: white; font-size: 24px; cursor: pointer; transition: var(--transition); z-index: 2; } .home-icon:hover { transform: scale(1.1); } .instructions { margin-bottom: 30px; padding: 20px; background: #f8f9fa; border-radius: var(--border-radius); } .instructions ol { padding-left: 20px; margin-top: 10px; } @media (max-width: 768px) { .header h1 { font-size: 1.4rem; } .btn-level { width: 160px; font-size: 1rem; } .checkbox-container { grid-template-columns: 1fr; } } @media print { .action-buttons, .streak-container, .progress-container, .problem-of-day, .daily-summary, .home-icon { display: none; } } </style> </head> <body> <div class="container" id="startContainer"> <div class="header"> <a href="up-police-constable-daily-practice-problem-generator.html" class="home-icon"><i class="fas fa-home"></i></a> <h1>UP * A 2 ? 8  >  8 M  G , 2 . > ( 8 ?   - ? 0 A  ?  5  $ > 0 M  ?   M 7 . $ > </h1> <p>& H ( ?   - M / > 8 8 . 8 M / >  ( 0 G  0 (9 ?  & @ . G  )</p> </div> <div class="content-area"> <div id="startScreen"> <h2 class="section-title">. > ( 8 ?   - ? 0 A  ?  5  $ > 0 M  ?   M 7 . $ > & H ( ?   - M / > 8 </h2> <div class="streak-container"> <div class="streak-counter"><i class="fas fa-fire"></i> 2  > $ > 0 : <span id="streakDays">0</span> & ? ( </div> <div class="date-display" id="currentDate"></div> </div> <div class="progress-container"> <h3> *  @ * M 0  $ ? </h3> <div class="progress-bar"><div class="progress-fill" id="progressFill" style="width: 0%"></div></div> <p id="progressText">0% * B 0 M # </p> </div> <div class="btn-group"> <button class="btn btn-primary" id="problemOfDayBtn">& ? (  @ 8 . 8 M / > </button> <button class="btn btn-success" id="customPracticeBtn"> 8 M  .  - M / > 8 </button> </div> </div> <div id="subjectSelection" class="hidden"> <h2 class="section-title">5 ? 7 /  A ( G  </h2> <div class="btn-group"><button class="btn btn-primary" id="selectReasoningBtn">. > ( 8 ?   - ? 0 A  ?  5  $ 0 M  6  M $ ? </button></div> </div> <div id="topicSelection" class="hidden"> <h2 class="section-title">5 ? 7 / K   >  / (  0 G  ( ' M / > / 5 > 0 )</h2> <form id="topicForm"> <div class="checkbox-container" id="topicsContainer"></div> </form> <div class="btn-group"> <button class="btn btn-danger" id="backToStartBtn">* M 0 > 0  - * 0 5 > * 8 </button> <button class="btn btn-success" id="generateAssignmentBtn"> - M / > 8 * M 0 6 M (  G ( 0 G   0 G  </button> </div> </div> <div id="levelSelection" class="hidden"> <h2 class="section-title"> ? ( >  8 M $ 0  A ( G  </h2> <p class="text-center"> * ( G  - M / > 8  G 2 ?   ? ( >  8 M $ 0  A ( G  :</p> <div class="level-buttons"> <button class="btn btn-level" id="level1Btn">8 M $ 0 1<br><small>, G 8 ?  </small></button> <button class="btn btn-level" id="level2Btn">8 M $ 0 2<br><small>. ' M / . </small></button> <button class="btn btn-level" id="level3Btn">8 M $ 0 3<br><small> ( M ( $ (UP * A 2 ? 8 * 0 @  M 7 > 8 M $ 0 )</small></button> </div> <div class="btn-group"> <button class="btn btn-danger" id="backToTopicsBtn">5 ? 7 / K  * 0 5 > * 8 </button> <button class="btn btn-success" id="generateFinalBtn"> - M / > 8 * M 0 6 M (  G ( 0 G   0 G  </button> </div> </div> </div> </div> <div class="container hidden" id="generatedPaperContainer"></div> <script> const { jsPDF } = window.jspdf; const startContainer = document.getElementById('startContainer'); const startScreen = document.getElementById('startScreen'); const subjectSelection = document.getElementById('subjectSelection'); const topicSelection = document.getElementById('topicSelection'); const levelSelection = document.getElementById('levelSelection'); const generatedPaperContainer = document.getElementById('generatedPaperContainer'); const problemOfDayBtn = document.getElementById('problemOfDayBtn'); const customPracticeBtn = document.getElementById('customPracticeBtn'); const selectReasoningBtn = document.getElementById('selectReasoningBtn'); const backToStartBtn = document.getElementById('backToStartBtn'); const generateAssignmentBtn = document.getElementById('generateAssignmentBtn'); const backToTopicsBtn = document.getElementById('backToTopicsBtn'); const generateFinalBtn = document.getElementById('generateFinalBtn'); const level1Btn = document.getElementById('level1Btn'); const level2Btn = document.getElementById('level2Btn'); const level3Btn = document.getElementById('level3Btn'); const homeIcon = document.getElementById('homeIcon'); const streakDays = document.getElementById('streakDays'); const currentDate = document.getElementById('currentDate'); const progressFill = document.getElementById('progressFill'); const progressText = document.getElementById('progressText'); // ======================== . > ( 8 ?   - ? 0 A  ?  5  $ > 0 M  ?   M 7 . $ > -  ' M / > / 5 > 0 * M 0 6 M ( ! G  > , G 8 ======================== const questions = { "8 > & C 6 M / $ > (Analogy)": { level1: [ { question: "/ & ? '* A 8 M $  ' : '2 G   ' :: ' ? $ M 0 ' : ?", options: [" ? $ M 0  > 0 ", "0   ", " H ( 5 > 8 ", "* M 0 & 0 M 6 ( @ "], answer: "A" }, { question: "/ & ? 6 : 36 :: 8 : ?", options: ["48", "56", "64", "72"], answer: "C" }, { question: "! I  M  0 :  8 M * $ > 2 :: 6 ?  M 7  : ?", options: ["8 M  B 2 ", " I 2 G  ", "5 ? & M / > 2 / ", "  M 7 > "], answer: "C" } ], level2: [ { question: "/ & ? ' > / ' : '& B ' ' :: '. A 0 M  @ ' : ?", options: ["  ! > ", ". >  8 ", "*   ", " B  > "], answer: "A" }, { question: "CEG : FHJ :: PRT : ?", options: ["SUV", "SUW", "STU", "SVW"], answer: "B" } ], level3: [ { question: "/ & ? 14 : 44 :: 21 : ?", options: ["63", "65", "66", "68"], answer: "C" }, { question: ". > 8 : 5 0 M 7 :: 8 * M $ > 9 : ?", options: [". 9 @ ( > ", "& ? ( ", "$ > 0 @  ", " H 2 G  ! 0 "], answer: "A" } ] }, "6 M 0 G # @ * B 0 M # $ > (Series Completion)": { level1: [ { question: "2, 4, 6, 8, ?", options: ["9", "10", "11", "12"], answer: "B" }, { question: "A, C, F, J, ?", options: ["M", "N", "O", "P"], answer: "C" }, { question: "3, 9, 27, 81, ?", options: ["162", "243", "324", "405"], answer: "B" } ], level2: [ { question: "11, 13, 17, 19, 23, ?", options: ["25", "27", "29", "31"], answer: "C" }, { question: "Z, X, V, T, ?", options: ["R", "S", "Q", "P"], answer: "A" } ], level3: [ { question: "2, 6, 12, 20, 30, ?", options: ["40", "42", "44", "46"], answer: "B" }, { question: "1, 4, 9, 16, 25, ?", options: ["30", "35", "36", "40"], answer: "C" } ] }, " K ! ?   -! ?  K ! ?   (Coding-Decoding)": { level1: [ { question: "/ & ? 'DELHI'  K 'EDMGH' 2 ?  >  > $ > 9 H , $ K 'MUMBAI'  K  H 8 G 2 ?  G   G ?", options: ["NVNCZJ", "NUNCBJ", "NVNCBJ", "NUNCZJ"], answer: "A" }, { question: "/ & ? 'ROSE'  K 'SPTF' 2 ?  >  > $ > 9 H , $ K 'LILY'  K  H 8 G 2 ?  G   G ?", options: ["MJMZ", "MJMX", "MJMZ", "MJMX"], answer: "A" }, { question: "/ & ? 1234 = 10, $ K 5678 = ?", options: ["20", "22", "24", "26"], answer: "D" } ], level2: [ { question: "/ & ? 'MANGO'  K 'NBOHP' 2 ?  >  > $ > 9 H , $ K 'APPLE'  K  H 8 G 2 ?  G   G ?", options: ["BQQMF", "BQQME", "BQQMF", "BQQMD"], answer: "A" }, { question: "/ & ? 'RED'  K '27' 2 ?  >  > $ > 9 H , $ K 'BLUE'  K  M / > 2 ?  G   G ? (A=1, B=2 ...)", options: ["33", "34", "35", "36"], answer: "B" } ], level3: [ { question: "  ( ? 6 M  ? $  K ! . G  'POLICE'  K 'QLPJDF' 2 ?  >  > $ > 9 H , $ K 'THIEF'  K  H 8 G 2 ?  G   G ?", options: ["UIJFG", "UJHFG", "UIHGF", "UJHGF"], answer: "A" }, { question: "/ & ? 'ORANGE'  K 'PSBOHF' 2 ?  >  >  $ K 'PAPAYA'  K  H 8 G 2 ?  G   G ?", options: ["QBQBZB", "QBQBZB", "QBPBZB", "QBQBZB"], answer: "A" } ] }, "0  M $ 8  ,  ' (Blood Relations)": { level1: [ { question: "0 > . ( G 8 @ $ > 8 G  9 > , '$ A . . G 0 @ . >   @   2 L $ @ * A $ M 0 @ 9 K d ' 8 @ $ > , 0 > .  @  M / > 2  $ @ 9 H ?", options: [", 9 ( ", ". >  ", " >  @ ", ", G  @ "], answer: "A" }, { question: "A, B  > * ? $ > 9 H d C, B  @ . > $ > 9 H d D, C  @ * A $ M 0 @ 9 H d A, D  >  M / > 2  $ > 9 H ?", options: ["* $ ? ", "* ? $ > ", "- >  ", " >  > "], answer: "A" } ], level2: [ { question: ". K 9 ( 8 A 0 G 6  > * A $ M 0 9 H d 8 A 0 G 6 0 > ' >  G * $ ? 9 H  d 0 > ' > 0 . G 6  @ , 9 ( 9 H  d 0 . G 6  > . K 9 ( 8 G  M / > 8  ,  ' 9 H ?", options: [" >  > ", ". > . > ", "* ? $ > ", "- >  "], answer: "B" }, { question: "  5 M /  M $ ? ( G   . 9 ? 2 >  > * 0 ?  / & G $ G 9 A   9 > , '/ 9 . G 0 G * ? $ >  @   2 L $ @ , 9 (  @ , G  @ 9 H d ' 5 9 . 9 ? 2 > 8 5 M /  M $ ? 8 G  ? 8 * M 0  > 0 8  ,  ' ? $ 9 H ?", options: [", 9 ( ", "  G 0 @ , 9 ( ", ". > . G  @ , 9 ( ", "- $ @  @ "], answer: "C" } ], level3: [ { question: "  * 0 ? 5 > 0 . G  6 8 & 8 M / 9 H  d A, B  @ . > $ > 9 H d C, D  > * $ ? 9 H d E, A  @ * A $ M 0 @ 9 H d F, D  > * A $ M 0 9 H d B, F  > - >  9 H d D, E 8 G  ? 8 * M 0  > 0 8  ,  ' ? $ 9 H ?", options: ["* $ ? ", "- >  ", ", 9 ( ", ". >  "], answer: "A" } ] }, "& ? 6 >  5  & B 0 @ (Direction & Distance)": { level1: [ { question: "0 > . $ M $ 0  @  0 5  ? . @  2 $ > 9 H , + ? 0 & >   . A ! <  0 10  ? . @  2 $ > 9 H , + ? 0 , >   . A ! <  0 5  ? . @  2 $ > 9 H d 5 9 * M 0 > 0  - ?  , ?  & A 8 G  ? $ ( @ & B 0 @ * 0 9 H ?", options: ["10  ? . @ ", "12  ? . @ ", "15  ? . @ ", "20  ? . @ "], answer: "A" }, { question: "8 B 0 M / K & /  G 8 . /   5 M /  M $ ?  * ( G  0 8 G ( ?  2 $ > 9 H  0 1  ? . @  2 $ > 9 H , + ? 0 , >   . A ! < $ > 9 H  0 2  ? . @  2 $ > 9 H d  , 8  > . A  9  ? 8 & ? 6 > . G  9 H ?", options: [" $ M $ 0 ", "&  M 7 ? # ", "* B 0 M 5 ", "* 6 M  ? . "], answer: "A" } ], level2: [ { question: "A, B  G 10 . @  0 * B 0 M 5 . G  9 H d C, B  G 5 . @  0 &  M 7 ? # . G  9 H d D, C  G 8 . @  0 * 6 M  ? . . G  9 H d E, D  G 6 . @  0 $ M $ 0 . G  9 H d A, E 8 G  ? 8 & ? 6 > . G  9 H ?", options: [" $ M $ 0 -* B 0 M 5 ", " $ M $ 0 -* 6 M  ? . ", "&  M 7 ? # -* B 0 M 5 ", "&  M 7 ? # -* 6 M  ? . "], answer: "B" } ], level3: [ { question: "  5 M /  M $ ? $ M $ 0  @  0 12 . @  0  2 $ > 9 H , + ? 0 & >   . A ! <  0 15 . @  0 , + ? 0 & >   . A ! <  0 18 . @  0 , + ? 0 , >   . A ! <  0 8 . @  0  2 $ > 9 H d  , 5 9 * M 0 > 0  - ?  , ?  & A 8 G  ? $ ( @ & B 0  0  ? 8 & ? 6 > . G  9 H ?", options: ["10 . @  0 * B 0 M 5 ", "12 . @  0 * 6 M  ? . ", "10 . @  0 * 6 M  ? . ", "12 . @  0 * B 0 M 5 "], answer: "C" } ] }, "5 G (  0 G  (Venn Diagram)": { level1: [ { question: "( ? . M ( 2 ?  ? $ . G  8 G  L ( 8 > 5 G (  0 G  '* A 0 A 7 , ! I  M  0 , 6 ?  M 7  '  K 8 9 @ & 0 M 6 > $ > 9 H ?", options: ["$ @ (  2  - 2  5 C $ M $ ", "& K 5 C $ M $   & B 8 0 G  K  >  $ G 9 A  ", "  5 C $ M $ & B 8 0 G  G   & 0 ", "$ @ ( K  5 C $ M $   & B 8 0 G  K  >  $ G 9 A  "], answer: "D" }, { question: " L ( 8 > 5 G (  0 G  '* 6 A ,  > / ,  K ! < > '  K & 0 M 6 > $ > 9 H ?", options: ["  5 C $ M $ & B 8 0 G  G   & 0 ", "& K  2  5 C $ M $ ", "$ @ ( K   2  ", "  , ! < G 5 C $ M $  G   & 0 & K  K  G  2  5 C $ M $ "], answer: "D" } ], level2: [ { question: "/ & ? 'A' =  > $ M 0 , 'B' = 2 ! <  ? / >  , 'C' =  ? 2 > ! < @ , $ K '5 G 2 ! <  ? / >   K  ? 2 > ! < @ 9 H  2 G  ? (  > $ M 0 ( 9 @  '  K  H 8 G & 0 M 6 > / >  >   > ?", options: ["B )" C - A", "B *" C - A", "A )" B - C", "C )" A - B"], answer: "A" } ], level3: [ { question: "  5 G (  0 G  . G  100 5 M /  M $ ? / K  . G  8 G 40  K  # ? $ * 8  & 9 H , 50  K 5 ?  M  > ( * 8  & 9 H , 20  K & K ( K  * 8  & 9 H  d  ? $ ( G 5 M /  M $ ? / K   K  K  - @ 5 ? 7 / * 8  & ( 9 @  9 H ?", options: ["20", "25", "30", "35"], answer: "C" } ] }, "( M / > / ?  $ 0 M  (Logical Reasoning)": { level1: [ { question: "8 - @ * G  8 ? 2  2 . 9 H  d 8 - @  2 . ! ? , M , G 9 H  d ( ? 7 M  0 M 7 : I. 8 - @ * G  8 ? 2 ! ? , M , G 9 H  d II. 8 - @  2 . * G  8 ? 2 9 H  d ", options: [" G 5 2 I", " G 5 2 II", "I  0 II & K ( K  ", "( $ K I ( II"], answer: "A" }, { question: " A  + 2 . @ G 9 H  d 8 - @ . @ G  G 2 G 9 H  d ( ? 7 M  0 M 7 : I.  A  + 2  G 2 G 9 H  d II. 8 - @  G 2 G . @ G 9 H  d ", options: [" G 5 2 I", " G 5 2 II", "& K ( K  ", "( $ K I ( II"], answer: "A" } ], level2: [ { question: "/ & ? A > B, B > C, C = D, D > E, $ K ( ? . M ( . G  8 G  L ( 8 > ( ? 6 M  ? $ 0 B * 8 G 8 $ M / 9 H ?", options: ["A > D", "B < D", "C > E", "B > E"], answer: "A" } ], level3: [ { question: "   % ( & ? / >  / > 9 H : '8 - @ + 2 . @ G 9 K $ G 9 H  d  A  . @ G 8  $ 0 G 9 H  d ' ( ? 7 M  0 M 7 : I.  A  8  $ 0 G . @ G 9 H  d II.  A  + 2 8  $ 0 G 9 H  d ", options: [" G 5 2 I  ( A 8 0 #  0 $ > 9 H ", " G 5 2 II  ( A 8 0 #  0 $ > 9 H ", "I  0 II & K ( K   ( A 8 0 #  0 $ G 9 H  ", "( $ K I ( II  ( A 8 0 #  0 $ > 9 H "], answer: "A" } ] }, "( ? 0 M # /  M 7 . $ > (Decision Making)": { level1: [ { question: "/ & ?  *   * A 2 ? 8  ' ?  > 0 @ 9 H   0  K  5 M /  M $ ?  M 0 H + ?  ( ? / . $ K ! < $ > 9 H 2 G  ? ( 5 9   - @ 0 0 B * 8 G , @ . > 0 9 H  0  8 M * $ > 2  > 0 9 > 9 H , $ K  *  M / >  0 G   G ?", options: [" A 0 M . > ( > 2  >    G ", " 8 G  8 M * $ > 2  > ( G & G   G  0 , > & . G   > 0 M 0 5 >   0 G   G ", " ? 0 + M $ > 0  0 G   G ", " G $ > 5 ( @ & G  0  K ! < & G   G "], answer: "B" }, { question: "  . 9 ? 2 > 0 > $ . G    G 2 @ 8 ! <  * 0  2 0 9 @ 9 H  0   8  & ?  M ' 5 M /  M $ ? 8  > * @  >  0 0 9 > 9 H d   * A 2 ? 8  0 M . @  G 0 B * . G   *  M / >  0 G   G ?", options: [" ( & G  >  0 G   G ", ". 9 ? 2 >  K $ A 0  $ 8 A 0  M 7 ? $ 8 M % > ( * 0 - G  G   G  0 8  & ?  M '  K *  ! < G   G ", ". 9 ? 2 >  K   G 2 >  K ! < & G   G ", "& K ( K   K % > ( G 2 G  >    G "], answer: "B" } ], level2: [ { question: "  & A  > ( & > 0 (  2 @ 5 8 M $ A , G  0 9 > 9 H d  *   * - K  M $ > 9 H  d  *  M / >  0 G   G ?", options: [" A * 0 9 G   G ", "& A  > ( & > 0 8 G   ! < >  0 G   G ", " * - K  M $ > + K 0 . . G  6 ?  > / $  0 G   G ", "5 8 M $ A 5 > * 8  0 & G   G "], answer: "C" } ], level3: [ { question: "   >  5 . G  & K 8 . A & > / K   G , @  $ ( > 5 9 H d   * A 2 ? 8  ' ?  > 0 @  G 0 B * . G   *  @ * 9 2 @ * M 0 > % . ?  $ >  M / > 9 K  @ ?", options: ["& K ( K  8 . A & > / K   K  ? 0 + M $ > 0  0 ( > ", "6 >  $ ? 5 > 0 M $ >  / K  ? $  0 ( >  0  > ( B ( 5 M / 5 8 M % > , ( >  0  ( > ", "  8 . A & > /  > *  M 7 2 G ( > ", " >  5  K ! < & G ( > "], answer: "B" } ] }, " # ? $ @ /  M 7 . $ > (Mathematical Ability)": { level1: [ { question: "/ & ? 3x + 5 = 20, $ K x  > . > (  M / > 9 H ?", options: ["3", "5", "7", "9"], answer: "B" }, { question: "   / $  @ 2  , >  12 8 G . @  0  L ! < >  5 8 G . @ 9 H , $ K 8  > * 0 ? . > *  M / > 9 H ?", options: ["30 8 G . @ ", "32 8 G . @ ", "34 8 G . @ ", "36 8 G . @ "], answer: "C" }, { question: "40  > 25%  M / > 9 H ?", options: ["5", "10", "15", "20"], answer: "B" } ], level2: [ { question: "/ & ?    > 0 60  ? . @ /   >  @  $ ? 8 G  2 $ @ 9 H , $ K 5    G . G   ? $ ( @ & B 0 @ $ /  0 G  @ ?", options: ["200  ? . @ ", "250  ? . @ ", "300  ? . @ ", "350  ? . @ "], answer: "C" }, { question: "  8   M / >  > 1/3 - >  25 9 H , $ K 5 9 8   M / >  M / > 9 H ?", options: ["50", "65", "75", "85"], answer: "C" } ], level3: [ { question: "& K 8   M / >    > / K  50 9 H  0 (  >   $ 0 10 9 H d 8   M / >    M  > $  0 G  d ", options: ["20,30", "25,25", "15,35", "10,40"], answer: "A" } ] }, "6 , M &  5    M 7 0 5 M / 5 8 M % > * ( (Alphabet & Word Arrangement)": { level1: [ { question: "'BHARAT' 6 , M &  G   M 7 0 K   K 5 0 M # . > 2 >  M 0 . . G  5 M / 5 8 M % ? $  0 ( G * 0  M / > * M 0 > * M $ 9 K  > ?", options: ["AABHRT", "AABHRT", "ABHRAT", "AABHRT"], answer: "A" }, { question: "( ? . M ( 2 ?  ? $ . G  8 G  L ( 8 > 6 , M & 6 , M &  K 6 . G  * 9 2 G    > ? 'House', 'Horse', 'Hotel', 'Honest'", options: ["Honest", "Horse", "Hotel", "House"], answer: "A" } ], level2: [ { question: "'DELHI' 6 , M &  G   M 7 0 K  8 G  ? $ ( G  0 M % * B 0 M # 6 , M & , ( >   > 8  $ G 9 H  ?", options: ["1", "2", "3", "4"], answer: "B" }, { question: "/ & ?    M 0 G  @ 5 0 M # . > 2 > . G  * M 0 $ M / G    M 7 0  K 2 M  >  0 & ? / >  >  (A=Z, B=Y), $ K 'POLICE'  >  K !  M / > 9 K  > ?", options: ["KLORXV", "KLORXV", "KLOXRV", "KLROXV"], answer: "A" } ], level3: [ { question: "6 , M & 'JUDGEMENT' . G   8 G  ? $ ( G   M 7 0 / A  M . 9 H   ? (  G , @  $ ( G 9 @   M 7 0 9 H   ? $ ( G    M 0 G  @ 5 0 M # . > 2 > . G  9 H  ?", options: ["2", "3", "4", "5"], answer: "B" } ] }, "$ > 0 M  ?   0 G   5     ! < > 5 M / >  M / > ": { level1: [ { question: "  , > 0  M 0 > + . G  8 , 8 G  ' ?    >  5 > 2 @ , > 0  M / > & 0 M 6 > $ @ 9 H ?", options: ["( M / B ( $ . . > ( ", " ' ?  $ . . > ( ", " 8 $ . > ( ", ". > ' M / . > ( "], answer: "B" }, { question: "/ & ?   * >   > 0 M  . G  90°  >  K #  ? 8 @ - >   K & 0 M 6 > $ > 9 H , $ K 5 9 - >   ? $ ( G * M 0 $ ? 6 $ 9 H ?", options: ["20%", "25%", "30%", "35%"], answer: "B" } ], level2: [ { question: "  8 > 0 # @ . G  5 5 0 M 7 K  . G    * ( @  > 2 > - (2 >  . G  ) 10, 15, 20, 25, 30 9 H d  ? 8 5 0 M 7 . G  2 > - . G  8 , 8 G  ' ?  * M 0 $ ? 6 $ 5 C & M ' ? 9 A  ?", options: ["* 9 2 G ", "& B 8 0 G ", "$ @ 8 0 G ", " L % G "], answer: "D" } ], level3: [ { question: "( @  G & ?       ! < K  . G  . > ' M / ?  >  M  > $  0 G  : 12, 15, 18, 20, 22, 25, 28", options: ["18", "20", "22", "25"], answer: "B" } ] }, " % (  5  ( ? 7 M  0 M 7 (Statement & Conclusion)": { level1: [ { question: " % ( : 8 - @ + B 2 8 A  & 0 9 K $ G 9 H  d  A 2 > ,   + B 2 9 H d ( ? 7 M  0 M 7 :  A 2 > , 8 A  & 0 9 H d ", options: ["8 $ M / ", " 8 $ M / ", " ( ? 6 M  ? $ ", " * M 0 > 8   ?  "], answer: "A" }, { question: " % ( :  A  *  M 7 @ ! < 8  $ G 9 H  d  ? ! < ? / >   *  M 7 @ 9 H d ( ? 7 M  0 M 7 :  ? ! < ? / > ! < 8  $ @ 9 H d ", options: ["( ? 6 M  ? $ ", " ( ? 6 M  ? $ ", " 8 $ M / ", " 8  , & M ' "], answer: "B" } ], level2: [ { question: " % ( : 8 - @  5 ?  2 >  > 0 9 K $ G 9 H  d  A   2 >  > 0 ( 0 M $  9 H  d ( ? 7 M  0 M 7 : I.  A  ( 0 M $   5 ? 9 H  d II.  K  ( 0 M $   5 ? ( 9 @  9 H d ", options: [" G 5 2 I", " G 5 2 II", "I  0 II & K ( K  ", "( $ K I ( II"], answer: "D" } ], level3: [ { question: " % ( : / & ? $ A . . G 9 ( $  0 K  G $ K 8 + 2 9 K  G d 0 > . 8 + 2 9 A  d ( ? 7 M  0 M 7 : 0 > . ( G . G 9 ( $  @ d ", options: ["( ? 6 M  ? $ 0 B * 8 G 8 $ M / ", "8  - 5 $  8 $ M / ", "( ? 6 M  ? $ 0 B * 8 G  8 $ M / ", " ( ? 6 M  ? $ "], answer: "B" } ] }, "* A 2 ? 8 5 M / 5 8 M % >  5   > ( B ( 5 M / 5 8 M % > 8 G  A ! < G . A & M & G ": { level1: [ { question: "* A 2 ? 8  0 M . @  > * M 0 > % . ?   0 M $ 5 M /  M / > 9 H ?", options: [" A 0 M . > ( > 5 8 B 2 ( > ", " > ( B ( 5 M / 5 8 M % > , ( >  0  ( > ", "5 K  ! 2 5 > ( > ", "* 0 M /  ( , " < > ( > "], answer: "B" }, { question: "&   K   G & L 0 > ( * A 2 ? 8  K 8 , 8 G * 9 2 G  M / >  0 ( >  > 9 ?  ?", options: ["2 > @  > 0 M   0 ( > ", "6 >  $ ? 5 > 0 M $ >  0 ( > ", "$ A 0  $  ? 0 + M $ > 0 @  0 ( > ", "5 0 ? 7 M  ' ?  > 0 ? / K   K 8 B  ? $  0 ( > "], answer: "B" } ], level2: [ { question: " * > $  > 2 . G  * A 2 ? 8  L ( 8 @ ' > 0 > 2 >  B  0 8  $ @ 9 H ?", options: ["CrPC 144", "IPC 302", "CrPC 107", "IPC 124A"], answer: "A" } ], level3: [ { question: "( > 0 @ 8 A 0  M 7 >  G 2 ?  * A 2 ? 8 & M 5 > 0 >  L ( 8 @ 5 ? 6 G 7   >  , ( >    9 H ?", options: ["SIT", "NIA", "CBI", ". 9 ? 2 > 9 G 2 M * 2 >  (  0 '6  M $ ? '   >  "], answer: "D" } ] }, "8 > . A & > / ?  8 L 9 > 0 M & ,  * 0 > ' ( ? /  $ M 0 # , 2 ?   8  5 G & ( 6 @ 2 $ > ": { level1: [ { question: "8 > . A & > / ?  8 L 9 > 0 M & , " < > ( G  G 2 ?  * A 2 ? 8  @  M / > - B . ?  > 9 H ?", options: [" G 5 2  > ( B ( , ( > ( > ", "8 . A & > /  G 8 > % 8  5 > &  0 5 ? 6 M 5 > 8 , ( > ( > ", "2 K  K   K ! 0 > ( > ", " 2  > 5 , " < > ( > "], answer: "B" }, { question: "2 ?   8  5 G & ( 6 @ 2 $ >  >  M / >  0 M % 9 H ?", options: ["* A 0 A 7 K   K * M 0 > % . ?  $ > ", ". 9 ? 2 >    K * M 0 > % . ?  $ > ", "2 ?   - G & - > 5 (  0 ( >  0 8 . > ( $ > ", " G 5 2 . 9 ? 2 >  ' ?  > 0 @ "], answer: "C" } ], level2: [ { question: " * 0 > ' ( ? /  $ M 0 #  G 2 ?  * M 0 - > 5 @  & .  M / > 9 H ?", options: [" K 0 8  > ", "8 > . A & > / ?  * A 2 ? 8 ?   ", " A 0 M . > ( > ", "5  @ 2 ( ? / A  M $  0 ( > "], answer: "B" } ], level3: [ { question: "/ & ?  ? 8 @  2 >  G . G  , > 2  * 0 > ' , " < 0 9 G 9 H  , $ K * A 2 ? 8  @ * 9 2 @ * M 0 > % . ?  $ >  M / > 9 K ( @  > 9 ?  ?", options: ["8 - @  K  ? 0 + M $ > 0  0 ( > ", ",  M  K   K 8 A ' > 0  C 9 - G  ( > ", "8 > . >  ?  8   ( K   G 8 > % . ? 2  0  >  0 B  $ >  0 ( ? 5 > 0 #  > 0 M /  M 0 .  2 > ( > ", ". > $ > -* ? $ >  K 8  > & G ( > "], answer: "C" } ] }, ", A & M ' ? 2 , M ' ?  5  . > ( 8 ?  & C " < $ > ": { level1: [ { question: ", A & M ' ? 2 , M ' ? (IQ)  > * B 0 M # 0 B *  M / > 9 H ?", options: ["Intelligence Quotient", "Indian Question", "Intellectual Quality", "Internal Query"], answer: "A" }, { question: ". > ( 8 ?  & C " < $ >  >  M / >  0 M % 9 H ?", options: ["$ ( > 5 . G  6 >  $ 0 9 ( > ", " A 8 M 8 >  0 ( > ", "! 0  > ( > ", " B , K 2 ( > "], answer: "A" } ], level2: [ { question: "( ? . M ( 2 ?  ? $ . G  8 G  L ( . > ( 8 ?  & C " < $ >  >  A # ( 9 @  9 H ?", options: ["' H 0 M / ", " $ M . 5 ? 6 M 5 > 8 ", " ? ! <  ? ! < > * ( ", "8  > 0 > $ M .  8 K  "], answer: "C" } ], level3: [ { question: "   ? ( * 0 ? 8 M % ? $ ? . G  * A 2 ? 8  0 M . @  K  H 8 > 5 M / 5 9 > 0  0 ( >  > 9 ?  ?", options: [" , 0 >  > ( > ", "' H 0 M / * B 0 M 5  8 M % ? $ ?  >   2 (  0 ( >  0  ? $  & . > ( > ", "$ A 0  $ 9 ?  8 >  > * M 0 / K   0 ( > ", ". L  G 8 G - >   > ( > "], answer: "B" } ] } }; const finalTopicList = Object.keys(questions); let selectedTopics = []; let selectedLevel = null; let practiceType = null; let userProgress = { streak: 0, lastPracticeDate: null, totalProblemsSolved: 0, topicsCompleted: 0, totalTopics: finalTopicList.length }; function loadUserProgress() { const saved = localStorage.getItem('upPoliceReasoningProgress'); if (saved) userProgress = JSON.parse(saved); const today = new Date().toDateString(); if (userProgress.lastPracticeDate !== today) { const yesterday = new Date(); yesterday.setDate(yesterday.getDate() - 1); if (userProgress.lastPracticeDate === yesterday.toDateString()) userProgress.streak++; else userProgress.streak = 1; userProgress.lastPracticeDate = today; saveUserProgress(); } updateUI(); } function saveUserProgress() { localStorage.setItem('upPoliceReasoningProgress', JSON.stringify(userProgress)); } function updateUI() { streakDays.textContent = userProgress.streak; const today = new Date(); currentDate.textContent = today.toLocaleDateString('hi-IN', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }); const percent = Math.round((userProgress.topicsCompleted / userProgress.totalTopics) * 100); progressFill.style.width = `${percent}%`; progressText.textContent = `${percent}% * B 0 M # `; } function getRandomQuestions(topicsArray, level, count) { let allQs = []; topicsArray.forEach(topic => { if (questions[topic] && questions[topic][`level${level}`]) { allQs = allQs.concat(questions[topic][`level${level}`]); } }); allQs = allQs.sort(() => Math.random() - 0.5); return allQs.slice(0, count); } function renderTopics() { const container = document.getElementById('topicsContainer'); container.innerHTML = `<div class="checkbox-item"><input type="checkbox" id="fullSyllabus" value="full"><label for="fullSyllabus"><strong>8  * B 0 M # * > M /  M 0 . (8 - @ 5 ? 7 / )</strong></label></div>`; finalTopicList.forEach(topic => { container.innerHTML += `<div class="checkbox-item"><input type="checkbox" id="topic_${topic.replace(/\s/g, '')}" name="topic" value="${topic}"><label for="topic_${topic.replace(/\s/g, '')}">${topic}</label></div>`; }); document.getElementById('fullSyllabus')?.addEventListener('change', (e) => { document.querySelectorAll('input[name="topic"]').forEach(cb => cb.disabled = e.target.checked); }); } customPracticeBtn.addEventListener('click', () => { practiceType = 'custom'; startScreen.classList.add('hidden'); subjectSelection.classList.remove('hidden'); }); selectReasoningBtn.addEventListener('click', () => { renderTopics(); subjectSelection.classList.add('hidden'); topicSelection.classList.remove('hidden'); }); backToStartBtn.addEventListener('click', () => { topicSelection.classList.add('hidden'); startContainer.classList.remove('hidden'); startScreen.classList.remove('hidden'); updateUI(); }); generateAssignmentBtn.addEventListener('click', () => { const full = document.getElementById('fullSyllabus')?.checked; if (full) selectedTopics = [...finalTopicList]; else { selectedTopics = Array.from(document.querySelectorAll('input[name="topic"]:checked')).map(cb => cb.value); } if (selectedTopics.length === 0) { alert(" C * / >  . 8 G  .   5 ? 7 /  A ( G  !"); return; } topicSelection.classList.add('hidden'); levelSelection.classList.remove('hidden'); }); backToTopicsBtn.addEventListener('click', () => { levelSelection.classList.add('hidden'); topicSelection.classList.remove('hidden'); }); [level1Btn, level2Btn, level3Btn].forEach((btn, idx) => { btn.addEventListener('click', () => { [level1Btn, level2Btn, level3Btn].forEach(b => b.classList.remove('selected')); btn.classList.add('selected'); selectedLevel = idx+1; });}); generateFinalBtn.addEventListener('click', () => { if (!selectedLevel) { alert(" C * / >  ? ( >  8 M $ 0  A ( G  !"); return; } generateAssignment(); }); function generateAssignment() { startContainer.classList.add('hidden'); levelSelection.classList.add('hidden'); generatedPaperContainer.classList.remove('hidden'); const topicNames = selectedTopics.join(", "); const mcqs = getRandomQuestions(selectedTopics, selectedLevel, 10); let paperContent = ` <div class="header"> <h2>UP * A 2 ? 8  >  8 M  G , 2 . > ( 8 ?   - ? 0 A  ?  5  $ > 0 M  ?   M 7 . $ >  - M / > 8 </h2> <h3>${selectedTopics.length === finalTopicList.length ? "8  * B 0 M # * > M /  M 0 . " : topicNames.substring(0, 70)}</h3> <p>8 M $ 0 ${selectedLevel} - ${selectedLevel === 1 ? ", G 8 ?  " : selectedLevel === 2 ? ". ' M / . " : " ( M ( $ "}</p> </div> <div class="content-area"> <div class="instructions"><p><strong>( ? 0 M & G 6 :</strong></p><ol><li> 8  - M / > 8 8 G  . G  10 , 9 A 5 ?  2 M * @ / * M 0 6 M ( (MCQs) 9 H  d </li><li>* M 0 $ M / G  * M 0 6 M (  G  > 0 5 ?  2 M * 9 H   ? ( . G  8 G  G 5 2   8 9 @ 9 H d </li><li> 8  - M / > 8  K 15-20 . ? (  . G  * B 0 >  0 G  d </li><li> $ M $ 0  A   @ 8 G  * ( G $ M $ 0  >   G  d </li></ol></div> <div class="question-section"><div class="section-heading"> - M / > 8 * M 0 6 M ( </div>`; let qNum = 1; mcqs.forEach(mcq => { paperContent += `<div class="question"><div class="question-text">${qNum}. ${mcq.question}</div> <div class="option">A. ${mcq.options[0]}</div><div class="option">B. ${mcq.options[1]}</div> <div class="option">C. ${mcq.options[2]}</div><div class="option">D. ${mcq.options[3]}</div></div>`; qNum++; }); paperContent += `</div><div class="answer-sheet"><h3 class="section-title"> $ M $ 0  A   @ </h3> <table class="answer-table"><thead><tr><th>* M 0 6 M ( 8  .</th><th> $ M $ 0 </th><th>* M 0 6 M ( 8  .</th><th> $ M $ 0 </th></tr></thead><tbody>`; for (let i = 0; i < mcqs.length; i += 2) { paperContent += `<tr><td>${i+1}</td><td>${mcqs[i].answer}</td>`; if (i+1 < mcqs.length) paperContent += `<td>${i+2}</td><td>${mcqs[i+1].answer}</td>`; else paperContent += `<td></td><td></td>`; paperContent += `</tr>`; } paperContent += `</tbody></table></div> <div class="action-buttons"><button class="btn btn-success" id="markCompleteBtn"><i class="fas fa-check"></i> * B 0 M #  ? 9 M ( ? $  0 G  </button> <button class="btn btn-primary" id="printBtn"><i class="fas fa-print"></i> * M 0 ?    0 G  </button> <button class="btn btn-danger" id="newAssignmentBtn"><i class="fas fa-plus"></i> ( / >  - M / > 8 </button></div></div>`; generatedPaperContainer.innerHTML = paperContent; document.getElementById('markCompleteBtn')?.addEventListener('click', markPracticeComplete); document.getElementById('printBtn')?.addEventListener('click', () => window.print()); document.getElementById('newAssignmentBtn')?.addEventListener('click', backToStart); } function markPracticeComplete() { userProgress.totalProblemsSolved += 10; if (selectedTopics.length > 0 && !(selectedTopics.length === finalTopicList.length && document.getElementById('fullSyllabus')?.checked)) { let completedCount = 0; selectedTopics.forEach(t => { if (finalTopicList.includes(t)) completedCount++; }); userProgress.topicsCompleted = Math.max(userProgress.topicsCompleted, completedCount); } else if (selectedTopics.length === finalTopicList.length) userProgress.topicsCompleted = userProgress.totalTopics; saveUserProgress(); updateUI(); alert("6 > ( & > 0 !  - M / > 8 8 $ M 0 * B 0 M #  ? 9 M ( ? $  ? / >  / > d * M 0  $ ? 8 9 G  @   d "); backToStart(); } function generateProblemOfDay() { const randomTopic = finalTopicList[Math.floor(Math.random() * finalTopicList.length)]; const randomLevel = Math.floor(Math.random() * 3) + 1; selectedTopics = [randomTopic]; selectedLevel = randomLevel; startContainer.classList.add('hidden'); generatedPaperContainer.classList.remove('hidden'); const mcqs = getRandomQuestions(selectedTopics, selectedLevel, 1); let paperContent = ` <div class="header"><h2>UP * A 2 ? 8 . > ( 8 ?   - ? 0 A  ? & H ( ?   - M / > 8 </h2><h3>& ? (  @ 8 . 8 M / > </h3><p>${randomTopic} " 8 M $ 0 ${randomLevel}</p></div> <div class="content-area"><div class="problem-of-day"><h3><i class="fas fa-star"></i>    @  A ( L $ @ </h3><p> * ( @ 2  > $ > 0 , ( >  0  ( G  G 2 ?   8 8 . 8 M / >  K 9 2  0 G  !</p></div> <div class="daily-summary"><div class="summary-card"><h4>5 0 M $ . > ( 2  > $ > 0 </h4><p>${userProgress.streak} & ? ( </p></div> <div class="summary-card"><h4>9 2  @   8 . 8 M / >   </h4><p>${userProgress.totalProblemsSolved}</p></div> <div class="summary-card"><h4>* M 0  $ ? </h4><p>${Math.round((userProgress.topicsCompleted / userProgress.totalTopics) * 100)}%</p></div></div> <div class="instructions"><p><strong>( ? 0 M & G 6 :</strong></p><ol><li>/ 9  *  @ & H ( ?   - M / > 8 8 . 8 M / > 9 H d </li><li> 8 G 5 . ? (  . G  9 2  0 G  d </li><li>8 . > ' > ( 8 G  >   G  d </li><li> 2 (  8 . 8 M / >  G 2 ?  5 > * 8    !</li></ol></div> <div class="question-section"><div class="section-heading">& ? (  @ 8 . 8 M / > </div>`; mcqs.forEach(mcq => { paperContent += `<div class="question"><div class="question-text">${mcq.question}</div> <div class="option">A. ${mcq.options[0]}</div><div class="option">B. ${mcq.options[1]}</div> <div class="option">C. ${mcq.options[2]}</div><div class="option">D. ${mcq.options[3]}</div></div>`; }); paperContent += `</div><div class="answer-sheet"><h3 class="section-title">8 . > ' > ( </h3> <p><strong>8 9 @ $ M $ 0 :</strong> ${mcqs[0].answer}</p><p><strong>5 M / >  M / > :</strong> 5 ? 8 M $ C $ 5 M / >  M / >  2 M & * 2 , M ' 9 K  @ d </p></div> <div class="action-buttons"><button class="btn btn-success" id="markCompleteBtn"><i class="fas fa-check"></i> * B 0 M #  ? 9 M ( ? $  0 G  </button> <button class="btn btn-primary" id="printBtn"><i class="fas fa-print"></i> * M 0 ?    0 G  </button> <button class="btn btn-danger" id="newAssignmentBtn"><i class="fas fa-plus"></i> ( / >  - M / > 8 </button></div></div>`; generatedPaperContainer.innerHTML = paperContent; document.getElementById('markCompleteBtn')?.addEventListener('click', () => { userProgress.totalProblemsSolved++; saveUserProgress(); updateUI(); alert(", ' >  9 K ! 8 . 8 M / > * B 0 M # 9 A  d "); backToStart(); }); document.getElementById('printBtn')?.addEventListener('click', () => window.print()); document.getElementById('newAssignmentBtn')?.addEventListener('click', backToStart); } function backToStart() { generatedPaperContainer.classList.add('hidden'); startContainer.classList.remove('hidden'); topicSelection.classList.add('hidden'); levelSelection.classList.add('hidden'); subjectSelection.classList.add('hidden'); startScreen.classList.remove('hidden'); updateUI(); } problemOfDayBtn.addEventListener('click', generateProblemOfDay); homeIcon.addEventListener('click', (e) => { e.preventDefault(); backToStart(); }); document.addEventListener('DOMContentLoaded', () => { loadUserProgress(); }); </script> </body> </html>