<style id="elementor-post-2835">.elementor-2835 .elementor-element.elementor-element-fb841fe > .elementor-widget-container{border-radius:0px 0px 0px 0px;}.elementor-2835 .elementor-element.elementor-element-fb841fe img{width:100%;border-style:solid;border-width:1px 1px 1px 1px;border-color:#EEEEEEEE;border-radius:10px 10px 10px 10px;}.elementor-2835 .elementor-element.elementor-element-a442927 .elementor-heading-title{font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-weight:var( --e-global-typography-accent-font-weight );}.elementor-2835 .elementor-element.elementor-element-25fef28 .elementor-icon-list-icon i{transition:color 0.3s;}.elementor-2835 .elementor-element.elementor-element-25fef28 .elementor-icon-list-icon svg{transition:fill 0.3s;}.elementor-2835 .elementor-element.elementor-element-25fef28{--e-icon-list-icon-size:14px;--icon-vertical-offset:0px;}.elementor-2835 .elementor-element.elementor-element-25fef28 .elementor-icon-list-text{transition:color 0.3s;}/* Start custom CSS for html, class: .elementor-element-0cca9bb */.mxs .elementor-button{
    background: var(--e-global-color-primary);
    color: #fff !important;
}
#goToPersonalInfo{
    float: right;
    background: var(--e-global-color-primary);
    color: #fff !important;
}
#BackButton{
    background: transparent !important;
    color: var(--e-global-color-primary) !important;
    padding: 10px 0px;
}
#BackButton svg *{
    fill: var(--e-global-color-primary) !important;
}
#SubmitButton{
    width: 100%;
    margin-top: 20px;
}/* End custom CSS */
/* Start custom CSS for section, class: .elementor-element-bd1b641 */.cv-content {
    visibility: hidden;
}/* End custom CSS */</style>{"id":2835,"date":"2026-09-24T15:27:37","date_gmt":"2026-09-24T10:27:37","guid":{"rendered":"https:\/\/deafreachna.org\/donate\/?page_id=2835"},"modified":"2026-09-24T17:26:26","modified_gmt":"2026-09-24T12:26:26","slug":"donate","status":"publish","type":"page","link":"https:\/\/deafreachna.org\/donate\/","title":{"rendered":"Donate New"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2835\" class=\"elementor elementor-2835\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-bd1b641 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"bd1b641\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-extended\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-c2ea954\" data-id=\"c2ea954\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-fb841fe elementor-widget elementor-widget-image\" data-id=\"fb841fe\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"530\" height=\"331\" src=\"https:\/\/deafreachna.org\/donate\/wp-content\/uploads\/2026\/09\/deaf-children-chance-to-learn-square-banner.jpg\" class=\"attachment-large size-large wp-image-2838\" alt=\"\" srcset=\"https:\/\/deafreachna.org\/donate\/wp-content\/uploads\/2026\/09\/deaf-children-chance-to-learn-square-banner.jpg 530w, https:\/\/deafreachna.org\/donate\/wp-content\/uploads\/2026\/09\/deaf-children-chance-to-learn-square-banner-300x187.jpg 300w\" sizes=\"(max-width: 530px) 100vw, 530px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a442927 elementor-widget elementor-widget-heading\" data-id=\"a442927\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Empower Deaf Children Through Education<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ae71935 elementor-widget elementor-widget-text-editor\" data-id=\"ae71935\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Over 1 million deaf children in Pakistan are still waiting for a chance to learn. With less than 5% in school, the right to education remains out of reach for the vast majority.<\/p><p>Your Zakat and donations can change that today. Help open the doors of opportunity. Empower deaf children with the education they deserve, and be the reason their dreams come to life.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-cddbf62\" data-id=\"cddbf62\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-0cca9bb mxs elementor-widget elementor-widget-html\" data-id=\"0cca9bb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n<div id=\"udg-donate-app\">\n  <div class=\"udg-card\">\n    <div class=\"udg-card-inner\">\n\n      <!-- ================= STEP 1: AMOUNT ================= -->\n      <section class=\"udg-panel active\" data-step=\"1\">\n        <div class=\"udg-step-header\">\n          <button type=\"button\" class=\"udg-step-back udg-hidden\" aria-label=\"Back\"><\/button>\n          <h3 class=\"udg-step-title\">Choose your donation amount<\/h3>\n        <\/div>\n        <div class=\"udg-progress-bar\">\n          <div class=\"udg-progress-seg\" id=\"seg1\">\n            <div class=\"udg-progress-seg-fill\"><\/div>\n          <\/div>\n          <div class=\"udg-progress-seg\" id=\"seg2\">\n            <div class=\"udg-progress-seg-fill\"><\/div>\n          <\/div>\n          <div class=\"udg-progress-seg\" id=\"seg3\">\n            <div class=\"udg-progress-seg-fill\"><\/div>\n          <\/div>\n        <\/div>\n        <div class=\"udg-progress-labels\">\n          <span id=\"lab1\">Amount<\/span><span id=\"lab2\">Your info<\/span><span id=\"lab3\">Payment<\/span>\n        <\/div>\n\n        <div class=\"udg-field-label\">Where should it go<\/div>\n        <select class=\"udg-select\" id=\"udgFundSelect\" aria-label=\"Choose a fund\">\n                      <option value=\"12\">General Donation<\/option>\n                      <option value=\"64\">Sponsor a Wing<\/option>\n                      <option value=\"68\">Support a Section<\/option>\n                      <option value=\"69\">Sponsor a School<\/option>\n                      <option value=\"579\">Sponsor a Student<\/option>\n                      <option value=\"582\">Sponsor Healthy Lunch<\/option>\n                      <option value=\"599\">Sponsor a Classroom<\/option>\n                      <option value=\"603\">Sponsor a Satellite School<\/option>\n                  <\/select>\n\n        <!-- Giving frequency (config-driven: Give Once \/ Recurring Donation) -->\n        <div class=\"udg-seg-row\" id=\"udgFreqRow\" role=\"group\" aria-label=\"Giving frequency\">\n                      <button type=\"button\" class=\"udg-seg-btn selected\"\n              data-freq-id=\"once\"\n              data-freq-value=\"Give Once\">Give Once<\/button>\n                      <button type=\"button\" class=\"udg-seg-btn\"\n              data-freq-id=\"monthly\"\n              data-freq-value=\"Recurring Donation\">Recurring Donation<\/button>\n                  <\/div>\n\n        <!-- Currency (config-driven form-level select: USD \/ CAD \/ AUD \/ AED) -->\n                  <div class=\"udg-field-label\">Currency<\/div>\n          <div class=\"udg-seg-row\" id=\"udgCurrencyRow\" role=\"group\" aria-label=\"Currency\">\n                          <button type=\"button\" class=\"udg-seg-btn selected\"\n                data-cur=\"USD\">USD<\/button>\n                          <button type=\"button\" class=\"udg-seg-btn\"\n                data-cur=\"CAD\">CAD<\/button>\n                          <button type=\"button\" class=\"udg-seg-btn\"\n                data-cur=\"AUD\">AUD<\/button>\n                          <button type=\"button\" class=\"udg-seg-btn\"\n                data-cur=\"AED\">AED<\/button>\n                      <\/div>\n        \n        <!-- amount UI (presets \/ packages \/ custom) rendered by JS per fund -->\n        <div id=\"udgAmountArea\"><\/div>\n\n        <div class=\"udg-impact-note\">\n          <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#166846\" stroke-width=\"2.3\">\n            <path d=\"M12 2 2 22h20L12 2Z\" \/>\n            <path d=\"M12 9v5\" \/>\n            <path d=\"M12 17h.01\" \/>\n          <\/svg>\n          <span id=\"udgImpactText\">&mdash;<\/span>\n        <\/div>\n\n        <div class=\"udg-field-label\">Donation type<\/div>\n        <div class=\"udg-pill-row\" id=\"udgTypeRow\" role=\"group\" aria-label=\"Donation type\">\n                      <button type=\"button\" class=\"udg-pill selected\"\n              data-type=\"General\">General<\/button>\n                      <button type=\"button\" class=\"udg-pill\"\n              data-type=\"Zakat\">Zakat<\/button>\n                      <button type=\"button\" class=\"udg-pill\"\n              data-type=\"Sadqah\">Sadqah<\/button>\n                  <\/div>\n\n        <div class=\"udg-inline-error\" id=\"udgAmountErr\"><\/div>\n        <button type=\"button\" class=\"udg-btn\" id=\"udgAmountContinue\">\n          Continue\n          <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\"\n            stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <path d=\"M9 18l6-6-6-6\" \/>\n          <\/svg>\n        <\/button>\n      <\/section>\n\n      <!-- ================= MONTHLY UPSELL (conditional) ================= -->\n              <section class=\"udg-panel\" data-step=\"monthly\">\n          <div class=\"udg-step-header\">\n            <button type=\"button\" class=\"udg-step-back\" id=\"udgMonthlyBack\" aria-label=\"Back\">\n              <svg width=\"17\" height=\"17\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\"\n                stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                <path d=\"M15 18l-6-6 6-6\" \/>\n              <\/svg>\n            <\/button>\n            <h3 class=\"udg-step-title\">Consider giving monthly<\/h3>\n          <\/div>\n          <div class=\"udg-upsell-card\">\n            <p class=\"udg-upsell-desc\">A monthly gift lets Deaf Reach plan further ahead \u2014 sustaining a deaf student&#039;s education across the whole year instead of a single moment.<\/p>\n            <div class=\"udg-upsell-toggle-row\">\n              <button type=\"button\" class=\"udg-switch\" id=\"udgMonthlySwitch\" role=\"switch\" aria-checked=\"false\"\n                aria-label=\"Toggle monthly giving\">\n                <div class=\"udg-switch-knob\"><\/div>\n              <\/button>\n              <span class=\"udg-upsell-toggle-text\">Give <b id=\"udgMonthlySuggestAmt\">&mdash;<\/b> per month instead<\/span>\n            <\/div>\n            <div class=\"udg-upsell-impact\" id=\"udgMonthlyImpact\">&mdash;<\/div>\n            <button type=\"button\" class=\"udg-btn\" id=\"udgMonthlyContinue\">\n              Continue with <b id=\"udgMonthlyContinueAmt\">&mdash;<\/b>\n              <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\"\n                stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                <path d=\"M9 18l6-6-6-6\" \/>\n              <\/svg>\n            <\/button>\n          <\/div>\n        <\/section>\n      \n      <!-- ================= STEP 2: INFO ================= -->\n      <section class=\"udg-panel\" data-step=\"2\">\n        <div class=\"udg-step-header\">\n          <button type=\"button\" class=\"udg-step-back\" id=\"udgInfoBack\" aria-label=\"Back\">\n            <svg width=\"17\" height=\"17\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\"\n              stroke-linecap=\"round\" stroke-linejoin=\"round\">\n              <path d=\"M15 18l-6-6 6-6\" \/>\n            <\/svg>\n          <\/button>\n          <h3 class=\"udg-step-title\">Enter your information<\/h3>\n        <\/div>\n        <div class=\"udg-progress-bar\">\n          <div class=\"udg-progress-seg\" id=\"seg1b\">\n            <div class=\"udg-progress-seg-fill\"><\/div>\n          <\/div>\n          <div class=\"udg-progress-seg\" id=\"seg2b\">\n            <div class=\"udg-progress-seg-fill\"><\/div>\n          <\/div>\n          <div class=\"udg-progress-seg\" id=\"seg3b\">\n            <div class=\"udg-progress-seg-fill\"><\/div>\n          <\/div>\n        <\/div>\n        <div class=\"udg-progress-labels\">\n          <span id=\"lab1b\">Amount<\/span><span id=\"lab2b\">Your info<\/span><span id=\"lab3b\">Payment<\/span>\n        <\/div>\n\n        <div class=\"udg-input-row\">\n          <div class=\"udg-field half\"><span class=\"udg-field-icon-label is-required\">First name<\/span><input type=\"text\"\n              id=\"udgFirstName\" autocomplete=\"given-name\" maxlength=\"50\" aria-required=\"true\"><\/div>\n          <div class=\"udg-field half\"><span class=\"udg-field-icon-label is-required\">Last name<\/span><input type=\"text\"\n              id=\"udgLastName\" autocomplete=\"family-name\" maxlength=\"50\" aria-required=\"true\"><\/div>\n        <\/div>\n        <div class=\"udg-field\"><span class=\"udg-field-icon-label is-required\">Email<\/span><input type=\"email\" id=\"udgEmail\"\n            autocomplete=\"email\" maxlength=\"100\" aria-required=\"true\"><\/div>\n        <div class=\"udg-field\"><span class=\"udg-field-icon-label is-required\">Contact number<\/span><input type=\"tel\" id=\"udgPhone\"\n            autocomplete=\"tel\" maxlength=\"20\" aria-required=\"true\"><\/div>\n        <div class=\"udg-field\"><span class=\"udg-field-icon-label is-required\">Address<\/span><textarea id=\"udgAddress\"\n            autocomplete=\"street-address\" maxlength=\"120\" aria-required=\"true\"><\/textarea><\/div>\n        <div class=\"udg-input-row\">\n          <div class=\"udg-field half\"><span class=\"udg-field-icon-label is-required\">City<\/span><input type=\"text\" id=\"udgCity\"\n              autocomplete=\"address-level2\" maxlength=\"50\" aria-required=\"true\"><\/div>\n          <div class=\"udg-field half\" id=\"udgZipField\"><span class=\"udg-field-icon-label is-required\" id=\"udgZipLabel\">Zip \/ Postal\n              code<\/span><input type=\"text\" id=\"udgZip\" autocomplete=\"postal-code\" maxlength=\"20\" aria-required=\"true\"><\/div>\n        <\/div>\n        <div class=\"udg-input-row\">\n          <div class=\"udg-field half\"><span class=\"udg-field-icon-label is-required\">Country<\/span>\n            <select id=\"udgCountry\" autocomplete=\"country\" aria-required=\"true\"><option value=\"AF\">Afghanistan<\/option><option value=\"AL\">Albania<\/option><option value=\"DZ\">Algeria<\/option><option value=\"AO\">Angola<\/option><option value=\"AR\">Argentina<\/option><option value=\"AM\">Armenia<\/option><option value=\"AU\">Australia<\/option><option value=\"AT\">Austria<\/option><option value=\"AZ\">Azerbaijan<\/option><option value=\"BS\">Bahamas<\/option><option value=\"BH\">Bahrain<\/option><option value=\"BD\">Bangladesh<\/option><option value=\"BB\">Barbados<\/option><option value=\"BY\">Belarus<\/option><option value=\"BE\">Belgium<\/option><option value=\"BZ\">Belize<\/option><option value=\"BJ\">Benin<\/option><option value=\"BO\">Bolivia<\/option><option value=\"BA\">Bosnia and Herzegovina<\/option><option value=\"BW\">Botswana<\/option><option value=\"BR\">Brazil<\/option><option value=\"BN\">Brunei Darussalam<\/option><option value=\"BG\">Bulgaria<\/option><option value=\"BF\">Burkina Faso<\/option><option value=\"BI\">Burundi<\/option><option value=\"KH\">Cambodia<\/option><option value=\"CM\">Cameroon<\/option><option value=\"CA\">Canada<\/option><option value=\"CL\">Chile<\/option><option value=\"CN\">China<\/option><option value=\"CO\">Colombia<\/option><option value=\"CG\">Congo<\/option><option value=\"CR\">Costa Rica<\/option><option value=\"HR\">Croatia<\/option><option value=\"CY\">Cyprus<\/option><option value=\"CZ\">Czech Republic<\/option><option value=\"DK\">Denmark<\/option><option value=\"DO\">Dominican Republic<\/option><option value=\"EC\">Ecuador<\/option><option value=\"EG\">Egypt<\/option><option value=\"SV\">El Salvador<\/option><option value=\"EE\">Estonia<\/option><option value=\"ET\">Ethiopia<\/option><option value=\"FJ\">Fiji<\/option><option value=\"FI\">Finland<\/option><option value=\"FR\">France<\/option><option value=\"GE\">Georgia<\/option><option value=\"DE\">Germany<\/option><option value=\"GH\">Ghana<\/option><option value=\"GB\">Great Britain (UK)<\/option><option value=\"GR\">Greece<\/option><option value=\"GT\">Guatemala<\/option><option value=\"HK\">Hong Kong<\/option><option value=\"HU\">Hungary<\/option><option value=\"IS\">Iceland<\/option><option value=\"IN\">India<\/option><option value=\"ID\">Indonesia<\/option><option value=\"IQ\">Iraq<\/option><option value=\"IE\">Ireland<\/option><option value=\"IT\">Italy<\/option><option value=\"JM\">Jamaica<\/option><option value=\"JP\">Japan<\/option><option value=\"JO\">Jordan<\/option><option value=\"KZ\">Kazakhstan<\/option><option value=\"KE\">Kenya<\/option><option value=\"KR\">Korea (South)<\/option><option value=\"KW\">Kuwait<\/option><option value=\"KG\">Kyrgyzstan<\/option><option value=\"LV\">Latvia<\/option><option value=\"LB\">Lebanon<\/option><option value=\"LY\">Libya<\/option><option value=\"LT\">Lithuania<\/option><option value=\"LU\">Luxembourg<\/option><option value=\"MY\">Malaysia<\/option><option value=\"MV\">Maldives<\/option><option value=\"MT\">Malta<\/option><option value=\"MU\">Mauritius<\/option><option value=\"MX\">Mexico<\/option><option value=\"MA\">Morocco<\/option><option value=\"NP\">Nepal<\/option><option value=\"NL\">Netherlands<\/option><option value=\"NZ\">New Zealand<\/option><option value=\"NG\">Nigeria<\/option><option value=\"NO\">Norway<\/option><option value=\"OM\">Oman<\/option><option value=\"PK\" selected>Pakistan<\/option><option value=\"PS\">Palestine<\/option><option value=\"PA\">Panama<\/option><option value=\"PY\">Paraguay<\/option><option value=\"PE\">Peru<\/option><option value=\"PH\">Philippines<\/option><option value=\"PL\">Poland<\/option><option value=\"PT\">Portugal<\/option><option value=\"QA\">Qatar<\/option><option value=\"RO\">Romania<\/option><option value=\"RU\">Russian Federation<\/option><option value=\"SA\">Saudi Arabia<\/option><option value=\"SN\">Senegal<\/option><option value=\"RS\">Serbia<\/option><option value=\"SG\">Singapore<\/option><option value=\"SK\">Slovak Republic<\/option><option value=\"SI\">Slovenia<\/option><option value=\"ZA\">South Africa<\/option><option value=\"ES\">Spain<\/option><option value=\"LK\">Sri Lanka<\/option><option value=\"SD\">Sudan<\/option><option value=\"SE\">Sweden<\/option><option value=\"CH\">Switzerland<\/option><option value=\"TW\">Taiwan<\/option><option value=\"TZ\">Tanzania<\/option><option value=\"TH\">Thailand<\/option><option value=\"TN\">Tunisia<\/option><option value=\"TR\">Turkey<\/option><option value=\"UG\">Uganda<\/option><option value=\"UA\">Ukraine<\/option><option value=\"AE\">United Arab Emirates<\/option><option value=\"US\">United States<\/option><option value=\"UY\">Uruguay<\/option><option value=\"UZ\">Uzbekistan<\/option><option value=\"VE\">Venezuela<\/option><option value=\"VN\">Viet Nam<\/option><option value=\"YE\">Yemen<\/option><option value=\"ZM\">Zambia<\/option><option value=\"ZW\">Zimbabwe<\/option><\/select>\n          <\/div>\n          <div class=\"udg-field half\" id=\"udgStateField\"><span class=\"udg-field-icon-label is-required\" id=\"udgStateLabel\">State \/\n              Province<\/span>\n            <select id=\"udgState\" autocomplete=\"address-level1\" aria-required=\"true\">\n              <option value=\"\">Select<\/option>\n            <\/select>\n          <\/div>\n        <\/div>\n\n        <label class=\"udg-checkbox-row\" for=\"udgNewsletter\">\n          <input type=\"checkbox\" id=\"udgNewsletter\" checked>\n          <span>Add me to the newsletter for updates<\/span>\n        <\/label>\n\n                  <div class=\"udg-turnstile-row\" id=\"udgTurnstileRow\">\n            <div class=\"cf-turnstile\" data-sitekey=\"0x4AAAAAAD8PTf9MlQ_ThY_g\" data-theme=\"light\"><\/div>\n          <\/div>\n          <script src=\"https:\/\/challenges.cloudflare.com\/turnstile\/v0\/api.js\" async defer><\/script>\n        \n        <div class=\"udg-inline-error\" id=\"udgInfoErr\"><\/div>\n        <button type=\"button\" class=\"udg-btn\" id=\"udgInfoContinue\">\n          Continue\n          <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\"\n            stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <path d=\"M9 18l6-6-6-6\" \/>\n          <\/svg>\n        <\/button>\n        <button type=\"button\" class=\"udg-btn secondary\" id=\"udgInfoBackBtn\">Back<\/button>\n      <\/section>\n\n      <!-- ================= STEP 3: PAYMENT ================= -->\n      <section class=\"udg-panel\" data-step=\"3\">\n        <div class=\"udg-step-header\">\n          <button type=\"button\" class=\"udg-step-back\" id=\"udgPayBack\" aria-label=\"Back\">\n            <svg width=\"17\" height=\"17\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\"\n              stroke-linecap=\"round\" stroke-linejoin=\"round\">\n              <path d=\"M15 18l-6-6 6-6\" \/>\n            <\/svg>\n          <\/button>\n          <h3 class=\"udg-step-title\">Choose your payment method<\/h3>\n        <\/div>\n        <div class=\"udg-progress-bar\">\n          <div class=\"udg-progress-seg\" id=\"seg1c\">\n            <div class=\"udg-progress-seg-fill\"><\/div>\n          <\/div>\n          <div class=\"udg-progress-seg\" id=\"seg2c\">\n            <div class=\"udg-progress-seg-fill\"><\/div>\n          <\/div>\n          <div class=\"udg-progress-seg\" id=\"seg3c\">\n            <div class=\"udg-progress-seg-fill\"><\/div>\n          <\/div>\n        <\/div>\n        <div class=\"udg-progress-labels\">\n          <span id=\"lab1c\">Amount<\/span><span id=\"lab2c\">Your info<\/span><span id=\"lab3c\">Payment<\/span>\n        <\/div>\n\n        <div class=\"udg-pay-warning\" id=\"udgPayWarning\">Please select a payment method to continue.<\/div>\n\n        <!-- Visible as soon as Step 3 loads; the donor picks a gateway (Stripe or\n             PayPal) inside this chooser, then a method (card\/bank) inside Stripe. -->\n        <div class=\"udg-pay-chooser\" id=\"udgPayChooser\">\n\n        <!-- Gateway 1: Stripe \u2014 the only functional gateway. Its body contains\n             the existing Card\/Bank accordion unchanged, nested one level deeper. -->\n        <div class=\"udg-gateway-option\" id=\"udgGatewayStripe\" data-gateway=\"stripe\">\n          <div class=\"udg-gateway-head\">\n            <div class=\"udg-pay-icon\"><svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\"\n                stroke-width=\"2.2\">\n                <rect x=\"2\" y=\"5\" width=\"20\" height=\"14\" rx=\"2\" \/>\n                <path d=\"M2 10h20\" \/>\n              <\/svg><\/div>\n            Pay with Stripe\n          <\/div>\n          <div class=\"udg-gateway-body\">\n            <div class=\"udg-gateway-body-inner\">\n\n              <!-- Option 1: Debit \/ Credit Card. The empty div is the Stripe Payment\n                   Element mount point; a later task mounts a card Element into it. -->\n              <div class=\"udg-pay-option\" id=\"udgPayCard\" data-method=\"card\">\n                <div class=\"udg-pay-head\">\n                  <div class=\"udg-pay-icon\"><svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\"\n                      stroke-width=\"2.2\">\n                      <rect x=\"2\" y=\"5\" width=\"20\" height=\"14\" rx=\"2\" \/>\n                      <path d=\"M2 10h20\" \/>\n                    <\/svg><\/div>\n                  Debit \/ Credit Card\n                <\/div>\n                <div class=\"udg-pay-body\">\n                  <div class=\"udg-pay-body-inner\">\n                                        <!-- Stripe Payment Element (card) mounts here \u2014 populated by a later task. -->\n                    <div id=\"udg-stripe-card-element\" class=\"udg-stripe-mount\" data-udg-stripe=\"card\"><\/div>\n                    <div id=\"udg-stripe-card-errors\" class=\"udg-stripe-errors\" role=\"alert\" aria-live=\"polite\"><\/div>\n                  <\/div>\n                <\/div>\n              <\/div>\n\n              <!-- Option 2: Pay via Bank (Powered by Stripe). The empty div is the\n                   Stripe Payment Element mount point for the native bank method\n                   (ACH for USD \/ pre-authorized debit for CAD). NOT a hand-built bank\n                   list \u2014 Stripe's Payment Element renders the bank widget itself.\n                   Hidden via updatePayMethodVisibility() for AUD\/AED (no Stripe-native\n                   bank method for those currencies) and for recurring donations. -->\n              <div class=\"udg-pay-option\" id=\"udgPayBank\" data-method=\"bank\">\n                <div class=\"udg-pay-head\">\n                  <div class=\"udg-pay-icon\"><svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\"\n                      stroke-width=\"2.2\">\n                      <path d=\"M3 21h18\" \/>\n                      <path d=\"M5 21V9l7-5 7 5v12\" \/>\n                      <path d=\"M9 21v-6h6v6\" \/>\n                    <\/svg><\/div>\n                  Pay via Bank (Powered by Stripe)\n                <\/div>\n                <div class=\"udg-pay-body\">\n                  <div class=\"udg-pay-body-inner\">\n                    <!-- Stripe Payment Element (bank) mounts here \u2014 populated by a later task. -->\n                    <div id=\"udg-stripe-bank-element\" class=\"udg-stripe-mount\" data-udg-stripe=\"bank\"><\/div>\n                    <div id=\"udg-stripe-bank-errors\" class=\"udg-stripe-errors\" role=\"alert\" aria-live=\"polite\"><\/div>\n                    <p class=\"udg-upload-hint\">Bank payments are verified with Stripe and may take a few business days to\n                      settle. Your bank credentials are never shared with Deaf Reach.<\/p>\n                  <\/div>\n                <\/div>\n              <\/div>\n\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <!-- Gateway 2: PayPal \u2014 reference-only placeholder. Static text, no\n             inputs, no SDK, no AJAX wiring. Donate stays blocked while this\n             gateway is selected because S.payMethod is never set for it. -->\n        <div class=\"udg-gateway-option\" id=\"udgGatewayPaypal\" data-gateway=\"paypal\">\n          <div class=\"udg-gateway-head\">\n            <div class=\"udg-pay-icon\"><svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\"\n                stroke-width=\"2.2\">\n                <circle cx=\"12\" cy=\"12\" r=\"9\" \/>\n                <path d=\"M9 16V8h4a3 3 0 0 1 0 6H9\" \/>\n              <\/svg><\/div>\n            Pay with PayPal\n          <\/div>\n          <div class=\"udg-gateway-body\">\n            <div class=\"udg-gateway-body-inner\">\n              <p class=\"udg-upload-hint\">PayPal &mdash; coming soon. This payment method isn&rsquo;t available yet.<\/p>\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <\/div>\n\n        <div class=\"udg-inline-error\" id=\"udgPayErr\"><\/div>\n        <button type=\"button\" class=\"udg-btn donate\" id=\"udgDonateBtn\">\n          Donate <b id=\"udgDonateAmt\">&mdash;<\/b>\n          <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\"\n            stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <path d=\"M9 18l6-6-6-6\" \/>\n          <\/svg>\n        <\/button>\n        <div class=\"udg-secure-note\">\n          <svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\">\n            <rect x=\"3\" y=\"11\" width=\"18\" height=\"10\" rx=\"2\" \/>\n            <path d=\"M7 11V7a5 5 0 0 1 10 0v4\" \/>\n          <\/svg>\n          This is a secure, SSL encrypted payment powered by Stripe\n        <\/div>\n        <button type=\"button\" class=\"udg-btn secondary\" id=\"udgPayBackBtn\">Back<\/button>\n      <\/section>\n\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n  (function () {\n    function boot() {\n      \/\/ ---- Config sourced from the localized udg_config (filled server-side from\n      \/\/      UDG\\Core\\ConfigLoader's NA values). No fund list is hardcoded here. ----\n      var CFG = window.udg_config || {};\n      var FUNDS = (CFG.funds && typeof CFG.funds === 'object') ? CFG.funds : {};\n      var CURRENCIES = Array.isArray(CFG.currencies) && CFG.currencies.length ? CFG.currencies : [CFG.currency || 'USD'];\n      var MIN_AMOUNT = parseInt(CFG.minAmount, 10) || 1;\n      var MAX_AMOUNT = parseInt(CFG.maxAmount, 10) || 1000000;\n      var UPSELL_ANCHOR = parseInt(CFG.monthlyUpsellAnchor, 10) || 0;\n      var UPSELL_MIN = (CFG.monthlyUpsellMin != null) ? parseInt(CFG.monthlyUpsellMin, 10) : 0;\n      \/\/ Recurring capability (config-derived, nested under flags so it survives\n      \/\/ wp_localize_script as a real boolean). When false the Monthly control and\n      \/\/ the whole upsell path are skipped.\n      var SUPPORTS_RECURRING = !!(CFG.flags && CFG.flags.supportsRecurring);\n      var DEFAULT_COUNTRY = CFG.defaultCountry || 'US';\n      var UPSELL_DIVISOR = (CFG.upsell && CFG.upsell.divisor != null) ? parseInt(CFG.upsell.divisor, 10) : 3;\n      var UPSELL_STEP = (CFG.upsell && CFG.upsell.round_step != null) ? parseInt(CFG.upsell.round_step, 10) : 1;\n      var IMPACT_COPY = CFG.impactCopy || '';\n      var MONTHLY_IMPACT_COPY = CFG.monthlyImpactCopy || '';\n\n      var US_STATES = { AL: 'Alabama', AK: 'Alaska', AZ: 'Arizona', AR: 'Arkansas', CA: 'California', CO: 'Colorado', CT: 'Connecticut', DE: 'Delaware', DC: 'District of Columbia', FL: 'Florida', GA: 'Georgia', HI: 'Hawaii', ID: 'Idaho', IL: 'Illinois', IN: 'Indiana', IA: 'Iowa', KS: 'Kansas', KY: 'Kentucky', LA: 'Louisiana', ME: 'Maine', MD: 'Maryland', MA: 'Massachusetts', MI: 'Michigan', MN: 'Minnesota', MS: 'Mississippi', MO: 'Missouri', MT: 'Montana', NE: 'Nebraska', NV: 'Nevada', NH: 'New Hampshire', NJ: 'New Jersey', NM: 'New Mexico', NY: 'New York', NC: 'North Carolina', ND: 'North Dakota', OH: 'Ohio', OK: 'Oklahoma', OR: 'Oregon', PA: 'Pennsylvania', RI: 'Rhode Island', SC: 'South Carolina', SD: 'South Dakota', TN: 'Tennessee', TX: 'Texas', UT: 'Utah', VT: 'Vermont', VA: 'Virginia', WA: 'Washington', WV: 'West Virginia', WI: 'Wisconsin', WY: 'Wyoming' };\n      var CA_STATES = { AB: 'Alberta', BC: 'British Columbia', MB: 'Manitoba', NB: 'New Brunswick', NL: 'Newfoundland and Labrador', NT: 'Northwest Territories', NS: 'Nova Scotia', NU: 'Nunavut', ON: 'Ontario', PE: 'Prince Edward Island', QC: 'Quebec', SK: 'Saskatchewan', YT: 'Yukon' };\n\n      function $(id) { return document.getElementById(id); }\n      function val(id) { var e = $(id); return e ? e.value.trim() : ''; }\n      function fmt(n) { return (parseInt(n, 10) || 0).toString().replace(\/\\B(?=(\\d{3})+(?!\\d))\/g, ','); }\n\n      \/\/ First fund + its opening amount.\n      var FUND_IDS = Object.keys(FUNDS);\n      var firstFundId = FUND_IDS.length ? FUND_IDS[0] : '';\n\n      function fundOf(id) { return FUNDS[id] || {}; }\n      \/\/ Billing interval of a package chip, straight from config \u2014 never guessed\n      \/\/ from the label\/suffix (fund 603's ' - Setup School' \/ ' - Yearly Cost'\n      \/\/ chips would both be mis-read by any label-based rule).\n      function normalizeInterval(v) {\n        var s = String(v || '').toLowerCase();\n        return (s === 'year' || s === 'once') ? s : 'month';\n      }\n      function fundChips(f) {\n        \/\/ Returns [{amount, label, interval}] for the fund's presets (amount mode)\n        \/\/ or packages (package mode). Neither is hardcoded \u2014 both come from\n        \/\/ config. Flat presets carry no package interval, so they are monthly.\n        var out = [];\n        if (f && f.mode === 'package' && Array.isArray(f.packages)) {\n          f.packages.forEach(function (p) {\n            var amt = parseInt(p.amount, 10) || 0;\n            var pre = (p.prefix || ''), suf = (p.suffix || '');\n            out.push({ amount: amt, label: (pre ? pre + ' ' : '') + money(amt) + suf, interval: normalizeInterval(p.interval) });\n          });\n        } else if (Array.isArray(f.presets)) {\n          f.presets.forEach(function (v) { var a = parseInt(v, 10) || 0; out.push({ amount: a, label: money(a), interval: 'month' }); });\n        }\n        return out;\n      }\n      \/\/ A one-time-only package can never become a subscription, so it is not\n      \/\/ selectable while the recurring frequency is active.\n      function chipSelectable(c) { return !(isRecurring() && c.interval === 'once'); }\n      \/\/ Opening amount + interval for a fund: its first chip that is selectable\n      \/\/ under the CURRENT frequency. On the recurring tab this skips 'once'\n      \/\/ packages, so fund 603 opens on 'Yearly Cost' instead of pre-selecting a\n      \/\/ disabled 'Setup School' chip.\n      function defaultSelectionFor(id) {\n        var chips = fundChips(fundOf(id));\n        for (var i = 0; i < chips.length; i++) {\n          if (chipSelectable(chips[i])) return { amount: chips[i].amount, interval: chips[i].interval };\n        }\n        return { amount: chips.length ? chips[0].amount : MIN_AMOUNT, interval: 'month' };\n      }\n\n      var S = {\n        fundId: firstFundId,\n        frequencyId: 'once',\n        freqValue: 'Give Once',\n        currency: (CURRENCIES.indexOf(CFG.currency) !== -1 ? CFG.currency : CURRENCIES[0]),\n        amount: 0,\n        \/\/ Active billing interval ('month'|'year'|'once'), set implicitly by the\n        \/\/ last package chip clicked and inherited by a typed custom amount.\n        \/\/ 'once' only ever survives on the one-time tab (see setFreq).\n        interval: 'month',\n        donationType: 'General',\n        monthlyOptIn: false,\n        monthlySuggested: 0,\n        payMethod: null,\n        newsletter: true,\n        campaignId: ''\n      };\n      var initialSelection = defaultSelectionFor(firstFundId);\n      S.amount = initialSelection.amount;\n      S.interval = initialSelection.interval;\n\n      \/\/ ---------- URL query params (?dr_campaign_id=<code>-<id>&currency=<CUR>) ----------\n      \/\/ Read ONCE here at page load: this is a single-page wizard, so the query\n      \/\/ string is unchanged across every JS-driven step that follows.\n      \/\/ dr_campaign_id's real campaign id is the part AFTER THE LAST hyphen\n      \/\/ ('dr100k-59' -> '59'). The extracted id MUST be digits-only (matches the\n      \/\/ server-side gate in udg_lead_capture()\/NaCfsDonationsStore); a malformed\n      \/\/ or non-numeric id is dropped (S.campaignId stays '') rather than stored,\n      \/\/ with a visible notice so a broken campaign link doesn't silently fail.\n      \/\/ Param missing entirely -> S.campaignId stays '' with no notice.\n      var urlParams = new URLSearchParams(window.location.search);\n      var rawCampaignParam = urlParams.get('dr_campaign_id') || '';\n      if (rawCampaignParam) {\n        var campaignHyphenIdx = rawCampaignParam.lastIndexOf('-');\n        var extractedCampaignId = campaignHyphenIdx === -1 ? rawCampaignParam : rawCampaignParam.slice(campaignHyphenIdx + 1);\n        if (\/^\\d+$\/.test(extractedCampaignId)) {\n          S.campaignId = extractedCampaignId;\n        } else {\n          showError('udgAmountErr', 'The campaign link used is invalid, so it has been ignored \u2014 your donation will still be processed normally.');\n        }\n      }\n      \/\/ Pre-select currency from the URL (case-insensitive), but only when it is\n      \/\/ in the configured allowlist; otherwise the config-driven default above\n      \/\/ stands. Goes through the existing setCurrency() so button state \/ amount\n      \/\/ labels \/ prefix all sync exactly as a manual click would; the donor can\n      \/\/ still change it afterwards.\n      var urlCurrencyParam = (urlParams.get('currency') || '').toUpperCase();\n      \/\/ Tracks whether setCurrency() above already ran renderAmount() during this\n      \/\/ page load, so init()'s own renderAmount() call further down (~line 940)\n      \/\/ isn't a redundant second render on every load that has a currency param.\n      var currencyRenderedOnLoad = false;\n      if (urlCurrencyParam && CURRENCIES.indexOf(urlCurrencyParam) !== -1) {\n        setCurrency(urlCurrencyParam);\n        currencyRenderedOnLoad = true;\n      }\n\n      function money(v) { return S.currency + ' ' + fmt(v); }\n      function isRecurring() { return S.frequencyId !== 'once'; }\n      \/\/ The interval a recurring donation would actually bill at: 'once' chips\n      \/\/ are one-time items, so they never define a subscription interval.\n      function activeInterval() { return S.interval === 'year' ? 'year' : 'month'; }\n      function perSuffix() { return isRecurring() ? (' \/ ' + activeInterval()) : ''; }\n      function fundLabel() { var f = fundOf(S.fundId); return f.label || String(S.fundId); }\n\n      \/\/ ---------- inline validation helpers (no browser alert) ----------\n      function showError(id, msg) { var e = $(id); if (e) { e.textContent = msg; e.classList.add('show'); } }\n      function hideError(id) { var e = $(id); if (e) { e.textContent = ''; e.classList.remove('show'); } }\n      function markInvalid(id) { var e = $(id); if (e) e.classList.add('udg-invalid'); }\n      var INFO_FIELDS = ['udgFirstName', 'udgLastName', 'udgEmail', 'udgPhone', 'udgCity', 'udgCountry', 'udgAddress', 'udgState', 'udgZip'];\n      function clearInfoErrors() { INFO_FIELDS.forEach(function (id) { var e = $(id); if (e) e.classList.remove('udg-invalid'); }); hideError('udgInfoErr'); }\n\n      \/\/ ---------- amount area ----------\n      function renderAmount() {\n        var f = fundOf(S.fundId);\n        var chips = fundChips(f);\n        var html = '<div class=\"udg-field-label\">Amount<\/div>';\n        html += '<div class=\"udg-amount-wrap\" id=\"udgAmountWrap\"><div class=\"udg-amount-prefix\" id=\"udgAmountPrefix\">' + S.currency + '<\/div>' +\n          '<input type=\"number\" id=\"udgAmountInput\" inputmode=\"numeric\" min=\"' + MIN_AMOUNT + '\" value=\"' + S.amount + '\">' +\n          (isRecurring() ? '<div class=\"udg-amount-suffix\">\/ ' + activeInterval() + '<\/div>' : '') + '<\/div>';\n        html += '<div class=\"udg-amount-grid\" id=\"udgAmountGrid\">';\n        chips.forEach(function (c) {\n          var disabled = !chipSelectable(c);\n          html += '<div class=\"udg-chip' + ((!disabled && c.amount === S.amount) ? ' selected' : '') + (disabled ? ' udg-chip-disabled' : '') +\n            '\" data-val=\"' + c.amount + '\" data-interval=\"' + c.interval + '\"' + (disabled ? ' aria-disabled=\"true\"' : '') +\n            '><div class=\"udg-chip-dot\"><\/div>' + c.label + '<\/div>';\n        });\n        html += '<\/div>';\n        $('udgAmountArea').innerHTML = html;\n        bindAmountEvents();\n        updateImpact();\n      }\n\n      function markChips() {\n        document.querySelectorAll('#udgAmountArea .udg-chip').forEach(function (c) {\n          var v = c.getAttribute('data-val');\n          c.classList.toggle('selected', !c.classList.contains('udg-chip-disabled') && parseInt(v, 10) === S.amount);\n        });\n      }\n\n      \/\/ Keep the amount field's '\/ month' | '\/ year' suffix in step with the\n      \/\/ interval of the chip just clicked, without re-rendering the whole area.\n      function updateAmountSuffix() {\n        var s = document.querySelector('#udgAmountArea .udg-amount-suffix');\n        if (s) s.textContent = '\/ ' + activeInterval();\n      }\n\n      function bindAmountEvents() {\n        var input = $('udgAmountInput');\n        if (input) {\n          input.addEventListener('input', function () {\n            \/\/ Donations are whole currency units throughout (fmt()\/money() are\n            \/\/ parseInt-based), so a typed '25.50' normalises to 2550 here. Write\n            \/\/ the normalised value BACK to the field \u2014 not only in the max-clamp\n            \/\/ branch \u2014 or the donor keeps seeing 25.50 while S.amount, the lead\n            \/\/ and the charge are 2550. An emptied field is left alone so it does\n            \/\/ not fill itself with '0' mid-edit.\n            var raw = this.value.replace(\/[^0-9]\/g, '');\n            var v = parseInt(raw, 10) || 0;\n            if (v > MAX_AMOUNT) { v = MAX_AMOUNT; }\n            if (raw !== '' && this.value !== String(v)) { this.value = v; }\n            S.amount = v; hideError('udgAmountErr'); markChips(); updateImpact();\n          });\n          input.addEventListener('focus', function () { var w = $('udgAmountWrap'); if (w) w.classList.add('focused'); });\n          input.addEventListener('blur', function () { var w = $('udgAmountWrap'); if (w) w.classList.remove('focused'); });\n        }\n        document.querySelectorAll('#udgAmountArea .udg-chip').forEach(function (chip) {\n          \/\/ A disabled chip gets no click handler at all \u2014 it is inert, not just\n          \/\/ greyed out.\n          if (chip.classList.contains('udg-chip-disabled')) return;\n          chip.addEventListener('click', function () {\n            var v = this.getAttribute('data-val');\n            S.amount = parseInt(v, 10) || 0;\n            S.interval = normalizeInterval(this.getAttribute('data-interval'));\n            if (input) input.value = S.amount;\n            markChips(); updateAmountSuffix(); updateImpact();\n          });\n        });\n      }\n\n      function updateImpact() {\n        var t = $('udgImpactText'); if (t) t.textContent = IMPACT_COPY;\n        var d = $('udgDonateAmt'); if (d) d.textContent = money(S.amount) + perSuffix();\n      }\n\n      \/\/ ---------- currency ----------\n      function setCurrency(cur) {\n        if (CURRENCIES.indexOf(cur) === -1) return;\n        S.currency = cur;\n        document.querySelectorAll('#udgCurrencyRow .udg-seg-btn').forEach(function (b) {\n          b.classList.toggle('selected', b.getAttribute('data-cur') === cur);\n        });\n        var p = $('udgAmountPrefix'); if (p) p.textContent = cur;\n        renderAmount(); \/\/ re-label chips + donate amount in the new currency code\n      }\n\n      \/\/ ---------- frequency ----------\n      function setFreq(id, value) {\n        S.frequencyId = id;\n        S.freqValue = value;\n        document.querySelectorAll('#udgFreqRow .udg-seg-btn').forEach(function (b) {\n          b.classList.toggle('selected', b.getAttribute('data-freq-id') === id);\n        });\n        \/\/ Switching to recurring while a one-time-only package is selected: that\n        \/\/ chip is now disabled, so fall back to this fund's first recurring chip\n        \/\/ rather than leaving a disabled selection driving the amount.\n        if (isRecurring() && S.interval === 'once') {\n          var sel = defaultSelectionFor(S.fundId);\n          S.amount = sel.amount;\n          S.interval = sel.interval;\n        }\n        renderAmount();\n        updatePayMethodVisibility();\n      }\n\n      \/\/ ---------- steps \/ progress ----------\n      function renderProgress(step) {\n        var activeIndex = (step === '2') ? 1 : ((step === '3') ? 2 : ((step === '4') ? 3 : 0));\n        ['', 'b', 'c'].forEach(function (suf) {\n          for (var i = 0; i < 3; i++) {\n            var seg = $('seg' + (i + 1) + suf), lab = $('lab' + (i + 1) + suf);\n            if (!seg) continue;\n            seg.classList.remove('done', 'active'); if (lab) lab.classList.remove('on');\n            if (activeIndex > i || step === '4') { seg.classList.add('done'); if (lab) lab.classList.add('on'); }\n            else if (activeIndex === i) { seg.classList.add('active'); if (lab) lab.classList.add('on'); }\n          }\n        });\n      }\n\n      function goToStep(step) {\n        document.querySelectorAll('#udg-donate-app .udg-panel').forEach(function (p) { p.classList.remove('active'); });\n        var el = document.querySelector('#udg-donate-app .udg-panel[data-step=\"' + step + '\"]');\n        if (el) el.classList.add('active');\n        if (step === '3') { updatePayMethodVisibility(); updateImpact(); }\n        renderProgress(step);\n        try { $('udg-donate-app').scrollIntoView({ behavior: 'smooth', block: 'start' }); } catch (e) { }\n      }\n\n      \/\/ ---------- monthly upsell ----------\n      \/\/ At or below the upsell minimum the amount is already small enough to ask for\n      \/\/ monthly as-is; above it we suggest roughly amount\/divisor, rounded up to the step.\n      function computeMonthlySuggested(amount) {\n        if (amount <= UPSELL_MIN) return amount;\n        return Math.max(MIN_AMOUNT, Math.ceil((amount \/ UPSELL_DIVISOR) \/ UPSELL_STEP) * UPSELL_STEP);\n      }\n\n      function renderMonthly() {\n        $('udgMonthlySuggestAmt').textContent = money(S.monthlySuggested);\n        $('udgMonthlyImpact').textContent = MONTHLY_IMPACT_COPY;\n        var sw = $('udgMonthlySwitch'); if (sw) { sw.classList.remove('on'); sw.setAttribute('aria-checked', 'false'); }\n        S.monthlyOptIn = false;\n        $('udgMonthlyContinueAmt').textContent = money(S.amount);\n      }\n\n      function handleAmountContinue() {\n        hideError('udgAmountErr');\n        if (!S.amount || S.amount < MIN_AMOUNT) { showError('udgAmountErr', 'Minimum donation amount is ' + S.currency + ' ' + MIN_AMOUNT + '.'); return; }\n        if (S.amount > MAX_AMOUNT) { showError('udgAmountErr', 'Maximum donation amount is ' + S.currency + ' ' + fmt(MAX_AMOUNT) + '.'); return; }\n        if (SUPPORTS_RECURRING && !isRecurring() && UPSELL_ANCHOR > 0 && S.amount <= UPSELL_ANCHOR) {\n          S.monthlySuggested = computeMonthlySuggested(S.amount);\n          renderMonthly();\n          goToStep('monthly');\n        } else {\n          goToStep('2');\n        }\n      }\n\n      \/\/ ---------- info ----------\n      function populateStates(country) {\n        var map = (country === 'US') ? US_STATES : (country === 'CA' ? CA_STATES : null);\n        var sel = $('udgState');\n        var field = $('udgStateField');\n        if (!map) {\n          if (sel) sel.innerHTML = '<option value=\"\">\u2014<\/option>';\n          if (field) field.style.display = 'none';\n        } else {\n          if (field) field.style.display = '';\n          if (sel) sel.innerHTML = '<option value=\"\">Select<\/option>' + Object.keys(map).map(function (k) { return '<option value=\"' + k + '\">' + map[k] + '<\/option>'; }).join('');\n        }\n        var zipField = $('udgZipField');\n        if (zipField) zipField.style.display = (country === 'US' || country === 'CA') ? '' : 'none';\n        var zipLabel = $('udgZipLabel');\n        if (zipLabel) zipLabel.textContent = (country === 'CA') ? 'Postal code' : 'Zip code';\n      }\n\n      \/\/ UX-only allow-list checks (server-side re-validates authoritatively in\n      \/\/ udg_lead_capture()): the fund\/type buttons are rendered exclusively from\n      \/\/ config so a normal donor can never pick outside these sets, but this\n      \/\/ catches a tampered\/stale client state before it is ever submitted.\n      var ALLOWED_TYPES = (Array.isArray(CFG.donationTypes) ? CFG.donationTypes : []).map(function (t) { return t && t.type; });\n\n      function validateInfo() {\n        clearInfoErrors();\n        if (ALLOWED_TYPES.length && ALLOWED_TYPES.indexOf(S.donationType) === -1) {\n          showError('udgInfoErr', 'Please choose a valid donation type.'); return;\n        }\n        if (FUND_IDS.length && FUND_IDS.indexOf(String(S.fundId)) === -1) {\n          showError('udgInfoErr', 'Please choose a valid fund.'); return;\n        }\n        var required = [\n          ['udgFirstName', 'First name'], ['udgLastName', 'Last name'],\n          ['udgEmail', 'Email'], ['udgPhone', 'Contact number'],\n          ['udgCity', 'City'], ['udgCountry', 'Country'], ['udgAddress', 'Address']\n        ];\n        var co = val('udgCountry');\n        if (co === 'US' || co === 'CA') { required.push(['udgState', 'State \/ Province']); required.push(['udgZip', 'Zip \/ Postal code']); }\n        var missing = [];\n        required.forEach(function (f) { if (!val(f[0])) { markInvalid(f[0]); missing.push(f[1]); } });\n        if (missing.length) { showError('udgInfoErr', 'Please fill in: ' + missing.join(', ') + '.'); return; }\n\n        var em = val('udgEmail'), ph = val('udgPhone'), zip = val('udgZip');\n        if (!\/^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,})+$\/.test(em)) {\n          markInvalid('udgEmail'); showError('udgInfoErr', 'Please enter a valid email address.'); return;\n        }\n        if (!\/^\\+?\\d{6,15}([- ]\\d{1,15})*$\/.test(ph)) {\n          markInvalid('udgPhone'); showError('udgInfoErr', 'Please enter a valid phone number (digits, spaces, optional leading +).'); return;\n        }\n        if (co === 'US' && !\/^\\d{5}(-\\d{4})?$\/.test(zip)) {\n          markInvalid('udgZip'); showError('udgInfoErr', 'Please enter a valid US ZIP code (e.g. 12345 or 12345-6789).'); return;\n        }\n        if (co === 'CA' && !\/^[A-Za-z]\\d[A-Za-z] ?\\d[A-Za-z]\\d$\/.test(zip)) {\n          markInvalid('udgZip'); showError('udgInfoErr', 'Please enter a valid Canadian postal code (e.g. A1B 2C3).'); return;\n        }\n        \/\/ Character-set validation (UX only; the server is the authoritative gate).\n        var NAME_RE = \/^[\\p{L} \\-'.]+$\/u;\n        var ADDR_RE = \/^[\\p{L}\\p{N} ,.\\-#\\\/]+$\/u;\n        var badName = null;\n        [['udgFirstName', 'First name'], ['udgLastName', 'Last name'], ['udgCity', 'City']].forEach(function (f) {\n          if (!badName && !NAME_RE.test(val(f[0]))) badName = f;\n        });\n        if (badName) { markInvalid(badName[0]); showError('udgInfoErr', 'Please enter a valid ' + badName[1] + ' (letters, spaces, hyphens, apostrophes and periods only).'); return; }\n        if (!ADDR_RE.test(val('udgAddress'))) { markInvalid('udgAddress'); showError('udgInfoErr', 'Please enter a valid Address (letters, numbers, spaces and , . - # \/ only).'); return; }\n\n        S.newsletter = $('udgNewsletter').checked;\n        leadCaptureThenContinue();\n      }\n\n      \/\/ ---------- Step-2 lead capture + human verification ----------\n      \/\/ On Continue the browser calls the udg_lead_capture endpoint, which owns\n      \/\/ ALL Step-2 gating (rate-limit, Turnstile\/human-pass, amount + donor-field\n      \/\/ validation) and persists the donor as a 'Pending' LEAD, returning the\n      \/\/ transaction_id + short-lived human-pass this session carries forward into\n      \/\/ the Payment step. Re-entry (Payment -> back -> Info -> forward) sends the\n      \/\/ stored transaction_id + pass so the SAME row is UPDATED (no duplicate) and\n      \/\/ the donor is never re-challenged.\n      var leadInFlight = false;\n\n      \/\/ Cross-layer payload (CONTRACTS-NA.md \u00a78): the exact field names the NA\n      \/\/ DataStore maps (firstname\/lastname\/...\/donation_frequency\/donation_type\/\n      \/\/ fund_id\/fund_selected). Reused verbatim by the payment payload below.\n      function buildDonorPayload() {\n        return {\n          firstname: val('udgFirstName'),\n          lastname: val('udgLastName'),\n          email: val('udgEmail'),\n          phone: val('udgPhone'),\n          country: val('udgCountry'),\n          state: val('udgState'),\n          city: val('udgCity'),\n          address: val('udgAddress'),\n          zip_code: val('udgZip'),\n          amount: S.amount,\n          currency: S.currency,\n          donation_frequency: S.freqValue,     \/\/ 'Give Once' | 'Recurring Donation'\n          donation_type: S.donationType,  \/\/ 'General' | 'Zakat' | 'Sadqah'\n          fund_id: S.fundId,         \/\/ DonorBox project id\n          fund_selected: fundLabel(),      \/\/ donor-facing label\n          newsletter_optin: S.newsletter ? 1 : 0,\n          campaign_id: S.campaignId,       \/\/ numeric id after the last '-' of ?dr_campaign_id, or ''\n          recurring_interval: activeInterval() \/\/ 'month' | 'year' \u2014 Stripe subscription interval\n        };\n      }\n\n      function leadCaptureThenContinue() {\n        if (leadInFlight) return;\n        var row = $('udgTurnstileRow');\n        var isReentry = !!(window.UDG_TXN_ID && window.UDG_HUMAN_PASS);\n\n        var token = '';\n        if (!isReentry && row) {\n          try { if (window.turnstile && typeof turnstile.getResponse === 'function') token = turnstile.getResponse() || ''; } catch (e) { }\n          if (!token) { var ti = row.querySelector('[name=\"cf-turnstile-response\"]'); if (ti) token = ti.value || ''; }\n          if (!token) { showError('udgInfoErr', 'Please complete the verification above to continue.'); return; }\n        }\n\n        leadInFlight = true;\n        var btn = $('udgInfoContinue'); if (btn) btn.disabled = true;\n        function done() { leadInFlight = false; if (btn) btn.disabled = false; }\n        function resetWidget() { try { if (window.turnstile && typeof turnstile.reset === 'function') turnstile.reset(); } catch (e) { } }\n\n        var payload = buildDonorPayload();\n        if (isReentry) { payload.transaction_id = window.UDG_TXN_ID; payload.udg_human_pass = window.UDG_HUMAN_PASS; }\n        else { payload.cf_turnstile_response = token; }\n\n        fetch(udg_ajax.ajax_url + '?action=udg_lead_capture', {\n          method: 'POST', headers: { 'Content-Type': 'application\/json' }, body: JSON.stringify(payload)\n        })\n          .then(function (r) { return r.json(); })\n          .then(function (j) {\n            done();\n            if (j && j.success && j.data && j.data.transaction_id && j.data.pass) {\n              window.UDG_TXN_ID = j.data.transaction_id;\n              window.UDG_HUMAN_PASS = j.data.pass;\n              window.UDG_REDIRECT_ID = j.data.redirect_id;\n              if (row) row.style.display = 'none';\n              goToStep('3');\n            } else {\n              showError('udgInfoErr', (j && j.data && j.data.message) || 'Verification failed. Please try again.');\n              if (!isReentry) resetWidget();\n            }\n          })\n          .catch(function () { done(); showError('udgInfoErr', 'Network error. Please try again.'); if (!isReentry) resetWidget(); });\n      }\n\n      \/\/ ---------- payment ----------\n      \/\/ Top-level gateway chooser (Stripe vs PayPal). Kept fully separate from\n      \/\/ selectPay()\/'.udg-pay-option' below \u2014 reusing that class here would\n      \/\/ make selectPay()'s deselect-all also collapse this outer wrapper.\n      function selectGateway(gw) {\n        document.querySelectorAll('#udg-donate-app .udg-gateway-option').forEach(function (o) { o.classList.remove('selected'); });\n        var el = $(gw === 'stripe' ? 'udgGatewayStripe' : 'udgGatewayPaypal');\n        if (el) el.classList.add('selected');\n        if (gw !== 'stripe') {\n          \/\/ PayPal is reference-only: never let a previously-chosen Stripe\n          \/\/ method carry Donate through while PayPal is the selected gateway.\n          S.payMethod = null;\n          document.querySelectorAll('#udg-donate-app .udg-pay-option').forEach(function (o) { o.classList.remove('selected'); });\n        } else if (!S.payMethod) {\n          \/\/ One-click Stripe: no method chosen yet, so auto-expand Card and\n          \/\/ mount it by replaying the real click path (selectPay('card') here\n          \/\/ + mountMethod('card') in udg-donation.js) instead of a second\n          \/\/ donor click. Guarded on !S.payMethod so re-clicking an already-\n          \/\/ configured Stripe box (e.g. after the donor manually chose Bank)\n          \/\/ never silently reverts them back to Card.\n          var cardEl = $('udgPayCard');\n          if (cardEl) cardEl.click();\n        }\n        $('udgPayWarning').classList.remove('show');\n        hideError('udgPayErr');\n      }\n\n      function selectPay(method) {\n        S.payMethod = method;\n        document.querySelectorAll('#udg-donate-app .udg-pay-option').forEach(function (o) { o.classList.remove('selected'); });\n        var el = $(method === 'card' ? 'udgPayCard' : 'udgPayBank');\n        if (el) el.classList.add('selected');\n        $('udgPayWarning').classList.remove('show');\n        hideError('udgPayErr');\n      }\n\n      \/\/ Stripe has no native bank-debit method for AUD\/AED (mirrors the server's\n      \/\/ StripeGateway::bankMethodForCurrency() and the client's bankType() in\n      \/\/ udg-donation.js) \u2014 those currencies are card-only.\n      function currencyHasNativeBank(cur) {\n        var c = String(cur || '').toUpperCase();\n        return c === 'USD' || c === 'CAD';\n      }\n\n      \/\/ Bank (ACH \/ pre-authorized debit) settles later and is offered as a\n      \/\/ ONE-TIME method only for currencies with a native Stripe bank method;\n      \/\/ hide it for recurring donations or an unsupported currency, and clear it\n      \/\/ if it was already chosen when the donor switched away from either.\n      function updatePayMethodVisibility() {\n        var bank = $('udgPayBank');\n        if (!bank) return;\n        var available = !isRecurring() && currencyHasNativeBank(S.currency);\n        bank.style.display = available ? '' : 'none';\n        if (!available && S.payMethod === 'bank') { S.payMethod = null; bank.classList.remove('selected'); }\n      }\n\n      \/\/ Full payment payload handed to the Stripe layer (Task 7). Donor fields +\n      \/\/ the Step-2 transaction reference + human pass.\n      function buildPaymentPayload() {\n        var p = buildDonorPayload();\n        p.payment_method = S.payMethod;                 \/\/ 'card' | 'bank'\n        p.transaction_id = window.UDG_TXN_ID || '';\n        p.udg_human_pass = window.UDG_HUMAN_PASS || '';\n        return p;\n      }\n\n      function handleDonate() {\n        hideError('udgPayErr');\n        if (!S.payMethod) { $('udgPayWarning').textContent = 'Please select a payment method to continue.'; $('udgPayWarning').classList.add('show'); return; }\n\n        var payload = buildPaymentPayload();\n        var btn = $('udgDonateBtn');\n\n        \/\/ Hand off to the Stripe payment layer (assets\/js\/udg-donation.js). It\n        \/\/ drives the confirm\/verify round-trip AND performs the post-payment\n        \/\/ redirect itself (success -> thank-you, a POST-VERIFY failure ->\n        \/\/ donation-failed), so these callbacks only need to cover in-page\n        \/\/ feedback beforehand. Exception: an error raised by the inline confirm\n        \/\/ itself (a declined card) never redirects, so onError below IS the\n        \/\/ donor's final feedback and must keep re-enabling the button so they\n        \/\/ can correct the card and retry on the spot.\n        var api = window.UDG_NA || {};\n        if (typeof api.confirmPayment !== 'function') {\n          showError('udgPayErr', 'Secure payment is being finalised. Please try again shortly.');\n          return;\n        }\n        if (btn) btn.classList.add('is-disabled');\n        api.confirmPayment(payload, {\n          onProcessing: function () {},\n          onSuccess: function () {},\n          onError: function (msg) { showError('udgPayErr', msg || 'Payment could not be completed. Please try again.'); if (btn) btn.classList.remove('is-disabled'); }\n        });\n      }\n\n      \/\/ ---------- wire events ----------\n      $('udgFundSelect').addEventListener('change', function () {\n        S.fundId = this.value;\n        \/\/ Interval resets to the safe 'month' default on every fund change; the\n        \/\/ fund's opening chip then sets it (yearly only where that chip is the\n        \/\/ fund's first recurring-capable one, e.g. fund 603 on the recurring tab).\n        S.interval = 'month';\n        var sel = defaultSelectionFor(S.fundId);\n        S.amount = sel.amount;\n        S.interval = sel.interval;\n        renderAmount();\n      });\n\n      document.querySelectorAll('#udgFreqRow .udg-seg-btn').forEach(function (b) {\n        b.addEventListener('click', function () { setFreq(this.getAttribute('data-freq-id'), this.getAttribute('data-freq-value')); });\n      });\n\n      document.querySelectorAll('#udgCurrencyRow .udg-seg-btn').forEach(function (b) {\n        b.addEventListener('click', function () { setCurrency(this.getAttribute('data-cur')); });\n      });\n\n      document.querySelectorAll('#udgTypeRow .udg-pill').forEach(function (p) {\n        p.addEventListener('click', function () {\n          S.donationType = this.getAttribute('data-type');\n          document.querySelectorAll('#udgTypeRow .udg-pill').forEach(function (x) { x.classList.remove('selected'); });\n          this.classList.add('selected');\n        });\n      });\n\n      $('udgAmountContinue').addEventListener('click', handleAmountContinue);\n\n      var mBack = $('udgMonthlyBack'); if (mBack) mBack.addEventListener('click', function () { goToStep('1'); });\n      var mSwitch = $('udgMonthlySwitch');\n      if (mSwitch) mSwitch.addEventListener('click', function () {\n        S.monthlyOptIn = !S.monthlyOptIn;\n        this.classList.toggle('on', S.monthlyOptIn);\n        this.setAttribute('aria-checked', S.monthlyOptIn ? 'true' : 'false');\n        $('udgMonthlyContinueAmt').textContent = S.monthlyOptIn ? (money(S.monthlySuggested) + ' \/ month') : money(S.amount);\n      });\n      var mContinue = $('udgMonthlyContinue');\n      if (mContinue) mContinue.addEventListener('click', function () {\n        if (S.monthlyOptIn) {\n          \/\/ Switch to the monthly (Recurring) frequency at the suggested amount.\n          var recBtn = document.querySelector('#udgFreqRow .udg-seg-btn:not([data-freq-id=\"once\"])');\n          S.frequencyId = recBtn ? recBtn.getAttribute('data-freq-id') : 'monthly';\n          S.freqValue = recBtn ? recBtn.getAttribute('data-freq-value') : 'Recurring Donation';\n          document.querySelectorAll('#udgFreqRow .udg-seg-btn').forEach(function (b) { b.classList.toggle('selected', b.getAttribute('data-freq-id') === S.frequencyId); });\n          S.amount = S.monthlySuggested;\n          \/\/ The one-time -> monthly upsell is monthly by definition.\n          S.interval = 'month';\n          renderAmount();\n        }\n        goToStep('2');\n      });\n\n      $('udgInfoBack').addEventListener('click', function () { goToStep('1'); });\n      $('udgInfoBackBtn').addEventListener('click', function () { goToStep('1'); });\n      $('udgInfoContinue').addEventListener('click', validateInfo);\n      $('udgCountry').addEventListener('change', function () { populateStates(this.value); });\n\n      INFO_FIELDS.forEach(function (id) {\n        var e = $(id); if (!e) return;\n        var evt = (e.tagName === 'SELECT') ? 'change' : 'input';\n        e.addEventListener(evt, function () { e.classList.remove('udg-invalid'); hideError('udgInfoErr'); });\n      });\n\n      $('udgPayBack').addEventListener('click', function () { goToStep('2'); });\n      $('udgPayBackBtn').addEventListener('click', function () { goToStep('2'); });\n      $('udgGatewayStripe').addEventListener('click', function (e) { e.stopPropagation(); selectGateway('stripe'); });\n      $('udgGatewayPaypal').addEventListener('click', function () { selectGateway('paypal'); });\n      $('udgPayCard').addEventListener('click', function (e) { e.stopPropagation(); selectPay('card'); });\n      var bankEl = $('udgPayBank'); if (bankEl) bankEl.addEventListener('click', function (e) { e.stopPropagation(); selectPay('bank'); });\n      $('udgDonateBtn').addEventListener('click', handleDonate);\n\n      \/\/ ---------- integration surface for the Stripe layer (Task 7) ----------\n      \/\/ The wizard owns state + step navigation; the Stripe layer (udg-donation.js)\n      \/\/ reads these to mount the Payment Element, confirm the payment, and\n      \/\/ redirect the donor to the configured thank-you \/ donation-failed page.\n      window.UDG_NA = window.UDG_NA || {};\n      window.UDG_NA.getState = function () {\n        return {\n          fundId: S.fundId, fundLabel: fundLabel(),\n          frequencyId: S.frequencyId, frequency: S.freqValue, recurring: isRecurring(),\n          currency: S.currency, amount: S.amount, donationType: S.donationType,\n          payMethod: S.payMethod, country: val('udgCountry'),\n          \/\/ Only the countries whose zip we actually collect (US\/CA) hand one to\n          \/\/ Stripe: elsewhere the field is hidden and may still hold a stale value\n          \/\/ from before the donor switched country.\n          zip: (val('udgCountry') === 'US' || val('udgCountry') === 'CA') ? val('udgZip') : '',\n          transactionId: window.UDG_TXN_ID || '', humanPass: window.UDG_HUMAN_PASS || ''\n        };\n      };\n      window.UDG_NA.getPaymentPayload = buildPaymentPayload;\n\n      \/\/ ---------- init ----------\n      var fs = $('udgFundSelect'); if (fs) fs.value = S.fundId;\n      var cty = $('udgCountry'); if (cty) cty.value = DEFAULT_COUNTRY;\n      populateStates(DEFAULT_COUNTRY);\n      if (!currencyRenderedOnLoad) renderAmount();\n      goToStep('1');\n    }\n\n    \/\/ window.udg_config is printed by wp_localize_script() on the footer-group\n    \/\/ 'udg-donation-config' handle. A script optimiser (Cloudflare Rocket Loader,\n    \/\/ Avada's JS compiler) can defer that handle past this inline script, and\n    \/\/ booting first leaves the wizard with no funds and a single currency: the\n    \/\/ fund <select> gets value '' (selectedIndex -1, nothing selected), the\n    \/\/ amount grid renders empty, and setCurrency() rejects every code but the\n    \/\/ default. So wait for the config, bounded at ~5s, then boot regardless so a\n    \/\/ genuinely missing config still renders the form instead of nothing.\n    function configReady() { return !!(window.udg_config && window.udg_config.funds); }\n    function start() {\n      if (configReady()) { boot(); return; }\n      var tries = 0;\n      var timer = setInterval(function () {\n        if (configReady() || ++tries >= 100) { clearInterval(timer); boot(); }\n      }, 50);\n    }\n\n    if (document.readyState === 'loading') {\n      document.addEventListener('DOMContentLoaded', start);\n    } else {\n      start();\n    }\n  })();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-25fef28 elementor-align-center elementor-icon-list--layout-traditional elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"25fef28\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-lock\"><\/i>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">This is a secure SSL encrypted payment.<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Empower Deaf Children Through Education Over 1 million deaf children in Pakistan are still waiting for a chance to learn&#8230;.<\/p>\n","protected":false},"author":6,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2835","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/deafreachna.org\/donate\/wp-json\/wp\/v2\/pages\/2835","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/deafreachna.org\/donate\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/deafreachna.org\/donate\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/deafreachna.org\/donate\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/deafreachna.org\/donate\/wp-json\/wp\/v2\/comments?post=2835"}],"version-history":[{"count":5,"href":"https:\/\/deafreachna.org\/donate\/wp-json\/wp\/v2\/pages\/2835\/revisions"}],"predecessor-version":[{"id":2842,"href":"https:\/\/deafreachna.org\/donate\/wp-json\/wp\/v2\/pages\/2835\/revisions\/2842"}],"wp:attachment":[{"href":"https:\/\/deafreachna.org\/donate\/wp-json\/wp\/v2\/media?parent=2835"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}