{"id":761,"date":"2026-01-25T11:33:06","date_gmt":"2026-01-25T10:33:06","guid":{"rendered":"https:\/\/hispi.kundenexpose.de\/projets\/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\/fr\/projets\/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>Projet pilote pour le logement et le travail<\/h2>\n<p>Avec Hispi, House of Friends, un projet pilote destin\u00e9 aux personnes immigr\u00e9es a \u00e9t\u00e9 lanc\u00e9 en septembre 2024, avec pour objectif d\u2019atteindre un nouveau niveau d\u2019accompagnement et d\u2019int\u00e9gration.<\/p>\n<p>En cr\u00e9ant un environnement de vie, de travail et d\u2019apprentissage productif et s\u00e9curis\u00e9, une cohabitation diversifi\u00e9e sera encourag\u00e9e.<\/p>\n<p>Le projet HISPI, House of Friends valorise la diversit\u00e9 et promeut activement l\u2019int\u00e9gration.<\/p>\n<p>Il est mis en \u0153uvre en \u00e9troite collaboration entre la ville de D\u00fcsseldorf (LHD) en tant que commanditaire, \u00ab Hispi \u2013 Aide \u00e0 l\u2019int\u00e9gration linguistique \u00bb de la Sophia Akademie gGmbH, ainsi que diff\u00e9rents partenaires de coop\u00e9ration issus des secteurs de la restauration et de l\u2019h\u00f4tellerie.<\/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>Projet pilote international pour le logement et le travail<\/h3>\n<p>Un \u00e9tablissement de la ville de 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>Ce que nous proposons :<\/h2>\n<p>Pour 1 an avec possibilit\u00e9 de prolongation !<\/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>Logement &amp; apprentissage<\/b><br \/>\nVivre ensemble, se soutenir mutuellement et construire une communaut\u00e9.<br \/>\nApprendre la langue allemande : lire, \u00e9crire, parler\u2014pour la vie professionnelle quotidienne<br \/>\n\ud83c\udf7d <b>Travail<\/b><br \/>\nAcqu\u00e9rir une exp\u00e9rience pratique en cuisine, service, housekeeping et facility management.<br \/>\n\ud83e\udd1d <b>Accompagnement<\/b><br \/>\nAide pour le s\u00e9jour, la reconnaissance des documents et les perspectives d\u2019avenir<\/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>Vivre la communaut\u00e9<\/h3>\n<p>\ud83d\udc68\u200d\ud83c\udf73 Cuisiner ensemble &amp; \u00e9changer<br \/>\n\ud83d\udca1 Partager des exp\u00e9riences<br \/>\n\ud83d\udd0d Chercher des solutions<br \/>\n\u2696 Partager les responsabilit\u00e9s<\/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>Tes objectifs \u2013 Notre soutien<\/h3>\n<p>Que souhaites-tu atteindre ?<\/p>\n<ul>\n<li>Devenir autonome<\/li>\n<li>Trouver un emploi stable<\/li>\n<li>Gagner de l\u2019argent &amp; emm\u00e9nager dans son propre logement<\/li>\n<li>Se faire de nouveaux amis<\/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>Tu corresponds au projet<\/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\">besoins particuliers de protection<\/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\">\u00c2ge minimum : 18 ans<\/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\"> Aptitude au travail et \u00e0 l\u2019insertion professionnelle<\/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\"> connaissances de base de la langue allemande et volont\u00e9 de les d\u00e9velopper davantage<\/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\"> Int\u00e9r\u00eat \u00e0 vivre dans une chambre individuelle ou, si n\u00e9cessaire, \u00e0 deux<\/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\"> Capacit\u00e9 \u00e0 travailler en \u00e9quipe afin d\u2019organiser la vie en communaut\u00e9 ainsi que l\u2019entretien et la maintenance du logement avec les autres r\u00e9sident(e)s<\/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\">Disponibilit\u00e9 \u00e0 \u00eatre orient\u00e9(e) vers un emploi, de pr\u00e9f\u00e9rence dans les secteurs de la restauration et de l\u2019h\u00f4tellerie (service, housekeeping, cuisine, 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\"> la volont\u00e9 d\u2019\u00e9laborer un plan d\u2019objectifs sur environ un an et de poursuivre ces objectifs<\/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\"> accord pour des entretiens de suivi r\u00e9guliers<\/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>Si tu souhaites faire notre connaissance, envoie-nous ta candidature :<\/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_761-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=\"761-1\" data-form-id=\"761-1\" data-form-type=\"contact\" data-unique-id=\"de-form-builder\/form-0\" data-page-id=\"761\" 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\">Vorname<span class=\"de_fb_required\">*<\/span><\/label>                            <p class=\"et_pb_contact_field\" data-type=\"input\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"Vorname\"\/><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=\"Vorname\"   class=\"divi-form-builder-field input-field \" required value=\"\"  data-msg-required=\"Dieses Feld muss ausgef\u00fcllt werden.\" 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\">Nachname<span class=\"de_fb_required\">*<\/span><\/label>                            <p class=\"et_pb_contact_field\" data-type=\"input\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"Nachname\"\/><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=\"Nachname\"   class=\"divi-form-builder-field input-field \" required value=\"\"  data-msg-required=\"Dieses Feld muss ausgef\u00fcllt werden.\" 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\">Geschlecht<span class=\"de_fb_required\">*<\/span><\/label>                            <p class=\"et_pb_contact_field\" data-type=\"select\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"Geschlecht\"\/><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=\"Dieses Feld muss ausgef\u00fcllt werden.\" id=\"de_fb_geschlecht\" aria-required=\"true\">\n\t\t<option value=\"\" disabled selected>-- Bitte Ausw\u00e4hlen --<\/option>\n\t\t<option value=\"M\u00e4nnlich\" >M\u00e4nnlich<\/option><option value=\"Weiblich\" >Weiblich<\/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\">Stra\u00dfe &amp; Hausnummer<span class=\"de_fb_required\">*<\/span><\/label>                            <p class=\"et_pb_contact_field\" data-type=\"input\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"Stra\u00dfe &amp; Hausnummer\"\/><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=\"Dieses Feld muss ausgef\u00fcllt werden.\" 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\">PLZ<span class=\"de_fb_required\">*<\/span><\/label>                            <p class=\"et_pb_contact_field\" data-type=\"input\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"PLZ\"\/><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=\"Dieses Feld muss ausgef\u00fcllt werden.\" 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\">Stadt<span class=\"de_fb_required\">*<\/span><\/label>                            <p class=\"et_pb_contact_field\" data-type=\"input\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"Stadt\"\/><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=\"Dieses Feld muss ausgef\u00fcllt werden.\" 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\">Geburtstag<span class=\"de_fb_required\">*<\/span><\/label>                            <p class=\"et_pb_contact_field\" data-type=\"datepicker\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"Geburtstag\"\/><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=\"Dieses Feld muss ausgef\u00fcllt werden.\" 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_761-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_761-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\">Geburtsort<span class=\"de_fb_required\">*<\/span><\/label>                            <p class=\"et_pb_contact_field\" data-type=\"input\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"Geburtsort\"\/><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=\"Dieses Feld muss ausgef\u00fcllt werden.\" 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\">Geburtsland<span class=\"de_fb_required\">*<\/span><\/label>                            <p class=\"et_pb_contact_field\" data-type=\"input\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"Geburtsland\"\/><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=\"Dieses Feld muss ausgef\u00fcllt werden.\" 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\">E-Mailadresse<span class=\"de_fb_required\">*<\/span><\/label>                            <p class=\"et_pb_contact_field\" data-type=\"email\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"E-Mailadresse\"\/><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=\"Dieses Feld muss ausgef\u00fcllt werden.\" 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\">Telefon\/Handynummer<span class=\"de_fb_required\">*<\/span><\/label>                            <p class=\"et_pb_contact_field\" data-type=\"input\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"Telefon\/Handynummer\"\/><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=\"Dieses Feld muss ausgef\u00fcllt werden.\" 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\">Nationalit\u00e4t<span class=\"de_fb_required\">*<\/span><\/label>                            <p class=\"et_pb_contact_field\" data-type=\"input\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"Nationalit\u00e4t\"\/><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=\"Dieses Feld muss ausgef\u00fcllt werden.\" 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\">Wohnform<span class=\"de_fb_required\">*<\/span><\/label>                            <p class=\"et_pb_contact_field\" data-type=\"select\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"Wohnform\"\/><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=\"Dieses Feld muss ausgef\u00fcllt werden.\" id=\"de_fb_wohnform\" aria-required=\"true\">\n\t\t<option value=\"\" disabled selected>-- Bitte Ausw\u00e4hlen --<\/option>\n\t\t<option value=\"Asylbewerberheim\" >Asylbewerberheim<\/option><option value=\"Eigene Wohnung\" >Eigene Wohnung<\/option><option value=\"Jugendhilfe\" >Jugendhilfe<\/option><option value=\"Wohnungslos\" >Wohnungslos<\/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\">Familienstand<span class=\"de_fb_required\">*<\/span><\/label>                            <p class=\"et_pb_contact_field\" data-type=\"select\">\n                    <input type=\"hidden\" name=\"field_title[]\" value=\"Familienstand\"\/><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=\"Dieses Feld muss ausgef\u00fcllt werden.\" id=\"de_fb_familienstand\" aria-required=\"true\">\n\t\t<option value=\"\" disabled selected>-- Bitte Ausw\u00e4hlen --<\/option>\n\t\t<option value=\"ledig\" >ledig<\/option><option value=\"verheiratet\" >verheiratet<\/option><option value=\"geschieden\" >geschieden<\/option><option value=\"getrennt lebend\" >getrennt lebend<\/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\">Einreisedatum<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=\"Einreisedatum\"\/><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=\"Monat\/Jahr\"   class=\"divi-form-builder-field input-field \" required value=\"\"  data-msg-required=\"Dieses Feld muss ausgef\u00fcllt werden.\" 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\">Aufenthaltsstatus<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=\"Aufenthaltsstatus\"\/><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=\"Dieses Feld muss ausgef\u00fcllt werden.\" id=\"de_fb_aufenthaltsstatus\" aria-required=\"true\">\n\t\t<option value=\"\" disabled selected>-- Bitte Ausw\u00e4hlen --<\/option>\n\t\t<option value=\"Aufenthaltsgestattung\" >Aufenthaltsgestattung<\/option><option value=\"Duldung\" >Duldung<\/option><option value=\"Aufenthaltserlaubnis\" >Aufenthaltserlaubnis<\/option><option value=\"Niederlassungserlaubnis\" >Niederlassungserlaubnis<\/option><option value=\"Visum\" >Visum<\/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\">Ablaufdatum<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=\"Ablaufdatum\"\/><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=\"Monat\/Jahr\" value=\"\"  data-msg-required=\"Dieses Feld muss ausgef\u00fcllt werden.\" 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_761-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_761-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\">Arbeitserlaubnis<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=\"Arbeitserlaubnis\"\/><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=\"Dieses Feld muss ausgef\u00fcllt werden.\" id=\"de_fb_arbeitserlaubnis\" aria-required=\"true\">\n\t\t<option value=\"\" disabled selected>-- Bitte Ausw\u00e4hlen --<\/option>\n\t\t<option value=\"ohne Einschr\u00e4nkung\" >ohne Einschr\u00e4nkung<\/option><option value=\"mit Erlaubnis der ABH\" >mit Erlaubnis der ABH<\/option><option value=\"Arbeitsverbot (\u00a760b)\" >Arbeitsverbot (\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\">Wohnsitzauflage?<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=\"Wohnsitzauflage?\"\/><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=\"Dieses Feld muss ausgef\u00fcllt werden.\" id=\"de_fb_wohnsitzauflage?\" aria-required=\"true\">\n\t\t<option value=\"\" disabled selected>-- Bitte Ausw\u00e4hlen --<\/option>\n\t\t<option value=\"Ja\" >Ja<\/option><option value=\"Nein\" >Nein<\/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\">Anmerkung<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=\"Anmerkung\"\/><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=\"Dieses Feld muss ausgef\u00fcllt werden.\" 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\">Identit\u00e4t gekl\u00e4rt?<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=\"Identit\u00e4t gekl\u00e4rt?\"\/><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=\"Dieses Feld muss ausgef\u00fcllt werden.\" id=\"de_fb_identitaet\" aria-required=\"true\">\n\t\t\n\t\t<option value=\"Ja (ohne X im Ausweis)\" >Ja (ohne X im Ausweis)<\/option><option value=\"Nein (X im Ausweis)\" >Nein (X im Ausweis)<\/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=\"Was machst Du zur Zeit?\"\/><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=\"Dieses Feld muss ausgef\u00fcllt werden.\" id=\"de_fb_beruf\" aria-label=\"Was machst Du zur Zeit?\" aria-required=\"true\">\n\t\t\n\t\t<option value=\"Ausbildung\" >Ausbildung<\/option><option value=\"Job\" >Job<\/option><option value=\"Schule \/ Studium\" >Schule \/ Studium<\/option><option value=\"Integrationskurs\" >Integrationskurs<\/option><option value=\"Arbeitslos\" >Arbeitslos<\/option><option value=\"Sonstiges\" >Sonstiges<\/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=\"Muttersprache\"\/><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=\"Muttersprache *\"   class=\"divi-form-builder-field input-field \" required value=\"\"  data-msg-required=\"Dieses Feld muss ausgef\u00fcllt werden.\" data-required_position=\"bottom\" autocomplete=\"on\" aria-label=\"Muttersprache\" 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=\"Zweitsprache\"\/><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=\"Zweitsprache *\"   class=\"divi-form-builder-field input-field \" required value=\"\"  data-msg-required=\"Dieses Feld muss ausgef\u00fcllt werden.\" data-required_position=\"bottom\" autocomplete=\"on\" aria-label=\"Zweitsprache\" 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=\"Deutschkenntnisse\"\/><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=\"Dieses Feld muss ausgef\u00fcllt werden.\" id=\"de_fb_deutschkenntnisse\" aria-label=\"Deutschkenntnisse\" 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=\"Wir k\u00f6nnen im Interview Deutsch und Englisch sprechen. Brauchst du \u00dcbersetzung in eine andere Sprache?\"\/><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=\"Dieses Feld muss ausgef\u00fcllt werden.\" id=\"de_fb_interview\" aria-label=\"Wir k\u00f6nnen im Interview Deutsch und Englisch sprechen. Brauchst du \u00dcbersetzung in eine andere Sprache?\" aria-required=\"true\">\n\t\t<option value=\"\" disabled selected>-- Bitte Ausw\u00e4hlen --<\/option>\n\t\t<option value=\"Ja\" >Ja<\/option><option value=\"Nein\" >Nein<\/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=\"Warum willst du Teil dieses Projektes werden?\"\/><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=\"Warum willst du Teil dieses Projektes werden? *\" rows=\"8\"   data-msg-required=\"Dieses Feld muss ausgef\u00fcllt werden.\" data-required_position=\"bottom\" autocomplete=\"on\" aria-label=\"Warum willst du Teil dieses Projektes werden?\" 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=\"Ich bin mit der Verarbeitung meiner pers\u00f6nlichen Angaben einverstanden.\"\/><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=\"Dieses Feld muss ausgef\u00fcllt werden.\" 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=\"Ich bin mit der Verarbeitung meiner pers\u00f6nlichen Angaben einverstanden.\" data-id=\"Ich bin mit der Verarbeitung meiner pers\u00f6nlichen Angaben einverstanden.\" 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>Ich bin mit der Verarbeitung meiner pers\u00f6nlichen Angaben einverstanden.<\/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=\"761-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=\"761\" 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_761-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_761-1\").find('.fb_nonce').remove();\n                                jQuery(\"#fb_form_761-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_761-1\").find('.fb_nonce').remove();\n                                jQuery(\"#fb_form_761-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_761-1\").find('.fb_nonce').remove();\n                                    jQuery(\"#fb_form_761-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_761-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_761-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_761-1\").find('.fb_nonce').remove();\n                        jQuery(\"#fb_form_761-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_761-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_761-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_761-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":696,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-761","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.hispi.de\/fr\/wp-json\/wp\/v2\/pages\/761","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hispi.de\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.hispi.de\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.hispi.de\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hispi.de\/fr\/wp-json\/wp\/v2\/comments?post=761"}],"version-history":[{"count":4,"href":"https:\/\/www.hispi.de\/fr\/wp-json\/wp\/v2\/pages\/761\/revisions"}],"predecessor-version":[{"id":842,"href":"https:\/\/www.hispi.de\/fr\/wp-json\/wp\/v2\/pages\/761\/revisions\/842"}],"up":[{"embeddable":true,"href":"https:\/\/www.hispi.de\/fr\/wp-json\/wp\/v2\/pages\/696"}],"wp:attachment":[{"href":"https:\/\/www.hispi.de\/fr\/wp-json\/wp\/v2\/media?parent=761"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}