{"id":15973,"date":"2026-01-16T21:38:56","date_gmt":"2026-01-16T20:38:56","guid":{"rendered":"https:\/\/eduglobalforge.com\/pastquestions\/?page_id=15973"},"modified":"2026-07-08T22:42:42","modified_gmt":"2026-07-08T21:42:42","slug":"egf-pq-homepage","status":"publish","type":"page","link":"https:\/\/eduglobalforge.com\/pastquestions\/","title":{"rendered":"EGF PQ HOMEPAGE"},"content":{"rendered":"\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin=\"\">\n<title>Eduglobalforge \u2014 Past Questions, Sorted<\/title>\n<style>\n  \/* \u2500\u2500 KILL ALL WORDPRESS THEME CHROME \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n     Hides WP admin bar, theme header, nav, sidebar, footer,\n     and any other theme wrappers injected around this content.\n     Also resets body margin WordPress forces when admin bar shows.\n  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  #wpadminbar,\n  #wpadminbar *                 { display: none !important; }\n  #masthead,\n  #site-header,\n  .site-header,\n  header.site-header,\n  header#masthead,\n  .header-area,\n  .page-header,\n  #header,\n  .site-nav,\n  .nav-primary,\n  #primary-navigation,\n  .navigation-top,\n  nav.main-nav,\n  nav#site-navigation,\n  .main-navigation,\n  #main-navigation,\n  #sidebar,\n  .sidebar,\n  .widget-area,\n  #colophon,\n  .site-footer,\n  footer#colophon,\n  footer.site-footer,\n  #footer,\n  .footer-area,\n  .entry-header,\n  .entry-footer,\n  .post-thumbnail,\n  .breadcrumb,\n  .wp-block-post-title   { display: none !important; }\n\n  \/* Remove WP admin bar body margin *\/\n  html,\n  html body,\n  html.admin-bar,\n  html.admin-bar body     { margin-top: 0 !important; padding-top: 0 !important; }\n\n  \/* Make sure our page fills the screen from the very top *\/\n  #page,\n  #content,\n  #primary,\n  .site,\n  .site-content,\n  .content-area,\n  main#main,\n  main.site-main,\n  .wp-site-blocks,\n  .entry-content,\n  article                 { all: unset; display: block !important; }\n\n  @import url('https:\/\/fonts.googleapis.com\/css2?family=Fraunces:ital,opsz,wght@0,9..144,300;0,9..144,500;0,9..144,600;0,9..144,700;1,9..144,500&family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap');\n\n  :root {\n    --paper: #FFF8EE;\n    --ink: #1A1A1A;\n    --coral: #E8543E;\n    --pine: #2D5C4D;\n    --line: #D4CCC0;\n  }\n\n  * { box-sizing: border-box; }\n  html { scroll-behavior: smooth; }\n\n  \/* \u2500\u2500 HARD WIDTH GUARD \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n     Defends against the WP theme's own container\/grid CSS\n     leaking a fixed\/desktop width onto our content when this\n     block is rendered inside the live theme instead of standalone.\n  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  html, body {\n    width: 100% !important;\n    max-width: 100vw !important;\n    overflow-x: hidden !important;\n  }\n\n  body {\n    margin: 0;\n    position: relative;\n    background-color: var(--paper);\n    background-image: radial-gradient(circle at 1px 1px, rgba(0,0,0,0.045) 1px, transparent 0);\n    background-size: 22px 22px;\n    color: var(--ink);\n    font-family: 'Inter', sans-serif;\n    -webkit-font-smoothing: antialiased;\n    overflow-x: hidden;\n  }\n\n  body.no-scroll { overflow: hidden; }\n\n  \/* soft vignette for depth *\/\n  body::before {\n    content: \"\";\n    position: fixed;\n    inset: 0;\n    pointer-events: none;\n    background: radial-gradient(ellipse at center, transparent 55%, rgba(26,26,26,0.07) 100%);\n    z-index: 1;\n  }\n\n  a { color: inherit; }\n\n  :focus-visible {\n    outline: 2.5px solid var(--coral);\n    outline-offset: 3px;\n  }\n\n  .eyebrow {\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 12px;\n    letter-spacing: 0.18em;\n    text-transform: uppercase;\n    color: var(--pine);\n    margin: 0 0 14px;\n  }\n\n  \/* ---------- minimal brand mark ---------- *\/\n  .brand-mark {\n    position: relative;\n    z-index: 2;\n    text-align: center;\n    padding: 28px 24px 0;\n  }\n\n  .brand-mark .brand-link {\n    font-family: 'Fraunces', serif;\n    font-weight: 600;\n    font-size: 2.6rem;\n    letter-spacing: -0.01em;\n    text-decoration: none;\n  }\n\n  .brand-mark .brand-accent { color: var(--coral); }\n\n  \/* ---------- hero \/ ticket ---------- *\/\n  .hero {\n    position: relative;\n    z-index: 2;\n    padding: 25px 24px 56px;\n    display: flex;\n    justify-content: center;\n  }\n\n  .ticket {\n    position: relative;\n    display: flex;\n    width: 100%;\n    max-width: 760px;\n    background: #fff;\n    border: 1.5px solid var(--ink);\n    border-radius: 20px;\n    box-shadow: 0 3px 0 var(--ink);\n    overflow: visible;\n  }\n\n  .ticket-main {\n    flex: 1;\n    padding: 52px 44px 44px;\n    text-align: center;\n  }\n\n  .ticket-counterfoil {\n    position: relative;\n    width: 132px;\n    flex-shrink: 0;\n    border-left: 1.5px dashed var(--ink);\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: space-between;\n    padding: 28px 0 22px;\n    background: var(--paper);\n  }\n\n  .ticket-counterfoil::before {\n    content: \"\";\n    position: absolute;\n    top: -1px; bottom: -1px; left: -8px;\n    width: 16px;\n    background-image: radial-gradient(circle, var(--paper) 5.5px, transparent 6px);\n    background-size: 16px 22px;\n    background-repeat: repeat-y;\n    background-position: left 8px;\n  }\n\n  .counterfoil-label {\n    font-family: 'Fraunces', serif;\n    font-weight: 600;\n    font-size: 13px;\n    letter-spacing: 0.06em;\n    text-align: center;\n    line-height: 1.3;\n    color: var(--ink);\n  }\n\n  .barcode {\n    width: 26px;\n    height: 90px;\n    background-image: repeating-linear-gradient(\n      90deg,\n      var(--ink) 0px, var(--ink) 2px,\n      transparent 2px, transparent 4px,\n      var(--ink) 4px, var(--ink) 5px,\n      transparent 5px, transparent 8px,\n      var(--ink) 8px, var(--ink) 9px,\n      transparent 9px, transparent 12px\n    );\n    background-size: 100% 100%;\n    transform: rotate(90deg);\n  }\n\n  .counterfoil-code {\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 9.5px;\n    letter-spacing: 0.08em;\n    color: #8c8579;\n    writing-mode: vertical-rl;\n    text-orientation: mixed;\n  }\n\n  .stamp {\n    display: inline-block;\n    transform: rotate(-6deg);\n    border: 1.5px solid var(--coral);\n    color: var(--coral);\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 11px;\n    letter-spacing: 0.12em;\n    font-weight: 500;\n    padding: 5px 12px;\n    border-radius: 999px;\n    margin-bottom: 22px;\n  }\n\n  .hero-title {\n    font-family: 'Fraunces', serif;\n    font-weight: 600;\n    font-size: clamp(2.2rem, 6vw, 3.1rem);\n    line-height: 1.08;\n    letter-spacing: -0.01em;\n    margin: 0 0 16px;\n  }\n\n  .hero-title em,\n  .modal-view em {\n    font-style: italic;\n    font-weight: 500;\n    background: linear-gradient(90deg, var(--coral) 0%, #f08a76 50%, var(--coral) 100%);\n    background-size: 200% auto;\n    -webkit-background-clip: text;\n    background-clip: text;\n    -webkit-text-fill-color: transparent;\n    animation: shimmer 3.5s linear infinite;\n  }\n\n  .hero-sub {\n    font-size: 15.5px;\n    line-height: 1.65;\n    color: #565049;\n    max-width: 440px;\n    margin: 0 auto 32px;\n  }\n\n  .typewriter-line {\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 13px;\n    letter-spacing: 0.02em;\n    color: var(--pine);\n    margin: 0 0 28px;\n    min-height: 18px;\n  }\n\n  .typewriter-line .caret {\n    color: var(--coral);\n    animation: caretBlink 0.9s step-end infinite;\n  }\n\n  @keyframes caretBlink {\n    0%, 50% { opacity: 1; }\n    50.01%, 100% { opacity: 0; }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .typewriter-line .caret { animation: none; }\n  }\n\n  .hero-divider {\n    border: none;\n    border-top: 1.5px dashed var(--line);\n    margin: 0 0 30px;\n  }\n\n  .hero-actions {\n    display: flex;\n    flex-direction: column;\n    gap: 12px;\n  }\n\n  .btn {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 8px;\n    width: 100%;\n    max-width: 100%;\n    background: var(--ink);\n    color: var(--paper);\n    border: 1.5px solid var(--ink);\n    border-radius: 10px;\n    padding: 15px 20px;\n    font-family: 'Inter', sans-serif;\n    font-weight: 600;\n    font-size: 15px;\n    letter-spacing: 0.01em;\n    text-decoration: none;\n    cursor: pointer;\n    text-align: center;\n    white-space: normal;\n    word-break: break-word;\n    line-height: 1.3;\n    transition: background 0.15s ease, color .15s ease, transform 0.15s ease, box-shadow 0.2s ease;\n  }\n\n  .btn:hover {\n    background: var(--coral);\n    border-color: var(--coral);\n    transform: translateY(-2px);\n    box-shadow: 0 4px 0 var(--ink);\n  }\n\n  .btn:active { transform: scale(0.98); }\n\n  .btn-ghost {\n    background: transparent;\n    color: var(--ink);\n  }\n\n  .btn-ghost:hover {\n    background: var(--ink);\n    border-color: var(--ink);\n    color: var(--paper);\n    box-shadow: 0 4px 0 var(--coral);\n  }\n\n  \/* ---------- path section ---------- *\/\n  .section {\n    position: relative;\n    z-index: 2;\n    max-width: 1040px;\n    margin: 0 auto;\n    padding: 16px 24px 24px;\n  }\n\n  .path-heading {\n    text-align: center;\n    margin-bottom: 38px;\n  }\n\n  .path-heading h2 {\n    font-family: 'Fraunces', serif;\n    font-weight: 600;\n    font-size: clamp(1.6rem, 4vw, 2.1rem);\n    margin: 6px 0 0;\n  }\n\n  .path-grid {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: 22px;\n  }\n\n  .path-card {\n    position: relative;\n    background: #fff;\n    border: 1.5px solid var(--ink);\n    border-radius: 16px;\n    padding: 30px 26px 28px;\n    text-align: left;\n    box-shadow: 0 3px 0 var(--ink);\n    transition: transform 0.2s ease, box-shadow 0.2s ease;\n    scroll-margin-top: 32px;\n  }\n\n  .path-card::before {\n    content: \"\";\n    position: absolute;\n    top: -1px; left: 0; right: 0;\n    height: 14px;\n    background-image: radial-gradient(circle, var(--paper) 4.5px, transparent 5px);\n    background-size: 18px 14px;\n    background-repeat: repeat-x;\n    background-position: 6px top;\n  }\n\n  .path-card:hover {\n    transform: translateY(-4px);\n    box-shadow: 0 7px 0 var(--ink);\n  }\n\n  .path-card h3 {\n    font-family: 'Fraunces', serif;\n    font-weight: 600;\n    font-size: 1.5rem;\n    margin: 0 0 10px;\n  }\n\n  .path-card p {\n    font-size: 14px;\n    line-height: 1.65;\n    color: #565049;\n    margin: 0 0 22px;\n  }\n\n  .path-card .btn { font-size: 14px; padding: 13px 18px; }\n\n  @keyframes cardPulse {\n    0%, 100% { box-shadow: 0 3px 0 var(--ink); }\n    50% { box-shadow: 0 0 0 5px rgba(232,84,62,0.32), 0 3px 0 var(--ink); }\n  }\n\n  .path-card.pulse { animation: cardPulse 1s ease; }\n\n  \/* ---------- trust strip ---------- *\/\n  .trust-strip {\n    position: relative;\n    z-index: 2;\n    border-top: 1.5px dashed var(--line);\n    border-bottom: 1.5px dashed var(--line);\n    padding: 8px 24px;\n    text-align: center;\n  }\n\n  .trust-strip p {\n    margin: 0;\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 12px;\n    letter-spacing: 0.08em;\n    color: var(--pine);\n    text-transform: uppercase;\n  }\n\n  \/* ---------- footer ---------- *\/\n  .egf-site-footer {\n    position: relative;\n    z-index: 2;\n    text-align: center;\n    padding: 16px 24px 16px;}\n\n  .egf-site-footer .brand-mark { padding: 0; }\n\n  .footer-tagline {\n    font-size: 13px;\n    color: #8c8579;\n    max-width: 360px;\n    margin: 10px auto 0;\n    line-height: 1.6;\n  }\n\n  .footnote {\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 10.5px;\n    letter-spacing: 0.04em;\n    color: #b4ada0;\n    margin: 18px 0 0;\n  }\n\n  \/* ---------- modal ---------- *\/\n  .modal-backdrop {\n    position: fixed;\n    inset: 0;\n    background: rgba(26,26,26,0.55);\n    display: none;\n    align-items: center;\n    justify-content: center;\n    padding: 24px;\n    z-index: 200;\n  }\n\n  .modal-backdrop.open { display: flex; }\n\n  .modal-stub {\n    position: relative;\n    background: #fff;\n    width: 100%;\n    max-width: 440px;\n    max-height: 88vh;\n    overflow: visible;\n    border: 1.5px solid var(--ink);\n    border-radius: 18px;\n    box-shadow: 0 3px 0 var(--ink);\n    text-align: center;\n    animation: rise 0.32s cubic-bezier(0.16,1,0.3,1) both;\n  }\n\n  .modal-stub-inner {\n    max-height: 88vh;\n    overflow-y: auto;\n    padding: 46px 32px 36px;\n    border-radius: 18px;\n  }\n\n  .modal-stub::before,\n  .modal-stub::after {\n    content: \"\";\n    position: absolute;\n    left: 0; right: 0;\n    height: 16px;\n    background-image: radial-gradient(circle, var(--paper) 5px, transparent 5.5px);\n    background-size: 20px 16px;\n    background-repeat: repeat-x;\n    background-position: 6px top;\n  }\n\n  .modal-stub::before { top: -1px; }\n  .modal-stub::after { bottom: -1px; transform: scaleY(-1); }\n\n  .modal-close {\n    position: absolute;\n    top: 14px;\n    right: 14px;\n    width: 32px;\n    height: 32px;\n    border-radius: 50%;\n    border: 1.5px solid var(--ink);\n    background: #fff;\n    font-size: 17px;\n    line-height: 1;\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    color: var(--ink);\n    transition: background 0.15s, color 0.15s;\n  }\n\n  .modal-close:hover { background: var(--ink); color: var(--paper); }\n\n  .modal-title {\n    font-family: 'Fraunces', serif;\n    font-weight: 600;\n    font-size: 1.4rem;\n    line-height: 1.25;\n    margin: 0 0 24px;\n  }\n\n  .modal-options {\n    display: flex;\n    flex-direction: column;\n    gap: 12px;\n  }\n\n  .modal-option {\n    width: 100%;\n    text-align: left;\n    background: var(--paper);\n    border: 1.5px solid var(--ink);\n    border-radius: 10px;\n    padding: 14px 16px;\n    font-family: 'Inter', sans-serif;\n    font-weight: 600;\n    font-size: 14px;\n    color: var(--ink);\n    cursor: pointer;\n    transition: background 0.15s, transform 0.15s, box-shadow 0.15s, border-color .15s;\nwhite-space: normal;\nword-break: break-word;\noverflow-wrap: break-word;\n  }\n\n  .modal-option:hover {\n    background: #fff;\n    border-color: var(--coral);\n    box-shadow: 0 3px 0 var(--coral);\n    transform: translateY(-2px);\n  }\n\n  .modal-sub {\n    font-size: 14.5px;\n    line-height: 1.65;\n    color: #565049;\n    max-width: 340px;\n    margin: 0 auto 14px;\n  }\n\n  .modal-back {\n    background: none;\n    border: none;\n    color: var(--pine);\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 12px;\n    letter-spacing: 0.05em;\n    text-transform: uppercase;\n    cursor: pointer;\n    padding: 6px 0;\n  }\n\n  .modal-back:hover { color: var(--coral); }\n\n  [hidden] { display: none !important; }\n\n  \/* ---------- soon modal: notify me reveal ---------- *\/\n  .modal-notify-toggle {\n    display: inline-flex;\n    align-items: center;\n    gap: 6px;\n    margin-top: 10px;\n    background: var(--coral);\n    border: 1.5px solid var(--coral);\n    border-radius: 999px;\n    padding: 9px 20px;\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 11.5px;\n    font-weight: 500;\n    letter-spacing: 0.08em;\n    text-transform: uppercase;\n    color: #fff;\n    cursor: pointer;\n    transition: background 0.15s, color 0.15s, border-color 0.15s, transform 0.15s;\n  }\n\n  .modal-notify-toggle:hover {\n    background: #d4402a;\n    border-color: #d4402a;\n    transform: translateY(-1px);\n  }\n\n  .modal-notify-toggle .toggle-arrow {\n    display: inline-block;\n    transition: transform 0.3s cubic-bezier(0.16,1,0.3,1);\n  }\n\n  .modal-notify-toggle.open .toggle-arrow {\n    transform: rotate(90deg);\n  }\n\n  .modal-notify-form {\n    overflow: hidden;\n    max-height: 0;\n    opacity: 0;\n    transition: max-height 0.4s cubic-bezier(0.16,1,0.3,1),\n                opacity 0.3s ease;\n    margin-top: 0;\n  }\n\n  .modal-notify-form.open {\n    max-height: 500px;\n    opacity: 1;\n    margin-top: 18px;\n  }\n\n  .modal-notify-form .soon-form-label {\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 10.5px;\n    letter-spacing: 0.1em;\n    text-transform: uppercase;\n    color: var(--ink);\n    margin-bottom: 10px;\n    display: block;\n    text-align: left;\n  }\n\n  \/* Fluent Forms fields inside modal *\/\n  .modal-notify-form .ff-el-form-control {\n    border: 1.5px solid var(--ink) !important;\n    border-radius: 8px !important;\n    padding: 11px 14px !important;\n    font-family: 'Inter', sans-serif !important;\n    font-size: 14px !important;\n    background: var(--paper) !important;\n    width: 100% !important;\n  }\n\n  .modal-notify-form .ff-el-form-control:focus {\n    outline: none !important;\n    border-color: var(--coral) !important;\n    box-shadow: 0 0 0 3px rgba(232,84,62,0.12) !important;\n  }\n\n  .modal-notify-form .ff-el-group,\n  .modal-notify-form .ff-el-input--label,\n  .modal-notify-form .ff-el-input--label label,\n  .modal-notify-form label {\n    text-align: left !important;\n    font-size: 12px !important;\n    margin-bottom: 4px !important;\n  }\n\n  \/* intl-tel-input (phone flag) *\/\n  .modal-notify-form .iti {\n    width: 100% !important;\n    display: block !important;\n  }\n\n  .modal-notify-form .iti input.ff-el-phone {\n    padding-left: 56px !important;\n  }\n\n  .modal-notify-form .iti__flag-container,\n  .modal-notify-form .iti__selected-flag {\n    z-index: 5;\n  }\n\n  \/* Submit button *\/\n  .modal-notify-form .ff-btn-submit,\n  .modal-notify-form button[type=\"submit\"] {\n    position: relative !important;\n    width: 100% !important;\n    background: var(--ink) !important;\n    color: var(--paper) !important;\n    border: none !important;\n    border-radius: 8px !important;\n    padding: 12px 18px !important;\n    font-family: 'Inter', sans-serif !important;\n    font-weight: 600 !important;\n    font-size: 14px !important;\n    cursor: pointer;\n    transition: background 0.15s ease, transform 0.1s ease;\n    margin-top: 4px !important;\n  }\n\n  .modal-notify-form .ff-btn-submit:hover,\n  .modal-notify-form button[type=\"submit\"]:hover {\n    background: var(--coral) !important;\n    transform: translateY(-1px);\n  }\n\n  \/* FluentForm's own AJAX loader\/spinner sometimes ships without its\n     default plugin CSS in this template (since theme assets are\n     stripped). Force it hidden unless FluentForm itself marks the\n     button as actively submitting, so it never sits visibly on top\n     of the button label. *\/\n  .modal-notify-form .ff-btn-submit .ff-btn-loader,\n  .modal-notify-form button[type=\"submit\"] .ff-btn-loader,\n  .modal-notify-form .ff-btn-submit [class*=\"-loader\"],\n  .modal-notify-form button[type=\"submit\"] [class*=\"-loader\"],\n  .modal-notify-form .ff-btn-submit [class*=\"loader-\"],\n  .modal-notify-form button[type=\"submit\"] [class*=\"loader-\"] {\n    display: none !important;\n  }\n  .modal-notify-form .ff-btn-submit.ff_submitting [class*=\"loader\"],\n  .modal-notify-form button[type=\"submit\"].ff_submitting [class*=\"loader\"],\n  .modal-notify-form .ff-btn-submit.is-submitting [class*=\"loader\"],\n  .modal-notify-form button[type=\"submit\"].is-submitting [class*=\"loader\"] {\n    display: inline-flex !important;\n    position: static !important;\n  }\n\n  \/* Once expanded, fade the arrow icon's rotation already signals\n     state \u2014 keep the toggle visible and tappable so the form can\n     still be collapsed without using \"Choose another option\". *\/\n\n  .modal-notify-footnote {\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 10px;\n    color: #8c8579;\n    margin-top: 12px;\n    letter-spacing: 0.03em;\n    text-align: center;\n  }\n\n  \/* ---------- ambient floating orbs (3D depth) ---------- *\/\n  .orb-field {\n    position: fixed;\n    inset: 0;\n    z-index: 0;\n    overflow: hidden;\n    pointer-events: none;\n  }\n\n  .orb {\n    position: absolute;\n    border-radius: 50%;\n    filter: blur(38px);\n    opacity: 0.45;\n    transition: transform 0.35s cubic-bezier(0.16,1,0.3,1);\n    will-change: transform;\n  }\n\n  .orb-1 {\n    width: 360px; height: 360px;\n    top: -120px; left: -80px;\n    background: radial-gradient(circle, rgba(232,84,62,0.35), transparent 70%);\n    animation: drift1 14s ease-in-out infinite;\n  }\n\n  .orb-2 {\n    width: 280px; height: 280px;\n    top: 30%; right: -100px;\n    background: radial-gradient(circle, rgba(45,92,77,0.32), transparent 70%);\n    animation: drift2 18s ease-in-out infinite;\n  }\n\n  .orb-3 {\n    width: 320px; height: 320px;\n    bottom: -140px; left: 38%;\n    background: radial-gradient(circle, rgba(232,84,62,0.22), transparent 70%);\n    animation: drift3 20s ease-in-out infinite;\n  }\n\n  @keyframes drift1 {\n    0%, 100% { transform: translate(0, 0) scale(1); }\n    50% { transform: translate(40px, 60px) scale(1.08); }\n  }\n  @keyframes drift2 {\n    0%, 100% { transform: translate(0, 0) scale(1); }\n    50% { transform: translate(-50px, 30px) scale(1.1); }\n  }\n  @keyframes drift3 {\n    0%, 100% { transform: translate(0, 0) scale(1); }\n    50% { transform: translate(30px, -40px) scale(1.05); }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .orb { animation: none; }\n  }\n\n  \/* ---------- continuously drifting particles ---------- *\/\n  .particle {\n    position: absolute;\n    width: 6px;\n    height: 6px;\n    border-radius: 50%;\n    background: var(--coral);\n    opacity: 0.5;\n  }\n\n  .p1 { top: 18%; left: 12%; animation: floaty1 9s ease-in-out infinite; }\n  .p2 { top: 62%; left: 8%;  background: var(--pine); animation: floaty2 11s ease-in-out infinite; }\n  .p3 { top: 12%; left: 82%; animation: floaty3 8s ease-in-out infinite; }\n  .p4 { top: 48%; left: 90%; background: var(--pine); animation: floaty1 13s ease-in-out infinite; }\n  .p5 { top: 80%; left: 70%; animation: floaty2 10s ease-in-out infinite; }\n  .p6 { top: 30%; left: 50%; background: var(--pine); animation: floaty3 12s ease-in-out infinite; opacity: 0.32; }\n\n  @keyframes floaty1 {\n    0%, 100% { transform: translate(0,0); opacity: 0.5; }\n    50% { transform: translate(14px,-26px); opacity: 0.85; }\n  }\n  @keyframes floaty2 {\n    0%, 100% { transform: translate(0,0); opacity: 0.4; }\n    50% { transform: translate(-18px,18px); opacity: 0.7; }\n  }\n  @keyframes floaty3 {\n    0%, 100% { transform: translate(0,0) scale(1); opacity: 0.45; }\n    50% { transform: translate(10px,22px) scale(1.4); opacity: 0.8; }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .particle { animation: none; }\n  }\n\n  \/* ---------- perpetual stamp pulse + ticket shimmer sweep ---------- *\/\n  .stamp {\n    animation: pop 0.5s cubic-bezier(0.34,1.56,0.64,1) 0.35s both, stampPulse 2.6s ease-in-out 1.2s infinite;\n  }\n\n  @keyframes stampPulse {\n    0%, 100% { transform: rotate(-6deg) scale(1); }\n    50% { transform: rotate(-6deg) scale(1.06); }\n  }\n\n  .ticket { position: relative; }\n\n  .ticket-main { overflow: hidden; border-radius: 20px 0 0 20px; }\n\n  .ticket::after {\n    content: \"\";\n    position: absolute;\n    top: 0; bottom: 0; left: -60%;\n    width: 40%;\n    background: linear-gradient(100deg, transparent, rgba(255,255,255,0.55), transparent);\n    transform: skewX(-12deg);\n    animation: sweep 5.5s ease-in-out infinite;\n    pointer-events: none;\n    z-index: 1;\n  }\n\n  @keyframes sweep {\n    0% { left: -60%; }\n    35% { left: 130%; }\n    100% { left: 130%; }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .stamp { animation: none; }\n    .ticket::after { animation: none; display: none; }\n  }\n\n  \/* ---------- 3D tilt surfaces ---------- *\/\n  [data-tilt] {\n    transform-style: preserve-3d;\n    will-change: transform;\n    transition: transform 0.25s cubic-bezier(0.16,1,0.3,1), box-shadow 0.25s ease;\n    position: relative;\n  }\n\n  [data-tilt]::after {\n    content: \"\";\n    position: absolute;\n    inset: 0;\n    border-radius: inherit;\n    background: radial-gradient(circle at var(--glow-x, 50%) var(--glow-y, 50%), rgba(232,84,62,0.16), transparent 60%);\n    opacity: 0;\n    transition: opacity 0.25s ease;\n    pointer-events: none;\n    z-index: 3;\n  }\n\n  [data-tilt]:hover::after { opacity: 1; }\n\n  .btn {\n    transition: background 0.15s ease, color .15s ease, transform 0.12s ease, box-shadow 0.2s ease;\n  }\n\n  \/* ---------- scroll reveal ---------- *\/\n  .path-card,\n  .trust-strip,\n  .egf-site-footer {\n    opacity: 1;\n    transform: translateY(0);\n    transition: opacity 0.7s cubic-bezier(0.16,1,0.3,1), transform 0.7s cubic-bezier(0.16,1,0.3,1);\n  }\n\n  .path-card.reveal-pending,\n  .trust-strip.reveal-pending,\n  .egf-site-footer.reveal-pending {\n    opacity: 0;\n    transform: translateY(28px);\n  }\n\n  .path-card.in-view,\n  .trust-strip.in-view,\n  .egf-site-footer.in-view {\n    opacity: 1;\n    transform: translateY(0);\n  }\n\n  .path-card:nth-child(2) { transition-delay: 0.08s; }\n  .path-card:nth-child(3) { transition-delay: 0.16s; }\n\n  @media (prefers-reduced-motion: reduce) {\n    .path-card, .trust-strip, .egf-site-footer {\n      opacity: 1;\n      transform: none;\n      transition: none;\n    }\n  }\n\n  \/* ---------- responsive ---------- *\/\n  @media (max-width: 720px) {\n    .path-grid { grid-template-columns: 1fr; }\n\n    .ticket { flex-direction: column; }\n\n    .ticket-main { padding: 44px 28px 32px; }\n\n    .ticket-counterfoil {\n      width: 100%;\n      flex-direction: row;\n      justify-content: space-between;\n      padding: 16px 28px;\n      border-left: none;\n      border-top: 1.5px dashed var(--ink);\n    }\n\n    .ticket-counterfoil::before {\n      top: -8px; left: 0; right: 0; bottom: auto;\n      width: auto; height: 16px;\n      background-size: 22px 16px;\n      background-position: 8px top;\n      background-repeat: repeat-x;\n    }\n\n    .barcode { transform: none; width: 70px; height: 26px; }\n    .counterfoil-code { writing-mode: horizontal-tb; }\n  }\n\n  \/* ---------- entrance + ambient motion ---------- *\/\n  @media (prefers-reduced-motion: no-preference) {\n    .ticket { animation: rise 0.6s cubic-bezier(0.16,1,0.3,1) both; }\n    .stamp { opacity: 0; animation: pop 0.5s cubic-bezier(0.34,1.56,0.64,1) 0.35s both, stampPulse 2.6s ease-in-out 1.2s infinite; }\n    .eyebrow { opacity: 0; animation: fade-up 0.5s ease 0.5s both; }\n    .hero-title { opacity: 0; animation: fade-up 0.55s ease 0.62s both; }\n    .hero-sub { opacity: 0; animation: fade-up 0.5s ease 0.74s both; }\n    .hero-divider { transform: scaleX(0); animation: grow-line 0.5s ease 0.86s both; }\n    .hero-actions { opacity: 0; animation: fade-up 0.5s ease 0.95s both; }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .modal-stub { animation: none; }\n  }\n\n  @keyframes rise { from { opacity: 0; transform: translateY(18px) scale(0.98); } to { opacity: 1; transform: translateY(0) scale(1); } }\n  @keyframes float { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-6px); } }\n  @keyframes pop { from { opacity: 0; transform: rotate(-6deg) scale(0.6); } to { opacity: 1; transform: rotate(-6deg) scale(1); } }\n  @keyframes fade-up { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }\n  @keyframes grow-line { from { transform: scaleX(0); } to { transform: scaleX(1); } }\n  \/* \u2500\u2500 WORDPRESS ADMIN BAR OFFSET \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n     When logged in as admin, WP adds #wpadminbar (32px desktop,\n     46px mobile). Push the whole page down so it doesn't overlap.\n  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  body.admin-bar {\n    margin-top: 32px !important;\n  }\n  @media screen and (max-width: 782px) {\n    body.admin-bar {\n      margin-top: 46px !important;\n    }\n  }\n  \/* body margin-top above already pushes the whole page down;\n     .brand-mark is position:relative (not fixed), so no extra\n     top offset is needed or wanted here. *\/\n\n  @keyframes shimmer { 0% { background-position: 0% center; } 100% { background-position: 200% center; } }\n\n  \/* \u2500\u2500 BRAND MARK GLOW \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n     Mid-level cycling glow: coral \u2192 gold \u2192 violet \u2192 pine\n     Not too intense \u2014 just enough to feel alive\n  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  .brand-mark .brand-link {\n    background: linear-gradient(\n      90deg,\n      #E8543E, #F0A500, #8B5CF6, #2D5C4D, #E8543E, #F0A500, #8B5CF6, #2D5C4D\n    );\n    background-size: 400% auto;\n    -webkit-background-clip: text;\n    background-clip: text;\n    -webkit-text-fill-color: transparent;\n    animation: brandGlow 7s linear infinite;\n  }\n\n  @keyframes brandGlow {\n    0%   { background-position: 0%   center; filter: drop-shadow(0 0 5px rgba(232,84,62,0.4)); }\n    25%  { background-position: 33%  center; filter: drop-shadow(0 0 6px rgba(240,165,0,0.4)); }\n    50%  { background-position: 66%  center; filter: drop-shadow(0 0 6px rgba(139,92,246,0.38)); }\n    75%  { background-position: 100% center; filter: drop-shadow(0 0 5px rgba(45,92,77,0.38)); }\n    100% { background-position: 133% center; filter: drop-shadow(0 0 5px rgba(232,84,62,0.4)); }\n  }\n\n  \/* Footer brand \u2014 same glow, slightly smaller *\/\n  .egf-site-footer .brand-mark .brand-link {\n    font-size: 1.7rem;\n    animation: brandGlow 9s linear infinite;\n  }\n\n  \/* Reduced motion: plain ink text, no glow *\/\n  @media (prefers-reduced-motion: reduce) {\n    .brand-mark .brand-link,\n    .egf-site-footer .brand-mark .brand-link {\n      background: none;\n      -webkit-text-fill-color: var(--ink);\n      animation: none;\n      filter: none;\n    }\n    .brand-mark .brand-accent {\n      -webkit-text-fill-color: var(--coral);\n    }\n  }\n\n  \/* \u2500\u2500 HERO: 3 DISTINCT COLOURED BUTTONS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n\n  \/* Button 1 \u2014 Deep ink (Browse Past Questions) *\/\n  .btn-browse {\n    background: var(--ink);\n    color: #fff;\n    border-color: var(--ink);\n  }\n  .btn-browse:hover {\n    background: #2e2e2e;\n    border-color: #2e2e2e;\n    box-shadow: 0 4px 0 var(--coral);\n    color: #fff;\n  }\n\n  \/* Button 2 \u2014 Coral (Take Exam Quiz) *\/\n  .btn-quiz {\n    background: var(--coral);\n    color: #fff;\n    border-color: var(--coral);\n  }\n  .btn-quiz:hover {\n    background: #d4402a;\n    border-color: #d4402a;\n    box-shadow: 0 4px 0 var(--ink);\n    color: #fff;\n  }\n\n  \/* Button 3 \u2014 Pine green (Download Materials) *\/\n  .btn-materials {\n    background: var(--pine);\n    color: #fff;\n    border-color: var(--pine);\n  }\n  .btn-materials:hover {\n    background: #1e4035;\n    border-color: #1e4035;\n    box-shadow: 0 4px 0 var(--ink);\n    color: #fff;\n  }\n\n  \/* \u2500\u2500 MODAL: 3 DISTINCT COLOURED OPTION BUTTONS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  .modal-opt-1 {\n    background: #FFF0ED;\n    border-color: var(--coral);\n    color: #b83220;\n  }\n  .modal-opt-1:hover {\n    background: var(--coral);\n    border-color: var(--coral);\n    color: #fff;\n    box-shadow: 0 3px 0 #922818;\n    transform: translateY(-2px);\n  }\n\n  .modal-opt-2 {\n    background: #EDF4F1;\n    border-color: var(--pine);\n    color: #1e4035;\n  }\n  .modal-opt-2:hover {\n    background: var(--pine);\n    border-color: var(--pine);\n    color: #fff;\n    box-shadow: 0 3px 0 #1e4035;\n    transform: translateY(-2px);\n  }\n\n  .modal-opt-3 {\n    background: #F0EEF8;\n    border-color: #6B5CE7;\n    color: #4530b8;\n  }\n  .modal-opt-3:hover {\n    background: #6B5CE7;\n    border-color: #6B5CE7;\n    color: #fff;\n    box-shadow: 0 3px 0 #4530b8;\n    transform: translateY(-2px);\n  }\n\n  \/* \u2500\u2500 MOBILE TICKET FIX \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  @media (max-width: 720px) {\n    .ticket-main { border-radius: 18px 18px 0 0; }\n    .ticket-counterfoil { border-radius: 0 0 18px 18px; overflow: hidden; }\n  }\n\n#egf-qa-spacer {\n  display: none !important;\n  height: 0 !important;\n  margin: 0 !important;\n  padding: 0 !important;\n}\n#egf-site-footer { padding-bottom: max(5px, env(safe-area-inset-bottom, 5px)) !important; }\n\n  \/* \u2500\u2500 EKSU PREMIUM SKELETON LOADER \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n     Full-page loading skeleton shown while the real content (fonts +\n     animations) is still settling in. Mirrors the ticket-stub hero +\n     three path-card layout so there is zero layout shift when the\n     real content swaps in. Fades out and unmounts itself once the\n     page is ready; everything underneath is untouched.\n  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  #egfSkeleton {\n    position: fixed;\n    inset: 0;\n    z-index: 999999;\n    background: var(--paper);\n    overflow-y: auto;\n    padding: 130px 24px 56px;\n    opacity: 1;\n    transition: opacity 0.5s cubic-bezier(0.4, 0, 0.2, 1);\n  }\n\n  #egfSkeleton.eksu-skeleton-hidden {\n    opacity: 0;\n    pointer-events: none;\n  }\n\n  \/* Base shimmer surface \u2014 a soft, low-contrast sweep in warm paper\n     tones so it reads as \"loading\", not as gray placeholder boxes. *\/\n  .eksu-skeleton-block {\n    position: relative;\n    overflow: hidden;\n    background: #EFE7D8;\n    border-radius: 10px;\n    isolation: isolate;\n  }\n\n  .eksu-skeleton-block::after {\n    content: \"\";\n    position: absolute;\n    inset: 0;\n    transform: translateX(-100%);\n    background: linear-gradient(\n      90deg,\n      rgba(239, 231, 216, 0) 0%,\n      rgba(255, 255, 255, 0.75) 50%,\n      rgba(239, 231, 216, 0) 100%\n    );\n    animation: eksuShimmer 1.6s ease-in-out infinite;\n    will-change: transform;\n  }\n\n  @keyframes eksuShimmer {\n    100% { transform: translateX(100%); }\n  }\n\n  \/* Soft entrance so the whole skeleton doesn't just pop in *\/\n  .eksu-skeleton-fade-in {\n    animation: eksuFadeIn 0.4s ease both;\n  }\n\n  @keyframes eksuFadeIn {\n    from { opacity: 0; transform: translateY(6px); }\n    to   { opacity: 1; transform: translateY(0); }\n  }\n\n  .eksu-skeleton-brand {\n    width: 200px;\n    height: 30px;\n    margin: 0 auto 36px;\n    border-radius: 8px;\n  }\n\n  \/* Ticket-stub hero shell \u2014 same border\/shadow language as .ticket\n     so the swap-in from skeleton to real hero is seamless. *\/\n  .eksu-skeleton-ticket {\n    max-width: 760px;\n    margin: 0 auto 40px;\n    border: 1.5px solid var(--ink);\n    border-radius: 20px;\n    box-shadow: 0 3px 0 var(--ink);\n    padding: 44px 32px;\n    background: #fff;\n  }\n\n  .eksu-skeleton-stamp {\n    width: 160px;\n    height: 26px;\n    border-radius: 999px;\n    margin: 0 auto 22px;\n  }\n\n  .eksu-skeleton-eyebrow {\n    width: 210px;\n    height: 12px;\n    margin: 0 auto 18px;\n    border-radius: 6px;\n  }\n\n  .eksu-skeleton-title-line {\n    height: 30px;\n    border-radius: 8px;\n    margin: 0 auto 12px;\n  }\n\n  .eksu-skeleton-title-line.w1 { width: 72%; }\n  .eksu-skeleton-title-line.w2 { width: 48%; margin-bottom: 24px; }\n\n  .eksu-skeleton-text-line {\n    height: 12px;\n    margin: 0 auto 10px;\n    border-radius: 6px;\n  }\n\n  .eksu-skeleton-text-line.w1 { width: 90%; }\n  .eksu-skeleton-text-line.w2 { width: 78%; }\n  .eksu-skeleton-text-line.w3 { width: 58%; margin-bottom: 28px; }\n\n  .eksu-skeleton-btn {\n    height: 48px;\n    border-radius: 10px;\n    margin-bottom: 12px;\n  }\n\n  .eksu-skeleton-cards {\n    max-width: 1040px;\n    margin: 0 auto 36px;\n    display: grid;\n    grid-template-columns: 1fr;\n    gap: 18px;\n  }\n\n  \/* Path-card shell \u2014 mirrors .path-card's border\/shadow so cards\n     don't jump in size or position once real content appears. *\/\n  .eksu-skeleton-card {\n    border: 1.5px solid var(--ink);\n    border-radius: 16px;\n    box-shadow: 0 3px 0 var(--ink);\n    padding: 26px 22px;\n    background: #fff;\n  }\n\n  .eksu-skeleton-card .eksu-skeleton-eyebrow { margin: 0 0 14px; }\n\n  .eksu-skeleton-card-title {\n    width: 60%;\n    height: 22px;\n    border-radius: 6px;\n    margin-bottom: 14px;\n  }\n\n  .eksu-skeleton-card .eksu-skeleton-text-line { margin: 0 0 8px; }\n  .eksu-skeleton-card .eksu-skeleton-text-line.w1 { width: 100%; }\n  .eksu-skeleton-card .eksu-skeleton-text-line.w2 { width: 85%; margin-bottom: 18px; }\n\n  .eksu-skeleton-card .eksu-skeleton-btn { margin-bottom: 0; }\n\n  .eksu-skeleton-strip {\n    max-width: 480px;\n    height: 14px;\n    margin: 0 auto;\n    border-radius: 6px;\n  }\n\n  @media (min-width: 760px) {\n    .eksu-skeleton-cards { grid-template-columns: repeat(3, 1fr); }\n  }\n\n  @media (max-width: 600px) {\n    #egfSkeleton { padding-top: 110px; }\n    .eksu-skeleton-ticket { padding: 32px 22px; }\n    .eksu-skeleton-card { padding: 22px 18px; }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .eksu-skeleton-block::after { animation: none; }\n    .eksu-skeleton-fade-in { animation: none; }\n    #egfSkeleton { transition: none; }\n  }\n<\/style>\n\n\n\n  <!-- ===== eksu-skeleton: premium loading skeleton (built via JS, not raw HTML,\n       so WordPress's save pipeline can't strip\/mangle the nested markup) ===== -->\n  <script>\n    (function () {\n      \/* Build the skeleton entirely in JS and inject it as the very first\n         thing in <body>. Doing it this way means there is no large block\n         of raw nested <div> markup sitting in the saved page content for\n         anything upstream (block editor \/ save sanitizer) to corrupt \u2014\n         only this script, and scripts have been surviving intact. *\/\n      var html =\n        '<div class=\"eksu-skeleton-block eksu-skeleton-brand eksu-skeleton-fade-in\"><\/div>' +\n        '<div class=\"eksu-skeleton-ticket eksu-skeleton-fade-in\" style=\"animation-delay:0.05s;\">' +\n          '<div class=\"eksu-skeleton-block eksu-skeleton-stamp\"><\/div>' +\n          '<div class=\"eksu-skeleton-block eksu-skeleton-eyebrow\" style=\"margin-left:auto;margin-right:auto;\"><\/div>' +\n          '<div class=\"eksu-skeleton-block eksu-skeleton-title-line w1\"><\/div>' +\n          '<div class=\"eksu-skeleton-block eksu-skeleton-title-line w2\"><\/div>' +\n          '<div class=\"eksu-skeleton-block eksu-skeleton-text-line w1\"><\/div>' +\n          '<div class=\"eksu-skeleton-block eksu-skeleton-text-line w2\"><\/div>' +\n          '<div class=\"eksu-skeleton-block eksu-skeleton-text-line w3\"><\/div>' +\n          '<div class=\"eksu-skeleton-block eksu-skeleton-btn\"><\/div>' +\n          '<div class=\"eksu-skeleton-block eksu-skeleton-btn\"><\/div>' +\n          '<div class=\"eksu-skeleton-block eksu-skeleton-btn\"><\/div>' +\n        '<\/div>' +\n        '<div class=\"eksu-skeleton-cards\">' +\n          '<div class=\"eksu-skeleton-card eksu-skeleton-fade-in\" style=\"animation-delay:0.1s;\">' +\n            '<div class=\"eksu-skeleton-block eksu-skeleton-eyebrow\"><\/div>' +\n            '<div class=\"eksu-skeleton-block eksu-skeleton-card-title\"><\/div>' +\n            '<div class=\"eksu-skeleton-block eksu-skeleton-text-line w1\"><\/div>' +\n            '<div class=\"eksu-skeleton-block eksu-skeleton-text-line w2\"><\/div>' +\n            '<div class=\"eksu-skeleton-block eksu-skeleton-btn\"><\/div>' +\n          '<\/div>' +\n          '<div class=\"eksu-skeleton-card eksu-skeleton-fade-in\" style=\"animation-delay:0.15s;\">' +\n            '<div class=\"eksu-skeleton-block eksu-skeleton-eyebrow\"><\/div>' +\n            '<div class=\"eksu-skeleton-block eksu-skeleton-card-title\"><\/div>' +\n            '<div class=\"eksu-skeleton-block eksu-skeleton-text-line w1\"><\/div>' +\n            '<div class=\"eksu-skeleton-block eksu-skeleton-text-line w2\"><\/div>' +\n            '<div class=\"eksu-skeleton-block eksu-skeleton-btn\"><\/div>' +\n          '<\/div>' +\n          '<div class=\"eksu-skeleton-card eksu-skeleton-fade-in\" style=\"animation-delay:0.2s;\">' +\n            '<div class=\"eksu-skeleton-block eksu-skeleton-eyebrow\"><\/div>' +\n            '<div class=\"eksu-skeleton-block eksu-skeleton-card-title\"><\/div>' +\n            '<div class=\"eksu-skeleton-block eksu-skeleton-text-line w1\"><\/div>' +\n            '<div class=\"eksu-skeleton-block eksu-skeleton-text-line w2\"><\/div>' +\n            '<div class=\"eksu-skeleton-block eksu-skeleton-btn\"><\/div>' +\n          '<\/div>' +\n        '<\/div>' +\n        '<div class=\"eksu-skeleton-block eksu-skeleton-strip eksu-skeleton-fade-in\" style=\"animation-delay:0.25s;\"><\/div>';\n\n      var skel = document.createElement('div');\n      skel.id = 'egfSkeleton';\n      skel.setAttribute('aria-hidden', 'true');\n      skel.innerHTML = html;\n\n      \/* Insert as the very first child of <body> so it is guaranteed to\n         sit outside any transformed\/positioned ancestor (which is what\n         breaks position:fixed) \u2014 no ancestor to escape from in the\n         first place, since it was never nested inside one.\n         Guarded against document.body not existing yet (can happen if\n         this script is evaluated while the browser is still technically\n         \"in head\" \u2014 e.g. previewing this fragment as a standalone file\n         with no explicit <body> tag of its own). On a real WordPress\n         page, <body> is always already open by this point. *\/\n      function insertSkeleton() {\n        if (!document.body) return;\n        if (document.body.firstChild) {\n          document.body.insertBefore(skel, document.body.firstChild);\n        } else {\n          document.body.appendChild(skel);\n        }\n      }\n\n      if (document.body) {\n        insertSkeleton();\n      } else {\n        document.addEventListener('DOMContentLoaded', insertSkeleton);\n      }\n    })();\n  <\/script>\n\n  <div style=\"height: 130px;\"><\/div>\n<div class=\"orb-field\" aria-hidden=\"true\">\n    <span class=\"orb orb-1\"><\/span>\n    <span class=\"orb orb-2\"><\/span>\n    <span class=\"orb orb-3\"><\/span>\n    <span class=\"particle p1\"><\/span>\n    <span class=\"particle p2\"><\/span>\n    <span class=\"particle p3\"><\/span>\n    <span class=\"particle p4\"><\/span>\n    <span class=\"particle p5\"><\/span>\n    <span class=\"particle p6\"><\/span>\n  <\/div>\n\n  <section class=\"hero\" id=\"top\" style=\"padding-top: 130px !important;\">\n    <div class=\"ticket\" data-tilt=\"\">\n      <div class=\"ticket-main\">\n        <span class=\"stamp\">ALL EXAMS \u00b7 ALL SCHOOLS<\/span>\n        <p class=\"eyebrow\">Nigeria&#8217;s exam archive, sorted<\/p>\n        <h1 class=\"hero-title\">Past questions, <em>sorted.<\/em><\/h1>\n        <p class=\"hero-sub\">\n          Thousands of verified past questions, quizzes and project materials\n          from universities across Nigeria \u2014 find yours in two taps.\n        <\/p>\n        <p class=\"typewriter-line\"><span id=\"typewriter\"><\/span><span class=\"caret\">|<\/span><\/p>\n        <hr class=\"hero-divider\">\n        <div class=\"hero-actions\">\n          <button class=\"btn btn-browse\" type=\"button\" data-jump=\"\" data-target=\"downloads-card\">Browse Past Questions<\/button>\n          <button class=\"btn btn-quiz\" type=\"button\" data-jump=\"\" data-target=\"quiz-card\">Take Past Questions Exam Quiz<\/button>\n          <button class=\"btn btn-materials\" type=\"button\" data-jump=\"\" data-target=\"materials-card\">Download Materials (Projects, Handouts, etc)<\/button>\n        <\/div>\n      <\/div>\n      <div class=\"ticket-counterfoil\">\n        <div class=\"counterfoil-label\">EGF<br>PASS<\/div>\n        <div class=\"barcode\" aria-hidden=\"true\"><\/div>\n        <div class=\"counterfoil-code\">EGF \u00b7 NG<\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"section\" id=\"paths\">\n    <div class=\"path-grid\">\n\n      <div class=\"path-card\" id=\"downloads-card\" data-tilt=\"\">\n        <p class=\"eyebrow\">Downloads<\/p>\n        <h3>Past Questions<\/h3>\n        <p>Browse and download past exam papers by school, subject, or year.<\/p>\n        <button class=\"btn\" type=\"button\" data-modal-trigger=\"\" data-context=\"downloads\" data-heading=\"Select your choice below for downloading past questions\" data-third=\"I want to upload a past question\">\n          Browse downloads\n        <\/button>\n      <\/div>\n\n      <div class=\"path-card\" id=\"quiz-card\" data-tilt=\"\">\n        <p class=\"eyebrow\">Practice<\/p>\n        <h3>Exam Quiz<\/h3>\n        <p>Test yourself with timed quizzes built from real past questions.<\/p>\n        <button class=\"btn\" type=\"button\" data-modal-trigger=\"\" data-context=\"quiz\" data-heading=\"Select your choice below for the exam quiz\" data-third=\"I want to upload quiz questions\">\n          Start a quiz\n        <\/button>\n      <\/div>\n\n      <div class=\"path-card\" id=\"materials-card\" data-tilt=\"\">\n        <p class=\"eyebrow\">Resources<\/p>\n        <h3>Materials<\/h3>\n        <p>Projects, handouts, and other study materials shared by students.<\/p>\n        <button class=\"btn\" type=\"button\" data-modal-trigger=\"\" data-context=\"materials\" data-heading=\"Select your choice below for materials downloads\" data-third=\"I want to upload a study material\">\n          View materials\n        <\/button>\n      <\/div>\n\n    <\/div>\n  <\/section>\n\n  <div class=\"trust-strip\">\n    <p>500+ Universities \u00b7 500+ Past Questions \u00b7 Updated Weekly<\/p>\n  <\/div>\n\n  <!-- ===== modal ===== -->\n  <div class=\"modal-backdrop\" id=\"modalBackdrop\">\n    <div class=\"modal-stub\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"modalTitle\">\n      <button class=\"modal-close\" type=\"button\" id=\"modalClose\" aria-label=\"Close\">\u00d7<\/button>\n\n      <div class=\"modal-stub-inner\">\n\n      <div class=\"modal-view\" id=\"selectionView\">\n        <p class=\"eyebrow\">Select your choice below<\/p>\n        <h3 class=\"modal-title\" id=\"modalTitle\">For downloading past questions<\/h3>\n        <div class=\"modal-options\">\n          <button class=\"modal-option modal-opt-1\" type=\"button\" data-pick=\"\" data-audience=\"aspirant\">I am an Aspirant (JAMB, WAEC, etc)<\/button>\n          <button class=\"modal-option modal-opt-2\" type=\"button\" data-pick=\"\" data-audience=\"uni\">I am an Uni Student<\/button>\n          <button class=\"modal-option modal-opt-3\" type=\"button\" data-pick=\"\" data-audience=\"upload\" id=\"modalThird\">I want to upload a past question<\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"modal-view\" id=\"soonView\" hidden=\"\">\n        <span class=\"stamp\">ADMIT ONE \u2014 SOON<\/span>\n        <p class=\"eyebrow\">This destination is still in the workshop<\/p>\n        <h3 class=\"modal-title\">This part is still <em>under construction.<\/em><\/h3>\n        <p class=\"modal-sub\">\n          This particular feature isn&#8217;t live yet. Drop your details\n          and we&#8217;ll notify you on WhatsApp the moment it&#8217;s ready.\n        <\/p>\n\n        <button class=\"modal-notify-toggle\" type=\"button\" id=\"notifyToggle\">\n          Notify Me <span class=\"toggle-arrow\">\u2192<\/span>\n        <\/button>\n\n        <div class=\"modal-notify-form\" id=\"notifyForm\">\n          <span class=\"soon-form-label\">Reserve your spot<\/span>\n          <div id=\"notifyFormSlot\"><\/div>\n          <p class=\"modal-notify-footnote\">NO SPAM \u00b7 WHATSAPP ONLY \u00b7 WHEN IT&#8217;S READY<\/p>\n        <\/div>\n\n        <button class=\"modal-back\" type=\"button\" id=\"modalBack\">\u2190 Choose another option<\/button>\n      <\/div>\n\n      <\/div><!-- \/.modal-stub-inner -->\n    <\/div>\n  <\/div>\n\n  <script>\n    (function () {\n      var yearEl = document.getElementById('copyrightYear');\n      if (yearEl) yearEl.textContent = new Date().getFullYear();\n\n      \/* ---------- typewriter: cycles through site actions ---------- *\/\n      var twEl = document.getElementById('typewriter');\n      if (twEl && !window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n        var phrases = [\n          'Browse Past Questions by school & year',\n          'Take an Exam Quiz from real past questions',\n          'Download Materials \u2014 projects & handouts',\n          'Upload your own past question'\n        ];\n        var pIndex = 0, charIndex = 0, deleting = false;\n\n        function tick() {\n          var current = phrases[pIndex];\n          if (!deleting) {\n            charIndex++;\n            twEl.textContent = current.slice(0, charIndex);\n            if (charIndex === current.length) {\n              deleting = true;\n              setTimeout(tick, 1600);\n              return;\n            }\n            setTimeout(tick, 38);\n          } else {\n            charIndex--;\n            twEl.textContent = current.slice(0, charIndex);\n            if (charIndex === 0) {\n              deleting = false;\n              pIndex = (pIndex + 1) % phrases.length;\n              setTimeout(tick, 350);\n              return;\n            }\n            setTimeout(tick, 20);\n          }\n        }\n        setTimeout(tick, 900);\n      }\n      var backdrop = document.getElementById('modalBackdrop');\n      var selectionView = document.getElementById('selectionView');\n      var soonView = document.getElementById('soonView');\n      var modalTitle = document.getElementById('modalTitle');\n      var modalThird = document.getElementById('modalThird');\n      var lastFocused = null;\n      var currentContext = 'downloads';\n\n      function openModal(heading, thirdText, context) {\n        lastFocused = document.activeElement;\n        currentContext = context || 'downloads';\n        modalTitle.textContent = heading;\n        modalThird.textContent = thirdText;\n        selectionView.hidden = false;\n        soonView.hidden = true;\n        backdrop.classList.add('open');\n        document.body.classList.add('no-scroll');\n        document.getElementById('modalClose').focus();\n      }\n\n      function closeModal() {\n        backdrop.classList.remove('open');\n        document.body.classList.remove('no-scroll');\n        if (lastFocused) lastFocused.focus();\n      }\n\n      document.querySelectorAll('[data-modal-trigger]').forEach(function (btn) {\n        btn.addEventListener('click', function () {\n          openModal(btn.dataset.heading, btn.dataset.third, btn.dataset.context);\n        });\n      });\n\n      document.querySelectorAll('[data-pick]').forEach(function (btn) {\n        btn.addEventListener('click', function () {\n          var links = (typeof window.EGF_LINKS === 'object' && window.EGF_LINKS) ? window.EGF_LINKS : {};\n          var key = currentContext + '_' + btn.dataset.audience + '_url';\n          var url = links[key];\n          if (url && String(url).trim() !== '') {\n            window.location.href = url;\n            return;\n          }\n          selectionView.hidden = true;\n          soonView.hidden = false;\n        });\n      });\n\n      document.getElementById('modalBack').addEventListener('click', function () {\n        \/* also collapse the notify form when going back *\/\n        var nf = document.getElementById('notifyForm');\n        var nt = document.getElementById('notifyToggle');\n        if (nf) { nf.classList.remove('open'); }\n        if (nt) { nt.classList.remove('open'); }\n        soonView.hidden = true;\n        selectionView.hidden = false;\n      });\n\n      \/* ---------- pull in FluentForm #15, rendered by a separate\n         Shortcode block (Custom HTML blocks don't run shortcodes) ---------- *\/\n      (function relocateFluentForm() {\n        var slot = document.getElementById('notifyFormSlot');\n        if (!slot) return;\n\n        function findFormWrapper() {\n          \/* FluentForm wraps every form in <div class=\"fluentform\"> ...\n             <form id=\"fluentform_15\" data-form_id=\"15\"> ... *\/\n          var form = document.querySelector(\n            'form[data-form_id=\"15\"], #fluentform_15, form[name=\"ff_form_15\"]'\n          );\n          if (!form) return null;\n          \/* Move the outer .fluentform wrapper if present, else the form itself *\/\n          return form.closest('.fluentform') || form.closest('.wp-block-shortcode') || form;\n        }\n\n        function tryMove(attemptsLeft) {\n          var wrapper = findFormWrapper();\n          if (wrapper) {\n            slot.appendChild(wrapper);\n            wrapper.style.display = '';\n            return;\n          }\n          if (attemptsLeft > 0) {\n            setTimeout(function () { tryMove(attemptsLeft - 1); }, 300);\n          }\n        }\n\n        tryMove(15); \/* retries for ~4.5s in case form loads late *\/\n      })();\n\n      \/* ---------- notify me tap-to-reveal ---------- *\/\n      var notifyToggle = document.getElementById('notifyToggle');\n      var notifyForm   = document.getElementById('notifyForm');\n\n      if (notifyToggle && notifyForm) {\n        notifyToggle.addEventListener('click', function () {\n          var isOpen = notifyForm.classList.contains('open');\n          notifyForm.classList.toggle('open', !isOpen);\n          notifyToggle.classList.toggle('open', !isOpen);\n          \/* scroll modal stub down so form is visible *\/\n          if (!isOpen) {\n            setTimeout(function () {\n              var stub = document.querySelector('.modal-stub-inner');\n              if (stub) stub.scrollTo({ top: stub.scrollHeight, behavior: 'smooth' });\n            }, 420);\n          }\n        });\n      }\n\n      document.getElementById('modalClose').addEventListener('click', closeModal);\n\n      backdrop.addEventListener('click', function (e) {\n        if (e.target === backdrop) closeModal();\n      });\n\n\n      document.addEventListener('keydown', function (e) {\n        if (e.key === 'Escape' && backdrop.classList.contains('open')) closeModal();\n      });\n\n      \/* hero buttons: smooth scroll + pulse highlight on target card *\/\n      document.querySelectorAll('[data-jump]').forEach(function (link) {\n        link.addEventListener('click', function () {\n          var target = document.getElementById(link.dataset.target);\n          if (!target) return;\n          target.scrollIntoView({ behavior: 'smooth', block: 'start' });\n          setTimeout(function () {\n            target.classList.add('pulse');\n            target.addEventListener('animationend', function () {\n              target.classList.remove('pulse');\n            }, { once: true });\n          }, 450);\n        });\n      });\n\n      \/* ---------- 3D tilt on cards (mouse-driven, disabled on touch) ---------- *\/\n      var canTilt = window.matchMedia('(hover: hover) and (pointer: fine)').matches;\n      if (canTilt && !window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n        document.querySelectorAll('[data-tilt]').forEach(function (card) {\n          var rect, raf = null, tx = 0, ty = 0;\n\n          function onMove(e) {\n            rect = card.getBoundingClientRect();\n            var px = (e.clientX - rect.left) \/ rect.width;\n            var py = (e.clientY - rect.top) \/ rect.height;\n            tx = (py - 0.5) * -10;\n            ty = (px - 0.5) * 12;\n            var glowX = px * 100, glowY = py * 100;\n            card.style.setProperty('--glow-x', glowX + '%');\n            card.style.setProperty('--glow-y', glowY + '%');\n            if (!raf) {\n              raf = requestAnimationFrame(function () {\n                card.style.transform = 'perspective(900px) rotateX(' + tx + 'deg) rotateY(' + ty + 'deg) translateZ(6px)';\n                raf = null;\n              });\n            }\n          }\n\n          function onLeave() {\n            card.style.transform = 'perspective(900px) rotateX(0deg) rotateY(0deg) translateZ(0)';\n          }\n\n          card.addEventListener('mousemove', onMove);\n          card.addEventListener('mouseleave', onLeave);\n        });\n      }\n\n      \/* ---------- magnetic buttons ---------- *\/\n      if (canTilt) {\n        document.querySelectorAll('.btn').forEach(function (btn) {\n          btn.addEventListener('mousemove', function (e) {\n            var r = btn.getBoundingClientRect();\n            var mx = (e.clientX - r.left - r.width \/ 2) * 0.12;\n            var my = (e.clientY - r.top - r.height \/ 2) * 0.28;\n            btn.style.transform = 'translate(' + mx + 'px,' + (my - 2) + 'px)';\n          });\n          btn.addEventListener('mouseleave', function () {\n            btn.style.transform = '';\n          });\n        });\n      }\n\n      \/* ---------- scroll reveal ---------- *\/\n      var revealEls = document.querySelectorAll('.path-card, .trust-strip, .egf-site-footer');\n      if ('IntersectionObserver' in window && !window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n        \/* Only hide elements if IntersectionObserver is available & motion ok *\/\n        revealEls.forEach(function (el) { el.classList.add('reveal-pending'); });\n        var io = new IntersectionObserver(function (entries) {\n          entries.forEach(function (entry) {\n            if (entry.isIntersecting) {\n              entry.target.classList.remove('reveal-pending');\n              entry.target.classList.add('in-view');\n              io.unobserve(entry.target);\n            }\n          });\n        }, { threshold: 0.1 });\n        revealEls.forEach(function (el) { io.observe(el); });\n\n        \/* Safety net: if the embedding page's scroll container or\n           layout timing keeps IntersectionObserver from ever firing\n           (common when this block is nested inside theme wrappers),\n           force everything visible after a short delay instead of\n           leaving it permanently blank. *\/\n        setTimeout(function () {\n          revealEls.forEach(function (el) {\n            if (el.classList.contains('reveal-pending')) {\n              el.classList.remove('reveal-pending');\n              el.classList.add('in-view');\n            }\n          });\n        }, 2500);\n      } else {\n        \/* Fallback: just show everything immediately *\/\n        revealEls.forEach(function (el) { el.classList.add('in-view'); });\n      }\n\n      \/* ---------- ambient floating orbs parallax ---------- *\/\n      var orbs = document.querySelectorAll('.orb');\n      if (canTilt && orbs.length) {\n        document.addEventListener('mousemove', function (e) {\n          var nx = (e.clientX \/ window.innerWidth - 0.5);\n          var ny = (e.clientY \/ window.innerHeight - 0.5);\n          orbs.forEach(function (orb, i) {\n            var depth = (i + 1) * 14;\n            orb.style.transform = 'translate(' + (nx * depth) + 'px,' + (ny * depth) + 'px)';\n          });\n        });\n      }\n\n      \/* ---------- WordPress escape: hoist our content to top of body ---------- *\/\n      (function wpEscape() {\n        \/* Guard: never run this more than once, and never run it\n           again if some other script on the host page re-executes\n           this block (common with page builders \/ cached duplicate\n           embeds). Re-running the node move below is what causes\n           the page to visibly snap the scroll position around. *\/\n        if (window.__egfEscapeDone) return;\n        window.__egfEscapeDone = true;\n\n        \/* 1. Kill admin bar immediately *\/\n        var adminBar = document.getElementById('wpadminbar');\n        if (adminBar) adminBar.remove();\n\n        \/* 2. Remove forced margin-top WordPress adds for admin bar *\/\n        document.documentElement.style.setProperty('margin-top', '0', 'important');\n        document.body.style.setProperty('margin-top', '0', 'important');\n        document.body.style.setProperty('padding-top', '0', 'important');\n\n        \/* 3. Find our root wrapper (orb-field is always our first element) *\/\n        var ourRoot = document.querySelector('.orb-field');\n        if (!ourRoot) return;\n\n        \/* 4. Collect all our nodes: from orb-field to the modal backdrop *\/\n        var ourNodes = [];\n        var node = ourRoot;\n        while (node) {\n          ourNodes.push(node);\n          if (node.id === 'modalBackdrop') break;\n          node = node.nextElementSibling;\n        }\n\n        \/* 5. Move them all to the very start of body.\n           Preserve scroll position across the move: re-parenting\n           nodes that sit before the user's current scroll point can\n           make the browser silently reset scrollY to 0, which reads\n           to a real person as \"the page keeps jumping back up\". *\/\n        var scrollYBefore = window.scrollY;\n        var frag = document.createDocumentFragment();\n        ourNodes.forEach(function(n) { frag.appendChild(n); });\n        document.body.insertBefore(frag, document.body.firstChild);\n        if (window.scrollY !== scrollYBefore) {\n          window.scrollTo(0, scrollYBefore);\n        }\n\n        \/* 6. Hide all remaining WP theme nodes now left in body *\/\n        var wpSelectors = [\n          '#page','#content','#primary','main#main','main.site-main',\n          '.site','#masthead','#colophon','.wp-site-blocks',\n          '#site-header','.site-header','header#masthead',\n          '#main-navigation','.main-navigation','.navigation-top',\n          '#sidebar','.widget-area','footer#colophon','.site-footer',\n          '#footer','.entry-header','.entry-footer','.breadcrumb'\n        ];\n        function sweepTheme() {\n          wpSelectors.forEach(function(sel) {\n            document.querySelectorAll(sel).forEach(function(el) {\n              \/* Don't hide our own brand-marked elements *\/\n              if (!el.querySelector('.brand-link') && !el.classList.contains('orb-field')) {\n                el.style.setProperty('display', 'none', 'important');\n              }\n            });\n          });\n        }\n        sweepTheme();\n\n        \/* 7. Some themes\/plugins inject their header, footer, or\n           widget markup AFTER this script has already run (lazy\n           widgets, late-loading comment sections, slow connections).\n           Anything left unhidden adds stray height\/width below or\n           beside our content, which is what produces large blank\n           gaps and \"the page resized while I was scrolling\" jumps.\n           Keep watching for new nodes and sweep them too. *\/\n        if ('MutationObserver' in window) {\n          var mo = new MutationObserver(function () { sweepTheme(); });\n          mo.observe(document.body, { childList: true, subtree: true });\n          \/* Stop watching after the page has clearly settled, so we\n             don't pay an observer cost forever. *\/\n          setTimeout(function () { mo.disconnect(); }, 15000);\n        }\n      })();\n\n    })();\n  <\/script>\n\n  <!-- ===== eksu-skeleton loader: separate isolated script ===== -->\n  <script>\n    (function () {\n      var skel = document.getElementById('egfSkeleton');\n      if (!skel) return;\n\n      \/* Keep the skeleton up for a minimum stretch so it never just\n         flashes on fast connections, but never hold it longer than\n         necessary once the real content is actually ready. *\/\n      var MIN_VISIBLE_MS = 1100;\n      var shownAt = Date.now();\n      var hidden = false;\n\n      function hideSkeleton() {\n        if (hidden) return;\n        hidden = true;\n        var elapsed = Date.now() - shownAt;\n        var wait = Math.max(0, MIN_VISIBLE_MS - elapsed);\n        setTimeout(function () {\n          skel.classList.add('eksu-skeleton-hidden');\n          skel.setAttribute('aria-hidden', 'true');\n          setTimeout(function () {\n            if (skel && skel.parentNode) skel.parentNode.removeChild(skel);\n          }, 500);\n        }, wait);\n      }\n\n      function whenFontsReady(cb) {\n        if (document.fonts && document.fonts.ready) {\n          document.fonts.ready.then(cb).catch(cb);\n        } else {\n          cb();\n        }\n      }\n\n      whenFontsReady(function () {\n        if (document.readyState === 'complete') {\n          hideSkeleton();\n        } else {\n          window.addEventListener('load', hideSkeleton);\n        }\n      });\n\n      \/* Safety net: never let the skeleton hang forever if fonts\/load\n         events stall on a slow connection. *\/\n      setTimeout(hideSkeleton, 4000);\n    })();\n  <\/script>\n <script>\n    (function() {\n      function setHeroPad() {\n        var qaBar = document.getElementById('egf-qa-bar');\n        var heroEl = document.getElementById('top');\n        if (qaBar && heroEl) {\n          heroEl.style.setProperty('padding-top', (qaBar.offsetHeight + 16) + 'px', 'important');\n        }\n      }\n      window.addEventListener('load', setHeroPad);\n      window.addEventListener('resize', setHeroPad);\n      setTimeout(setHeroPad, 500);\n      setTimeout(setHeroPad, 1500);\n      document.body.style.paddingTop = '0px';\n      setTimeout(function() { document.body.style.paddingTop = '0px'; }, 600);\n      setTimeout(function() { document.body.style.paddingTop = '0px'; }, 1600);\n    })();\n  <\/script>\n\n\n<div class='fluentform ff-default fluentform_wrapper_15 ffs_default_wrap'><form data-form_id=\"15\" id=\"fluentform_15\" class=\"frm-fluent-form fluent_form_15 ff-el-form-top ff_form_instance_15_1 ff-form-loading ffs_default\" data-form_instance=\"ff_form_instance_15_1\" method=\"POST\" ><fieldset  style=\"border: none!important;margin: 0!important;padding: 0!important;background-color: transparent!important;box-shadow: none!important;outline: none!important; min-inline-size: 100%;\">\n                    <legend class=\"ff_screen_reader_title\" style=\"display: block; margin: 0!important;padding: 0!important;height: 0!important;text-indent: -999999px;width: 0!important;overflow:hidden;\">Coming Soon Notify List<\/legend>        <div\n                style=\"display: none!important; position: absolute!important; transform: translateX(1000%)!important;\"\n                class=\"ff-el-group ff-hpsf-container\"\n        >\n            <div class=\"ff-el-input--label asterisk-right\">\n                <label for=\"ff_15_item_sf\" aria-label=\"Contact\">\n                    Contact                <\/label>\n            <\/div>\n            <div class=\"ff-el-input--content\">\n                <input type=\"text\"\n                       name=\"item_15__fluent_sf\"\n                       class=\"ff-el-form-control\"\n                       id=\"ff_15_item_sf\"\n                \/>\n            <\/div>\n        <\/div>\n                <input type=\"hidden\" id=\"__fluent_protection_token_15\" class=\"fluent-form-token-field\" name=\"__fluent_protection_token_15\">\n        <input type='hidden' name='__fluent_form_embded_post_id' value='15973' \/><input type=\"hidden\" id=\"_fluentform_15_fluentformnonce\" name=\"_fluentform_15_fluentformnonce\" value=\"ceb56e094b\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/pastquestions\/wp-json\/wp\/v2\/pages\/15973\" \/><div data-type=\"name-element\" data-name=\"names\" class=\" ff-field_container ff-name-field-wrapper\" ><div class='ff-t-container'><div class='ff-t-cell '><div class='ff-el-group ff-el-form-top'><div class=\"ff-el-input--label ff-el-is-required asterisk-right\"><label for='ff_15_names_first_name_' id='label_ff_15_names_first_name_' >Full Name<\/label><\/div><div class='ff-el-input--content'><input type=\"text\" name=\"names[first_name]\" id=\"ff_15_names_first_name_\" class=\"ff-el-form-control\" placeholder=\"Enter Your Full Name\" aria-invalid=\"false\" aria-required=true><\/div><\/div><\/div><\/div><\/div><div class='ff-el-group'><div class=\"ff-el-input--label ff-el-is-required asterisk-right\"><label for='ff_15_email' id='label_ff_15_email' aria-label=\"Gmail\">Gmail<\/label><\/div><div class='ff-el-input--content'><input type=\"email\" name=\"email\" id=\"ff_15_email\" class=\"ff-el-form-control\" placeholder=\"Enter Your Gmail Address\" data-name=\"email\"  aria-invalid=\"false\" aria-required=true><\/div><\/div><div class='ff-el-group'><div class=\"ff-el-input--label ff-el-is-required asterisk-right\"><label for='ff_15_phone' id='label_ff_15_phone' aria-label=\"WhatsApp Number\">WhatsApp Number <\/label><\/div><div class='ff-el-input--content'><input name=\"phone\" class=\"ff-el-form-control ff-el-phone ff_el_with_extended_validation\" type=\"tel\" placeholder=\"Enter your WhatsApp Number\" data-name=\"phone\" id=\"ff_15_phone\" inputmode=\"tel\"  aria-invalid='false' aria-required=true><\/div><\/div><div class='ff-el-group ff-text-left ff_submit_btn_wrapper'><button type=\"submit\" class=\"ff-btn ff-btn-submit ff-btn-md ff_btn_style\"  aria-label=\"Notify Me\">Notify Me<\/button><\/div><\/fieldset><\/form><div id='fluentform_15_errors' class='ff-errors-in-stack ff_form_instance_15_1 ff-form-loading_errors ff_form_instance_15_1_errors'><\/div><\/div>            <script type=\"text\/javascript\">\n                window.fluent_form_ff_form_instance_15_1 = {\"id\":\"15\",\"settings\":{\"layout\":{\"labelPlacement\":\"top\",\"asteriskPlacement\":\"asterisk-right\",\"helpMessagePlacement\":\"with_label\",\"errorMessagePlacement\":\"inline\",\"cssClassName\":\"\"},\"restrictions\":{\"denyEmptySubmission\":{\"enabled\":false}}},\"form_instance\":\"ff_form_instance_15_1\",\"form_id_selector\":\"fluentform_15\",\"rules\":{\"names[first_name]\":{\"required\":{\"value\":true,\"message\":\"This field is required\",\"global_message\":\"This field is required\",\"global\":true}},\"names[middle_name]\":{\"required\":{\"value\":false,\"message\":\"This field is required\",\"global_message\":\"This field is required\",\"global\":true}},\"names[last_name]\":{\"required\":{\"value\":false,\"message\":\"This field is required\",\"global_message\":\"This field is required\",\"global\":true}},\"email\":{\"required\":{\"value\":true,\"message\":\"This field is required\",\"global_message\":\"This field is required\",\"global\":true},\"email\":{\"value\":true,\"message\":\"This field must contain a valid email\",\"global_message\":\"This field must contain a valid email\",\"global\":true}},\"phone\":{\"required\":{\"value\":true,\"global\":true,\"message\":\"This field is required\",\"global_message\":\"This field is required\"},\"valid_phone_number\":{\"value\":true,\"global\":true,\"message\":\"Phone number is not valid\",\"global_message\":\"Phone number is not valid\"}}},\"debounce_time\":300};\n                            <\/script>\n            \n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eduglobalforge \u2014 Past Questions, Sorted ALL EXAMS \u00b7 ALL SCHOOLS Nigeria&#8217;s exam archive, sorted Past questions, sorted. Thousands of verified past questions, quizzes and project materials from universities across Nigeria \u2014 find yours in two taps. | Browse Past Questions Take Past Questions Exam Quiz Download Materials (Projects, Handouts, etc) EGFPASS EGF \u00b7 NG Downloads [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-15973","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/eduglobalforge.com\/pastquestions\/wp-json\/wp\/v2\/pages\/15973","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eduglobalforge.com\/pastquestions\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/eduglobalforge.com\/pastquestions\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/eduglobalforge.com\/pastquestions\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/eduglobalforge.com\/pastquestions\/wp-json\/wp\/v2\/comments?post=15973"}],"version-history":[{"count":57,"href":"https:\/\/eduglobalforge.com\/pastquestions\/wp-json\/wp\/v2\/pages\/15973\/revisions"}],"predecessor-version":[{"id":16521,"href":"https:\/\/eduglobalforge.com\/pastquestions\/wp-json\/wp\/v2\/pages\/15973\/revisions\/16521"}],"wp:attachment":[{"href":"https:\/\/eduglobalforge.com\/pastquestions\/wp-json\/wp\/v2\/media?parent=15973"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}