{"id":9,"date":"2026-03-20T16:50:11","date_gmt":"2026-03-20T16:50:11","guid":{"rendered":"https:\/\/spca.org.sg\/dev\/vms\/?page_id=9"},"modified":"2026-04-13T10:47:18","modified_gmt":"2026-04-13T02:47:18","slug":"volunteer-registration","status":"publish","type":"page","link":"https:\/\/spca.org.sg\/vms\/volunteer-registration\/","title":{"rendered":"Volunteer Registration Page"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"9\" class=\"elementor elementor-9\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7c20741 e-flex e-con-boxed e-con e-parent\" data-id=\"7c20741\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f9902e0 elementor-widget elementor-widget-vms_register\" data-id=\"f9902e0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"vms_register.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div id=\"vms-register-wrap\" class=\"vms-form-wrap\">\n    <h2>Volunteer Registration<\/h2>\n\n    <div id=\"vms-register-messages\" class=\"vms-messages\" style=\"display:none;\"><\/div>\n\n    <form id=\"vms-register-form\" method=\"post\" enctype=\"multipart\/form-data\" novalidate>\n        <input type=\"hidden\" id=\"nonce\" name=\"nonce\" value=\"df902b2fb8\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/vms\/wp-json\/wp\/v2\/pages\/9\" \/>        <input type=\"hidden\" name=\"action\" value=\"vms_register\">\n        <!-- F-04 honeypot: hidden from real users via CSS; bots that auto-fill all fields get rejected server-side.\n             \u26a0 Past bug: aggressive password managers (LastPass, 1Password, browser autofill) were filling these hidden\n             fields for real users, triggering silent rejection. Mitigations now in place:\n               1. Generic field names (NOT 'email', 'name', 'phone') so autofill heuristics ignore them\n               2. type=text (not type=email) so browser email-autofill doesn't target them\n               3. autocomplete=\"new-password\" + name=\"<random-looking>\" combo that fillers tend to skip\n               4. tabindex=-1 so keyboard tab-through skips them\n               5. aria-hidden=true so screen readers skip them\n               6. Inline + class-based hiding so a CSS-blocking adblocker can't unhide them\n             Server-side: vms_hp_url and vms_hp_message must be empty. -->\n        <div class=\"vms-hp-wrap\" style=\"position:absolute !important; left:-9999px !important; top:-9999px !important; width:1px !important; height:1px !important; overflow:hidden !important; opacity:0 !important; pointer-events:none !important\" aria-hidden=\"true\" tabindex=\"-1\">\n            <label for=\"vms_hp_url\">If you can read this, leave it empty<\/label>\n            <input type=\"text\" id=\"vms_hp_url\" name=\"vms_hp_url\" value=\"\" autocomplete=\"new-password\" tabindex=\"-1\">\n            <label for=\"vms_hp_message\">If you can read this, leave it empty<\/label>\n            <input type=\"text\" id=\"vms_hp_message\" name=\"vms_hp_message\" value=\"\" autocomplete=\"new-password\" tabindex=\"-1\">\n        <\/div>\n\n        <!-- \u2500\u2500 Personal Details \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        <fieldset class=\"vms-fieldset\">\n            <legend>Personal Details<\/legend>\n\n            <div class=\"vms-field-row\">\n                <div class=\"vms-field\">\n                    <label for=\"vms_first_name\">First Name <span class=\"required\">*<\/span><\/label>\n                    <input type=\"text\" id=\"vms_first_name\" name=\"first_name\" required autocomplete=\"given-name\">\n                <\/div>\n                <div class=\"vms-field\">\n                    <label for=\"vms_last_name\">Last Name <span class=\"required\">*<\/span><\/label>\n                    <input type=\"text\" id=\"vms_last_name\" name=\"last_name\" required autocomplete=\"family-name\">\n                <\/div>\n            <\/div>\n\n            <div class=\"vms-field-row\">\n                <div class=\"vms-field\">\n                    <label for=\"vms_preferred_name\">Preferred Name<\/label>\n                    <input type=\"text\" id=\"vms_preferred_name\" name=\"preferred_name\" autocomplete=\"nickname\">\n                    <small>How you prefer us to address you.<\/small>\n                <\/div>\n                <div class=\"vms-field\">\n                    <label for=\"vms_gender\">Gender <span class=\"required\">*<\/span><\/label>\n                    <select id=\"vms_gender\" name=\"gender\" required>\n                        <option value=\"\">\u2014 Select \u2014<\/option>\n                        <option value=\"Male\">Male<\/option>\n                        <option value=\"Female\">Female<\/option>\n                        <option value=\"Non-binary\">Non-binary<\/option>\n                        <option value=\"Prefer not to say\">Prefer not to say<\/option>\n                    <\/select>\n                <\/div>\n            <\/div>\n\n            <div class=\"vms-field-row\">\n                <div class=\"vms-field\">\n                    <label for=\"vms_dob\">Date of Birth <span class=\"required\">*<\/span><\/label>\n                    <input type=\"date\" id=\"vms_dob\" name=\"date_of_birth\" required autocomplete=\"bday\">\n                    <span class=\"vms-field-hint\" id=\"vms-age-hint\"><\/span>\n                    <span id=\"vms-tier-hint\" style=\"display:none\"><\/span>\n                <\/div>\n                <div class=\"vms-field\">\n                    <label for=\"vms_mobile\">Mobile Number <span class=\"required\">*<\/span><\/label>\n                    <input type=\"tel\" id=\"vms_mobile\" name=\"phone\" required autocomplete=\"tel\">\n                <\/div>\n            <\/div>\n\n            <div class=\"vms-field-row\">\n                <div class=\"vms-field\">\n                    <label for=\"vms_email\">Email Address <span class=\"required\">*<\/span><\/label>\n                    <input type=\"email\" id=\"vms_email\" name=\"email\" required autocomplete=\"email\">\n                <\/div>\n                <div class=\"vms-field\">\n                    <label for=\"vms_tshirt_size\">T-Shirt Size <span class=\"required\">*<\/span><\/label>\n                    <select id=\"vms_tshirt_size\" name=\"tshirt_size\" required>\n                        <option value=\"\">\u2014 Select \u2014<\/option>\n                                                    <option value=\"XS\">XS<\/option>\n                                                    <option value=\"S\">S<\/option>\n                                                    <option value=\"M\">M<\/option>\n                                                    <option value=\"L\">L<\/option>\n                                                    <option value=\"XL\">XL<\/option>\n                                                    <option value=\"XXL\">XXL<\/option>\n                                            <\/select>\n                <\/div>\n            <\/div>\n\n            <div class=\"vms-field-row\">\n                <div class=\"vms-field\">\n                    <label for=\"vms_password\">Password <span class=\"required\">*<\/span><\/label>\n                    <input type=\"password\" id=\"vms_password\" name=\"password\" required minlength=\"8\" autocomplete=\"new-password\">\n                    <small>Minimum 8 characters.<\/small>\n                <\/div>\n                <div class=\"vms-field\">\n                    <label for=\"vms_password_confirm\">Confirm Password <span class=\"required\">*<\/span><\/label>\n                    <input type=\"password\" id=\"vms_password_confirm\" name=\"password_confirm\" required autocomplete=\"new-password\">\n                <\/div>\n            <\/div>\n        <\/fieldset>\n\n        <!-- \u2500\u2500 ID Photo \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        <fieldset class=\"vms-fieldset\">\n            <legend>ID Photo<\/legend>\n            <div class=\"vms-field\">\n                <label for=\"vms_id_photo\">Upload a passport-style photo <span class=\"required\">*<\/span><\/label>\n                <input type=\"file\" id=\"vms_id_photo\" name=\"id_photo\" accept=\"image\/jpeg,image\/png\" required>\n                <small>Recommended: 35 x 45 mm (min. 413 x 531 px at 300 DPI). JPG or PNG, max 2 MB.<\/small>\n            <\/div>\n        <\/fieldset>\n\n        \n        <!-- \u2500\u2500 Where would you like to volunteer? \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        <fieldset class=\"vms-fieldset\">\n            <legend>Where would you like to volunteer?<\/legend>\n            <p class=\"vms-field-hint\">You may tick more than one box.<\/p>\n                        <div class=\"vms-field\" style=\"margin-bottom:6px\">\n                <label class=\"vms-checkbox-label\">\n                    <input type=\"checkbox\" name=\"volunteer_areas[]\" value=\"animal_care\"\n                           >\n                    Animal Care Volunteer (also for Dog Walking Volunteer and Adoption Counsellor)                <\/label>\n            <\/div>\n                        <div class=\"vms-field\" style=\"margin-bottom:6px\">\n                <label class=\"vms-checkbox-label\">\n                    <input type=\"checkbox\" name=\"volunteer_areas[]\" value=\"clinic\"\n                           >\n                    Clinic Volunteer                <\/label>\n            <\/div>\n                        <div class=\"vms-field\" style=\"margin-bottom:6px\">\n                <label class=\"vms-checkbox-label\">\n                    <input type=\"checkbox\" name=\"volunteer_areas[]\" value=\"animal_rescue\"\n                           >\n                    Animal Rescue Volunteer                <\/label>\n            <\/div>\n                        <div class=\"vms-field\" style=\"margin-bottom:6px\">\n                <label class=\"vms-checkbox-label\">\n                    <input type=\"checkbox\" name=\"volunteer_areas[]\" value=\"education_outreach\"\n                           >\n                    Education and Outreach Volunteer                <\/label>\n            <\/div>\n                        <div class=\"vms-field\" style=\"margin-bottom:6px\">\n                <label class=\"vms-checkbox-label\">\n                    <input type=\"checkbox\" name=\"volunteer_areas[]\" value=\"sales_events\"\n                           >\n                    Sales and Events Support                <\/label>\n            <\/div>\n                        <div class=\"vms-field\" style=\"margin-bottom:6px\">\n                <label class=\"vms-checkbox-label\">\n                    <input type=\"checkbox\" name=\"volunteer_areas[]\" value=\"animal_ambassador\"\n                           >\n                    Animal Ambassador                <\/label>\n            <\/div>\n                        <div class=\"vms-field\" style=\"margin-bottom:6px\">\n                <label class=\"vms-checkbox-label\">\n                    <input type=\"checkbox\" name=\"volunteer_areas[]\" value=\"fundraising\"\n                           >\n                    Fundraising Volunteer                <\/label>\n            <\/div>\n                        <div class=\"vms-field\" style=\"margin-bottom:6px\">\n                <label class=\"vms-checkbox-label\">\n                    <input type=\"checkbox\" name=\"volunteer_areas[]\" value=\"skilled_content\"\n                           >\n                    Skill-based Volunteering - Content Writers                <\/label>\n            <\/div>\n                        <div class=\"vms-field\" style=\"margin-bottom:6px\">\n                <label class=\"vms-checkbox-label\">\n                    <input type=\"checkbox\" name=\"volunteer_areas[]\" value=\"skilled_graphic\"\n                           >\n                    Skill-based Volunteering - Graphic Designers                <\/label>\n            <\/div>\n                        <div class=\"vms-field\" style=\"margin-bottom:6px\">\n                <label class=\"vms-checkbox-label\">\n                    <input type=\"checkbox\" name=\"volunteer_areas[]\" value=\"skilled_photo\"\n                           >\n                    Skill-based Volunteering - Photographers                <\/label>\n            <\/div>\n                        <div class=\"vms-field\" style=\"margin-bottom:6px\">\n                <label class=\"vms-checkbox-label\">\n                    <input type=\"checkbox\" name=\"volunteer_areas[]\" value=\"others\"\n                           id=\"vms-area-others-cb\">\n                    Others                <\/label>\n            <\/div>\n                        <div class=\"vms-field\" id=\"vms-area-others-text\" style=\"display:none;margin-top:6px\">\n                <label for=\"vms_volunteer_areas_other\">Please elaborate:<\/label>\n                <textarea id=\"vms_volunteer_areas_other\" name=\"volunteer_areas_other\" rows=\"2\"><\/textarea>\n            <\/div>\n        <\/fieldset>\n\n        <!-- \u2500\u2500 Motivation \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        <fieldset class=\"vms-fieldset\">\n            <legend>Your Motivation<\/legend>\n            <div class=\"vms-field\">\n                <label for=\"vms_motivation\">\n                    It is important to us to have volunteers who are passionate about our cause and the work we do. In under 50 words, we&#039;d love to hear what inspires you to volunteer with us! Please share what motivates you to be part of our team.                    <span class=\"required\">*<\/span>\n                <\/label>\n                <textarea id=\"vms_motivation\" name=\"motivation\" rows=\"4\" required maxlength=\"400\"><\/textarea>\n                <small id=\"vms-motivation-count\" style=\"color:#666\">0 \/ 50 words<\/small>\n            <\/div>\n        <\/fieldset>\n\n        <!-- \u2500\u2500 Volunteer duration \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        <fieldset class=\"vms-fieldset\">\n            <legend>Volunteer Commitment<\/legend>\n            <div class=\"vms-field\">\n                <label for=\"vms_volunteer_duration\">How long do you plan to volunteer with us? <span class=\"required\">*<\/span><\/label>\n                <select id=\"vms_volunteer_duration\" name=\"volunteer_duration\" required>\n                    <option value=\"\">\u2014 Select \u2014<\/option>\n                    <option value=\"less_3_months\">Less than 3 months<\/option>\n                    <option value=\"3_6_months\">3 - 6 months<\/option>\n                    <option value=\"6_12_months\">6 - 12 months<\/option>\n                    <option value=\"more_1_year\">More than a year<\/option>\n                <\/select>\n            <\/div>\n        <\/fieldset>\n\n        <!-- \u2500\u2500 Background \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        <fieldset class=\"vms-fieldset\">\n            <legend>Background<\/legend>\n            <div class=\"vms-field\">\n                <label for=\"vms_how_heard\">How did you hear about us?<\/label>\n                <textarea id=\"vms_how_heard\" name=\"how_heard\" rows=\"2\"><\/textarea>\n            <\/div>\n            <div class=\"vms-field\">\n                <label for=\"vms_experience\">Volunteer experience \/ skills<\/label>\n                <textarea id=\"vms_experience\" name=\"experience_skills\" rows=\"3\"><\/textarea>\n            <\/div>\n        <\/fieldset>\n\n        <!-- \u2500\u2500 Availability \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        <fieldset class=\"vms-fieldset\">\n            <legend>Availability<\/legend>\n            <div class=\"vms-field\">\n                <label>Days available (select all that apply):<\/label>\n                <div class=\"vms-checkbox-group\">\n                                            <label class=\"vms-checkbox-label\">\n                            <input type=\"checkbox\" name=\"availability_days[]\" value=\"Mon\">\n                            Monday                        <\/label>\n                                            <label class=\"vms-checkbox-label\">\n                            <input type=\"checkbox\" name=\"availability_days[]\" value=\"Tue\">\n                            Tuesday                        <\/label>\n                                            <label class=\"vms-checkbox-label\">\n                            <input type=\"checkbox\" name=\"availability_days[]\" value=\"Wed\">\n                            Wednesday                        <\/label>\n                                            <label class=\"vms-checkbox-label\">\n                            <input type=\"checkbox\" name=\"availability_days[]\" value=\"Thu\">\n                            Thursday                        <\/label>\n                                            <label class=\"vms-checkbox-label\">\n                            <input type=\"checkbox\" name=\"availability_days[]\" value=\"Fri\">\n                            Friday                        <\/label>\n                                            <label class=\"vms-checkbox-label\">\n                            <input type=\"checkbox\" name=\"availability_days[]\" value=\"Sat\">\n                            Saturday                        <\/label>\n                                            <label class=\"vms-checkbox-label\">\n                            <input type=\"checkbox\" name=\"availability_days[]\" value=\"Sun\">\n                            Sunday                        <\/label>\n                                    <\/div>\n            <\/div>\n            <div class=\"vms-field\">\n                <label for=\"vms_availability_time\">Preferred time:<\/label>\n                <select id=\"vms_availability_time\" name=\"availability_time\">\n                    <option value=\"\">\u2014 Select \u2014<\/option>\n                    <option value=\"morning\">Morning<\/option>\n                    <option value=\"afternoon\">Afternoon<\/option>\n                <\/select>\n            <\/div>\n        <\/fieldset>\n\n        <!-- \u2500\u2500 Medical Notes \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        <fieldset class=\"vms-fieldset\">\n            <legend>Medical &amp; Special Requirements<\/legend>\n            <div class=\"vms-field\">\n                <label for=\"vms_medical_notes\">Any medical conditions or special requirements we should know about?<\/label>\n                <textarea id=\"vms_medical_notes\" name=\"medical_notes\" rows=\"3\"><\/textarea>\n            <\/div>\n        <\/fieldset>\n\n        <!-- \u2500\u2500 Emergency Contact \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        <fieldset class=\"vms-fieldset\">\n            <legend>Emergency Contact<\/legend>\n            <div class=\"vms-field-row\">\n                <div class=\"vms-field\">\n                    <label for=\"vms_ec_name\">Contact Name<\/label>\n                    <input type=\"text\" id=\"vms_ec_name\" name=\"emergency_contact_name\">\n                <\/div>\n                <div class=\"vms-field\">\n                    <label for=\"vms_ec_phone\">Contact Phone<\/label>\n                    <input type=\"tel\" id=\"vms_ec_phone\" name=\"emergency_contact_phone\">\n                <\/div>\n            <\/div>\n        <\/fieldset>\n\n        <!-- \u2500\u2500 Volunteer Type \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        <fieldset class=\"vms-fieldset\">\n            <legend>Volunteer Type<\/legend>\n            <div class=\"vms-field\">\n                <label>I am registering as a:<\/label>\n                <div style=\"display:flex;gap:20px;flex-wrap:wrap;margin-top:6px\">\n                    <label class=\"vms-checkbox-label\" style=\"flex:1;min-width:200px;padding:12px 16px;border:1.5px solid var(--vms-border);border-radius:8px;cursor:pointer\" id=\"vms-type-regular-label\">\n                        <input type=\"radio\" name=\"volunteer_type\" value=\"regular\" id=\"vms_type_regular\" checked style=\"margin-right:8px\">\n                        <strong>Regular Volunteer<\/strong><br>\n                        <span style=\"font-size:.85em;color:var(--vms-text-muted)\">Aged 18 and above. Shelter, clinic, events and more.<\/span>\n                    <\/label>\n                    <label class=\"vms-checkbox-label\" style=\"flex:1;min-width:200px;padding:12px 16px;border:1.5px solid var(--vms-border);border-radius:8px;cursor:pointer\" id=\"vms-type-yc-label\">\n                        <input type=\"radio\" name=\"volunteer_type\" value=\"youth_clinic\" id=\"vms_type_yc\" style=\"margin-right:8px\">\n                        <strong>Youth Clinic Volunteer<\/strong><br>\n                        <span style=\"font-size:.85em;color:var(--vms-text-muted)\">Aged 16\u201317. Clinic shifts and events. No shelter work.<\/span>\n                    <\/label>\n                                    <\/div>\n            <\/div>\n        <\/fieldset>\n\n        <!-- \u2500\u2500 Youth Ambassador Details (senior_ya \/ junior_ya) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n        <fieldset class=\"vms-fieldset\" id=\"vms-ya-section\" style=\"display:none;border-color:#f59e0b;background:#fffbeb\">\n            <legend style=\"color:#92400e\">&#11088; Youth Ambassador Details<\/legend>\n\n            <div class=\"vms-notice vms-notice-warning\" style=\"margin-bottom:16px\" id=\"vms-ya-notice\">\n                Youth Ambassadors may only participate in events and activities. They do not have direct contact with shelter animals, and do not take part in clinic or shelter shifts. Parental\/guardian consent is required.            <\/div>\n\n            <p id=\"vms-ya-tier-display\" style=\"font-weight:600;margin-bottom:12px\"><\/p>\n\n            <p style=\"margin-bottom:12px\"><em>Parent \/ Guardian Details<\/em><\/p>\n            <div class=\"vms-field-row\">\n                <div class=\"vms-field\">\n                    <label for=\"vms_ya_pg_name\">Full Name <span class=\"required\">*<\/span><\/label>\n                    <input type=\"text\" id=\"vms_ya_pg_name\" name=\"parent_guardian_name\">\n                <\/div>\n                <div class=\"vms-field\">\n                    <label for=\"vms_ya_pg_relationship\">Relationship <span class=\"required\">*<\/span><\/label>\n                    <select id=\"vms_ya_pg_relationship\" name=\"guardian_relationship\">\n                        <option value=\"\">\u2014 Select \u2014<\/option>\n                        <option value=\"Mother\">Mother<\/option>\n                        <option value=\"Father\">Father<\/option>\n                        <option value=\"Legal Guardian\">Legal Guardian<\/option>\n                        <option value=\"Others\">Others<\/option>\n                    <\/select>\n                <\/div>\n            <\/div>\n            <div class=\"vms-field-row\">\n                <div class=\"vms-field\">\n                    <label for=\"vms_ya_pg_phone\">Contact Number <span class=\"required\">*<\/span><\/label>\n                    <input type=\"tel\" id=\"vms_ya_pg_phone\" name=\"parent_guardian_phone\">\n                <\/div>\n                <div class=\"vms-field\">\n                    <label for=\"vms_ya_pg_email\">Email Address <span class=\"required\">*<\/span><\/label>\n                    <input type=\"email\" id=\"vms_ya_pg_email\" name=\"parent_guardian_email\">\n                <\/div>\n            <\/div>\n\n            <div class=\"vms-field\" style=\"margin-top:12px\">\n                <label class=\"vms-checkbox-label\">\n                    <input type=\"checkbox\" name=\"digital_consent_given\" value=\"1\" id=\"vms_ya_consent\">\n                    <strong>Parental Consent &mdash; <\/strong>\n                    I am the parent or legal guardian of the participant named above. I have read and agree to the <a href=\"https:\/\/spca.org.sg\/vms\/wp-content\/uploads\/2026\/05\/SPCA_YA_Parental_Consent_Web.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">SPCA Youth Ambassador Parental Consent Form<\/a>, and consent to my child&#039;s participation in the Youth Ambassador Programme.                    <span class=\"required\">*<\/span>\n                <\/label>\n            <\/div>\n            <div class=\"vms-field\">\n                <label class=\"vms-checkbox-label\">\n                    <input type=\"checkbox\" name=\"digital_indemnity_given\" value=\"1\" id=\"vms_ya_indemnity\">\n                    <strong>Indemnity &amp; Confidentiality &mdash; <\/strong>\n                    I have read and understood the <a href=\"https:\/\/spca.org.sg\/vms\/wp-content\/uploads\/2026\/05\/SPCA_ICA_Web.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">SPCA Volunteer Indemnity &amp; Confidentiality Agreement<\/a> (SPCA-VOL-ICA-001). I agree to release SPCA Singapore from liability and to abide by the confidentiality obligations as described therein, and sign on behalf of the participant named above.                    <span class=\"required\">*<\/span>\n                <\/label>\n            <\/div>\n\n            <div class=\"vms-field\" style=\"margin-top:16px\">\n                <label style=\"display:block;font-weight:600;margin-bottom:8px\">\n                    Guardian Signature <span class=\"required\">*<\/span>\n                <\/label>\n                <p class=\"vms-field-hint\" style=\"margin-bottom:8px\">Please draw your signature below using your mouse or touchscreen. This serves as your digital signature confirming the consent and indemnity above.<\/p>\n                <div style=\"border:2px solid #d97706;border-radius:4px;background:#fffbeb;display:inline-block\">\n                    <canvas id=\"vms_ya_sig_canvas\" width=\"460\" height=\"150\" style=\"display:block;cursor:crosshair;touch-action:none\"><\/canvas>\n                <\/div>\n                <br>\n                <button type=\"button\" id=\"vms_ya_sig_clear\" class=\"button\" style=\"font-size:12px;margin-top:6px\">Clear<\/button>\n                <span id=\"vms_ya_sig_status\" style=\"margin-left:10px;font-size:12px;color:#d97706\"><\/span>\n                <input type=\"hidden\" name=\"ya_signature_data\" id=\"vms_ya_sig_data\">\n            <\/div>\n        <\/fieldset>\n\n        <!-- \u2500\u2500 Youth Clinic Details (youth_clinic) \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        <fieldset class=\"vms-fieldset\" id=\"vms-yc-section\" style=\"display:none;border-color:#0891b2;background:#f0f9ff\">\n            <legend style=\"color:#0e7490\">&#128138; Youth Clinic Volunteer Details<\/legend>\n            <div class=\"vms-notice\" style=\"margin-bottom:16px;background:#e0f2fe;border-color:#38bdf8;color:#0c4a6e\">\n                Youth Clinic Volunteers are aged 16\u201317. You may sign up for clinic shifts and events, but not shelter shifts. You will automatically move to the Regular Volunteer tier on your 18th birthday.            <\/div>\n        <\/fieldset>\n\n        <!-- \u2500\u2500 Acknowledgments \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        <fieldset class=\"vms-fieldset\">\n            <legend>Acknowledgments<\/legend>\n\n            <div class=\"vms-field\">\n                <label class=\"vms-checkbox-label\">\n                    <input type=\"checkbox\" name=\"ack_rules\" value=\"1\" required>\n                    I have read, understood, and agree to abide by the rules listed as above.                    <span class=\"required\">*<\/span>\n                <\/label>\n            <\/div>\n\n            <div class=\"vms-field\">\n                <label class=\"vms-checkbox-label\">\n                    <input type=\"checkbox\" name=\"ack_conduct\" value=\"1\" required>\n                    I have read, understood, and agree to abide by the <a href=\"#\" target=\"_blank\" rel=\"noopener noreferrer\">SPCA Code of Conduct<\/a>.                    <span class=\"required\">*<\/span>\n                <\/label>\n            <\/div>\n\n            <div class=\"vms-field\">\n                <label class=\"vms-checkbox-label\">\n                    <input type=\"checkbox\" name=\"ack_privacy\" value=\"1\" required>\n                    I have read, understood, and agree to abide by the SPCA Data Privacy Policy.                    <span class=\"required\">*<\/span>\n                <\/label>\n            <\/div>\n\n            <div class=\"vms-field\" style=\"margin-top:16px\">\n                <p style=\"margin-bottom:8px;font-weight:600\">Attire Guidelines<\/p>\n                <ul style=\"margin:0 0 12px 20px;line-height:1.8;font-size:14px\">\n                    <li>Slippers, sandals, and any open-toe or open-heel shoes are strictly NOT allowed inside the shelter \u2014 with no exceptions.<\/li>\n                    <li>Crocs (with the back strap on) or similar closed clogs are allowed.<\/li>\n                    <li>Closed-toe shoes are mandatory.<\/li>\n                    <li>Long pants are mandatory in the clinic and strongly recommended in the shelter.<\/li>\n                    <li>Crop tops and sleeveless tops are allowed for dog-walking volunteers, but not recommended for shelter or clinic work for safety and hygiene reasons.<\/li>\n                    <li>Clothing must not contain any inappropriate or offensive text.<\/li>\n                    <li>I will bring a pair of socks for changing into SPCA boots if required.<\/li>\n                    <li>I am responsible for tying up my own long hair for safety.<\/li>\n                    <li>I am responsible for bringing my own water bottle and any necessary personal medication.<\/li>\n                <\/ul>\n                <label class=\"vms-checkbox-label\">\n                    <input type=\"checkbox\" name=\"ack_attire\" value=\"1\" required>\n                    I acknowledge and agree to follow all SPCA attire guidelines listed above.                    <span class=\"required\">*<\/span>\n                <\/label>\n            <\/div>\n\n            <div class=\"vms-field\" style=\"margin-top:16px\">\n                <p style=\"margin-bottom:8px\">\n                    Please note that by submitting your details, you consent to SPCA&#039;s <a href=\"https:\/\/spca.org.sg\/vms\/wp-content\/uploads\/2026\/05\/SPCA_ICA_Web.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">Indemnity &amp; Confidentiality Agreement<\/a> and <a href=\"https:\/\/spca.org.sg\/vms\/wp-content\/uploads\/2026\/05\/SPCA_NDA_Web.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">Non-Disclosure Agreement<\/a>, and Other Matters as listed above.                <\/p>\n                <label class=\"vms-checkbox-label\">\n                    <input type=\"checkbox\" name=\"ack_indemnity\" value=\"1\" required>\n                    I consent to the above.                    <span class=\"required\">*<\/span>\n                <\/label>\n            <\/div>\n        <\/fieldset>\n\n        <div class=\"vms-submit-row\">\n            <button type=\"submit\" class=\"vms-btn vms-btn-primary\" id=\"vms-register-submit\">\n                Submit Registration            <\/button>\n        <\/div>\n    <\/form>\n<\/div>\n\n<script>\n(function(){\n    var dobInput        = document.getElementById('vms_dob');\n    var ageHint         = document.getElementById('vms-age-hint');\n    var tierHint        = document.getElementById('vms-tier-hint');\n    var yaTierDisplay   = document.getElementById('vms-ya-tier-display');\n    var yaSection       = document.getElementById('vms-ya-section');\n    var ycSection       = document.getElementById('vms-yc-section');\n    var typeRadios      = document.querySelectorAll('input[name=\"volunteer_type\"]');\n    var othersCb        = document.getElementById('vms-area-others-cb');\n    var othersText      = document.getElementById('vms-area-others-text');\n    var motivationTa    = document.getElementById('vms_motivation');\n    var motivationCount = document.getElementById('vms-motivation-count');\n\n    function calcAge(dob) {\n        var today = new Date();\n        var birth = new Date(dob);\n        var age   = today.getFullYear() - birth.getFullYear();\n        var m     = today.getMonth() - birth.getMonth();\n        if (m < 0 || (m === 0 && today.getDate() < birth.getDate())) age--;\n        return age;\n    }\n\n    function getSelected() {\n        var sel = document.querySelector('input[name=\"volunteer_type\"]:checked');\n        return sel ? sel.value : 'regular';\n    }\n\n    function getTierFromAge(age) {\n        if (age >= 7 && age <= 12)  return 'junior';\n        if (age >= 13 && age <= 16) return 'senior';\n        return null;\n    }\n\n    function updateTierHint(type, age) {\n        if (!tierHint) return;\n        if (type === 'junior_ya') {\n            tierHint.textContent = 'Junior Youth Ambassador (7-12)';\n            tierHint.style.cssText = 'display:inline-block;margin-top:6px;padding:2px 10px;border-radius:10px;font-size:12px;font-weight:600;background:#dbeafe;color:#1d4ed8';\n            if (yaTierDisplay) yaTierDisplay.textContent = 'Junior Youth Ambassador (7\u201312) \u2014 a parent or guardian must be present at all activities.';\n        } else if (type === 'senior_ya') {\n            tierHint.textContent = 'Senior Youth Ambassador (13-15)';\n            tierHint.style.cssText = 'display:inline-block;margin-top:6px;padding:2px 10px;border-radius:10px;font-size:12px;font-weight:600;background:#dcfce7;color:#15803d';\n            if (yaTierDisplay) yaTierDisplay.textContent = 'Senior Youth Ambassador (13\u201315).';\n        } else {\n            tierHint.style.display = 'none';\n            if (yaTierDisplay) yaTierDisplay.textContent = '';\n        }\n    }\n\n    function toggleSections() {\n        var type    = getSelected();\n        var isYa    = (type === 'junior_ya' || type === 'senior_ya');\n        var isYc    = (type === 'youth_clinic');\n\n        if (yaSection) yaSection.style.display = isYa ? '' : 'none';\n        if (ycSection) ycSection.style.display = isYc ? '' : 'none';\n\n        \/\/ YA required fields (parental consent section)\n        ['vms_ya_pg_name','vms_ya_pg_relationship','vms_ya_pg_phone','vms_ya_pg_email','vms_ya_consent','vms_ya_indemnity'].forEach(function(id){\n            var el = document.getElementById(id);\n            if (el) el.required = isYa;\n        });\n\n        \/\/ Show tier hint using DOB when a YA type is selected\n        if (isYa && dobInput && dobInput.value) {\n            var age = calcAge(dobInput.value);\n            updateTierHint(type, age);\n        } else if (!isYa && yaTierDisplay) {\n            yaTierDisplay.textContent = '';\n            if (tierHint) tierHint.style.display = 'none';\n        }\n\n        \/\/ Card border highlights for all 4 types\n        var colors = { regular: '#012169', youth_clinic: '#0ea5e9', senior_ya: '#f59e0b', junior_ya: '#f59e0b' };\n        var bgs    = { regular: '', youth_clinic: '#f0f9ff', senior_ya: '#fffbeb', junior_ya: '#fffbeb' };\n        [['vms-type-regular-label','regular'],['vms-type-yc-label','youth_clinic'],['vms-type-sya-label','senior_ya'],['vms-type-jya-label','junior_ya']].forEach(function(p){\n            var el = document.getElementById(p[0]);\n            if (!el) return;\n            el.style.borderColor = (type === p[1]) ? colors[p[1]] : '';\n            el.style.background  = (type === p[1]) ? bgs[p[1]]   : '';\n        });\n    }\n    \/\/ DOB change handler\n    if (dobInput) {\n        dobInput.addEventListener('change', function(){\n            if (!this.value) {\n                if (ageHint)  ageHint.textContent = '';\n                if (tierHint) tierHint.style.display = 'none';\n                if (yaTierDisplay) yaTierDisplay.textContent = '';\n                return;\n            }\n            var age  = calcAge(this.value);\n            var type = getSelected();\n\n            if (type === 'junior_ya') {\n                if (age < 7 || age > 12) {\n                    if (ageHint) { ageHint.textContent = 'Age ' + age + ' \u2014 Junior Youth Ambassadors must be 7\u201312.'; ageHint.style.color = '#dc2626'; }\n                    if (tierHint) tierHint.style.display = 'none';\n                } else {\n                    if (ageHint) { ageHint.textContent = 'Age ' + age; ageHint.style.color = '#065f46'; }\n                    updateTierHint(type, age);\n                }\n            } else if (type === 'senior_ya') {\n                if (age < 13 || age > 15) {\n                    if (ageHint) { ageHint.textContent = 'Age ' + age + ' \u2014 Senior Youth Ambassadors must be 13\u201315.'; ageHint.style.color = '#dc2626'; }\n                    if (tierHint) tierHint.style.display = 'none';\n                } else {\n                    if (ageHint) { ageHint.textContent = 'Age ' + age; ageHint.style.color = '#065f46'; }\n                    updateTierHint(type, age);\n                }\n            } else if (type === 'youth_clinic') {\n                if (age < 16 || age > 17) {\n                    if (ageHint) { ageHint.textContent = 'Age ' + age + ' \u2014 Youth Clinic volunteers must be 16\u201317.'; ageHint.style.color = '#dc2626'; }\n                } else {\n                    if (ageHint) { ageHint.textContent = 'Age ' + age; ageHint.style.color = '#065f46'; }\n                }\n                if (tierHint) tierHint.style.display = 'none';\n            } else {\n                \/\/ regular (18+)\n                if (age < 18) {\n                    if (ageHint) { ageHint.textContent = 'Age ' + age + ' \u2014 Regular volunteers must be 18 or older.'; ageHint.style.color = '#dc2626'; }\n                } else {\n                    if (ageHint) { ageHint.textContent = 'Age ' + age; ageHint.style.color = '#065f46'; }\n                }\n                if (tierHint) tierHint.style.display = 'none';\n            }\n        });\n    }\n\n    \/\/ Others checkbox reveals text box\n    if (othersCb) {\n        othersCb.addEventListener('change', function(){\n            if (othersText) othersText.style.display = this.checked ? '' : 'none';\n        });\n    }\n\n    \/\/ Motivation word counter\n    if (motivationTa) {\n        motivationTa.addEventListener('input', function(){\n            var words = this.value.trim() === '' ? 0 : this.value.trim().split(\/\\s+\/).length;\n            if (motivationCount) {\n                motivationCount.textContent = words + ' \/ 50 words';\n                motivationCount.style.color = words > 50 ? '#dc2626' : '#666';\n            }\n        });\n    }\n\n    typeRadios.forEach(function(r){ r.addEventListener('change', toggleSections); });\n    toggleSections();\n})();\n<\/script>\n\n<script>\n(function($){\n    \/\/ \u2500\u2500 Canvas e-signature pads \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    function vmsInitSigPad(canvasId, clearBtnId, statusId, hiddenId) {\n        var canvas = document.getElementById(canvasId);\n        if (!canvas) return;\n        var hidden = document.getElementById(hiddenId);\n        var clearBtn = document.getElementById(clearBtnId);\n        \/\/ Defensive: if a related element is missing for any reason, bail out\n        \/\/ cleanly rather than throw \u2014 an uncaught TypeError here would halt\n        \/\/ the rest of this IIFE and prevent the register-form submit handler\n        \/\/ from being bound below.\n        if (!hidden || !clearBtn) {\n            console.warn('[VMS] vmsInitSigPad: missing element(s) for', canvasId, '\u2014 skipping');\n            return;\n        }\n        var ctx = canvas.getContext('2d');\n        var drawing = false, lx = 0, ly = 0;\n        ctx.strokeStyle = '#1a1a1a'; ctx.lineWidth = 2; ctx.lineCap = 'round'; ctx.lineJoin = 'round';\n        function pos(e) { var r=canvas.getBoundingClientRect(), s=e.touches?e.touches[0]:e; return {x:s.clientX-r.left,y:s.clientY-r.top}; }\n        canvas.addEventListener('mousedown',  function(e){e.preventDefault();drawing=true;var p=pos(e);lx=p.x;ly=p.y;});\n        canvas.addEventListener('mousemove',  function(e){if(!drawing)return;var p=pos(e);ctx.beginPath();ctx.moveTo(lx,ly);ctx.lineTo(p.x,p.y);ctx.stroke();lx=p.x;ly=p.y;});\n        canvas.addEventListener('mouseup',    function(){if(drawing){drawing=false;hidden.value=canvas.toDataURL('image\/png');var s=document.getElementById(statusId);if(s)s.textContent='Signature captured';}});\n        canvas.addEventListener('mouseleave', function(){drawing=false;});\n        canvas.addEventListener('touchstart', function(e){e.preventDefault();drawing=true;var p=pos(e);lx=p.x;ly=p.y;},{passive:false});\n        canvas.addEventListener('touchmove',  function(e){e.preventDefault();if(!drawing)return;var p=pos(e);ctx.beginPath();ctx.moveTo(lx,ly);ctx.lineTo(p.x,p.y);ctx.stroke();lx=p.x;ly=p.y;},{passive:false});\n        canvas.addEventListener('touchend',   function(){if(drawing){drawing=false;hidden.value=canvas.toDataURL('image\/png');var s=document.getElementById(statusId);if(s)s.textContent='Signature captured';}});\n        clearBtn.addEventListener('click', function(){ctx.clearRect(0,0,canvas.width,canvas.height);hidden.value='';var s=document.getElementById(statusId);if(s)s.textContent='';});\n    }\n    vmsInitSigPad('vms_ya_sig_canvas','vms_ya_sig_clear','vms_ya_sig_status','vms_ya_sig_data');\n    vmsInitSigPad('vms_sc_sig_canvas','vms_sc_sig_clear','vms_sc_sig_status','vms_sc_sig_data');\n\n    console.log('[VMS] register-form: binding submit handler');\n    $('#vms-register-form').on('submit', function(e){\n        e.preventDefault();\n        console.log('[VMS] register-form: submit fired');\n        var $form = $(this);\n        var $btn  = $('#vms-register-submit');\n        var $msgs = $('#vms-register-messages');\n\n        try {\n            var selectedType = $('input[name=\"volunteer_type\"]:checked').val() || 'regular';\n\n            \/\/ Password match\n            if ($('#vms_password').val() !== $('#vms_password_confirm').val()) {\n                $msgs.html('<div class=\"vms-error\">Passwords do not match.<\/div>').show();\n                return;\n            }\n\n            \/\/ Signature validation \u2014 required for both YA types\n            var isYaType = (selectedType === 'junior_ya' || selectedType === 'senior_ya');\n            if (isYaType && !$('#vms_ya_sig_data').val()) {\n                $msgs.html('<div class=\"vms-error\">Guardian signature is required.<\/div>').show();\n                var $sigCanvas = $('#vms_ya_sig_canvas');\n                if ($sigCanvas.length) {\n                    $('html,body').animate({scrollTop:$sigCanvas.offset().top-80},400);\n                }\n                $form.find('button[type=submit]').prop('disabled', false);\n                return;\n            }\n\n            \/\/ Motivation word count \u2014 guard against missing element (silent\n            \/\/ TypeError on undefined.trim() was halting the submit handler\n            \/\/ entirely with no visible error).\n            var motivationRaw   = $('#vms_motivation').val() || '';\n            var motivationTrim  = motivationRaw.trim();\n            var motivationWords = motivationTrim === '' ? 0 : motivationTrim.split(\/\\s+\/).length;\n            if (motivationWords > 50) {\n                $msgs.html('<div class=\"vms-error\">Your motivation response must be 50 words or fewer.<\/div>').show();\n                return;\n            }\n        } catch (err) {\n            console.error('[VMS] register-form validation error:', err);\n            $msgs.html('<div class=\"vms-error\">A form validation error occurred: ' + (err && err.message ? err.message : err) + '. Please refresh and try again.<\/div>').show();\n            return;\n        }\n\n        $msgs.hide();\n\n        var formData = new FormData(this);\n        \/\/ Signal that our JS actually ran \u2014 lets the server tell a real browser\n        \/\/ (whose password manager may have autofilled the hidden honeypot) apart\n        \/\/ from a scripted bot POST. See ajax_register() honeypot logic.\n        formData.append('vms_js_ok', '1');\n\n        console.log('[VMS] register-form: posting AJAX');\n        $.ajax({\n            url:         'https:\/\/spca.org.sg\/vms\/wp-admin\/admin-ajax.php',\n            type:        'POST',\n            data:        formData,\n            processData: false,\n            contentType: false,\n            dataType:    'text',  \/\/ get raw text so we can see PHP warnings polluting the JSON\n            success: function(rawRes){\n                console.log('[VMS] register-form: raw response (first 500 chars):', (rawRes || '').substring(0, 500));\n                console.log('[VMS] register-form: raw response length:', (rawRes || '').length);\n                var res;\n                try {\n                    \/\/ Strip leading garbage (PHP warnings\/notices) before the JSON.\n                    var jsonStart = rawRes.indexOf('{');\n                    if (jsonStart > 0) {\n                        console.warn('[VMS] register-form: response had ' + jsonStart + ' bytes of leading garbage:', rawRes.substring(0, jsonStart));\n                        rawRes = rawRes.substring(jsonStart);\n                    }\n                    \/\/ Strip trailing garbage after the closing brace.\n                    var jsonEnd = rawRes.lastIndexOf('}');\n                    if (jsonEnd > -1 && jsonEnd < rawRes.length - 1) {\n                        rawRes = rawRes.substring(0, jsonEnd + 1);\n                    }\n                    res = JSON.parse(rawRes);\n                } catch (parseErr) {\n                    console.error('[VMS] register-form: JSON parse failed:', parseErr);\n                    $msgs.html('<div class=\"vms-error\">Server returned an invalid response. Check the browser console for details, then contact support.<\/div>').show();\n                    $btn.prop('disabled', false).text('Submit Registration');\n                    return;\n                }\n                if (res && res.success) {\n                    $form.hide();\n                    var successMsg = (res.data && res.data.message) ? res.data.message : 'Registration successful.';\n                    $msgs.html('<div class=\"vms-success\">' + successMsg + '<\/div>').show();\n                } else {\n                    var msgs = (res && res.data && res.data.messages) ? res.data.messages\n                             : (res && res.data && res.data.message)  ? [ res.data.message ]\n                             : ['An error occurred. Please try again.'];\n                    $msgs.html('<div class=\"vms-error\"><ul><li>' + msgs.join('<\/li><li>') + '<\/li><\/ul><\/div>').show();\n                    \/\/ Auto-scroll to the error so users can SEE it without manually scrolling up.\n                    $('html,body').animate({ scrollTop: $msgs.offset().top - 80 }, 400);\n                    $btn.prop('disabled', false).text('Submit Registration');\n                }\n            },\n            error: function(xhr, status, err){\n                console.error('[VMS] register-form: AJAX error:', status, err, 'status code:', xhr && xhr.status, 'response:', xhr && xhr.responseText && xhr.responseText.substring(0, 500));\n                $msgs.html('<div class=\"vms-error\">A server error occurred. Please try again later. (Check console for details.)<\/div>').show();\n                $('html,body').animate({ scrollTop: $msgs.offset().top - 80 }, 400);\n                $btn.prop('disabled', false).text('Submit Registration');\n            }\n        });\n    });\n})(jQuery);\n<\/script>\n\t\t\t\t<\/div>\n\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":"<p>You are already logged in.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_theme","meta":{"footnotes":""},"class_list":["post-9","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/spca.org.sg\/vms\/wp-json\/wp\/v2\/pages\/9","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/spca.org.sg\/vms\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/spca.org.sg\/vms\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/spca.org.sg\/vms\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/spca.org.sg\/vms\/wp-json\/wp\/v2\/comments?post=9"}],"version-history":[{"count":36,"href":"https:\/\/spca.org.sg\/vms\/wp-json\/wp\/v2\/pages\/9\/revisions"}],"predecessor-version":[{"id":420,"href":"https:\/\/spca.org.sg\/vms\/wp-json\/wp\/v2\/pages\/9\/revisions\/420"}],"wp:attachment":[{"href":"https:\/\/spca.org.sg\/vms\/wp-json\/wp\/v2\/media?parent=9"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}