{"id":248,"date":"2022-04-15T05:02:31","date_gmt":"2022-04-15T05:02:31","guid":{"rendered":"https:\/?page_id=248"},"modified":"2026-07-29T11:49:18","modified_gmt":"2026-07-29T10:49:18","slug":"sign-up","status":"publish","type":"page","link":"https:\/\/www.rsu.edu.ng\/rsualumni\/sign-up\/","title":{"rendered":"Sign Up"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"248\" class=\"elementor elementor-248\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-724a793 e-flex e-con-boxed e-con e-parent\" data-id=\"724a793\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5cab4ec elementor-widget elementor-widget-image\" data-id=\"5cab4ec\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"248\" height=\"64\" src=\"https:\/\/www.rsu.edu.ng\/rsualumni\/wp-content\/uploads\/2026\/03\/Header-Card-Sidebar-1.0.svg\" class=\"attachment-large size-large wp-image-13234\" alt=\"\" sizes=\"100vw\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3fe9afa e-flex e-con-boxed e-con e-parent\" data-id=\"3fe9afa\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-38f5aa1 elementor-widget elementor-widget-shortcode\" data-id=\"38f5aa1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n\t\t<style>\n\t\t\/* =====================================================================\n\t\t   BASE \/ RESET\n\t\t===================================================================== *\/\n\t\t.sv-reg-outer {\n\t\t\tfont-family: 'Segoe UI', system-ui, sans-serif;\n\t\t}\n\n\t\t\/* =====================================================================\n\t\t   STEP INDICATOR\n\t\t===================================================================== *\/\n\t\t.sv-steps {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\tmargin-bottom: 28px;\n\t\t}\n\t\t.sv-step {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\talign-items: center;\n\t\t\tgap: 4px;\n\t\t}\n\t\t.sv-step-dot {\n\t\t\twidth: 32px; height: 32px;\n\t\t\tborder-radius: 50%;\n\t\t\tdisplay: flex; align-items: center; justify-content: center;\n\t\t\tfont-size: 13px; font-weight: 700;\n\t\t\ttransition: background .3s, color .3s;\n\t\t}\n\t\t.sv-step-dot.active   { background: #004932; color: #fff; }\n\t\t.sv-step-dot.done     { background: #d1fae5; color: #065f46; }\n\t\t.sv-step-dot.inactive { background: #f3f4f6; color: #9ca3af; }\n\t\t.sv-step-label { font-size: 10.5px; font-weight: 600; color: #6b7280; letter-spacing: .3px; }\n\t\t.sv-step-line {\n\t\t\tflex: 1; height: 2px; max-width: 48px;\n\t\t\tmargin: 0 4px; background: #e5e7eb; border-radius: 2px;\n\t\t\talign-self: flex-start; margin-top: 16px;\n\t\t\ttransition: background .4s;\n\t\t}\n\t\t.sv-step-line.done { background: #004932; }\n\n\t\t\/* =====================================================================\n\t\t   MATRIC GATE CARD\n\t\t===================================================================== *\/\n\t\t#sv-matric-gate {\n\t\t\tmax-width: 480px;\n\t\t\tmargin: 0 auto;\n\t\t\tpadding: 36px 32px 28px;\n\t\t\tbackground: #fff;\n\t\t\tborder-radius: 20px;\n\t\t\tbox-shadow: 0 4px 32px rgba(0,0,0,.08);\n\t\t\ttext-align: center;\n\t\t}\n\t\t.sv-gate-icon {\n\t\t\twidth: 64px; height: 64px;\n\t\t\tbackground: linear-gradient(135deg,#004932,#00734e);\n\t\t\tborder-radius: 50%;\n\t\t\tdisplay: flex; align-items: center; justify-content: center;\n\t\t\tmargin: 0 auto 18px;\n\t\t}\n\t\t.sv-gate-icon svg { color: #fff; }\n\t\t#sv-matric-gate h2 {\n\t\t\tfont-size: 22px; font-weight: 700; color: #0f1a14; margin: 0 0 6px;\n\t\t}\n\t\t#sv-matric-gate p.sv-sub {\n\t\t\tfont-size: 14px; color: #6b7280; margin: 0 0 26px; line-height: 1.5;\n\t\t}\n\t\t.sv-matric-input-wrap { position: relative; margin-bottom: 12px; }\n\t\t.sv-matric-input-wrap input {\n\t\t\twidth: 100%; padding: 14px 48px 14px 18px;\n\t\t\tborder: 2px solid #e5e7eb; border-radius: 12px;\n\t\t\tfont-size: 15px; font-weight: 600; letter-spacing: .5px;\n\t\t\tcolor: #111827; background: #f9fafb; box-sizing: border-box;\n\t\t\ttransition: border-color .2s, box-shadow .2s; outline: none;\n\t\t\ttext-transform: uppercase;\n\t\t}\n\t\t.sv-matric-input-wrap input:focus {\n\t\t\tborder-color: #004932;\n\t\t\tbox-shadow: 0 0 0 4px rgba(0,73,50,.1);\n\t\t\tbackground: #fff;\n\t\t}\n\t\t.sv-matric-spin {\n\t\t\tposition: absolute; right: 14px; top: 50%;\n\t\t\ttransform: translateY(-50%); display: none;\n\t\t}\n\t\t.sv-matric-spin svg { animation: sv-spin 1s linear infinite; }\n\t\t@keyframes sv-spin { to { transform: rotate(360deg); } }\n\n\t\t.sv-btn-verify {\n\t\t\twidth: 100%; padding: 14px;\n\t\t\tbackground: linear-gradient(135deg,#004932,#00734e);\n\t\t\tcolor: #fff; border: none; border-radius: 50px;\n\t\t\tfont-size: 15px; font-weight: 700; cursor: pointer;\n\t\t\ttransition: opacity .2s, transform .15s; margin-bottom: 10px;\n\t\t}\n\t\t.sv-btn-verify:hover:not(:disabled) { opacity: .92; transform: translateY(-1px); }\n\t\t.sv-btn-verify:disabled { opacity: .55; cursor: not-allowed; }\n\n\t\t\/* ---- PROCEED BUTTON (appears after verification) ---- *\/\n\t\t.sv-proceed-btn {\n\t\t\tdisplay: none;\n\t\t\twidth: 100%; padding: 14px;\n\t\t\tbackground: linear-gradient(135deg,#065f46,#059669);\n\t\t\tcolor: #fff; border: none; border-radius: 50px;\n\t\t\tfont-size: 15px; font-weight: 700; cursor: pointer;\n\t\t\tletter-spacing: .3px;\n\t\t\ttransition: opacity .2s, transform .15s, box-shadow .2s;\n\t\t\tmargin-bottom: 10px;\n\t\t\tbox-shadow: 0 4px 20px rgba(5,150,105,.35);\n\t\t\tanimation: sv-pulse-btn 2s ease-in-out infinite;\n\t\t}\n\t\t.sv-proceed-btn:hover { opacity: .92; transform: translateY(-2px); box-shadow: 0 6px 28px rgba(5,150,105,.45); }\n\t\t@keyframes sv-pulse-btn {\n\t\t\t0%,100% { box-shadow: 0 4px 20px rgba(5,150,105,.35); }\n\t\t\t50%      { box-shadow: 0 4px 28px rgba(5,150,105,.6); }\n\t\t}\n\n\t\t\/* Guest register link *\/\n\t\t.sv-guest-register-link {\n\t\t\tdisplay: block; margin-top: 14px;\n\t\t\tfont-size: 13px; color: #6b7280;\n\t\t}\n\t\t.sv-guest-register-link a {\n\t\t\tcolor: #d97706; font-weight: 700;\n\t\t\ttext-decoration: underline; cursor: pointer;\n\t\t}\n\t\t.sv-guest-register-link a:hover { color: #b45309; }\n\n\t\t.sv-matric-feedback {\n\t\t\tfont-size: 13px; padding: 10px 14px; border-radius: 10px;\n\t\t\ttext-align: left; margin-bottom: 14px; display: none;\n\t\t}\n\t\t.sv-matric-feedback.ok  { background:#d1fae5; color:#065f46; border:1px solid #6ee7b7; display:block; }\n\t\t.sv-matric-feedback.err { background:#fee2e2; color:#991b1b; border:1px solid #fca5a5; display:block; }\n\t\t.sv-matric-feedback.info{ background:#eff6ff; color:#1e3a8a; border:1px solid #bfdbfe; display:block; }\n\n\t\t.sv-source-badge {\n\t\t\tdisplay: inline-block; font-size: 10px; font-weight: 700;\n\t\t\tletter-spacing: .4px; padding: 2px 8px; border-radius: 50px;\n\t\t\tmargin-left: 6px; vertical-align: middle; text-transform: uppercase;\n\t\t}\n\t\t.sv-source-api   { background:#dbeafe; color:#1e40af; }\n\t\t.sv-source-cache { background:#f3f4f6; color:#6b7280; }\n\t\t.sv-source-ff    { background:#ede9fe; color:#5b21b6; }\n\n\t\t.sv-alumni-preview {\n\t\t\tbackground: linear-gradient(135deg,#004932 0%,#00734e 100%);\n\t\t\tborder-radius: 14px; padding: 16px 18px; color: #fff;\n\t\t\ttext-align: left; margin-bottom: 18px; display: none;\n\t\t}\n\t\t.sv-alumni-preview.show { display: block; animation: sv-fadein .3s ease; }\n\t\t.sv-alumni-preview .sv-ap-name   { font-size: 17px; font-weight: 700; margin: 0 0 4px; }\n\t\t.sv-alumni-preview .sv-ap-detail { font-size: 12px; opacity: .82; margin: 2px 0; }\n\t\t.sv-alumni-preview .sv-ap-badge {\n\t\t\tdisplay: inline-flex; align-items: center; gap: 4px;\n\t\t\tbackground: rgba(255,255,255,.18); padding: 3px 10px;\n\t\t\tborder-radius: 50px; font-size: 11px; font-weight: 700;\n\t\t\tletter-spacing: .4px; margin-top: 8px;\n\t\t}\n\n\t\t\/* ---- Name-search (Forgot Mat No.) panel ---- *\/\n\t\t.sv-name-search-panel { display: none; text-align: left; }\n\t\t.sv-name-search-panel.show { display: block; animation: sv-fadein .3s ease; }\n\t\t.sv-name-search-panel label {\n\t\t\tfont-size: 12px; font-weight: 600; color: #374151;\n\t\t\ttext-align: left; display: block; margin-bottom: 6px;\n\t\t}\n\t\t.sv-name-search-intro {\n\t\t\tfont-size: 12.5px; color: #6b7280; margin: 0 0 14px; line-height: 1.5;\n\t\t}\n\n\t\t\/* =====================================================================\n\t\t   FORM WRAP & TRANSITIONS\n\t\t===================================================================== *\/\n\t\t#sv-reg-form-wrap {\n\t\t\tdisplay: none;\n\t\t\tanimation: sv-fadein .35s ease;\n\t\t}\n\t\t@keyframes sv-fadein {\n\t\t\tfrom { opacity: 0; transform: translateY(10px); }\n\t\t\tto   { opacity: 1; transform: translateY(0); }\n\t\t}\n\n\t\t\/* ---- Compact card ---- *\/\n\t\t#sv-reg-form-wrap .card-main { max-width: 520px; margin: 0 auto; }\n\t\t#sv-reg-form-wrap .card-inner {\n\t\t\tbackground: #fff;\n\t\t\tborder-radius: 16px;\n\t\t\tbox-shadow: 0 4px 24px rgba(0,0,0,.08);\n\t\t\toverflow: hidden;\n\t\t}\n\t\t.sv-form-header {\n\t\t\tbackground: linear-gradient(135deg,#004932,#00734e);\n\t\t\tpadding: 18px 24px; text-align: center;\n\t\t}\n\t\t.sv-form-header h3 { margin: 0; color: #fff; font-size: 16px; font-weight: 700; letter-spacing: .3px; }\n\t\t.sv-form-header p  { margin: 4px 0 0; color: rgba(255,255,255,.75); font-size: 12px; }\n\t\t.sv-form-header.sv-guest-header { background: linear-gradient(135deg,#92400e,#d97706); }\n\t\t.sv-form-header.sv-ff-header { background: linear-gradient(135deg,#5b21b6,#7c3aed); }\n\t\t.sv-form-body { padding: 20px 24px 24px; }\n\n\t\t\/* Guest banner *\/\n\t\t.sv-guest-banner {\n\t\t\tbackground: linear-gradient(135deg,#fffbeb,#fef3c7);\n\t\t\tborder: 1px solid #fcd34d; border-radius: 10px;\n\t\t\tpadding: 10px 14px; margin-bottom: 14px;\n\t\t\tdisplay: flex; align-items: flex-start; gap: 8px;\n\t\t}\n\t\t.sv-guest-banner svg { flex-shrink: 0; margin-top: 1px; color: #d97706; }\n\t\t.sv-guest-banner p { margin: 0; font-size: 12px; color: #78350f; line-height: 1.4; }\n\t\t.sv-guest-banner strong { display: block; margin-bottom: 1px; font-size: 12.5px; }\n\n\t\t\/* Fluent-form matched banner *\/\n\t\t.sv-ff-banner {\n\t\t\tbackground: linear-gradient(135deg,#f5f3ff,#ede9fe);\n\t\t\tborder: 1px solid #c4b5fd; border-radius: 10px;\n\t\t\tpadding: 10px 14px; margin-bottom: 14px;\n\t\t\tdisplay: flex; align-items: flex-start; gap: 8px;\n\t\t}\n\t\t.sv-ff-banner svg { flex-shrink: 0; margin-top: 1px; color: #7c3aed; }\n\t\t.sv-ff-banner p { margin: 0; font-size: 12px; color: #4c1d95; line-height: 1.4; }\n\t\t.sv-ff-banner strong { display: block; margin-bottom: 1px; font-size: 12.5px; }\n\n\t\t\/* Compact field rows *\/\n\t\t.sv-field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 10px; }\n\t\t.sv-field-row.full { grid-template-columns: 1fr; }\n\t\t.sv-field-block { display: flex; flex-direction: column; gap: 4px; }\n\t\t.sv-field-block label {\n\t\t\tfont-size: 11px; font-weight: 700; color: #374151;\n\t\t\ttext-transform: uppercase; letter-spacing: .4px;\n\t\t}\n\t\t.sv-field-block label .req { color: #ef4444; margin-left: 2px; }\n\n\t\t\/* Compact input group *\/\n\t\t.sv-input-wrap {\n\t\t\tposition: relative; display: flex; align-items: center;\n\t\t\tborder: 1.5px solid #e5e7eb; border-radius: 8px;\n\t\t\tbackground: #fff; transition: border-color .2s, box-shadow .2s; overflow: hidden;\n\t\t}\n\t\t.sv-input-wrap:focus-within { border-color: #004932; box-shadow: 0 0 0 3px rgba(0,73,50,.08); }\n\t\t.sv-input-wrap.sv-verified   { border-color: #22c55e; background: #f0fdf4; }\n\t\t.sv-input-wrap .sv-icon {\n\t\t\tpadding: 0 10px; color: #9ca3af; font-size: 14px;\n\t\t\tflex-shrink: 0; display: flex; align-items: center;\n\t\t}\n\t\t.sv-input-wrap input,\n\t\t.sv-input-wrap select {\n\t\t\tflex: 1; border: none; outline: none; background: transparent;\n\t\t\tfont-size: 13px; color: #111827; padding: 9px 8px 9px 0; min-width: 0;\n\t\t}\n\t\t.sv-input-wrap input::placeholder { color: #9ca3af; font-size: 12px; }\n\t\t.sv-input-wrap input[readonly]    { color: #065f46; cursor: default; }\n\t\t.sv-tick {\n\t\t\twidth: 18px; height: 18px; border-radius: 50%;\n\t\t\tbackground: #22c55e; display: none;\n\t\t\talign-items: center; justify-content: center;\n\t\t\tflex-shrink: 0; margin-right: 8px;\n\t\t}\n\t\t.sv-tick svg { width: 10px; height: 10px; color: #fff; }\n\n\t\t\/* Date row *\/\n\t\t.sv-date-row { display: grid; grid-template-columns: 2fr 3fr 2fr; gap: 6px; }\n\t\t.sv-date-row select {\n\t\t\tborder: 1.5px solid #e5e7eb; border-radius: 8px;\n\t\t\tpadding: 9px 8px; font-size: 13px; color: #111827;\n\t\t\tbackground: #fff; outline: none; width: 100%; cursor: pointer;\n\t\t\ttransition: border-color .2s, box-shadow .2s;\n\t\t}\n\t\t.sv-date-row select:focus { border-color: #004932; box-shadow: 0 0 0 3px rgba(0,73,50,.08); }\n\t\t.sv-date-row select.sv-verified-sel { border-color: #22c55e; background: #f0fdf4; color: #065f46; }\n\t\t#sv-grad-date-value { display: none; }\n\n\t\t\/* Password strength *\/\n\t\t.sv-strength-wrap  { display:flex; align-items:center; gap:8px; margin-top:5px; }\n\t\t.sv-strength-bar   { display:flex; gap:3px; flex:1; }\n\t\t.sv-strength-segment {\n\t\t\theight:4px; flex:1; border-radius:50px; background:#e5e7eb; transition:background .25s;\n\t\t}\n\t\t.sv-score-1 .sv-strength-segment:nth-child(1)    { background:#ef4444; }\n\t\t.sv-score-2 .sv-strength-segment:nth-child(-n+2) { background:#f97316; }\n\t\t.sv-score-3 .sv-strength-segment:nth-child(-n+3) { background:#eab308; }\n\t\t.sv-score-4 .sv-strength-segment:nth-child(-n+4) { background:#22c55e; }\n\t\t.sv-strength-label { font-size:10.5px; font-weight:700; min-width:44px; text-align:right; letter-spacing:.3px; transition:color .25s; }\n\t\t.sv-pass-checklist {\n\t\t\tlist-style:none; padding:0; margin:6px 0 0;\n\t\t\tdisplay:grid; grid-template-columns:1fr 1fr; gap:3px 10px;\n\t\t}\n\t\t.sv-chk { font-size:11px; color:#9ca3af; display:flex; align-items:center; gap:4px; transition:color .2s; }\n\t\t.sv-chk-icon {\n\t\t\tfont-size:9px; font-weight:700; width:14px; height:14px; border-radius:50%;\n\t\t\tdisplay:inline-flex; align-items:center; justify-content:center;\n\t\t\tbackground:#f3f4f6; transition:background .2s,color .2s; flex-shrink:0;\n\t\t}\n\t\t.sv-chk.pass      { color:#16a34a; }\n\t\t.sv-chk.pass .sv-chk-icon { background:#dcfce7; color:#16a34a; }\n\t\t.sv-chk.fail      { color:#ef4444; }\n\t\t.sv-chk.fail .sv-chk-icon { background:#fee2e2; color:#ef4444; }\n\t\t#sv-match-msg { font-size:11.5px; margin:3px 0 0; display:none; }\n\t\t#sv-match-msg.sv-ok  { color:#16a34a; }\n\t\t#sv-match-msg.sv-err { color:#ef4444; }\n\n\t\t\/* Submit *\/\n\t\t.sv-submit-btn {\n\t\t\twidth: 100%; padding: 13px;\n\t\t\tbackground: linear-gradient(135deg,#004932,#00734e);\n\t\t\tcolor: #fff; border: none; border-radius: 50px;\n\t\t\tfont-size: 14px; font-weight: 700; cursor: pointer;\n\t\t\ttransition: opacity .2s, transform .15s;\n\t\t\tmargin-top: 14px; letter-spacing: .3px;\n\t\t}\n\t\t.sv-submit-btn.sv-guest-btn { background: linear-gradient(135deg,#92400e,#d97706); }\n\t\t.sv-submit-btn.sv-ff-btn { background: linear-gradient(135deg,#5b21b6,#7c3aed); }\n\t\t.sv-submit-btn:hover:not(:disabled) { opacity: .9; transform: translateY(-1px); }\n\t\t.sv-submit-btn:disabled { opacity: .5; cursor: not-allowed; }\n\n\t\t\/* Divider *\/\n\t\t.sv-divider { border: none; border-top: 1px solid #f0f0f0; margin: 14px 0; }\n\n\t\t\/* Eye toggle *\/\n\t\t.sv-eye-toggle {\n\t\t\tdisplay: flex; align-items: center; justify-content: center;\n\t\t\tpadding: 0 10px; cursor: pointer; color: #9ca3af;\n\t\t\tflex-shrink: 0; transition: color .15s;\n\t\t\tbackground: transparent; border: none; outline: none; line-height: 1;\n\t\t}\n\t\t.sv-eye-toggle:hover { color: #374151; }\n\n\t\t\/* =====================================================================\n\t\t   PENDING PANEL\n\t\t===================================================================== *\/\n\t\t#sv-pending-panel {\n\t\t\tmax-width: 480px; margin: 0 auto; padding: 36px 32px 28px;\n\t\t\tbackground: #fff; border-radius: 20px; box-shadow: 0 4px 32px rgba(0,0,0,.08);\n\t\t\ttext-align: center; display: none; animation: sv-fadein .35s ease;\n\t\t}\n\t\t.sv-pending-icon {\n\t\t\twidth: 64px; height: 64px; background: linear-gradient(135deg,#92400e,#d97706);\n\t\t\tborder-radius: 50%; display: flex; align-items: center; justify-content: center;\n\t\t\tmargin: 0 auto 18px;\n\t\t}\n\t\t.sv-pending-icon svg { color: #fff; }\n\t\t#sv-pending-panel h3 { font-size: 20px; font-weight: 700; color: #0f1a14; margin: 0 0 10px; }\n\t\t#sv-pending-panel p  { font-size: 13.5px; color: #6b7280; line-height: 1.6; margin: 0 0 16px; }\n\t\t.sv-pending-steps {\n\t\t\tbackground: #fffbeb; border: 1px solid #fcd34d;\n\t\t\tborder-radius: 12px; padding: 16px 18px; text-align: left; margin-bottom: 16px;\n\t\t}\n\t\t.sv-pending-steps p  { margin: 0 0 8px; font-weight: 700; color: #78350f; font-size: 13px; }\n\t\t.sv-pending-steps ol { margin: 0; padding-left: 18px; color: #78350f; font-size: 12.5px; line-height: 1.7; }\n\n\t\t\/* =====================================================================\n\t\t   RESEND PANEL\n\t\t===================================================================== *\/\n\t\t#sv-resend-panel {\n\t\t\tmax-width: 480px; margin: 0 auto; padding: 32px 28px;\n\t\t\tbackground: #fff; border-radius: 20px; box-shadow: 0 4px 32px rgba(0,0,0,.08);\n\t\t\ttext-align: center; display: none; animation: sv-fadein .35s ease;\n\t\t}\n\t\t.sv-resend-icon {\n\t\t\twidth: 56px; height: 56px; background: linear-gradient(135deg,#0369a1,#0284c7);\n\t\t\tborder-radius: 50%; display: flex; align-items: center; justify-content: center;\n\t\t\tmargin: 0 auto 16px;\n\t\t}\n\t\t.sv-resend-icon svg { color: #fff; }\n\t\t#sv-resend-panel h3 { font-size: 19px; font-weight: 700; color: #0f1a14; margin: 0 0 8px; }\n\t\t#sv-resend-panel p.sv-resend-sub { font-size: 13.5px; color: #6b7280; margin: 0 0 22px; line-height: 1.55; }\n\t\t#sv-resend-panel p.sv-resend-sub strong { color: #111827; font-weight: 700; }\n\t\t.sv-resend-input-wrap { display: flex; gap: 8px; margin-bottom: 10px; }\n\t\t.sv-resend-input-wrap input {\n\t\t\tflex: 1; padding: 11px 14px; border: 1.5px solid #e5e7eb; border-radius: 10px;\n\t\t\tfont-size: 13.5px; color: #111827; outline: none; transition: border-color .2s, box-shadow .2s;\n\t\t}\n\t\t.sv-resend-input-wrap input:focus { border-color: #004932; box-shadow: 0 0 0 3px rgba(0,73,50,.09); }\n\t\t.sv-resend-btn {\n\t\t\tpadding: 11px 18px; background: linear-gradient(135deg,#004932,#00734e);\n\t\t\tcolor: #fff; border: none; border-radius: 10px;\n\t\t\tfont-size: 13px; font-weight: 700; cursor: pointer; transition: opacity .2s; white-space: nowrap;\n\t\t}\n\t\t.sv-resend-btn:hover { opacity: .88; }\n\t\t.sv-resend-btn:disabled { opacity: .5; cursor: not-allowed; }\n\t\t.sv-resend-feedback {\n\t\t\tfont-size: 12.5px; padding: 9px 13px; border-radius: 9px; text-align: left; display: none; margin-bottom: 10px;\n\t\t}\n\t\t.sv-resend-feedback.ok  { background:#d1fae5;color:#065f46;border:1px solid #6ee7b7;display:block; }\n\t\t.sv-resend-feedback.err { background:#fee2e2;color:#991b1b;border:1px solid #fca5a5;display:block; }\n\t\t.sv-resend-cooldown { font-size: 12px; color: #9ca3af; margin-top: 6px; display: none; }\n\t\t.sv-resend-divider  { border: none; border-top: 1px solid #f0f0f0; margin: 18px 0 14px; }\n\t\t<\/style>\n\n\t\t<div class=\"sv-reg-outer\">\n\n\t\t<!-- ================================================================\n\t\t     STEP 1 \u2014 MATRIC GATE\n\t\t================================================================ -->\n\t\t<div id=\"sv-matric-gate\">\n\t\t\t<div class=\"sv-steps\" id=\"sv-step-indicator\">\n\t\t\t\t<div class=\"sv-step\">\n\t\t\t\t\t<div class=\"sv-step-dot active\" id=\"sv-dot-1\">1<\/div>\n\t\t\t\t\t<div class=\"sv-step-label\">VERIFY<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"sv-step-line\" id=\"sv-line-1\"><\/div>\n\t\t\t\t<div class=\"sv-step\">\n\t\t\t\t\t<div class=\"sv-step-dot inactive\" id=\"sv-dot-2\">2<\/div>\n\t\t\t\t\t<div class=\"sv-step-label\">REGISTER<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\n\t\t\t<div class=\"sv-gate-icon\">\n\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"30\" height=\"30\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\">\n\t\t\t\t\t<path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z\"\/>\n\t\t\t\t<\/svg>\n\t\t\t<\/div>\n\n\t\t\t<h2 id=\"sv-gate-title\">Alumni Verification<\/h2>\n\t\t\t<p class=\"sv-sub\" id=\"sv-gate-sub\">Enter your matric number to verify your alumni status and unlock full community access.<\/p>\n\n\t\t\t<!-- ---------- Matric number panel ---------- -->\n\t\t\t<div class=\"sv-matric-panel\" id=\"sv-matric-panel\">\n\t\t\t\t<label for=\"sv-matric-no\">Matric Number &mdash; e.g. DE.2021\/56765<\/label>\n\t\t\t\t<div class=\"sv-matric-input-wrap\">\n\t\t\t\t\t<input type=\"text\" id=\"sv-matric-no\" placeholder=\"DE.YEAR\/XXXX\" autocomplete=\"off\" maxlength=\"30\" \/>\n\t\t\t\t\t<span class=\"sv-matric-spin\" id=\"sv-matric-spin\">\n\t\t\t\t\t\t<svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#004932\" stroke-width=\"2.5\">\n\t\t\t\t\t\t\t<path d=\"M21 12a9 9 0 11-6.219-8.56\"\/>\n\t\t\t\t\t\t<\/svg>\n\t\t\t\t\t<\/span>\n\t\t\t\t<\/div>\n\n\t\t\t\t<div class=\"sv-matric-feedback\" id=\"sv-matric-feedback\"><\/div>\n\n\t\t\t\t<!-- Alumni preview card -->\n\t\t\t\t<div class=\"sv-alumni-preview\" id=\"sv-alumni-preview\">\n\t\t\t\t\t<div class=\"sv-ap-name\"   id=\"sv-ap-name\"><\/div>\n\t\t\t\t\t<div class=\"sv-ap-detail\" id=\"sv-ap-faculty\"><\/div>\n\t\t\t\t\t<div class=\"sv-ap-detail\" id=\"sv-ap-year\"><\/div>\n\t\t\t\t\t<span class=\"sv-ap-badge\">\n\t\t\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"11\" height=\"11\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg>\n\t\t\t\t\t\tVerified Alumni\n\t\t\t\t\t<\/span>\n\t\t\t\t<\/div>\n\n\t\t\t\t<!-- Primary verify button -->\n\t\t\t\t<button class=\"sv-btn-verify\" id=\"sv-btn-verify\" type=\"button\">Verify Matric Number<\/button>\n\n\t\t\t\t<!-- Proceed button \u2014 appears after successful verification -->\n\t\t\t\t<button type=\"button\" id=\"sv-btn-proceed\" class=\"sv-proceed-btn\">\n\t\t\t\t\tProceed to Registration &rarr;\n\t\t\t\t<\/button>\n\n\t\t\t\t<!-- Forgot mat no. -->\n\t\t\t\t<span class=\"sv-guest-register-link\">\n\t\t\t\t\tForgot Mat No.? <a id=\"sv-name-search-link\" href=\"#\">Find my record by name<\/a>\n\t\t\t\t<\/span>\n\t\t\t<\/div>\n\n\t\t\t<!-- ---------- Name-search (Forgot Mat No.) panel ---------- -->\n\t\t\t<div class=\"sv-name-search-panel\" id=\"sv-name-search-panel\">\n\t\t\t\t<p class=\"sv-name-search-intro\">Enter your full name exactly as it appears on your graduation list. We'll look you up and generate your matric number automatically.<\/p>\n\n\t\t\t\t<label for=\"sv-graduand-name\">Full Name<\/label>\n\t\t\t\t<div class=\"sv-matric-input-wrap\">\n\t\t\t\t\t<input type=\"text\" id=\"sv-graduand-name\" placeholder=\"e.g. John Michael Doe\" autocomplete=\"off\" maxlength=\"120\" style=\"text-transform:none;\" \/>\n\t\t\t\t\t<span class=\"sv-matric-spin\" id=\"sv-graduand-spin\">\n\t\t\t\t\t\t<svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#004932\" stroke-width=\"2.5\">\n\t\t\t\t\t\t\t<path d=\"M21 12a9 9 0 11-6.219-8.56\"\/>\n\t\t\t\t\t\t<\/svg>\n\t\t\t\t\t<\/span>\n\t\t\t\t<\/div>\n\n\t\t\t\t<div class=\"sv-matric-feedback\" id=\"sv-graduand-feedback\"><\/div>\n\n\t\t\t\t<!-- Graduand preview card -->\n\t\t\t\t<div class=\"sv-alumni-preview\" id=\"sv-graduand-preview\">\n\t\t\t\t\t<div class=\"sv-ap-name\"   id=\"sv-gp-name\"><\/div>\n\t\t\t\t\t<div class=\"sv-ap-detail\" id=\"sv-gp-faculty\"><\/div>\n\t\t\t\t\t<div class=\"sv-ap-detail\" id=\"sv-gp-year\"><\/div>\n\t\t\t\t\t<div class=\"sv-ap-detail\" id=\"sv-gp-matno\"><\/div>\n\t\t\t\t\t<span class=\"sv-ap-badge\">\n\t\t\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"11\" height=\"11\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg>\n\t\t\t\t\t\tGraduand Record Found\n\t\t\t\t\t<\/span>\n\t\t\t\t<\/div>\n\n\t\t\t\t<button class=\"sv-btn-verify\" id=\"sv-btn-search-graduand\" type=\"button\">Find My Record<\/button>\n\t\t\t\t<button type=\"button\" id=\"sv-btn-proceed-graduand\" class=\"sv-proceed-btn\">\n\t\t\t\t\tProceed to Registration &rarr;\n\t\t\t\t<\/button>\n\n\t\t\t\t<span class=\"sv-guest-register-link\">\n\t\t\t\t\t<a id=\"sv-back-to-matric-link\" href=\"#\">&larr; Back to matric number verification<\/a>\n\t\t\t\t<\/span>\n\t\t\t<\/div>\n\n\t\t\t<div class=\"col-md-12 text-center\"><p class=\"register-link\">Already have an account?<a id=\"user_forget_form\" href=\"https:\/\/www.rsu.edu.ng\/rsualumni\/\" class=\"socialv-button socialv-button-link\">Login<\/a><\/p><\/div>\t\t<\/div><!-- #sv-matric-gate -->\n\n\t\t<!-- ================================================================\n\t\t     STEP 2 \u2014 REGISTRATION FORM\n\t\t================================================================ -->\n\t\t<div id=\"sv-reg-form-wrap\" class=\"card-main socialv-bp-login\">\n\t\t\t<div class=\"card-inner\">\n\n\t\t\t\t<div class=\"sv-form-header\" id=\"sv-form-header\">\n\t\t\t\t\t<h3 id=\"sv-form-title\">Create Your Account<\/h3>\n\t\t\t\t\t<p  id=\"sv-form-subtitle\">Complete the fields below to finish registration<\/p>\n\t\t\t\t<\/div>\n\n\t\t\t\t<div class=\"sv-form-body socialv-login-form\">\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t<!-- ============================================================\n\t\t\t\t\t\t     REGISTRATION FORM\n\t\t\t\t\t\t============================================================ -->\n\t\t\t\t\t\t<form id=\"registerform\" action=\"\/rsualumni\/wp-json\/wp\/v2\/pages\/248\" method=\"POST\" novalidate>\n\n\t\t\t\t\t\t\t<!-- Guest banner -->\n\t\t\t\t\t\t\t<div class=\"sv-guest-banner\" id=\"sv-guest-banner\" style=\"display:none;\">\n\t\t\t\t\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"\/><line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"\/><\/svg>\n\t\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t\t<strong>Your Registeration &mdash; Is Pending Admin Approval<\/strong>\n\t\t\t\t\t\t\t\t\tFill in your details and submit. An administrator will review and approve your account. You will be notified by email once approved.\n\t\t\t\t\t\t\t\t<\/p>\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t\t<!-- Graduand-matched banner -->\n\t\t\t\t\t\t\t<div class=\"sv-ff-banner\" id=\"sv-ff-banner\" style=\"display:none;\">\n\t\t\t\t\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z\"\/><\/svg>\n\t\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t\t<strong>Matched to a Graduand Record<\/strong>\n\t\t\t\t\t\t\t\t\tA matric number has been generated for you below. Complete your email, username and password, then confirm the verification link we send you.\n\t\t\t\t\t\t\t\t<\/p>\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t\t<!-- Hidden fields -->\n\t\t\t\t\t\t\t<input type=\"hidden\" name=\"socialv_mat_no\"                 id=\"sv-hidden-mat-no\"      value=\"\" \/>\n\t\t\t\t\t\t\t<input type=\"hidden\" name=\"socialv_alumni_status\"          id=\"sv-hidden-status\"      value=\"guest\" \/>\n\t\t\t\t\t\t\t<input type=\"hidden\" name=\"socialv_verify_source\"          id=\"sv-hidden-source\"      value=\"guest\" \/>\n\t\t\t\t\t\t\t<input type=\"hidden\" name=\"socialv_fluent_submission_id\"   id=\"sv-hidden-submission\"  value=\"\" \/>\n\t\t\t\t\t\t\t<input type=\"hidden\" name=\"socialv_year_of_graduation\" id=\"sv-grad-date-value\"\n\t\t\t\t\t\t\t\tvalue=\"\" \/>\n\n\t\t\t\t\t\t\t<!-- Row 1: Full Name -->\n\t\t\t\t\t\t\t<div class=\"sv-field-row full\">\n\t\t\t\t\t\t\t\t<div class=\"sv-field-block\">\n\t\t\t\t\t\t\t\t\t<label>Full Name <span class=\"req\">*<\/span><\/label>\n\t\t\t\t\t\t\t\t\t<div class=\"sv-input-wrap\" id=\"sv-wrap-fullname\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"sv-icon\"><i class=\"iconly-Add-User icli\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t<input name=\"socialv_user_full_name\" id=\"socialv_user_full_name\" type=\"text\"\n\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"Your full name\"\n\t\t\t\t\t\t\t\t\t\t\tvalue=\"\" \/>\n\t\t\t\t\t\t\t\t\t\t<div class=\"sv-tick\" id=\"sv-tick-fullname\">\n\t\t\t\t\t\t\t\t\t\t\t<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg>\n\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t\t<!-- Row 2: Username + Matric -->\n\t\t\t\t\t\t\t<div class=\"sv-field-row\">\n\t\t\t\t\t\t\t\t<div class=\"sv-field-block\">\n\t\t\t\t\t\t\t\t\t<label>Username <span class=\"req\">*<\/span><\/label>\n\t\t\t\t\t\t\t\t\t<div class=\"sv-input-wrap\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"sv-icon\"><i class=\"iconly-Add-User icli\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t<input name=\"socialv_user_login\" id=\"socialv_user_login\" type=\"text\"\n\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"Choose username\"\n\t\t\t\t\t\t\t\t\t\t\tvalue=\"\"\n\t\t\t\t\t\t\t\t\t\t\tmaxlength=\"10\" required \/>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<span style=\"font-size:10.5px;color:#9ca3af;margin-top:2px;\">Letters, numbers, - _ only<\/span>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"sv-field-block\" id=\"sv-matric-field-wrap\">\n\t\t\t\t\t\t\t\t\t<label>Matric No. <span class=\"req\" id=\"sv-matric-req\">*<\/span><\/label>\n\t\t\t\t\t\t\t\t\t<div class=\"sv-input-wrap\" id=\"sv-matric-input-wrap\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"sv-icon\"><i class=\"iconly-Ticket-Star icli\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t<input id=\"sv-display-matric\" type=\"text\"\n\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"Verified matric\"\n\t\t\t\t\t\t\t\t\t\t\tvalue=\"\"\n\t\t\t\t\t\t\t\t\t\t\treadonly \/>\n\t\t\t\t\t\t\t\t\t\t<div class=\"sv-tick\" id=\"sv-matric-tick\">\n\t\t\t\t\t\t\t\t\t\t\t<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg>\n\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<span style=\"font-size:10px;color:#9ca3af;margin-top:2px;display:none;\" id=\"sv-matric-generated-note\">Auto-generated from your graduand record<\/span>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t\t<!-- Row 3: Email -->\n\t\t\t\t\t\t\t<div class=\"sv-field-row full\">\n\t\t\t\t\t\t\t\t<div class=\"sv-field-block\">\n\t\t\t\t\t\t\t\t\t<label>Email Address <span class=\"req\">*<\/span><\/label>\n\t\t\t\t\t\t\t\t\t<div class=\"sv-input-wrap\" id=\"sv-wrap-email\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"sv-icon\"><i class=\"iconly-Message icli\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t<input name=\"socialv_user_email\" id=\"socialv_user_email\" type=\"email\"\n\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"your@email.com\"\n\t\t\t\t\t\t\t\t\t\t\tvalue=\"\"\n\t\t\t\t\t\t\t\t\t\t\trequired \/>\n\t\t\t\t\t\t\t\t\t\t<div class=\"sv-tick\" id=\"sv-tick-email\">\n\t\t\t\t\t\t\t\t\t\t\t<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg>\n\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t\t<!-- Row 4: Faculty -->\n\t\t\t\t\t\t\t<div class=\"sv-field-row full\">\n\t\t\t\t\t\t\t\t<div class=\"sv-field-block\">\n\t\t\t\t\t\t\t\t\t<label>Faculty \/ Department <span class=\"req\">*<\/span><\/label>\n\t\t\t\t\t\t\t\t\t<div class=\"sv-input-wrap\" id=\"sv-wrap-faculty\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"sv-icon\"><i class=\"iconly-Category icli\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t<input name=\"socialv_faculty_department\" id=\"socialv_faculty_department\" type=\"text\"\n\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"e.g. Science \/ Computer Science\"\n\t\t\t\t\t\t\t\t\t\t\tvalue=\"\" \/>\n\t\t\t\t\t\t\t\t\t\t<div class=\"sv-tick\" id=\"sv-tick-faculty\">\n\t\t\t\t\t\t\t\t\t\t\t<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg>\n\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t\t<!-- Row 5: Graduation Date -->\n\t\t\t\t\t\t\t<div class=\"sv-field-row full\" id=\"sv-grad-date-row\">\n\t\t\t\t\t\t\t\t<div class=\"sv-field-block\">\n\t\t\t\t\t\t\t\t\t<label>Date of Graduation <span class=\"req\">*<\/span><\/label>\n\t\t\t\t\t\t\t\t\t<div class=\"sv-date-row\" id=\"sv-date-row\">\n\t\t\t\t\t\t\t\t\t\t<select id=\"sv-grad-day\" aria-label=\"Day\">\n\t\t\t\t\t\t\t\t\t\t\t<option value=\"\">Day<\/option>\n\t\t\t\t\t\t\t\t\t\t\t<option value=\"1\">1<\/option><option value=\"2\">2<\/option><option value=\"3\">3<\/option><option value=\"4\">4<\/option><option value=\"5\">5<\/option><option value=\"6\">6<\/option><option value=\"7\">7<\/option><option value=\"8\">8<\/option><option value=\"9\">9<\/option><option value=\"10\">10<\/option><option value=\"11\">11<\/option><option value=\"12\">12<\/option><option value=\"13\">13<\/option><option value=\"14\">14<\/option><option value=\"15\">15<\/option><option value=\"16\">16<\/option><option value=\"17\">17<\/option><option value=\"18\">18<\/option><option value=\"19\">19<\/option><option value=\"20\">20<\/option><option value=\"21\">21<\/option><option value=\"22\">22<\/option><option value=\"23\">23<\/option><option value=\"24\">24<\/option><option value=\"25\">25<\/option><option value=\"26\">26<\/option><option value=\"27\">27<\/option><option value=\"28\">28<\/option><option value=\"29\">29<\/option><option value=\"30\">30<\/option><option value=\"31\">31<\/option>\t\t\t\t\t\t\t\t\t\t<\/select>\n\t\t\t\t\t\t\t\t\t\t<select id=\"sv-grad-month\" aria-label=\"Month\">\n\t\t\t\t\t\t\t\t\t\t\t<option value=\"\">Month<\/option>\n\t\t\t\t\t\t\t\t\t\t\t<option value=\"01\">January<\/option><option value=\"02\">February<\/option><option value=\"03\">March<\/option><option value=\"04\">April<\/option><option value=\"05\">May<\/option><option value=\"06\">June<\/option><option value=\"07\">July<\/option><option value=\"08\">August<\/option><option value=\"09\">September<\/option><option value=\"10\">October<\/option><option value=\"11\">November<\/option><option value=\"12\">December<\/option>\t\t\t\t\t\t\t\t\t\t<\/select>\n\t\t\t\t\t\t\t\t\t\t<select id=\"sv-grad-year\" aria-label=\"Year\">\n\t\t\t\t\t\t\t\t\t\t\t<option value=\"\">Year<\/option>\n\t\t\t\t\t\t\t\t\t\t\t<option value=\"2034\">2034<\/option><option value=\"2033\">2033<\/option><option value=\"2032\">2032<\/option><option value=\"2031\">2031<\/option><option value=\"2030\">2030<\/option><option value=\"2029\">2029<\/option><option value=\"2028\">2028<\/option><option value=\"2027\">2027<\/option><option value=\"2026\">2026<\/option><option value=\"2025\">2025<\/option><option value=\"2024\">2024<\/option><option value=\"2023\">2023<\/option><option value=\"2022\">2022<\/option><option value=\"2021\">2021<\/option><option value=\"2020\">2020<\/option><option value=\"2019\">2019<\/option><option value=\"2018\">2018<\/option><option value=\"2017\">2017<\/option><option value=\"2016\">2016<\/option><option value=\"2015\">2015<\/option><option value=\"2014\">2014<\/option><option value=\"2013\">2013<\/option><option value=\"2012\">2012<\/option><option value=\"2011\">2011<\/option><option value=\"2010\">2010<\/option><option value=\"2009\">2009<\/option><option value=\"2008\">2008<\/option><option value=\"2007\">2007<\/option><option value=\"2006\">2006<\/option><option value=\"2005\">2005<\/option><option value=\"2004\">2004<\/option><option value=\"2003\">2003<\/option><option value=\"2002\">2002<\/option><option value=\"2001\">2001<\/option><option value=\"2000\">2000<\/option><option value=\"1999\">1999<\/option><option value=\"1998\">1998<\/option><option value=\"1997\">1997<\/option><option value=\"1996\">1996<\/option><option value=\"1995\">1995<\/option><option value=\"1994\">1994<\/option><option value=\"1993\">1993<\/option><option value=\"1992\">1992<\/option><option value=\"1991\">1991<\/option><option value=\"1990\">1990<\/option><option value=\"1989\">1989<\/option><option value=\"1988\">1988<\/option><option value=\"1987\">1987<\/option><option value=\"1986\">1986<\/option><option value=\"1985\">1985<\/option><option value=\"1984\">1984<\/option><option value=\"1983\">1983<\/option><option value=\"1982\">1982<\/option><option value=\"1981\">1981<\/option><option value=\"1980\">1980<\/option><option value=\"1979\">1979<\/option><option value=\"1978\">1978<\/option><option value=\"1977\">1977<\/option><option value=\"1976\">1976<\/option><option value=\"1975\">1975<\/option><option value=\"1974\">1974<\/option><option value=\"1973\">1973<\/option><option value=\"1972\">1972<\/option><option value=\"1971\">1971<\/option><option value=\"1970\">1970<\/option>\t\t\t\t\t\t\t\t\t\t<\/select>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<span id=\"sv-grad-date-display\" style=\"font-size:11.5px;color:#059669;margin-top:4px;display:none;font-weight:600;\"><\/span>\n\t\t\t\t\t\t\t\t\t<span id=\"sv-grad-year-display\" style=\"font-size:11.5px;color:#059669;margin-top:4px;display:none;font-weight:600;\"><\/span>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t\t<hr class=\"sv-divider\">\n\n\t\t\t\t\t\t\t<!-- Row 6: Password -->\n\t\t\t\t\t\t\t<div class=\"sv-field-row full\">\n\t\t\t\t\t\t\t\t<div class=\"sv-field-block\">\n\t\t\t\t\t\t\t\t\t<label>Password <span class=\"req\">*<\/span><\/label>\n\t\t\t\t\t\t\t\t\t<div class=\"sv-input-wrap\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"sv-icon\"><i class=\"iconly-Lock icli\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t<input class=\"socialv-password-field\" name=\"socialv_user_pass\" id=\"password\" type=\"password\"\n\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"Min. 8 chars, upper, lower, number, symbol\"\n\t\t\t\t\t\t\t\t\t\t\tminlength=\"8\" autocomplete=\"new-password\" required \/>\n\t\t\t\t\t\t\t\t\t\t<button type=\"button\" class=\"sv-eye-toggle\" data-target=\"password\" aria-label=\"Show password\">\n\t\t\t\t\t\t\t\t\t\t\t<svg class=\"sv-eye-icon\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"18\" height=\"18\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\"\/><circle cx=\"12\" cy=\"12\" r=\"3\"\/><\/svg>\n\t\t\t\t\t\t\t\t\t\t\t<svg class=\"sv-eye-off-icon\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"18\" height=\"18\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\" style=\"display:none;\"><path d=\"M17.94 17.94A10.07 10.07 0 0112 20c-7 0-11-8-11-8a18.45 18.45 0 015.06-5.94M9.9 4.24A9.12 9.12 0 0112 4c7 0 11 8 11 8a18.5 18.5 0 01-2.16 3.19m-6.72-1.07a3 3 0 11-4.24-4.24\"\/><line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\"\/><\/svg>\n\t\t\t\t\t\t\t\t\t\t<\/button>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"sv-strength-wrap\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"sv-strength-bar\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"sv-strength-segment\"><\/span><span class=\"sv-strength-segment\"><\/span>\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"sv-strength-segment\"><\/span><span class=\"sv-strength-segment\"><\/span>\n\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t<span class=\"sv-strength-label\" id=\"sv-strength-label\"><\/span>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<ul class=\"sv-pass-checklist\">\n\t\t\t\t\t\t\t\t\t\t<li id=\"sv-chk-len\"   class=\"sv-chk\"><span class=\"sv-chk-icon\">\u2715<\/span> 8+ characters<\/li>\n\t\t\t\t\t\t\t\t\t\t<li id=\"sv-chk-upper\" class=\"sv-chk\"><span class=\"sv-chk-icon\">\u2715<\/span> Uppercase (A\u2013Z)<\/li>\n\t\t\t\t\t\t\t\t\t\t<li id=\"sv-chk-lower\" class=\"sv-chk\"><span class=\"sv-chk-icon\">\u2715<\/span> Lowercase (a\u2013z)<\/li>\n\t\t\t\t\t\t\t\t\t\t<li id=\"sv-chk-num\"   class=\"sv-chk\"><span class=\"sv-chk-icon\">\u2715<\/span> Number (0\u20139)<\/li>\n\t\t\t\t\t\t\t\t\t\t<li id=\"sv-chk-sym\"   class=\"sv-chk\"><span class=\"sv-chk-icon\">\u2715<\/span> Special (!@#$%\u2026)<\/li>\n\t\t\t\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t\t<!-- Row 7: Confirm Password -->\n\t\t\t\t\t\t\t<div class=\"sv-field-row full\">\n\t\t\t\t\t\t\t\t<div class=\"sv-field-block\">\n\t\t\t\t\t\t\t\t\t<label>Confirm Password <span class=\"req\">*<\/span><\/label>\n\t\t\t\t\t\t\t\t\t<div class=\"sv-input-wrap\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"sv-icon\"><i class=\"iconly-Lock icli\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t<input class=\"socialv-password-field\" name=\"socialv_user_pass_confirm\" id=\"password_again\" type=\"password\"\n\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"Re-enter your password\"\n\t\t\t\t\t\t\t\t\t\t\tminlength=\"8\" autocomplete=\"new-password\" required \/>\n\t\t\t\t\t\t\t\t\t\t<button type=\"button\" class=\"sv-eye-toggle\" data-target=\"password_again\" aria-label=\"Show password\">\n\t\t\t\t\t\t\t\t\t\t\t<svg class=\"sv-eye-icon\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"18\" height=\"18\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\"\/><circle cx=\"12\" cy=\"12\" r=\"3\"\/><\/svg>\n\t\t\t\t\t\t\t\t\t\t\t<svg class=\"sv-eye-off-icon\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"18\" height=\"18\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\" style=\"display:none;\"><path d=\"M17.94 17.94A10.07 10.07 0 0112 20c-7 0-11-8-11-8a18.45 18.45 0 015.06-5.94M9.9 4.24A9.12 9.12 0 0112 4c7 0 11 8 11 8a18.5 18.5 0 01-2.16 3.19m-6.72-1.07a3 3 0 11-4.24-4.24\"\/><line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\"\/><\/svg>\n\t\t\t\t\t\t\t\t\t\t<\/button>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<p class=\"sv-match-msg\" id=\"sv-match-msg\"><\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t\t<!-- reCAPTCHA -->\n\t\t\t\t\t\t\t<div><\/div>\n\n\t\t\t\t\t\t\t<!-- Nonce + Submit -->\n\t\t\t\t\t\t\t<input type=\"hidden\" name=\"socialv_register_nonce\" value=\"d0d79ab771\" \/>\n\t\t\t\t\t\t\t<button type=\"submit\" id=\"sv-register-btn\" class=\"sv-submit-btn\" disabled>\n\t\t\t\t\t\t\t\tCreate Account\t\t\t\t\t\t\t<\/button>\n\n\t\t\t\t\t\t\t<!-- Back link -->\n\t\t\t\t\t\t\t<p style=\"text-align:center;margin-top:12px;\">\n\t\t\t\t\t\t\t\t<a href=\"#\" id=\"sv-back-link\" style=\"font-size:12px;color:#9ca3af;text-decoration:none;\">\n\t\t\t\t\t\t\t\t\t&larr; Back to verification\n\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t<\/p>\n\n\t\t\t\t\t\t<\/form>\n\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"col-md-12 text-center\"><p class=\"register-link\">Already have an account?<a id=\"user_forget_form\" href=\"https:\/\/www.rsu.edu.ng\/rsualumni\/\" class=\"socialv-button socialv-button-link\">Login<\/a><\/p><\/div>\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div><!-- #sv-reg-form-wrap -->\n\n\t\t<!-- ================================================================\n\t\t     PENDING PANEL\n\t\t================================================================ -->\n\t\t<div id=\"sv-pending-panel\">\n\t\t\t<div class=\"sv-pending-icon\">\n\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"28\" height=\"28\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><polyline points=\"12 6 12 12 16 14\"\/><\/svg>\n\t\t\t<\/div>\n\t\t\t<h3>Registration Submitted!<\/h3>\n\t\t\t<p>Your guest account has been submitted and is <strong>awaiting admin approval<\/strong>. You'll receive an email once your account is approved and ready to use.<\/p>\n\t\t\t<div class=\"sv-pending-steps\">\n\t\t\t\t<p>What happens next?<\/p>\n\t\t\t\t<ol>\n\t\t\t\t\t<li>An admin reviews your registration details.<\/li>\n\t\t\t\t\t<li>Your account is approved (usually within 24\u201348 hours).<\/li>\n\t\t\t\t\t<li>You receive an email with your login details.<\/li>\n\t\t\t\t\t<li>Log in and enjoy community access!<\/li>\n\t\t\t\t<\/ol>\n\t\t\t<\/div>\n\t\t\t<p style=\"font-size:12px;color:#9ca3af;\">Also check your <strong>spam<\/strong> or <strong>junk<\/strong> folder for the approval email.<\/p>\n\t\t<\/div>\n\n\t\t<!-- ================================================================\n\t\t     RESEND VERIFICATION PANEL\n\t\t================================================================ -->\n\t\t<div id=\"sv-resend-panel\">\n\t\t\t<div class=\"sv-resend-icon\">\n\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"26\" height=\"26\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z\"\/><\/svg>\n\t\t\t<\/div>\n\t\t\t<h3>Check Your Email<\/h3>\n\t\t\t<p class=\"sv-resend-sub\">\n\t\t\t\tWe've sent an activation link to <strong id=\"sv-resend-email-display\">your email<\/strong>.\n\t\t\t\tClick the link in that email to activate your account and log in.\n\t\t\t<\/p>\n\t\t\t<div class=\"sv-resend-feedback\" id=\"sv-resend-feedback\"><\/div>\n\t\t\t<p style=\"font-size:12.5px;color:#374151;font-weight:600;margin:0 0 8px;text-align:left;\">Didn't receive it?<\/p>\n\t\t\t<div class=\"sv-resend-input-wrap\">\n\t\t\t\t<input type=\"email\" id=\"sv-resend-email\" placeholder=\"Confirm your email address\" autocomplete=\"email\" \/>\n\t\t\t\t<button class=\"sv-resend-btn\" id=\"sv-resend-btn\" type=\"button\">Resend Email<\/button>\n\t\t\t<\/div>\n\t\t\t<p class=\"sv-resend-cooldown\" id=\"sv-resend-cooldown\"><\/p>\n\t\t\t<hr class=\"sv-resend-divider\">\n\t\t\t<p style=\"font-size:12px;color:#9ca3af;margin:0;\">\n\t\t\t\tAlso check your <strong>spam<\/strong> or <strong>junk<\/strong> folder. The link expires after 1hr.\n\t\t\t<\/p>\n\t\t<\/div>\n\n\t\t<\/div><!-- .sv-reg-outer -->\n\n\t\t<!-- ================================================================\n\t\t     JAVASCRIPT \u2014 all logic in one IIFE, no globals\n\t\t================================================================ -->\n\t\t<script>\n\t\t(function () {\n\t\t\t'use strict';\n\n\t\t\t\/* ------------------------------------------------------------------\n\t\t\t   DOM refs\n\t\t\t------------------------------------------------------------------ *\/\n\t\t\tvar gate         = document.getElementById('sv-matric-gate');\n\t\t\tvar formWrap     = document.getElementById('sv-reg-form-wrap');\n\t\t\tvar pendingPanel = document.getElementById('sv-pending-panel');\n\t\t\tvar resendPanel  = document.getElementById('sv-resend-panel');\n\n\t\t\tvar matricPanel    = document.getElementById('sv-matric-panel');\n\t\t\tvar nameSearchPanel= document.getElementById('sv-name-search-panel');\n\t\t\tvar gateTitle      = document.getElementById('sv-gate-title');\n\t\t\tvar gateSub        = document.getElementById('sv-gate-sub');\n\n\t\t\tvar matInput  = document.getElementById('sv-matric-no');\n\t\t\tvar verifyBtn = document.getElementById('sv-btn-verify');\n\t\t\tvar proceedBtn= document.getElementById('sv-btn-proceed');\n\t\t\tvar nameSearchLink = document.getElementById('sv-name-search-link');\n\t\t\tvar backToMatricLink = document.getElementById('sv-back-to-matric-link');\n\t\t\tvar backLink  = document.getElementById('sv-back-link');\n\t\t\tvar spin      = document.getElementById('sv-matric-spin');\n\t\t\tvar feedback  = document.getElementById('sv-matric-feedback');\n\t\t\tvar preview   = document.getElementById('sv-alumni-preview');\n\n\t\t\tvar graduandNameInput = document.getElementById('sv-graduand-name');\n\t\t\tvar graduandSpin      = document.getElementById('sv-graduand-spin');\n\t\t\tvar graduandFeedback  = document.getElementById('sv-graduand-feedback');\n\t\t\tvar graduandPreview   = document.getElementById('sv-graduand-preview');\n\t\t\tvar searchGraduandBtn = document.getElementById('sv-btn-search-graduand');\n\t\t\tvar proceedGraduandBtn= document.getElementById('sv-btn-proceed-graduand');\n\n\t\t\tvar formHeader  = document.getElementById('sv-form-header');\n\t\t\tvar formTitle   = document.getElementById('sv-form-title');\n\t\t\tvar formSubtitle= document.getElementById('sv-form-subtitle');\n\t\t\tvar submitBtn   = document.getElementById('sv-register-btn');\n\t\t\tvar guestBanner = document.getElementById('sv-guest-banner');\n\t\t\tvar ffBanner    = document.getElementById('sv-ff-banner');\n\n\t\t\tvar hiddenMat        = document.getElementById('sv-hidden-mat-no');\n\t\t\tvar hiddenStatus     = document.getElementById('sv-hidden-status');\n\t\t\tvar hiddenSource     = document.getElementById('sv-hidden-source');\n\t\t\tvar hiddenSubmission = document.getElementById('sv-hidden-submission');\n\t\t\tvar matricGeneratedNote = document.getElementById('sv-matric-generated-note');\n\n\t\t\tvar dot1  = document.getElementById('sv-dot-1');\n\t\t\tvar dot2  = document.getElementById('sv-dot-2');\n\t\t\tvar line1 = document.getElementById('sv-line-1');\n\n\t\t\tvar fieldName    = document.getElementById('socialv_user_full_name');\n\t\t\tvar fieldFaculty = document.getElementById('socialv_faculty_department');\n\t\t\tvar fieldEmail   = document.getElementById('socialv_user_email');\n\t\t\tvar dispMatric   = document.getElementById('sv-display-matric');\n\t\t\tvar matricReq    = document.getElementById('sv-matric-req');\n\t\t\tvar matricWrap   = document.getElementById('sv-matric-input-wrap');\n\t\t\tvar gradDateRow  = document.getElementById('sv-grad-date-row');\n\t\t\tvar gradDay      = document.getElementById('sv-grad-day');\n\t\t\tvar gradMonth    = document.getElementById('sv-grad-month');\n\t\t\tvar gradYear     = document.getElementById('sv-grad-year');\n\t\t\tvar gradHidden   = document.getElementById('sv-grad-date-value');\n\t\t\tvar gradDisplay  = document.getElementById('sv-grad-date-display');\n\t\t\tvar gradYearDisplay = document.getElementById('sv-grad-year-display');\n\n\t\t\tvar tickFullname = document.getElementById('sv-tick-fullname');\n\t\t\tvar tickEmail    = document.getElementById('sv-tick-email');\n\t\t\tvar tickFaculty  = document.getElementById('sv-tick-faculty');\n\t\t\tvar matricTick   = document.getElementById('sv-matric-tick');\n\n\t\t\tif (dispMatric) {\n    dispMatric.addEventListener('input', function () {\n        dispMatric.value = dispMatric.value.toUpperCase();\n        if (isGuestFlow) hiddenMat.value = dispMatric.value.trim();\n    });\n}\n\n\t\t\tvar passInput    = document.getElementById('password');\n\t\t\tvar confirmInput = document.getElementById('password_again');\n\t\t\tvar matchMsg     = document.getElementById('sv-match-msg');\n\t\t\tvar bar          = document.querySelector('.sv-strength-bar');\n\t\t\tvar strengthLbl  = document.getElementById('sv-strength-label');\n\n\t\t\tvar ajaxUrl     = 'https:\/\/www.rsu.edu.ng\/rsualumni\/wp-admin\/admin-ajax.php';\n\t\t\tvar matricNonce = '5d7954b2c7';\n\t\t\tvar graduandNonce = '9987c45af6';\n\t\t\tvar resendNonce = '4117627672';\n\n\t\t\tvar MONTHS = ['January','February','March','April','May','June','July','August','September','October','November','December'];\n\n\t\t\t\/* Verified alumni data received from the AJAX call. *\/\n\t\t\tvar pendingAlumniData = null;\n\n\t\t\t\/* Which verification source produced pendingAlumniData: 'matric' | 'fluentform' *\/\n\t\t\tvar pendingSource = 'matric';\n\n\t\t\t\/* Whether we are in guest mode. *\/\n\t\t\tvar isGuestFlow = false;\n\n\t\t\t\/* ------------------------------------------------------------------\n\t\t\t   Graduation date selects \u2192 hidden input\n\t\t\t------------------------------------------------------------------ *\/\n\t\t\tfunction composeGradDate() {\n\t\t\t\tvar d = gradDay.value, m = gradMonth.value, y = gradYear.value;\n\t\t\t\tif (d && m && y) {\n\t\t\t\t\tgradHidden.value = y + '-' + m + '-' + String(d).padStart(2,'0');\n\t\t\t\t\tgradDisplay.textContent = '\ud83d\udcc5 ' + parseInt(d,10) + ' ' + (MONTHS[parseInt(m,10)-1]||m) + ' ' + y;\n\t\t\t\t\tgradDisplay.style.display = 'block';\n\t\t\t\t} else {\n\t\t\t\t\tgradHidden.value = '';\n\t\t\t\t\tgradDisplay.style.display = 'none';\n\t\t\t\t}\n\t\t\t\tcanSubmit();\n\t\t\t}\n\n\t\t\t[gradDay, gradMonth, gradYear].forEach(function(el){\n\t\t\t\tif (el) el.addEventListener('change', composeGradDate);\n\t\t\t});\n\n\t\t\tfunction setGradDateFromValue(val) {\n\t\t\t\tif (!val) return;\n\t\t\t\tval = String(val).trim();\n\t\t\t\tvar parts = val.split('-');\n\t\t\t\tif (parts.length >= 2) {\n\t\t\t\t\tif (gradYear)  gradYear.value  = parts[0];\n\t\t\t\t\tif (gradMonth) gradMonth.value = String(parseInt(parts[1],10)).padStart(2,'0');\n\t\t\t\t\tif (parts.length >= 3 && gradDay) gradDay.value = String(parseInt(parts[2],10));\n\t\t\t\t} else if (\/^\\d{4}$\/.test(val)) {\n\t\t\t\t\tif (gradYear) gradYear.value = val;\n\t\t\t\t}\n\t\t\t\t\/* Mark selects as verified (green) *\/\n\t\t\t\t[gradDay, gradMonth, gradYear].forEach(function(el){\n\t\t\t\t\tif (el) el.classList.add('sv-verified-sel');\n\t\t\t\t});\n\t\t\t\tcomposeGradDate();\n\t\t\t}\n\n\t\t\t\/* For fluent-form matches we may only have a bare year (no day\/month).\n\t\t\t   In that case, show it as read-only text instead of forcing the selects. *\/\n\t\t\tfunction setGraduationYearOnly(year) {\n\t\t\t\tif (!year) return;\n\t\t\t\tif (gradDateRow) gradDateRow.style.display = 'none';\n\t\t\t\tgradHidden.value = String(year);\n\t\t\t\tif (gradYearDisplay) {\n\t\t\t\t\tgradYearDisplay.textContent = '\ud83c\udf93 Class of ' + year;\n\t\t\t\t\tgradYearDisplay.style.display = 'block';\n\t\t\t\t}\n\t\t\t\tcanSubmit();\n\t\t\t}\n\n\t\t\t\/* ------------------------------------------------------------------\n\t\t\t   Tick \/ verified-wrap helpers\n\t\t\t------------------------------------------------------------------ *\/\n\t\t\tfunction showTick(el) { if (el) el.style.display = 'flex'; }\n\t\t\tfunction hideTick(el) { if (el) el.style.display = 'none'; }\n\t\t\tfunction addVerifiedWrap(id) {\n\t\t\t\tvar el = document.getElementById(id);\n\t\t\t\tif (el) el.classList.add('sv-verified');\n\t\t\t}\n\t\t\tfunction removeVerifiedWrap(id) {\n\t\t\t\tvar el = document.getElementById(id);\n\t\t\t\tif (el) el.classList.remove('sv-verified');\n\t\t\t}\n\n\t\t\t\/* ------------------------------------------------------------------\n\t\t\t   Step indicator helpers\n\t\t\t------------------------------------------------------------------ *\/\n\t\t\tfunction stepToVerify() {\n\t\t\t\tdot1.className  = 'sv-step-dot active';\n\t\t\t\tdot1.textContent= '1';\n\t\t\t\tline1.className = 'sv-step-line';\n\t\t\t\tdot2.className  = 'sv-step-dot inactive';\n\t\t\t}\n\t\t\tfunction stepToRegister() {\n\t\t\t\tdot1.className   = 'sv-step-dot done';\n\t\t\t\tdot1.innerHTML   = '&#10003;';\n\t\t\t\tline1.className  = 'sv-step-line done';\n\t\t\t\tdot2.className   = 'sv-step-dot active';\n\t\t\t}\n\n\t\t\t\/* ------------------------------------------------------------------\n\t\t\t   Show \/ hide panels\n\t\t\t------------------------------------------------------------------ *\/\n\t\t\tfunction showGate()  { gate.style.display = ''; }\n\t\t\tfunction hideGate()  { gate.style.display = 'none'; }\n\t\t\tfunction showForm()  { formWrap.style.display = 'block'; }\n\t\t\tfunction hideForm()  { formWrap.style.display = 'none'; }\n\n\t\t\t\/* ------------------------------------------------------------------\n\t\t\t   Toggle between the matric-number panel and the name-search panel\n\t\t\t------------------------------------------------------------------ *\/\n\t\t\tfunction showNameSearchPanel() {\n\t\t\t\tmatricPanel.style.display = 'none';\n\t\t\t\tnameSearchPanel.classList.add('show');\n\t\t\t\tgateTitle.textContent = 'Find Your Graduand Record';\n\t\t\t\tgateSub.textContent   = \"Can't remember your matric number? Search by your full name instead.\";\n\t\t\t}\n\t\t\tfunction showMatricPanel() {\n\t\t\t\tnameSearchPanel.classList.remove('show');\n\t\t\t\tmatricPanel.style.display = '';\n\t\t\t\tgateTitle.textContent = 'Alumni Verification';\n\t\t\t\tgateSub.textContent   = 'Enter your matric number to verify your alumni status and unlock full community access.';\n\t\t\t}\n\n\t\t\tif (nameSearchLink) {\n\t\t\t\tnameSearchLink.addEventListener('click', function (e) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tshowNameSearchPanel();\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (backToMatricLink) {\n\t\t\t\tbackToMatricLink.addEventListener('click', function (e) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tresetGraduandSearch();\n\t\t\t\t\tshowMatricPanel();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t\/* ------------------------------------------------------------------\n\t\t\t   Apply verified alumni data into the form fields.\n\t\t\t   Called AFTER the form is visible (on Proceed click).\n\t\t\t------------------------------------------------------------------ *\/\n\t\t\tfunction applyAlumniData(data) {\n\t\t\t\tif (!data) return;\n\n\t\t\t\t\/* ---- Matric ---- *\/\n\t\t\t\thiddenMat.value = data.mat_no || '';\n\t\t\t\tif (dispMatric)  dispMatric.value = data.mat_no || '';\n\t\t\t\tif (matricWrap)  matricWrap.classList.add('sv-verified');\n\t\t\t\tif (matricTick)  showTick(matricTick);\n\t\t\t\tif (matricReq)   matricReq.style.display = 'inline';\n\t\t\t\tif (matricGeneratedNote) matricGeneratedNote.style.display = (pendingSource === 'fluentform') ? 'block' : 'none';\n\n\t\t\t\t\/* ---- Full name ---- *\/\n\t\t\t\tvar displayName = (data.full_name || ((data.firstname||'') + ' ' + (data.surname||'')).trim()).trim();\n\t\t\t\tif (displayName && fieldName) {\n\t\t\t\t\tfieldName.value = displayName;\n\t\t\t\t\tfieldName.setAttribute('readonly', '');\n\t\t\t\t\tshowTick(tickFullname);\n\t\t\t\t\taddVerifiedWrap('sv-wrap-fullname');\n\t\t\t\t}\n\n\t\t\t\t\/* ---- Email ---- *\/\n\t\t\t\tif (data.email && fieldEmail) {\n\t\t\t\t\tfieldEmail.value = data.email;\n\t\t\t\t\tfieldEmail.removeAttribute('readonly'); \/* allow editing if wrong *\/\n\t\t\t\t\tshowTick(tickEmail);\n\t\t\t\t\taddVerifiedWrap('sv-wrap-email');\n\t\t\t\t} else if (fieldEmail) {\n\t\t\t\t\tfieldEmail.value = '';\n\t\t\t\t\tfieldEmail.removeAttribute('readonly');\n\t\t\t\t\thideTick(tickEmail);\n\t\t\t\t\tremoveVerifiedWrap('sv-wrap-email');\n\t\t\t\t}\n\n\t\t\t\t\/* ---- Faculty \/ Department ----\n\t\t\t\t   For the graduand-matched (fluentform) flow this is entered\n\t\t\t\t   manually by the user, just like Email and Username \u2014 the\n\t\t\t\t   Fluent Forms record is only used to confirm identity and\n\t\t\t\t   generate the matric number. *\/\n\t\t\t\tif (pendingSource !== 'fluentform') {\n\t\t\t\t\tvar facDept = '';\n\t\t\t\t\tif (data.faculty && data.department)      facDept = data.faculty + '\/' + data.department;\n\t\t\t\t\telse if (data.faculty)                    facDept = data.faculty;\n\t\t\t\t\telse if (data.department)                 facDept = data.department;\n\t\t\t\t\tif (facDept && fieldFaculty) {\n\t\t\t\t\t\tfieldFaculty.value = facDept;\n\t\t\t\t\t\tfieldFaculty.setAttribute('readonly', '');\n\t\t\t\t\t\tshowTick(tickFaculty);\n\t\t\t\t\t\taddVerifiedWrap('sv-wrap-faculty');\n\t\t\t\t\t}\n\t\t\t\t} else if (fieldFaculty) {\n\t\t\t\t\tfieldFaculty.value = '';\n\t\t\t\t\tfieldFaculty.removeAttribute('readonly');\n\t\t\t\t\thideTick(tickFaculty);\n\t\t\t\t\tremoveVerifiedWrap('sv-wrap-faculty');\n\t\t\t\t}\n\n\t\t\t\t\/* ---- Graduation date ----\n\t\t\t\t   Same rule: manually entered for the fluentform flow. *\/\n\t\t\t\tif (gradYearDisplay) gradYearDisplay.style.display = 'none';\n\t\t\t\tif (gradDateRow) gradDateRow.style.display = '';\n\t\t\t\tif (pendingSource !== 'fluentform' && data.graduation_year) {\n\t\t\t\t\tsetGradDateFromValue(data.graduation_year);\n\t\t\t\t} else if (pendingSource === 'fluentform') {\n\t\t\t\t\tif (gradHidden)  gradHidden.value = '';\n\t\t\t\t\tif (gradDisplay) gradDisplay.style.display = 'none';\n\t\t\t\t\t[gradDay, gradMonth, gradYear].forEach(function(el){\n\t\t\t\t\t\tif (el) { el.value = ''; el.classList.remove('sv-verified-sel'); }\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t\/* ---- Submission id (fluentform only) ---- *\/\n\t\t\t\tif (hiddenSubmission) {\n\t\t\t\t\thiddenSubmission.value = data.submission_id || '';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t\/* ------------------------------------------------------------------\n\t\t\t   Transition to the registration form\n\t\t\t   mode: 'alumni' | 'guest'\n\t\t\t------------------------------------------------------------------ *\/\n\t\t\tfunction openRegistrationForm(mode) {\n\t\t\t\tstepToRegister();\n\t\t\t\thideGate();\n\n\t\t\t\tisGuestFlow = (mode === 'guest');\n\t\t\t\thiddenStatus.value = isGuestFlow ? 'guest' : 'verified';\n\t\t\t\thiddenSource.value = isGuestFlow ? 'guest' : pendingSource;\n\n\t\t\t\tif (isGuestFlow) {\n\t\t\t\t\t\/* --- Guest styling --- *\/\n\t\t\t\t\tformHeader.classList.remove('sv-ff-header');\n\t\t\t\t\tformHeader.classList.add('sv-guest-header');\n\t\t\t\t\tformTitle.textContent    = 'Register Now';\n\t\t\t\t\tformSubtitle.textContent = 'Pending admin approval \u00b7 Fill in your details below';\n\t\t\t\t\tif (submitBtn) { submitBtn.classList.remove('sv-ff-btn'); submitBtn.classList.add('sv-guest-btn'); submitBtn.textContent = 'Submit for Approval'; }\n\t\t\t\t\tguestBanner.style.display = 'flex';\n\t\t\t\t\tif (ffBanner) ffBanner.style.display = 'none';\n\n\t\t\t\t\t\/* Clear \/ unlock all fields *\/\n\t\t\t\t\tif (fieldName)    { fieldName.value = '';    fieldName.removeAttribute('readonly');    hideTick(tickFullname); removeVerifiedWrap('sv-wrap-fullname'); }\n\t\t\t\t\tif (fieldEmail)   { fieldEmail.value = '';   fieldEmail.removeAttribute('readonly');   hideTick(tickEmail);    removeVerifiedWrap('sv-wrap-email'); }\n\t\t\t\t\tif (fieldFaculty) { fieldFaculty.value = ''; fieldFaculty.removeAttribute('readonly'); hideTick(tickFaculty);  removeVerifiedWrap('sv-wrap-faculty'); }\n\t\t\t\t\tif (dispMatric)  { dispMatric.value = ''; dispMatric.removeAttribute('readonly'); dispMatric.placeholder = 'Enter matric no. (optional)'; }\n\t\t\t\t\tif (matricWrap)    matricWrap.classList.remove('sv-verified');\n\t\t\t\t\tif (matricTick)    hideTick(matricTick);\n\t\t\t\t\tif (matricReq)     matricReq.style.display = 'none';\n\t\t\t\t\tif (matricGeneratedNote) matricGeneratedNote.style.display = 'none';\n\t\t\t\t\thiddenMat.value = '';\n\t\t\t\t\tif (hiddenSubmission) hiddenSubmission.value = '';\n\n\t\t\t\t\t\/* Hide graduation date row *\/\n\t\t\t\t\tif (gradDateRow) gradDateRow.style.display = 'none';\n\t\t\t\t\tif (gradYearDisplay) gradYearDisplay.style.display = 'none';\n\t\t\t\t\tif (gradHidden)  gradHidden.value = '';\n\t\t\t\t\tif (gradDisplay) gradDisplay.style.display = 'none';\n\t\t\t\t\t[gradDay, gradMonth, gradYear].forEach(function(el){\n\t\t\t\t\t\tif (el) { el.value = ''; el.classList.remove('sv-verified-sel'); }\n\t\t\t\t\t});\n\n\t\t\t\t} else if (pendingSource === 'fluentform') {\n\t\t\t\t\t\/* --- Graduand (Fluent Forms) styling --- *\/\n\t\t\t\t\tformHeader.classList.remove('sv-guest-header');\n\t\t\t\t\tformHeader.classList.add('sv-ff-header');\n\t\t\t\t\tformTitle.textContent    = 'Complete Your Alumni Account';\n\t\t\t\t\tformSubtitle.textContent = 'Matric number generated from your graduand record';\n\t\t\t\t\tif (submitBtn) { submitBtn.classList.remove('sv-guest-btn'); submitBtn.classList.add('sv-ff-btn'); submitBtn.textContent = 'Create Alumni Account'; }\n\t\t\t\t\tguestBanner.style.display = 'none';\n\t\t\t\t\tif (ffBanner) ffBanner.style.display = 'flex';\n\n\t\t\t\t\tapplyAlumniData(pendingAlumniData);\n\n\t\t\t\t} else {\n\t\t\t\t\t\/* --- Alumni (matric API) styling --- *\/\n\t\t\t\t\tformHeader.classList.remove('sv-guest-header');\n\t\t\t\t\tformHeader.classList.remove('sv-ff-header');\n\t\t\t\t\tformTitle.textContent    = 'Create Your Alumni Account';\n\t\t\t\t\tformSubtitle.textContent = 'Your details have been pre-filled from eCampus records';\n\t\t\t\t\tif (submitBtn) { submitBtn.classList.remove('sv-guest-btn'); submitBtn.classList.remove('sv-ff-btn'); submitBtn.textContent = 'Create Alumni Account'; }\n\t\t\t\t\tguestBanner.style.display = 'none';\n\t\t\t\t\tif (ffBanner) ffBanner.style.display = 'none';\n\n\t\t\t\t\t\/* Show graduation date row *\/\n\t\t\t\t\tif (gradDateRow) gradDateRow.style.display = '';\n\n\t\t\t\t\t\/* Apply verified data NOW (form is about to be visible) *\/\n\t\t\t\t\tapplyAlumniData(pendingAlumniData);\n\t\t\t\t}\n\n\t\t\t\tshowForm();\n\t\t\t\tcanSubmit();\n\t\t\t}\n\n\t\t\t\/* ------------------------------------------------------------------\n\t\t\t   Feedback helpers on the gate\n\t\t\t------------------------------------------------------------------ *\/\n\t\t\tfunction showFeedback(msg, type) {\n\t\t\t\tfeedback.innerHTML = msg;\n\t\t\t\tfeedback.className = 'sv-matric-feedback ' + type;\n\t\t\t}\n\t\t\tfunction clearFeedback() {\n\t\t\t\tfeedback.innerHTML = '';\n\t\t\t\tfeedback.className = 'sv-matric-feedback';\n\t\t\t}\n\t\t\tfunction showGraduandFeedback(msg, type) {\n\t\t\t\tgraduandFeedback.innerHTML = msg;\n\t\t\t\tgraduandFeedback.className = 'sv-matric-feedback ' + type;\n\t\t\t}\n\t\t\tfunction clearGraduandFeedback() {\n\t\t\t\tgraduandFeedback.innerHTML = '';\n\t\t\t\tgraduandFeedback.className = 'sv-matric-feedback';\n\t\t\t}\n\n\t\t\t\/* ------------------------------------------------------------------\n\t\t\t   Reset gate to pristine state (for Back link)\n\t\t\t------------------------------------------------------------------ *\/\n\t\t\tfunction resetGate() {\n\t\t\t\tstepToVerify();\n\t\t\t\tclearFeedback();\n\t\t\t\tpreview.classList.remove('show');\n\t\t\t\tproceedBtn.style.display = 'none';\n\t\t\t\tverifyBtn.style.display  = '';\n\t\t\t\tpendingAlumniData = null;\n\t\t\t\tresetGraduandSearch();\n\t\t\t\tshowMatricPanel();\n\t\t\t}\n\n\t\t\tfunction resetGraduandSearch() {\n\t\t\t\tclearGraduandFeedback();\n\t\t\t\tif (graduandPreview) graduandPreview.classList.remove('show');\n\t\t\t\tif (proceedGraduandBtn) proceedGraduandBtn.style.display = 'none';\n\t\t\t\tif (searchGraduandBtn)  searchGraduandBtn.style.display  = '';\n\t\t\t\tif (graduandNameInput)  graduandNameInput.value = '';\n\t\t\t}\n\n\t\t\t\/* ------------------------------------------------------------------\n\t\t\t   Back link\n\t\t\t------------------------------------------------------------------ *\/\n\t\t\tif (backLink) {\n\t\t\t\tbackLink.addEventListener('click', function (e) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\thideForm();\n\t\t\t\t\tresetGate();\n\t\t\t\t\tshowGate();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t\/* ------------------------------------------------------------------\n\t\t\t   Proceed button (matric flow) \u2014 advances from gate to form\n\t\t\t------------------------------------------------------------------ *\/\n\t\t\tif (proceedBtn) {\n\t\t\t\tproceedBtn.addEventListener('click', function () {\n\t\t\t\t\tpendingSource = 'matric';\n\t\t\t\t\topenRegistrationForm('alumni');\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t\/* ------------------------------------------------------------------\n\t\t\t   Verify button \u2014 AJAX call (matric number)\n\t\t\t------------------------------------------------------------------ *\/\n\t\t\tif (verifyBtn) {\n\t\t\t\tverifyBtn.addEventListener('click', function () {\n\t\t\t\t\tvar mat = matInput.value.trim().toUpperCase();\n\t\t\t\t\tif (!mat) {\n\t\t\t\t\t\tshowFeedback('Please enter your matric number.', 'err');\n\t\t\t\t\t\tmatInput.focus();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tclearFeedback();\n\t\t\t\t\tpreview.classList.remove('show');\n\t\t\t\t\tproceedBtn.style.display = 'none';\n\t\t\t\t\tspin.style.display       = 'inline-block';\n\t\t\t\t\tverifyBtn.disabled       = true;\n\t\t\t\t\tverifyBtn.textContent    = 'Checking\u2026';\n\n\t\t\t\t\tvar fd = new FormData();\n\t\t\t\t\tfd.append('action', 'socialv_validate_matric');\n\t\t\t\t\tfd.append('nonce',  matricNonce);\n\t\t\t\t\tfd.append('mat_no', mat);\n\n\t\t\t\t\tfetch(ajaxUrl, { method: 'POST', body: fd })\n\t\t\t\t\t\t.then(function (r) { return r.json(); })\n\t\t\t\t\t\t.then(function (res) {\n\t\t\t\t\t\t\tspin.style.display    = 'none';\n\t\t\t\t\t\t\tverifyBtn.disabled    = false;\n\t\t\t\t\t\t\tverifyBtn.textContent = 'Verify Matric Number';\n\n\t\t\t\t\t\t\tif (res.success) {\n\t\t\t\t\t\t\t\tvar d = res.data;\n\n\t\t\t\t\t\t\t\t\/* Cache the data for use when Proceed is clicked *\/\n\t\t\t\t\t\t\t\tpendingAlumniData = d;\n\t\t\t\t\t\t\t\tpendingSource = 'matric';\n\n\t\t\t\t\t\t\t\t\/* Build preview card *\/\n\t\t\t\t\t\t\t\tvar displayName = (d.full_name || ((d.firstname||'') + ' ' + (d.surname||'')).trim()).trim() || d.mat_no;\n\t\t\t\t\t\t\t\tvar facultyLine = '';\n\t\t\t\t\t\t\t\tif (d.faculty && d.department) facultyLine = '\ud83d\udcda ' + d.faculty + ' \u00b7 ' + d.department;\n\t\t\t\t\t\t\t\telse if (d.faculty)            facultyLine = '\ud83d\udcda ' + d.faculty;\n\t\t\t\t\t\t\t\telse if (d.department)         facultyLine = '\ud83d\udcda ' + d.department;\n\n\t\t\t\t\t\t\t\tdocument.getElementById('sv-ap-name').textContent    = displayName;\n\t\t\t\t\t\t\t\tdocument.getElementById('sv-ap-faculty').textContent = facultyLine;\n\t\t\t\t\t\t\t\tdocument.getElementById('sv-ap-year').textContent    = d.graduation_year ? '\ud83c\udf93 Class of ' + d.graduation_year : '';\n\t\t\t\t\t\t\t\tpreview.classList.add('show');\n\n\t\t\t\t\t\t\t\tvar srcLabel = d.source === 'cache'\n\t\t\t\t\t\t\t\t\t? '<span class=\"sv-source-badge sv-source-cache\">cached<\/span>'\n\t\t\t\t\t\t\t\t\t: '<span class=\"sv-source-badge sv-source-api\">live<\/span>';\n\n\t\t\t\t\t\t\t\tshowFeedback(\n\t\t\t\t\t\t\t\t\t'<strong>\u2713 Alumni record found!<\/strong> ' + srcLabel +\n\t\t\t\t\t\t\t\t\t' Review your details below, then click Proceed.',\n\t\t\t\t\t\t\t\t\t'ok'\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\/* Show Proceed, hide Verify *\/\n\t\t\t\t\t\t\t\tverifyBtn.style.display  = 'none';\n\t\t\t\t\t\t\t\tproceedBtn.style.display = 'block';\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tpendingAlumniData = null;\n\t\t\t\t\t\t\t\tproceedBtn.style.display = 'none';\n\t\t\t\t\t\t\t\tverifyBtn.style.display  = '';\n\t\t\t\t\t\t\t\tshowFeedback(\n\t\t\t\t\t\t\t\t\t'\u2717 ' + (res.data && res.data.message ? res.data.message : 'Matric number not found.'),\n\t\t\t\t\t\t\t\t\t'err'\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(function () {\n\t\t\t\t\t\t\tspin.style.display    = 'none';\n\t\t\t\t\t\t\tverifyBtn.disabled    = false;\n\t\t\t\t\t\t\tverifyBtn.textContent = 'Verify Matric Number';\n\t\t\t\t\t\t\tproceedBtn.style.display = 'none';\n\t\t\t\t\t\t\tshowFeedback('Network error. Please check your connection and try again.', 'err');\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t\/* Enter key on matric input *\/\n\t\t\tif (matInput) {\n\t\t\t\tmatInput.addEventListener('keydown', function (e) {\n\t\t\t\t\tif (e.key === 'Enter') {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\/* If already verified, Proceed; otherwise Verify *\/\n\t\t\t\t\t\tif (pendingAlumniData && pendingSource === 'matric' && proceedBtn.style.display !== 'none') {\n\t\t\t\t\t\t\tproceedBtn.click();\n\t\t\t\t\t\t} else if (verifyBtn) {\n\t\t\t\t\t\t\tverifyBtn.click();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t\/* ------------------------------------------------------------------\n\t\t\t   Graduand name-search \u2014 AJAX call\n\t\t\t------------------------------------------------------------------ *\/\n\t\t\tif (searchGraduandBtn) {\n\t\t\t\tsearchGraduandBtn.addEventListener('click', function () {\n\t\t\t\t\tvar name = graduandNameInput.value.trim();\n\t\t\t\t\tif (!name || name.indexOf(' ') === -1) {\n\t\t\t\t\t\tshowGraduandFeedback('Please enter your full name (first and last name).', 'err');\n\t\t\t\t\t\tgraduandNameInput.focus();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tclearGraduandFeedback();\n\t\t\t\t\tif (graduandPreview) graduandPreview.classList.remove('show');\n\t\t\t\t\tif (proceedGraduandBtn) proceedGraduandBtn.style.display = 'none';\n\t\t\t\t\tgraduandSpin.style.display   = 'inline-block';\n\t\t\t\t\tsearchGraduandBtn.disabled   = true;\n\t\t\t\t\tsearchGraduandBtn.textContent= 'Searching\u2026';\n\n\t\t\t\t\tvar fd = new FormData();\n\t\t\t\t\tfd.append('action',    'socialv_lookup_graduand');\n\t\t\t\t\tfd.append('nonce',     graduandNonce);\n\t\t\t\t\tfd.append('full_name', name);\n\n\t\t\t\t\tfetch(ajaxUrl, { method: 'POST', body: fd })\n\t\t\t\t\t\t.then(function (r) { return r.json(); })\n\t\t\t\t\t\t.then(function (res) {\n\t\t\t\t\t\t\tgraduandSpin.style.display    = 'none';\n\t\t\t\t\t\t\tsearchGraduandBtn.disabled    = false;\n\t\t\t\t\t\t\tsearchGraduandBtn.textContent = 'Find My Record';\n\n\t\t\t\t\t\t\tif (res.success) {\n\t\t\t\t\t\t\t\tvar d = res.data;\n\n\t\t\t\t\t\t\t\tpendingAlumniData = d;\n\t\t\t\t\t\t\t\tpendingSource      = 'fluentform';\n\n\t\t\t\t\t\t\t\tvar facultyLine = '';\n\t\t\t\t\t\t\t\tif (d.faculty && d.department) facultyLine = '\ud83d\udcda ' + d.faculty + ' \u00b7 ' + d.department;\n\t\t\t\t\t\t\t\telse if (d.faculty)            facultyLine = '\ud83d\udcda ' + d.faculty;\n\t\t\t\t\t\t\t\telse if (d.department)         facultyLine = '\ud83d\udcda ' + d.department;\n\n\t\t\t\t\t\t\t\tdocument.getElementById('sv-gp-name').textContent    = d.full_name || name;\n\t\t\t\t\t\t\t\tdocument.getElementById('sv-gp-faculty').textContent = facultyLine;\n\t\t\t\t\t\t\t\tdocument.getElementById('sv-gp-year').textContent    = d.graduation_year ? '\ud83c\udf93 Class of ' + d.graduation_year : '';\n\t\t\t\t\t\t\t\tdocument.getElementById('sv-gp-matno').textContent   = d.mat_no ? '\ud83c\udd94 ' + d.mat_no : '';\n\t\t\t\t\t\t\t\tif (graduandPreview) graduandPreview.classList.add('show');\n\n\t\t\t\t\t\t\t\tshowGraduandFeedback(\n\t\t\t\t\t\t\t\t\t'<strong>\u2713 Graduand record found!<\/strong> A matric number has been generated for you. Review the details below, then click Proceed.',\n\t\t\t\t\t\t\t\t\t'ok'\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tsearchGraduandBtn.style.display = 'none';\n\t\t\t\t\t\t\t\tif (proceedGraduandBtn) proceedGraduandBtn.style.display = 'block';\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tpendingAlumniData = null;\n\t\t\t\t\t\t\t\tif (proceedGraduandBtn) proceedGraduandBtn.style.display = 'none';\n\t\t\t\t\t\t\t\tsearchGraduandBtn.style.display = '';\n\t\t\t\t\t\t\t\tshowGraduandFeedback(\n\t\t\t\t\t\t\t\t\t'\u2717 ' + (res.data && res.data.message ? res.data.message : \"We couldn't find a matching graduand record. Please double-check the spelling of your full name, or contact the alumni office for assistance.\"),\n\t\t\t\t\t\t\t\t\t'err'\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(function () {\n\t\t\t\t\t\t\tgraduandSpin.style.display    = 'none';\n\t\t\t\t\t\t\tsearchGraduandBtn.disabled    = false;\n\t\t\t\t\t\t\tsearchGraduandBtn.textContent = 'Find My Record';\n\t\t\t\t\t\t\tif (proceedGraduandBtn) proceedGraduandBtn.style.display = 'none';\n\t\t\t\t\t\t\tshowGraduandFeedback('Network error. Please check your connection and try again.', 'err');\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (proceedGraduandBtn) {\n\t\t\t\tproceedGraduandBtn.addEventListener('click', function () {\n\t\t\t\t\tpendingSource = 'fluentform';\n\t\t\t\t\topenRegistrationForm('alumni');\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t\/* Enter key on graduand name input *\/\n\t\t\tif (graduandNameInput) {\n\t\t\t\tgraduandNameInput.addEventListener('keydown', function (e) {\n\t\t\t\t\tif (e.key === 'Enter') {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tif (pendingAlumniData && pendingSource === 'fluentform' && proceedGraduandBtn && proceedGraduandBtn.style.display !== 'none') {\n\t\t\t\t\t\t\tproceedGraduandBtn.click();\n\t\t\t\t\t\t} else if (searchGraduandBtn) {\n\t\t\t\t\t\t\tsearchGraduandBtn.click();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t\/* ------------------------------------------------------------------\n\t\t\t   Password strength meter & submit-button gating\n\t\t\t------------------------------------------------------------------ *\/\n\t\t\tvar checks = {\n\t\t\t\tlen:   { el: document.getElementById('sv-chk-len'),   test: function(v){ return v.length >= 8; } },\n\t\t\t\tupper: { el: document.getElementById('sv-chk-upper'), test: function(v){ return \/[A-Z]\/.test(v); } },\n\t\t\t\tlower: { el: document.getElementById('sv-chk-lower'), test: function(v){ return \/[a-z]\/.test(v); } },\n\t\t\t\tnum:   { el: document.getElementById('sv-chk-num'),   test: function(v){ return \/[0-9]\/.test(v); } },\n\t\t\t\tsym:   { el: document.getElementById('sv-chk-sym'),   test: function(v){ return \/[^A-Za-z0-9]\/.test(v); } },\n\t\t\t};\n\t\t\tvar LABELS = ['','Weak','Fair','Good','Strong'];\n\t\t\tvar COLORS = ['','#ef4444','#f97316','#eab308','#22c55e'];\n\n\t\t\tfunction scorePassword(v) {\n\t\t\t\treturn Object.keys(checks).reduce(function(s,k){ return s + (checks[k].test(v) ? 1 : 0); }, 0);\n\t\t\t}\n\t\t\tfunction updateChecklist(v) {\n\t\t\t\tObject.keys(checks).forEach(function(k) {\n\t\t\t\t\tvar pass = checks[k].test(v);\n\t\t\t\t\tvar el   = checks[k].el;\n\t\t\t\t\tif (!el) return;\n\t\t\t\t\tel.classList.toggle('pass', pass);\n\t\t\t\t\tel.classList.toggle('fail', v.length > 0 && !pass);\n\t\t\t\t\tvar icon = el.querySelector('.sv-chk-icon');\n\t\t\t\t\tif (icon) icon.textContent = pass ? '\u2713' : '\u2715';\n\t\t\t\t});\n\t\t\t}\n\t\t\tfunction updateBar(v) {\n\t\t\t\tvar raw   = scorePassword(v);\n\t\t\t\tvar score = v.length === 0 ? 0 : Math.max(1, Math.min(4, raw));\n\t\t\t\tif (bar) { bar.className = 'sv-strength-bar'; if (score > 0) bar.classList.add('sv-score-' + score); }\n\t\t\t\tif (strengthLbl) {\n\t\t\t\t\tstrengthLbl.textContent = v.length === 0 ? '' : LABELS[score];\n\t\t\t\t\tstrengthLbl.style.color = v.length === 0 ? '' : COLORS[score];\n\t\t\t\t}\n\t\t\t}\n\t\t\tfunction checkMatch() {\n\t\t\t\tif (!matchMsg || !passInput || !confirmInput) return false;\n\t\t\t\tvar p = passInput.value, c = confirmInput.value;\n\t\t\t\tif (!c.length) { matchMsg.style.display = 'none'; matchMsg.className = 'sv-match-msg'; return false; }\n\t\t\t\tmatchMsg.style.display = 'block';\n\t\t\t\tif (p === c) { matchMsg.textContent = '\u2713 Passwords match'; matchMsg.className = 'sv-match-msg sv-ok'; return true; }\n\t\t\t\tmatchMsg.textContent = '\u2717 Passwords do not match'; matchMsg.className = 'sv-match-msg sv-err'; return false;\n\t\t\t}\n\n\t\t\tfunction canSubmit() {\n\t\t\t\tif (!submitBtn) return;\n\t\t\t\tvar passVal  = passInput  ? passInput.value  : '';\n\t\t\t\tvar confVal  = confirmInput ? confirmInput.value : '';\n\t\t\t\tvar allPass  = Object.keys(checks).every(function(k){ return checks[k].test(passVal); });\n\t\t\t\tvar matched  = passVal === confVal && confVal.length > 0;\n\t\t\t\tvar hasDate  = isGuestFlow ? true : !!gradHidden.value;\n\t\t\t\tsubmitBtn.disabled = !(allPass && matched && hasDate);\n\t\t\t}\n\n\t\t\tif (passInput) {\n\t\t\t\tpassInput.addEventListener('input', function () {\n\t\t\t\t\tupdateBar(passInput.value);\n\t\t\t\t\tupdateChecklist(passInput.value);\n\t\t\t\t\tcheckMatch();\n\t\t\t\t\tcanSubmit();\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (confirmInput) {\n\t\t\t\tconfirmInput.addEventListener('input', function () {\n\t\t\t\t\tcheckMatch();\n\t\t\t\t\tcanSubmit();\n\t\t\t\t});\n\t\t\t}\n\t\t\t[gradDay, gradMonth, gradYear].forEach(function(el){\n\t\t\t\tif (el) el.addEventListener('change', canSubmit);\n\t\t\t});\n\n\t\t\t\/* ------------------------------------------------------------------\n\t\t\t   Eye toggle\n\t\t\t------------------------------------------------------------------ *\/\n\t\t\tdocument.querySelectorAll('.sv-eye-toggle').forEach(function (btn) {\n\t\t\t\tbtn.addEventListener('click', function (e) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tvar inp = document.getElementById(btn.getAttribute('data-target'));\n\t\t\t\t\tif (!inp) return;\n\t\t\t\t\tvar hidden = (inp.type === 'password');\n\t\t\t\t\tinp.type = hidden ? 'text' : 'password';\n\t\t\t\t\tvar on  = btn.querySelector('.sv-eye-icon');\n\t\t\t\t\tvar off = btn.querySelector('.sv-eye-off-icon');\n\t\t\t\t\tif (on)  on.style.display  = hidden ? 'none' : '';\n\t\t\t\t\tif (off) off.style.display = hidden ? '' : 'none';\n\t\t\t\t\tbtn.setAttribute('aria-label', hidden ? 'Hide password' : 'Show password');\n\t\t\t\t\tinp.focus();\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t\/* ------------------------------------------------------------------\n\t\t\t   Restore correct state when the form is re-displayed after a PHP\n\t\t\t   validation error (page reloaded with POST data).\n\t\t\t------------------------------------------------------------------ *\/\n\t\t\t\n\t\t\t\/* ------------------------------------------------------------------\n\t\t\t   RESEND VERIFICATION\n\t\t\t------------------------------------------------------------------ *\/\n\t\t\tvar resendBtn    = document.getElementById('sv-resend-btn');\n\t\t\tvar resendEmailI = document.getElementById('sv-resend-email');\n\t\t\tvar resendFb     = document.getElementById('sv-resend-feedback');\n\t\t\tvar resendCd     = document.getElementById('sv-resend-cooldown');\n\t\t\tvar resendEmailD = document.getElementById('sv-resend-email-display');\n\n\t\t\tif (resendEmailI && resendEmailD) {\n\t\t\t\tresendEmailI.addEventListener('input', function () {\n\t\t\t\t\tresendEmailD.textContent = resendEmailI.value || '\u2026';\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tvar cooldownTimer = null;\n\n\t\t\tfunction startCooldown(sec) {\n\t\t\t\tvar rem = sec;\n\t\t\t\tif (cooldownTimer) clearInterval(cooldownTimer);\n\t\t\t\tresendCd.style.display = 'block';\n\t\t\t\tresendCd.textContent   = 'You can resend again in ' + rem + ' seconds.';\n\t\t\t\tcooldownTimer = setInterval(function () {\n\t\t\t\t\trem--;\n\t\t\t\t\tif (rem <= 0) {\n\t\t\t\t\t\tclearInterval(cooldownTimer);\n\t\t\t\t\t\tresendCd.style.display = 'none';\n\t\t\t\t\t\tif (resendBtn) resendBtn.disabled = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresendCd.textContent = 'You can resend again in ' + rem + ' seconds.';\n\t\t\t\t\t}\n\t\t\t\t}, 1000);\n\t\t\t}\n\n\t\t\tif (resendBtn) {\n\t\t\t\tresendBtn.addEventListener('click', function () {\n\t\t\t\t\tvar email = resendEmailI ? resendEmailI.value.trim() : '';\n\t\t\t\t\tif (!email || !\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(email)) {\n\t\t\t\t\t\tresendFb.textContent = 'Please enter a valid email address.';\n\t\t\t\t\t\tresendFb.className   = 'sv-resend-feedback err';\n\t\t\t\t\t\tif (resendEmailI) resendEmailI.focus();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tresendBtn.disabled    = true;\n\t\t\t\t\tresendBtn.textContent = 'Sending\u2026';\n\t\t\t\t\tresendFb.className    = 'sv-resend-feedback';\n\n\t\t\t\t\tvar fd = new FormData();\n\t\t\t\t\tfd.append('action', 'socialv_resend_activation');\n\t\t\t\t\tfd.append('nonce',  resendNonce);\n\t\t\t\t\tfd.append('email',  email);\n\n\t\t\t\t\tfetch(ajaxUrl, { method: 'POST', body: fd })\n\t\t\t\t\t\t.then(function (r) { return r.json(); })\n\t\t\t\t\t\t.then(function (res) {\n\t\t\t\t\t\t\tresendBtn.textContent = 'Resend Email';\n\t\t\t\t\t\t\tif (res.success) {\n\t\t\t\t\t\t\t\tresendFb.textContent = '\u2713 ' + (res.data.message || 'Activation email sent!');\n\t\t\t\t\t\t\t\tresendFb.className   = 'sv-resend-feedback ok';\n\t\t\t\t\t\t\t\tstartCooldown(120);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tresendBtn.disabled   = false;\n\t\t\t\t\t\t\t\tresendFb.textContent = '\u2717 ' + (res.data && res.data.message ? res.data.message : 'Could not resend. Please try again.');\n\t\t\t\t\t\t\t\tresendFb.className   = 'sv-resend-feedback err';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(function () {\n\t\t\t\t\t\t\tresendBtn.disabled    = false;\n\t\t\t\t\t\t\tresendBtn.textContent = 'Resend Email';\n\t\t\t\t\t\t\tresendFb.textContent  = '\u2717 Network error. Please try again.';\n\t\t\t\t\t\t\tresendFb.className    = 'sv-resend-feedback err';\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\n\t\t}()); \/\/ end IIFE\n\t\t<\/script>\n\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"footnotes":""},"class_list":["post-248","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.rsu.edu.ng\/rsualumni\/wp-json\/wp\/v2\/pages\/248","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rsu.edu.ng\/rsualumni\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.rsu.edu.ng\/rsualumni\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.rsu.edu.ng\/rsualumni\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rsu.edu.ng\/rsualumni\/wp-json\/wp\/v2\/comments?post=248"}],"version-history":[{"count":36,"href":"https:\/\/www.rsu.edu.ng\/rsualumni\/wp-json\/wp\/v2\/pages\/248\/revisions"}],"predecessor-version":[{"id":15128,"href":"https:\/\/www.rsu.edu.ng\/rsualumni\/wp-json\/wp\/v2\/pages\/248\/revisions\/15128"}],"wp:attachment":[{"href":"https:\/\/www.rsu.edu.ng\/rsualumni\/wp-json\/wp\/v2\/media?parent=248"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}