{"id":759,"date":"2026-01-25T11:33:06","date_gmt":"2026-01-25T10:33:06","guid":{"rendered":"https:\/\/hispi.kundenexpose.de\/projects\/house-of-friends\/"},"modified":"2026-04-14T01:30:16","modified_gmt":"2026-04-13T23:30:16","slug":"house-of-friends","status":"publish","type":"page","link":"https:\/\/www.hispi.de\/en\/projects\/house-of-friends\/","title":{"rendered":"House of Friends"},"content":{"rendered":"<div class=\"et_pb_section_0 et_pb_section et_section_regular et_flex_section\">\n<div class=\"et_pb_row_0 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_0 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone et_flex_column_24_24_phoneWide et_flex_column_24_24_tabletWide et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\">\n<div class=\"et_pb_text_0 et_pb_text et_pb_bg_layout_light et_pb_module et_block_module preset--module--divi-text--default\"><div class=\"et_pb_text_inner\"><h1>Hispi - House of Friends<\/h1>\n<p><i>powered by LHD<\/i><\/p>\n<\/div><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_section_1 et_pb_section et_section_regular et_flex_section\">\n<div class=\"et_pb_row_1 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_1 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_3_5 et_flex_column_3_5_tablet et_flex_column_24_24_phone et_flex_column_24_24_phoneWide et_flex_column_3_5_tabletWide et_flex_column_3_5_widescreen et_flex_column_3_5_ultraWide\">\n<div class=\"et_pb_text_1 et_pb_text et_pb_bg_layout_light et_pb_module et_block_module preset--module--divi-text--default\"><div class=\"et_pb_text_inner\"><h2>Pilot project for living and working<\/h2>\n<p>With Hispi, House of Friends, a pilot project for immigrants was launched in September 2024, aiming to achieve a new level of support and integration.<\/p>\n<p>By creating a productive and safe living, working, and learning environment, diverse coexistence is to be fostered.<\/p>\n<p>The HISPI, House of Friends project values diversity and actively promotes integration.<\/p>\n<p>It is being developed in close cooperation between the City of D\u00fcsseldorf (LHD) as the client, \u201cHispi \u2013 Support for Linguistic Integration\u201d of Sophia Akademie gGmbH, and various cooperation partners from the gastronomy and hotel sectors.<\/p>\n<\/div><\/div>\n<\/div>\n\n<div class=\"et_pb_column_2 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_2_5 et_flex_column_2_5_tablet et_flex_column_24_24_phone et_flex_column_24_24_phoneWide et_flex_column_2_5_tabletWide et_flex_column_2_5_widescreen et_flex_column_2_5_ultraWide\">\n<div class=\"et_pb_image_0 et_pb_image et_pb_module et_block_module\"><span class=\"et_pb_image_wrap\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.hispi.de\/wp-content\/uploads\/20240717-projekte-hof-logo.png\" width=\"332\" height=\"332\" srcset=\"https:\/\/www.hispi.de\/wp-content\/uploads\/20240717-projekte-hof-logo.png 332w, https:\/\/www.hispi.de\/wp-content\/uploads\/20240717-projekte-hof-logo-300x300.png 300w, https:\/\/www.hispi.de\/wp-content\/uploads\/20240717-projekte-hof-logo-150x150.png 150w\" sizes=\"(max-width: 332px) 100vw, 332px\" class=\"wp-image-161\" title=\"20240717-projekte-hof-logo\" \/><\/span><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_section_2 et_pb_section et_section_regular et_flex_section\">\n<div class=\"et_pb_row_2 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_3 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_8_24 et_flex_column_8_24_tablet et_flex_column_24_24_phone et_flex_column_24_24_phoneWide et_flex_column_8_24_tabletWide et_flex_column_8_24_widescreen et_flex_column_8_24_ultraWide\">\n<div class=\"et_pb_image_1 et_pb_image et_pb_module et_block_module\"><span class=\"et_pb_image_wrap\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.hispi.de\/wp-content\/uploads\/Logo_Duesseldorf.svg_.png\" width=\"2560\" height=\"759\" srcset=\"https:\/\/www.hispi.de\/wp-content\/uploads\/Logo_Duesseldorf.svg_.png 2560w, https:\/\/www.hispi.de\/wp-content\/uploads\/Logo_Duesseldorf.svg_-1280x380.png 1280w, https:\/\/www.hispi.de\/wp-content\/uploads\/Logo_Duesseldorf.svg_-980x291.png 980w, https:\/\/www.hispi.de\/wp-content\/uploads\/Logo_Duesseldorf.svg_-480x142.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) and (max-width: 1280px) 1280px, (min-width: 1281px) 2560px, 100vw\" class=\"wp-image-348\" title=\"Logo_Duesseldorf.svg_\" \/><\/span><\/div>\n<\/div>\n\n<div class=\"et_pb_column_4 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_16_24 et_flex_column_16_24_tablet et_flex_column_24_24_phone et_flex_column_24_24_phoneWide et_flex_column_16_24_tabletWide et_flex_column_16_24_widescreen et_flex_column_16_24_ultraWide\">\n<div class=\"et_pb_text_2 et_pb_text et_pb_bg_layout_light et_pb_module et_block_module preset--module--divi-text--default\"><div class=\"et_pb_text_inner\"><h3>International pilot project for living and working<\/h3>\n<p>An institution of the City of D\u00fcsseldorf<\/p>\n<\/div><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_section_3 et_pb_section et_section_regular et_flex_section\">\n<div class=\"et_pb_row_3 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_5 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_12_24 et_flex_column_24_24_phone et_flex_column_24_24_phoneWide et_flex_column_12_24_tabletWide et_flex_column_12_24_widescreen et_flex_column_12_24_ultraWide\">\n<div class=\"et_pb_text_3 et_pb_text et_pb_bg_layout_light et_pb_module et_block_module preset--module--divi-text--default\"><div class=\"et_pb_text_inner\"><h2>What we offer:<\/h2>\n<p>For 1 year with the option to extend!<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_text_4 et_pb_text et_pb_bg_layout_light et_pb_module et_block_module preset--module--divi-text--default\"><div class=\"et_pb_text_inner\"><p>\ud83c\udfe0 <b>Living &amp; Learning<\/b><br \/>\nLiving together, supporting one another, and building a community.<br \/>\nLearning the German language: reading, writing, speaking\u2014for everyday professional life<\/p>\n<p>\ud83c\udf7d <b>Work<\/b><br \/>\nGaining practical experience in kitchen, service, housekeeping, and facility management.<\/p>\n<p>\ud83e\udd1d <b>Support<\/b><br \/>\nAssistance with residence status, recognition of documents, and future prospects<\/p>\n<\/div><\/div>\n<\/div>\n\n<div class=\"et_pb_column_6 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_12_24 et_flex_column_24_24_phone et_flex_column_24_24_phoneWide et_flex_column_12_24_tabletWide et_flex_column_12_24_widescreen et_flex_column_12_24_ultraWide\">\n<div class=\"et_pb_image_2 et_pb_image et_pb_module et_block_module\"><span class=\"et_pb_image_wrap\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.hispi.de\/wp-content\/uploads\/Hispi_HOF_Gruppe-1.jpg\" width=\"1500\" height=\"1000\" srcset=\"https:\/\/www.hispi.de\/wp-content\/uploads\/Hispi_HOF_Gruppe-1.jpg 1500w, https:\/\/www.hispi.de\/wp-content\/uploads\/Hispi_HOF_Gruppe-1-1280x853.jpg 1280w, https:\/\/www.hispi.de\/wp-content\/uploads\/Hispi_HOF_Gruppe-1-980x653.jpg 980w, https:\/\/www.hispi.de\/wp-content\/uploads\/Hispi_HOF_Gruppe-1-480x320.jpg 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) and (max-width: 1280px) 1280px, (min-width: 1281px) 1500px, 100vw\" class=\"wp-image-349\" title=\"Hispi_HOF_Gruppe-1\" \/><\/span><\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_row_4 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_7 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_12_24 et_flex_column_24_24_phone et_flex_column_24_24_phoneWide et_flex_column_12_24_tabletWide et_flex_column_12_24_widescreen et_flex_column_12_24_ultraWide\">\n<div class=\"et_pb_text_5 et_pb_text et_pb_bg_layout_light et_pb_module et_block_module preset--module--divi-text--default\"><div class=\"et_pb_text_inner\"><h3>Experience community<\/h3>\n<p>\ud83d\udc68\u200d\ud83c\udf73 Cooking together &amp; talking with each other<br \/>\n\ud83d\udca1 Sharing experiences<br \/>\n\ud83d\udd0d Finding solutions<br \/>\n\u2696 Sharing responsibility<\/p>\n<\/div><\/div>\n<\/div>\n\n<div class=\"et_pb_column_8 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_12_24 et_flex_column_24_24_phone et_flex_column_24_24_phoneWide et_flex_column_12_24_tabletWide et_flex_column_12_24_widescreen et_flex_column_12_24_ultraWide\">\n<div class=\"et_pb_text_6 et_pb_text et_pb_bg_layout_light et_pb_module et_block_module preset--module--divi-text--default\"><div class=\"et_pb_text_inner\"><h3>Your goals \u2013 Our support<\/h3>\n<p>What would you like to achieve?<\/p>\n<ul>\n<li>Become independent<\/li>\n<li>Find a secure job<\/li>\n<li>Earn money &amp; move into your own place<\/li>\n<li>Make new friends<\/li>\n<\/ul>\n<\/div><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_section_4 et_pb_section et_section_regular et_flex_section\">\n<div class=\"et_pb_row_5 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_9 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_8_24 et_flex_column_24_24_phone et_flex_column_24_24_phoneWide et_flex_column_8_24_tabletWide et_flex_column_8_24_widescreen et_flex_column_8_24_ultraWide\">\n<div class=\"et_pb_divider_0 et_pb_divider et_pb_space et_pb_divider_position_top et_pb_module\"><div class=\"et_pb_divider_internal\"><\/div><\/div>\n<\/div>\n\n<div class=\"et_pb_column_10 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_16_24 et_flex_column_24_24_phone et_flex_column_24_24_phoneWide et_flex_column_16_24_tabletWide et_flex_column_16_24_widescreen et_flex_column_16_24_ultraWide\">\n<div class=\"et_pb_text_7 et_pb_text et_pb_bg_layout_light et_pb_module et_block_module preset--module--divi-text--default\"><div class=\"et_pb_text_inner\"><h2>You are a good fit for the project<\/h2>\n<p>if you meet the following requirements:<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_divider_1 et_pb_divider et_pb_space et_pb_divider_position_top et_pb_module\"><div class=\"et_pb_divider_internal\"><\/div><\/div>\n\n<ul class=\"et_pb_icon_list_0 et_pb_icon_list et_pb_module et_flex_module\">\n<li class=\"et_pb_icon_list_item_0 et_pb_icon_list_item et_pb_module et_flex_module\"><span class=\"et-pb-icon\">N<\/span><div class=\"et_pb_icon_list_text\">special protection needs<\/div><\/li>\n\n<li class=\"et_pb_icon_list_item_1 et_pb_icon_list_item et_pb_module et_flex_module\"><span class=\"et-pb-icon\">N<\/span><div class=\"et_pb_icon_list_text\">Minimum age 18 years<\/div><\/li>\n\n<li class=\"et_pb_icon_list_item_2 et_pb_icon_list_item et_pb_module et_flex_module\"><span class=\"et-pb-icon\">N<\/span><div class=\"et_pb_icon_list_text\"> Ability to work and be placed in employment<\/div><\/li>\n\n<li class=\"et_pb_icon_list_item_3 et_pb_icon_list_item et_pb_module et_flex_module\"><span class=\"et-pb-icon\">N<\/span><div class=\"et_pb_icon_list_text\"> basic knowledge of the German language and the willingness to further develop it<\/div><\/li>\n\n<li class=\"et_pb_icon_list_item_4 et_pb_icon_list_item et_pb_module et_flex_module\"><span class=\"et-pb-icon\">N<\/span><div class=\"et_pb_icon_list_text\"> Interest in living in a private room or, if necessary, sharing with one other person<\/div><\/li>\n\n<li class=\"et_pb_icon_list_item_5 et_pb_icon_list_item et_pb_module et_flex_module\"><span class=\"et-pb-icon\">N<\/span><div class=\"et_pb_icon_list_text\"> Ability to work in a team in order to organize communal living, as well as the maintenance and upkeep of the accommodation with other residents<\/div><\/li>\n\n<li class=\"et_pb_icon_list_item_6 et_pb_icon_list_item et_pb_module et_flex_module\"><span class=\"et-pb-icon\">N<\/span><div class=\"et_pb_icon_list_text\">Willingness to be placed in employment, preferably in the gastronomy and hotel sector (service, housekeeping, kitchen, facility management, etc.)<\/div><\/li>\n\n<li class=\"et_pb_icon_list_item_7 et_pb_icon_list_item et_pb_module et_flex_module\"><span class=\"et-pb-icon\">N<\/span><div class=\"et_pb_icon_list_text\"> the willingness to develop a target agreement for approximately one year and to pursue these goals<\/div><\/li>\n\n<li class=\"et_pb_icon_list_item_8 et_pb_icon_list_item et_pb_module et_flex_module\"><span class=\"et-pb-icon\">N<\/span><div class=\"et_pb_icon_list_text\"> consent to regular feedback sessions<\/div><\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_section_5 et_pb_section et_section_regular et_flex_section\">\n<div class=\"et_pb_row_6 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_11 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone et_flex_column_24_24_phoneWide et_flex_column_24_24_tabletWide et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\">\n<div class=\"et_pb_text_8 et_pb_text et_pb_bg_layout_light et_pb_module et_block_module preset--module--divi-text--default\"><div class=\"et_pb_text_inner\"><h2>If you would like to get to know us, please send us your application:<\/h2>\n<\/div><\/div>\n\n<div class=\"de_form_builder_form_0 de_form_builder_form de_fb_form et_pb_contact de_fb_mid_de-form-builderform-0 has-hide-until-loaded et_pb_module et_flex_module\"><form method=\"POST\" enctype=\"multipart\/form-data\" action=\"\" id=\"fb_form_759-1\" class=\"et_pb_contact fb_form multistep  hide_until_loaded animation_fadeIn button_align_justified \"  data-ajax-btn=\"Submitting...\" data-ajax-hide-sub=\"off\" data-reset-form-on-submit=\"false\" data-scrollto-form-after-submit=\"on\" data-scrollto-form-offset=\"100\" data-form-key=\"759-1\" data-form-id=\"759-1\" data-form-type=\"contact\" data-unique-id=\"de-form-builder\/form-0\" data-page-id=\"759\" style=\"display: none;\">            <div class=\"df_progressbar_container\">\n                <ul class=\"df_progressbar df_progressbar_step\" data-style=\"step\">\n                    <li class=\"active\">\n                                                    <div class=\"df_progressbar_number\">1<\/div>\n                                                                                                                            <div class=\"df_step_title_text\">\n                                Pers\u00f6nliches                            <\/div>\n                                            <\/li>\n                                            <li>\n                                                                                        <div class=\"df_progressbar_number\">2<\/div>\n                                                                                                                    <div class=\"df_step_title_text\">\n                                    Aufenthalt                                <\/div>\n                                                    <\/li>\n                                            <li>\n                                                                                        <div class=\"df_progressbar_number\">3<\/div>\n                                                                                                                    <div class=\"df_step_title_text\">\n                                    Schule\/Ausbildung\/Beruf                                <\/div>\n                                                    <\/li>\n                                            <li>\n                                                                                        <div class=\"df_progressbar_number\">4<\/div>\n                                                                                                                    <div class=\"df_step_title_text\">\n                                    Sprachkenntnisse                                <\/div>\n                                                    <\/li>\n                                            <li>\n                                                                                        <div class=\"df_progressbar_number\">5<\/div>\n                                                                                                                    <div class=\"df_step_title_text\">\n                                    Weiteres                                <\/div>\n                                                    <\/li>\n                                    <\/ul>\n            <\/div>\n            <div class=\"divi-form-wrapper\"><div class=\"df_form_step df_step_1 active et_flex_row\" style=\"flex-wrap:wrap;\" data-next_text=\"Weiter\"><div class=\"dfb-form-fields et_flex_row\" style=\"flex-wrap:wrap;\"><div class=\"de_form_builder_form_field_1 de_form_builder_form_field de_fb_form_field clearfix et_pb_column_1_3 et_flex_column_8_24 et_pb_column grid_et_pb_column_1_3_12 et_flex_column_24_24_tablet et_flex_column_24_24_phone file_align_left et_pb_module et_flex_column_24_24 et_flex_column_24_24_phoneWide et_flex_column_24_24_tabletWide et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\"><div class=\"et_pb_module_inner\">        <div id=\"de_fb_vorname_wrapper\" class=\"field_wrapper search_filter_cont\" data-count=\"40\" role=\"group\" aria-labelledby=\"de_fb_vorname_label\" >\n        <label id=\"de_fb_vorname_label\" for=\"de_fb_vorname\" class=\"field_label label_position_top\">First Name<span class=\"de_fb_required\">*<\/span><\/label>                            <p class=\"et_pb_contact_field\" data-type=\"input\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"First Name\"\/><input type=\"hidden\" name=\"field_name[]\" value=\"de_fb_vorname\"\/><input type=\"hidden\" name=\"field_id[]\" value=\"de_fb_vorname\"\/>                    \t\t\n\n\t\t<input type=\"text\"  name=\"de_fb_vorname\" id=\"de_fb_vorname\" data-calc_default=\"0\" placeholder=\"First Name\"   class=\"divi-form-builder-field input-field \" required value=\"\"  data-msg-required=\"This field is required.\" data-required_position=\"bottom\" autocomplete=\"on\" aria-required=\"true\" \/>\n\t\t                <\/p>\n                                <\/div>\n        <\/div><\/div>\n\n<div class=\"de_form_builder_form_field_2 de_form_builder_form_field de_fb_form_field clearfix et_pb_column_1_3 et_flex_column_8_24 et_pb_column grid_et_pb_column_1_3_12 et_flex_column_24_24_tablet et_flex_column_24_24_phone file_align_left et_pb_module et_flex_column_24_24 et_flex_column_24_24_phoneWide et_flex_column_24_24_tabletWide et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\"><div class=\"et_pb_module_inner\">        <div id=\"de_fb_nachname_wrapper\" class=\"field_wrapper search_filter_cont\" data-count=\"40\" role=\"group\" aria-labelledby=\"de_fb_nachname_label\" >\n        <label id=\"de_fb_nachname_label\" for=\"de_fb_nachname\" class=\"field_label label_position_top\">Last Name<span class=\"de_fb_required\">*<\/span><\/label>                            <p class=\"et_pb_contact_field\" data-type=\"input\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"Last Name\"\/><input type=\"hidden\" name=\"field_name[]\" value=\"de_fb_nachname\"\/><input type=\"hidden\" name=\"field_id[]\" value=\"de_fb_nachname\"\/>                    \t\t\n\n\t\t<input type=\"text\"  name=\"de_fb_nachname\" id=\"de_fb_nachname\" data-calc_default=\"0\" placeholder=\"Last Name\"   class=\"divi-form-builder-field input-field \" required value=\"\"  data-msg-required=\"This field is required.\" data-required_position=\"bottom\" autocomplete=\"on\" aria-required=\"true\" \/>\n\t\t                <\/p>\n                                <\/div>\n        <\/div><\/div>\n\n<div class=\"de_form_builder_form_field_3 de_form_builder_form_field de_fb_form_field clearfix et_pb_column_1_3 et_flex_column_8_24 et_pb_column grid_et_pb_column_1_3_12 et_flex_column_24_24_tablet et_flex_column_24_24_phone file_align_left et_pb_module et_flex_column_24_24 et_flex_column_24_24_phoneWide et_flex_column_24_24_tabletWide et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\"><div class=\"et_pb_module_inner\">        <div id=\"de_fb_geschlecht_wrapper\" class=\"field_wrapper search_filter_cont\" data-count=\"40\" role=\"group\" aria-labelledby=\"de_fb_geschlecht_label\" >\n        <label id=\"de_fb_geschlecht_label\" for=\"de_fb_geschlecht\" class=\"field_label label_position_top\">Gender<span class=\"de_fb_required\">*<\/span><\/label>                            <p class=\"et_pb_contact_field\" data-type=\"select\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"Gender\"\/><input type=\"hidden\" name=\"field_name[]\" value=\"de_fb_geschlecht\"\/><input type=\"hidden\" name=\"field_id[]\" value=\"de_fb_geschlecht\"\/>                    <select class=\"divi-form-builder-field select-field et_pb_contact_select \" required  name=\"de_fb_geschlecht\" data-field_type=\"select\" data-msg-required=\"This field is required.\" id=\"de_fb_geschlecht\" aria-required=\"true\">\n\t\t<option value=\"\" disabled selected>-- Choose Option --<\/option>\n\t\t<option value=\"Male\" >Male<\/option><option value=\"Female\" >Female<\/option><option value=\"Divers\" >Divers<\/option>\n\t\t<\/select>                <\/p>\n                                <\/div>\n        <\/div><\/div>\n\n<div class=\"de_form_builder_form_field_4 de_form_builder_form_field de_fb_form_field clearfix et_pb_column_1_3 et_flex_column_8_24 et_pb_column grid_et_pb_column_1_3_12 et_flex_column_24_24_tablet et_flex_column_24_24_phone file_align_left et_pb_module et_flex_column_24_24 et_flex_column_24_24_phoneWide et_flex_column_24_24_tabletWide et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\"><div class=\"et_pb_module_inner\">        <div id=\"de_fb_adresse_wrapper\" class=\"field_wrapper search_filter_cont\" data-count=\"40\" role=\"group\" aria-labelledby=\"de_fb_adresse_label\" >\n        <label id=\"de_fb_adresse_label\" for=\"de_fb_adresse\" class=\"field_label label_position_top\">Street &amp; No.<span class=\"de_fb_required\">*<\/span><\/label>                            <p class=\"et_pb_contact_field\" data-type=\"input\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"Street &amp; No.\"\/><input type=\"hidden\" name=\"field_name[]\" value=\"de_fb_adresse\"\/><input type=\"hidden\" name=\"field_id[]\" value=\"de_fb_adresse\"\/>                    \t\t\n\n\t\t<input type=\"text\"  name=\"de_fb_adresse\" id=\"de_fb_adresse\" data-calc_default=\"0\" placeholder=\"\"   class=\"divi-form-builder-field input-field \" required value=\"\"  data-msg-required=\"This field is required.\" data-required_position=\"bottom\" autocomplete=\"on\" aria-required=\"true\" \/>\n\t\t                <\/p>\n                                <\/div>\n        <\/div><\/div>\n\n<div class=\"de_form_builder_form_field_5 de_form_builder_form_field de_fb_form_field clearfix et_pb_column_1_3 et_flex_column_8_24 et_pb_column grid_et_pb_column_1_3_12 et_flex_column_24_24_tablet et_flex_column_24_24_phone file_align_left et_pb_module et_flex_column_24_24 et_flex_column_24_24_phoneWide et_flex_column_24_24_tabletWide et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\"><div class=\"et_pb_module_inner\">        <div id=\"de_fb_plz_wrapper\" class=\"field_wrapper search_filter_cont\" data-count=\"40\" role=\"group\" aria-labelledby=\"de_fb_plz_label\" >\n        <label id=\"de_fb_plz_label\" for=\"de_fb_plz\" class=\"field_label label_position_top\">ZIP code<span class=\"de_fb_required\">*<\/span><\/label>                            <p class=\"et_pb_contact_field\" data-type=\"input\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"ZIP code\"\/><input type=\"hidden\" name=\"field_name[]\" value=\"de_fb_plz\"\/><input type=\"hidden\" name=\"field_id[]\" value=\"de_fb_plz\"\/>                    \t\t\n\n\t\t<input type=\"text\"  name=\"de_fb_plz\" id=\"de_fb_plz\" data-calc_default=\"0\" placeholder=\"\"   class=\"divi-form-builder-field input-field \" required value=\"\"  data-msg-required=\"This field is required.\" data-required_position=\"bottom\" autocomplete=\"on\" aria-required=\"true\" \/>\n\t\t                <\/p>\n                                <\/div>\n        <\/div><\/div>\n\n<div class=\"de_form_builder_form_field_6 de_form_builder_form_field de_fb_form_field clearfix et_pb_column_1_3 et_flex_column_8_24 et_pb_column grid_et_pb_column_1_3_12 et_flex_column_24_24_tablet et_flex_column_24_24_phone file_align_left et_pb_module et_flex_column_24_24 et_flex_column_24_24_phoneWide et_flex_column_24_24_tabletWide et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\"><div class=\"et_pb_module_inner\">        <div id=\"de_fb_stadt_wrapper\" class=\"field_wrapper search_filter_cont\" data-count=\"40\" role=\"group\" aria-labelledby=\"de_fb_stadt_label\" >\n        <label id=\"de_fb_stadt_label\" for=\"de_fb_stadt\" class=\"field_label label_position_top\">Town<span class=\"de_fb_required\">*<\/span><\/label>                            <p class=\"et_pb_contact_field\" data-type=\"input\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"Town\"\/><input type=\"hidden\" name=\"field_name[]\" value=\"de_fb_stadt\"\/><input type=\"hidden\" name=\"field_id[]\" value=\"de_fb_stadt\"\/>                    \t\t\n\n\t\t<input type=\"text\"  name=\"de_fb_stadt\" id=\"de_fb_stadt\" data-calc_default=\"0\" placeholder=\"\"   class=\"divi-form-builder-field input-field \" required value=\"\"  data-msg-required=\"This field is required.\" data-required_position=\"bottom\" autocomplete=\"on\" aria-required=\"true\" \/>\n\t\t                <\/p>\n                                <\/div>\n        <\/div><\/div>\n\n<div class=\"de_form_builder_form_field_7 de_form_builder_form_field de_fb_form_field clearfix et_pb_column_1_3 et_flex_column_8_24 et_pb_column grid_et_pb_column_1_3_12 et_flex_column_24_24_tablet et_flex_column_24_24_phone file_align_left et_pb_module et_flex_column_24_24 et_flex_column_24_24_phoneWide et_flex_column_24_24_tabletWide et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\"><div class=\"et_pb_module_inner\">        <div id=\"de_fb_stadt_2_wrapper\" class=\"field_wrapper search_filter_cont\" data-count=\"40\" role=\"group\" aria-labelledby=\"de_fb_stadt_2_label\" >\n        <label id=\"de_fb_stadt_2_label\" for=\"de_fb_stadt_2\" class=\"field_label label_position_top\">Birthday<span class=\"de_fb_required\">*<\/span><\/label>                            <p class=\"et_pb_contact_field\" data-type=\"datepicker\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"Birthday\"\/><input type=\"hidden\" name=\"field_name[]\" value=\"de_fb_stadt_2\"\/><input type=\"hidden\" name=\"field_id[]\" value=\"de_fb_stadt_2\"\/>                    \t\n\t<span class=\"datepicker-wrapper\">\n\t\t<input type=\"text\" class=\"divi-form-builder-field datepicker-field\" required name=\"de_fb_stadt_2\" id=\"de_fb_stadt_2\" placeholder=\"\" value=\"\"  data-msg-required=\"This field is required.\" data-required_position=\"bottom\" autocomplete=\"on\" acf-date=\"\"\/>\n\t<\/span>\n\n\t<script>\n\t\tjQuery(document).ready(function($){\n\t\t\tvar datepicker_base = {};\n\t\t\t\t\t\tif ($.datepicker.regional && $.datepicker.regional['de']) {\n\t\t\t\tdatepicker_base = $.datepicker.regional['de'];\n\t\t\t}\n\t\t\t\t\t\t\n\t\tvar datepicker_option = $.extend(\n\t\t\t{},\n\t\t\tdatepicker_base,\n\t\t\t{\n\t\t\t\t\tshowOn: \"both\",\n\t\t\t\t\tbuttonImage: 'https:\/\/www.hispi.de\/wp-content\/plugins\/divi-form-builder\/images\/calendar.png',\n\t\t\t\t\tbuttonImageOnly: true,\n\t\t\t\t\tbuttonText: \"Select date\",\n\t\t\t\t\tchangeYear: true,\n\t\t\t\t\tyearRange: '1950:2050',\n\t\t\t\t\tchangeMonth: true,\n\t\t\t\t\tdateFormat: \"dd-mm-yy\",\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\tbeforeShow: function(input, inst) {\n\t\t\t\t\t\t$('#ui-datepicker-div').addClass(\"date_picker_759-1\");\n\t\t\t\t\t},\n\t\t\t\t\tonClose: function(dateText, inst ) {\n\t\t\t\t\t\t$('#ui-datepicker-div').removeClass(\"date_picker_759-1\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tdocument.getElementById(\"de_fb_stadt_2\").dispatchEvent(new Event('change'));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t$('#de_fb_stadt_2').datepicker( datepicker_option );\n\t\t\t\t\t\t\t\t\n\t\t\t});\n\t<\/script>\n\t                <\/p>\n                                <\/div>\n        <\/div><\/div>\n\n<div class=\"de_form_builder_form_field_8 de_form_builder_form_field de_fb_form_field clearfix et_pb_column_1_3 et_flex_column_8_24 et_pb_column grid_et_pb_column_1_3_12 et_flex_column_24_24_tablet et_flex_column_24_24_phone file_align_left et_pb_module et_flex_column_24_24 et_flex_column_24_24_phoneWide et_flex_column_24_24_tabletWide et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\"><div class=\"et_pb_module_inner\">        <div id=\"de_fb_geburtsort_wrapper\" class=\"field_wrapper search_filter_cont\" data-count=\"40\" role=\"group\" aria-labelledby=\"de_fb_geburtsort_label\" >\n        <label id=\"de_fb_geburtsort_label\" for=\"de_fb_geburtsort\" class=\"field_label label_position_top\">Place of birth<span class=\"de_fb_required\">*<\/span><\/label>                            <p class=\"et_pb_contact_field\" data-type=\"input\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"Place of birth\"\/><input type=\"hidden\" name=\"field_name[]\" value=\"de_fb_geburtsort\"\/><input type=\"hidden\" name=\"field_id[]\" value=\"de_fb_geburtsort\"\/>                    \t\t\n\n\t\t<input type=\"text\"  name=\"de_fb_geburtsort\" id=\"de_fb_geburtsort\" data-calc_default=\"0\" placeholder=\"\"   class=\"divi-form-builder-field input-field \" required value=\"\"  data-msg-required=\"This field is required.\" data-required_position=\"bottom\" autocomplete=\"on\" aria-required=\"true\" \/>\n\t\t                <\/p>\n                                <\/div>\n        <\/div><\/div>\n\n<div class=\"de_form_builder_form_field_9 de_form_builder_form_field de_fb_form_field clearfix et_pb_column_1_3 et_flex_column_8_24 et_pb_column grid_et_pb_column_1_3_12 et_flex_column_24_24_tablet et_flex_column_24_24_phone file_align_left et_pb_module et_flex_column_24_24 et_flex_column_24_24_phoneWide et_flex_column_24_24_tabletWide et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\"><div class=\"et_pb_module_inner\">        <div id=\"de_fb_geburtsland_wrapper\" class=\"field_wrapper search_filter_cont\" data-count=\"40\" role=\"group\" aria-labelledby=\"de_fb_geburtsland_label\" >\n        <label id=\"de_fb_geburtsland_label\" for=\"de_fb_geburtsland\" class=\"field_label label_position_top\">Country of birth<span class=\"de_fb_required\">*<\/span><\/label>                            <p class=\"et_pb_contact_field\" data-type=\"input\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"Country of birth\"\/><input type=\"hidden\" name=\"field_name[]\" value=\"de_fb_geburtsland\"\/><input type=\"hidden\" name=\"field_id[]\" value=\"de_fb_geburtsland\"\/>                    \t\t\n\n\t\t<input type=\"text\"  name=\"de_fb_geburtsland\" id=\"de_fb_geburtsland\" data-calc_default=\"0\" placeholder=\"\"   class=\"divi-form-builder-field input-field \" required value=\"\"  data-msg-required=\"This field is required.\" data-required_position=\"bottom\" autocomplete=\"on\" aria-required=\"true\" \/>\n\t\t                <\/p>\n                                <\/div>\n        <\/div><\/div>\n\n<div class=\"de_form_builder_form_field_10 de_form_builder_form_field de_fb_form_field clearfix et_pb_column_1_2 et_flex_column_12_24 et_pb_column grid_et_pb_column_1_2_12 et_flex_column_24_24_tablet et_flex_column_24_24_phone file_align_left et_pb_module et_flex_column_24_24 et_flex_column_24_24_phoneWide et_flex_column_24_24_tabletWide et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\"><div class=\"et_pb_module_inner\">        <div id=\"de_fb_emailadresse_wrapper\" class=\"field_wrapper search_filter_cont\" data-count=\"50\" role=\"group\" aria-labelledby=\"de_fb_emailadresse_label\" >\n        <label id=\"de_fb_emailadresse_label\" for=\"de_fb_emailadresse\" class=\"field_label label_position_top\">Email address<span class=\"de_fb_required\">*<\/span><\/label>                            <p class=\"et_pb_contact_field\" data-type=\"email\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"Email address\"\/><input type=\"hidden\" name=\"field_name[]\" value=\"de_fb_emailadresse\"\/><input type=\"hidden\" name=\"field_id[]\" value=\"de_fb_emailadresse\"\/>                    \t\t\n\n\t\t<input type=\"email\"  name=\"de_fb_emailadresse\" id=\"de_fb_emailadresse\"  placeholder=\"\"   class=\"divi-form-builder-field input-field \" required value=\"\"  data-msg-required=\"This field is required.\" data-required_position=\"bottom\" data-msg-email=\"Please input correct email address.\" autocomplete=\"on\" aria-required=\"true\" \/>\n\t\t                <\/p>\n                                <\/div>\n        <\/div><\/div>\n\n<div class=\"de_form_builder_form_field_11 de_form_builder_form_field de_fb_form_field clearfix et_pb_column_1_2 et_flex_column_12_24 et_pb_column grid_et_pb_column_1_2_12 et_flex_column_24_24_tablet et_flex_column_24_24_phone file_align_left et_pb_module et_flex_column_24_24 et_flex_column_24_24_phoneWide et_flex_column_24_24_tabletWide et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\"><div class=\"et_pb_module_inner\">        <div id=\"de_fb_telefon_wrapper\" class=\"field_wrapper search_filter_cont\" data-count=\"50\" role=\"group\" aria-labelledby=\"de_fb_telefon_label\" >\n        <label id=\"de_fb_telefon_label\" for=\"de_fb_telefon\" class=\"field_label label_position_top\">Telephone\/mobile number<span class=\"de_fb_required\">*<\/span><\/label>                            <p class=\"et_pb_contact_field\" data-type=\"input\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"Telephone\/mobile number\"\/><input type=\"hidden\" name=\"field_name[]\" value=\"de_fb_telefon\"\/><input type=\"hidden\" name=\"field_id[]\" value=\"de_fb_telefon\"\/>                    \t\t\n\n\t\t<input type=\"text\"  name=\"de_fb_telefon\" id=\"de_fb_telefon\" data-calc_default=\"0\" placeholder=\"\"   class=\"divi-form-builder-field input-field \" required value=\"\"  data-msg-required=\"This field is required.\" data-required_position=\"bottom\" autocomplete=\"on\" aria-required=\"true\" \/>\n\t\t                <\/p>\n                                <\/div>\n        <\/div><\/div>\n\n<div class=\"de_form_builder_form_field_12 de_form_builder_form_field de_fb_form_field clearfix et_pb_column_1_3 et_flex_column_8_24 et_pb_column grid_et_pb_column_1_3_12 et_flex_column_24_24_tablet et_flex_column_24_24_phone file_align_left et_pb_module et_flex_column_24_24 et_flex_column_24_24_phoneWide et_flex_column_24_24_tabletWide et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\"><div class=\"et_pb_module_inner\">        <div id=\"de_fb_nationalit\u00e4t_wrapper\" class=\"field_wrapper search_filter_cont\" data-count=\"40\" role=\"group\" aria-labelledby=\"de_fb_nationalit\u00e4t_label\" >\n        <label id=\"de_fb_nationalit\u00e4t_label\" for=\"de_fb_nationalit\u00e4t\" class=\"field_label label_position_top\">Nationality<span class=\"de_fb_required\">*<\/span><\/label>                            <p class=\"et_pb_contact_field\" data-type=\"input\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"Nationality\"\/><input type=\"hidden\" name=\"field_name[]\" value=\"de_fb_nationalit\u00e4t\"\/><input type=\"hidden\" name=\"field_id[]\" value=\"de_fb_nationalit\u00e4t\"\/>                    \t\t\n\n\t\t<input type=\"text\"  name=\"de_fb_nationalit\u00e4t\" id=\"de_fb_nationalit\u00e4t\" data-calc_default=\"0\" placeholder=\"\"   class=\"divi-form-builder-field input-field \" required value=\"\"  data-msg-required=\"This field is required.\" data-required_position=\"bottom\" autocomplete=\"on\" aria-required=\"true\" \/>\n\t\t                <\/p>\n                                <\/div>\n        <\/div><\/div>\n\n<div class=\"de_form_builder_form_field_13 de_form_builder_form_field de_fb_form_field clearfix et_pb_column_1_3 et_flex_column_8_24 et_pb_column grid_et_pb_column_1_3_12 et_flex_column_24_24_tablet et_flex_column_24_24_phone file_align_left et_pb_module et_flex_column_24_24 et_flex_column_24_24_phoneWide et_flex_column_24_24_tabletWide et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\"><div class=\"et_pb_module_inner\">        <div id=\"de_fb_wohnform_wrapper\" class=\"field_wrapper search_filter_cont\" data-count=\"40\" role=\"group\" aria-labelledby=\"de_fb_wohnform_label\" >\n        <label id=\"de_fb_wohnform_label\" for=\"de_fb_wohnform\" class=\"field_label label_position_top\">Type of living<span class=\"de_fb_required\">*<\/span><\/label>                            <p class=\"et_pb_contact_field\" data-type=\"select\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"Type of living\"\/><input type=\"hidden\" name=\"field_name[]\" value=\"de_fb_wohnform\"\/><input type=\"hidden\" name=\"field_id[]\" value=\"de_fb_wohnform\"\/>                    <select class=\"divi-form-builder-field select-field et_pb_contact_select \" required  name=\"de_fb_wohnform\" data-field_type=\"select\" data-msg-required=\"This field is required.\" id=\"de_fb_wohnform\" aria-required=\"true\">\n\t\t<option value=\"\" disabled selected>-- Choose Option --<\/option>\n\t\t<option value=\"Asylum seeker home\" >Asylum seeker home<\/option><option value=\"Own apartment\" >Own apartment<\/option><option value=\"Youth welfare\" >Youth welfare<\/option><option value=\"Homeless\" >Homeless<\/option>\n\t\t<\/select>                <\/p>\n                                <\/div>\n        <\/div><\/div>\n\n<div class=\"de_form_builder_form_field_14 de_form_builder_form_field de_fb_form_field clearfix et_pb_column_1_3 et_flex_column_8_24 et_pb_column grid_et_pb_column_1_3_12 et_flex_column_24_24_tablet et_flex_column_24_24_phone file_align_left et_pb_module et_flex_column_24_24 et_flex_column_24_24_phoneWide et_flex_column_24_24_tabletWide et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\"><div class=\"et_pb_module_inner\">        <div id=\"de_fb_familienstand_wrapper\" class=\"field_wrapper search_filter_cont\" data-count=\"40\" role=\"group\" aria-labelledby=\"de_fb_familienstand_label\" >\n        <label id=\"de_fb_familienstand_label\" for=\"de_fb_familienstand\" class=\"field_label label_position_top\">Marital status<span class=\"de_fb_required\">*<\/span><\/label>                            <p class=\"et_pb_contact_field\" data-type=\"select\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"Marital status\"\/><input type=\"hidden\" name=\"field_name[]\" value=\"de_fb_familienstand\"\/><input type=\"hidden\" name=\"field_id[]\" value=\"de_fb_familienstand\"\/>                    <select class=\"divi-form-builder-field select-field et_pb_contact_select \" required  name=\"de_fb_familienstand\" data-field_type=\"select\" data-msg-required=\"This field is required.\" id=\"de_fb_familienstand\" aria-required=\"true\">\n\t\t<option value=\"\" disabled selected>-- Choose Option --<\/option>\n\t\t<option value=\"single\" >single<\/option><option value=\"married\" >married<\/option><option value=\"divorced\" >divorced<\/option><option value=\"living separately\" >living separately<\/option>\n\t\t<\/select>                <\/p>\n                                <\/div>\n        <\/div><\/div><\/div><div class=\"step_button_wrapper et_flex_column_24_24\"><button type=\"button\" class=\"et_pb_button df_step_button df_step_next\" data-step=\"2\">Weiter<\/button><\/div><\/div><div class=\"df_form_step df_step_2 et_flex_row\" style=\"flex-wrap:wrap;\" data-prev_text=\"Zur\u00fcck\" data-next_text=\"Weiter\"><div class=\"dfb-form-fields et_flex_row\" style=\"flex-wrap:wrap;\"><div class=\"de_form_builder_form_field_16 de_form_builder_form_field de_fb_form_field clearfix et_pb_column_4_4 et_flex_column_24_24 et_pb_column grid_et_pb_column_4_4_12 et_flex_column_24_24_tablet et_flex_column_24_24_phone file_align_left et_pb_module et_flex_column_24_24_phoneWide et_flex_column_24_24_tabletWide et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\"><div class=\"et_pb_module_inner\">        <div id=\"de_fb_einreisedatum_wrapper\" class=\"field_wrapper search_filter_cont\" data-count=\"100\" role=\"group\" aria-labelledby=\"de_fb_einreisedatum_label\" >\n                    <span class=\"field_row\">\n                <label id=\"de_fb_einreisedatum_label\" for=\"de_fb_einreisedatum\" class=\"field_label label_position_left et_pb_column_1_4 et_flex_column_6_24\">Entry date<span class=\"de_fb_required\">*<\/span><\/label>                <span class=\"et_pb_column et_pb_column_3_4 et_flex_column_18_24\">\n                                                                <p class=\"et_pb_contact_field\" data-type=\"input\">\n                            <input type=\"hidden\" name=\"field_title[]\" value=\"Entry date\"\/><input type=\"hidden\" name=\"field_name[]\" value=\"de_fb_einreisedatum\"\/><input type=\"hidden\" name=\"field_id[]\" value=\"de_fb_einreisedatum\"\/>                            \t\t\n\n\t\t<input type=\"text\"  name=\"de_fb_einreisedatum\" id=\"de_fb_einreisedatum\" data-calc_default=\"0\" placeholder=\"Month\/Year\"   class=\"divi-form-builder-field input-field \" required value=\"\"  data-msg-required=\"This field must be filled in.\" data-required_position=\"bottom\" autocomplete=\"off\" aria-required=\"true\" \/>\n\t\t                        <\/p>\n                                                        <\/span>\n                            <\/span>\n                    <\/div>\n        <\/div><\/div>\n\n<div class=\"de_form_builder_form_field_17 de_form_builder_form_field de_fb_form_field clearfix et_pb_column_4_4 et_flex_column_24_24 et_pb_column grid_et_pb_column_4_4_12 et_flex_column_24_24_tablet et_flex_column_24_24_phone file_align_left et_pb_module et_flex_column_24_24_phoneWide et_flex_column_24_24_tabletWide et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\"><div class=\"et_pb_module_inner\">        <div id=\"de_fb_aufenthaltsstatus_wrapper\" class=\"field_wrapper search_filter_cont\" data-count=\"100\" role=\"group\" aria-labelledby=\"de_fb_aufenthaltsstatus_label\" >\n                    <span class=\"field_row\">\n                <label id=\"de_fb_aufenthaltsstatus_label\" for=\"de_fb_aufenthaltsstatus\" class=\"field_label label_position_left et_pb_column_1_4 et_flex_column_6_24\">Residence status<span class=\"de_fb_required\">*<\/span><\/label>                <span class=\"et_pb_column et_pb_column_3_4 et_flex_column_18_24\">\n                                                                <p class=\"et_pb_contact_field\" data-type=\"select\">\n                            <input type=\"hidden\" name=\"field_title[]\" value=\"Residence status\"\/><input type=\"hidden\" name=\"field_name[]\" value=\"de_fb_aufenthaltsstatus\"\/><input type=\"hidden\" name=\"field_id[]\" value=\"de_fb_aufenthaltsstatus\"\/>                            <select class=\"divi-form-builder-field select-field et_pb_contact_select \" required  name=\"de_fb_aufenthaltsstatus\" data-field_type=\"select\" data-msg-required=\"This field must be filled in.\" id=\"de_fb_aufenthaltsstatus\" aria-required=\"true\">\n\t\t<option value=\"\" disabled selected>-- Choose Option --<\/option>\n\t\t<option value=\"Residence permit\" >Residence permit<\/option><option value=\"toleration\" >toleration<\/option><option value=\"Residence permit\" >Residence permit<\/option><option value=\"residence permit\" >residence permit<\/option><option value=\"visa\" >visa<\/option>\n\t\t<\/select>                        <\/p>\n                                                        <\/span>\n                            <\/span>\n                    <\/div>\n        <\/div><\/div>\n\n<div class=\"de_form_builder_form_field_18 de_form_builder_form_field de_fb_form_field clearfix et_pb_column_4_4 et_flex_column_24_24 et_pb_column grid_et_pb_column_4_4_12 et_flex_column_24_24_tablet et_flex_column_24_24_phone file_align_left et_pb_module et_flex_column_24_24_phoneWide et_flex_column_24_24_tabletWide et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\"><div class=\"et_pb_module_inner\">        <div id=\"de_fb_ablaufdatum_wrapper\" class=\"field_wrapper search_filter_cont\" data-count=\"100\" role=\"group\" aria-labelledby=\"de_fb_ablaufdatum_label\" >\n                    <span class=\"field_row\">\n                <label id=\"de_fb_ablaufdatum_label\" for=\"de_fb_ablaufdatum\" class=\"field_label label_position_left et_pb_column_1_4 et_flex_column_6_24\">Expiry date<span class=\"de_fb_required\">*<\/span><\/label>                <span class=\"et_pb_column et_pb_column_3_4 et_flex_column_18_24\">\n                                                                <p class=\"et_pb_contact_field\" data-type=\"datepicker\">\n                            <input type=\"hidden\" name=\"field_title[]\" value=\"Expiry date\"\/><input type=\"hidden\" name=\"field_name[]\" value=\"de_fb_ablaufdatum\"\/><input type=\"hidden\" name=\"field_id[]\" value=\"de_fb_ablaufdatum\"\/>                            \t\n\t<span class=\"datepicker-wrapper\">\n\t\t<input type=\"text\" class=\"divi-form-builder-field datepicker-field\" required name=\"de_fb_ablaufdatum\" id=\"de_fb_ablaufdatum\" placeholder=\"Month\/Year\" value=\"\"  data-msg-required=\"This field must be filled in.\" data-required_position=\"bottom\" autocomplete=\"off\" acf-date=\"\"\/>\n\t<\/span>\n\n\t<script>\n\t\tjQuery(document).ready(function($){\n\t\t\tvar datepicker_base = {};\n\t\t\t\t\t\tif ($.datepicker.regional && $.datepicker.regional['en-GB']) {\n\t\t\t\tdatepicker_base = $.datepicker.regional['en-GB'];\n\t\t\t}\n\t\t\t\t\t\t\n\t\tvar datepicker_option = $.extend(\n\t\t\t{},\n\t\t\tdatepicker_base,\n\t\t\t{\n\t\t\t\t\tshowOn: \"both\",\n\t\t\t\t\tbuttonImage: 'https:\/\/www.hispi.de\/wp-content\/plugins\/divi-form-builder\/images\/calendar.png',\n\t\t\t\t\tbuttonImageOnly: true,\n\t\t\t\t\tbuttonText: \"Select date\",\n\t\t\t\t\tchangeYear: true,\n\t\t\t\t\tyearRange: '1950:2050',\n\t\t\t\t\tchangeMonth: true,\n\t\t\t\t\tdateFormat: \"yy-mm-dd\",\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\tbeforeShow: function(input, inst) {\n\t\t\t\t\t\t$('#ui-datepicker-div').addClass(\"date_picker_759-1\");\n\t\t\t\t\t},\n\t\t\t\t\tonClose: function(dateText, inst ) {\n\t\t\t\t\t\t$('#ui-datepicker-div').removeClass(\"date_picker_759-1\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tdocument.getElementById(\"de_fb_ablaufdatum\").dispatchEvent(new Event('change'));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t$('#de_fb_ablaufdatum').datepicker( datepicker_option );\n\t\t\t\t\t\t\t\t\n\t\t\t});\n\t<\/script>\n\t                        <\/p>\n                                                        <\/span>\n                            <\/span>\n                    <\/div>\n        <\/div><\/div>\n\n<div class=\"de_form_builder_form_field_19 de_form_builder_form_field de_fb_form_field clearfix et_pb_column_4_4 et_flex_column_24_24 et_pb_column grid_et_pb_column_4_4_12 et_flex_column_24_24_tablet et_flex_column_24_24_phone file_align_left et_pb_module et_flex_column_24_24_phoneWide et_flex_column_24_24_tabletWide et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\"><div class=\"et_pb_module_inner\">        <div id=\"de_fb_arbeitserlaubnis_wrapper\" class=\"field_wrapper search_filter_cont\" data-count=\"100\" role=\"group\" aria-labelledby=\"de_fb_arbeitserlaubnis_label\" >\n                    <span class=\"field_row\">\n                <label id=\"de_fb_arbeitserlaubnis_label\" for=\"de_fb_arbeitserlaubnis\" class=\"field_label label_position_left et_pb_column_1_4 et_flex_column_6_24\">Work permit<span class=\"de_fb_required\">*<\/span><\/label>                <span class=\"et_pb_column et_pb_column_3_4 et_flex_column_18_24\">\n                                                                <p class=\"et_pb_contact_field\" data-type=\"select\">\n                            <input type=\"hidden\" name=\"field_title[]\" value=\"Work permit\"\/><input type=\"hidden\" name=\"field_name[]\" value=\"de_fb_arbeitserlaubnis\"\/><input type=\"hidden\" name=\"field_id[]\" value=\"de_fb_arbeitserlaubnis\"\/>                            <select class=\"divi-form-builder-field select-field et_pb_contact_select \" required  name=\"de_fb_arbeitserlaubnis\" data-field_type=\"select\" data-msg-required=\"This field must be filled in.\" id=\"de_fb_arbeitserlaubnis\" aria-required=\"true\">\n\t\t<option value=\"\" disabled selected>-- Choose Option --<\/option>\n\t\t<option value=\"without restriction\" >without restriction<\/option><option value=\"with permission of the ABH\" >with permission of the ABH<\/option><option value=\"Prohibition of work (\u00a760b)\" >Prohibition of work (\u00a760b)<\/option>\n\t\t<\/select>                        <\/p>\n                                                        <\/span>\n                            <\/span>\n                    <\/div>\n        <\/div><\/div>\n\n<div class=\"de_form_builder_form_field_20 de_form_builder_form_field de_fb_form_field clearfix et_pb_column_4_4 et_flex_column_24_24 et_pb_column grid_et_pb_column_4_4_12 et_flex_column_24_24_tablet et_flex_column_24_24_phone file_align_left et_pb_module et_flex_column_24_24_phoneWide et_flex_column_24_24_tabletWide et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\"><div class=\"et_pb_module_inner\">        <div id=\"de_fb_wohnsitzauflage?_wrapper\" class=\"field_wrapper search_filter_cont\" data-count=\"100\" role=\"group\" aria-labelledby=\"de_fb_wohnsitzauflage?_label\" >\n                    <span class=\"field_row\">\n                <label id=\"de_fb_wohnsitzauflage?_label\" for=\"de_fb_wohnsitzauflage?\" class=\"field_label label_position_left et_pb_column_1_4 et_flex_column_6_24\">Residence requirement?<span class=\"de_fb_required\">*<\/span><\/label>                <span class=\"et_pb_column et_pb_column_3_4 et_flex_column_18_24\">\n                                                                <p class=\"et_pb_contact_field\" data-type=\"select\">\n                            <input type=\"hidden\" name=\"field_title[]\" value=\"Residence requirement?\"\/><input type=\"hidden\" name=\"field_name[]\" value=\"de_fb_wohnsitzauflage?\"\/><input type=\"hidden\" name=\"field_id[]\" value=\"de_fb_wohnsitzauflage?\"\/>                            <select class=\"divi-form-builder-field select-field et_pb_contact_select \" required  name=\"de_fb_wohnsitzauflage?\" data-field_type=\"select\" data-msg-required=\"This field must be filled in.\" id=\"de_fb_wohnsitzauflage?\" aria-required=\"true\">\n\t\t<option value=\"\" disabled selected>-- Choose Option --<\/option>\n\t\t<option value=\"Yes\" >Yes<\/option><option value=\"No\" >No<\/option>\n\t\t<\/select>                        <\/p>\n                                                        <\/span>\n                            <\/span>\n                    <\/div>\n        <\/div><\/div>\n\n<div class=\"de_form_builder_form_field_21 de_form_builder_form_field de_fb_form_field clearfix et_pb_column_4_4 et_flex_column_24_24 et_pb_column grid_et_pb_column_4_4_12 et_flex_column_24_24_tablet et_flex_column_24_24_phone file_align_left et_pb_module et_flex_column_24_24_phoneWide et_flex_column_24_24_tabletWide et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\"><div class=\"et_pb_module_inner\">        <div id=\"de_fb_anmerkung_wrapper\" class=\"field_wrapper search_filter_cont\" data-count=\"100\" role=\"group\" aria-labelledby=\"de_fb_anmerkung_label\" >\n                    <span class=\"field_row\">\n                <label id=\"de_fb_anmerkung_label\" for=\"de_fb_anmerkung\" class=\"field_label label_position_left et_pb_column_1_4 et_flex_column_6_24\">Note<span class=\"de_fb_required\">*<\/span><\/label>                <span class=\"et_pb_column et_pb_column_3_4 et_flex_column_18_24\">\n                                                                <p class=\"et_pb_contact_field\" data-type=\"input\">\n                            <input type=\"hidden\" name=\"field_title[]\" value=\"Note\"\/><input type=\"hidden\" name=\"field_name[]\" value=\"de_fb_anmerkung\"\/><input type=\"hidden\" name=\"field_id[]\" value=\"de_fb_anmerkung\"\/>                            \t\t\n\n\t\t<input type=\"text\"  name=\"de_fb_anmerkung\" id=\"de_fb_anmerkung\" data-calc_default=\"0\" placeholder=\"\"   class=\"divi-form-builder-field input-field \" required value=\"\"  data-msg-required=\"This field must be filled in.\" data-required_position=\"bottom\" autocomplete=\"off\" aria-required=\"true\" \/>\n\t\t                        <\/p>\n                                                        <\/span>\n                            <\/span>\n                    <\/div>\n        <\/div><\/div>\n\n<div class=\"de_form_builder_form_field_22 de_form_builder_form_field de_fb_form_field clearfix et_pb_column_4_4 et_flex_column_24_24 et_pb_column grid_et_pb_column_4_4_12 et_flex_column_24_24_tablet et_flex_column_24_24_phone file_align_left et_pb_module et_flex_column_24_24_phoneWide et_flex_column_24_24_tabletWide et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\"><div class=\"et_pb_module_inner\">        <div id=\"de_fb_identitaet_wrapper\" class=\"field_wrapper search_filter_cont\" data-count=\"100\" role=\"group\" aria-labelledby=\"de_fb_identitaet_label\" >\n                    <span class=\"field_row\">\n                <label id=\"de_fb_identitaet_label\" for=\"de_fb_identitaet\" class=\"field_label label_position_left et_pb_column_1_4 et_flex_column_6_24\">Identity clarified?<span class=\"de_fb_required\">*<\/span><\/label>                <span class=\"et_pb_column et_pb_column_3_4 et_flex_column_18_24\">\n                                                                <p class=\"et_pb_contact_field\" data-type=\"select\">\n                            <input type=\"hidden\" name=\"field_title[]\" value=\"Identity clarified?\"\/><input type=\"hidden\" name=\"field_name[]\" value=\"de_fb_identitaet\"\/><input type=\"hidden\" name=\"field_id[]\" value=\"de_fb_identitaet\"\/>                            <select class=\"divi-form-builder-field select-field et_pb_contact_select \" required  name=\"de_fb_identitaet\" data-field_type=\"select\" data-msg-required=\"This field is required.\" id=\"de_fb_identitaet\" aria-required=\"true\">\n\t\t\n\t\t<option value=\"Yes (without an X in the ID)\" >Yes (without an X in the ID)<\/option><option value=\"No (X in ID card)\" >No (X in ID card)<\/option>\n\t\t<\/select>                        <\/p>\n                                                        <\/span>\n                            <\/span>\n                    <\/div>\n        <\/div><\/div><\/div><div class=\"step_button_wrapper et_flex_column_24_24\"><button type=\"button\" class=\"et_pb_button df_step_button df_step_prev\" data-step=\"1\">Zur\u00fcck<\/button><button type=\"button\" class=\"et_pb_button df_step_button df_step_next\" data-step=\"3\">Weiter<\/button><\/div><\/div><div class=\"df_form_step df_step_3 et_flex_row\" style=\"flex-wrap:wrap;\" data-prev_text=\"Zur\u00fcck\" data-next_text=\"Weiter\"><div class=\"dfb-form-fields et_flex_row\" style=\"flex-wrap:wrap;\"><div class=\"de_form_builder_form_field_24 de_form_builder_form_field de_fb_form_field clearfix et_pb_column_4_4 et_flex_column_24_24 et_pb_column grid_et_pb_column_4_4_12 et_flex_column_24_24_tablet et_flex_column_24_24_phone file_align_left et_pb_module et_flex_column_24_24_phoneWide et_flex_column_24_24_tabletWide et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\"><div class=\"et_pb_module_inner\">        <div id=\"de_fb_beruf_wrapper\" class=\"field_wrapper search_filter_cont\" data-count=\"100\" role=\"group\" >\n                                    <p class=\"et_pb_contact_field\" data-type=\"select\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"What are you doing at the moment?\"\/><input type=\"hidden\" name=\"field_name[]\" value=\"de_fb_beruf\"\/><input type=\"hidden\" name=\"field_id[]\" value=\"de_fb_beruf\"\/>                    <select class=\"divi-form-builder-field select-field et_pb_contact_select \" required  name=\"de_fb_beruf\" data-field_type=\"select\" data-msg-required=\"This field is required.\" id=\"de_fb_beruf\" aria-label=\"What are you doing at the moment?\" aria-required=\"true\">\n\t\t\n\t\t<option value=\"Training\" >Training<\/option><option value=\"Work\" >Work<\/option><option value=\"School \/ studies\" >School \/ studies<\/option><option value=\"Integration course\" >Integration course<\/option><option value=\"Unemployed\" >Unemployed<\/option><option value=\"Miscellaneous\" >Miscellaneous<\/option>\n\t\t<\/select>                <\/p>\n                                <\/div>\n        <\/div><\/div><\/div><div class=\"step_button_wrapper et_flex_column_24_24\"><button type=\"button\" class=\"et_pb_button df_step_button df_step_prev\" data-step=\"2\">Zur\u00fcck<\/button><button type=\"button\" class=\"et_pb_button df_step_button df_step_next\" data-step=\"4\">Weiter<\/button><\/div><\/div><div class=\"df_form_step df_step_4 et_flex_row\" style=\"flex-wrap:wrap;\" data-prev_text=\"Zur\u00fcck\" data-next_text=\"Weiter\"><div class=\"dfb-form-fields et_flex_row\" style=\"flex-wrap:wrap;\"><div class=\"de_form_builder_form_field_26 de_form_builder_form_field de_fb_form_field clearfix et_pb_column_4_4 et_flex_column_24_24 et_pb_column grid_et_pb_column_4_4_12 et_flex_column_24_24_tablet et_flex_column_24_24_phone file_align_left et_pb_module et_flex_column_24_24_phoneWide et_flex_column_24_24_tabletWide et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\"><div class=\"et_pb_module_inner\">        <div id=\"de_fb_muttersprache_wrapper\" class=\"field_wrapper search_filter_cont\" data-count=\"100\" role=\"group\" >\n                                    <p class=\"et_pb_contact_field\" data-type=\"input\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"native language\"\/><input type=\"hidden\" name=\"field_name[]\" value=\"de_fb_muttersprache\"\/><input type=\"hidden\" name=\"field_id[]\" value=\"de_fb_muttersprache\"\/>                    \t\t\n\n\t\t<input type=\"text\"  name=\"de_fb_muttersprache\" id=\"de_fb_muttersprache\" data-calc_default=\"0\" placeholder=\"native language *\"   class=\"divi-form-builder-field input-field \" required value=\"\"  data-msg-required=\"This field is required.\" data-required_position=\"bottom\" autocomplete=\"on\" aria-label=\"native language\" aria-required=\"true\" \/>\n\t\t                <\/p>\n                                <\/div>\n        <\/div><\/div>\n\n<div class=\"de_form_builder_form_field_27 de_form_builder_form_field de_fb_form_field clearfix et_pb_column_4_4 et_flex_column_24_24 et_pb_column grid_et_pb_column_4_4_12 et_flex_column_24_24_tablet et_flex_column_24_24_phone file_align_left et_pb_module et_flex_column_24_24_phoneWide et_flex_column_24_24_tabletWide et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\"><div class=\"et_pb_module_inner\">        <div id=\"de_fb_zweitsprache_wrapper\" class=\"field_wrapper search_filter_cont\" data-count=\"100\" role=\"group\" >\n                                    <p class=\"et_pb_contact_field\" data-type=\"input\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"Second language\"\/><input type=\"hidden\" name=\"field_name[]\" value=\"de_fb_zweitsprache\"\/><input type=\"hidden\" name=\"field_id[]\" value=\"de_fb_zweitsprache\"\/>                    \t\t\n\n\t\t<input type=\"text\"  name=\"de_fb_zweitsprache\" id=\"de_fb_zweitsprache\" data-calc_default=\"0\" placeholder=\"Second language *\"   class=\"divi-form-builder-field input-field \" required value=\"\"  data-msg-required=\"This field is required.\" data-required_position=\"bottom\" autocomplete=\"on\" aria-label=\"Second language\" aria-required=\"true\" \/>\n\t\t                <\/p>\n                                <\/div>\n        <\/div><\/div>\n\n<div class=\"de_form_builder_form_field_28 de_form_builder_form_field de_fb_form_field clearfix et_pb_column_4_4 et_flex_column_24_24 et_pb_column grid_et_pb_column_4_4_12 et_flex_column_24_24_tablet et_flex_column_24_24_phone file_align_left et_pb_module et_flex_column_24_24_phoneWide et_flex_column_24_24_tabletWide et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\"><div class=\"et_pb_module_inner\">        <div id=\"de_fb_deutschkenntnisse_wrapper\" class=\"field_wrapper search_filter_cont\" data-count=\"100\" role=\"group\" >\n                                    <p class=\"et_pb_contact_field\" data-type=\"select\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"Knowledge of German\"\/><input type=\"hidden\" name=\"field_name[]\" value=\"de_fb_deutschkenntnisse\"\/><input type=\"hidden\" name=\"field_id[]\" value=\"de_fb_deutschkenntnisse\"\/>                    <select class=\"divi-form-builder-field select-field et_pb_contact_select \" required  name=\"de_fb_deutschkenntnisse\" data-field_type=\"select\" data-msg-required=\"This field is required.\" id=\"de_fb_deutschkenntnisse\" aria-label=\"Knowledge of German\" aria-required=\"true\">\n\t\t\n\t\t<option value=\"A1 - A2\" >A1 - A2<\/option><option value=\"A2 - B1\" >A2 - B1<\/option><option value=\"B1 - B2\" >B1 - B2<\/option>\n\t\t<\/select>                <\/p>\n                                <\/div>\n        <\/div><\/div>\n\n<div class=\"de_form_builder_form_field_29 de_form_builder_form_field de_fb_form_field clearfix et_pb_column_4_4 et_flex_column_24_24 et_pb_column grid_et_pb_column_4_4_12 et_flex_column_24_24_tablet et_flex_column_24_24_phone file_align_left et_pb_module et_flex_column_24_24_phoneWide et_flex_column_24_24_tabletWide et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\"><div class=\"et_pb_module_inner\">        <div id=\"de_fb_interview_wrapper\" class=\"field_wrapper search_filter_cont\" data-count=\"100\" role=\"group\" >\n                                    <p class=\"et_pb_contact_field\" data-type=\"select\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"We can speak German and English in the interview. Do you need a translation into another language?\"\/><input type=\"hidden\" name=\"field_name[]\" value=\"de_fb_interview\"\/><input type=\"hidden\" name=\"field_id[]\" value=\"de_fb_interview\"\/>                    <select class=\"divi-form-builder-field select-field et_pb_contact_select \" required  name=\"de_fb_interview\" data-field_type=\"select\" data-msg-required=\"This field is required.\" id=\"de_fb_interview\" aria-label=\"We can speak German and English in the interview. Do you need a translation into another language?\" aria-required=\"true\">\n\t\t<option value=\"\" disabled selected>-- Choose Option --<\/option>\n\t\t<option value=\"Yes\" >Yes<\/option><option value=\"No\" >No<\/option>\n\t\t<\/select>                <\/p>\n                                <\/div>\n        <\/div><\/div><\/div><div class=\"step_button_wrapper et_flex_column_24_24\"><button type=\"button\" class=\"et_pb_button df_step_button df_step_prev\" data-step=\"3\">Zur\u00fcck<\/button><button type=\"button\" class=\"et_pb_button df_step_button df_step_next\" data-step=\"5\">Weiter<\/button><\/div><\/div><div class=\"df_form_step df_step_5 et_flex_row\" style=\"flex-wrap:wrap;\" data-prev_text=\"Zur\u00fcck\" data-next_text=\"Weiter\"><div class=\"dfb-form-fields et_flex_row\" style=\"flex-wrap:wrap;\"><div class=\"de_form_builder_form_field_31 de_form_builder_form_field de_fb_form_field clearfix et_pb_column_4_4 et_flex_column_24_24 et_pb_column grid_et_pb_column_4_4_12 et_flex_column_24_24_tablet et_flex_column_24_24_phone file_align_left et_pb_module et_flex_column_24_24_phoneWide et_flex_column_24_24_tabletWide et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\"><div class=\"et_pb_module_inner\">        <div id=\"de_fb_warum_wrapper\" class=\"field_wrapper search_filter_cont\" data-count=\"100\" role=\"group\" >\n        <span class=\"df_field_description_text\">Das Hispi House of Friends ist ein neues Projekt zum gemeinsamen Wohnen und Arbeiten f\u00fcr maximal 40 Menschen aus verschiedenen Nationen. Sie erhalten Unterst\u00fctzung im Alltag und bei der Suche nach Arbeit. Das Hispi House of Friends ist ein neues Projekt, das maximal 40 Menschen aus verschiedenen Nationen bei der Suche und Vorbereitung auf einen Arbeitsplatz in der Gastronomie \/ Hotellerie unterst\u00fctzt. Die Teilnehmer wohnen in einem ehemaligen Hotel und sorgen gemeinsam f\u00fcr die Instandhaltung und Pflege der R\u00e4umlichkeiten.<\/span>                            <p class=\"et_pb_contact_field\" data-type=\"text\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"Why do you want to be part of this project?\"\/><input type=\"hidden\" name=\"field_name[]\" value=\"de_fb_warum\"\/><input type=\"hidden\" name=\"field_id[]\" value=\"de_fb_warum\"\/>                    \t\t<textarea name=\"de_fb_warum\" id=\"de_fb_warum\" class=\"divi-form-builder-field textarea-field\" required placeholder=\"Why do you want to be part of this project? *\" rows=\"8\"   data-msg-required=\"This field is required.\" data-required_position=\"bottom\" autocomplete=\"on\" aria-label=\"Why do you want to be part of this project?\" aria-required=\"true\"><\/textarea>\n\t\t                <\/p>\n                                <\/div>\n        <\/div><\/div>\n\n<div class=\"de_form_builder_form_field_32 de_form_builder_form_field de_fb_form_field clearfix et_pb_column_4_4 et_flex_column_24_24 et_pb_column grid_et_pb_column_4_4_12 et_flex_column_24_24_tablet et_flex_column_24_24_phone dfb_radio_default file_align_left et_pb_module et_flex_column_24_24_phoneWide et_flex_column_24_24_tabletWide et_flex_column_24_24_widescreen et_flex_column_24_24_ultraWide\"><div class=\"et_pb_module_inner\">        <div id=\"de_fb_akzeptanz_wrapper\" class=\"field_wrapper search_filter_cont\" data-count=\"100\" role=\"group\" >\n        <span class=\"df_field_description_text\">Das Hispi House of Friends ist ein neues Projekt zum gemeinsamen Wohnen und Arbeiten f\u00fcr maximal 40 Menschen aus verschiedenen Nationen. Sie erhalten Unterst\u00fctzung im Alltag und bei der Suche nach Arbeit. Das Hispi House of Friends ist ein neues Projekt, das maximal 40 Menschen aus verschiedenen Nationen bei der Suche und Vorbereitung auf einen Arbeitsplatz in der Gastronomie \/ Hotellerie unterst\u00fctzt. Die Teilnehmer wohnen in einem ehemaligen Hotel und sorgen gemeinsam f\u00fcr die Instandhaltung und Pflege der R\u00e4umlichkeiten.<\/span>                            <p class=\"et_pb_contact_field\" data-type=\"checkbox\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"I agree to the processing of my personal data.\"\/><input type=\"hidden\" name=\"field_name[]\" value=\"de_fb_akzeptanz\"\/><input type=\"hidden\" name=\"field_id[]\" value=\"de_fb_akzeptanz\"\/>                    <span class=\"et_pb_contact_field_options_wrapper\">\n\t\t\t<span class=\"et_pb_contact_field_options_list required\"  data-required_message=\"This field is required.\" data-required_position=\"bottom\"><span class=\"et_pb_contact_field_checkbox\">\n\t\t\t\t\t<input type=\"checkbox\" id=\"et_pb_contact_de_fb_akzeptanz_1_0\" class=\"divi-form-builder-field checkbox-field\" name=\"de_fb_akzeptanz[]\" value=\"I agree to the processing of my personal data.\" data-id=\"I agree to the processing of my personal data.\" required aria-required=\"true\">\n\t\t\t\t\t<label class=\"\" for=\"et_pb_contact_de_fb_akzeptanz_1_0\">\n\t\t\t\t\t\t<i><\/i>\n\t\t\t\t\t\t<span class=\"label_wrapper\">\n\t\t\t\t\t\t\t<span>I agree to the processing of my personal data.<\/span>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<span class=\"de_fb_required\">*<\/span>\n\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/label>\n\t\t\t\t<\/span><\/span>\n\t\t<\/span>                <\/p>\n                                <\/div>\n        <\/div><\/div><\/div><\/div><\/div><input type=\"hidden\" value=\"759-1\" name=\"form_key\"><input type=\"hidden\" value=\"de-form-builder\/form-0\" name=\"unique_id\"><input type=\"hidden\" value=\"off\" name=\"enable_payment\"><input type=\"hidden\" value=\"759\" name=\"dfb_page_id\"><input type=\"hidden\" name=\"fb_nonce\" class=\"fb_nonce\" value=\"407ba97a64\"><div class=\"et_contact_bottom_container\"><div class=\"submit-container\"><input type=\"text\" name=\"form_type_confirm\" style=\"display:none!important;\" tabindex=\"-1\" autocomplete=\"off\"><div class=\"de_fb_submit_container\"><div class=\"divi-form-submit-container\"><button class=\"divi-form-submit et_pb_button\" type=\"submit\" aria-label=\"Anmeldung abschicken\">Anmeldung abschicken<\/button><\/div><input type=\"hidden\" name=\"form_type\" value=\"contact\"><input type=\"hidden\" name=\"divi-form-submit\" value=\"yes\"><input type=\"hidden\" name=\"form_id\" value=\"\"><input type=\"hidden\" name=\"form_display_type\" value=\"in_page\"><\/div><\/div><script>\n\/\/ Stripe payment flows:\n\/\/ - Divi 4 uses the legacy token\/charge flow (v2 behavior)\n\/\/ - Divi 5 uses PaymentIntents \/ Payment Element (v3 behavior)\nwindow.dfbIsDivi5 = true;\n\/\/ Ensure checkbox\/radio options are focusable (Tab + Space) when CSS is overridden by other stylesheets.\n(function() {\n    function dfbEnsureCheckboxRadioFocusable() {\n        var lists = document.querySelectorAll('.et_pb_contact_field_options_list');\n        lists.forEach(function(list) {\n            var inputs = list.querySelectorAll('input[type=\"checkbox\"], input[type=\"radio\"]');\n            inputs.forEach(function(inp, index) {\n                if (inp.getAttribute('tabindex') === '-1') { inp.removeAttribute('tabindex'); }\n                inp.setAttribute('tabindex', '0');\n                var parent = inp.closest('.et_pb_contact_field_checkbox, .et_pb_contact_field_radio');\n                if (parent) {\n                    if (getComputedStyle(parent).position === 'static') {\n                        parent.style.setProperty('position', 'relative', 'important');\n                    }\n                    parent.style.setProperty('overflow', 'visible', 'important');\n                }\n                inp.style.setProperty('position', 'absolute', 'important');\n                inp.style.setProperty('left', '0', 'important');\n                inp.style.setProperty('top', '0', 'important');\n                inp.style.setProperty('width', '100%', 'important');\n                inp.style.setProperty('height', '100%', 'important');\n                inp.style.setProperty('opacity', '0', 'important');\n                inp.style.setProperty('margin', '0', 'important');\n                inp.style.setProperty('pointer-events', 'auto', 'important');\n                inp.style.setProperty('display', 'block', 'important');\n                inp.style.setProperty('z-index', String(index + 1), 'important');\n            });\n        });\n    }\n    if (document.readyState === 'loading') {\n        document.addEventListener('DOMContentLoaded', dfbEnsureCheckboxRadioFocusable);\n    } else {\n        dfbEnsureCheckboxRadioFocusable();\n    }\n})();\n\/\/ Ensure text inputs (e.g. name field), textareas, and selects are in tab order if they had tabindex=\"-1\".\n(function() {\n    function dfbEnsureInputsFocusable() {\n        var form = document.querySelector('.de_fb_form form, .divi-form-wrapper form');\n        if (!form) { return; }\n        var focusables = form.querySelectorAll('input:not([type=\"hidden\"]):not([type=\"checkbox\"]):not([type=\"radio\"]), textarea, select');\n        focusables.forEach(function(el) {\n            if (el.getAttribute('tabindex') === '-1') {\n                el.removeAttribute('tabindex');\n                el.setAttribute('tabindex', '0');\n            }\n        });\n    }\n    if (document.readyState === 'loading') {\n        document.addEventListener('DOMContentLoaded', dfbEnsureInputsFocusable);\n    } else {\n        dfbEnsureInputsFocusable();\n    }\n})();\n\/\/ Phase 4: Make fetchPaymentIntentAndInit globally accessible immediately\n\/\/ Define it FIRST, before any other code, so it's available as soon as script tag is parsed\nvar fetchPaymentIntentAndInitFn = null;\nvar fetchPaymentIntentAndInitReady = false;\n\n\/\/ Create global function that can be called immediately\n\/\/ This ensures it exists even if called before jQuery is ready or before this script finishes loading\nwindow.fetchPaymentIntentAndInit = function() {\n\n    if (fetchPaymentIntentAndInitReady) {\n        if (fetchPaymentIntentAndInitFn) {\n            \/\/ Function is ready, call it immediately\n\n            fetchPaymentIntentAndInitFn();\n        }\n    } else if (typeof jQuery !== 'undefined') {\n        \/\/ jQuery exists but function not ready yet, wait for it\n\n        jQuery(document).ready(function($) {\n            if (fetchPaymentIntentAndInitFn) {\n\n                fetchPaymentIntentAndInitFn();\n            } else {\n\n            }\n        });\n    } else {\n        \/\/ jQuery not loaded yet, wait for it\n\n        if (typeof window.addEventListener !== 'undefined') {\n            window.addEventListener('DOMContentLoaded', function() {\n                if (typeof jQuery !== 'undefined') {\n                    jQuery(document).ready(function($) {\n                        if (fetchPaymentIntentAndInitFn) {\n\n                            fetchPaymentIntentAndInitFn();\n                        } else {\n\n                        }\n                    });\n                } else {\n                    console.error('jQuery still not available after DOMContentLoaded');\n                }\n            });\n        }\n    }\n};\n\njQuery(document).ready(function($){\n    \/\/ Phase 4: Fetch PaymentIntent before form render (for Payment Element support)\n    function fetchPaymentIntentAndInit() {\n        \/\/ Divi 4 must stay on legacy Stripe flow (no PaymentIntent prefetch \/ Payment Element).\n        if (!window.dfbIsDivi5) {\n            window.fetchPaymentIntentAndInitExecuting = false;\n            window.fetchPaymentIntentAndInitCompleted = true;\n            waitForStripeAndInit();\n            return;\n        }\n\n        \/\/ Mark as executing\n        window.fetchPaymentIntentAndInitExecuting = true;\n\n        \/\/ Handle Stripe redirect return URLs (Klarna, Amazon Pay, etc.).\n        try {\n            const params = new URLSearchParams(window.location.search || '');\n            const paypalCancel = params.get('paypal_cancel');\n            const paypalToken = params.get('token');\n            const returnToken = params.get('dfb_stripe_return');\n            const redirectStatus = params.get('redirect_status');\n            const setupClientSecret = params.get('setup_intent_client_secret');\n            const paymentClientSecret = params.get('payment_intent_client_secret');\n\n            if (paypalCancel === '1') {\n                const processedKey = 'dfb_paypal_cancel_' + (paypalToken || '1');\n                if (!sessionStorage.getItem(processedKey)) {\n                    sessionStorage.setItem(processedKey, '1');\n\n                    const form = $('.de_fb_gateway_paypal_form').first().length ? $('.de_fb_gateway_paypal_form').first() : $('form').first();\n\n                    try {\n                        const cleanUrl = window.location.origin + window.location.pathname + (window.location.hash || '');\n                        window.history.replaceState({}, document.title, cleanUrl);\n                    } catch (e) {}\n\n                    try {\n                        const msg = 'Payment was cancelled. Please try again.';\n                        const cardErrors = form.find('.card-errors').first();\n                        const paymentErrors = form.find(\".payment-errors\").first();\n                        if (cardErrors.length) {\n                            cardErrors.text(msg);\n                            if (paymentErrors.length) {\n                                paymentErrors.html('');\n                            }\n                        } else if (paymentErrors.length) {\n                            paymentErrors.html(msg);\n                        }\n                        form.find('.divi-form-submit').prop('disabled', false);\n                    } catch (e) {}\n                }\n                return;\n            }\n\n            if ((redirectStatus === 'failed' || redirectStatus === 'canceled') && (setupClientSecret || paymentClientSecret)) {\n                const storedMsgKey = setupClientSecret ? ('dfb_stripe_redirect_fail_msg_seti_' + setupClientSecret) : ('dfb_stripe_redirect_fail_msg_pi_' + paymentClientSecret);\n\n                const form = $('.de_fb_gateway_stripe_form').first();\n                const cardWrap = form.find('.card-wrap').first();\n                const stripeKey = cardWrap.data('publishable-key') || cardWrap.data('publishableKey') || cardWrap.attr('data-publishable-key');\n\n                const showError = (msg) => {\n                    try {\n                        const cardErrors = form.find('.card-errors').first();\n                        const paymentErrors = form.find(\".payment-errors\").first();\n\n                        if (cardErrors.length) {\n                            cardErrors.text(msg);\n                            if (paymentErrors.length) {\n                                paymentErrors.html('');\n                            }\n                        } else if (paymentErrors.length) {\n                            paymentErrors.html(msg);\n                        }\n\n                        form.find('.divi-form-submit').prop('disabled', false);\n                    } catch (e) {}\n                };\n\n                try {\n                    const cleanUrl = window.location.origin + window.location.pathname + (window.location.hash || '');\n                    window.history.replaceState({}, document.title, cleanUrl);\n                } catch (e) {}\n\n                try {\n                    const storedMsg = sessionStorage.getItem(storedMsgKey);\n                    if (storedMsg) {\n                        showError(storedMsg);\n                        return;\n                    }\n                } catch (e) {}\n\n                if (form.length && stripeKey) {\n                    const stripe = Stripe(stripeKey);\n                    if (paymentClientSecret) {\n                        stripe.retrievePaymentIntent(paymentClientSecret).then(function(result) {\n                            const msg = (result && result.paymentIntent && result.paymentIntent.last_payment_error && result.paymentIntent.last_payment_error.message)\n                                ? result.paymentIntent.last_payment_error.message\n                                : 'Payment was not completed. Please try again.';\n                            try { sessionStorage.setItem(storedMsgKey, msg); } catch (e) {}\n                            showError(msg);\n\n                            try {\n                                const cardElementContainer = form.find('.card-element').first();\n                                if (cardElementContainer.length && result && result.paymentIntent && result.paymentIntent.id) {\n                                    cardElementContainer.data('dfb-stripe-sticky-error', msg);\n                                    cardElementContainer.data('client-secret', paymentClientSecret);\n                                    cardElementContainer.data('payment-intent-id', result.paymentIntent.id);\n                                    cardElementContainer.data('payment-intent-fetched', true);\n                                    cardElementContainer.removeData('stripe-mounted');\n                                    form.find('input[name=\"payment_intent_id\"]').remove();\n                                    form.append(\"<input type='hidden' name='payment_intent_id' value='\" + result.paymentIntent.id + \"'\/>\");\n                                }\n                                if (typeof waitForStripeAndInit === 'function') {\n                                    waitForStripeAndInit();\n                                }\n                            } catch (e) {}\n                        });\n                        return;\n                    }\n                    if (setupClientSecret) {\n                        stripe.retrieveSetupIntent(setupClientSecret).then(function(result) {\n                            const msg = (result && result.setupIntent && result.setupIntent.last_setup_error && result.setupIntent.last_setup_error.message)\n                                ? result.setupIntent.last_setup_error.message\n                                : 'Payment was not completed. Please try again.';\n                            try { sessionStorage.setItem(storedMsgKey, msg); } catch (e) {}\n                            showError(msg);\n                        });\n                        return;\n                    }\n                } else {\n                    const fallbackMsg = 'Payment was not completed. Please try again.';\n                    try { sessionStorage.setItem(storedMsgKey, fallbackMsg); } catch (e) {}\n                    showError(fallbackMsg);\n                    return;\n                }\n            }\n\n            if (returnToken) {\n                const processedKey = 'dfb_stripe_return_' + returnToken;\n                if (!sessionStorage.getItem(processedKey)) {\n                    sessionStorage.setItem(processedKey, '1');\n                    const form = $('.de_fb_gateway_stripe_form').first();\n                    if (form.length) {\n                        form.find('input[name=\"dfb_stripe_return\"]').remove();\n                        form.append(\"<input type='hidden' name='dfb_stripe_return' value='\" + returnToken + \"'\/>\");\n                        \/\/ Ensure server processes Stripe on return (default gateway can be PayPal).\n                        try {\n                            form.find('input[name=\"de_fb_payment_action\"]').val('stripe');\n                        } catch (e) {}\n                        try {\n                            const cleanUrl = window.location.origin + window.location.pathname + (window.location.hash || '');\n                            window.history.replaceState({}, document.title, cleanUrl);\n                        } catch (e) {}\n\n                        if (form.find('.divi-form-submit').hasClass('de_fb_ajax_submit')) {\n                            de_fb_ajax_form_submit(form[0]);\n                        } else {\n                            form.find('.fb_nonce').remove();\n                            form.append('<input type=\"hidden\" name=\"fb_nonce\" class=\"fb_nonce\" value=\"407ba97a64\">');\n                            form.unbind('submit').submit();\n                        }\n                        return;\n                    }\n                }\n            }\n\n            if (redirectStatus === 'succeeded' && (setupClientSecret || paymentClientSecret)) {\n                const processedKey = setupClientSecret ? ('dfb_stripe_redirect_seti_' + setupClientSecret) : ('dfb_stripe_redirect_pi_' + paymentClientSecret);\n                if (!sessionStorage.getItem(processedKey)) {\n                    sessionStorage.setItem(processedKey, '1');\n\n                    const form = $('.de_fb_gateway_stripe_form').first();\n                    const cardWrap = form.find('.card-wrap').first();\n                    const cardElementContainer = form.find('.card-element').first();\n                    const stripeKey = cardWrap.data('publishable-key') || cardWrap.data('publishableKey') || cardWrap.attr('data-publishable-key');\n\n                    if (form.length && stripeKey) {\n                        const stripe = Stripe(stripeKey);\n\n                        const submitForm = () => {\n                            window.fetchPaymentIntentAndInitExecuting = false;\n                            window.fetchPaymentIntentAndInitCompleted = true;\n\n                            try {\n                                const cleanUrl = window.location.origin + window.location.pathname + (window.location.hash || '');\n                                window.history.replaceState({}, document.title, cleanUrl);\n                            } catch (e) {}\n\n                            if (form.find('.divi-form-submit').hasClass('de_fb_ajax_submit')) {\n                                de_fb_ajax_form_submit(form[0]);\n                            } else {\n                                form.find('.fb_nonce').remove();\n                                form.append('<input type=\"hidden\" name=\"fb_nonce\" class=\"fb_nonce\" value=\"407ba97a64\">');\n                                form.unbind('submit').submit();\n                            }\n                        };\n\n                        if (setupClientSecret) {\n                            stripe.retrieveSetupIntent(setupClientSecret).then(function(result) {\n                                if (result && result.setupIntent && result.setupIntent.payment_method) {\n                                    form.find('input[name=\"stripe_payment_method\"]').remove();\n                                    form.append(\"<input type='hidden' name='stripe_payment_method' value='\" + result.setupIntent.payment_method + \"'\/>\");\n                                    if (cardElementContainer.length) {\n                                        cardElementContainer.data('is-setup-intent', true);\n                                    }\n                                    submitForm();\n                                }\n                            });\n                            return;\n                        }\n\n                        if (paymentClientSecret) {\n                            stripe.retrievePaymentIntent(paymentClientSecret).then(function(result) {\n                                if (result && result.paymentIntent && result.paymentIntent.id) {\n                                    form.find('input[name=\"payment_intent_id\"]').remove();\n                                    form.append(\"<input type='hidden' name='payment_intent_id' value='\" + result.paymentIntent.id + \"'\/>\");\n                                    \/\/ Ensure Stripe is the selected gateway on return.\n                                    try { form.find('input[name=\\\"de_fb_payment_action\\\"]').val('stripe'); } catch (e) {}\n                                    \/\/ Best-effort: hydrate amount for client-side validation (server uses Stripe amount anyway).\n                                    try {\n                                        if (result.paymentIntent.amount) {\n                                            let amt = (parseFloat(result.paymentIntent.amount) || 0) \/ 100;\n                                            if (amt > 0) {\n                                                let paymentField = form.find('input[name=\\\"de_fb_payment_amount\\\"]').first();\n                                                if (paymentField.length) {\n                                                    paymentField.val(amt.toFixed(2)).trigger('input').trigger('change');\n                                                }\n                                            }\n                                        }\n                                    } catch (e) {}\n                                    \/\/ Clear cached PI\/token for next checkout after redirect completion.\n                                    try {\n                                        if (typeof sessionStorage !== 'undefined') {\n                                            let storageFormId = '';\n                                            try {\n                                                storageFormId = form.attr('id') || '';\n                                                if (typeof storageFormId === 'string') {\n                                                    if (storageFormId.indexOf('fb_form_') === 0) {\n                                                        storageFormId = storageFormId.replace('fb_form_', '');\n                                                    }\n                                                }\n                                            } catch (e) {}\n                                            if (storageFormId) {\n                                                sessionStorage.removeItem('dfb_stripe_pi_' + storageFormId);\n                                                sessionStorage.removeItem('dfb_stripe_pi_token_' + storageFormId);\n                                            }\n                                        }\n                                    } catch (e) {}\n                                    submitForm();\n                                }\n                            });\n                            return;\n                        }\n                    }\n                }\n            }\n        } catch (e) {}\n\n        \/\/ Check if we have any Stripe forms with card elements\n        if ($('.de_fb_gateway_stripe_form .card-element').length === 0) {\n            \/\/ No Stripe forms, proceed directly to initialization\n\n            window.fetchPaymentIntentAndInitExecuting = false;\n            window.fetchPaymentIntentAndInitCompleted = true;\n            waitForStripeAndInit();\n            return;\n        }\n        \n        \/\/ Process each Stripe form\n        let formsProcessed = 0;\n        let totalForms = $('.de_fb_gateway_stripe_form').length;\n\n        $('.de_fb_gateway_stripe_form').each(function() {\n            let form = $(this);\n            let cardElementContainer = form.find('.card-element');\n            \n            if (!cardElementContainer.length) {\n                formsProcessed++;\n                if (formsProcessed >= totalForms) {\n                    \/\/ All forms processed, proceed to initialization\n                    window.fetchPaymentIntentAndInitExecuting = false;\n                    window.fetchPaymentIntentAndInitCompleted = true;\n                    waitForStripeAndInit();\n                }\n                return true; \/\/ Continue to next form\n            }\n            \n            \/\/ Check if already processed - check both flags and ID\n            \/\/ Try multiple keys - jQuery converts kebab-case to camelCase\n            let existingPaymentIntentId = cardElementContainer.data('payment-intent-id') || \n                                          cardElementContainer.data('paymentIntentId') ||\n                                          cardElementContainer.data('paymentIntent-id');\n            let paymentIntentFetched = cardElementContainer.data('payment-intent-fetched') ||\n                                       cardElementContainer.data('paymentIntentFetched');\n            \n            \/\/ If the UI shows $0.00, do not keep\/reuse any existing PI id from a previous checkout.\n            try {\n                let visibleAmt = 0;\n                let hasVisibleAmt = false;\n                try {\n                    let priceEl = form.find('#custom_price_wrapper .price').first();\n                    if (!priceEl.length) { priceEl = form.find('.plan-price .price').first(); }\n                    if (priceEl.length) {\n                        visibleAmt = parseFloat((String(priceEl.text() || '')).replace(\/,\/g, '')) || 0;\n                        hasVisibleAmt = true;\n                    }\n                } catch (e) { visibleAmt = 0; hasVisibleAmt = false; }\n                if (hasVisibleAmt && visibleAmt <= 0) {\n                    existingPaymentIntentId = '';\n                    paymentIntentFetched = false;\n                    try { cardElementContainer.removeData('payment-intent-id'); } catch (e) {}\n                    try { cardElementContainer.removeData('paymentIntentId'); } catch (e) {}\n                    try { cardElementContainer.removeData('paymentIntent-id'); } catch (e) {}\n                    try { form.removeData('payment-intent-id'); } catch (e) {}\n                    try { form.find('input[name=\"payment_intent_id\"]').remove(); } catch (e) {}\n                    try {\n                        if (typeof sessionStorage !== 'undefined') {\n                            let storageFormId = '';\n                            try {\n                                storageFormId = form.attr('id') || '';\n                                if (typeof storageFormId === 'string') {\n                                    if (storageFormId.indexOf('fb_form_') === 0) {\n                                        storageFormId = storageFormId.replace('fb_form_', '');\n                                    }\n                                }\n                            } catch (e) {}\n                            if (!storageFormId) {\n                                try { storageFormId = form.find('input[name=\"form_key\"]').val() || ''; } catch (e) {}\n                            }\n                            if (storageFormId) {\n                                try { sessionStorage.removeItem('dfb_stripe_pi_' + storageFormId); } catch (e) {}\n                                try { sessionStorage.removeItem('dfb_stripe_pi_token_' + storageFormId); } catch (e) {}\n                                try { sessionStorage.removeItem('dfb_stripe_pi_amt_' + storageFormId); } catch (e) {}\n                            }\n                        }\n                    } catch (e) {}\n                }\n            } catch (e) {}\n            \n            \/\/ If the previous submit just succeeded, skip auto-creating a new PaymentIntent on page init.\n            \/\/ This avoids extra \"Incomplete\" Stripe entries created by post-submit field resets.\n            try {\n                if (typeof sessionStorage !== 'undefined') {\n                    let storageFormId = '';\n                    try {\n                        storageFormId = form.attr('id') || '';\n                        if (typeof storageFormId === 'string') {\n                            if (storageFormId.indexOf('fb_form_') === 0) {\n                                storageFormId = storageFormId.replace('fb_form_', '');\n                            }\n                        }\n                    } catch (e) {}\n                    if (!storageFormId) {\n                        try { storageFormId = form.find('input[name=\"form_key\"]').val() || ''; } catch (e) {}\n                    }\n                    if (storageFormId) {\n                        let ts = sessionStorage.getItem('dfb_stripe_skip_init_' + storageFormId) || '';\n                        let t = 0;\n                        try { t = parseInt(ts, 10) || 0; } catch (e) { t = 0; }\n                        if (t) {\n                            if ((Date.now() - t) < 60000) {\n                                \/\/ Only skip if this form already has a client_secret (same-page re-render).\n                                \/\/ On full page reload the DOM is fresh and has no client_secret; we must create a new PI and mount.\n                                let hasClientSecret = !!(cardElementContainer.data('client-secret') || (form.find('input[name=\"payment_intent_client_secret\"]').val()));\n                                if (hasClientSecret) {\n                                    cardElementContainer.data('payment-intent-fetched', true);\n                                    paymentIntentFetched = true;\n                                } else {\n                                    try { sessionStorage.removeItem('dfb_stripe_skip_init_' + storageFormId); } catch (e) {}\n                                }\n                            } else {\n                                try { sessionStorage.removeItem('dfb_stripe_skip_init_' + storageFormId); } catch (e) {}\n                            }\n                        }\n                    }\n                }\n            } catch (e) {}\n\n            if (existingPaymentIntentId || paymentIntentFetched) {\n\n                formsProcessed++;\n                if (formsProcessed >= totalForms) {\n                    \/\/ All forms processed (already had an intent), proceed to initialization.\n                    window.fetchPaymentIntentAndInitExecuting = false;\n                    window.fetchPaymentIntentAndInitCompleted = true;\n                    waitForStripeAndInit();\n                }\n                return true; \/\/ DO NOT create duplicate\n            }\n            \n            \/\/ Get form data\n            let formId = form.data('form-id') || form.attr('id');\n            \/\/ Try to get amount and currency from card-wrap data attributes (Phase 7)\n            let cardWrap = form.find('.card-wrap');\n            if (!cardWrap.length) {\n                cardWrap = $('.card-wrap').first();\n            }\n            let amount = 0;\n            let forceZeroFromCustomPrice = false;\n            let amountInput = form.find('input[name=\"de_fb_payment_amount\"]');\n            if (amountInput.length) {\n                amount = parseFloat(amountInput.val()) || 0;\n            }\n            \/\/ For custom-price forms only, do not create a PaymentIntent until the user actually enters values.\n            \/\/ Fixed and calculated price have a known amount on load; only \"custom\" (user-entered) should wait.\n            try {\n                let priceTypeEl = form.find('.fb_payment_price_cont').first();\n                let priceType = priceTypeEl.length ? (priceTypeEl.data('price-type') || '') : '';\n                if (form.find('.de_fb_form_field_custom_price').length && priceType === 'custom') {\n                    let hasUserValue = false;\n                    try {\n                        form.find('input[name^=\"de_fb_\"]').each(function() {\n                            try {\n                                let n = String(jQuery(this).attr('name') || '');\n                                if (n === 'de_fb_payment_amount') { return; }\n                                let v = String(jQuery(this).val() || '').trim();\n                                if (v !== '') { hasUserValue = true; }\n                            } catch (e) {}\n                        });\n                        if (!hasUserValue && form.find('input[name=\"custom_price\"]').length) {\n                            let cv = String(form.find('input[name=\"custom_price\"]').first().val() || '').trim();\n                            if (cv !== '') { hasUserValue = true; }\n                        }\n                    } catch (e) {}\n                    if (!hasUserValue) {\n                        amount = 0;\n                        forceZeroFromCustomPrice = true;\n                    }\n                }\n            } catch (e) {}\n            \/\/ For fixed price, trust the hidden input only (visible .price contains currency symbol, parse would fail).\n            try {\n                if (priceType !== 'fixed') {\n                    let visibleAmt = 0;\n                    let hasVisibleAmt = false;\n                    try {\n                        let priceEl = form.find('#custom_price_wrapper .price').first();\n                        if (!priceEl.length) {\n                            priceEl = form.find('.plan-price .price').first();\n                        }\n                        if (priceEl.length) {\n                            visibleAmt = parseFloat((String(priceEl.text() || '')).replace(\/,\/g, '').replace(\/[^\\d.-]\/g, '')) || 0;\n                            hasVisibleAmt = true;\n                        }\n                    } catch (e) { visibleAmt = 0; hasVisibleAmt = false; }\n                    if (hasVisibleAmt) {\n                        if (visibleAmt <= 0) {\n                            amount = 0;\n                            forceZeroFromCustomPrice = true;\n                        } else {\n                            amount = visibleAmt;\n                        }\n                    } else {\n                        if (form.find('#custom_price_wrapper').length || form.find('.plan-price .price').length) {\n                            if (amount <= 0) {\n                                amount = 0;\n                                forceZeroFromCustomPrice = true;\n                            }\n                        }\n                    }\n                }\n            } catch (e) {}\n            if (amount <= 0) {\n                if (!forceZeroFromCustomPrice) {\n                    amount = cardWrap.length ? parseFloat(cardWrap.data('payment-amount')) || 0 : 0;\n                }\n            }\n            let currency = cardWrap.length ? (cardWrap.data('payment-currency') || 'usd') : 'usd';\n            let paymentMethodMode = cardWrap.length ? (cardWrap.data('stripe-payment-method-mode') || 'simple') : 'simple';\n            \n            \/\/ PaymentIntent-only flow:\n            \/\/ - Simple mode with 0 amount: skip, will use Card Element\n            \/\/ - Advanced mode with 0 amount: skip for now (we'll create PaymentIntent later once amount is known)\n            if (!formId) {\n                cardElementContainer.data('payment-intent-fetched', true);\n                formsProcessed++;\n                if (formsProcessed >= totalForms) {\n                    waitForStripeAndInit();\n                }\n                return true;\n            }\n            \n            \/\/ Simple mode with 0 amount: skip, will use Card Element\n            if (paymentMethodMode === 'simple') {\n                if (amount <= 0) {\n                    cardElementContainer.data('payment-intent-fetched', true);\n                    formsProcessed++;\n                    if (formsProcessed >= totalForms) {\n                        waitForStripeAndInit();\n                    }\n                    return true;\n                }\n            }\n\n            \/\/ Advanced mode with 0 amount: do not create PaymentIntent yet.\n            if (paymentMethodMode === 'advanced') {\n                if (amount <= 0) {\n                try {\n                    cardElementContainer.removeData('payment-intent-id');\n                    cardElementContainer.removeData('paymentIntentId');\n                    cardElementContainer.removeData('paymentIntent-id');\n                    form.removeData('payment-intent-id');\n                    form.find('input[name=\"payment_intent_id\"]').remove();\n                } catch (e) {}\n                try {\n                    if (typeof sessionStorage !== 'undefined') {\n                        let storageFormId = '';\n                        try {\n                            storageFormId = form.attr('id') || '';\n                            if (typeof storageFormId === 'string') {\n                                if (storageFormId.indexOf('fb_form_') === 0) {\n                                    storageFormId = storageFormId.replace('fb_form_', '');\n                                }\n                            }\n                        } catch (e) {}\n                        if (!storageFormId) {\n                            try { storageFormId = form.find('input[name=\"form_key\"]').val() || ''; } catch (e) {}\n                        }\n                        if (storageFormId) {\n                            try { sessionStorage.removeItem('dfb_stripe_pi_' + storageFormId); } catch (e) {}\n                            try { sessionStorage.removeItem('dfb_stripe_pi_token_' + storageFormId); } catch (e) {}\n                            try { sessionStorage.removeItem('dfb_stripe_pi_amt_' + storageFormId); } catch (e) {}\n                        }\n                    }\n                } catch (e) {}\n                cardElementContainer.data('payment-intent-fetching', false);\n                formsProcessed++;\n                if (formsProcessed >= totalForms) {\n                    waitForStripeAndInit();\n                }\n                return true;\n                }\n            }\n            \n            \/\/ Extract form ID number if it's in format \"fb_form_123\"\n            if (typeof formId === 'string' && formId.indexOf('fb_form_') === 0) {\n                formId = formId.replace('fb_form_', '');\n            }\n            \n            \/\/ PaymentIntent-only: always create a PaymentIntent when amount > 0.\n            let ajaxAction = 'de_fb_create_stripe_payment_intent';\n            \n            \/\/ Get AJAX URL and nonce from de_fb_obj or fallback to PHP values\n            let ajaxUrl = \"https:\\\/\\\/www.hispi.de\\\/wp-admin\\\/admin-ajax.php\";\n            let fbNonce = \"407ba97a64\";\n            if (typeof de_fb_obj !== 'undefined') {\n                if (de_fb_obj.ajax_url) { ajaxUrl = de_fb_obj.ajax_url; }\n                if (de_fb_obj.fb_nonce) { fbNonce = de_fb_obj.fb_nonce; }\n            }\n            \n            let ajaxData = {\n                action: ajaxAction,\n                fb_nonce: fbNonce,\n                form_id: formId,\n                payment_method_mode: paymentMethodMode\n            };\n            ajaxData.amount = amount;\n            ajaxData.currency = currency;\n            \n            \/\/ Reuse existing PaymentIntent if already created (prevents duplicates).\n            let existingPi = cardElementContainer.data('payment-intent-id') ||\n                             cardElementContainer.data('paymentIntentId') ||\n                             cardElementContainer.data('paymentIntent-id');\n            if (!existingPi) {\n                let piInput = form.find('input[name=\"payment_intent_id\"]');\n                if (piInput.length && piInput.val()) {\n                    existingPi = piInput.val();\n                }\n            }\n            \/\/ Also try sessionStorage (survives DOM re-renders and prevents a second PI on fast submit).\n            if (!existingPi) {\n                try {\n                    if (typeof sessionStorage !== 'undefined') {\n                        let storageFormId = '';\n                        try {\n                            storageFormId = form.attr('id') || '';\n                            if (typeof storageFormId === 'string') {\n                                if (storageFormId.indexOf('fb_form_') === 0) {\n                                    storageFormId = storageFormId.replace('fb_form_', '');\n                                }\n                            }\n                            if (!storageFormId) {\n                                storageFormId = formId || '';\n                            }\n                        } catch (e) {}\n                        if (storageFormId) {\n                            existingPi = sessionStorage.getItem('dfb_stripe_pi_' + storageFormId) || '';\n                        }\n                    }\n                } catch (e) {}\n            }\n            if (existingPi) {\n                ajaxData.payment_intent_id = existingPi;\n            }\n\n            \/\/ Per-checkout token to prevent duplicate PI creation (server uses it for reuse\/idempotency).\n            let piToken = '';\n            try {\n                if (typeof sessionStorage !== 'undefined') {\n                    let storageFormId = '';\n                    try {\n                        storageFormId = form.attr('id') || '';\n                        if (typeof storageFormId === 'string') {\n                            if (storageFormId.indexOf('fb_form_') === 0) {\n                                storageFormId = storageFormId.replace('fb_form_', '');\n                            }\n                        }\n                        if (!storageFormId) {\n                            storageFormId = formId || '';\n                        }\n                    } catch (e) {}\n\n                    if (storageFormId) {\n                        let tokenKey = 'dfb_stripe_pi_token_' + storageFormId;\n                        piToken = sessionStorage.getItem(tokenKey) || '';\n                        if (!piToken) {\n                            if (window.crypto) {\n                                if (typeof window.crypto.randomUUID === 'function') {\n                                    piToken = window.crypto.randomUUID();\n                                }\n                            }\n                            if (!piToken) {\n                                piToken = 'tok_' + String(Date.now()) + '_' + Math.random().toString(16).slice(2);\n                            }\n                            try { sessionStorage.setItem(tokenKey, piToken); } catch (e) {}\n                        }\n                    }\n                }\n            } catch (e) {}\n            if (piToken) {\n                ajaxData.pi_token = piToken;\n            }\n\n            \/\/ Fetch PaymentIntent or SetupIntent client_secret\n            \n            $.ajax({\n                url: ajaxUrl,\n                type: 'POST',\n                dataType: 'json',\n                data: ajaxData,\n                success: function(response) {\n                    \/\/ Clear fetching flag\n                    cardElementContainer.data('payment-intent-fetching', false);\n\n                    let hasClientSecret = false;\n                    if (response.success) {\n                        if (response.data) {\n                            if (response.data.client_secret) {\n                                hasClientSecret = true;\n                            }\n                        }\n                    }\n                    if (hasClientSecret) {\n                        \/\/ Store client_secret in card element container\n                        cardElementContainer.data('client-secret', response.data.client_secret);\n                        cardElementContainer.data('payment-intent-fetched', true);\n                        \n                        \/\/ Store the appropriate ID and type\n                        let isSetupIntent = response.data.is_setup_intent || false;\n                        cardElementContainer.data('is-setup-intent', isSetupIntent);\n                        \n                        let intentId = isSetupIntent ? response.data.setup_intent_id : response.data.payment_intent_id;\n                        cardElementContainer.data('payment-intent-id', intentId);\n                        \/\/ Track last synced amount so we can update the intent when totals change.\n                        cardElementContainer.data('payment-intent-amount', amount);\n\n                        \/\/ Persist PI id for this form in sessionStorage so submit\/init can reuse it even if DOM re-renders.\n                        if (!isSetupIntent) {\n                            try {\n                                if (typeof sessionStorage !== 'undefined') {\n                                    let storageFormId = '';\n                                    try {\n                                        storageFormId = form.attr('id') || '';\n                                        if (typeof storageFormId === 'string') {\n                                            if (storageFormId.indexOf('fb_form_') === 0) {\n                                                storageFormId = storageFormId.replace('fb_form_', '');\n                                            }\n                                        }\n                                        if (!storageFormId) {\n                                            try {\n                                                storageFormId = form.find('input[name=\"form_key\"]').val() || '';\n                                            } catch (e) {}\n                                            if (!storageFormId) {\n                                                storageFormId = formId || '';\n                                            }\n                                        }\n                                    } catch (e) {}\n                                    if (storageFormId) {\n                                        if (intentId) {\n                                            sessionStorage.setItem('dfb_stripe_pi_' + storageFormId, intentId);\n                                            try { sessionStorage.setItem('dfb_stripe_pi_amt_' + storageFormId, String((parseFloat(amount) || 0).toFixed(2))); } catch (e) {}\n                                        }\n                                    }\n                                }\n                            } catch (e) {}\n                        }\n                        \n                        \/\/ Also store in the form's data attributes for easier retrieval\n                        let form = cardElementContainer.closest('form');\n                        if (form.length) {\n                            form.data('payment-intent-id', intentId);\n                            form.data('is-setup-intent', isSetupIntent);\n                            \n                            \/\/ Add as hidden inputs\n                            form.find('input[name=\"payment_intent_id\"]').remove();\n                            form.find('input[name=\"is_setup_intent\"]').remove();\n                            if (!isSetupIntent) {\n                                form.append(\"<input type='hidden' name='payment_intent_id' value='\" + intentId + \"'\/>\");\n                            } else {\n                                form.append(\"<input type='hidden' name='setup_intent_id' value='\" + intentId + \"'\/>\");\n                                form.append(\"<input type='hidden' name='is_setup_intent' value='1'\/>\");\n                            }\n                        }\n                        \n                    } else {\n                        \/\/ Fallback to Card Element\n                        cardElementContainer.data('payment-intent-fetched', true);\n                    }\n                    \n                    formsProcessed++;\n                    if (formsProcessed >= totalForms) {\n                        \/\/ All forms processed, proceed to initialization\n\n                        waitForStripeAndInit();\n                    }\n                },\n                error: function(xhr, status, error) {\n                    \/\/ Clear fetching flag\n                    cardElementContainer.data('payment-intent-fetching', false);\n\n                    \/\/ Fallback to Card Element\n                    cardElementContainer.data('payment-intent-fetched', true);\n                    \n                    formsProcessed++;\n                    if (formsProcessed >= totalForms) {\n                        \/\/ All forms processed, proceed to initialization\n                        window.fetchPaymentIntentAndInitExecuting = false;\n                        window.fetchPaymentIntentAndInitCompleted = true;\n                        waitForStripeAndInit();\n                    }\n                }\n            });\n        });\n    }\n    \n    \/\/ Store function reference and mark as ready\n    fetchPaymentIntentAndInitFn = fetchPaymentIntentAndInit;\n    fetchPaymentIntentAndInitReady = true;\n\n    \/\/ Also make it available globally (in case it's called from outside this scope)\n    window.fetchPaymentIntentAndInit = fetchPaymentIntentAndInit;\n    \n    \/\/ Initialize Stripe Elements for all Stripe forms on page load\n    function initializeStripeElements() {\n        if (typeof Stripe === 'undefined') {\n            console.warn('Stripe.js is not loaded yet');\n            return false;\n        }\n        \/\/ Divi 4 uses the legacy Stripe (v2-style) UI and does not mount Stripe Elements\/Payment Element.\n        if (!window.dfbIsDivi5) {\n            return false;\n        }\n        \n        let initialized = false;\n        $('.de_fb_gateway_stripe_form').each(function() {\n            let form = $(this);\n            \/\/ Try to find card-wrap within the form or anywhere on the page\n            let cardWrap = form.find('.card-wrap');\n            if (!cardWrap.length) {\n                \/\/ If not found in form, try to find it on the page (might be outside form)\n                cardWrap = $('.card-wrap').first();\n            }\n            \n            let stripeKey = cardWrap.length ? cardWrap.data('publishable-key') : null;\n            \n            if (!stripeKey) {\n                console.warn('Stripe publishable key not found for form:', form.attr('id') || 'unknown');\n                return true; \/\/ Continue to next form\n            }\n            \n            let cardElementContainer = form.find('.card-element');\n            if (!cardElementContainer.length) {\n                console.warn('Card element container not found in form:', form.attr('id') || 'unknown');\n                return true; \/\/ Continue to next form\n            }\n            \n            \/\/ Skip if already mounted\n            if (cardElementContainer.data('stripe-mounted')) {\n                return true; \/\/ Continue to next form\n            }\n            \n            \/\/ Get placeholder settings from data attributes\n            \/\/ IMPORTANT: Stripe Elements v3 unified 'card' element does NOT support custom placeholder text\n            \/\/ Placeholders are automatically generated by Stripe based on browser locale\n            \/\/ Custom placeholders would require using separate elements (cardNumber, cardExpiry, cardCvc)\n            \/\/ The placeholder data below is stored for potential future use\n            let displayPlaceholders = cardWrap.data('display-placeholders') || 'on';\n            let cardNumberPlaceholder = cardWrap.data('card-number-placeholder') || '';\n            let expiryMonthPlaceholder = cardWrap.data('expiry-month-placeholder') || '';\n            let expiryYearPlaceholder = cardWrap.data('expiry-year-placeholder') || '';\n            let cvcPlaceholder = cardWrap.data('cvc-placeholder') || '';\n            \n            try {\n                \/\/ Check if we have a client_secret (Payment Element) or need to use Card Element (fallback)\n                let clientSecret = cardElementContainer.data('client-secret');\n                let paymentElement = null;\n                let cardElement = null;\n                \n                \/\/ Get payment method mode and layout from form data attributes\n                let paymentMethodMode = cardWrap.data('stripe-payment-method-mode') || 'simple';\n                let paymentElementLayout = cardWrap.data('stripe-payment-element-layout') || 'accordion';\n            \/\/ Divi 4: force simple mode so Card Element mounts (advanced mode is Divi 5 only).\n            if (!window.dfbIsDivi5) {\n                paymentMethodMode = 'simple';\n            }\n                \n                \/\/ Debug logging\n\n                let willUsePaymentElement = false;\n                if (clientSecret) {\n                    if (paymentMethodMode === 'advanced') {\n                        willUsePaymentElement = true;\n                    }\n                }\n\n                let stripe = Stripe(stripeKey);\n                \n                if (willUsePaymentElement) {\n                    \/\/ Use Payment Element (supports multiple payment methods)\n                    let elements = stripe.elements({ clientSecret: clientSecret });\n                    paymentElement = elements.create('payment', {\n                        layout: paymentElementLayout \/\/ 'accordion' or 'tabs'\n                    });\n                    paymentElement.mount(cardElementContainer[0]);\n                    cardElementContainer.data('stripe-payment-element', paymentElement);\n                    cardElementContainer.data('stripe-elements', elements); \/\/ Store elements instance for confirmPayment\n                    cardElementContainer.data('stripe-mounted', true);\n                    cardElementContainer.data('stripe-instance', stripe);\n                    initialized = true;\n\n                    \/\/ Handle payment element events\n                    paymentElement.on('change', function(event) {\n                        let displayError = cardElementContainer.closest('.card-wrap').find('.card-errors');\n                        if (displayError.length === 0) {\n                            displayError = form.find('.card-errors').first();\n                        }\n                        if (event.error) {\n                            try { cardElementContainer.removeData('dfb-stripe-sticky-error'); } catch (e) {}\n                            displayError.text(event.error.message);\n                        } else {\n                            try {\n                                const stickyError = cardElementContainer.data('dfb-stripe-sticky-error');\n                                if (stickyError) {\n                                    if (event) {\n                                        if (event.complete === true) {\n                                            cardElementContainer.removeData('dfb-stripe-sticky-error');\n                                            displayError.text('');\n                                        }\n                                    }\n                                } else {\n                                    displayError.text('');\n                                }\n                            } catch (e) {\n                                displayError.text('');\n                            }\n                        }\n\n                        \/\/ WP_DEBUG-only server log for selected payment method type (e.g. amazon_pay, klarna).\n                        try {\n                            let methodType = '';\n                            if (event) {\n                                if (event.value) {\n                                    if (event.value.type) {\n                                        methodType = event.value.type;\n                                    }\n                                }\n                            }\n                            if (methodType) {\n                                let lastType = cardElementContainer.data('stripe-selected-method-type') || '';\n                                if (lastType !== methodType) {\n                                    cardElementContainer.data('stripe-selected-method-type', methodType);\n\n                                    form.find('input[name=\"stripe_payment_method_type\"]').remove();\n                                    form.append(\"<input type='hidden' name='stripe_payment_method_type' value='\" + methodType + \"'\/>\");\n\n                                }\n                            }\n                        } catch (e) {}\n                    });\n                } else {\n                    \/\/ Advanced mode requires Payment Element. If we don't have a client_secret yet, wait.\n                    if (paymentMethodMode === 'advanced') {\n                        if (!clientSecret) {\n                            return true;\n                        }\n                    }\n\n                    \/\/ Fallback: Use Card Element (backwards compatibility or simple mode)\n                    \/\/ Get computed font styles from the card-element container\n                    let computedStyles = window.getComputedStyle(cardElementContainer[0]);\n                    let fontFamily = computedStyles.fontFamily || 'Roboto, Open Sans, Segoe UI, sans-serif';\n                    let fontSize = computedStyles.fontSize || '16px';\n                    let fontWeight = computedStyles.fontWeight || '400';\n                    let fontStyle = computedStyles.fontStyle || 'normal';\n                    let letterSpacing = computedStyles.letterSpacing || 'normal';\n                    let lineHeight = computedStyles.lineHeight || 'normal';\n                    let color = computedStyles.color || '#313259';\n                    \n                    \/\/ Get placeholder color from computed styles or default (WCAG AA: 4.5:1 on white)\n                    let placeholderColor = '#6b7280';\n                    try {\n                        \/\/ Try to get placeholder color from ::placeholder pseudo-element\n                        let placeholderStyles = window.getComputedStyle(cardElementContainer[0], '::placeholder');\n                        if (placeholderStyles && placeholderStyles.color) {\n                            placeholderColor = placeholderStyles.color;\n                        }\n                    } catch (e) {\n                        \/\/ Fallback to default if ::placeholder is not supported\n                    }\n                    \n                    let elements = stripe.elements();\n                    cardElement = elements.create('card', {\n                        hidePostalCode: true,\n                        style: {\n                            base: {\n                                iconColor: '#666EE8',\n                                color: color,\n                                fontWeight: parseInt(fontWeight) || 400,\n                                fontFamily: fontFamily,\n                                fontSize: fontSize,\n                                fontStyle: fontStyle,\n                                letterSpacing: letterSpacing,\n                                lineHeight: lineHeight,\n                                '::placeholder': {\n                                    color: placeholderColor,\n                                },\n                            },\n                            invalid: {\n                                iconColor: '#FFC7EE',\n                                color: '#FFC7EE',\n                            },\n                        }\n                    });\n                    \n                    \/\/ Mount to the actual DOM element, not the selector\n                    cardElement.mount(cardElementContainer[0]);\n                    cardElementContainer.data('stripe-mounted', true);\n                    cardElementContainer.data('stripe-instance', stripe);\n                    cardElementContainer.data('stripe-card-element', cardElement);\n                    initialized = true;\n                    \n                    \/\/ Handle card element events\n                    cardElement.on('change', function(event) {\n                        \/\/ Find the card-errors element within the same card-wrap container to avoid duplicates\n                        let displayError = cardElementContainer.closest('.card-wrap').find('.card-errors');\n                        if (displayError.length === 0) {\n                            displayError = form.find('.card-errors').first();\n                        }\n                        if (event.error) {\n                            try { cardElementContainer.removeData('dfb-stripe-sticky-error'); } catch (e) {}\n                            displayError.text(event.error.message);\n                        } else {\n                            try {\n                                const stickyError = cardElementContainer.data('dfb-stripe-sticky-error');\n                                if (stickyError) {\n                                    if (event) {\n                                        if (event.complete === true) {\n                                            cardElementContainer.removeData('dfb-stripe-sticky-error');\n                                            displayError.text('');\n                                        }\n                                    }\n                                } else {\n                                    displayError.text('');\n                                }\n                            } catch (e) {\n                                displayError.text('');\n                            }\n                        }\n                    });\n                }\n            } catch (error) {\n                console.error('Error initializing Stripe Elements for form ' + (form.attr('id') || 'unknown') + ':', error);\n            }\n            \n            return true; \/\/ Continue to next form\n        });\n        \n        return initialized;\n    }\n    \n    \/\/ Wait for Stripe.js to load, then initialize\n    function waitForStripeAndInit() {\n        if (typeof Stripe !== 'undefined') {\n            initializeStripeElements();\n            return true;\n        }\n        return false;\n    }\n    \n    \/\/ Phase 4: Start by fetching PaymentIntent (if needed), then initialize Stripe Elements\n    \/\/ Global flag to prevent duplicate execution across all forms\n    if (typeof window.fetchPaymentIntentAndInitExecuting === 'undefined') {\n        window.fetchPaymentIntentAndInitExecuting = false;\n    }\n    if (typeof window.fetchPaymentIntentAndInitCompleted === 'undefined') {\n        window.fetchPaymentIntentAndInitCompleted = false;\n    }\n    \n    \/\/ Try to fetch PaymentIntent immediately (only once)\n    \n    if (!window.fetchPaymentIntentAndInitExecuting) {\n        if (!window.fetchPaymentIntentAndInitCompleted) {\n            window.fetchPaymentIntentAndInitExecuting = true;\n            window.fetchPaymentIntentAndInit();\n        }\n    } else {\n    }\n    \n    \/\/ Function to create PaymentIntent when payment gateway is clicked (amount becomes available)\n    \/\/ This is needed because the amount might be 0 on page load, but becomes available when gateway is clicked\n    \/\/ Only define once globally\n    if (typeof window.createPaymentIntentOnGatewayClick === 'undefined') {\n        window.createPaymentIntentOnGatewayClick = function() {\n            \/\/ Divi 4 must not create PaymentIntents (Stripe v3 flow is Divi 5 only).\n            if (!window.dfbIsDivi5) {\n                return;\n            }\n            \n            \/\/ If fetchPaymentIntentAndInit is executing, wait for it to complete\n            if (window.fetchPaymentIntentAndInitExecuting) {\n                let startTime = Date.now();\n                let checkInterval = setInterval(function() {\n                    if (!window.fetchPaymentIntentAndInitExecuting) {\n                        clearInterval(checkInterval);\n                        \/\/ Recursively call this function after fetchPaymentIntentAndInit completes\n                        \/\/ This will re-check the amount (which might have changed from 0 to > 0)\n                        window.createPaymentIntentOnGatewayClick();\n                        return;\n                    }\n                    \/\/ Fail-safe: do not block forever if the init flag gets stuck.\n                    if ((Date.now() - startTime) > 3000) {\n                        clearInterval(checkInterval);\n                        try { window.fetchPaymentIntentAndInitExecuting = false; } catch (e) {}\n                        window.createPaymentIntentOnGatewayClick();\n                    }\n                }, 100);\n                return;\n            }\n            \n            \n            $('.de_fb_gateway_stripe_form').each(function() {\n                let form = $(this);\n                let cardElementContainer = form.find('.card-element');\n                \n                if (!cardElementContainer.length) {\n                    return true; \/\/ Continue to next form\n                }\n                \n                \/\/ Get form data FIRST to check amount (amount might have changed since page load)\n                let formId = form.data('form-id') || form.attr('id');\n                let cardWrap = form.find('.card-wrap');\n                if (!cardWrap.length) {\n                    cardWrap = $('.card-wrap').first();\n                }\n                \n                \/\/ IMPORTANT: Re-check amount - it might have changed from 0 to > 0\n                \/\/ Try multiple sources for amount (it might be updated dynamically)\n                let amount = 0;\n                let forceZeroFromCustomPrice = false;\n                \n                \/\/ First: Try hidden input (most reliable - updated when form fields change)\n                let amountInput = form.find('input[name=\"de_fb_payment_amount\"]');\n                if (amountInput.length) {\n                    amount = parseFloat(amountInput.val()) || 0;\n                }\n\n                \/\/ Price UI can show 0 even when the hidden input has a default.\n                \/\/ Respect the visible amount so we don't create\/update a PI until the total is actually > 0.\n                try {\n                    let visibleAmt = 0;\n                    let hasVisibleAmt = false;\n                    try {\n                        let priceEl = form.find('#custom_price_wrapper .price').first();\n                        if (!priceEl.length) {\n                            priceEl = form.find('.plan-price .price').first();\n                        }\n                        if (priceEl.length) {\n                            visibleAmt = parseFloat((String(priceEl.text() || '')).replace(\/,\/g, '')) || 0;\n                            hasVisibleAmt = true;\n                        }\n                    } catch (e) { visibleAmt = 0; hasVisibleAmt = false; }\n                    if (hasVisibleAmt) {\n                        if (visibleAmt <= 0) {\n                            amount = 0;\n                            forceZeroFromCustomPrice = true;\n                        } else if (amount <= 0) {\n                            amount = visibleAmt;\n                        }\n                    } else {\n                        if (form.find('#custom_price_wrapper').length || form.find('.plan-price .price').length) {\n                            if (amount <= 0) {\n                                amount = 0;\n                                forceZeroFromCustomPrice = true;\n                            }\n                        }\n                    }\n                } catch (e) {}\n                \n                \/\/ Second: Try card-wrap data attribute\n                if (amount <= 0) {\n                    if (!forceZeroFromCustomPrice) {\n                        if (cardWrap.length) {\n                            amount = parseFloat(cardWrap.data('payment-amount')) || 0;\n                        }\n                    }\n                }\n                \n                \/\/ Third: Try form data attribute\n                if (amount <= 0) {\n                    if (!forceZeroFromCustomPrice) {\n                        amount = parseFloat(form.data('payment-amount')) || 0;\n                    }\n                }\n                \n                let currency = cardWrap.length ? (cardWrap.data('payment-currency') || 'usd') : 'usd';\n                let paymentMethodMode = cardWrap.length ? (cardWrap.data('stripe-payment-method-mode') || 'simple') : 'simple';\n                \n                \n                \/\/ Check if PaymentIntent already exists\n                \/\/ Try multiple keys - jQuery converts kebab-case to camelCase\n                let fetched = cardElementContainer.data('payment-intent-fetched') || \n                              cardElementContainer.data('paymentIntentFetched');\n                let id = cardElementContainer.data('payment-intent-id') || \n                         cardElementContainer.data('paymentIntentId') ||\n                         cardElementContainer.data('paymentIntent-id');\n                \/\/ Also check form input\n                if (!id) {\n                    let formInput = form.find('input[name=\"payment_intent_id\"]');\n                    if (formInput.length) {\n                        if (formInput.val()) {\n                            id = formInput.val();\n                        }\n                    }\n                }\n                let existingIntentId = id || '';\n                let lastIntentAmount = parseFloat(cardElementContainer.data('payment-intent-amount')) || 0;\n                \n                \/\/ Check if currently being fetched\n                if (cardElementContainer.data('payment-intent-fetching')) {\n                    return true; \/\/ Continue to next form\n                }\n                \n                \/\/ Only create PaymentIntent if we have amount and form ID\n                if (!formId || amount <= 0) {\n                    return true; \/\/ Continue to next form\n                }\n\n                if (existingIntentId) {\n                    if (lastIntentAmount > 0) {\n                        if (Math.abs(amount - lastIntentAmount) < 0.0001) {\n                            return true; \/\/ Continue to next form\n                        }\n                    }\n                }\n                \n                \/\/ Extract form ID number if it's in format \"fb_form_123\"\n                if (typeof formId === 'string') {\n                    if (formId.indexOf('fb_form_') === 0) {\n                        formId = formId.replace('fb_form_', '');\n                    }\n                }\n\n                \/\/ If DOM was re-rendered and we lost the PI id, reuse it from sessionStorage.\n                if (!existingIntentId) {\n                    try {\n                        if (typeof sessionStorage !== 'undefined') {\n                            let storageFormId = '';\n                            try {\n                                storageFormId = form.attr('id') || '';\n                                if (typeof storageFormId === 'string') {\n                                    if (storageFormId.indexOf('fb_form_') === 0) {\n                                        storageFormId = storageFormId.replace('fb_form_', '');\n                                    }\n                                }\n                                if (!storageFormId) {\n                                    storageFormId = formId || '';\n                                }\n                            } catch (e) {}\n                            if (storageFormId) {\n                                let storedPi = sessionStorage.getItem('dfb_stripe_pi_' + storageFormId);\n                                if (storedPi) {\n                                    existingIntentId = storedPi;\n                                    \/\/ Keep DOM in sync so submit flow uses the same PI.\n                                    cardElementContainer.data('payment-intent-id', existingIntentId);\n                                    form.data('payment-intent-id', existingIntentId);\n                                    form.find('input[name=\"payment_intent_id\"]').remove();\n                                    form.append(\"<input type='hidden' name='payment_intent_id' value='\" + existingIntentId + \"'\/>\");\n                                }\n                            }\n                        }\n                    } catch (e) {}\n                }\n                \n                \/\/ Mark as fetching\n                cardElementContainer.data('payment-intent-fetching', true);\n                \n                \n                \/\/ Fetch PaymentIntent client_secret\n                var ajaxUrl = 'https:\/\/www.hispi.de\/wp-admin\/admin-ajax.php';\n                if (typeof de_fb_obj !== 'undefined') {\n                    if (typeof de_fb_obj.ajax_url !== 'undefined') {\n                        ajaxUrl = de_fb_obj.ajax_url;\n                    }\n                }\n                var fbNonce = '407ba97a64';\n                if (typeof de_fb_obj !== 'undefined') {\n                    if (typeof de_fb_obj.fb_nonce !== 'undefined') {\n                        fbNonce = de_fb_obj.fb_nonce;\n                    }\n                }\n                \/\/ Per-checkout token to prevent duplicate PI creation (server uses it for reuse\/idempotency).\n                var piToken = '';\n                try {\n                    if (typeof sessionStorage !== 'undefined') {\n                        var storageFormId = '';\n                        try {\n                            storageFormId = form.attr('id') || '';\n                            if (typeof storageFormId === 'string') {\n                                if (storageFormId.indexOf('fb_form_') === 0) {\n                                    storageFormId = storageFormId.replace('fb_form_', '');\n                                }\n                            }\n                            if (!storageFormId) {\n                                try {\n                                    storageFormId = form.find('input[name=\"form_key\"]').val() || '';\n                                } catch (e) {}\n                                if (!storageFormId) {\n                                    storageFormId = formId || '';\n                                }\n                            }\n                        } catch (e) {}\n                        if (storageFormId) {\n                            var tokenKey = 'dfb_stripe_pi_token_' + storageFormId;\n                            piToken = sessionStorage.getItem(tokenKey) || '';\n                            if (!piToken) {\n                                if (window.crypto) {\n                                    if (typeof window.crypto.randomUUID === 'function') {\n                                        piToken = window.crypto.randomUUID();\n                                    }\n                                }\n                                if (!piToken) {\n                                    piToken = 'tok_' + String(Date.now()) + '_' + Math.random().toString(16).slice(2);\n                                }\n                                try { sessionStorage.setItem(tokenKey, piToken); } catch (e) {}\n                            }\n                        }\n                    }\n                } catch (e) {}\n                $.ajax({\n                    url: ajaxUrl,\n                    type: 'POST',\n                    dataType: 'json',\n                    data: {\n                        action: 'de_fb_create_stripe_payment_intent',\n                        fb_nonce: fbNonce,\n                        form_id: formId,\n                        pi_token: piToken,\n                        amount: amount,\n                        currency: currency,\n                        payment_method_mode: paymentMethodMode,\n                        payment_intent_id: existingIntentId\n                    },\n                    success: function(response) {\n                        \/\/ Clear fetching flag\n                        cardElementContainer.data('payment-intent-fetching', false);\n                        \n                        \n                        if (response.success) {\n                            if (response.data) {\n                                if (response.data.client_secret) {\n                                    \/\/ Store client_secret in card element container.\n                                    \/\/ If Stripe returns a NEW client_secret (e.g. PI was recreated), we must remount Elements.\n                                    let prevClientSecret = cardElementContainer.data('client-secret') || '';\n                                    let prevPiId = cardElementContainer.data('payment-intent-id') || '';\n\n                                    cardElementContainer.data('client-secret', response.data.client_secret);\n                                    cardElementContainer.data('payment-intent-id', response.data.payment_intent_id);\n                                    cardElementContainer.data('payment-intent-fetched', true);\n                                    cardElementContainer.data('payment-intent-amount', amount);\n\n                                    let needsRemount = false;\n                                    try {\n                                        if (prevClientSecret && prevClientSecret !== response.data.client_secret) {\n                                            needsRemount = true;\n                                        } else if (prevPiId && prevPiId !== response.data.payment_intent_id && prevClientSecret !== response.data.client_secret) {\n                                            needsRemount = true;\n                                        }\n                                    } catch (e) {}\n\n                                    if (needsRemount) {\n                                        try {\n                                            cardElementContainer.removeData('stripe-mounted');\n                                            cardElementContainer.removeData('stripe-elements');\n                                            cardElementContainer.removeData('stripe-payment-element');\n                                        } catch (e) {}\n                                        try { waitForStripeAndInit(); } catch (e) {}\n                                    }\n                                    \/\/ Persist PI id for this form in sessionStorage (prevents creating a second PI).\n                                    try {\n                                        if (typeof sessionStorage !== 'undefined') {\n                                            let storageFormId = '';\n                                            try {\n                                                storageFormId = form.attr('id') || '';\n                                                if (typeof storageFormId === 'string') {\n                                                    if (storageFormId.indexOf('fb_form_') === 0) {\n                                                        storageFormId = storageFormId.replace('fb_form_', '');\n                                                    }\n                                                }\n                                                if (!storageFormId) {\n                                                    try {\n                                                        storageFormId = form.find('input[name=\"form_key\"]').val() || '';\n                                                    } catch (e) {}\n                                                    if (!storageFormId) {\n                                                        storageFormId = formId || '';\n                                                    }\n                                                }\n                                            } catch (e) {}\n                                            if (storageFormId) {\n                                                if (response.data.payment_intent_id) {\n                                                    sessionStorage.setItem('dfb_stripe_pi_' + storageFormId, response.data.payment_intent_id);\n                                                    try { sessionStorage.setItem('dfb_stripe_pi_amt_' + storageFormId, String((parseFloat(amount) || 0).toFixed(2))); } catch (e) {}\n                                                }\n                                            }\n                                        }\n                                    } catch (e) {}\n                                    \n                                    \/\/ Also store PaymentIntent ID in the form's data attributes for easier retrieval\n                                    let form = cardElementContainer.closest('form');\n                                    if (form.length) {\n                                        form.data('payment-intent-id', response.data.payment_intent_id);\n                                        \/\/ Also add PaymentIntent ID to form as hidden input immediately\n                                        form.find('input[name=\"payment_intent_id\"]').remove(); \/\/ Remove any existing\n                                        form.append(\"<input type='hidden' name='payment_intent_id' value='\" + response.data.payment_intent_id + \"'\/>\");\n                                    }\n\n                                    \/\/ If we did not remount, fetch updates so wallets reflect the latest amount.\n                                    try {\n                                        if (!needsRemount) {\n                                            let elements = cardElementContainer.data('stripe-elements');\n                                            if (elements) {\n                                                if (typeof elements.fetchUpdates === 'function') {\n                                                    elements.fetchUpdates();\n                                                }\n                                            }\n                                        }\n                                    } catch (e) {}\n                                    \n                                } else {\n\n                                    \/\/ Fallback to Card Element\n                                    cardElementContainer.data('payment-intent-fetched', true);\n                                }\n                            } else {\n\n                                \/\/ Fallback to Card Element\n                                cardElementContainer.data('payment-intent-fetched', true);\n                            }\n                        } else {\n                            var errorMsg = 'Unknown error';\n                            if (response.data) {\n                                if (response.data.message) {\n                                    errorMsg = response.data.message;\n                                }\n                            }\n\n                            \/\/ Fallback to Card Element\n                            cardElementContainer.data('payment-intent-fetched', true);\n                        }\n                    },\n                    error: function(xhr, status, error) {\n                        \/\/ Clear fetching flag\n                        cardElementContainer.data('payment-intent-fetching', false);\n\n                        \/\/ Fallback to Card Element\n                        cardElementContainer.data('payment-intent-fetched', true);\n                    }\n                });\n            });\n        };\n    }\n    \n    \/\/ Listen for payment gateway clicks and create PaymentIntent when amount becomes available\n    \/\/ Use document-level listener to catch clicks from minified JS\n    \/\/ Only add listener once (check if it already exists)\n    if (typeof window.stripeGatewayClickListenerAdded === 'undefined') {\n        window.stripeGatewayClickListenerAdded = true;\n        $(document).on('click', '.divi_fb_gateways a', function() {\n            \/\/ Wait a bit for the amount to be updated, then create PaymentIntent\n            setTimeout(function() {\n                if (typeof window.createPaymentIntentOnGatewayClick === 'function') {\n                    window.createPaymentIntentOnGatewayClick();\n                }\n            }, 200);\n        });\n    }\n\n    \/\/ Also create\/update PaymentIntent when amount changes (custom\/calculated price) in Advanced mode,\n    \/\/ so the Payment Element stays in sync when the total changes.\n    if (typeof window.stripeAmountChangeListenerAdded === 'undefined') {\n        window.stripeAmountChangeListenerAdded = true;\n        let dfbStripeAmountTimer = null;\n        $(document).on('input change', '.de_fb_gateway_stripe_form input[name=\"de_fb_payment_amount\"], .de_fb_gateway_stripe_form input[name=\"custom_price\"]', function() {\n            var __el = this;\n            clearTimeout(dfbStripeAmountTimer);\n            dfbStripeAmountTimer = setTimeout(function() {\n                try {\n                    let form = jQuery('.de_fb_gateway_stripe_form').first();\n                    try { form = jQuery(__el).closest('form'); } catch (e) {}\n                    if (form.length) {\n                        let storageFormId = '';\n                        try {\n                            storageFormId = form.attr('id') || '';\n                            if (typeof storageFormId === 'string') {\n                                if (storageFormId.indexOf('fb_form_') === 0) {\n                                    storageFormId = storageFormId.replace('fb_form_', '');\n                                }\n                            }\n                        } catch (e) {}\n                        if (!storageFormId) {\n                            try { storageFormId = form.find('input[name=\"form_key\"]').val() || ''; } catch (e) {}\n                        }\n                        if (storageFormId) {\n                            try { sessionStorage.removeItem('dfb_stripe_skip_init_' + storageFormId); } catch (e) {}\n                        }\n                    }\n                } catch (e) {}\n                if (typeof window.createPaymentIntentOnGatewayClick === 'function') {\n                    window.createPaymentIntentOnGatewayClick();\n                }\n            }, 300);\n        });\n    }\n\n    \/\/ Ensure custom-price forms always sync visible total -> hidden amount -> PI update.\n    if (typeof window.stripeCustomPriceSyncListenerAdded === 'undefined') {\n        window.stripeCustomPriceSyncListenerAdded = true;\n        let dfbStripeCustomSyncTimer = null;\n        $(document).on('input change', '.de_fb_gateway_stripe_form input[name^=\"de_fb_\"]:not([name=\"de_fb_payment_amount\"])', function() {\n            var __el = this;\n            clearTimeout(dfbStripeCustomSyncTimer);\n            dfbStripeCustomSyncTimer = setTimeout(function() {\n                try {\n                    let form = jQuery(__el).closest('form.de_fb_gateway_stripe_form');\n                    if (!form.length) { return; }\n                    if (!form.find('.de_fb_form_field_custom_price').length) { return; }\n\n                    let visibleAmt = 0;\n                    let hasVisibleAmt = false;\n                    try {\n                        let priceEl = form.find('#custom_price_wrapper .price').first();\n                        if (!priceEl.length) {\n                            priceEl = form.find('.plan-price .price').first();\n                        }\n                        if (priceEl.length) {\n                            visibleAmt = parseFloat((String(priceEl.text() || '')).replace(\/,\/g, '')) || 0;\n                            hasVisibleAmt = true;\n                        }\n                    } catch (e) { visibleAmt = 0; hasVisibleAmt = false; }\n                    if (!hasVisibleAmt || visibleAmt <= 0) { return; }\n\n                    let amtField = form.find('input[name=\"de_fb_payment_amount\"]').first();\n                    if (amtField.length) {\n                        amtField.val(visibleAmt.toFixed(2)).trigger('input').trigger('change');\n                    }\n\n                    try {\n                        if (typeof sessionStorage !== 'undefined') {\n                            let storageFormId = '';\n                            try {\n                                storageFormId = form.attr('id') || '';\n                                if (typeof storageFormId === 'string') {\n                                    if (storageFormId.indexOf('fb_form_') === 0) {\n                                        storageFormId = storageFormId.replace('fb_form_', '');\n                                    }\n                                }\n                            } catch (e) {}\n                            if (!storageFormId) {\n                                try { storageFormId = form.find('input[name=\"form_key\"]').val() || ''; } catch (e) {}\n                            }\n                            if (storageFormId) {\n                                try { sessionStorage.removeItem('dfb_stripe_skip_init_' + storageFormId); } catch (e) {}\n                            }\n                        }\n                    } catch (e) {}\n\n                    if (typeof window.createPaymentIntentOnGatewayClick === 'function') {\n                        window.createPaymentIntentOnGatewayClick();\n                    }\n                } catch (e) {}\n            }, 250);\n        });\n    }\n\n    jQuery(\"#fb_form_759-1\").submit(function(e){\n        e.preventDefault();\n        \n        $(this).find('.divi-form-submit').prop('disabled', true);\n        var required_check = true;\n        var form = jQuery(this);\n        let required_fields = $('.required',form);\n        var stripeEnabled = $(this).hasClass('de_fb_gateway_stripe_form');\n        let paymentField = $(this).find('input[name=\"de_fb_payment_amount\"]');\n        let paymentInput = $(this).find('input[name=\"custom_price\"]');\n        let paymentErrors = $(this).find('.payment-errors').length > 0;\n        var paymentEnabled = $(this).find('input[name=\"enable_payment\"]').val();\n        var showTc = $(this).find('input[name=\"show_tc\"]').val();\n        let stripeErrorMessages = {};\n        var default_required_message = \"This field is required.\";\n\n        $(this).find('.datepicker-field').each(function() {\n            var $field = $(this);\n            var isAcfField = $field.attr(\"acf-date\");\n            var selectedDate = $field.datepicker('getDate');\n            if (selectedDate) {\n                if (isAcfField == true) {\n                    var formatted = $.datepicker.formatDate('yymmdd', selectedDate);\n                    $field.val(formatted);\n                }\n            }\n        }); \n\n        if ( required_fields.length > 0 ) {\n            \n            $.each(required_fields, function (index, element) {\n                var $parent = $(this).closest('.et_pb_contact_field').parent();\n                $parent.find('.error').each(function() {\n                    var errId = $(this).attr('id');\n                    if (errId) { $parent.find('[aria-describedby=\"' + errId + '\"]').removeAttr('aria-describedby'); }\n                });\n                $parent.find('.error').remove();\n                if ( !$(this).closest('.de_fb_form_field').hasClass('condition-hide') ) {\n                    var field_type = $(this).closest('.et_pb_contact_field').data('type');\n                    \n                    if ( field_type == 'checkbox' || field_type == 'radio' ) {\n                        if ( jQuery(this).find('input:checked').length == 0 ) {\n                            required_check = false;\n                        }\n                    } else if ( field_type == 'file' || field_type == 'image' ) {\n                        var value_field_id = jQuery(this).find('input.upload_field').attr('id') + '_value';\n                        if ( jQuery(this).find('.files .template-upload').length == 0 ) {\n                            if ( jQuery(this).find('#' + value_field_id).val() == \"\") {\n                                required_check = false;\n                            }\n                        }\n                    } else {\n                        if ( jQuery(this).val() == '' ) {\n                            required_check = false;\n                        }\n                    }\n                    if ( !required_check ) {\n                        var required_message = $(this).attr('data-required_message') || default_required_message;\n                        var required_message_pos = $(this).attr('data-required_position') || 'bottom';\n                        var inputId = $(this).attr('id');\n                        var errorId = inputId ? inputId + '_error' : null;\n                        var errorAttrs = errorId ? ' id=\"' + errorId + '\" role=\"alert\" aria-live=\"polite\"' : '';\n                        if (errorId) { $(this).attr('aria-describedby', errorId); }\n                        if ( required_message_pos == 'top' ) {\n                            $(this).closest('.et_pb_contact_field').before('<p class=\"error\"' + errorAttrs + '>' + required_message + '<\/p>');\n                        } else {\n                            $(this).closest('.et_pb_contact_field').after('<p class=\"error\"' + errorAttrs + '>' + required_message + '<\/p>');\n                        }\n                    }\n                }\n                \n                \n            });\n        }\n        \n        if ( form.find('.bloom_subscribe').find('input[required]').length > 0 ) {\n            form.find('.bloom_subscribe').find('.error').remove();\n            if ( !form.find('.bloom_subscribe').find('input[required]').is(\":checked\") ) {\n                required_check = false;\n                var required_message = \"Please check the subscription box\";\n                var required_message_pos = \"bottom\";\n\n                if ( required_message_pos == 'top' ) {\n                    form.find('.bloom_subscribe').prepend('<p class=\"error\" role=\"alert\" aria-live=\"polite\"><span class=\"dfb-error-icon\" aria-hidden=\"true\">&#9888;<\/span> ' + required_message + '<\/p>');\n                } else {\n                    form.find('.bloom_subscribe').append('<p class=\"error\" role=\"alert\" aria-live=\"polite\"><span class=\"dfb-error-icon\" aria-hidden=\"true\">&#9888;<\/span> ' + required_message + '<\/p>');\n                }\n            }\n        }\n        \n        if ( !required_check ) {\n            $('html, body').animate({\n                scrollTop: form.offset().top - 10\n            }, 300);\n\n            form.find('.divi-form-submit').removeProp('disabled');\n            form.find('.divi-form-submit').removeAttr('disabled');\n        }\n\n        var validation_result = form.valid();\n\n        if ( !validation_result ) {\n            e.preventDefault();\n            let inputs_error= $('.input-field.error',form);\n            inputs_error.each(function (){\n                let input=$(this);\n                let parent=input.parent();\n                let label = $('label.error',parent).first();\n                let icon = $('.dfb_input_icon',parent).first();\n                if(icon.length){\n                    if(input.next().is(label)){\n                        label.detach().appendTo(parent.parent());\n                    }\n                }\n            });\n            $(this).find('.divi-form-submit').removeProp('disabled');\n            $(this).find('.divi-form-submit').removeAttr('disabled');\n            return false;\n        }\n\n        if (paymentField.hasClass('error')) {\n            e.preventDefault();\n            return false;\n        }\n\n                \/\/ Payment amount validation only when payment is enabled (e.g. register\/contact forms without payment must not be blocked).\n        if (paymentEnabled === 'on') {\n            let dfbPaymentAmount = 0;\n            try {\n                let v = parseFloat(paymentField.val()) || 0;\n                if (v > 0) { dfbPaymentAmount = v; }\n\n                if (dfbPaymentAmount <= 0) {\n                    let pv = 0;\n                    try { pv = parseFloat(paymentInput.val()) || 0; } catch (e) {}\n                    if (pv > 0) { dfbPaymentAmount = pv; }\n                }\n\n                if (dfbPaymentAmount <= 0) {\n                    let cardWrap = form.find('.card-wrap');\n                    if (!cardWrap.length) { cardWrap = $('.card-wrap').first(); }\n                    if (cardWrap.length) {\n                        let cw = parseFloat(cardWrap.data('payment-amount')) || 0;\n                        if (cw > 0) { dfbPaymentAmount = cw; }\n                    }\n                }\n\n                if (dfbPaymentAmount <= 0) {\n                    let fa = parseFloat(form.data('payment-amount')) || 0;\n                    if (fa > 0) { dfbPaymentAmount = fa; }\n                }\n\n                if (dfbPaymentAmount <= 0) {\n                    \/\/ Fallback: parse visible text (e.g. \"$19.00\", \"\u00a319.00\")\n                    let txt = '';\n                    try { txt = (form.find('.plan-price').first().text() || '').replace(\/,\/g, ''); } catch (e) {}\n                    let m = txt.match(\/-?\\d+(\\.\\d+)?\/);\n                    if (m) {\n                        if (m[0]) {\n                            let tv = parseFloat(m[0]) || 0;\n                            if (tv > 0) { dfbPaymentAmount = tv; }\n                        }\n                    }\n                }\n            } catch (e) {}\n\n            if (dfbPaymentAmount > 0) {\n                try { paymentField.val(dfbPaymentAmount.toFixed(2)); } catch (e) {}\n                try { paymentField.removeClass('input-error'); } catch (e) {}\n                try { form.find('.plan-price').find('.payment-error').remove(); } catch (e) {}\n            } else {\n                form.find('.plan-price').find('.payment-error').remove();\n                if(form.find('.plan-price .payment-error').length === 0){\n                    form.find('.plan-price').append('<div class=\"payment-error et_pb_contact_error_text\" role=\"alert\" aria-live=\"polite\"><span class=\"dfb-error-icon\" aria-hidden=\"true\">&#9888;<\/span> Please add a valid value for payment<\/div>');\n                }\n                required_check = false;\n                paymentField.addClass('input-error');\n                form.find('.divi-form-submit').removeProp('disabled');\n                form.find('.divi-form-submit').removeAttr('disabled');\n                try {\n                    let methodType = form.find('input[name=\"stripe_payment_method_type\"]').val() || '';\n                    if (methodType) {\n                        console.warn('[DFB Stripe] Invalid payment amount detected', {\n                            methodType: methodType,\n                            paymentField: paymentField.val(),\n                            custom_price: paymentInput.val ? paymentInput.val() : '',\n                            formPaymentAmount: form.data('payment-amount') || '',\n                            pi: form.find('input[name=\"payment_intent_id\"]').val() || ''\n                        });\n                    }\n                } catch (e) {}\n                try {\n                    var debugUrl = 'https:\/\/www.hispi.de\/wp-admin\/admin-ajax.php';\n                    if (typeof de_fb_obj !== 'undefined') {\n                        if (typeof de_fb_obj.ajax_url !== 'undefined') { debugUrl = de_fb_obj.ajax_url; }\n                    }\n                    var debugNonce = '407ba97a64';\n                    if (typeof de_fb_obj !== 'undefined') {\n                        if (typeof de_fb_obj.fb_nonce !== 'undefined') { debugNonce = de_fb_obj.fb_nonce; }\n                    }\n                    var methodType = form.find('input[name=\"stripe_payment_method_type\"]').val() || '';\n                    if (methodType) {\n                        jQuery.post(debugUrl, {\n                            action: 'de_fb_stripe_debug_log',\n                            fb_nonce: debugNonce,\n                            event: 'payment_amount_invalid',\n                            form_id: 0,\n                            method_type: methodType,\n                            error: 'payment_amount_invalid',\n                            intent_id: form.find('input[name=\"payment_intent_id\"]').val() || ''\n                        });\n                    }\n                } catch (e) {}\n                return false;\n            }\n        }\n\n        if(showTc){ \n            let activeTab = form.find(\".gateway-form:visible\");\n            let tcCheck = activeTab.find(\"input[type='checkbox']\");\n\n            form.find('.tcerror').remove();\n            if (!tcCheck.is(\":checked\")) {\n                tcCheck.closest(\".tc_wrap\").after('<p class=\"tcerror\">You must accept the Terms & Conditions.<\/p>');\n                form.find('.divi-form-submit').prop('disabled', false);\n                return false;\n            }\n            \n        }\n\n        if (stripeEnabled) {\n            form.find('.divi-form-submit').prop('disabled', true);\n\n            \/\/ Divi 4 legacy Stripe flow (old UI + tokenization).\n            \/\/ Uses Stripe.js v2-style API: Stripe.setPublishableKey + Stripe.card.createToken.\n            if (!window.dfbIsDivi5) {\n                e.preventDefault();\n\n                let cardWrap = form.find('#card-wrap').first();\n                if (!cardWrap.length) {\n                    cardWrap = form.find('.card-wrap').first();\n                }\n                if (!cardWrap.length) {\n                    cardWrap = jQuery('.card-wrap').first();\n                }\n\n                let stripeKey = cardWrap.data('publishable-key') || cardWrap.data('publishableKey') || cardWrap.attr('data-publishable-key');\n\n                const showLegacyError = (msg) => {\n                    try {\n                        const cardErrors = form.find('.card-errors').first();\n                        const paymentErrors = form.find('.payment-errors').first();\n                        if (cardErrors.length) {\n                            cardErrors.text(msg);\n                        }\n                        if (paymentErrors.length) {\n                            paymentErrors.html(msg);\n                        }\n                    } catch (e2) {}\n                    form.find('.divi-form-submit').prop('disabled', false);\n                };\n\n                if (!stripeKey) {\n                    showLegacyError('Stripe is not configured. Please check your settings.');\n                    return false;\n                }\n                if (typeof Stripe === 'undefined' || !Stripe.card || !Stripe.setPublishableKey) {\n                    showLegacyError('Payment system not ready. Please refresh and try again.');\n                    return false;\n                }\n\n                try { Stripe.setPublishableKey(stripeKey); } catch (e2) {}\n\n                const number = String(form.find('#card-number').val() || '').replace(\/\\s+\/g, '');\n                const expMonth = String((form.find('#card-exp-month').val() || form.find('#card-expiry-month').val()) || '').trim();\n                const expYearRaw = String((form.find('#card-exp-year').val() || form.find('#card-expiry-year').val()) || '').trim();\n                const cvc = String(form.find('#card-cvc').val() || '').trim();\n\n                if (!number || !expMonth || !expYearRaw || !cvc) {\n                    showLegacyError('Please complete your card details.');\n                    return false;\n                }\n\n                let expYear = expYearRaw;\n                if (\/^\\d{2}$\/.test(expYearRaw)) {\n                    expYear = '20' + expYearRaw;\n                }\n\n                Stripe.card.createToken(\n                    {\n                        number: number,\n                        exp_month: expMonth,\n                        exp_year: expYear,\n                        cvc: cvc,\n                    },\n                    function(status, response) {\n                        if (response && response.error) {\n                            showLegacyError(response.error.message || 'Payment details are invalid.');\n                            return;\n                        }\n                        if (!response || !response.id) {\n                            showLegacyError('Payment could not be processed. Please try again.');\n                            return;\n                        }\n\n                        form.find('input[name=\"stripeToken\"]').remove();\n                        form.find('input[name=\"stripePaymentMethodId\"]').remove();\n                        form.append(\"<input type='hidden' name='stripeToken' value='\" + response.id + \"'\/>\");\n\n                        if (form.find('.divi-form-submit').hasClass('de_fb_ajax_submit')) {\n                            de_fb_ajax_form_submit(form[0]);\n                        } else {\n                            form.find('.fb_nonce').remove();\n                            form.append('<input type=\"hidden\" name=\"fb_nonce\" class=\"fb_nonce\" value=\"407ba97a64\">');\n                            form.unbind('submit').submit();\n                        }\n                    }\n                );\n\n                return false;\n            }\n\n            let cardElementContainer = form.find('.card-element');\n            let stripe = cardElementContainer.data('stripe-instance');\n            let cardElement = cardElementContainer.data('stripe-card-element');\n            let paymentElement = cardElementContainer.data('stripe-payment-element');\n            let clientSecret = cardElementContainer.data('client-secret');\n            \n            \/\/ FIRST: Check if PaymentIntent ID is already in the form (most reliable source)\n            let existingPaymentIntentInput = form.find('input[name=\"payment_intent_id\"]');\n            let paymentIntentId = null;\n            if (existingPaymentIntentInput.length) {\n                if (existingPaymentIntentInput.val()) {\n                    paymentIntentId = existingPaymentIntentInput.val();\n                }\n            }\n            \n            \/\/ SECOND: Try multiple keys from cardElementContainer - jQuery converts kebab-case to camelCase\n            if (!paymentIntentId) {\n                paymentIntentId = cardElementContainer.data('payment-intent-id') || \n                                  cardElementContainer.data('paymentIntentId') ||\n                                  cardElementContainer.data('paymentIntent-id');\n                if (paymentIntentId) {\n                }\n            }\n            \n            \/\/ THIRD: Check form's data attribute (fallback)\n            if (!paymentIntentId) {\n                paymentIntentId = form.data('payment-intent-id') || \n                                 form.data('paymentIntentId') ||\n                                 form.data('paymentIntent-id');\n                if (paymentIntentId) {\n                }\n            }\n            \n            \n            \/\/ If PaymentIntent ID not found, check if we need to create one\n            \/\/ This can happen if amount was 0 on page load but is now > 0\n            if (!paymentIntentId) {\n                \/\/ Try sessionStorage first (prevents creating a second PI on fast submit \/ DOM re-render).\n                try {\n                    if (typeof sessionStorage !== 'undefined') {\n                        let storageFormId = '';\n                        try {\n                            storageFormId = form.attr('id') || '';\n                            if (typeof storageFormId === 'string') {\n                                if (storageFormId.indexOf('fb_form_') === 0) {\n                                    storageFormId = storageFormId.replace('fb_form_', '');\n                                }\n                            }\n                            if (!storageFormId) {\n                                try { storageFormId = form.find('input[name=\"form_key\"]').val() || ''; } catch (e) {}\n                                if (!storageFormId) { storageFormId = form.data('form-id') || ''; }\n                            }\n                        } catch (e) {}\n                        if (storageFormId) {\n                            let storedPi = sessionStorage.getItem('dfb_stripe_pi_' + storageFormId) || '';\n                            let storedAmt = sessionStorage.getItem('dfb_stripe_pi_amt_' + storageFormId) || '';\n                            let curAmt = 0;\n                            try { curAmt = parseFloat(form.find('input[name=\"de_fb_payment_amount\"]').first().val()) || 0; } catch (e) { curAmt = 0; }\n                            if (curAmt > 0 && storedPi) {\n                                let okToReuse = false;\n                                if (storedAmt) {\n                                    let sAmt = 0;\n                                    try { sAmt = parseFloat(storedAmt) || 0; } catch (e) { sAmt = 0; }\n                                    if (sAmt > 0) {\n                                        if (Math.abs(curAmt - sAmt) < 0.01) {\n                                            okToReuse = true;\n                                        }\n                                    }\n                                }\n                                if (okToReuse) {\n                                    paymentIntentId = storedPi;\n                                    cardElementContainer.data('payment-intent-id', paymentIntentId);\n                                    cardElementContainer.data('payment-intent-fetched', true);\n                                    form.data('payment-intent-id', paymentIntentId);\n                                    form.find('input[name=\"payment_intent_id\"]').remove();\n                                    form.append(\"<input type='hidden' name='payment_intent_id' value='\" + paymentIntentId + \"'\/>\");\n                                } else {\n                                    try {\n                                        sessionStorage.removeItem('dfb_stripe_pi_' + storageFormId);\n                                        sessionStorage.removeItem('dfb_stripe_pi_amt_' + storageFormId);\n                                        sessionStorage.removeItem('dfb_stripe_pi_token_' + storageFormId);\n                                    } catch (e) {}\n                                }\n                            } else if (storedPi && curAmt <= 0) {\n                                try {\n                                    sessionStorage.removeItem('dfb_stripe_pi_' + storageFormId);\n                                    sessionStorage.removeItem('dfb_stripe_pi_amt_' + storageFormId);\n                                    sessionStorage.removeItem('dfb_stripe_pi_token_' + storageFormId);\n                                } catch (e) {}\n                            }\n                        }\n                    }\n                } catch (e) {}\n                \n                \/\/ Get current amount from form - try multiple sources\n                let amountInput = form.find('input[name=\"de_fb_payment_amount\"]');\n                let currentAmount = 0;\n                if (amountInput.length) {\n                    currentAmount = parseFloat(amountInput.val()) || 0;\n                }\n                \n                \/\/ Also try card-wrap data attribute\n                if (currentAmount <= 0) {\n                    let cardWrap = form.find('.card-wrap');\n                    if (!cardWrap.length) {\n                        cardWrap = $('.card-wrap').first();\n                    }\n                    if (cardWrap.length) {\n                        currentAmount = parseFloat(cardWrap.data('payment-amount')) || 0;\n                    }\n                }\n\n                \/\/ For custom-price forms, trust the visible total (it can update before the hidden field updates).\n                try {\n                    if (form.find('.de_fb_form_field_custom_price').length) {\n                        let visibleAmt = 0;\n                        let hasVisibleAmt = false;\n                        try {\n                            let priceEl = form.find('#custom_price_wrapper .price').first();\n                            if (!priceEl.length) {\n                                priceEl = form.find('.plan-price .price').first();\n                            }\n                            if (priceEl.length) {\n                                visibleAmt = parseFloat((String(priceEl.text() || '')).replace(\/,\/g, '')) || 0;\n                                hasVisibleAmt = true;\n                            }\n                        } catch (e) { visibleAmt = 0; hasVisibleAmt = false; }\n                        if (hasVisibleAmt) {\n                            if (visibleAmt > 0) {\n                                currentAmount = visibleAmt;\n                                if (amountInput.length) {\n                                    amountInput.val(visibleAmt.toFixed(2)).trigger('input').trigger('change');\n                                }\n                            }\n                        }\n                    }\n                } catch (e) {}\n                \n                \n                \/\/ If amount > 0 and no PaymentIntent exists, create one now\n                if (currentAmount > 0) {\n                    \n                    \/\/ Get form ID\n                    let formId = form.data('form-id') || form.attr('id');\n                    if (typeof formId === 'string') {\n                        if (formId.indexOf('fb_form_') === 0) {\n                            formId = formId.replace('fb_form_', '');\n                        }\n                    }\n                    \n                    \/\/ Get currency\n                    let cardWrap = form.find('.card-wrap');\n                    if (!cardWrap.length) {\n                        cardWrap = $('.card-wrap').first();\n                    }\n                    let currency = cardWrap.length ? (cardWrap.data('payment-currency') || 'usd') : 'usd';\n                    let paymentMethodMode = cardWrap.length ? (cardWrap.data('stripe-payment-method-mode') || 'simple') : 'simple';\n                    \n                    \n                    \/\/ Mark as fetching to prevent duplicates\n                    cardElementContainer.data('payment-intent-fetching', true);\n                    \n                    \/\/ Create PaymentIntent synchronously (we need to wait for it)\n                    var ajaxUrl = \"https:\\\/\\\/www.hispi.de\\\/wp-admin\\\/admin-ajax.php\";\n                    if (typeof de_fb_obj !== 'undefined') {\n                        if (typeof de_fb_obj.ajax_url !== 'undefined') {\n                            ajaxUrl = de_fb_obj.ajax_url;\n                        }\n                    }\n                    var fbNonce = \"407ba97a64\";\n                    if (typeof de_fb_obj !== 'undefined') {\n                        if (typeof de_fb_obj.fb_nonce !== 'undefined') {\n                            fbNonce = de_fb_obj.fb_nonce;\n                        }\n                    }\n                    \n                    \/\/ Per-checkout token to prevent duplicate PI creation (server uses it for reuse\/idempotency).\n                    var piToken = '';\n                    try {\n                        if (typeof sessionStorage !== 'undefined') {\n                            var storageFormId = '';\n                            try {\n                                storageFormId = form.attr('id') || '';\n                                if (typeof storageFormId === 'string') {\n                                    if (storageFormId.indexOf('fb_form_') === 0) {\n                                        storageFormId = storageFormId.replace('fb_form_', '');\n                                    }\n                                }\n                                if (!storageFormId) {\n                                    try {\n                                        storageFormId = form.find('input[name=\"form_key\"]').val() || '';\n                                    } catch (e) {}\n                                    if (!storageFormId) {\n                                        storageFormId = formId || '';\n                                    }\n                                }\n                            } catch (e) {}\n                            if (storageFormId) {\n                                var tokenKey = 'dfb_stripe_pi_token_' + storageFormId;\n                                piToken = sessionStorage.getItem(tokenKey) || '';\n                                if (!piToken) {\n                                    if (window.crypto) {\n                                        if (typeof window.crypto.randomUUID === 'function') {\n                                            piToken = window.crypto.randomUUID();\n                                        }\n                                    }\n                                    if (!piToken) {\n                                        piToken = 'tok_' + String(Date.now()) + '_' + Math.random().toString(16).slice(2);\n                                    }\n                                    try { sessionStorage.setItem(tokenKey, piToken); } catch (e) {}\n                                }\n                            }\n                        }\n                    } catch (e) {}\n\n                    try {\n                        $.ajax({\n                            url: ajaxUrl,\n                            type: 'POST',\n                            dataType: 'json',\n                            async: false, \/\/ Synchronous - we need to wait\n                            data: {\n                                action: 'de_fb_create_stripe_payment_intent',\n                                fb_nonce: fbNonce,\n                                form_id: formId,\n                                pi_token: piToken,\n                                amount: currentAmount,\n                                currency: currency,\n                                payment_method_mode: paymentMethodMode\n                            },\n                            success: function(response) {\n                                cardElementContainer.data('payment-intent-fetching', false);\n                                if (response.success) {\n                                    if (response.data) {\n                                        if (response.data.payment_intent_id) {\n                                            paymentIntentId = response.data.payment_intent_id;\n                                            cardElementContainer.data('payment-intent-id', paymentIntentId);\n                                            cardElementContainer.data('payment-intent-fetched', true);\n                                            form.data('payment-intent-id', paymentIntentId);\n                                            form.find('input[name=\"payment_intent_id\"]').remove();\n                                            form.append(\"<input type='hidden' name='payment_intent_id' value='\" + paymentIntentId + \"'\/>\");\n                                        } else {\n\n                                        }\n                                    } else {\n\n                                    }\n                                } else {\n\n                                }\n                            },\n                            error: function(xhr, status, error) {\n                                cardElementContainer.data('payment-intent-fetching', false);\n\n                            }\n                        });\n                    } catch (e) {\n                        cardElementContainer.data('payment-intent-fetching', false);\n\n                    }\n                } else {\n                }\n            }\n            \n            \/\/ If not initialized, try to initialize now\n            if (!stripe || (!cardElement && !paymentElement)) {\n\n                if (typeof Stripe !== 'undefined' && typeof initializeStripeElements === 'function') {\n\n                    initializeStripeElements();\n                    \/\/ Re-check after initialization\n                    cardElementContainer = form.find('.card-element');\n                    stripe = cardElementContainer.data('stripe-instance');\n                    cardElement = cardElementContainer.data('stripe-card-element');\n                    paymentElement = cardElementContainer.data('stripe-payment-element');\n                    clientSecret = cardElementContainer.data('client-secret');\n                    \/\/ Try multiple keys - jQuery converts kebab-case to camelCase\n                    paymentIntentId = cardElementContainer.data('payment-intent-id') || \n                                      cardElementContainer.data('paymentIntentId') ||\n                                      cardElementContainer.data('paymentIntent-id');\n                }\n                \n                if (!stripe || (!cardElement && !paymentElement)) {\n                    let errorMsg = 'Stripe Elements not initialized. ';\n                    if (typeof Stripe === 'undefined') {\n                        errorMsg += 'Stripe.js is not loaded. ';\n                    }\n                    if (!cardElementContainer.length) {\n                        errorMsg += 'Card element container not found. ';\n                    }\n                    errorMsg += 'Please refresh the page.';\n                    form.find(\".payment-errors\").html(errorMsg);\n                    form.find('.divi-form-submit').prop('disabled', false);\n                    return false;\n                }\n            }\n\n            $.ajax({\n                url: 'https:\/\/www.hispi.de\/wp-admin\/admin-ajax.php',\n                type: \"POST\",\n                data: { action: \"get_stripe_error_messages\", fb_nonce: '407ba97a64' },\n                success: function (response) {\n                    stripeErrorMessages = response;\n                },\n                error: function () {\n                    console.error(\"Failed to load Stripe error messages.\");\n                }\n            });\n\n            \/\/ Check if using Payment Element or Card Element\n            if (paymentElement && clientSecret) {\n                \/\/ Payment Element flow - use the stored elements instance from initialization\n                let elements = cardElementContainer.data('stripe-elements');\n                \n                if (!elements) {\n                    form.find('.divi-form-submit').prop('disabled', false);\n                    return false;\n                }\n\n                \/\/ Ensure the PaymentIntent amount is up-to-date right before confirmPayment.\n                \/\/ This is critical for redirect\/wallet methods (Amazon Pay, Klarna, etc.) which use the PaymentIntent amount.\n                try {\n                    let currentAmount = 0;\n                    let amountInput = form.find('input[name=\"de_fb_payment_amount\"]');\n                    if (amountInput.length) {\n                        currentAmount = parseFloat(amountInput.val()) || 0;\n                    }\n\n                    \/\/ Fallbacks: recompute from other sources in case the hidden amount is stale (common with calculated totals).\n                    try {\n                        if (currentAmount <= 0) {\n                            let pv = 0;\n                            let paymentInput = form.find('input[name=\"custom_price\"]');\n                            if (paymentInput.length) {\n                                pv = parseFloat(paymentInput.val()) || 0;\n                            }\n                            if (pv > 0) { currentAmount = pv; }\n                        }\n                        if (currentAmount <= 0) {\n                            let cardWrap = form.find('.card-wrap');\n                            if (!cardWrap.length) { cardWrap = jQuery('.card-wrap').first(); }\n                            if (cardWrap.length) {\n                                let cw = parseFloat(cardWrap.data('payment-amount')) || 0;\n                                if (cw > 0) { currentAmount = cw; }\n                            }\n                        }\n                        if (currentAmount <= 0) {\n                            let fa = parseFloat(form.data('payment-amount')) || 0;\n                            if (fa > 0) { currentAmount = fa; }\n                        }\n                        if (currentAmount <= 0) {\n                            let txt = '';\n                            try { txt = (form.find('.plan-price').first().text() || '').replace(\/,\/g, ''); } catch (e) {}\n                            let m = txt.match(\/-?\\d+(\\.\\d+)?\/);\n                            if (m) {\n                                if (m[0]) {\n                                    let tv = parseFloat(m[0]) || 0;\n                                    if (tv > 0) { currentAmount = tv; }\n                                }\n                            }\n                        }\n                    } catch (e) {}\n\n                    \/\/ Keep the hidden field in sync so the server receives the correct amount too.\n                    try {\n                        if (currentAmount > 0) {\n                            if (amountInput.length) {\n                                amountInput.val(currentAmount.toFixed(2)).trigger('input').trigger('change');\n                            }\n                        }\n                    } catch (e) {}\n\n                    if (currentAmount > 0) {\n                        let existingPi = '';\n                        let piInput = form.find('input[name=\"payment_intent_id\"]');\n                        if (piInput.length) {\n                            if (piInput.val()) {\n                                existingPi = piInput.val();\n                            }\n                        }\n                        if (!existingPi) {\n                            if (paymentIntentId) {\n                                existingPi = paymentIntentId;\n                            }\n                        }\n\n                        if (existingPi) {\n                            let cardWrap = form.find('.card-wrap');\n                            if (!cardWrap.length) {\n                                cardWrap = $('.card-wrap').first();\n                            }\n                            let currency = cardWrap.length ? (cardWrap.data('payment-currency') || 'usd') : 'usd';\n                            let paymentMethodMode = cardWrap.length ? (cardWrap.data('stripe-payment-method-mode') || 'simple') : 'simple';\n\n                            let lastIntentAmount = parseFloat(cardElementContainer.data('payment-intent-amount')) || 0;\n                            let needsUpdate = false;\n                            if (lastIntentAmount <= 0) {\n                                needsUpdate = true;\n                            } else if (Math.abs(currentAmount - lastIntentAmount) >= 0.0001) {\n                                needsUpdate = true;\n                            }\n\n                            if (needsUpdate) {\n                                var ajaxUrl = 'https:\/\/www.hispi.de\/wp-admin\/admin-ajax.php';\n                                if (typeof de_fb_obj !== 'undefined') {\n                                    if (typeof de_fb_obj.ajax_url !== 'undefined') {\n                                        ajaxUrl = de_fb_obj.ajax_url;\n                                    }\n                                }\n                                var fbNonce = '407ba97a64';\n                                if (typeof de_fb_obj !== 'undefined') {\n                                    if (typeof de_fb_obj.fb_nonce !== 'undefined') {\n                                        fbNonce = de_fb_obj.fb_nonce;\n                                    }\n                                }\n\n                                \/\/ Per-checkout token to prevent duplicate PI creation (server uses it for reuse\/idempotency).\n                                var piToken = '';\n                                try {\n                                    if (typeof sessionStorage !== 'undefined') {\n                                        var storageFormId = '';\n                                        try {\n                                            storageFormId = form.attr('id') || '';\n                                            if (typeof storageFormId === 'string') {\n                                                if (storageFormId.indexOf('fb_form_') === 0) {\n                                                    storageFormId = storageFormId.replace('fb_form_', '');\n                                                }\n                                            }\n                                            if (!storageFormId) {\n                                                try {\n                                                    storageFormId = form.find('input[name=\"form_key\"]').val() || '';\n                                                } catch (e) {}\n                                                if (!storageFormId) {\n                                                    storageFormId = formId || '';\n                                                }\n                                            }\n                                        } catch (e) {}\n                                        if (storageFormId) {\n                                            var tokenKey = 'dfb_stripe_pi_token_' + storageFormId;\n                                            piToken = sessionStorage.getItem(tokenKey) || '';\n                                            if (!piToken) {\n                                                if (window.crypto) {\n                                                    if (typeof window.crypto.randomUUID === 'function') {\n                                                        piToken = window.crypto.randomUUID();\n                                                    }\n                                                }\n                                                if (!piToken) {\n                                                    piToken = 'tok_' + String(Date.now()) + '_' + Math.random().toString(16).slice(2);\n                                                }\n                                                try { sessionStorage.setItem(tokenKey, piToken); } catch (e) {}\n                                            }\n                                        }\n                                    }\n                                } catch (e) {}\n\n                                $.ajax({\n                                    url: ajaxUrl,\n                                    type: 'POST',\n                                    dataType: 'json',\n                                    async: false,\n                                    data: {\n                                        action: 'de_fb_create_stripe_payment_intent',\n                                        fb_nonce: fbNonce,\n                                        form_id: formId,\n                                        pi_token: piToken,\n                                        amount: currentAmount,\n                                        currency: currency,\n                                        payment_method_mode: paymentMethodMode,\n                                        payment_intent_id: existingPi\n                                    },\n                                    success: function(response) {\n                                        if (response) {\n                                            if (response.success) {\n                                                if (response.data) {\n                                                    if (response.data.payment_intent_id) {\n                                                        paymentIntentId = response.data.payment_intent_id;\n                                                        cardElementContainer.data('payment-intent-id', paymentIntentId);\n                                                        form.find('input[name=\"payment_intent_id\"]').remove();\n                                                        form.append(\"<input type='hidden' name='payment_intent_id' value='\" + paymentIntentId + \"'\/>\");\n                                                        cardElementContainer.data('payment-intent-amount', currentAmount);\n                                                    }\n                                                }\n                                            }\n                                        }\n                                    }\n                                });\n\n                                try {\n                                    if (elements) {\n                                        if (typeof elements.fetchUpdates === 'function') {\n                                            elements.fetchUpdates();\n                                        }\n                                    }\n                                } catch (e2) {}\n                            }\n                        }\n                    }\n                } catch (e1) {}\n\n                \/\/ PaymentIntent-only flow - confirm payment directly\n                stripe.confirmPayment({\n                    elements: elements,\n                    confirmParams: {\n                        return_url: window.location.href\n                    },\n                    redirect: 'if_required'\n                }).then(function(result) {\n                        if (result.error) {\n                            form.find(\"#card-errors\").text(result.error.message);\n                            form.find(\".payment-errors\").html(result.error.message);\n                            form.find('.divi-form-submit').prop('disabled', false);\n                            return false;\n                        }\n                        \n                        \/\/ Payment successful - add payment_intent_id to form\n                        if (result.paymentIntent && result.paymentIntent.id) {\n                            form.append(\"<input type='hidden' name='payment_intent_id' value='\" + result.paymentIntent.id + \"'\/>\");\n                            paymentIntentId = result.paymentIntent.id;\n                        } else if (paymentIntentId) {\n                            form.append(\"<input type='hidden' name='payment_intent_id' value='\" + paymentIntentId + \"'\/>\");\n                        }\n                        \n                        \/\/ If redirect was required, handle it\n                        if (result.paymentIntent && result.paymentIntent.status === 'requires_action') {\n                            return true;\n                        }\n                        \n                        \/\/ Clear cached PI\/token so a new checkout doesn't reuse a succeeded PaymentIntent.\n                        try {\n                            if (typeof sessionStorage !== 'undefined') {\n                                let storageFormId = '';\n                                try {\n                                    storageFormId = form.attr('id') || '';\n                                    if (typeof storageFormId === 'string') {\n                                        if (storageFormId.indexOf('fb_form_') === 0) {\n                                            storageFormId = storageFormId.replace('fb_form_', '');\n                                        }\n                                    }\n                                } catch (e) {}\n                                if (!storageFormId) {\n                                    try { storageFormId = form.find('input[name=\"form_key\"]').val() || ''; } catch (e) {}\n                                }\n                                if (storageFormId) {\n                                    \/\/ Avoid creating a new \"init\" PaymentIntent immediately after a successful payment.\n                                    \/\/ This prevents extra \"Incomplete\" entries in Stripe caused by post-submit resets.\n                                    try { sessionStorage.setItem('dfb_stripe_skip_init_' + storageFormId, String(Date.now())); } catch (e) {}\n                                    sessionStorage.removeItem('dfb_stripe_pi_' + storageFormId);\n                                    sessionStorage.removeItem('dfb_stripe_pi_token_' + storageFormId);\n                                    sessionStorage.removeItem('dfb_stripe_pi_amt_' + storageFormId);\n                                }\n                            }\n                        } catch (e) {}\n\n                        \/\/ Payment completed - proceed with form submission\n                        if ( ( ! paymentInput.length || ! paymentInput.hasClass('input-error') ) ) {\n                            if (form.find('.divi-form-submit').hasClass('de_fb_ajax_submit')) {\n                                e.preventDefault();\n                                let formElement = form[0];  \n                                if (formElement instanceof HTMLFormElement) {\n                                    de_fb_ajax_form_submit(formElement);\n                                } else {\n                                    console.error(\"Form is not a valid HTMLFormElement\");\n                                }\n                            } else {\n                                jQuery(\"#fb_form_759-1\").find('.fb_nonce').remove();\n                                jQuery(\"#fb_form_759-1\").append('<input type=\"hidden\" name=\"fb_nonce\" class=\"fb_nonce\" value=\"407ba97a64\">');\n                                form.unbind('submit').submit();\n                            }\n                        } else {\n                            form.find('.divi-form-submit').prop('disabled', false);\n                        }\n                    }).catch(function(error) {\n                        form.find(\"#card-errors\").text(error.message);\n                        form.find(\".payment-errors\").html(error.message);\n                        form.find('.divi-form-submit').prop('disabled', false);\n                    });\n            } else if (cardElement) {\n                \/\/ Card Element flow (backwards compatibility)\n                \n                \/\/ Re-check PaymentIntent ID from cardElementContainer data (in case it was updated)\n                if (!paymentIntentId) {\n                    \/\/ Try multiple keys - jQuery converts kebab-case to camelCase\n                    paymentIntentId = cardElementContainer.data('payment-intent-id') || \n                                      cardElementContainer.data('paymentIntentId') ||\n                                      cardElementContainer.data('paymentIntent-id');\n                }\n                \n                if (!window.dfbIsDivi5) {\n                    stripe.createToken(cardElement).then(function(result) {\n                        if (result.error) {\n                            let errorType = result.error.code;\n                            let errorMessage = stripeErrorMessages[errorType] || result.error.message;\n                            form.find(\"#card-errors\").text(errorMessage);\n                            form.find(\".payment-errors\").html(errorMessage);\n                            form.find('.divi-form-submit').prop('disabled', false);\n                            return false;\n                        }\n\n                        if (!result.token || !result.token.id) {\n                            let msg = 'Payment could not be processed. Please try again.';\n                            form.find(\"#card-errors\").text(msg);\n                            form.find(\".payment-errors\").html(msg);\n                            form.find('.divi-form-submit').prop('disabled', false);\n                            return false;\n                        }\n\n                        form.find('input[name=\"stripeToken\"]').remove();\n                        form.find('input[name=\"stripePaymentMethodId\"]').remove();\n                        form.append(\"<input type='hidden' name='stripeToken' value='\" + result.token.id + \"'\/>\");\n\n                        if ( ( ! paymentInput.length || ! paymentInput.hasClass('input-error') ) ) {\n                            if (form.find('.divi-form-submit').hasClass('de_fb_ajax_submit')) {\n                                e.preventDefault();\n                                let formElement = form[0];\n                                if (formElement instanceof HTMLFormElement) {\n                                    de_fb_ajax_form_submit(formElement);\n                                } else {\n                                    console.error(\"Form is not a valid HTMLFormElement\");\n                                }\n                            } else {\n                                jQuery(\"#fb_form_759-1\").find('.fb_nonce').remove();\n                                jQuery(\"#fb_form_759-1\").append('<input type=\"hidden\" name=\"fb_nonce\" class=\"fb_nonce\" value=\"407ba97a64\">');\n                                form.unbind('submit').submit();\n                            }\n                        } else {\n                            form.find('.divi-form-submit').prop('disabled', false);\n                        }\n                    }).catch(function(error) {\n                        form.find(\"#card-errors\").text(error.message);\n                        form.find(\".payment-errors\").html(error.message);\n                        form.find('.divi-form-submit').prop('disabled', false);\n                    });\n                } else {\n                    stripe.createPaymentMethod({\n                        type: 'card',\n                        card: cardElement,\n                    }).then(function(result) {\n                        if (result.error) {\n                            let errorType = result.error.code;\n                            let errorMessage = stripeErrorMessages[errorType] || result.error.message;\n                            form.find(\"#card-errors\").text(errorMessage);\n                            form.find(\".payment-errors\").html(errorMessage);\n                            form.find('.divi-form-submit').prop('disabled', false);\n                            return false;\n                        } else {\n                            form.append(\"<input type='hidden' name='stripePaymentMethodId' value='\" + result.paymentMethod.id + \"'\/>\");\n                            form.append(\"<input type='hidden' name='stripeToken' value='\" + result.paymentMethod.id + \"'\/>\");\n                            \n                            \/\/ Re-check PaymentIntent ID one more time before adding to form\n                            let finalPaymentIntentId = paymentIntentId || cardElementContainer.data('payment-intent-id');\n                            \n                            \/\/ Add PaymentIntent ID if it was created on page load (for simple mode with PaymentIntent)\n                            if (finalPaymentIntentId) {\n                                form.append(\"<input type='hidden' name='payment_intent_id' value='\" + finalPaymentIntentId + \"'\/>\");\n                            } else {\n\n                            }\n                            \n                            if ( ( ! paymentInput.length || ! paymentInput.hasClass('input-error') ) ) {\n                                if (form.find('.divi-form-submit').hasClass('de_fb_ajax_submit')) {\n                                    e.preventDefault();\n                                    let formElement = form[0];  \n                                    if (formElement instanceof HTMLFormElement) {\n                                        de_fb_ajax_form_submit(formElement);\n                                    } else {\n                                        console.error(\"Form is not a valid HTMLFormElement\");\n                                    }\n                                } else {\n                                    jQuery(\"#fb_form_759-1\").find('.fb_nonce').remove();\n                                    jQuery(\"#fb_form_759-1\").append('<input type=\"hidden\" name=\"fb_nonce\" class=\"fb_nonce\" value=\"407ba97a64\">');\n                                    form.unbind('submit').submit();\n                                }\n                            } else {\n                                form.find('.divi-form-submit').prop('disabled', false);\n                            }\n                        }\n                    }).catch(function(error) {\n                        form.find(\"#card-errors\").text(error.message);\n                        form.find(\".payment-errors\").html(error.message);\n                        form.find('.divi-form-submit').prop('disabled', false);\n                    });\n                }\n            } else {\n                \/\/ Neither Payment Element nor Card Element found\n                let errorMsg = 'Stripe Elements not initialized. Please refresh the page.';\n                form.find(\".payment-errors\").html(errorMsg);\n                form.find('.divi-form-submit').prop('disabled', false);\n                return false;\n            }\n\n        }\n\n                \/\/ Non-AJAX + AI trigger \"form-submit\": generate AI and do not submit traditional form.\n        var isAjaxSubmitButton = form.find('.divi-form-submit').hasClass('de_fb_ajax_submit');\n        var $aiFormInputForSubmit = form.find('[name=\"dfb_ai_form\"]').first();\n        var aiTriggerForSubmit = form.find('[name=\"form_ai_api_call_trigger\"]').first().val() || '';\n        if ( !isAjaxSubmitButton && $aiFormInputForSubmit.length && aiTriggerForSubmit === 'form-submit' ) {\n            var aiSettingsRaw = $aiFormInputForSubmit.attr('data-ai-settings') || '';\n            var aiIdsRaw = $aiFormInputForSubmit.attr('data-ai-fields-array') || '[]';\n            var aiSettingsForSubmit = null;\n            var aiIdsForSubmit = [];\n            var aiFieldValuesForSubmit = {};\n            var aiFieldTitlesForSubmit = {};\n            try {\n                aiSettingsForSubmit = JSON.parse(aiSettingsRaw);\n                aiIdsForSubmit = JSON.parse(aiIdsRaw);\n            } catch (err) {\n                aiSettingsForSubmit = null;\n                aiIdsForSubmit = [];\n            }\n            if (aiSettingsForSubmit && typeof window['dfb_send_ai_data_759-1'] === 'function') {\n                form.find('.ai_field').each(function() {\n                    var field = this;\n                    var fieldId = field.id || field.name || '';\n                    if (!fieldId) {\n                        return;\n                    }\n                    var fieldValue = '';\n                    if (field.tagName && field.tagName.toLowerCase() === 'select') {\n                        if (field.multiple) {\n                            fieldValue = [];\n                            for (var i = 0; i < field.options.length; i++) {\n                                if (field.options[i].selected) {\n                                    fieldValue.push(field.options[i].value);\n                                }\n                            }\n                        } else {\n                            fieldValue = field.options[field.selectedIndex] ? field.options[field.selectedIndex].value : '';\n                        }\n                    } else {\n                        var fieldType = field.type || '';\n                        if (fieldType === 'checkbox' || fieldType === 'radio') {\n                            fieldValue = field.checked ? (field.value || '') : '';\n                        } else {\n                            fieldValue = field.value || '';\n                        }\n                    }\n                    aiFieldValuesForSubmit[fieldId] = fieldValue;\n                    aiFieldTitlesForSubmit[fieldId] = jQuery(field).closest('.de_fb_form_field').find('input[name=\"field_title[]\"]').val() || '';\n                });\n\n                window['dfb_send_ai_data_759-1'](\n                    aiIdsForSubmit,\n                    aiSettingsForSubmit,\n                    aiFieldValuesForSubmit,\n                    aiFieldTitlesForSubmit\n                );\n                form.find('.divi-form-submit').prop('disabled', false).removeAttr('disabled');\n                return false;\n            }\n        }\n        if ( $(this).find('.signature-field').length > 0 ) {\n            $.each( $(this).find('.signature-field'), function(i) {\n                var field_id = $(this).find('input').attr('id');\n                $(\"#\" + field_id).val( fb_signature.signature_objs['signaturePad_' + field_id].toDataURL() );\n            });\n        }\n        if ( required_check ) {\n            if ( form.find('.file_preview_container .template-upload').length > 0 ) {\n                e.preventDefault();\n                $(this).addClass('submitting');\n                de_fb_ajax_files_upload( form );\n            } else {\n                if ( form.find('.calculate_field').length > 0 ) {\n                    $('.calculation').hide();\n                    $.each(form.find('.calculate_field'), function() {\n                        var calc_field_wrapper = $(this);\n                        var field_id = calc_field_wrapper.attr('id');\n                        field_id = field_id.replace('de_fb_', '').replace('_wrapper', '');\n                        var field_type = calc_field_wrapper.find('.et_pb_contact_field').attr('data-type');\n                        var check_values = 0;\n                        if ( field_type == 'checkbox' || field_type == 'radio' ) {\n                            $.each( calc_field_wrapper.find('input:checked'), function() {\n                                check_values =  check_values + parseFloat( $(this).attr('data-calc_value') );\n                            });\n                            calc_field_wrapper.append('<input type=\"hidden\" name=\"' + field_id + '_calc_value\" value=\"' + check_values + '\">');\n                        } else if ( field_type == 'select' ) {\n                            if ( calc_field_wrapper.find('select option:selected').length > 0 ) {\n                                check_values = parseFloat(calc_field_wrapper.find('select option:selected').attr('data-calc_value'));\n                            }\n                            calc_field_wrapper.append('<input type=\"hidden\" name=\"' + field_id + '_calc_value\" value=\"' + check_values + '\">');\n                        }  else {\n                            if ( calc_field_wrapper.find('input:not([type=\"hidden\"])').val() == '' ) {\n                                var calc_default_value = calc_field_wrapper.find('input:not([type=\"hidden\"])').attr('data-calc_default');\n                                calc_field_wrapper.append('<input type=\"hidden\" name=\"' + field_id + '_calc_value\" value=\"' + calc_default_value + '\">');\n                            }\n                        }\n\n                    });\n                }\n                \n                if ( form.find('.divi-form-submit').hasClass('de_fb_ajax_submit') ) {\n                    if ( paymentEnabled !== 'on' ) {\n                        $(this).addClass('submitting');\n                        de_fb_ajax_form_submit( form[0] );\n                        e.preventDefault();\n                    }\n                } else {\n                    \n                    if( paymentEnabled == 'off' || (paymentEnabled == 'on' && !stripeEnabled)){\n                        $(this).addClass('submitting');\n                        jQuery(\"#fb_form_759-1\").find('.fb_nonce').remove();\n                        jQuery(\"#fb_form_759-1\").append('<input type=\"hidden\" name=\"fb_nonce\" class=\"fb_nonce\" value=\"407ba97a64\">');\n                        if ( ( ! paymentInput.length || ! paymentInput.hasClass('input-error') ) ) {\n                            jQuery(\"#fb_form_759-1\").unbind('submit').submit();\n                        } else {\n                            form.find('.divi-form-submit').prop('disabled', false);\n                        }\n                    }\n                }\n            }\n        } else {\n            e.preventDefault();\n        }\n    });\n    });\n<\/script>\n        <\/div><\/form><script>\njQuery(document).ready(function($){\n    var $form = $('#fb_form_759-1');\n    if ($form.find('form').hasClass('multistep')) {\n        \/\/ Function to set form height based on active step\n        \/\/ This matches the setFormHeight function from multistep.js\n        function setFormHeightForForm() {\n            var $activeStep = $form.find('.df_form_step.active');\n            if ($activeStep.length > 0) {\n                $form.find('.divi-form-wrapper').css('height', $activeStep.outerHeight() + 'px');\n            }\n        }\n        \n        \/\/ Set height on load (with delay to ensure DOM is ready)\n        setTimeout(function() {\n            setFormHeightForForm();\n        }, 100);\n        \n        \/\/ Set height on window resize\n        jQuery(window).on('resize', function() {\n            setFormHeightForForm();\n        });\n        \n        \/\/ Set height when step changes (listen to custom event)\n        jQuery(document).on('dfbStepChanged', function() {\n            setTimeout(function() {\n                setFormHeightForForm();\n            }, 10);\n        });\n        \n        \/\/ Set height on textarea resize\n        $form.find('textarea').on('mousedown', function() {\n            var resizeInt = setInterval(function() {\n                setFormHeightForForm();\n            }, 1000\/15);\n            \n            var mouseUpHandler = function() {\n                clearInterval(resizeInt);\n                setFormHeightForForm();\n                jQuery(window).off('mouseup', mouseUpHandler);\n            };\n            \n            jQuery(window).on('mouseup', mouseUpHandler);\n        });\n        \n        \/\/ Also call global setFormHeight if it exists (from multistep.js)\n        if (typeof setFormHeight === 'function') {\n            setTimeout(function() {\n                setFormHeight();\n            }, 100);\n        }\n    }\n});\n<\/script>\n            <script>\njQuery(document).ready(function($) {\n    \/\/ Wait for jQuery validation plugin to be loaded\n    if (typeof $.validator === 'undefined') {\n        console.error('jQuery Validation plugin not loaded');\n        return;\n    }\n    \n    let old_url = jQuery.validator.methods.url;\n    \n    jQuery.validator.addMethod('url', function(value, element) {\n        if (old_url.call(this, value, element)) {\n            return true;\n        }\n        \n        if (value && !value.startsWith('http:\/\/') && !value.startsWith('https:\/\/')) {\n            return old_url.call(this, 'http:\/\/' + value, element);\n        }\n        \n        return false;\n    }, \"Please enter a valid URL\");\n\n    (function($){\n    var trim = function(s){ return (s || '').trim(); };\n    $.validator.methods.email = function (value, element) {\n        if (this.optional(element)) return true;\n        var v = trim(value);\n        return \/^[^\\s@]+@([^\\s@]+\\.)+[^\\s@]{2,}$\/.test(v);\n    };\n    })(jQuery);\n\n    $.validator.setDefaults({\n        highlight: function(element) {\n            $(element).addClass('input-error');\n            $(element).closest('.et_pb_contact_field').addClass('input-field-error');\n        },\n        unhighlight: function(element) {\n            $(element).removeClass('input-error');\n            $(element).removeAttr('aria-describedby');\n            $(element).closest('.et_pb_contact_field').removeClass('input-field-error');\n            $(element).closest('.et_pb_contact_field').find('label.error').remove();\n        }\n    });\n\n    $('#fb_form_759-1').validate({\n        normalizer: function(value) {\n            return $.trim(value);\n        },\n        errorPlacement: function(error, element) {\n            var fieldId = element.attr('id');\n            var errorId = fieldId ? fieldId + '_error' : null;\n            if (errorId) {\n                error.attr('id', errorId).attr('role', 'alert').attr('aria-live', 'polite');\n                element.attr('aria-describedby', errorId);\n            }\n            var message_position = element.attr('data-required_position');\n            if ( message_position == 'top' ) {\n                element.before(error);\n            } else {\n                element.after(error);\n            }\n        }\n    });\n\n    if ($('.de_fb_autocomplete').length > 0 && typeof init_autocomplete_fields == 'function') {\n        init_autocomplete_fields();\n    }\n});\n\nif ( window.history.replaceState ) {\n  window.history.replaceState( null, null, window.location.href );\n}\n\nif ( typeof form_grid_columns === 'function' ) {\n    form_grid_columns();\n}\n<\/script>\n        <\/div>\n<\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":693,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-759","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.hispi.de\/en\/wp-json\/wp\/v2\/pages\/759","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hispi.de\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.hispi.de\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.hispi.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hispi.de\/en\/wp-json\/wp\/v2\/comments?post=759"}],"version-history":[{"count":2,"href":"https:\/\/www.hispi.de\/en\/wp-json\/wp\/v2\/pages\/759\/revisions"}],"predecessor-version":[{"id":841,"href":"https:\/\/www.hispi.de\/en\/wp-json\/wp\/v2\/pages\/759\/revisions\/841"}],"up":[{"embeddable":true,"href":"https:\/\/www.hispi.de\/en\/wp-json\/wp\/v2\/pages\/693"}],"wp:attachment":[{"href":"https:\/\/www.hispi.de\/en\/wp-json\/wp\/v2\/media?parent=759"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}