{"id":957,"date":"2026-08-08T17:32:03","date_gmt":"2026-08-08T17:32:03","guid":{"rendered":"https:\/\/freewebtools.co.in\/?page_id=957"},"modified":"2026-08-08T17:51:37","modified_gmt":"2026-08-08T17:51:37","slug":"question-generator","status":"publish","type":"page","link":"https:\/\/freewebtools.co.in\/index.php\/question-generator\/","title":{"rendered":"Question Generator"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  <title>Exam Generator &#038; Paper Management System<\/title>\n<\/head>\n<body style=\"margin:0; padding:0; background:#f8fafc;\">\n\n<div id=\"ega_app_root\" class=\"ega-app ega-theme-light\">\n  <style>\n    \/* Complete Isolated Root & Advanced Responsive CSS Reset *\/\n    #ega_app_root {\n      all: initial;\n      display: flex;\n      box-sizing: border-box;\n      position: relative;\n      isolation: isolate;\n      width: 100%;\n      max-width: 100%;\n      min-width: 0;\n      min-height: 100vh;\n      margin: 0;\n      top: 0;\n      left: 0;\n      z-index: 2147483646;\n      font-family: system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\n      background-color: var(--ega-bg, #f8fafc);\n      color: var(--ega-text, #1e293b);\n      line-height: 1.5;\n      overflow-x: hidden;\n      overflow-y: auto;\n    }\n\n    #ega_app_root *, #ega_app_root *::before, #ega_app_root *::after {\n      box-sizing: border-box;\n      font-family: inherit;\n      min-width: 0;\n      overflow-wrap: anywhere;\n    }\n\n    #ega_app_root.ega-theme-light {\n      --ega-primary: #2563eb;\n      --ega-primary-hover: #1d4ed8;\n      --ega-bg: #f8fafc;\n      --ega-card-bg: #ffffff;\n      --ega-text: #1e293b;\n      --ega-text-muted: #64748b;\n      --ega-border: #e2e8f0;\n      --ega-sidebar-bg: #ffffff;\n      --ega-sidebar-border: #e2e8f0;\n      --ega-success: #16a34a;\n      --ega-danger: #dc2626;\n      --ega-warning: #ca8a04;\n    }\n\n    #ega_app_root.ega-theme-dark {\n      --ega-primary: #3b82f6;\n      --ega-primary-hover: #2563eb;\n      --ega-bg: #0f172a;\n      --ega-card-bg: #1e293b;\n      --ega-text: #f8fafc;\n      --ega-text-muted: #94a3b8;\n      --ega-border: #334155;\n      --ega-sidebar-bg: #1e293b;\n      --ega-sidebar-border: #334155;\n      --ega-success: #22c55e;\n      --ega-danger: #ef4444;\n      --ega-warning: #eab308;\n    }\n\n    \/* Layout Structure *\/\n    #ega_app_root .ega-sidebar {\n      width: 260px;\n      min-width: 260px;\n      background: var(--ega-sidebar-bg);\n      border-right: 1px solid var(--ega-sidebar-border);\n      display: flex;\n      flex-direction: column;\n      flex-shrink: 0;\n      height: 100vh;\n      position: sticky;\n      top: 0;\n      z-index: 100;\n      transition: transform 0.3s ease;\n    }\n\n    #ega_app_root .ega-brand {\n      padding: 1.25rem 1.5rem;\n      font-size: 1.15rem;\n      font-weight: 700;\n      color: var(--ega-primary);\n      border-bottom: 1px solid var(--ega-border);\n      display: flex;\n      align-items: center;\n      gap: 0.5rem;\n      flex-shrink: 0;\n      white-space: nowrap;\n    }\n\n    #ega_app_root .ega-sidebar-nav {\n      list-style: none;\n      padding: 1rem 0;\n      margin: 0;\n      overflow-y: auto;\n      flex-grow: 1;\n    }\n\n    #ega_app_root .ega-nav-item {\n      padding: 0.75rem 1.5rem;\n      display: flex;\n      align-items: center;\n      gap: 0.75rem;\n      cursor: pointer;\n      font-weight: 500;\n      color: var(--ega-text-muted);\n      border-left: 3px solid transparent;\n      transition: all 0.2s;\n      user-select: none;\n      white-space: nowrap;\n    }\n\n    #ega_app_root .ega-nav-item:hover, \n    #ega_app_root .ega-nav-item.active {\n      color: var(--ega-primary);\n      background: rgba(37, 99, 235, 0.05);\n      border-left-color: var(--ega-primary);\n    }\n\n    #ega_app_root .ega-main {\n      flex: 1 1 auto;\n      display: flex;\n      flex-direction: column;\n      min-width: 0;\n      width: 100%;\n      min-height: 100vh;\n      background-color: var(--ega-bg);\n    }\n\n    #ega_app_root .ega-header {\n      min-height: 60px;\n      background: var(--ega-card-bg);\n      border-bottom: 1px solid var(--ega-border);\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      padding: 0.75rem 1.5rem;\n      flex-shrink: 0;\n      width: 100%;\n      flex-wrap: wrap;\n      gap: 0.75rem;\n    }\n\n    #ega_app_root .ega-viewport {\n      flex: 1 1 auto;\n      padding: 1.5rem;\n      width: 100%;\n      max-width: 100%;\n      min-width: 0;\n    }\n\n    #ega_app_root .ega-view {\n      display: none;\n      width: 100%;\n      max-width: 100%;\n      min-width: 0;\n    }\n\n    #ega_app_root .ega-view.active {\n      display: block;\n    }\n\n    #ega_app_root .ega-card {\n      background: var(--ega-card-bg);\n      border: 1px solid var(--ega-border);\n      border-radius: 8px;\n      padding: 1.25rem;\n      margin-bottom: 1rem;\n      box-shadow: 0 1px 3px rgba(0,0,0,0.05);\n      width: 100%;\n      max-width: 100%;\n      min-width: 0;\n    }\n\n    #ega_app_root .ega-grid {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr));\n      gap: 1rem;\n      width: 100%;\n      max-width: 100%;\n      min-width: 0;\n    }\n\n    #ega_app_root .ega-btn {\n      background: var(--ega-primary);\n      color: #ffffff;\n      border: none;\n      padding: 0.5rem 1rem;\n      border-radius: 6px;\n      cursor: pointer;\n      font-weight: 500;\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      gap: 0.5rem;\n      transition: background 0.2s;\n      white-space: nowrap;\n      text-decoration: none;\n      font-size: 0.9rem;\n      box-sizing: border-box;\n      max-width: 100%;\n      min-height: 38px;\n      flex-shrink: 0;\n    }\n\n    #ega_app_root .ega-btn:hover {\n      background: var(--ega-primary-hover);\n    }\n\n    #ega_app_root .ega-btn-secondary {\n      background: transparent;\n      color: var(--ega-text);\n      border: 1px solid var(--ega-border);\n    }\n\n    #ega_app_root .ega-btn-secondary:hover {\n      background: var(--ega-border);\n    }\n\n    #ega_app_root .ega-table-container {\n      width: 100%;\n      max-width: 100%;\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n      margin-top: 0.5rem;\n      border: 1px solid var(--ega-border);\n      border-radius: 6px;\n    }\n\n    #ega_app_root .ega-table {\n      width: 100%;\n      border-collapse: collapse;\n      text-align: left;\n      min-width: 600px;\n      background: var(--ega-card-bg);\n    }\n\n    #ega_app_root .ega-table th, \n    #ega_app_root .ega-table td {\n      padding: 0.75rem 1rem;\n      border-bottom: 1px solid var(--ega-border);\n      color: var(--ega-text);\n    }\n\n    #ega_app_root .ega-table th {\n      font-weight: 600;\n      color: var(--ega-text-muted);\n      font-size: 0.85rem;\n      background: rgba(0,0,0,0.02);\n    }\n\n    #ega_app_root .ega-input {\n      width: 100%;\n      max-width: 100%;\n      min-width: 0;\n      padding: 0.5rem 0.75rem;\n      background: var(--ega-card-bg);\n      border: 1px solid var(--ega-border);\n      color: var(--ega-text);\n      border-radius: 6px;\n      outline: none;\n      font-size: 0.95rem;\n      box-sizing: border-box;\n      min-height: 38px;\n    }\n\n    #ega_app_root .ega-input:focus {\n      border-color: var(--ega-primary);\n    }\n\n    \/* Mobile Backdrop Overlay *\/\n    #ega_sidebar_backdrop {\n      display: none;\n      position: fixed;\n      top: 0;\n      left: 0;\n      width: 100vw;\n      height: 100vh;\n      background: rgba(0,0,0,0.4);\n      z-index: 99;\n    }\n    #ega_sidebar_backdrop.active {\n      display: block;\n    }\n\n    \/* Responsive Breakpoints *\/\n    @media (max-width: 1023px) {\n      #ega_app_root .ega-sidebar {\n        position: fixed;\n        top: 0;\n        left: 0;\n        height: 100vh;\n        transform: translateX(-100%);\n        box-shadow: 4px 0 15px rgba(0,0,0,0.1);\n        z-index: 1000;\n      }\n      #ega_app_root .ega-sidebar.mobile-open {\n        transform: translateX(0);\n      }\n    }\n\n    @media (max-width: 768px) {\n      #ega_app_root .ega-viewport {\n        padding: 1rem;\n      }\n      #ega_app_root .ega-header {\n        padding: 0.75rem 1rem;\n      }\n    }\n\n    @media (max-width: 480px) {\n      #ega_app_root .ega-viewport {\n        padding: 0.75rem;\n      }\n      #ega_app_root .ega-header {\n        padding: 0.5rem 0.75rem;\n      }\n    }\n\n    @media print {\n      body * {\n        visibility: hidden !important;\n      }\n      #ega_app_root, #ega_app_root * {\n        visibility: visible !important;\n      }\n      #ega_app_root {\n        position: absolute !important;\n        left: 0 !important;\n        top: 0 !important;\n        width: 100% !important;\n        height: auto !important;\n        background: #ffffff !important;\n        color: #000000 !important;\n        overflow: visible !important;\n        margin: 0 !important;\n      }\n      #ega_app_root .ega-sidebar, \n      #ega_app_root .ega-header, \n      #ega_app_root .ega-btn, \n      #ega_sidebar_backdrop {\n        display: none !important;\n      }\n      #ega_app_root .ega-viewport {\n        overflow: visible !important;\n        padding: 0 !important;\n        height: auto !important;\n      }\n    }\n  <\/style>\n\n  <!-- Mobile Sidebar Backdrop -->\n  <div id=\"ega_sidebar_backdrop\"><\/div>\n\n  <!-- SIDEBAR NAVIGATION -->\n  <aside class=\"ega-sidebar\" id=\"ega-sidebar\">\n    <div class=\"ega-brand\">\n      <svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"\/><\/svg>\n      <span>Exam Generator<\/span>\n    <\/div>\n    <ul class=\"ega-sidebar-nav\">\n      <li class=\"ega-nav-item active\" data-view=\"dashboard\">\n        <svg width=\"20\" height=\"20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6\"\/><\/svg>\n        <span>Dashboard<\/span>\n      <\/li>\n      <li class=\"ega-nav-item\" data-view=\"questions\">\n        <svg width=\"20\" height=\"20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10\"\/><\/svg>\n        <span>Question Bank<\/span>\n      <\/li>\n      <li class=\"ega-nav-item\" data-view=\"blueprints\">\n        <svg width=\"20\" height=\"20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M4 6h16M4 10h16M4 14h16M4 18h16\"\/><\/svg>\n        <span>Blueprints &#038; Exams<\/span>\n      <\/li>\n      <li class=\"ega-nav-item\" data-view=\"papers\">\n        <svg width=\"20\" height=\"20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z\"\/><\/svg>\n        <span>Question Papers<\/span>\n      <\/li>\n      <li class=\"ega-nav-item\" data-view=\"templates\">\n        <svg width=\"20\" height=\"20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M8 4H6a2 2 0 00-2 2v12a2 2 0 002 2h12a2 2 0 002-2V6a2 2 0 00-2-2h-2m-4-1v8m0 0l3-3m-3 3L9 8m-5 5h2.586a1 1 0 01.707.293l2.414 2.414a1 1 0 00.707.293h3.172a1 1 0 00.707-.293l2.414-2.414a1 1 0 01.707-.293H20\"\/><\/svg>\n        <span>Paper Templates<\/span>\n      <\/li>\n      <li class=\"ega-nav-item\" data-view=\"generator\">\n        <svg width=\"20\" height=\"20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M13 10V3L4 14h7v7l9-11h-7z\"\/><\/svg>\n        <span>Generation Engine<\/span>\n      <\/li>\n      <li class=\"ega-nav-item\" data-view=\"editor\">\n        <svg width=\"20\" height=\"20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z\"\/><\/svg>\n        <span>Paper Editor<\/span>\n      <\/li>\n      <li class=\"ega-nav-item\" data-view=\"outputs\">\n        <svg width=\"20\" height=\"20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M17 17h2a2 2 0 002-2v-4a2 2 0 00-2-2H5a2 2 0 00-2 2v4a2 2 0 002 2h2m2 4h6a2 2 0 002-2v-4a2 2 0 00-2-2H9a2 2 0 00-2 2v4a2 2 0 002 2zm8-12V5a2 2 0 00-2-2H9a2 2 0 00-2 2v4h10z\"\/><\/svg>\n        <span>Export &#038; Print<\/span>\n      <\/li>\n      <li class=\"ega-nav-item\" data-view=\"sets\">\n        <svg width=\"20\" height=\"20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10\"\/><\/svg>\n        <span>Paper Sets<\/span>\n      <\/li>\n      <li class=\"ega-nav-item\" data-view=\"analytics\">\n        <svg width=\"20\" height=\"20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z\"\/><\/svg>\n        <span>Analytics Intelligence<\/span>\n      <\/li>\n    <\/ul>\n  <\/aside>\n\n  <!-- MAIN WORKSPACE -->\n  <main class=\"ega-main\">\n    <header class=\"ega-header\">\n      <div style=\"display:flex; align-items:center; gap:0.75rem; min-width:0; flex-shrink:1;\">\n        <button class=\"ega-btn ega-btn-secondary\" id=\"ega-mobile-toggle\" style=\"padding:0.4rem; display:none;\" aria-label=\"Toggle Navigation\">\n          <svg width=\"20\" height=\"20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M4 6h16M4 12h16M4 18h16\"\/><\/svg>\n        <\/button>\n        <h3 id=\"ega-view-title\" style=\"margin:0; font-size:1.1rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;\">Dashboard<\/h3>\n      <\/div>\n      <div style=\"display:flex; align-items:center; gap:0.5rem; flex-wrap:wrap; min-width:0; justify-content:flex-end;\">\n        <button class=\"ega-btn ega-btn-primary\" id=\"ega-global-create-paper-btn\">+ Create Question Paper<\/button>\n        <button class=\"ega-btn ega-btn-secondary\" id=\"ega-global-create-tpl-btn\">+ Create Template<\/button>\n        <button class=\"ega-btn ega-btn-secondary\" id=\"ega-cmd-palette-btn\" title=\"Command Palette (Ctrl+K)\">\n          <svg width=\"18\" height=\"18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"\/><\/svg>\n          <span style=\"font-size:0.8rem; opacity:0.8;\" class=\"ega-hide-mobile\">Ctrl+K<\/span>\n        <\/button>\n        <button class=\"ega-btn ega-btn-secondary\" id=\"ega-theme-toggle\" title=\"Toggle Theme\">\n          <svg width=\"18\" height=\"18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z\"\/><\/svg>\n        <\/button>\n        <button class=\"ega-btn ega-btn-secondary\" id=\"ega-backup-btn\" title=\"Backup Application\">Backup<\/button>\n        <button class=\"ega-btn ega-btn-secondary\" id=\"ega-restore-btn\" title=\"Restore Backup\">Restore<\/button>\n      <\/div>\n    <\/header>\n\n    <div class=\"ega-viewport\">\n      <!-- DASHBOARD VIEW -->\n      <section id=\"view-dashboard\" class=\"ega-view active\">\n        <div style=\"display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:1.5rem; flex-wrap:wrap; gap:1rem;\">\n          <div>\n            <h2 style=\"margin:0 0 0.25rem 0; font-size:1.5rem;\">Production Dashboard<\/h2>\n            <p style=\"margin:0; color:var(--ega-text-muted);\">Fully integrated examination generator active.<\/p>\n          <\/div>\n          <div style=\"display:flex; gap:0.5rem; flex-wrap:wrap;\">\n            <button class=\"ega-btn ega-btn-primary\" onclick=\"window.egaOpenPaperBuilder()\">+ Create Question Paper<\/button>\n            <button class=\"ega-btn ega-btn-secondary\" onclick=\"document.querySelector('[data-view=\\'templates\\']').click()\">Template Library<\/button>\n          <\/div>\n        <\/div>\n\n        <div class=\"ega-grid\" style=\"margin-bottom: 1.5rem;\">\n          <div class=\"ega-card\" style=\"cursor:pointer;\" onclick=\"document.querySelector('[data-view=\\'questions\\']').click()\">\n            <div class=\"ega-card-title\" style=\"color:var(--ega-text-muted); font-size:0.9rem;\">Total Questions<\/div>\n            <div class=\"ega-card-value\" id=\"dash-stat-questions\" style=\"font-size:1.75rem; font-weight:700; color:var(--ega-primary);\">0<\/div>\n          <\/div>\n          <div class=\"ega-card\" style=\"cursor:pointer;\" onclick=\"document.querySelector('[data-view=\\'papers\\']').click()\">\n            <div class=\"ega-card-title\" style=\"color:var(--ega-text-muted); font-size:0.9rem;\">Question Papers<\/div>\n            <div class=\"ega-card-value\" id=\"dash-stat-papers-cnt\" style=\"font-size:1.75rem; font-weight:700; color:var(--ega-success);\">0<\/div>\n          <\/div>\n          <div class=\"ega-card\" style=\"cursor:pointer;\" onclick=\"document.querySelector('[data-view=\\'templates\\']').click()\">\n            <div class=\"ega-card-title\" style=\"color:var(--ega-text-muted); font-size:0.9rem;\">Paper Templates<\/div>\n            <div class=\"ega-card-value\" id=\"dash-stat-templates\" style=\"font-size:1.75rem; font-weight:700; color:#e67e22;\">0<\/div>\n          <\/div>\n          <div class=\"ega-card\" style=\"cursor:pointer;\" onclick=\"document.querySelector('[data-view=\\'analytics\\']').click()\">\n            <div class=\"ega-card-title\" style=\"color:var(--ega-text-muted); font-size:0.9rem;\">Bank Health Score<\/div>\n            <div class=\"ega-card-value\" id=\"dash-stat-health\" style=\"font-size:1.75rem; font-weight:700; color:var(--ega-success);\">100%<\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"ega-grid\" style=\"grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));\">\n          <div class=\"ega-card\">\n            <h4 style=\"margin-top:0; border-bottom:1px solid var(--ega-border); padding-bottom:0.5rem;\">System Activity &#038; Audit Log<\/h4>\n            <div class=\"ega-table-container\" style=\"margin-top:0.5rem;\">\n              <table class=\"ega-table\" style=\"font-size:0.9rem;\">\n                <thead>\n                  <tr>\n                    <th>Action<\/th>\n                    <th>Detail<\/th>\n                    <th>Timestamp<\/th>\n                  <\/tr>\n                <\/thead>\n                <tbody id=\"ega-dashboard-activity-tbody\">\n                  <tr><td colspan=\"3\" style=\"text-align:center; color:var(--ega-text-muted);\">No recent activity recorded.<\/td><\/tr>\n                <\/tbody>\n              <\/table>\n            <\/div>\n          <\/div>\n\n          <div class=\"ega-card\">\n            <h4 style=\"margin-top:0; border-bottom:1px solid var(--ega-border); padding-bottom:0.5rem;\">Quick Actions<\/h4>\n            <div style=\"display:flex; flex-direction:column; gap:0.5rem; margin-top:0.5rem;\">\n              <button class=\"ega-btn ega-btn-primary\" style=\"width:100%; justify-content:flex-start;\" onclick=\"window.egaOpenPaperBuilder()\">+ Create Question Paper<\/button>\n              <button class=\"ega-btn ega-btn-secondary\" style=\"width:100%; justify-content:flex-start;\" onclick=\"document.querySelector('[data-view=\\'questions\\']').click()\">+ Add New Question<\/button>\n              <button class=\"ega-btn ega-btn-secondary\" style=\"width:100%; justify-content:flex-start;\" onclick=\"document.querySelector('[data-view=\\'templates\\']').click()\">\ud83d\udcc1 Manage Templates<\/button>\n              <button class=\"ega-btn ega-btn-secondary\" style=\"width:100%; justify-content:flex-start;\" onclick=\"document.querySelector('[data-view=\\'sets\\']').click()\">\u26a1 Generate Multi-Sets<\/button>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/section>\n\n      <!-- QUESTION BANK VIEW -->\n      <section id=\"view-questions\" class=\"ega-view\">\n        <div style=\"display:flex; justify-content:space-between; align-items:center; margin-bottom:1rem; flex-wrap:wrap; gap:1rem;\">\n          <h2 style=\"margin:0;\">Question Bank Repository<\/h2>\n          <div style=\"display:flex; gap:0.5rem; flex-wrap:wrap;\">\n            <button class=\"ega-btn ega-btn-primary\" id=\"ega-open-add-question-modal\">Add Question<\/button>\n            <button class=\"ega-btn ega-btn-secondary\" onclick=\"window.egaOpenPaperBuilder()\">Create Paper<\/button>\n          <\/div>\n        <\/div>\n        <div class=\"ega-card\" style=\"margin-bottom:1rem; display:flex; gap:1rem; flex-wrap:wrap;\">\n          <input type=\"text\" id=\"ega-q-search\" class=\"ega-input\" placeholder=\"Search questions...\" style=\"flex: 1 1 200px;\">\n          <select id=\"ega-q-filter-diff\" class=\"ega-input\" style=\"flex: 1 1 150px;\">\n            <option value=\"\">All Difficulties<\/option>\n            <option value=\"Easy\">Easy<\/option>\n            <option value=\"Medium\">Medium<\/option>\n            <option value=\"Hard\">Hard<\/option>\n          <\/select>\n        <\/div>\n        <div class=\"ega-table-container\">\n          <table class=\"ega-table\">\n            <thead>\n              <tr>\n                <th>ID<\/th>\n                <th>Question Text<\/th>\n                <th>Type<\/th>\n                <th>Subject<\/th>\n                <th>Difficulty<\/th>\n                <th>Marks<\/th>\n                <th>Actions<\/th>\n              <\/tr>\n            <\/thead>\n            <tbody id=\"ega-questions-table-body\">\n              <tr><td colspan=\"7\" style=\"text-align:center; color:var(--ega-text-muted);\">No questions found in repository.<\/td><\/tr>\n            <\/tbody>\n          <\/table>\n        <\/div>\n      <\/section>\n\n      <!-- BLUEPRINTS VIEW -->\n      <section id=\"view-blueprints\" class=\"ega-view\">\n        <div style=\"display:flex; justify-content:space-between; align-items:center; margin-bottom:1rem; flex-wrap:wrap; gap:1rem;\">\n          <h2 style=\"margin:0;\">Exam Blueprints &#038; Structure<\/h2>\n          <button class=\"ega-btn ega-btn-primary\" id=\"ega-create-blueprint-btn\">Create Blueprint<\/button>\n        <\/div>\n        <div class=\"ega-table-container\">\n          <table class=\"ega-table\">\n            <thead>\n              <tr>\n                <th>Blueprint Name<\/th>\n                <th>Class<\/th>\n                <th>Subject<\/th>\n                <th>Total Marks<\/th>\n                <th>Actions<\/th>\n              <\/tr>\n            <\/thead>\n            <tbody id=\"ega-blueprints-table-body\">\n              <tr><td colspan=\"5\" style=\"text-align:center; color:var(--ega-text-muted);\">No exam blueprints created yet.<\/td><\/tr>\n            <\/tbody>\n          <\/table>\n        <\/div>\n      <\/section>\n\n      <!-- QUESTION PAPERS VIEW -->\n      <section id=\"view-papers\" class=\"ega-view\">\n        <div style=\"display:flex; justify-content:space-between; align-items:center; margin-bottom:1rem; flex-wrap:wrap; gap:1rem;\">\n          <h2 style=\"margin:0;\">Saved Question Papers<\/h2>\n          <button class=\"ega-btn ega-btn-primary\" onclick=\"window.egaOpenPaperBuilder()\">+ Create Question Paper<\/button>\n        <\/div>\n        <div class=\"ega-table-container\">\n          <table class=\"ega-table\">\n            <thead>\n              <tr>\n                <th>Exam Name<\/th>\n                <th>Subject<\/th>\n                <th>Class<\/th>\n                <th>Max Marks<\/th>\n                <th>Duration<\/th>\n                <th>Actions<\/th>\n              <\/tr>\n            <\/thead>\n            <tbody id=\"ega-papers-table-body\">\n              <tr><td colspan=\"6\" style=\"text-align:center; color:var(--ega-text-muted);\">No question papers created yet.<\/td><\/tr>\n            <\/tbody>\n          <\/table>\n        <\/div>\n      <\/section>\n\n      <!-- PAPER TEMPLATES VIEW -->\n      <section id=\"view-templates\" class=\"ega-view\">\n        <div style=\"display:flex; justify-content:space-between; align-items:center; margin-bottom:1rem; flex-wrap:wrap; gap:1rem;\">\n          <h2 style=\"margin:0;\">Paper Templates Library<\/h2>\n          <button class=\"ega-btn ega-btn-primary\" id=\"ega-create-tpl-view-btn\">+ Create Template<\/button>\n        <\/div>\n        <div class=\"ega-table-container\">\n          <table class=\"ega-table\">\n            <thead>\n              <tr>\n                <th>Template Name<\/th>\n                <th>Exam Type<\/th>\n                <th>Class<\/th>\n                <th>Subject<\/th>\n                <th>Sections<\/th>\n                <th>Actions<\/th>\n              <\/tr>\n            <\/thead>\n            <tbody id=\"ega-templates-table-body\">\n              <tr><td colspan=\"6\" style=\"text-align:center; color:var(--ega-text-muted);\">No templates available.<\/td><\/tr>\n            <\/tbody>\n          <\/table>\n        <\/div>\n      <\/section>\n\n      <!-- GENERATION ENGINE VIEW -->\n      <section id=\"view-generator\" class=\"ega-view\">\n        <h2 style=\"margin-top:0;\">Automated Paper Generation Engine<\/h2>\n        <div class=\"ega-card\" style=\"margin-top:1rem;\">\n          <label style=\"display:block; font-weight:600; margin-bottom:0.5rem;\" for=\"ega-gen-blueprint-select\">Select Blueprint for Generation<\/label>\n          <select id=\"ega-gen-blueprint-select\" class=\"ega-input\" style=\"margin-bottom:1rem; max-width:100%;\"><\/select>\n          <button class=\"ega-btn ega-btn-primary\" id=\"ega-run-generator\">Generate Exam Paper<\/button>\n        <\/div>\n      <\/section>\n\n      <!-- PAPER EDITOR VIEW -->\n      <section id=\"view-editor\" class=\"ega-view\">\n        <h2 style=\"margin-top:0;\">Interactive Paper Editor &#038; QA Validator<\/h2>\n        <div class=\"ega-card\" style=\"margin-top:1rem;\">\n          <div id=\"ega-editor-content-area\">\n            <p style=\"color:var(--ega-text-muted);\">No active paper loaded for editing. Generate or select a paper first.<\/p>\n          <\/div>\n        <\/div>\n      <\/section>\n\n      <!-- EXPORT & PRINT VIEW -->\n      <section id=\"view-outputs\" class=\"ega-view\">\n        <h2 style=\"margin-top:0;\">Export &#038; Professional Print Center<\/h2>\n        <div class=\"ega-card\" style=\"margin-top:1rem; display:flex; gap:1rem; flex-wrap:wrap;\">\n          <button class=\"ega-btn ega-btn-primary\" id=\"ega-export-json\">Export JSON<\/button>\n          <button class=\"ega-btn ega-btn-secondary\" id=\"ega-print-paper\">Print Clean Paper<\/button>\n        <\/div>\n      <\/section>\n\n      <!-- PAPER SETS VIEW -->\n      <section id=\"view-sets\" class=\"ega-view\">\n        <h2 style=\"margin-top:0;\">Multiple Paper Sets Manager<\/h2>\n        <div class=\"ega-card\" style=\"margin-top:1rem;\">\n          <button class=\"ega-btn ega-btn-primary\" id=\"ega-generate-sets-btn\">Generate Sets (A, B, C)<\/button>\n          <div class=\"ega-table-container\" style=\"margin-top:1rem;\">\n            <table class=\"ega-table\">\n              <thead>\n                <tr>\n                  <th>Set Name<\/th>\n                  <th>Total Marks<\/th>\n                  <th>Actions<\/th>\n                <\/tr>\n              <\/thead>\n              <tbody id=\"ega-sets-table-body\">\n                <tr><td colspan=\"3\" style=\"text-align:center; color:var(--ega-text-muted);\">No paper sets generated.<\/td><\/tr>\n              <\/tbody>\n            <\/table>\n          <\/div>\n        <\/div>\n      <\/section>\n\n      <!-- ANALYTICS VIEW -->\n      <section id=\"view-analytics\" class=\"ega-view\">\n        <h2 style=\"margin-top:0;\">Analytics &#038; Academic Intelligence<\/h2>\n        <div class=\"ega-grid\" style=\"margin-top:1.0rem;\">\n          <div class=\"ega-card\"><div class=\"ega-card-title\" style=\"color:var(--ega-text-muted);\">Total Questions<\/div><div class=\"ega-card-value\" id=\"an-total-q\" style=\"font-size:1.5rem; font-weight:700;\">0<\/div><\/div>\n          <div class=\"ega-card\"><div class=\"ega-card-title\" style=\"color:var(--ega-text-muted);\">Bank Health Score<\/div><div class=\"ega-card-value\" id=\"an-health\" style=\"font-size:1.5rem; font-weight:700; color:var(--ega-success);\">100%<\/div><\/div>\n        <\/div>\n      <\/section>\n    <\/div>\n  <\/main>\n\n  <!-- QUESTION PAPER BUILDER MODAL OVERLAY -->\n  <div id=\"ega-paper-builder-modal\" style=\"display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.6); z-index:99999; justify-content:center; align-items:center; padding:1rem;\">\n    <div style=\"background:var(--ega-card-bg); width:100%; max-width:1100px; height:90vh; border-radius:10px; box-shadow:0 20px 40px rgba(0,0,0,0.3); display:flex; flex-direction:column; overflow:hidden; border:1px solid var(--ega-border);\">\n      <div style=\"padding:1rem 1.5rem; border-bottom:1px solid var(--ega-border); display:flex; justify-content:space-between; align-items:center; background:rgba(0,0,0,0.02);\">\n        <h3 id=\"ega-builder-modal-title\" style=\"margin:0; font-size:1.2rem;\">Question Paper Builder<\/h3>\n        <div style=\"display:flex; gap:0.5rem; align-items:center;\">\n          <span id=\"ega-autosave-status\" style=\"font-size:0.8rem; color:var(--ega-text-muted);\">Saved<\/span>\n          <button class=\"ega-btn ega-btn-secondary\" onclick=\"window.egaClosePaperBuilder()\" style=\"padding:0.3rem 0.6rem;\">\u2715 Close<\/button>\n        <\/div>\n      <\/div>\n      <div style=\"flex:1; overflow-y:auto; padding:1.5rem; display:grid; grid-template-columns: 280px 1fr 300px; gap:1rem;\" id=\"ega-builder-grid\">\n        <!-- LEFT: Settings & Sections Nav -->\n        <div style=\"border-right:1px solid var(--ega-border); padding-right:1rem; display:flex; flex-direction:column; gap:1rem;\">\n          <h4 style=\"margin:0 0 0.5rem 0;\">Configuration<\/h4>\n          <button class=\"ega-btn ega-btn-secondary\" style=\"width:100%; justify-content:flex-start;\" onclick=\"window.egaShowBuilderTab('settings')\">\u2699 Exam Settings<\/button>\n          <button class=\"ega-btn ega-btn-secondary\" style=\"width:100%; justify-content:flex-start;\" onclick=\"window.egaShowBuilderTab('instructions')\">\ud83d\udcdd Instructions<\/button>\n          <button class=\"ega-btn ega-btn-secondary\" style=\"width:100%; justify-content:flex-start;\" onclick=\"window.egaShowBuilderTab('sections')\">\ud83d\udcd1 Sections Management<\/button>\n          <button class=\"ega-btn ega-btn-primary\" style=\"width:100%; justify-content:flex-start; margin-top:0.5rem;\" onclick=\"window.egaPreviewFullPaper()\">\ud83d\udc41 Live Preview<\/button>\n          <button class=\"ega-btn ega-btn-secondary\" style=\"width:100%; justify-content:flex-start;\" onclick=\"window.egaSavePaperDraft()\">\ud83d\udcbe Save Paper<\/button>\n          <button class=\"ega-btn ega-btn-secondary\" style=\"width:100%; justify-content:flex-start;\" onclick=\"window.egaSaveAsTemplateModal()\">\ud83d\udcc1 Save as Template<\/button>\n        <\/div>\n        <!-- CENTER: Main Builder Workspace -->\n        <div style=\"overflow-y:auto; padding-right:0.5rem;\" id=\"ega-builder-center-pane\">\n          <!-- Dynamic content loaded via JS -->\n        <\/div>\n        <!-- RIGHT: Paper Summary -->\n        <div style=\"border-left:1px solid var(--ega-border); padding-left:1rem; display:flex; flex-direction:column; gap:0.75rem;\">\n          <h4 style=\"margin:0 0 0.5rem 0;\">Paper Summary<\/h4>\n          <div class=\"ega-card\" style=\"padding:0.75rem; margin:0;\">\n            <div style=\"font-size:0.85rem; color:var(--ega-text-muted);\">Total Questions<\/div>\n            <div id=\"ega-sum-total-q\" style=\"font-size:1.25rem; font-weight:700;\">0<\/div>\n          <\/div>\n          <div class=\"ega-card\" style=\"padding:0.75rem; margin:0;\">\n            <div style=\"font-size:0.85rem; color:var(--ega-text-muted);\">Total Marks \/ Max Marks<\/div>\n            <div style=\"font-size:1.25rem; font-weight:700;\"><span id=\"ega-sum-total-marks\">0<\/span> \/ <span id=\"ega-sum-max-marks\">100<\/span><\/div>\n            <div id=\"ega-marks-warning\" style=\"font-size:0.8rem; color:var(--ega-danger); margin-top:0.25rem; display:none;\"><\/div>\n          <\/div>\n          <div class=\"ega-card\" style=\"padding:0.75rem; margin:0;\">\n            <div style=\"font-size:0.85rem; color:var(--ega-text-muted);\">Sections Count<\/div>\n            <div id=\"ega-sum-sections\" style=\"font-size:1.25rem; font-weight:700;\">0<\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- QUESTION BANK SELECTION MODAL -->\n  <div id=\"ega-q-bank-modal\" style=\"display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.5); z-index:100000; justify-content:center; align-items:center; padding:1rem;\">\n    <div style=\"background:var(--ega-card-bg); width:100%; max-width:800px; height:80vh; border-radius:8px; display:flex; flex-direction:column; overflow:hidden; border:1px solid var(--ega-border);\">\n      <div style=\"padding:1rem; border-bottom:1px solid var(--ega-border); display:flex; justify-content:space-between; align-items:center;\">\n        <h3 style=\"margin:0;\">Select Questions from Bank<\/h3>\n        <button class=\"ega-btn ega-btn-secondary\" onclick=\"window.egaCloseBankModal()\" style=\"padding:0.3rem 0.6rem;\">\u2715 Close<\/button>\n      <\/div>\n      <div style=\"padding:1rem; flex:1; overflow-y:auto;\">\n        <div style=\"margin-bottom:1rem; display:flex; gap:0.5rem; flex-wrap:wrap;\">\n          <input type=\"text\" id=\"ega-bank-search\" class=\"ega-input\" placeholder=\"Search bank...\" style=\"flex:1;\">\n        <\/div>\n        <div class=\"ega-table-container\">\n          <table class=\"ega-table\">\n            <thead>\n              <tr>\n                <th><input type=\"checkbox\" id=\"ega-bank-select-all\" onclick=\"window.egaToggleSelectAllBank(this)\"><\/th>\n                <th>ID<\/th>\n                <th>Question<\/th>\n                <th>Subject<\/th>\n                <th>Marks<\/th>\n              <\/tr>\n            <\/thead>\n            <tbody id=\"ega-bank-modal-tbody\">\n              <tr><td colspan=\"5\" style=\"text-align:center; color:var(--ega-text-muted);\">No questions in bank.<\/td><\/tr>\n            <\/tbody>\n          <\/table>\n        <\/div>\n      <\/div>\n      <div style=\"padding:1rem; border-top:1px solid var(--ega-border); display:flex; justify-content:flex-end; gap:0.5rem;\">\n        <button class=\"ega-btn ega-btn-secondary\" onclick=\"window.egaCloseBankModal()\">Cancel<\/button>\n        <button class=\"ega-btn ega-btn-primary\" onclick=\"window.egaAddSelectedBankQuestions()\">Add Selected<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- LIVE PREVIEW MODAL -->\n  <div id=\"ega-preview-modal\" style=\"display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.6); z-index:100000; justify-content:center; align-items:center; padding:1rem;\">\n    <div style=\"background:#ffffff; color:#000000; width:100%; max-width:900px; height:90vh; border-radius:8px; display:flex; flex-direction:column; overflow:hidden; box-shadow:0 20px 40px rgba(0,0,0,0.3);\">\n      <div style=\"padding:1rem; border-bottom:1px solid #ccc; display:flex; justify-content:space-between; align-items:center; background:#f1f5f9;\">\n        <h3 style=\"margin:0; color:#000;\">Question Paper Preview<\/h3>\n        <div style=\"display:flex; gap:0.5rem;\">\n          <button class=\"ega-btn ega-btn-primary\" onclick=\"window.print()\">Print Paper<\/button>\n          <button class=\"ega-btn ega-btn-secondary\" onclick=\"document.getElementById('ega-preview-modal').style.display='none'\">Close<\/button>\n        <\/div>\n      <\/div>\n      <div style=\"padding:2rem; flex:1; overflow-y:auto; background:#ffffff;\" id=\"ega-preview-content-area\">\n        <!-- Rendered clean paper preview -->\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- COMMAND PALETTE MODAL OVERLAY -->\n  <div id=\"ega-command-palette-modal\" style=\"display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.5); z-index:99999; justify-content:center; align-items:flex-start; padding:10vh 1rem 1rem 1rem;\">\n    <div style=\"background:var(--ega-card-bg); width:100%; max-width:600px; border-radius:8px; box-shadow:0 10px 25px rgba(0,0,0,0.2); overflow:hidden; border:1px solid var(--ega-border);\">\n      <div style=\"padding:1rem; border-bottom:1px solid var(--ega-border); display:flex; align-items:center;\">\n        <svg width=\"20\" height=\"20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\" style=\"margin-right:0.75rem; color:var(--ega-text-muted); flex-shrink:0;\"><path d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"\/><\/svg>\n        <input type=\"text\" id=\"ega-cmd-input\" placeholder=\"Type a command...\" style=\"border:none; outline:none; width:100%; font-size:1rem; background:transparent; color:var(--ega-text);\">\n      <\/div>\n      <div id=\"ega-cmd-results\" style=\"max-height:300px; overflow-y:auto; padding:0.5rem;\">\n        <div class=\"ega-cmd-item\" data-view=\"dashboard\" style=\"padding:0.75rem 1rem; cursor:pointer; border-radius:4px; display:flex; justify-content:space-between;\"><span>Open Dashboard<\/span><span style=\"font-size:0.8rem; color:var(--ega-text-muted);\">View<\/span><\/div>\n        <div class=\"ega-cmd-item\" data-view=\"questions\" style=\"padding:0.75rem 1rem; cursor:pointer; border-radius:4px; display:flex; justify-content:space-between;\"><span>Open Question Bank<\/span><span style=\"font-size:0.8rem; color:var(--ega-text-muted);\">View<\/span><\/div>\n        <div class=\"ega-cmd-item\" data-view=\"papers\" style=\"padding:0.75rem 1rem; cursor:pointer; border-radius:4px; display:flex; justify-content:space-between;\"><span>Open Question Papers<\/span><span style=\"font-size:0.8rem; color:var(--ega-text-muted);\">View<\/span><\/div>\n        <div class=\"ega-cmd-item\" data-view=\"templates\" style=\"padding:0.75rem 1rem; cursor:pointer; border-radius:4px; display:flex; justify-content:space-between;\"><span>Open Paper Templates<\/span><span style=\"font-size:0.8rem; color:var(--ega-text-muted);\">View<\/span><\/div>\n        <div class=\"ega-cmd-item\" data-view=\"analytics\" style=\"padding:0.75rem 1rem; cursor:pointer; border-radius:4px; display:flex; justify-content:space-between;\"><span>Open Analytics Intelligence<\/span><span style=\"font-size:0.8rem; color:var(--ega-text-muted);\">View<\/span><\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n  (function() {\n    'use strict';\n    \n    const STORAGE_KEY = 'ega_app_data_v2';\n    const DATA_VERSION = 2;\n\n    const defaultState = {\n      version: DATA_VERSION,\n      theme: 'light',\n      questions: [\n        { id: 'Q_1', text: 'What is the derivative of x^2?', type: 'Multiple Choice', subject: 'Mathematics', difficulty: 'Medium', marks: 2, options: ['2x', 'x^2', '2', 'x'] },\n        { id: 'Q_2', text: 'Define Newton First Law of Motion.', type: 'Short Answer', subject: 'Physics', difficulty: 'Easy', marks: 3 },\n        { id: 'Q_3', text: 'What is the chemical symbol for Gold?', type: 'One Word Answer', subject: 'Chemistry', difficulty: 'Easy', marks: 1 }\n      ],\n      blueprints: [\n        { id: 'BP_1', name: 'Standard Math Mid-Term', className: 'Grade 10', subject: 'Mathematics', totalMarks: 50 }\n      ],\n      papers: [],\n      templates: [\n        {\n          id: 'TPL_1',\n          name: 'Mid Term Examination',\n          examType: 'Mid Term',\n          class: 'Class X',\n          subject: 'Mathematics',\n          sections: [\n            { id: 'SEC_1', name: 'Section A \u2014 Multiple Choice', instructions: 'All questions are compulsory.', questions: [] }\n          ]\n        },\n        {\n          id: 'TPL_2',\n          name: 'Final Examination',\n          examType: 'Final Exam',\n          class: 'Class XII',\n          subject: 'Physics',\n          sections: [\n            { id: 'SEC_2', name: 'Section A \u2014 Objective', instructions: 'Choose correct option.', questions: [] }\n          ]\n        }\n      ],\n      generatedPapers: [],\n      examSets: [],\n      activityLog: []\n    };\n\n    function getAppData() {\n      try {\n        const stored = localStorage.getItem(STORAGE_KEY);\n        if (!stored) {\n          \/\/ Check legacy storage\n          const old = localStorage.getItem('ega_app_data_v1');\n          if (old) {\n            const parsedOld = JSON.parse(old);\n            parsedOld.papers = parsedOld.papers || [];\n            parsedOld.templates = defaultState.templates;\n            return parsedOld;\n          }\n          return JSON.parse(JSON.stringify(defaultState));\n        }\n        const parsed = JSON.parse(stored);\n        if (typeof parsed !== 'object' || parsed === null) throw new Error('Invalid state');\n        return {\n          version: Number(parsed.version) || DATA_VERSION,\n          theme: ['light', 'dark'].includes(parsed.theme) ? parsed.theme : 'light',\n          questions: Array.isArray(parsed.questions) ? parsed.questions : [],\n          blueprints: Array.isArray(parsed.blueprints) ? parsed.blueprints : [],\n          papers: Array.isArray(parsed.papers) ? parsed.papers : [],\n          templates: Array.isArray(parsed.templates) ? parsed.templates : defaultState.templates,\n          generatedPapers: Array.isArray(parsed.generatedPapers) ? parsed.generatedPapers : [],\n          examSets: Array.isArray(parsed.examSets) ? parsed.examSets : [],\n          activityLog: Array.isArray(parsed.activityLog) ? parsed.activityLog : []\n        };\n      } catch(e) {\n        console.warn('Storage recovery triggered', e);\n        return JSON.parse(JSON.stringify(defaultState));\n      }\n    }\n\n    function saveAppData(data) {\n      try {\n        localStorage.setItem(STORAGE_KEY, JSON.stringify(data));\n      } catch(e) {\n        console.error('Save error', e);\n      }\n    }\n\n    function logActivity(action, detail) {\n      const data = getAppData();\n      data.activityLog.unshift({\n        action: action,\n        detail: detail,\n        timestamp: new Date().toLocaleTimeString()\n      });\n      if (data.activityLog.length > 20) data.activityLog.pop();\n      saveAppData(data);\n    }\n\n    \/\/ Active Paper Builder State\n    let activePaperSession = null;\n    let activeBuilderTab = 'settings';\n    let currentActiveSectionId = null;\n\n    window.egaOpenPaperBuilder = function(paperData = null, templateData = null) {\n      const state = getAppData();\n      if (paperData) {\n        activePaperSession = JSON.parse(JSON.stringify(paperData));\n      } else if (templateData) {\n        activePaperSession = {\n          id: 'PAPER_' + Date.now(),\n          examName: templateData.name || 'New Examination',\n          examType: templateData.examType || 'Mid Term',\n          className: templateData.class || 'Class X',\n          section: 'A',\n          subject: templateData.subject || 'Mathematics',\n          subjectCode: 'MTH-101',\n          academicYear: '2026-2027',\n          term: 'Term I',\n          examDate: new Date().toISOString().split('T')[0],\n          examTime: '10:00 AM',\n          duration: '3 Hours',\n          maxMarks: 80,\n          schoolName: 'ABC PUBLIC SCHOOL & INSTITUTION',\n          teacherName: 'Faculty',\n          instructions: [\n            'All questions are compulsory.',\n            'Read all questions carefully.',\n            'Marks are indicated against each question.'\n          ],\n          sections: JSON.parse(JSON.stringify(templateData.sections || []))\n        };\n      } else {\n        activePaperSession = {\n          id: 'PAPER_' + Date.now(),\n          examName: 'Annual Examination 2026',\n          examType: 'Final Exam',\n          className: 'Class X',\n          section: 'A',\n          subject: 'Mathematics',\n          subjectCode: 'MAT-101',\n          academicYear: '2025-2026',\n          term: 'Annual',\n          examDate: new Date().toISOString().split('T')[0],\n          examTime: '09:00 AM',\n          duration: '3 Hours',\n          maxMarks: 80,\n          schoolName: 'EXCEL ACADEMY',\n          teacherName: 'Exam Cell',\n          instructions: [\n            'All questions are compulsory.',\n            'Read each question carefully before answering.',\n            'Show necessary calculations where applicable.'\n          ],\n          sections: [\n            {\n              id: 'SEC_' + Date.now(),\n              name: 'Section A \u2014 Multiple Choice Questions',\n              instructions: 'Choose the correct option.',\n              type: 'Multiple Choice',\n              questions: []\n            }\n          ]\n        };\n      }\n      if (activePaperSession.sections.length > 0) {\n        currentActiveSectionId = activePaperSession.sections[0].id;\n      }\n      const modal = document.getElementById('ega-paper-builder-modal');\n      if (modal) modal.style.display = 'flex';\n      renderBuilderWorkspace();\n      updateBuilderSummary();\n    };\n\n    window.egaClosePaperBuilder = function() {\n      const modal = document.getElementById('ega-paper-builder-modal');\n      if (modal) modal.style.display = 'none';\n      refreshViewData('all');\n    };\n\n    window.egaShowBuilderTab = function(tabName) {\n      activeBuilderTab = tabName;\n      renderBuilderWorkspace();\n    };\n\n    function renderBuilderWorkspace() {\n      const centerPane = document.getElementById('ega-builder-center-pane');\n      if (!centerPane || !activePaperSession) return;\n\n      if (activeBuilderTab === 'settings') {\n        centerPane.innerHTML = `\n          <h3 style=\"margin-top:0;\">Exam Header & Setup Configuration<\/h3>\n          <div style=\"display:flex; flex-direction:column; gap:0.75rem;\">\n            <div>\n              <label style=\"font-weight:600; font-size:0.85rem;\">Institution \/ School Name<\/label>\n              <input type=\"text\" class=\"ega-input\" id=\"bs-school\" value=\"${activePaperSession.schoolName || ''}\" oninput=\"window.egaUpdatePaperField('schoolName', this.value)\">\n            <\/div>\n            <div style=\"display:grid; grid-template-columns: 1fr 1fr; gap:0.75rem;\">\n              <div>\n                <label style=\"font-weight:600; font-size:0.85rem;\">Exam Name<\/label>\n                <input type=\"text\" class=\"ega-input\" id=\"bs-name\" value=\"${activePaperSession.examName || ''}\" oninput=\"window.egaUpdatePaperField('examName', this.value)\">\n              <\/div>\n              <div>\n                <label style=\"font-weight:600; font-size:0.85rem;\">Exam Type<\/label>\n                <select class=\"ega-input\" id=\"bs-type\" onchange=\"window.egaUpdatePaperField('examType', this.value)\">\n                  ${['Mid Term', 'Half Yearly', 'Final Exam', 'Unit Test', 'Class Test', 'Weekly Test', 'Pre-Board', 'Board Exam', 'Practice Test', 'Assignment', 'Quiz', 'Custom'].map(t => `<option value=\"${t}\" ${activePaperSession.examType === t ? 'selected' : ''}>${t}<\/option>`).join('')}\n                <\/select>\n              <\/div>\n            <\/div>\n            <div style=\"display:grid; grid-template-columns: 1fr 1fr 1fr; gap:0.75rem;\">\n              <div>\n                <label style=\"font-weight:600; font-size:0.85rem;\">Class<\/label>\n                <input type=\"text\" class=\"ega-input\" value=\"${activePaperSession.className || ''}\" oninput=\"window.egaUpdatePaperField('className', this.value)\">\n              <\/div>\n              <div>\n                <label style=\"font-weight:600; font-size:0.85rem;\">Subject<\/label>\n                <input type=\"text\" class=\"ega-input\" value=\"${activePaperSession.subject || ''}\" oninput=\"window.egaUpdatePaperField('subject', this.value)\">\n              <\/div>\n              <div>\n                <label style=\"font-weight:600; font-size:0.85rem;\">Max Marks<\/label>\n                <input type=\"number\" class=\"ega-input\" value=\"${activePaperSession.maxMarks || 80}\" oninput=\"window.egaUpdatePaperField('maxMarks', Number(this.value))\">\n              <\/div>\n            <\/div>\n            <div style=\"display:grid; grid-template-columns: 1fr 1fr 1fr; gap:0.75rem;\">\n              <div>\n                <label style=\"font-weight:600; font-size:0.85rem;\">Duration<\/label>\n                <input type=\"text\" class=\"ega-input\" value=\"${activePaperSession.duration || '3 Hours'}\" oninput=\"window.egaUpdatePaperField('duration', this.value)\">\n              <\/div>\n              <div>\n                <label style=\"font-weight:600; font-size:0.85rem;\">Exam Date<\/label>\n                <input type=\"date\" class=\"ega-input\" value=\"${activePaperSession.examDate || ''}\" oninput=\"window.egaUpdatePaperField('examDate', this.value)\">\n              <\/div>\n              <div>\n                <label style=\"font-weight:600; font-size:0.85rem;\">Teacher Name<\/label>\n                <input type=\"text\" class=\"ega-input\" value=\"${activePaperSession.teacherName || ''}\" oninput=\"window.egaUpdatePaperField('teacherName', this.value)\">\n              <\/div>\n            <\/div>\n          <\/div>\n        `;\n      } else if (activeBuilderTab === 'instructions') {\n        centerPane.innerHTML = `\n          <div style=\"display:flex; justify-content:space-between; align-items:center; margin-bottom:1rem;\">\n            <h3 style=\"margin:0;\">Exam Instructions<\/h3>\n            <button class=\"ega-btn ega-btn-primary\" onclick=\"window.egaAddInstruction()\">+ Add Instruction<\/button>\n          <\/div>\n          <div style=\"display:flex; flex-direction:column; gap:0.5rem;\" id=\"ega-instructions-list\">\n            ${(activePaperSession.instructions || []).map((ins, idx) => `\n              <div style=\"display:flex; gap:0.5rem; align-items:center;\">\n                <span style=\"font-weight:600; min-width:24px;\">${idx + 1}.<\/span>\n                <input type=\"text\" class=\"ega-input\" value=\"${ins}\" oninput=\"window.egaUpdateInstruction(${idx}, this.value)\">\n                <button class=\"ega-btn ega-btn-secondary\" style=\"padding:0.4rem;\" onclick=\"window.egaRemoveInstruction(${idx})\">\u2715<\/button>\n              <\/div>\n            `).join('')}\n          <\/div>\n        `;\n      } else if (activeBuilderTab === 'sections') {\n        centerPane.innerHTML = `\n          <div style=\"display:flex; justify-content:space-between; align-items:center; margin-bottom:1rem; flex-wrap:wrap; gap:0.5rem;\">\n            <h3 style=\"margin:0;\">Sections & Questions<\/h3>\n            <button class=\"ega-btn ega-btn-primary\" onclick=\"window.egaAddNewSection()\">+ Add Section<\/button>\n          <\/div>\n          <div style=\"display:flex; flex-direction:column; gap:1.5rem;\">\n            ${(activePaperSession.sections || []).map((sec, sIdx) => `\n              <div class=\"ega-card\" style=\"border:1px solid var(--ega-border); margin:0;\">\n                <div style=\"display:flex; justify-content:space-between; align-items:center; border-bottom:1px solid var(--ega-border); padding-bottom:0.5rem; margin-bottom:0.75rem; flex-wrap:wrap; gap:0.5rem;\">\n                  <input type=\"text\" class=\"ega-input\" style=\"font-weight:600; font-size:1.05rem; flex:1; min-width:200px;\" value=\"${sec.name}\" oninput=\"window.egaUpdateSectionName('${sec.id}', this.value)\">\n                  <div style=\"display:flex; gap:0.25rem;\">\n                    <button class=\"ega-btn ega-btn-secondary\" style=\"padding:0.3rem 0.6rem; font-size:0.8rem;\" onclick=\"window.egaOpenBankModalForSection('${sec.id}')\">+ Add From Bank<\/button>\n                    <button class=\"ega-btn ega-btn-secondary\" style=\"padding:0.3rem 0.6rem; font-size:0.8rem;\" onclick=\"window.egaAddManualQuestionToSection('${sec.id}')\">+ Add Manual<\/button>\n                    <button class=\"ega-btn ega-btn-secondary\" style=\"padding:0.3rem 0.6rem; font-size:0.8rem; color:var(--ega-danger);\" onclick=\"window.egaDeleteSection('${sec.id}')\">Delete<\/button>\n                  <\/div>\n                <\/div>\n                <div style=\"display:flex; flex-direction:column; gap:0.5rem;\">\n                  ${(sec.questions || []).map((q, qIdx) => `\n                    <div style=\"background:rgba(0,0,0,0.02); padding:0.75rem; border-radius:6px; border:1px solid var(--ega-border); display:flex; justify-content:space-between; align-items:flex-start; gap:0.5rem;\">\n                      <div>\n                        <div style=\"font-weight:600; font-size:0.9rem;\">Q${qIdx + 1}. ${q.text} <span style=\"font-weight:normal; color:var(--ega-text-muted); font-size:0.8rem;\">[${q.marks} Marks]<\/span><\/div>\n                        ${q.options ? `<div style=\"font-size:0.85rem; color:var(--ega-text-muted); margin-top:0.25rem;\">Options: ${q.options.join(', ')}<\/div>` : ''}\n                      <\/div>\n                      <div style=\"display:flex; gap:0.25rem; flex-shrink:0;\">\n                        <button class=\"ega-btn ega-btn-secondary\" style=\"padding:0.2rem 0.4rem; font-size:0.75rem;\" title=\"Edit\" onclick=\"window.egaEditQuestionPrompt('${sec.id}', '${q.id}')\">Edit<\/button>\n                        <button class=\"ega-btn ega-btn-secondary\" style=\"padding:0.2rem 0.4rem; font-size:0.75rem;\" title=\"Duplicate\" onclick=\"window.egaDuplicateQuestion('${sec.id}', '${q.id}')\">Dup<\/button>\n                        <button class=\"ega-btn ega-btn-secondary\" style=\"padding:0.2rem 0.4rem; font-size:0.75rem; color:var(--ega-danger);\" title=\"Remove\" onclick=\"window.egaRemoveQuestionFromSection('${sec.id}', '${q.id}')\">\u2715<\/button>\n                      <\/div>\n                    <\/div>\n                  `).join('')}\n                  ${(!sec.questions || sec.questions.length === 0) ? '<div style=\"color:var(--ega-text-muted); font-size:0.9rem; text-align:center; padding:1rem;\">No questions in this section yet. Add from Question Bank or manually.<\/div>' : ''}\n                <\/div>\n              <\/div>\n            `).join('')}\n          <\/div>\n        `;\n      }\n    }\n\n    window.egaUpdatePaperField = function(field, val) {\n      if (!activePaperSession) return;\n      activePaperSession[field] = val;\n      updateBuilderSummary();\n      triggerAutoSave();\n    };\n\n    window.egaAddInstruction = function() {\n      if (!activePaperSession) return;\n      activePaperSession.instructions.push('New instruction rule.');\n      renderBuilderWorkspace();\n      triggerAutoSave();\n    };\n\n    window.egaUpdateInstruction = function(idx, val) {\n      if (!activePaperSession) return;\n      activePaperSession.instructions[idx] = val;\n      triggerAutoSave();\n    };\n\n    window.egaRemoveInstruction = function(idx) {\n      if (!activePaperSession) return;\n      activePaperSession.instructions.splice(idx, 1);\n      renderBuilderWorkspace();\n      triggerAutoSave();\n    };\n\n    window.egaAddNewSection = function() {\n      if (!activePaperSession) return;\n      const secLetter = String.fromCharCode(65 + activePaperSession.sections.length);\n      activePaperSession.sections.push({\n        id: 'SEC_' + Date.now(),\n        name: `Section ${secLetter} \u2014 New Section`,\n        instructions: 'Attempt all questions.',\n        questions: []\n      });\n      renderBuilderWorkspace();\n      updateBuilderSummary();\n      triggerAutoSave();\n    };\n\n    window.egaUpdateSectionName = function(secId, name) {\n      if (!activePaperSession) return;\n      const sec = activePaperSession.sections.find(s => s.id === secId);\n      if (sec) {\n        sec.name = name;\n        triggerAutoSave();\n      }\n    };\n\n    window.egaDeleteSection = function(secId) {\n      if (!activePaperSession) return;\n      activePaperSession.sections = activePaperSession.sections.filter(s => s.id !== secId);\n      renderBuilderWorkspace();\n      updateBuilderSummary();\n      triggerAutoSave();\n    };\n\n    let targetSectionForBank = null;\n    window.egaOpenBankModalForSection = function(secId) {\n      targetSectionForBank = secId;\n      const state = getAppData();\n      const tbody = document.getElementById('ega-bank-modal-tbody');\n      if (tbody) {\n        if (state.questions.length === 0) {\n          tbody.innerHTML = '<tr><td colspan=\"5\" style=\"text-align:center; color:var(--ega-text-muted);\">No questions available in bank.<\/td><\/tr>';\n        } else {\n          tbody.innerHTML = state.questions.map(q => `\n            <tr>\n              <td><input type=\"checkbox\" class=\"ega-bank-q-checkbox\" value=\"${q.id}\"><\/td>\n              <td>${q.id}<\/td>\n              <td>${q.text}<\/td>\n              <td>${q.subject}<\/td>\n              <td>${q.marks}<\/td>\n            <\/tr>\n          `).join('');\n        }\n      }\n      document.getElementById('ega-q-bank-modal').style.display = 'flex';\n    };\n\n    window.egaCloseBankModal = function() {\n      document.getElementById('ega-q-bank-modal').style.display = 'none';\n    };\n\n    window.egaToggleSelectAllBank = function(master) {\n      document.querySelectorAll('.ega-bank-q-checkbox').forEach(cb => cb.checked = master.checked);\n    };\n\n    window.egaAddSelectedBankQuestions = function() {\n      if (!activePaperSession || !targetSectionForBank) return;\n      const sec = activePaperSession.sections.find(s => s.id === targetSectionForBank);\n      if (!sec) return;\n\n      const state = getAppData();\n      const selectedIds = Array.from(document.querySelectorAll('.ega-bank-q-checkbox:checked')).map(cb => cb.value);\n\n      selectedIds.forEach(id => {\n        const qObj = state.questions.find(q => q.id === id);\n        if (qObj) {\n          \/\/ Check duplicate\n          const exists = sec.questions.some(q => q.id === qObj.id || q.text === qObj.text);\n          if (exists) {\n            if (!confirm(`Question \"${qObj.text.slice(0, 30)}...\" is already in this section. Add anyway?`)) return;\n          }\n          sec.questions.push(JSON.parse(JSON.stringify(qObj)));\n        }\n      });\n\n      window.egaCloseBankModal();\n      renderBuilderWorkspace();\n      updateBuilderSummary();\n      triggerAutoSave();\n    };\n\n    window.egaAddManualQuestionToSection = function(secId) {\n      if (!activePaperSession) return;\n      const sec = activePaperSession.sections.find(s => s.id === secId);\n      if (!sec) return;\n\n      const text = prompt('Enter Question Text:');\n      if (!text) return;\n      const marks = parseInt(prompt('Enter Marks:', '1'), 10) || 1;\n\n      sec.questions.push({\n        id: 'Q_' + Date.now(),\n        text: text,\n        type: 'Custom',\n        marks: marks\n      });\n\n      renderBuilderWorkspace();\n      updateBuilderSummary();\n      triggerAutoSave();\n    };\n\n    window.egaRemoveQuestionFromSection = function(secId, qId) {\n      if (!activePaperSession) return;\n      const sec = activePaperSession.sections.find(s => s.id === secId);\n      if (sec) {\n        sec.questions = sec.questions.filter(q => q.id !== qId);\n        renderBuilderWorkspace();\n        updateBuilderSummary();\n        triggerAutoSave();\n      }\n    };\n\n    window.egaDuplicateQuestion = function(secId, qId) {\n      if (!activePaperSession) return;\n      const sec = activePaperSession.sections.find(s => s.id === secId);\n      if (sec) {\n        const q = sec.questions.find(item => item.id === qId);\n        if (q) {\n          const clone = JSON.parse(JSON.stringify(q));\n          clone.id = 'Q_' + Date.now();\n          sec.questions.push(clone);\n          renderBuilderWorkspace();\n          updateBuilderSummary();\n          triggerAutoSave();\n        }\n      }\n    };\n\n    window.egaEditQuestionPrompt = function(secId, qId) {\n      if (!activePaperSession) return;\n      const sec = activePaperSession.sections.find(s => s.id === secId);\n      if (sec) {\n        const q = sec.questions.find(item => item.id === qId);\n        if (q) {\n          const newText = prompt('Edit Question Text:', q.text);\n          if (newText !== null) q.text = newText;\n          const newMarks = prompt('Edit Marks:', q.marks);\n          if (newMarks !== null) q.marks = parseInt(newMarks, 10) || q.marks;\n          renderBuilderWorkspace();\n          updateBuilderSummary();\n          triggerAutoSave();\n        }\n      }\n    };\n\n    function updateBuilderSummary() {\n      if (!activePaperSession) return;\n      let totalQ = 0;\n      let totalMarks = 0;\n      (activePaperSession.sections || []).forEach(sec => {\n        totalQ += (sec.questions || []).length;\n        (sec.questions || []).forEach(q => {\n          totalMarks += Number(q.marks || 0);\n        });\n      });\n\n      document.getElementById('ega-sum-total-q').textContent = totalQ;\n      document.getElementById('ega-sum-total-marks').textContent = totalMarks;\n      document.getElementById('ega-sum-max-marks').textContent = activePaperSession.maxMarks || 100;\n      document.getElementById('ega-sum-sections').textContent = (activePaperSession.sections || []).length;\n\n      const warningEl = document.getElementById('ega-marks-warning');\n      if (totalMarks > Number(activePaperSession.maxMarks || 100)) {\n        warningEl.style.display = 'block';\n        warningEl.textContent = `WARNING: Paper marks exceed maximum marks by ${totalMarks - Number(activePaperSession.maxMarks)}.`;\n      } else {\n        warningEl.style.display = 'none';\n      }\n    }\n\n    let autoSaveTimer = null;\n    function triggerAutoSave() {\n      const statusEl = document.getElementById('ega-autosave-status');\n      if (statusEl) statusEl.textContent = 'Saving...';\n      if (autoSaveTimer) clearTimeout(autoSaveTimer);\n      autoSaveTimer = setTimeout(() => {\n        if (activePaperSession) {\n          const state = getAppData();\n          const idx = state.papers.findIndex(p => p.id === activePaperSession.id);\n          if (idx >= 0) {\n            state.papers[idx] = activePaperSession;\n          } else {\n            state.papers.push(activePaperSession);\n          }\n          saveAppData(state);\n          if (statusEl) statusEl.textContent = 'Saved';\n          logActivity('Paper Auto-Saved', activePaperSession.examName);\n        }\n      }, 800);\n    }\n\n    window.egaSavePaperDraft = function() {\n      if (!activePaperSession) return;\n      const state = getAppData();\n      const idx = state.papers.findIndex(p => p.id === activePaperSession.id);\n      if (idx >= 0) {\n        state.papers[idx] = activePaperSession;\n      } else {\n        state.papers.push(activePaperSession);\n      }\n      saveAppData(state);\n      alert('Question paper saved successfully!');\n      window.egaClosePaperBuilder();\n    };\n\n    window.egaSaveAsTemplateModal = function() {\n      if (!activePaperSession) return;\n      const tplName = prompt('Enter Template Name:', activePaperSession.examName + ' Template');\n      if (!tplName) return;\n\n      const state = getAppData();\n      state.templates.push({\n        id: 'TPL_' + Date.now(),\n        name: tplName,\n        examType: activePaperSession.examType,\n        class: activePaperSession.className,\n        subject: activePaperSession.subject,\n        sections: activePaperSession.sections.map(s => ({ id: s.id, name: s.name, instructions: s.instructions, questions: [] }))\n      });\n      saveAppData(state);\n      alert('Saved as template successfully!');\n      logActivity('Template Saved', tplName);\n    };\n\n    window.egaPreviewFullPaper = function() {\n      if (!activePaperSession) return;\n      const area = document.getElementById('ega-preview-content-area');\n      if (!area) return;\n\n      area.innerHTML = `\n        <div style=\"text-align:center; border-bottom:2px solid #000; padding-bottom:1rem; margin-bottom:1.5rem;\">\n          <h2 style=\"margin:0; font-size:1.4rem; text-transform:uppercase;\">${activePaperSession.schoolName || 'Institution Name'}<\/h2>\n          <h3 style=\"margin:0.25rem 0; font-size:1.2rem;\">${activePaperSession.examName || 'Examination'} (${activePaperSession.academicYear || ''})<\/h3>\n          <div style=\"display:flex; justify-content:space-between; margin-top:1rem; font-size:0.95rem; font-weight:600;\">\n            <div>Class: ${activePaperSession.className || ''}<\/div>\n            <div>Subject: ${activePaperSession.subject || ''}<\/div>\n            <div>Time: ${activePaperSession.duration || ''}<\/div>\n            <div>Max Marks: ${activePaperSession.maxMarks || ''}<\/div>\n          <\/div>\n        <\/div>\n        <div style=\"margin-bottom:1.5rem;\">\n          <h4 style=\"margin:0 0 0.5rem 0; border-bottom:1px solid #ccc; padding-bottom:0.25rem;\">General Instructions:<\/h4>\n          <ol style=\"margin:0; padding-left:1.2rem; font-size:0.9rem;\">\n            ${(activePaperSession.instructions || []).map(ins => `<li>${ins}<\/li>`).join('')}\n          <\/ol>\n        <\/div>\n        <div>\n          ${(activePaperSession.sections || []).map(sec => `\n            <div style=\"margin-bottom:1.5rem;\">\n              <h4 style=\"background:#f1f5f9; padding:0.4rem 0.75rem; border-left:4px solid #2563eb; margin:0 0 0.75rem 0;\">${sec.name}<\/h4>\n              ${(sec.questions || []).map((q, qIdx) => `\n                <div style=\"margin-bottom:0.75rem; display:flex; justify-content:space-between; gap:1rem;\">\n                  <div><strong>Q${qIdx + 1}.<\/strong> ${q.text}<\/div>\n                  <div style=\"white-space:nowrap; font-weight:600;\">[${q.marks}]<\/div>\n                <\/div>\n              `).join('')}\n            <\/div>\n          `).join('')}\n        <\/div>\n      `;\n      document.getElementById('ega-preview-modal').style.display = 'flex';\n    };\n\n    function refreshViewData(viewName) {\n      const state = getAppData();\n      \n      const qEl = document.getElementById('dash-stat-questions');\n      const pEl = document.getElementById('dash-stat-papers-cnt');\n      const tEl = document.getElementById('dash-stat-templates');\n      if (qEl) qEl.textContent = state.questions.length;\n      if (pEl) pEl.textContent = state.papers.length;\n      if (tEl) tEl.textContent = state.templates.length;\n\n      const anQ = document.getElementById('an-total-q');\n      if (anQ) anQ.textContent = state.questions.length;\n\n      const actTbody = document.getElementById('ega-dashboard-activity-tbody');\n      if (actTbody) {\n        if (state.activityLog.length === 0) {\n          actTbody.innerHTML = '<tr><td colspan=\"3\" style=\"text-align:center; color:var(--ega-text-muted);\">No recent activity recorded.<\/td><\/tr>';\n        } else {\n          actTbody.innerHTML = state.activityLog.map(log => `\n            <tr>\n              <td><strong>${log.action}<\/strong><\/td>\n              <td>${log.detail}<\/td>\n              <td style=\"color:var(--ega-text-muted); font-size:0.85rem;\">${log.timestamp}<\/td>\n            <\/tr>\n          `).join('');\n        }\n      }\n\n      if (viewName === 'questions' || viewName === 'all') {\n        const qTbody = document.getElementById('ega-questions-table-body');\n        if (qTbody) {\n          if (state.questions.length === 0) {\n            qTbody.innerHTML = '<tr><td colspan=\"7\" style=\"text-align:center; color:var(--ega-text-muted);\">No questions found in repository.<\/td><\/tr>';\n          } else {\n            qTbody.innerHTML = state.questions.map((q) => `\n              <tr>\n                <td>${q.id}<\/td>\n                <td>${q.text}<\/td>\n                <td>${q.type}<\/td>\n                <td>${q.subject}<\/td>\n                <td>${q.difficulty}<\/td>\n                <td>${q.marks}<\/td>\n                <td><button class=\"ega-btn ega-btn-secondary\" style=\"padding:0.25rem 0.5rem; font-size:0.8rem;\" onclick=\"window.egaDeleteQuestion('${q.id}')\">Delete<\/button><\/td>\n              <\/tr>\n            `).join('');\n          }\n        }\n      }\n\n      if (viewName === 'papers' || viewName === 'all') {\n        const pTbody = document.getElementById('ega-papers-table-body');\n        if (pTbody) {\n          if (state.papers.length === 0) {\n            pTbody.innerHTML = '<tr><td colspan=\"6\" style=\"text-align:center; color:var(--ega-text-muted);\">No question papers created yet.<\/td><\/tr>';\n          } else {\n            pTbody.innerHTML = state.papers.map(p => `\n              <tr>\n                <td>${p.examName}<\/td>\n                <td>${p.subject}<\/td>\n                <td>${p.className}<\/td>\n                <td>${p.maxMarks}<\/td>\n                <td>${p.duration}<\/td>\n                <td>\n                  <div style=\"display:flex; gap:0.25rem;\">\n                    <button class=\"ega-btn ega-btn-secondary\" style=\"padding:0.25rem 0.5rem; font-size:0.8rem;\" onclick=\"window.egaOpenPaperBuilder(null, null); window.egaLoadPaperIntoBuilder('${p.id}')\">Edit<\/button>\n                    <button class=\"ega-btn ega-btn-secondary\" style=\"padding:0.25rem 0.5rem; font-size:0.8rem;\" onclick=\"window.egaDuplicatePaper('${p.id}')\">Duplicate<\/button>\n                    <button class=\"ega-btn ega-btn-secondary\" style=\"padding:0.25rem 0.5rem; font-size:0.8rem; color:var(--ega-danger);\" onclick=\"window.egaDeletePaper('${p.id}')\">Delete<\/button>\n                  <\/div>\n                <\/td>\n              <\/tr>\n            `).join('');\n          }\n        }\n      }\n\n      if (viewName === 'templates' || viewName === 'all') {\n        const tTbody = document.getElementById('ega-templates-table-body');\n        if (tTbody) {\n          if (state.templates.length === 0) {\n            tTbody.innerHTML = '<tr><td colspan=\"6\" style=\"text-align:center; color:var(--ega-text-muted);\">No templates available.<\/td><\/tr>';\n          } else {\n            tTbody.innerHTML = state.templates.map(t => `\n              <tr>\n                <td>${t.name}<\/td>\n                <td>${t.examType}<\/td>\n                <td>${t.class}<\/td>\n                <td>${t.subject}<\/td>\n                <td>${(t.sections || []).length}<\/td>\n                <td>\n                  <div style=\"display:flex; gap:0.25rem;\">\n                    <button class=\"ega-btn ega-btn-primary\" style=\"padding:0.25rem 0.5rem; font-size:0.8rem;\" onclick=\"window.egaOpenPaperBuilder(null, ${JSON.stringify(t).replace(\/\"\/g, '&quot;')})\">Use Template<\/button>\n                    <button class=\"ega-btn ega-btn-secondary\" style=\"padding:0.25rem 0.5rem; font-size:0.8rem; color:var(--ega-danger);\" onclick=\"window.egaDeleteTemplate('${t.id}')\">Delete<\/button>\n                  <\/div>\n                <\/td>\n              <\/tr>\n            `).join('');\n          }\n        }\n      }\n    }\n\n    window.egaLoadPaperIntoBuilder = function(id) {\n      const state = getAppData();\n      const p = state.papers.find(item => item.id === id);\n      if (p) {\n        activePaperSession = JSON.parse(JSON.stringify(p));\n        renderBuilderWorkspace();\n        updateBuilderSummary();\n      }\n    };\n\n    window.egaDuplicatePaper = function(id) {\n      const state = getAppData();\n      const p = state.papers.find(item => item.id === id);\n      if (p) {\n        const clone = JSON.parse(JSON.stringify(p));\n        clone.id = 'PAPER_' + Date.now();\n        clone.examName = clone.examName + ' (Copy)';\n        state.papers.push(clone);\n        saveAppData(state);\n        refreshViewData('papers');\n        alert('Paper duplicated successfully!');\n      }\n    };\n\n    window.egaDeletePaper = function(id) {\n      if (!confirm('Are you sure you want to delete this paper?')) return;\n      const state = getAppData();\n      state.papers = state.papers.filter(p => p.id !== id);\n      saveAppData(state);\n      refreshViewData('papers');\n    };\n\n    window.egaDeleteTemplate = function(id) {\n      if (!confirm('Delete this template?')) return;\n      const state = getAppData();\n      state.templates = state.templates.filter(t => t.id !== id);\n      saveAppData(state);\n      refreshViewData('templates');\n    };\n\n    window.egaDeleteQuestion = function(id) {\n      const state = getAppData();\n      state.questions = state.questions.filter(q => q.id !== id);\n      saveAppData(state);\n      logActivity('Question Deleted', id);\n      refreshViewData('questions');\n    };\n\n    document.addEventListener('DOMContentLoaded', () => {\n      const state = getAppData();\n      const appRoot = document.getElementById('ega_app_root');\n      if (appRoot) appRoot.className = 'ega-app ega-theme-' + state.theme;\n\n      const navItems = document.querySelectorAll('#ega_app_root .ega-nav-item');\n      const views = document.querySelectorAll('#ega_app_root .ega-view');\n      const viewTitle = document.getElementById('ega-view-title');\n      const sidebar = document.getElementById('ega-sidebar');\n      const backdrop = document.getElementById('ega_sidebar_backdrop');\n\n      function switchView(viewName) {\n        navItems.forEach(n => {\n          if (n.dataset.view === viewName) n.classList.add('active');\n          else n.classList.remove('active');\n        });\n        views.forEach(v => {\n          if (v.id === 'view-' + viewName) v.classList.add('active');\n          else v.classList.remove('active');\n        });\n        const activeNav = document.querySelector(`.ega-nav-item[data-view=\"${viewName}\"]`);\n        if (activeNav && viewTitle) {\n          viewTitle.textContent = activeNav.querySelector('span').textContent;\n        }\n        if (sidebar) sidebar.classList.remove('mobile-open');\n        if (backdrop) backdrop.classList.remove('active');\n        \n        const appRootEl = document.getElementById('ega_app_root');\n        if (appRootEl) appRootEl.scrollTop = 0;\n\n        refreshViewData(viewName);\n      }\n\n      navItems.forEach(item => {\n        item.addEventListener('click', () => switchView(item.dataset.view));\n      });\n\n      const mobileToggle = document.getElementById('ega-mobile-toggle');\n      function toggleMobileMenu() {\n        if (sidebar && backdrop) {\n          sidebar.classList.toggle('mobile-open');\n          backdrop.classList.toggle('active');\n        }\n      }\n\n      if (mobileToggle) {\n        mobileToggle.style.display = 'block';\n        mobileToggle.addEventListener('click', toggleMobileMenu);\n      }\n      if (backdrop) {\n        backdrop.addEventListener('click', toggleMobileMenu);\n      }\n\n      const globalCreatePaperBtn = document.getElementById('ega-global-create-paper-btn');\n      if (globalCreatePaperBtn) {\n        globalCreatePaperBtn.addEventListener('click', () => window.egaOpenPaperBuilder());\n      }\n      const globalCreateTplBtn = document.getElementById('ega-global-create-tpl-btn');\n      if (globalCreateTplBtn) {\n        globalCreateTplBtn.addEventListener('click', () => {\n          document.querySelector('[data-view=\\'templates\\']').click();\n          const name = prompt('Enter Template Name:');\n          if (!name) return;\n          const s = getAppData();\n          s.templates.push({\n            id: 'TPL_' + Date.now(),\n            name: name,\n            examType: 'Mid Term',\n            class: 'Class X',\n            subject: 'Mathematics',\n            sections: [{ id: 'SEC_1', name: 'Section A', instructions: 'Attempt all.', questions: [] }]\n          });\n          saveAppData(s);\n          refreshViewData('templates');\n        });\n      }\n\n      const createTplViewBtn = document.getElementById('ega-create-tpl-view-btn');\n      if (createTplViewBtn) {\n        createTplViewBtn.addEventListener('click', () => {\n          const name = prompt('Enter Template Name:');\n          if (!name) return;\n          const s = getAppData();\n          s.templates.push({\n            id: 'TPL_' + Date.now(),\n            name: name,\n            examType: 'Mid Term',\n            class: 'Class X',\n            subject: 'Mathematics',\n            sections: [{ id: 'SEC_1', name: 'Section A', instructions: 'Attempt all.', questions: [] }]\n          });\n          saveAppData(s);\n          refreshViewData('templates');\n        });\n      }\n\n      const themeToggle = document.getElementById('ega-theme-toggle');\n      if (themeToggle) {\n        themeToggle.addEventListener('click', () => {\n          const current = getAppData();\n          current.theme = current.theme === 'light' ? 'dark' : 'light';\n          saveAppData(current);\n          if (appRoot) appRoot.className = 'ega-app ega-theme-' + current.theme;\n          logActivity('Theme Changed', current.theme);\n        });\n      }\n\n      const cmdModal = document.getElementById('ega-command-palette-modal');\n      const cmdBtn = document.getElementById('ega-cmd-palette-btn');\n      const cmdInput = document.getElementById('ega-cmd-input');\n\n      function toggleCmdPalette(show) {\n        if (cmdModal) {\n          cmdModal.style.display = show ? 'flex' : 'none';\n          if (show && cmdInput) {\n            cmdInput.value = '';\n            cmdInput.focus();\n          }\n        }\n      }\n\n      if (cmdBtn) cmdBtn.addEventListener('click', () => toggleCmdPalette(true));\n      if (cmdModal) {\n        cmdModal.addEventListener('click', (e) => {\n          if (e.target === cmdModal) toggleCmdPalette(false);\n        });\n      }\n\n      document.addEventListener('keydown', (e) => {\n        if ((e.ctrlKey || e.metaKey) && e.key.toLowerCase() === 'k') {\n          e.preventDefault();\n          toggleCmdPalette(cmdModal.style.display !== 'flex');\n        }\n        if (e.key === 'Escape') {\n          toggleCmdPalette(false);\n          document.getElementById('ega-paper-builder-modal').style.display = 'none';\n          document.getElementById('ega-q-bank-modal').style.display = 'none';\n          document.getElementById('ega-preview-modal').style.display = 'none';\n        }\n      });\n\n      if (cmdInput) {\n        cmdInput.addEventListener('input', (e) => {\n          const val = e.target.value.toLowerCase();\n          document.querySelectorAll('.ega-cmd-item').forEach(item => {\n            const text = item.textContent.toLowerCase();\n            item.style.display = text.includes(val) ? 'flex' : 'none';\n          });\n        });\n      }\n\n      document.querySelectorAll('.ega-cmd-item').forEach(item => {\n        item.addEventListener('click', () => {\n          const view = item.dataset.view;\n          if (view) {\n            switchView(view);\n            toggleCmdPalette(false);\n          }\n        });\n      });\n\n      const addQBtn = document.getElementById('ega-open-add-question-modal');\n      if (addQBtn) {\n        addQBtn.addEventListener('click', () => {\n          const text = prompt('Enter Question Text:');\n          if (!text) return;\n          const subject = prompt('Enter Subject:', 'Mathematics');\n          const marks = parseInt(prompt('Enter Marks:', '1'), 10) || 1;\n          const difficulty = prompt('Enter Difficulty (Easy\/Medium\/Hard):', 'Medium');\n          \n          const current = getAppData();\n          current.questions.push({\n            id: 'Q_' + Date.now(),\n            text: text,\n            type: 'Multiple Choice',\n            subject: subject || 'General',\n            difficulty: difficulty || 'Medium',\n            marks: marks\n          });\n          saveAppData(current);\n          logActivity('Question Added', text.slice(0, 20));\n          refreshViewData('questions');\n          alert('Question added successfully!');\n        });\n      }\n\n      const exportJsonBtn = document.getElementById('ega-export-json');\n      if (exportJsonBtn) {\n        exportJsonBtn.addEventListener('click', () => {\n          const dataStr = \"data:text\/json;charset=utf-8,\" + encodeURIComponent(JSON.stringify(getAppData(), null, 2));\n          const dlAnchor = document.createElement('a');\n          dlAnchor.setAttribute(\"href\", dataStr);\n          dlAnchor.setAttribute(\"download\", \"exam_generator_backup.json\");\n          document.body.appendChild(dlAnchor);\n          dlAnchor.click();\n          dlAnchor.remove();\n        });\n      }\n\n      const printPaperBtn = document.getElementById('ega-print-paper');\n      if (printPaperBtn) {\n        printPaperBtn.addEventListener('click', () => {\n          window.print();\n        });\n      }\n\n      const backupBtn = document.getElementById('ega-backup-btn');\n      if (backupBtn) {\n        backupBtn.addEventListener('click', () => {\n          const dataStr = \"data:text\/json;charset=utf-8,\" + encodeURIComponent(JSON.stringify(getAppData(), null, 2));\n          const dlAnchor = document.createElement('a');\n          dlAnchor.setAttribute(\"href\", dataStr);\n          dlAnchor.setAttribute(\"download\", \"exam_generator_full_backup.json\");\n          document.body.appendChild(dlAnchor);\n          dlAnchor.click();\n          dlAnchor.remove();\n        });\n      }\n\n      const restoreBtn = document.getElementById('ega-restore-btn');\n      if (restoreBtn) {\n        restoreBtn.addEventListener('click', () => {\n          const input = document.createElement('input');\n          input.type = 'file';\n          input.accept = '.json';\n          input.onchange = e => {\n            const file = e.target.files[0];\n            if (!file) return;\n            const reader = new FileReader();\n            reader.onload = event => {\n              try {\n                const parsed = JSON.parse(event.target.result);\n                if (parsed && typeof parsed === 'object') {\n                  saveAppData(parsed);\n                  alert('Backup restored successfully! Refreshing...');\n                  window.location.reload();\n                } else {\n                  alert('Invalid backup file.');\n                }\n              } catch(err) {\n                alert('Error parsing backup file.');\n              }\n            };\n            reader.readAsText(file);\n          };\n          input.click();\n        });\n      }\n\n      refreshViewData('all');\n    });\n  })();\n<\/script>\n\n<\/body>\n<\/html>\n","protected":false},"excerpt":{"rendered":"<p>Exam Generator &#038; Paper Management System Exam Generator Dashboard Question Bank Blueprints &#038; Exams Question Papers Paper Templates Generation Engine Paper Editor Export &#038; Print Paper Sets Analytics Intelligence Dashboard + Create Question Paper + Create Template Ctrl+K Backup Restore Production Dashboard Fully integrated examination generator active. + Create Question Paper Template Library Total Questions [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-957","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/pages\/957","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/comments?post=957"}],"version-history":[{"count":9,"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/pages\/957\/revisions"}],"predecessor-version":[{"id":967,"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/pages\/957\/revisions\/967"}],"wp:attachment":[{"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/media?parent=957"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}