{"version":3,"file":"ultimateversion.IxS3oJUa.mjs","names":["useMemo","useState","useRef","_Fragment","isValid","currentValue"],"sources":["https:/framerusercontent.com/modules/pEjFVux1ROWF8RiG2xpJ/EC1VKcuieaS94qiWjmbV/ultimateversion.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useState,useEffect,useRef,useMemo}from\"react\";import{addPropertyControls,ControlType}from\"framer\";// Added for Framer property controls\n// ============= DEBUGGING UTILITIES =============\nconst DEBUG=false// Set to false to disable all debug\n;const DEBUG_NO_REDIRECT=false// Set to true to prevent redirect after submission (for debugging)\n;const DEBUG_SHOW_UTM_PANEL=false//\n;const debugLogger={colors:{flow:\"#9333ea\",answer:\"#0ea5e9\",navigation:\"#10b981\",submission:\"#f59e0b\",ids:\"#ef4444\",tracking:\"#8b5cf6\",error:\"#dc2626\"},log(category,title,data){if(!DEBUG)return;const color=this.colors[category]||\"#6b7280\";const timestamp=new Date().toLocaleTimeString(\"de-DE\");console.groupCollapsed(`%c[${timestamp}] ${category.toUpperCase()}: ${title}`,`color: ${color}; font-weight: bold; font-size: 12px;`);if(data){console.log(\"%cData:\",\"font-weight: bold;\",data);}console.trace(\"Stack trace\");console.groupEnd();},// Specialized logging methods\nlogFlow(message,flowData){this.log(\"flow\",message,flowData);},logAnswer(questionId,value,allAnswers){this.log(\"answer\",`Answer Updated: ${questionId}`,{questionId,newValue:value,allAnswers:allAnswers});},logNavigation(from,to,direction){this.log(\"navigation\",`Step ${from} → ${direction} → Step ${to}`,{fromStep:from,toStep:to,direction:direction});},logSubmission(submissionData){this.log(\"submission\",\"Form Submitted\",{...submissionData,timestamp:new Date().toISOString()});},logIdMappings(mappings){if(!DEBUG)return;console.groupCollapsed(`%c[ID MAPPINGS] All ID Conversions`,`color: ${this.colors.ids}; font-weight: bold; font-size: 13px;`);Object.entries(mappings).forEach(([key,value])=>{console.log(`%c${key}:`,\"font-weight: bold; color: #374151;\",value);});console.groupEnd();},logError(context,error){this.log(\"error\",`Error in ${context}`,{error:error.message,stack:error.stack});}};// Helper functions for debug logging - get human-readable names\nconst getTypeName=typeId=>{const typeMap={0:\"Not specified\",1:\"Complete Roof / New Build\",2:\"Insulation\",3:\"New Windows\",4:\"Dormers\",5:\"Gutters\",6:\"Repair\"};return typeMap[typeId]||\"Unknown\";};const getPropertyName=propertyId=>{const propertyMap={0:\"Not specified\",1:\"Flat Roof\",2:\"Gable Roof\",3:\"Hip Roof\"};return propertyMap[propertyId]||\"Unknown\";};const getTaskName=taskId=>{const taskMap={4:\"New Dormer Windows\",8:\"Replacing Existing Windows\",9:\"Replacing Existing Dormer Window\",13:\"Replacing Individual Roof Tiles\",14:\"Eliminate Leaks\",15:\"New Roof Windows\",16:\"Roof Insulation\",17:\"New Roof Gutter\",18:\"PV System\"};return taskMap[taskId]||`Task ${taskId}`;};const getTimeName=timeId=>{const timeMap={1:\"As soon as possible\",2:\"In 1-3 months\",3:\"Later / flexible\"};return timeMap[timeId]||\"Not specified\";};// Helper to read URL parameters for skipping questions\nconst getSkipParamsFromURL=()=>{if(typeof window===\"undefined\")return{skipService:false,skipRoofType:false,serviceValue:null,roofTypeValue:null};const urlParams=new URLSearchParams(window.location.search);return{skipService:urlParams.get(\"skipService\")===\"true\",skipRoofType:urlParams.get(\"skipRoofType\")===\"true\",serviceValue:urlParams.get(\"serviceValue\"),roofTypeValue:urlParams.get(\"roofTypeValue\")};};// Utility function to get the base domain\n// Utility function to get the base domain\nconst getBaseDomain=()=>{if(typeof window===\"undefined\")return\"\"// Empty fallback for SSR\n;const hostname=window.location.hostname;// Return the actual domain (works for localhost, staging, and production)\nreturn hostname;};// Get the base URL with protocol\nconst getBaseUrl=()=>{if(typeof window===\"undefined\")return\"\";const protocol=window.location.protocol;const hostname=window.location.hostname;return`${protocol}//${hostname}`;};// Move questionTitles outside the component\nconst questionTitles={service:\"Wof\\xfcr interessieren Sie sich?\",houseSize:\"Wie gro\\xdf ist Ihr Haus ungef\\xe4hr?\",roofType:\"Welche Dachform hat Ihr Haus?\",windows:\"Sollen Dachfenster bei der Einsch\\xe4tzung ber\\xfccksichtigt werden?\",windowCount:\"Wie viele Fenster?\",dormer:\"Kommt der Einbau einer Gaube f\\xfcr Sie grunds\\xe4tzlich in Frage?\",insulation:\"W\\xe4re eine bessere Dachd\\xe4mmung f\\xfcr Sie grunds\\xe4tzlich ein Thema?\",solar:\"K\\xf6nnte eine Photovoltaik-Anlage auf Ihrem Dach interessant sein?\",flachdachInsulation:\"W\\xe4re eine bessere Dachd\\xe4mmung f\\xfcr Sie grunds\\xe4tzlich ein Thema?\",flachdachSolar:\"K\\xf6nnte eine Photovoltaik-Anlage auf Ihrem Dach interessant sein?\",timeline:\"Wann w\\xe4re f\\xfcr Sie ein geeigneter Zeitpunkt f\\xfcr eine m\\xf6gliche Sanierung oder \\xdcberpr\\xfcfung?\",role:\"In welcher Rolle handeln Sie?\",address:\"Geben Sie Ihre Postleitzahl oder Stadt ein\",firmenname:\"Wie lautet Ihr Firmenname?\",ansprechpartner:\"Wer ist Ihr Ansprechpartner?\",name:\"Wie lautet Ihr Name f\\xfcr die R\\xfcckmeldung?\",email:\"Wohin d\\xfcrfen wir das Ergebnis senden?\",phone:\"Telefonnummer f\\xfcr R\\xfcckfragen\"};// Add this after your questionTitles definition\nconst questionStepNumbers={service:1,roofType:2,houseSize:3,windows:4,windowCount:5,dormer:6,insulation:7,solar:8,flachdachInsulation:7,flachdachSolar:8,timeline:9,role:10,address:11,firmenname:12,ansprechpartner:13,name:12,email:14,phone:15};// Move questionUrls outside the component\nconst questionUrls={service:\"schritt-1-interessenbereich\",houseSize:\"schritt-2-hausgroesse\",roofType:\"schritt-3-dachform\",windows:\"schritt-5-dachfenster\",windowCount:\"schritt-5b-fensteranzahl\",dormer:\"schritt-6-gaube\",insulation:\"schritt-7-daemmung\",flachdachInsulation:\"schritt-7-daemmung-flachdach\",flachdachSolar:\"schritt-8-photovoltaik-flachdach\",solar:\"schritt-8-photovoltaik\",timeline:\"schritt-9-zeitrahmen\",role:\"schritt-10-rolle\",address:\"schritt-11-adresse\",firmenname:\"schritt-12-firmenname\",ansprechpartner:\"schritt-12b-ansprechpartner\",name:\"schritt-12-name\",email:\"schritt-13-email\",phone:\"schritt-14-telefon\"};// Questions where navigation buttons should be hidden\nconst questionsWithHiddenNavigation=[// Add question IDs here where you want to hide buttons\n// Example: 'roofType', 'flachdachService', etc.\n\"service\"];// Move urlToQuestion outside the component\nconst urlToQuestion=Object.fromEntries(Object.entries(questionUrls).map(([k,v])=>[v,k]));// Define copy variants\nconst copyVariants={low:{service:{question:\"Wof\\xfcr interessieren Sie sich?\",subtitle:null,options:[{value:\"dachsanierung\",label:\"Dachsanierung\"},{value:\"neuer_dachbau\",label:\"Dach-Neubau\"},{value:\"dach_daemmen\",label:\"Dach d\\xe4mmen\"},{value:\"dachfenster_gauben\",label:\"Dachfenster / Gauben\"},{value:\"reparatur\",label:\"Reparatur / undichte Stellen\"},{value:\"noch_nicht_sicher\",label:\"Ich bin mir noch nicht sicher\"}]},houseSize:{question:\"Was ist die Dachfl\\xe4che Ihres Hauses?\",subtitle:null,options:[{value:75,label:\"Unter 100 m\\xb2\"},{value:150,label:\"100–200 m\\xb2\"},{value:250,label:\"\\xdcber 200 m\\xb2\"}]},roofType:{question:\"Welche Dachform hat Ihr Haus?\",subtitle:null,options:[{value:\"satteldach\",label:\"Satteldach\"},{value:\"flachdach\",label:\"Flachdach\"},{value:\"walmdach\",label:\"Walmdach\"},{value:\"sonstige\",label:\"Sonstige\"}]},windows:{question:\"Sollen Dachfenster bei der Einsch\\xe4tzung ber\\xfccksichtigt werden?\",subtitle:null,options:[{value:\"austausch\",label:\"Ja, Austausch\",description:\"(1zu1 Tausch)\"},{value:\"neueinbau\",label:\"Ja, Neueinbau\",description:\"(inkl. Dachausschnitt)\"},{value:\"nein_keine_gewollt\",label:\"Nein, keine gew\\xfcnscht\"}]},windowCount:{question:\"Wie viele Fenster?\",subtitle:null,options:[{value:\"1\",label:\"1\"},{value:\"2_4\",label:\"2–4\"},{value:\"4_plus\",label:\"4+\"}]},dormer:{question:\"Kommt der Einbau einer Gaube f\\xfcr Sie grunds\\xe4tzlich in Frage?\",subtitle:null,options:[{value:\"ja\",label:\"Ja\"},{value:\"nein\",label:\"Nein\"},{value:\"noch_nicht_sicher\",label:\"Noch nicht sicher\"}]},insulation:{question:\"W\\xe4re eine bessere Dachd\\xe4mmung f\\xfcr Sie grunds\\xe4tzlich ein Thema?\",subtitle:\"Eine gute D\\xe4mmung senkt Heizkosten und steigert den Wohnkomfort\",options:[{value:\"ja\",label:\"Ja\"},{value:\"nein\",label:\"Nein\"},{value:\"noch_nicht_sicher\",label:\"Noch nicht sicher\"}]},solar:{question:\"K\\xf6nnte eine Photovoltaik-Anlage auf Ihrem Dach interessant sein?\",subtitle:\"Solarenergie f\\xfcr umweltfreundliche Energiegewinnung\",options:[{value:\"ja\",label:\"Ja\"},{value:\"nein\",label:\"Nein\"},{value:\"noch_nicht_sicher\",label:\"Noch nicht sicher\"}]},flachdachInsulation:{question:\"W\\xe4re eine bessere Dachd\\xe4mmung f\\xfcr Sie grunds\\xe4tzlich ein Thema?\",subtitle:\"Eine gute D\\xe4mmung senkt Heizkosten und steigert den Wohnkomfort\",options:[{value:\"ja\",label:\"Ja\"},{value:\"nein\",label:\"Nein\"},{value:\"noch_nicht_sicher\",label:\"Noch nicht sicher\"}]},flachdachSolar:{question:\"K\\xf6nnte eine Photovoltaik-Anlage auf Ihrem Dach interessant sein?\",subtitle:\"Solarenergie f\\xfcr umweltfreundliche Energiegewinnung\",options:[{value:\"ja\",label:\"Ja\"},{value:\"nein\",label:\"Nein\"},{value:\"noch_nicht_sicher\",label:\"Noch nicht sicher\"}]},timeline:{question:\"Wann w\\xe4re f\\xfcr Sie ein geeigneter Zeitpunkt f\\xfcr eine m\\xf6gliche Sanierung oder \\xdcberpr\\xfcfung?\",subtitle:\"Fr\\xfchere Termine erhalten Priorit\\xe4t in der Planung\",options:[{value:1,label:\"So schnell wie m\\xf6glich\"},{value:2,label:\"In 1–3 Monaten\"},{value:3,label:\"Sp\\xe4ter / flexibel\"}]},role:{question:\"In welcher Rolle handeln Sie?\",subtitle:\"F\\xfcr die richtige Zuordnung von Ansprechpartnern & Infos\",options:[{value:\"eigentuemer\",label:\"Hauseigent\\xfcmer\"},{value:\"mieter\",label:\"Mieter\"},{value:\"hausverwaltung\",label:\"Unternehmen\"}]},address:{question:\"Wo befindet sich das Haus?\",subtitle:\"So pr\\xfcfen wir, ob unser Service in Ihrer Region verf\\xfcgbar ist\",placeholder:\"PLZ oder Stadt eingeben\"},firmenname:{question:\"Wie lautet Ihr Firmenname?\",subtitle:\"F\\xfcr eine pers\\xf6nliche, unverbindliche R\\xfcckmeldung\",placeholder:\"Musterfirma GmbH\"},ansprechpartner:{question:\"Wer ist Ihr Ansprechpartner?\",subtitle:\"Name der Kontaktperson in Ihrem Unternehmen\",fields:[{id:\"vorname\",placeholder:\"Vorname\",label:\"Vorname\"},{id:\"nachname\",placeholder:\"Nachname\",label:\"Nachname\"}]},name:{question:\"Wie lautet Ihr Name f\\xfcr die R\\xfcckmeldung?\",subtitle:\"F\\xfcr eine pers\\xf6nliche, unverbindliche R\\xfcckmeldung\",fields:[{id:\"vorname\",placeholder:\"Vorname\",label:\"Vorname\"},{id:\"nachname\",placeholder:\"Nachname\",label:\"Nachname\"}]},email:{question:\"Wohin d\\xfcrfen wir das Ergebnis senden?\",subtitle:\"Ihre Email Adresse f\\xfcr den Versand des Ergebnisses\",placeholder:\"ihre.email@beispiel.de\"},phone:{question:\"Ihre Telefonnummer f\\xfcr R\\xfcckfragen\",subtitle:\"Damit wir Sie bei Bedarf kontaktieren k\\xf6nnen\",placeholder:\"Telefonnummer eingeben\"}},high:{service:{question:\"Wof\\xfcr interessieren Sie sich?\",subtitle:null,options:[{value:\"dachsanierung\",label:\"Dachsanierung\"},{value:\"neuer_dachbau\",label:\"Dach-Neubau\"},{value:\"dach_daemmen\",label:\"Dach d\\xe4mmen\"},{value:\"dachfenster_gauben\",label:\"Dachfenster / Gauben\"},{value:\"reparatur\",label:\"Reparatur / undichte Stellen\"},{value:\"noch_nicht_sicher\",label:\"Ich bin mir noch nicht sicher\"}]},houseSize:{question:\"Was ist die Dachfl\\xe4che Ihres Hauses?\",subtitle:null,options:[{value:75,label:\"Unter 100 m\\xb2\"},{value:150,label:\"100–200 m\\xb2\"},{value:250,label:\"\\xdcber 200 m\\xb2\"}]},roofType:{question:\"Welche Dachform hat Ihr Haus?\",subtitle:null,options:[{value:\"satteldach\",label:\"Satteldach\"},{value:\"flachdach\",label:\"Flachdach\"},{value:\"walmdach\",label:\"Walmdach\"},{value:\"sonstige\",label:\"Sonstige\"}]},windows:{question:\"Wollen Sie neue Dachfenster verbauen?\",subtitle:null,options:[{value:\"austausch\",label:\"Ja, Austausch\",description:\"(1zu1 Tausch)\"},{value:\"neueinbau\",label:\"Ja, Neueinbau\",description:\"(inkl. Dachausschnitt)\"},{value:\"nein_keine_gewollt\",label:\"Nein, keine gew\\xfcnscht\"}]},windowCount:{question:\"Wie viele Fenster?\",subtitle:null,options:[{value:\"1\",label:\"1\"},{value:\"2_4\",label:\"2–4\"},{value:\"4_plus\",label:\"4+\"}]},dormer:{question:\"M\\xf6chten Sie eine Gaube einbauen?\",subtitle:null,options:[{value:\"ja\",label:\"Ja\"},{value:\"nein\",label:\"Nein\"},{value:\"noch_nicht_sicher\",label:\"Noch nicht sicher\"}]},insulation:{question:\"Interessieren Sie sich f\\xfcr eine Dachd\\xe4mmung?\",subtitle:\"Eine gute D\\xe4mmung senkt Heizkosten und steigert den Wohnkomfort\",options:[{value:\"ja\",label:\"Ja\"},{value:\"nein\",label:\"Nein\"},{value:\"noch_nicht_sicher\",label:\"Noch nicht sicher\"}]},solar:{question:\"Kommt eine Photovoltaik-Anlage in Frage?\",subtitle:\"Solarenergie f\\xfcr umweltfreundliche Energiegewinnung\",options:[{value:\"ja\",label:\"Ja\"},{value:\"nein\",label:\"Nein\"},{value:\"noch_nicht_sicher\",label:\"Noch nicht sicher\"}]},flachdachInsulation:{question:\"W\\xe4re eine bessere Dachd\\xe4mmung f\\xfcr Sie grunds\\xe4tzlich ein Thema?\",subtitle:\"Eine gute D\\xe4mmung senkt Heizkosten und steigert den Wohnkomfort\",options:[{value:\"ja\",label:\"Ja\"},{value:\"nein\",label:\"Nein\"},{value:\"noch_nicht_sicher\",label:\"Noch nicht sicher\"}]},flachdachSolar:{question:\"K\\xf6nnte eine Photovoltaik-Anlage auf Ihrem Dach interessant sein?\",subtitle:\"Solarenergie f\\xfcr umweltfreundliche Energiegewinnung\",options:[{value:\"ja\",label:\"Ja\"},{value:\"nein\",label:\"Nein\"},{value:\"noch_nicht_sicher\",label:\"Noch nicht sicher\"}]},timeline:{question:\"Wann m\\xf6chten Sie Ihr Projekt umsetzen?\",subtitle:\"Fr\\xfchere Termine erhalten Priorit\\xe4t in der Planung\",options:[{value:1,label:\"So schnell wie m\\xf6glich\"},{value:2,label:\"In 1–3 Monaten\"},{value:3,label:\"Sp\\xe4ter / flexibel\"}]},role:{question:\"In welcher Rolle handeln Sie?\",subtitle:\"Dies hilft uns bei der passenden Angebotserstellung\",options:[{value:\"eigentuemer\",label:\"Hauseigent\\xfcmer\"},{value:\"mieter\",label:\"Mieter\"},{value:\"hausverwaltung\",label:\"Unternehmen\"}]},address:{question:\"Wo befindet sich das Haus?\",subtitle:\"So pr\\xfcfen wir, ob unser Service in Ihrer Region verf\\xfcgbar ist\",placeholder:\"PLZ oder Stadt eingeben\"},firmenname:{question:\"Wie lautet Ihr Firmenname?\",subtitle:\"F\\xfcr eine pers\\xf6nliche, unverbindliche R\\xfcckmeldung\",placeholder:\"Musterfirma GmbH\"},ansprechpartner:{question:\"Wer ist Ihr Ansprechpartner?\",subtitle:\"Name der Kontaktperson in Ihrem Unternehmen\",fields:[{id:\"vorname\",placeholder:\"Vorname\",label:\"Vorname\"},{id:\"nachname\",placeholder:\"Nachname\",label:\"Nachname\"}]},name:{question:\"An wen soll das Angebot gerichtet werden?\",subtitle:\"F\\xfcr die pers\\xf6nliche Angebotserstellung\",fields:[{id:\"vorname\",placeholder:\"Vorname\",label:\"Vorname\"},{id:\"nachname\",placeholder:\"Nachname\",label:\"Nachname\"}]},email:{question:\"Wohin senden wir Ihr kostenloses Angebot?\",subtitle:\"Ihre E-Mail-Adresse f\\xfcr den Versand des Angebots\",placeholder:\"ihre.email@beispiel.de\"},phone:{question:\"Ihre Telefonnummer f\\xfcr R\\xfcckfragen\",subtitle:\"Damit wir Sie bei Bedarf kontaktieren k\\xf6nnen\",placeholder:\"Telefonnummer eingeben\"}}};// Build questions object based on copy variant\nconst buildQuestions=variant=>{const copy=copyVariants[variant];return{service:{id:\"service\",type:\"multiple\",question:copy.service.question,subtitle:copy.service.subtitle,options:copy.service.options},houseSize:{id:\"houseSize\",type:\"single\",question:copy.houseSize.question,subtitle:copy.houseSize.subtitle,options:copy.houseSize.options},roofType:{id:\"roofType\",type:\"single\",question:copy.roofType.question,subtitle:copy.roofType.subtitle,options:copy.roofType.options},windows:{id:\"windows\",type:\"single\",question:copy.windows.question,subtitle:copy.windows.subtitle,options:copy.windows.options},windowCount:{id:\"windowCount\",type:\"single\",question:copy.windowCount.question,subtitle:copy.windowCount.subtitle,options:copy.windowCount.options},dormer:{id:\"dormer\",type:\"single\",question:copy.dormer.question,subtitle:copy.dormer.subtitle,options:copy.dormer.options},insulation:{id:\"insulation\",type:\"single\",question:copy.insulation.question,subtitle:copy.insulation.subtitle,options:copy.insulation.options},solar:{id:\"solar\",type:\"single\",question:copy.solar.question,subtitle:copy.solar.subtitle,options:copy.solar.options},flachdachInsulation:{id:\"flachdachInsulation\",type:\"single\",question:copy.flachdachInsulation.question,subtitle:copy.flachdachInsulation.subtitle,options:copy.flachdachInsulation.options},flachdachSolar:{id:\"flachdachSolar\",type:\"single\",question:copy.flachdachSolar.question,subtitle:copy.flachdachSolar.subtitle,options:copy.flachdachSolar.options},timeline:{id:\"timeline\",type:\"single\",question:copy.timeline.question,subtitle:copy.timeline.subtitle,options:copy.timeline.options},role:{id:\"role\",type:\"single\",question:copy.role.question,subtitle:copy.role.subtitle,options:copy.role.options},address:{id:\"address\",type:\"address\",question:copy.address.question,subtitle:copy.address.subtitle,placeholder:copy.address.placeholder},firmenname:{id:\"firmenname\",type:\"input\",question:copy.firmenname.question,subtitle:copy.firmenname.subtitle,placeholder:copy.firmenname.placeholder,inputType:\"text\"},ansprechpartner:{id:\"ansprechpartner\",type:\"dual-input\",question:copy.ansprechpartner.question,subtitle:copy.ansprechpartner.subtitle,fields:copy.ansprechpartner.fields},name:{id:\"name\",type:\"dual-input\",question:copy.name.question,subtitle:copy.name.subtitle,fields:copy.name.fields},email:{id:\"email\",type:\"input\",question:copy.email.question,subtitle:copy.email.subtitle,placeholder:copy.email.placeholder,inputType:\"email\"},phone:{id:\"phone\",type:\"input\",question:copy.phone.question,subtitle:copy.phone.subtitle,placeholder:copy.phone.placeholder,inputType:\"tel\"}};};const questionImages={// Question 1: Service (Multiple choice)\nservice:{dachsanierung:\"https://framerusercontent.com/images/1nyo2HHfDs92WKs4hDK6O2G4lAw.png\",neuer_dachbau:\"https://framerusercontent.com/images/UyYQaFXXXM6ffWN4AYhoSMA9Y.png?width=1248&height=832\",dachfenster_gauben:\"https://framerusercontent.com/images/EpFXVu6UmBMGZEOKJV8AuSpwVM.png\",reparatur:\"https://framerusercontent.com/images/O1tdfngHL4i4p0Er25izb58SU.png\",dach_daemmen:\"https://framerusercontent.com/images/gq26dQv49f3Hkn2biahcwC8kag8.png?width=1248&height=832\",noch_nicht_sicher:\"https://framerusercontent.com/images/WRWbZyVRyMdO6UPCxVTb8cDuTbo.png\"},// Question 2: House Size\n// Question 2: House Size\nhouseSize:{75:\"https://framerusercontent.com/images/ByPR6Foz1e0IdvnkJj2nQdapxeE.png?width=1024&height=1024\",150:\"https://framerusercontent.com/images/levkwrFD8ugKeepGiTL6pp4OZmg.png?width=1024&height=1024\",250:\"https://framerusercontent.com/images/6rhkSc2bmwQmcPult3xjc5zK7z4.png?width=1024&height=1024\"},// NEW: Flat roof house size images\nhouseSizeFlachdach:{75:\"https://framerusercontent.com/images/iTTuhHwmwimTQQeTyZEduz435Y.png?width=1024&height=1024\",150:\"https://framerusercontent.com/images/cuMJG4CZkvgbJGdQUlq6yvEolxk.png?width=1024&height=1024\",250:\"https://framerusercontent.com/images/MH0BvkE5Tv28aTbQhm1po3CxIM.png?width=1024&height=1024\"},// Question 3: Roof Type\nroofType:{satteldach:\"https://framerusercontent.com/images/wVRl8ZMJIaGnJ27ZFM7Dr0tsI4.png?width=1056&height=992\",flachdach:\"https://framerusercontent.com/images/pMm7vLFxtPIKsVMQbp5IHDC4M.png\",walmdach:\"https://framerusercontent.com/images/MWOphBfjCo4IKcIP37yMS4ectY.png?width=1536&height=1024\",sonstige:\"https://framerusercontent.com/images/9wlPyuESnrbNmfFNthHYteP3LE.png?width=1024&height=1024\"},// Question 5: Windows// Question 5: Windows (combined)\nwindows:{austausch:\"https://framerusercontent.com/images/tGn7Gj63WIb3e6ZgvvQBpPoC8.png?width=769&height=769\",neueinbau:\"https://framerusercontent.com/images/CzIzlfchSmVju1gW1VVKhbJNk.png?width=700&height=700\",nein_keine_gewollt:\"https://framerusercontent.com/images/58HRX49Lp1juL9c3Wmp4US5Yjw.png?width=1024&height=1024\"},// Question 6: Window Count\nwindowCount:{\"1\":\"https://framerusercontent.com/images/uI0T2PjBxb7EKkC9NqMXAzcMw.png?width=1024&height=1024\",\"2_4\":\"https://framerusercontent.com/images/B8im9FbI9hxxwbHOOBvbOTQlc.png?width=1024&height=1024\",\"4_plus\":\"https://framerusercontent.com/images/WIyjgDMUYrFgyLuPTbednHbv3JY.png?width=1024&height=1024\"},// Question 8: Dormer (Gaube)\ndormer:{ja:\"https://framerusercontent.com/images/B3pFAZc7qZBxpDbSYsRUwNECpcM.png\",nein:\"https://framerusercontent.com/images/vo9WObh13YiycSS1S7QFRe7fQ.png\",noch_nicht_sicher:\"https://framerusercontent.com/images/rlMAUizrweUzyC6cB8Lbf48bdE.png\"},// Question 9: Insulation\ninsulation:{ja:\"https://framerusercontent.com/images/gq26dQv49f3Hkn2biahcwC8kag8.png?width=1248&height=832\",nein:\"https://framerusercontent.com/images/vo9WObh13YiycSS1S7QFRe7fQ.png\",noch_nicht_sicher:\"https://framerusercontent.com/images/eBedWH2rmBZD1ZzwY8oE7hbTs3g.png\"},// Question 10: Solar/PV\nsolar:{ja:\"https://framerusercontent.com/images/8FpAZw6Cpu3JWAmlacUZ5TsR1AA.webp\",nein:\"https://framerusercontent.com/images/1J6BLKXtQxn7qhfCBuAhOUAno.webp\",noch_nicht_sicher:\"https://framerusercontent.com/images/X780Lszf2P6ksFIzdqZxPRx0Yf8.png\"},// FLACHDACH-SPECIFIC IMAGES (only 6 images needed!)\nflachdachInsulation:{ja:\"https://framerusercontent.com/images/u39q4HCy0pq9FE2st0wFJgHZvs.png?width=1248&height=832\",nein:\"https://framerusercontent.com/images/pMm7vLFxtPIKsVMQbp5IHDC4M.png?width=1024&height=1024\",noch_nicht_sicher:\"https://framerusercontent.com/images/XYXAmaGqlorAGSbmyvGRuahrngw.png?width=1024&height=1024\"},flachdachSolar:{ja:\"https://framerusercontent.com/images/lM6k5dpBy3dInwDWgkqRSf2WLhY.png?width=1024&height=1024\",nein:\"https://framerusercontent.com/images/pMm7vLFxtPIKsVMQbp5IHDC4M.png?width=1024&height=1024\",noch_nicht_sicher:\"https://framerusercontent.com/images/2QWoDVtIGj4yEKsPD1Ojhuqk0.png?width=1024&height=1024\"}};// Haversine formula to calculate distance between two coordinates\nconst calculateDistance=(lat1,lon1,lat2,lon2)=>{const R=6371;const dLat=(lat2-lat1)*(Math.PI/180);const dLon=(lon2-lon1)*(Math.PI/180);const a=Math.sin(dLat/2)*Math.sin(dLat/2)+Math.cos(lat1*(Math.PI/180))*Math.cos(lat2*(Math.PI/180))*Math.sin(dLon/2)*Math.sin(dLon/2);const c=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));const distance=R*c;return distance;};/**\n * Roof Lead Form Component\n *\n * Features browser autocomplete for contact fields:\n * - First/Last name autocomplete from browser saved data\n * - Email autocomplete from browser saved data\n * - Phone number autocomplete from browser saved data\n * - Address autocomplete from both browser data and Google Maps\n *//**\n * Roof Lead Form Component\n *\n * Features browser autocomplete for contact fields:\n * - First/Last name autocomplete from browser saved data\n * - Email autocomplete from browser saved data\n * - Phone number autocomplete from browser saved data\n * - Address autocomplete from both browser data and Google Maps\n *//**\n * @framerDisableUnlink\n * @framerIntrinsicWidth 500\n * @framerIntrinsicHeight 600\n */export default function RoofLeadForm({initialQuestionId=\"roofType\",showStartScreen:showStartScreenProp=true,webhookId,serviceOverride=null,thankYouUrl=\"/success\",primaryColor=\"#5E68EA\",successColor=\"#10b981\",warningColor=\"#f59e0b\",selectedBackgroundColor=\"#f0f4ff\",selectedTextColor=\"#1e40af\",serviceCenterCity=\"M\\xf6nchengladbach\",serviceCenterLatitude=null,serviceCenterLongitude=null,serviceRadiusKm=50,showDistanceWarning=true,allowManualAddress=false,showMapAfterAddress=true,skipServiceQuestion=false,defaultServiceValue=[\"dachsanierung\"],skipRoofTypeQuestion=false,defaultRoofTypeValue=\"satteldach\",copyVariant=\"low\",showFirstQuestionHeadline=true}){// ✅ NEW: URL Normalizer - Move UTM params from hash to query string\n// This MUST run before anything else\nuseEffect(()=>{if(typeof window===\"undefined\")return;const hash=window.location.hash;// Check if hash contains query parameters (e.g., #route?utm_source=google)\nif(hash&&hash.includes(\"?\")){console.log(\"🔧 URL Normalizer: Detected params after hash\");console.log(\"   Original URL:\",window.location.href);// Split hash into route and params\nconst hashParts=hash.split(\"?\");const hashRoute=hashParts[0]// e.g., \"#schritt-1-interessenbereich\"\n;const hashParamsString=hashParts[1]// e.g., \"utm_source=google&utm_medium=cpc\"\n;// Get existing query string params\nconst existingParams=new URLSearchParams(window.location.search);// Parse params from hash\nconst hashParams=new URLSearchParams(hashParamsString);// Merge: add hash params to existing params (hash params take priority)\nhashParams.forEach((value,key)=>{existingParams.set(key,value);});// Rebuild URL: origin + path + merged params + clean hash\nconst newUrl=`${window.location.origin}${window.location.pathname}?${existingParams.toString()}${hashRoute}`;console.log(\"   Fixed URL:\",newUrl);console.log(\"   Redirecting to normalize URL structure...\");// Replace URL (no page reload, just updates the address bar and triggers re-render)\nwindow.history.replaceState(null,\"\",newUrl);// Force a small delay to ensure the URL is updated before capture\nsetTimeout(()=>{console.log(\"✅ URL normalized - UTM params now in correct position\");},100);}},[])// Run only once on mount\n;// Get URL params IMMEDIATELY\nconst urlSkipParams=getSkipParamsFromURL();// Build questions based on copy variant\nconst questions=useMemo(()=>buildQuestions(copyVariant),[copyVariant])// ADD THIS LINE\n;// Determine final skip values (URL overrides props)\nconst finalSkipService=urlSkipParams.skipService||skipServiceQuestion;const finalSkipRoofType=urlSkipParams.skipRoofType||skipRoofTypeQuestion;const finalServiceValue=urlSkipParams.serviceValue?urlSkipParams.serviceValue.split(\",\"):defaultServiceValue;const finalRoofTypeValue=urlSkipParams.roofTypeValue||defaultRoofTypeValue;console.log(\"🎯 SKIP CONFIG:\",{finalSkipService,finalSkipRoofType,finalServiceValue,finalRoofTypeValue});// Color helper function to generate variants\n/* const thankYouUrl = \"https://www.cubikfabrik.de/thank-you\"*//* const thankYouUrl = \"https://www.cubikfabrik.de/thank-you\"*/// Smart URL handler: auto-fixes relative paths and validates full URLs\nconst actualThankYouUrl=(()=>{// Case 1: Empty/not provided → use default\nif(!thankYouUrl||thankYouUrl.trim()===\"\"){return`${getBaseUrl()}/success`;}// Case 2: Full URL (starts with http:// or https://) → use as-is\nif(thankYouUrl.startsWith(\"http://\")||thankYouUrl.startsWith(\"https://\")){return thankYouUrl;}// Case 3: Root-relative path (starts with /) → use as-is\nif(thankYouUrl.startsWith(\"/\")){return thankYouUrl;}// Case 4: Relative path (no leading slash) → auto-fix by adding /\nconsole.log(`⚠️ Auto-fixing relative URL: \"${thankYouUrl}\" → \"/${thankYouUrl}\"`);return`/${thankYouUrl}`;})();console.log(\"✅ Thank You URL configured:\",actualThankYouUrl);const generateColorVariants=baseColor=>{// Simple color darkening/lightening function\nconst hexToRgb=hex=>{const result=/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);return result?{r:parseInt(result[1],16),g:parseInt(result[2],16),b:parseInt(result[3],16)}:null;};const rgbToHex=(r,g,b)=>{return\"#\"+[r,g,b].map(x=>{const hex=Math.round(Math.max(0,Math.min(255,x))).toString(16);return hex.length===1?\"0\"+hex:hex;}).join(\"\");};const adjustBrightness=(color,percent)=>{const rgb=hexToRgb(color);if(!rgb)return color;const factor=percent/100;return rgbToHex(rgb.r*(1-factor),rgb.g*(1-factor),rgb.b*(1-factor));};const lighten=(color,percent)=>{const rgb=hexToRgb(color);if(!rgb)return color;const factor=percent/100;return rgbToHex(rgb.r+(255-rgb.r)*factor,rgb.g+(255-rgb.g)*factor,rgb.b+(255-rgb.b)*factor);};return{base:baseColor,hover:adjustBrightness(baseColor,15),light:lighten(baseColor,95)};};// Generate color variants\nconst primaryVariants=generateColorVariants(primaryColor);const successVariants=generateColorVariants(successColor);const warningVariants=generateColorVariants(warningColor);const questionDependencies={roofType:{service:true},houseSize:{roofType:true},windows:{roofType:true},windowCount:{windows:true},dormer:{roofType:true},insulation:{roofType:true},solar:{roofType:true},timeline:{solar:true},role:{timeline:true},address:{role:true},firmenname:{role:\"hausverwaltung\"},name:{role:true},email:{address:true},phone:{email:true}};// Function to get required answers recursively\nconst getRequiredAnswers=questionId=>{let required={};let current=questionId;while(current){const dep=questionDependencies[current];if(dep){const parent=Object.keys(dep)[0];const depValue=dep[parent];// Only set value if it's NOT a boolean true (which means \"just check if answered\")\nif(depValue!==true){required[parent]=depValue;}// If it's true, we don't pre-fill anything - just check the dependency\ncurrent=parent;}else{current=null;}}// Rest of the function...\nif(!required.roofType){if(questionId.includes(\"flachdach\")){required.roofType=\"flachdach\";}else if(questionId.includes(\"steildach\")||questionId.includes(\"steildach\")){required.roofType=\"steildach\";}}return required;};// Local storage key\nconst STORAGE_KEY=\"roofLeadFormAnswers\";// Load saved answers from localStorage\nlet savedAnswers={};if(typeof window!==\"undefined\"){const saved=localStorage.getItem(STORAGE_KEY);if(saved){try{savedAnswers=JSON.parse(saved);// CRITICAL: Clear the first question's answer from cache\n// This prevents auto-advance on page reload\nif(savedAnswers.service){delete savedAnswers.service;}}catch(e){console.error(\"Failed to parse saved answers:\",e);savedAnswers={};}}}// Initialize answers with saved data AND URL parameters\nlet initialAnswers={...savedAnswers};let initialPending=null;// CRITICAL: Pre-populate skipped questions BEFORE component renders\n// This ensures the flow generation uses these values\nif(finalSkipService&&finalServiceValue){initialAnswers.service=finalServiceValue;console.log(\"✅ Pre-filled service:\",finalServiceValue);}if(finalSkipRoofType&&finalRoofTypeValue){initialAnswers.roofType=finalRoofTypeValue;console.log(\"✅ Pre-filled roofType:\",finalRoofTypeValue);}if(typeof window!==\"undefined\"){const hash=window.location.hash.slice(1);const qId=hash?urlToQuestion[hash]:initialQuestionId;// Don't set pending step if we're skipping questions via URL\nif(qId&&!urlSkipParams.skipService&&!urlSkipParams.skipRoofType){const required=getRequiredAnswers(qId);initialAnswers={...initialAnswers,...required};initialPending=qId;}}// State management\nconst[isAddressFromGoogle,setIsAddressFromGoogle]=useState(false);// NEW: Start screen state\nconst[showStartScreen,setShowStartScreen]=useState(showStartScreenProp);// NEW: State for skipping questions (can be set via props OR URL)\nconst[shouldSkipService,setShouldSkipService]=useState(skipServiceQuestion);const[shouldSkipRoofType,setShouldSkipRoofType]=useState(skipRoofTypeQuestion);// Clear first question answer when showing start screen or on initial mount\nuseEffect(()=>{if(typeof window!==\"undefined\"){const saved=localStorage.getItem(STORAGE_KEY);if(saved){try{const parsedAnswers=JSON.parse(saved);// Always clear the service question from localStorage\nif(parsedAnswers.service){delete parsedAnswers.service;localStorage.setItem(STORAGE_KEY,JSON.stringify(parsedAnswers));}}catch(e){console.error(\"Failed to clear service answer:\",e);}}}},[])// Run once on mount\n;const[customHeadline,setCustomHeadline]=useState(\"\");const[customSubheadline,setCustomSubheadline]=useState(\"\");const[customButtonText,setCustomButtonText]=useState(\"\");const[currentStep,setCurrentStep]=useState(0);const[answers,setAnswers]=useState(initialAnswers);const[questionFlow,setQuestionFlow]=useState([]);const[totalSteps,setTotalSteps]=useState(0);const[isMobile,setIsMobile]=useState(false);//const [isSubmitted, setIsSubmitted] = useState(false)\nconst[isSubmitting,setIsSubmitting]=useState(false);const[isGoogleMapsLoaded,setIsGoogleMapsLoaded]=useState(false);const[isTransitioning,setIsTransitioning]=useState(false);const[fadeClass,setFadeClass]=useState(\"fade-in\");const[isMieterSelected,setIsMieterSelected]=useState(false);const[isOutOfServiceArea,setIsOutOfServiceArea]=useState(false);const[distanceFromCenter,setDistanceFromCenter]=useState(null);const[showServiceAreaWarning,setShowServiceAreaWarning]=useState(false);const[pendingStep,setPendingStep]=useState(initialPending);const[phoneValidationStatus,setPhoneValidationStatus]=useState(null)// null, 'checking', 'valid', 'invalid'\n;const[sinchValidationResult,setSinchValidationResult]=useState(null);const[isReady,setIsReady]=useState(!initialPending||urlSkipParams.skipService||urlSkipParams.skipRoofType);const[isInitializing,setIsInitializing]=useState(true);const[navigationDirection,setNavigationDirection]=useState(\"forward\")// ADD THIS LINE\n;const[isScrolledPastContent,setIsScrolledPastContent]=useState(false);// NEW: UTM tracking state\nconst[utmParams,setUtmParams]=useState({});const[referrerInfo,setReferrerInfo]=useState({});const[stepStartTime,setStepStartTime]=useState(Date.now());const[inactivityTimer,setInactivityTimer]=useState(null);// State for service center coordinates (geocoded from city)\nconst[serviceCenterCoordinates,setServiceCenterCoordinates]=useState({lat:serviceCenterLatitude,lng:serviceCenterLongitude,isGeocoded:false});const[addressComponents,setAddressComponents]=useState({street_name:null,house_number:null,postal_code:null,city:null,state:null,country:null,formatted_address:null,address_source:null,// NEW: Coordinates\nlatitude:null,longitude:null,place_id:null});const[addressValidationStatus,setAddressValidationStatus]=useState(null)// null, 'valid', 'invalid', 'checking'\n;// Helper to determine container width based on current question\nconst getCurrentQuestionMaxWidth=()=>{const currentQuestionId=questionFlow[currentStep];if(!currentQuestionId)return\"500px\";const hasImages=questionImages[currentQuestionId];const question=questions[currentQuestionId];if(question?.type===\"select\"&&hasImages){return\"700px\";}if(question?.type===\"address\"){return\"600px\";}return\"500px\";};// Ref for Google Maps autocomplete and map display\nconst autocompleteRef=useRef(null);const addressInputRef=useRef(null);const mapRef=useRef(null);const mapInstanceRef=useRef(null);const lastTrackedStep=useRef(-1);const stepStartTimeRef=useRef(Date.now());const stepTimesRef=useRef({});const lastFocusedStep=useRef(-1)// ✅ NEW: Track last focused step\n;useMemo(()=>{// ✅ Check if window exists (client-side only)\nif(typeof window===\"undefined\")return;const hash=window.location.hash.slice(1);const questionId=urlToQuestion[hash];if(questionId){const required=getRequiredAnswers(questionId);setAnswers(prev=>({...prev,...required}));setPendingStep(questionId);}},[]);// Save answers to localStorage when they change\nuseEffect(()=>{if(typeof window!==\"undefined\"){localStorage.setItem(STORAGE_KEY,JSON.stringify(answers));}},[answers]);// Hash change handler\nconst handleHashChange=()=>{const hash=window.location.hash.slice(1);const questionId=urlToQuestion[hash];if(questionId){const required=getRequiredAnswers(questionId);setAnswers(prev=>({...prev,...required}));setPendingStep(questionId);}};// Set step when flow updates and pending\nconst[minStep,setMinStep]=useState(0);// Initialize component when question flow is ready\nuseEffect(()=>{if(questionFlow.length>0&&isReady){const timer=setTimeout(()=>{setIsInitializing(false);},100);return()=>clearTimeout(timer);}},[questionFlow,isReady]);useEffect(()=>{if(pendingStep){const index=questionFlow.findIndex(id=>id===pendingStep);if(index!==-1){setCurrentStep(index);setMinStep(index);setPendingStep(null);setIsReady(true);}}},[questionFlow,pendingStep]);// Update hash and title on step change\nuseEffect(()=>{const currentId=questionFlow[currentStep];if(currentId&&questionUrls[currentId]){window.location.hash=questionUrls[currentId];}if(currentId&&questionTitles[currentId]){document.title=`${questionTitles[currentId]}`;}},[currentStep,questionFlow]);// Clamp currentStep if flow changes and currentStep is out of bounds\nuseEffect(()=>{if(questionFlow.length>0&&currentStep>=questionFlow.length){setCurrentStep(questionFlow.length-1);}},[questionFlow,currentStep]);// Styling constants with enhanced color system\nconst colors={primary:primaryVariants.base,primaryHover:primaryVariants.hover,primaryLight:selectedBackgroundColor,selectedText:selectedTextColor,success:successVariants.base,successLight:successVariants.light,warning:warningVariants.base,warningLight:warningVariants.light,error:\"#ef4444\",errorLight:\"#fee2e2\",gray:{50:\"#f9fafb\",100:\"#f3f4f6\",200:\"#e5e7eb\",300:\"#d1d5db\",400:\"#9ca3af\",500:\"#6b7280\",600:\"#4b5563\",700:\"#374151\",800:\"#1f2937\",900:\"#111827\"}};const containerStyle={minHeight:\"100vh\",backgroundColor:\"transparent\",fontFamily:'-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Inter\", \"Helvetica Neue\", sans-serif'};const contentContainerStyle={padding:isMobile?\"0 12px\":\"0 24px\",paddingTop:\"0\",paddingBottom:\"0\"};const cardStyle={backgroundColor:\"transparent\",borderRadius:\"0\",border:\"none\",padding:\"0\",marginBottom:\"0\",width:\"100%\",boxSizing:\"border-box\",boxShadow:\"none\",transform:\"translateY(0)\",opacity:1,animation:\"fadeIn 0.6s cubic-bezier(0.4, 0, 0.2, 1)\"};const mainContainerStyle={maxWidth:\"900px\",margin:\"0 auto\",width:\"100%\"};// Map house size categories to average square meters\nconst houseSizeToSquareMeters=houseSizeValue=>{const mapping={unter_100:75,\"100_200\":150,ueber_200:250,nicht_sicher:null};return mapping[houseSizeValue]||null;};// Image mappings for visual questions\n// Image mappings for visual questions\n// COMPLETE questionImages object with the new additions:\n// Enhanced phone validation and formatting functions - Mobile Autocomplete\n// Simplified phone formatting - no auto-conversion\nconst formatPhoneNumber=value=>{// ✅ UPDATED: Only allow + and numbers (0-9)\n// Remove EVERYTHING else (spaces, dashes, parentheses, letters, etc.)\nif(!value)return\"\";// Remove all characters that are NOT: digits or +\nconst cleaned=value.replace(/[^\\d\\+]/g,\"\");return cleaned;};const validatePhoneNumber=phone=>{if(!phone||phone===\"\")return false;// Since we only allow + and digits, just remove the + for validation\nconst cleanPhone=phone.replace(/\\+/g,\"\");// Must have at least 8 digits\nconst hasEnoughDigits=/\\d{8,}/.test(cleanPhone);return hasEnoughDigits;};// Convert phone number to E.164 format\nconst convertToE164=phoneNumber=>{if(!phoneNumber)return null;// Remove all formatting (spaces, dashes, dots, parentheses)\nlet cleaned=phoneNumber.replace(/[\\s\\-\\(\\)\\./]/g,\"\");// If it already starts with +, return as is\nif(cleaned.startsWith(\"+\")){return cleaned;}// If it starts with 00, replace with +\nif(cleaned.startsWith(\"00\")){return\"+\"+cleaned.substring(2);}// If it starts with 0 (German national format), add +49\nif(cleaned.startsWith(\"0\")){return\"+49\"+cleaned.substring(1);}// If it starts with 49 (without +), add the +\nif(cleaned.startsWith(\"49\")){return\"+\"+cleaned;}// Otherwise, assume it's German and add +49\nreturn\"+49\"+cleaned;};// Validate phone number with Sinch API\n// Validate phone number with Sinch API\n// Validate phone number via Make.com webhook (which calls Sinch API)\n// Validate phone number via n8n webhook (which calls Sinch API)\nconst validatePhoneWithSinch=async phoneNumber=>{try{const e164Number=convertToE164(phoneNumber);console.log(\"=== PHONE VALIDATION START ===\");console.log(\"Original input:\",phoneNumber);console.log(\"E.164 format:\",e164Number);if(!e164Number){return{valid:false,error:\"Invalid phone number format\"};}const N8N_WEBHOOK_URL=\"https://handlyde.app.n8n.cloud/webhook/0eab2b67-8a8f-4c0e-9902-8bd6359e2f99\";console.log(\"Calling n8n webhook...\");const response=await fetch(N8N_WEBHOOK_URL,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify({phoneNumber:e164Number})});console.log(\"Response status:\",response.status);if(!response.ok){console.log(\"❌ Webhook returned error status\");return{valid:false,error:`Validation failed: ${response.status}`};}const result=await response.json();console.log(\"Validation result:\",result);return result;}catch(error){console.error(\"❌ Validation error:\",error);return{valid:false,error:\"Could not verify phone number. Please try again.\"};}};const detectPhoneType=phone=>{if(!phone)return null;// Extract just the numbers after country code\nlet numbers=phone.replace(/[^\\d]/g,\"\");// Remove country code if present\nif(numbers.startsWith(\"49\")){numbers=numbers.substring(2);}// Check if it's a mobile number (starts with 1)\nif(numbers.startsWith(\"1\")){return\"mobile\";}// Otherwise it's a landline\nreturn\"landline\";};const geocodeManualAddress=async address=>{if(!window.google||!window.google.maps)return null;const geocoder=new window.google.maps.Geocoder;return new Promise(resolve=>{geocoder.geocode({address:address},(results,status)=>{if(status===\"OK\"&&results[0]){resolve({lat:results[0].geometry.location.lat(),lng:results[0].geometry.location.lng(),formatted_address:results[0].formatted_address,place_id:results[0].place_id});}else{resolve(null);}});});};// Address parsing functions\n// Enhanced address parsing functions with city extraction fix\n// Enhanced address parsing functions with city extraction fix\n// Address parsing functions - FIXED VERSION\nconst parseGooglePlaceComponents=place=>{const components={street_name:null,house_number:null,postal_code:null,city:null,state:null,country:null,formatted_address:place.formatted_address||null,address_source:\"google_maps\",latitude:place.geometry?.location?.lat()||null,longitude:place.geometry?.location?.lng()||null,place_id:place.place_id||null};// First pass: collect all components\nlet locality=null;let administrative_area_level_2=null;let administrative_area_level_1=null;let sublocality=null;if(place.address_components){place.address_components.forEach(component=>{const types=component.types;if(types.includes(\"street_number\")){components.house_number=component.long_name;}if(types.includes(\"route\")){components.street_name=component.long_name;}if(types.includes(\"postal_code\")){components.postal_code=component.long_name;}// Collect different city-level components\nif(types.includes(\"locality\")){locality=component.long_name;}if(types.includes(\"administrative_area_level_2\")){administrative_area_level_2=component.long_name;}if(types.includes(\"administrative_area_level_1\")){administrative_area_level_1=component.long_name;components.state=component.long_name;}if(types.includes(\"sublocality\")||types.includes(\"sublocality_level_1\")){sublocality=component.long_name;}if(types.includes(\"country\")){components.country=component.long_name;}});}// Smart city selection with fallback to formatted address\ncomponents.city=selectBestCity(locality,administrative_area_level_2,sublocality,place.formatted_address,components.postal_code);return components;};// Enhanced city selection function\nconst selectBestCity=(locality,administrative_area_level_2,sublocality,formatted_address,postal_code)=>{// Strategy 1: Prioritize locality (most accurate for cities)\nif(locality){return locality;}// Strategy 2: Extract city from formatted address as fallback\nif(formatted_address){const cityFromAddress=extractCityFromFormattedAddress(formatted_address,postal_code);if(cityFromAddress){return cityFromAddress;}}// Strategy 3: Use sublocality if available\nif(sublocality){return sublocality;}// Strategy 4: Fall back to administrative area\nif(administrative_area_level_2){return administrative_area_level_2;}return null;};// Function to extract city from formatted address\nconst extractCityFromFormattedAddress=(formatted_address,postal_code)=>{if(!formatted_address)return null;try{// German address format: \"Street Number, PostalCode City, State, Country\"\n// Example: \"Hehner Str. 41, 41069 Mönchengladbach, Deutschland\"\nconst parts=formatted_address.split(\",\").map(part=>part.trim());for(const part of parts){// Look for part that contains postal code followed by city name\nif(postal_code&&part.includes(postal_code)){// Extract everything after the postal code\nconst cityMatch=part.match(`${postal_code}\\\\s+(.+)`);if(cityMatch&&cityMatch[1]){return cityMatch[1].trim();}}// Alternative: Look for German postal code pattern (5 digits) followed by city\nconst germanPostalPattern=/(\\d{5})\\s+(.+)/;const match=part.match(germanPostalPattern);if(match&&match[2]){// Verify this isn't just a number or state name\nconst potentialCity=match[2].trim();if(potentialCity&&!potentialCity.match(/^\\d+$/)&&// Not just numbers\npotentialCity.length>2&&// Reasonable length\n!potentialCity.includes(\"Deutschland\")&&// Not country name\n!potentialCity.includes(\"Germany\")){// Not country name\nreturn potentialCity;}}}// Fallback: Try to find city-like strings in the middle parts\nif(parts.length>=2){const middlePart=parts[1]// Usually contains \"PostalCode City\"\n;const cityPattern=/\\d{5}\\s+([^,]+)/;const match=middlePart.match(cityPattern);if(match&&match[1]){return match[1].trim();}}}catch(error){console.log(\"Error extracting city from formatted address:\",error);}return null;};// Enhanced manual address parsing that also handles city extraction better\nconst parseManualAddress=addressString=>{if(!addressString||typeof addressString!==\"string\"){return{street_name:null,house_number:null,postal_code:null,city:null,state:null,country:\"Germany\",formatted_address:addressString,address_source:\"manual_entry\",latitude:null,longitude:null,place_id:null};}const components={street_name:null,house_number:null,postal_code:null,city:null,state:null,country:\"Germany\",formatted_address:addressString.trim(),address_source:\"manual_entry\",latitude:null,longitude:null,place_id:null};try{// Enhanced German address format parsing\nconst addressParts=addressString.split(\",\").map(part=>part.trim());if(addressParts.length>=2){// First part: street and house number\nconst streetPart=addressParts[0].trim();const streetMatch=streetPart.match(/^(.+?)\\s+(\\d+[a-zA-Z]?)$/);if(streetMatch){components.street_name=streetMatch[1].trim();components.house_number=streetMatch[2].trim();}else{components.street_name=streetPart;}// Second part: postal code and city - enhanced extraction\nconst cityPart=addressParts[1].trim();const cityMatch=cityPart.match(/^(\\d{5})\\s+(.+)$/);if(cityMatch){components.postal_code=cityMatch[1];// Clean up city name (remove extra spaces, handle special characters)\ncomponents.city=cityMatch[2].trim();}else{// Try alternative patterns\nconst postalMatch=cityPart.match(/^(\\d{5})/);if(postalMatch){components.postal_code=postalMatch[1];components.city=cityPart.replace(postalMatch[1],\"\").trim();}else{components.city=cityPart;}}// Third part (if exists): state\nif(addressParts.length>=3){components.state=addressParts[2].trim();}}else{// Single line address - enhanced parsing\nconst singleLineMatch=addressString.match(/^(.+?)\\s+(\\d+[a-zA-Z]?).+?(\\d{5})\\s+(.+)$/);if(singleLineMatch){components.street_name=singleLineMatch[1].trim();components.house_number=singleLineMatch[2].trim();components.postal_code=singleLineMatch[3];components.city=singleLineMatch[4].trim();}}// Post-processing: Clean up city name\nif(components.city){// Remove common suffixes that might be included\ncomponents.city=components.city.replace(/,.*$/,\"\")// Remove everything after comma\n.replace(/\\s+Deutschland$/,\"\")// Remove \"Deutschland\" if present\n.replace(/\\s+Germany$/,\"\")// Remove \"Germany\" if present\n.trim();}}catch(error){console.log(\"Address parsing error:\",error);}return components;};// Updated address component update function\nconst updateAddressComponents=(address,source=\"manual_entry\")=>{let components;if(source===\"google_maps\"&&address&&typeof address===\"object\"){// Google Places API result\ncomponents=parseGooglePlaceComponents(address);}else{// Manual entry or string address\ncomponents=parseManualAddress(address);}setAddressComponents(components);// Debug logging to verify city extraction\nconsole.log(\"Address components parsed:\",components);console.log(\"Extracted city:\",components.city);console.log(\"Formatted address:\",components.formatted_address);return components;};// UTM and tracking functions\nconst generateSessionId=()=>{return Date.now().toString(36)+Math.random().toString(36).substr(2);};// Loading Screen Component\n// Enhanced Animated Loading Screen Component\nconst LoadingScreen=()=>/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:`\n                @keyframes spin {\n                    from { transform: rotate(0deg); }\n                    to { transform: rotate(360deg); }\n                }\n                \n                @keyframes fadeIn {\n                    from { opacity: 0; }\n                    to { opacity: 1; }\n                }\n            `}),/*#__PURE__*/_jsx(\"div\",{style:{position:\"fixed\",top:0,left:0,right:0,bottom:0,backgroundColor:\"#fafafa\",zIndex:9999,display:\"flex\",flexDirection:\"column\",alignItems:\"center\",justifyContent:\"center\",animation:\"fadeIn 0.2s ease-out\"},children:/*#__PURE__*/_jsxs(\"div\",{style:{textAlign:\"center\",maxWidth:\"500px\",padding:\"0 24px\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{width:\"80px\",height:\"80px\",margin:\"0 auto 60px auto\",position:\"relative\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",width:\"100%\",height:\"100%\",border:\"3px solid #e5e7eb\",borderTop:`3px solid ${colors.primary}`,borderRadius:\"50%\",animation:\"spin 1s linear infinite\"}}),/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",width:\"12px\",height:\"12px\",top:\"50%\",left:\"50%\",transform:\"translate(-50%, -50%)\",backgroundColor:colors.primary,borderRadius:\"50%\",opacity:.6}})]}),/*#__PURE__*/_jsx(\"h2\",{style:{fontSize:isMobile?\"26px\":\"32px\",fontWeight:\"600\",color:\"#1f2937\",margin:\"0 0 20px 0\",letterSpacing:\"-0.02em\",lineHeight:\"1.2\"},children:\"Einen Moment bitte\"}),/*#__PURE__*/_jsx(\"p\",{style:{fontSize:isMobile?\"15px\":\"17px\",color:\"#6b7280\",margin:\"0 0 80px 0\",lineHeight:\"1.6\",fontWeight:\"400\"},children:\"Wir pr\\xfcfen die Verf\\xfcgbarkeit in Ihrer Region\"}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"inline-flex\",alignItems:\"center\",gap:\"10px\",padding:\"14px 28px\",backgroundColor:\"#f3f4f6\",borderRadius:\"100px\",border:\"1px solid #e5e7eb\"},children:[/*#__PURE__*/_jsx(\"svg\",{width:\"16\",height:\"16\",viewBox:\"0 0 16 16\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",style:{opacity:.6},children:/*#__PURE__*/_jsx(\"path\",{d:\"M12 7V5C12 2.79086 10.2091 1 8 1C5.79086 1 4 2.79086 4 5V7M8 10V11.5M3.5 7H12.5C13.0523 7 13.5 7.44772 13.5 8V13.5C13.5 14.0523 13.0523 14.5 12.5 14.5H3.5C2.94772 14.5 2.5 14.0523 2.5 13.5V8C2.5 7.44772 2.94772 7 3.5 7Z\",stroke:\"#6b7280\",strokeWidth:\"1.5\",strokeLinecap:\"round\",strokeLinejoin:\"round\"})}),/*#__PURE__*/_jsx(\"span\",{style:{fontSize:\"14px\",color:\"#6b7280\",fontWeight:\"500\",letterSpacing:\"0.01em\"},children:\"Sichere Daten\\xfcbertragung\"})]})]})})]});// GA4 Tracking Functions - ADD THESE AFTER generateSessionId function\nconst trackGA4Event=(eventName,parameters={})=>{console.log(\"📊 GA4 Event:\",eventName,parameters)// ADD THIS LINE\n;if(typeof window!==\"undefined\"&&window.gtag){try{window.gtag(\"event\",eventName,{form_name:\"roof_lead_form\",form_version:\"1.0\",timestamp:new Date().toISOString(),...parameters});}catch(error){console.log(\"GA4 tracking error:\",error);}}};const trackFormStart=()=>{trackGA4Event(\"begin_checkout\",{event_category:\"engagement\",event_label:\"form_start\",currency:\"EUR\",value:0,items:[{item_id:\"roof_consultation\",item_name:\"Roof Consultation Request\",item_category:\"lead_generation\",quantity:1,price:0}]});trackGA4Event(\"form_started\",{event_category:\"funnel\",event_label:\"roof_lead_form_start\",funnel_name:\"roof_lead_generation\",step_number:0,step_name:\"start\"});};// Track unique page view for form\nconst trackPageViewForm=()=>{// Prevent duplicate fires\nif(typeof window!==\"undefined\"&&window._pageViewFormFired){console.log(\"⏭️ page_view_form already fired, skipping\");return;}// Mark as fired\nif(typeof window!==\"undefined\"){window._pageViewFormFired=true;}// GA4 Event\ntrackGA4Event(\"page_view_form\",{event_category:\"form_funnel\",event_label:\"form_page_viewed\",form_name:\"roof_lead_form\",form_version:\"1.0\",timestamp:new Date().toISOString(),page_url:typeof window!==\"undefined\"?window.location.href:null,referrer:typeof document!==\"undefined\"?document.referrer:null});// Facebook Pixel Event\nif(typeof window!==\"undefined\"&&window.fbq){try{window.fbq(\"trackCustom\",\"page_view_form\",{form_name:\"roof_lead_form\",form_version:\"1.0\",content_category:\"lead_generation\"});console.log(\"✅ Facebook Pixel: page_view_form event fired\");}catch(error){console.log(\"Facebook Pixel error:\",error);}}console.log(\"✅ GA4: page_view_form event fired\");};const trackStepProgression=(fromStep,toStep,questionId,answer)=>{const fromStepName=questionFlow[fromStep]||\"unknown\";const toStepName=questionFlow[toStep]||\"unknown\";trackGA4Event(\"funnel_step_completed\",{event_category:\"funnel\",event_label:\"step_completed\",funnel_name:\"roof_lead_generation\",step_number:fromStep+1,step_name:fromStepName,question_id:questionId,answer_provided:answer?\"yes\":\"no\",total_steps:questionFlow.length,progress_percentage:Math.round((fromStep+1)/questionFlow.length*100)});trackGA4Event(\"funnel_step_viewed\",{event_category:\"funnel\",event_label:\"step_viewed\",funnel_name:\"roof_lead_generation\",step_number:toStep+1,step_name:toStepName,total_steps:questionFlow.length,progress_percentage:Math.round((toStep+1)/questionFlow.length*100)});};const trackFormCompletion=formData=>{trackGA4Event(\"purchase\",{event_category:\"conversion\",event_label:\"form_completed\",transaction_id:`roof_lead_${Date.now()}`,currency:\"EUR\",value:100,items:[{item_id:\"roof_consultation_completed\",item_name:\"Roof Consultation Request Completed\",item_category:\"lead_generation\",item_variant:formData.roofType||\"unknown\",quantity:1,price:100}]});trackGA4Event(\"form_completed\",{event_category:\"funnel\",event_label:\"roof_lead_form_completed\",funnel_name:\"roof_lead_generation\",step_number:questionFlow.length,step_name:\"completed\",roof_type:formData.roofType,service_type:formData.flachdachService||formData.steildachService,completion_rate:100,total_steps:questionFlow.length});};// Facebook Pixel tracking for individual steps\nconst trackFacebookPixelStep=questionId=>{if(typeof window!==\"undefined\"&&window.fbq){try{// Get the FIXED step number for this question\nconst fixedStepNumber=questionStepNumbers[questionId];// Create unique event name using fixed step number\nconst eventName=`form_step_${String(fixedStepNumber).padStart(2,\"0\")}_${questionId}`;window.fbq(\"trackCustom\",eventName,{step_name:questionId,step_number:fixedStepNumber,form_name:\"roof_lead_form\",total_steps:questionFlow.length,progress_percentage:Math.round((currentStep+1)/questionFlow.length*100)});console.log(`✅ Facebook Pixel: ${eventName} event fired`);}catch(error){console.log(\"Facebook Pixel error:\",error);}}};const trackFacebookPixelStep10=()=>{if(typeof window!==\"undefined\"&&window.fbq){try{window.fbq(\"trackCustom\",\"step_10\",{step_name:\"role_selection\",step_number:10,form_name:\"roof_lead_form\"});console.log(\"✅ Facebook Pixel: step_10 event fired\");}catch(error){console.log(\"Facebook Pixel error:\",error);}}else{console.log(\"⚠️ Facebook Pixel not available\");}};// Track when Mieter is selected and filter page is shown\nconst trackFacebookPixelMieter=()=>{if(typeof window!==\"undefined\"&&window.fbq){try{window.fbq(\"trackCustom\",\"step_mieter\",{event_type:\"role_filter\",role_selected:\"mieter\",form_name:\"roof_lead_form\",reason:\"service_not_available_for_tenants\"});console.log(\"✅ Facebook Pixel: step_mieter event fired\");}catch(error){console.log(\"Facebook Pixel error:\",error);}}else{console.log(\"⚠️ Facebook Pixel not available\");}};// Track when address is outside service radius\nconst trackFacebookPixelOutOfRadius=distance=>{if(typeof window!==\"undefined\"&&window.fbq){try{window.fbq(\"trackCustom\",\"step_out_of_radius\",{event_type:\"location_filter\",distance_km:Math.round(distance),max_radius_km:serviceRadiusKm,form_name:\"roof_lead_form\",reason:\"address_outside_service_area\"});console.log(`✅ Facebook Pixel: step_out_of_radius event fired (${Math.round(distance)} km)`);}catch(error){console.log(\"Facebook Pixel error:\",error);}}else{console.log(\"⚠️ Facebook Pixel not available\");}};// 1. ADD THESE TWO SIMPLE TRACKING FUNCTIONS\n// Place after your existing trackFormCompletion function\n// ============= NEW TRACKING FUNCTIONS =============\nconst trackStepView=(stepIndex,questionId,hashUrl)=>{const stepName=`step_${String(stepIndex+1).padStart(2,\"0\")}_${questionId}`;trackGA4Event(\"form_step_view\",{event_category:\"form_funnel\",event_label:stepName,step_number:stepIndex+1,step_id:questionId,step_url:hashUrl,total_steps:questionFlow.length,progress_percentage:Math.round((stepIndex+1)/questionFlow.length*100),funnel_name:\"roof_lead_generation\",form_version:\"1.0\",engagement_time_msec:100});if(typeof window!==\"undefined\"&&window.gtag){window.gtag(\"event\",\"page_view\",{page_title:`Form Step ${stepIndex+1}: ${questionTitles[questionId]||questionId}`,page_location:`${window.location.origin}${window.location.pathname}#${hashUrl}`,page_path:`/virtual/form/step-${String(stepIndex+1).padStart(2,\"0\")}`,step_number:stepIndex+1,step_name:questionId});}console.log(`✅ Step viewed: ${stepName} (${hashUrl})`);};const trackStepExit=(stepIndex,questionId,hashUrl,timeOnStep)=>{const stepName=`step_${String(stepIndex+1).padStart(2,\"0\")}_${questionId}`;trackGA4Event(\"form_step_abandoned\",{event_category:\"form_funnel\",event_label:\"step_abandoned\",step_number:stepIndex+1,step_id:questionId,step_url:hashUrl,time_on_step_seconds:timeOnStep?Math.round(timeOnStep/1e3):0,total_steps:questionFlow.length,progress_percentage:Math.round((stepIndex+1)/questionFlow.length*100),funnel_name:\"roof_lead_generation\"});console.log(`Step exited: ${hashUrl}`);};const trackStepCompletion=(stepIndex,questionId,answer,timeOnStep)=>{const stepName=`step_${String(stepIndex+1).padStart(2,\"0\")}_${questionId}`;trackGA4Event(\"form_step_completed\",{event_category:\"form_funnel\",event_label:stepName,step_number:stepIndex+1,step_id:questionId,step_url:questionUrls[questionId],answer_provided:answer?\"yes\":\"no\",time_on_step_seconds:timeOnStep?Math.round(timeOnStep/1e3):0,total_steps:questionFlow.length,progress_percentage:Math.round((stepIndex+1)/questionFlow.length*100),funnel_name:\"roof_lead_generation\"});console.log(`✅ Step completed: ${stepName}`);};// ============= END NEW TRACKING FUNCTIONS =============\nconst trackFormAbandonment=(currentStepIndex,questionId)=>{const stepName=questionFlow[currentStepIndex]||\"unknown\";trackGA4Event(\"form_abandoned\",{event_category:\"funnel\",event_label:\"form_abandoned\",funnel_name:\"roof_lead_generation\",step_number:currentStepIndex+1,step_name:stepName,question_id:questionId,abandonment_point:stepName,progress_percentage:Math.round((currentStepIndex+1)/questionFlow.length*100),total_steps:questionFlow.length});};const trackQuestionInteraction=(questionId,questionType,answer)=>{trackGA4Event(\"question_answered\",{event_category:\"engagement\",event_label:\"question_interaction\",question_id:questionId,question_type:questionType,answer_value:typeof answer===\"object\"?JSON.stringify(answer):String(answer),interaction_type:\"answer_provided\"});};// Enhanced UTM Parameter Capture - REPLACE EXISTING FUNCTION (around line 1092)\n// Enhanced UTM Parameter Capture - REPLACE EXISTING FUNCTION\nconst captureUTMParameters=()=>{if(typeof window===\"undefined\")return{utm:{},referrer:{}};// 1. Try sessionStorage first (survives Framer remounts)\nconst cached=sessionStorage.getItem(\"_capturedTrackingParams\");if(cached){try{const parsed=JSON.parse(cached);console.log(\"📊 UTM restored from sessionStorage:\",parsed);return parsed;}catch(e){}}const utm={};const referrer={};const searchParams=new URLSearchParams(window.location.search);let hashParams=new URLSearchParams;const hash=window.location.hash;if(hash&&hash.includes(\"?\")){const hashQueryString=hash.split(\"?\")[1];hashParams=new URLSearchParams(hashQueryString);}const utmKeys=[\"utm_source\",\"utm_medium\",\"utm_campaign\",\"utm_content\",\"utm_term\",\"utm_id\"];utmKeys.forEach(key=>{let value=searchParams.get(key)||hashParams.get(key);if(value){utm[key]=value;}});console.log(\"📊 UTM Capture Debug:\");console.log(\"  Search params:\",window.location.search);console.log(\"  Hash:\",window.location.hash);console.log(\"  Captured UTMs:\",utm);referrer.url=document.referrer||\"direct\";referrer.userAgent=navigator.userAgent;referrer.timestamp=new Date().toISOString();referrer.landingPage=window.location.href;referrer.sessionId=generateSessionId();// 2. Capture fbc (Facebook Click ID) in correct format for CAPI\ntry{const fbcCookie=document.cookie.split(\"; \").find(c=>c.startsWith(\"_fbc=\"));if(fbcCookie){referrer.fbc=fbcCookie.split(\"=\")[1];console.log(\"📊 fbc from cookie:\",referrer.fbc);}}catch(e){console.log(\"📊 Could not read _fbc cookie:\",e);}if(!referrer.fbc){const fbclid=searchParams.get(\"fbclid\")||hashParams.get(\"fbclid\");if(fbclid){referrer.fbc=`fb.1.${Date.now()}.${fbclid}`;console.log(\"📊 fbc constructed from URL fbclid:\",referrer.fbc);}}// Also capture _fbp (browser ID) for server-side events\ntry{const fbpCookie=document.cookie.split(\"; \").find(c=>c.startsWith(\"_fbp=\"));if(fbpCookie){referrer.facebook_browser_id=fbpCookie.split(\"=\")[1];}}catch(e){}const gclid=searchParams.get(\"gclid\")||hashParams.get(\"gclid\");if(gclid){referrer.google_click_id=gclid;console.log(\"📊 Google Click ID:\",gclid);}const gadSource=searchParams.get(\"gad_source\")||hashParams.get(\"gad_source\");if(gadSource){referrer.gad_source=gadSource;}const gadCampaignId=searchParams.get(\"gad_campaignid\")||hashParams.get(\"gad_campaignid\");if(gadCampaignId){referrer.gad_campaign_id=gadCampaignId;}const gbraid=searchParams.get(\"gbraid\")||hashParams.get(\"gbraid\");if(gbraid){referrer.gbraid=gbraid;}// 3. Persist to sessionStorage so Framer remounts don't lose data\nconst result={utm,referrer};try{sessionStorage.setItem(\"_capturedTrackingParams\",JSON.stringify(result));console.log(\"📊 Tracking params persisted to sessionStorage\");}catch(e){}return result;};const handlePhoneInput=(value,questionId)=>{// ✅ UPDATED: Only allow + and numbers (0-9)\n// Strip out EVERYTHING else (spaces, dashes, letters, etc.)\nconst cleanedValue=value.replace(/[^\\d\\+]/g,\"\");// Handle complete deletion\nif(cleanedValue===\"\"){handleAnswer(questionId,\"\");return;}// Handle edge cases with multiple + signs\nif(cleanedValue.includes(\"++\")){const cleanValue=cleanedValue.replace(/\\++/g,\"+\");const formattedValue=formatPhoneNumber(cleanValue);handleAnswer(questionId,formattedValue);return;}// Handle normal input - format based on what user is typing\nconst formattedValue=formatPhoneNumber(cleanedValue);handleAnswer(questionId,formattedValue);};// Mobile detection\nuseEffect(()=>{const checkMobile=()=>{setIsMobile(window.innerWidth<=768);};checkMobile();window.addEventListener(\"resize\",checkMobile);return()=>window.removeEventListener(\"resize\",checkMobile);},[]);// ✅ NEW: Auto-focus input fields when navigating to a new question\nuseEffect(()=>{// ✅ FIXED: Only focus if we haven't already focused this step\nif(lastFocusedStep.current===currentStep){return;// Already focused this step, don't do it again\n}// Mark this step as focused\nlastFocusedStep.current=currentStep;// Wait for transition to complete and DOM to update\nconst focusTimer=setTimeout(()=>{// Get current question\nconst currentQuestionId=questionFlow[currentStep];const currentQuestion=questions[currentQuestionId];if(!currentQuestion)return;// Only auto-focus for input-type questions\nconst inputTypes=[\"input\",\"email\",\"tel\",\"dual-input\",\"address\"];if(inputTypes.includes(currentQuestion.type)){// Try to find and focus the input field\nlet inputElement=null;if(currentQuestion.type===\"dual-input\"){// For dual input (name fields), focus the first input\ninputElement=document.querySelector('input[name=\"given-name\"]');}else if(currentQuestion.type===\"tel\"){inputElement=document.getElementById(\"user-phone-input\");}else if(currentQuestion.type===\"address\"){inputElement=document.querySelector('input[placeholder*=\"Postleitzahl\"]');}else if(currentQuestion.inputType===\"email\"){inputElement=document.querySelector('input[type=\"email\"]');}else{// For other text inputs, try to find by question ID\ninputElement=document.getElementById(`user-text-${currentQuestionId}`);}// Focus the input if found\nif(inputElement){try{inputElement.focus();// Optional: select all text if there's existing content\n// Capture isMobile value at time of focus (not as dependency)\nconst isCurrentlyMobile=window.innerWidth<=768;if(inputElement.value&&!isCurrentlyMobile){inputElement.select();}}catch(error){// Silently fail if focus is not possible\nconsole.log(\"Auto-focus skipped:\",error.message);}}}},350)// Wait slightly longer than the transition (300ms)\n;return()=>clearTimeout(focusTimer);},[currentStep,questionFlow])// ✅ FIXED: Removed isMobile from dependencies\n;// Geocode service center city on mount\nuseEffect(()=>{const geocodeServiceCenter=async()=>{// Skip if coordinates are provided directly\nif(serviceCenterLatitude&&serviceCenterLongitude){setServiceCenterCoordinates({lat:serviceCenterLatitude,lng:serviceCenterLongitude,isGeocoded:false});return;}// Skip if no city provided or Google Maps not loaded\nif(!serviceCenterCity||!window.google?.maps){console.log(\"Waiting for Google Maps or city name...\");return;}try{const geocoder=new window.google.maps.Geocoder;const result=await new Promise((resolve,reject)=>{geocoder.geocode({address:serviceCenterCity+\", Germany\"},(results,status)=>{if(status===\"OK\"&&results[0]){resolve(results[0]);}else{reject(new Error(`Geocoding failed: ${status}`));}});});const location=result.geometry.location;setServiceCenterCoordinates({lat:location.lat(),lng:location.lng(),isGeocoded:true});console.log(`✅ Service center geocoded: ${serviceCenterCity} →`,{lat:location.lat(),lng:location.lng()});}catch(error){console.error(\"Failed to geocode service center:\",error);}};// Wait for Google Maps to load before geocoding\nif(isGoogleMapsLoaded){geocodeServiceCenter();}},[serviceCenterCity,serviceCenterLatitude,serviceCenterLongitude,isGoogleMapsLoaded]);// UTM Parameter Capture\n// UTM Parameter Capture\n// UTM Parameter Capture\n// UTM Parameter Capture\n// UTM Parameter Capture\n// UTM Parameter Capture - REPLACE EXISTING useEffect\nuseEffect(()=>{const{utm,referrer}=captureUTMParameters();// ✅ Set state\nsetUtmParams(utm);setReferrerInfo(referrer);// ✅ Log for debugging\nconsole.log(\"=== UTM CAPTURE ON MOUNT ===\");console.log(\"Captured UTM params:\",utm);console.log(\"Captured referrer info:\",referrer);console.log(\"Current URL:\",window.location.href);console.log(\"URL Search params:\",window.location.search);// Check if any UTMs were found\nconst utmCount=Object.keys(utm).length;if(utmCount===0){console.warn(\"⚠️ No UTM parameters found in URL\");console.log(\"If you expected UTMs, check that the URL contains ?utm_source=...\");}else{console.log(`✅ ${utmCount} UTM parameter(s) captured successfully`);}if(typeof window!==\"undefined\"){const urlParams=new URLSearchParams(window.location.search);// Get headline, subheadline, and button text from URL params\nconst headline=urlParams.get(\"headline\");const subheadline=urlParams.get(\"subheadline\");const buttonText=urlParams.get(\"buttontext\");setCustomHeadline(headline||\"Ihr neues Dach wartet auf Sie\");setCustomSubheadline(subheadline||\"Kostenloses Angebot in nur 2 Minuten – starten Sie jetzt Ihr Dachprojekt\");setCustomButtonText(buttonText||\"Jetzt starten\");// NEW: Check URL parameters for skipping questions\nconst skipServiceParam=urlParams.get(\"skipService\")===\"true\";const serviceValueParam=urlParams.get(\"serviceValue\");const skipRoofTypeParam=urlParams.get(\"skipRoofType\")===\"true\";const roofTypeValueParam=urlParams.get(\"roofTypeValue\");// Set skip state (URL params override props)\nif(skipServiceParam){setShouldSkipService(true);console.log(\"✅ Skipping service question (via URL)\");}if(skipRoofTypeParam){setShouldSkipRoofType(true);console.log(\"✅ Skipping roof type question (via URL)\");}const skipStart=urlParams.get(\"skipStart\")===\"true\";if(skipStart){setShowStartScreen(false);}else{setShowStartScreen(showStartScreenProp);}if(initialQuestionId&&initialQuestionId!==\"roofType\"){const required=getRequiredAnswers(initialQuestionId);setAnswers(prev=>({...prev,...required}));setPendingStep(initialQuestionId);}}},[initialQuestionId,skipServiceQuestion,defaultServiceValue,skipRoofTypeQuestion,defaultRoofTypeValue]);// Track form page view and form start on mount\nuseEffect(()=>{if(isReady){// Fire unique page view event first\ntrackPageViewForm();// Then track form start\ntrackFormStart();}},[isReady]);// CONSOLIDATED tracking useEffect - replaces all three blocks above\n// CONSOLIDATED tracking useEffect - replaces all three blocks above\n// CONSOLIDATED tracking useEffect - replaces all three blocks above\n// CONSOLIDATED tracking useEffect - replaces all three blocks above\n// CONSOLIDATED tracking useEffect - with duplicate prevention\n// CONSOLIDATED tracking useEffect - with duplicate prevention\nuseEffect(()=>{if(!isReady||questionFlow.length===0||currentStep<0)return;const currentQuestionId=questionFlow[currentStep];const currentHashUrl=questionUrls[currentQuestionId];console.log(`🔍 Tracking useEffect fired:`,{step:currentStep,questionId:currentQuestionId,direction:navigationDirection,isTransitioning});// ✅ Use a Set to track ALL steps that have been tracked (prevents any duplicates)\nif(!window._trackedSteps){window._trackedSteps=new Set;}// ✅ Create a unique key for this step to prevent any duplicates\nconst stepKey=currentQuestionId;// ✅ FIXED: Skip tracking if navigating backward\nif(navigationDirection===\"backward\"){console.log(\"⏮️ Skipping tracking - navigating backward\");return;}// Skip if we're in transition\nif(isTransitioning){console.log(\"⏸️ Skipping tracking - in transition\");return;}// ✅ CRITICAL: Only track if we haven't tracked this exact step before\nif(!window._trackedSteps.has(stepKey)&&navigationDirection===\"forward\"){console.log(`✅ Tracking step ${currentStep+1}: ${currentQuestionId}`);// Mark this step as tracked IMMEDIATELY to prevent race conditions\nwindow._trackedSteps.add(stepKey);// Track the individual step event\nconst stepNumber=String(currentStep+1).padStart(2,\"0\");const eventName=`form_step_${stepNumber}_${currentQuestionId}`;trackGA4Event(eventName,{step_number:currentStep+1,step_name:currentQuestionId,total_steps:questionFlow.length,progress_percentage:Math.round((currentStep+1)/questionFlow.length*100)});// Track the generic step view\ntrackStepView(currentStep,currentQuestionId,currentHashUrl);// 🔥 Fire Facebook Pixel event for this step\nconsole.log(`🔥 Firing Facebook Pixel: form_step_${stepNumber}_${currentQuestionId}`);trackFacebookPixelStep(currentQuestionId);// 🔥 ALSO fire special step_10 event when we reach role question\nif(currentQuestionId===\"role\"){trackFacebookPixelStep10();}// Update lastTrackedStep for compatibility\nlastTrackedStep.current=currentStep;}else if(window._trackedSteps.has(stepKey)){console.log(`⏭️ Step ${currentStep+1} already tracked, skipping`);}else{console.log(`⚠️ Not tracking - direction: ${navigationDirection}`);}// ========== BACKFILL SKIPPED STEPS ==========\n// Fire events for conditionally skipped questions to maintain accurate funnel analytics\n// Backfill service step (01) for users who skipped via URL param (skipService=true)\nif(currentQuestionId===\"roofType\"&&finalSkipService){if(!window._trackedSteps.has(\"service\")){window._trackedSteps.add(\"service\");trackGA4Event(\"form_step_01_service\",{step_number:1,step_name:\"service\",skipped:true,skip_reason:\"url_param_skip\"});if(typeof window!==\"undefined\"&&window.fbq){window.fbq(\"trackCustom\",\"form_step_01_service\",{step_name:\"service\",step_number:1,skipped:true});}console.log(\"✅ Backfilled skipped step: form_step_01_service\");}}// Backfill roofType step (02) for users who skipped via URL param (skipRoofType=true)\nif(currentQuestionId===\"houseSize\"&&finalSkipRoofType){if(!window._trackedSteps.has(\"roofType\")){window._trackedSteps.add(\"roofType\");trackGA4Event(\"form_step_02_roofType\",{step_number:2,step_name:\"roofType\",skipped:true,skip_reason:\"url_param_skip\"});if(typeof window!==\"undefined\"&&window.fbq){window.fbq(\"trackCustom\",\"form_step_02_roofType\",{step_name:\"roofType\",step_number:2,skipped:true});}console.log(\"✅ Backfilled skipped step: form_step_02_roofType\");}}// Backfill insulation step (07) for users who selected dach_daemmen\nif(currentQuestionId===\"solar\"||currentQuestionId===\"flachdachSolar\"){const selectedDaemmung=Array.isArray(answers.service)&&answers.service.includes(\"dach_daemmen\");if(selectedDaemmung){const insulationStepId=answers.roofType===\"flachdach\"?\"flachdachInsulation\":\"insulation\";if(!window._trackedSteps.has(insulationStepId)){window._trackedSteps.add(insulationStepId);trackGA4Event(\"form_step_07_\"+insulationStepId,{step_number:7,step_name:insulationStepId,skipped:true,skip_reason:\"dach_daemmen_selected\"});if(typeof window!==\"undefined\"&&window.fbq){window.fbq(\"trackCustom\",`form_step_07_${insulationStepId}`,{step_name:insulationStepId,step_number:7,skipped:true});}console.log(`✅ Backfilled skipped step: form_step_07_${insulationStepId}`);}}}// ========== END BACKFILL CODE ==========\n// Update step start time\nsetStepStartTime(Date.now());// Clear any existing inactivity timer\nif(inactivityTimer){clearTimeout(inactivityTimer);}// Set up new inactivity timer (5 minutes)\nconst timer=setTimeout(()=>{trackGA4Event(\"step_timeout_abandonment\",{event_category:\"form_funnel\",event_label:\"step_timeout\",step_number:currentStep+1,step_hash_url:currentHashUrl,step_question_id:currentQuestionId,time_on_step_seconds:Math.round((Date.now()-stepStartTime)/1e3),total_steps:questionFlow.length,progress_percentage:Math.round((currentStep+1)/questionFlow.length*100),funnel_name:\"roof_lead_generation\"});},5*60*1e3)// 5 minutes\n;setInactivityTimer(timer);// SINGLE consolidated abandonment handler\nconst handleAbandonment=abandonmentType=>{if(currentStep<questionFlow.length-1){const timeOnStep=Math.round((Date.now()-stepStartTime)/1e3);// Track the abandonment\ntrackGA4Event(\"form_abandoned\",{event_category:\"form_funnel\",event_label:`abandonment_${abandonmentType}`,abandonment_type:abandonmentType,step_number:currentStep+1,step_hash_url:currentHashUrl,step_question_id:currentQuestionId,time_on_step_seconds:timeOnStep,progress_percentage:Math.round((currentStep+1)/questionFlow.length*100),total_steps:questionFlow.length,funnel_name:\"roof_lead_generation\"});}};// Page unload handler (desktop)\nconst handleBeforeUnload=()=>{handleAbandonment(\"page_unload\");};// Visibility change handler (mobile-friendly)\nlet visibilityTimer;const handleVisibilityChange=()=>{if(document.hidden){// User switched away - start timer\nvisibilityTimer=setTimeout(()=>{handleAbandonment(\"visibility_timeout\");},3e4)// 30 seconds\n;}else{// User came back - clear timer\nif(visibilityTimer){clearTimeout(visibilityTimer);visibilityTimer=null;}}};// Add event listeners\nif(typeof window!==\"undefined\"){window.addEventListener(\"beforeunload\",handleBeforeUnload);document.addEventListener(\"visibilitychange\",handleVisibilityChange);}// Cleanup function\nreturn()=>{if(inactivityTimer){clearTimeout(inactivityTimer);}if(visibilityTimer){clearTimeout(visibilityTimer);}if(typeof window!==\"undefined\"){window.removeEventListener(\"beforeunload\",handleBeforeUnload);document.removeEventListener(\"visibilitychange\",handleVisibilityChange);}};},[currentStep,questionFlow,isReady,stepStartTime,navigationDirection]);// ✅ NEW: Debug UTM Panel Component\nconst DebugUTMPanel=({utmParams,referrerInfo,currentStep})=>{if(!DEBUG_SHOW_UTM_PANEL||currentStep!==0)return null;// Log everything as individual variables\nconsole.log(\"═══════════════════════════════════════\");console.log(\"🔍 UTM PARAMETERS DEBUG (Step 1)\");console.log(\"═══════════════════════════════════════\");// Log UTM params as individual variables\nconst utm_source=utmParams.utm_source||\"NOT SET\";const utm_medium=utmParams.utm_medium||\"NOT SET\";const utm_campaign=utmParams.utm_campaign||\"NOT SET\";const utm_content=utmParams.utm_content||\"NOT SET\";const utm_term=utmParams.utm_term||\"NOT SET\";const utm_id=utmParams.utm_id||\"NOT SET\";console.log(\"📌 UTM Variables:\");console.log(`  utm_source = \"${utm_source}\"`);console.log(`  utm_medium = \"${utm_medium}\"`);console.log(`  utm_campaign = \"${utm_campaign}\"`);console.log(`  utm_content = \"${utm_content}\"`);console.log(`  utm_term = \"${utm_term}\"`);console.log(`  utm_id = \"${utm_id}\"`);// Log tracking IDs as individual variables\nconst gclid=referrerInfo.google_click_id||\"NOT SET\";const fbclid=referrerInfo.facebook_click_id||\"NOT SET\";const gad_source=referrerInfo.gad_source||\"NOT SET\";const gad_campaign_id=referrerInfo.gad_campaign_id||\"NOT SET\";const gbraid=referrerInfo.gbraid||\"NOT SET\";console.log(\"\\n📌 Tracking IDs:\");console.log(`  gclid = \"${gclid}\"`);console.log(`  fbclid = \"${fbclid}\"`);console.log(`  gad_source = \"${gad_source}\"`);console.log(`  gad_campaign_id = \"${gad_campaign_id}\"`);console.log(`  gbraid = \"${gbraid}\"`);// Log page info\nconst landing_page=referrerInfo.landingPage||\"NOT SET\";const referrer_url=referrerInfo.url||\"NOT SET\";console.log(\"\\n📌 Page Info:\");console.log(`  landing_page = \"${landing_page}\"`);console.log(`  referrer_url = \"${referrer_url}\"`);console.log(\"\\n📌 Current URL Parts:\");console.log(`  search = \"${window.location.search}\"`);console.log(`  hash = \"${window.location.hash}\"`);console.log(`  full_url = \"${window.location.href}\"`);console.log(\"═══════════════════════════════════════\\n\");const hasUtmParams=Object.keys(utmParams).length>0;const hasTrackingIds=gclid!==\"NOT SET\"||fbclid!==\"NOT SET\";return /*#__PURE__*/_jsxs(\"div\",{style:{position:\"fixed\",top:\"10px\",right:\"10px\",maxWidth:\"400px\",backgroundColor:\"#1e293b\",color:\"#f8fafc\",padding:\"16px\",borderRadius:\"12px\",boxShadow:\"0 10px 40px rgba(0, 0, 0, 0.3)\",fontSize:\"12px\",fontFamily:\"monospace\",zIndex:9999,maxHeight:\"80vh\",overflowY:\"auto\",border:\"2px solid #3b82f6\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:\"8px\",marginBottom:\"12px\",paddingBottom:\"12px\",borderBottom:\"1px solid #475569\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{fontSize:\"16px\"},children:\"🔍\"}),/*#__PURE__*/_jsx(\"strong\",{style:{fontSize:\"14px\"},children:\"UTM Debug Panel\"}),/*#__PURE__*/_jsx(\"span\",{style:{marginLeft:\"auto\",padding:\"2px 8px\",backgroundColor:hasUtmParams||hasTrackingIds?\"#10b981\":\"#ef4444\",color:\"white\",borderRadius:\"4px\",fontSize:\"10px\",fontWeight:\"bold\"},children:hasUtmParams||hasTrackingIds?\"ACTIVE\":\"NO PARAMS\"})]}),/*#__PURE__*/_jsxs(\"div\",{style:{marginBottom:\"12px\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{color:\"#94a3b8\",fontSize:\"11px\",fontWeight:\"bold\",marginBottom:\"6px\"},children:\"📌 UTM PARAMETERS:\"}),Object.keys(utmParams).length>0?Object.entries(utmParams).map(([key,value])=>/*#__PURE__*/_jsxs(\"div\",{style:{padding:\"6px 8px\",backgroundColor:\"#334155\",borderRadius:\"4px\",marginBottom:\"4px\",display:\"flex\",justifyContent:\"space-between\",gap:\"8px\"},children:[/*#__PURE__*/_jsxs(\"span\",{style:{color:\"#60a5fa\",fontWeight:\"bold\"},children:[key,\":\"]}),/*#__PURE__*/_jsxs(\"span\",{style:{color:\"#86efac\",wordBreak:\"break-all\",textAlign:\"right\"},children:['\"',value,'\"']})]},key)):/*#__PURE__*/_jsx(\"div\",{style:{padding:\"8px\",backgroundColor:\"#334155\",borderRadius:\"4px\",color:\"#94a3b8\",fontStyle:\"italic\"},children:\"No UTM parameters found\"})]}),(gclid!==\"NOT SET\"||fbclid!==\"NOT SET\"||gad_source!==\"NOT SET\")&&/*#__PURE__*/_jsxs(\"div\",{style:{marginBottom:\"12px\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{color:\"#94a3b8\",fontSize:\"11px\",fontWeight:\"bold\",marginBottom:\"6px\"},children:\"🎯 TRACKING IDs:\"}),gclid!==\"NOT SET\"&&/*#__PURE__*/_jsxs(\"div\",{style:{padding:\"6px 8px\",backgroundColor:\"#334155\",borderRadius:\"4px\",marginBottom:\"4px\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{color:\"#60a5fa\"},children:\"gclid:\"}),\" \",/*#__PURE__*/_jsxs(\"span\",{style:{color:\"#86efac\"},children:['\"',gclid,'\"']})]}),fbclid!==\"NOT SET\"&&/*#__PURE__*/_jsxs(\"div\",{style:{padding:\"6px 8px\",backgroundColor:\"#334155\",borderRadius:\"4px\",marginBottom:\"4px\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{color:\"#60a5fa\"},children:\"fbclid:\"}),\" \",/*#__PURE__*/_jsxs(\"span\",{style:{color:\"#86efac\"},children:['\"',fbclid,'\"']})]}),gad_source!==\"NOT SET\"&&/*#__PURE__*/_jsxs(\"div\",{style:{padding:\"6px 8px\",backgroundColor:\"#334155\",borderRadius:\"4px\",marginBottom:\"4px\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{color:\"#60a5fa\"},children:\"gad_source:\"}),\" \",/*#__PURE__*/_jsxs(\"span\",{style:{color:\"#86efac\"},children:['\"',gad_source,'\"']})]}),gad_campaign_id!==\"NOT SET\"&&/*#__PURE__*/_jsxs(\"div\",{style:{padding:\"6px 8px\",backgroundColor:\"#334155\",borderRadius:\"4px\",marginBottom:\"4px\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{color:\"#60a5fa\"},children:\"gad_campaign_id:\"}),\" \",/*#__PURE__*/_jsxs(\"span\",{style:{color:\"#86efac\"},children:['\"',gad_campaign_id,'\"']})]}),gbraid!==\"NOT SET\"&&/*#__PURE__*/_jsxs(\"div\",{style:{padding:\"6px 8px\",backgroundColor:\"#334155\",borderRadius:\"4px\",marginBottom:\"4px\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{color:\"#60a5fa\"},children:\"gbraid:\"}),\" \",/*#__PURE__*/_jsxs(\"span\",{style:{color:\"#86efac\"},children:['\"',gbraid,'\"']})]})]}),/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"div\",{style:{color:\"#94a3b8\",fontSize:\"11px\",fontWeight:\"bold\",marginBottom:\"6px\"},children:\"📄 PAGE INFO:\"}),/*#__PURE__*/_jsxs(\"div\",{style:{padding:\"6px 8px\",backgroundColor:\"#334155\",borderRadius:\"4px\",marginBottom:\"4px\",fontSize:\"10px\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{color:\"#94a3b8\",marginBottom:\"2px\"},children:\"Search:\"}),/*#__PURE__*/_jsx(\"div\",{style:{color:\"#fbbf24\",wordBreak:\"break-all\"},children:window.location.search||\"(empty)\"})]}),/*#__PURE__*/_jsxs(\"div\",{style:{padding:\"6px 8px\",backgroundColor:\"#334155\",borderRadius:\"4px\",fontSize:\"10px\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{color:\"#94a3b8\",marginBottom:\"2px\"},children:\"Hash:\"}),/*#__PURE__*/_jsx(\"div\",{style:{color:\"#fbbf24\",wordBreak:\"break-all\"},children:window.location.hash||\"(empty)\"})]})]}),/*#__PURE__*/_jsx(\"div\",{style:{marginTop:\"12px\",paddingTop:\"12px\",borderTop:\"1px solid #475569\",fontSize:\"10px\",color:\"#64748b\",textAlign:\"center\"},children:\"Check console for variable declarations\"})]});};// Thank You Page Component\n// Start Screen Component\n// Start Screen Component - Professional & Conversion-Focused\n// Start Screen Component - Professional & Conversion-Focused\n// Start Screen Component - Professional & Conversion-Focused\nconst StartScreen=()=>/*#__PURE__*/_jsxs(\"div\",{style:containerStyle,children:[/*#__PURE__*/_jsx(\"div\",{style:contentContainerStyle,children:/*#__PURE__*/_jsx(\"div\",{style:mainContainerStyle,children:/*#__PURE__*/_jsxs(\"div\",{style:{padding:\"0\",background:\"transparent\",position:\"relative\",overflow:\"visible\",marginTop:isMobile?\"20px\":\"40px\",animation:\"fadeIn 0.6s ease-out\",boxShadow:\"none\",borderRadius:\"0\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{padding:isMobile?\"48px 0 32px\":\"64px 0 48px\"},children:[/*#__PURE__*/_jsx(\"h1\",{style:{fontSize:isMobile?\"28px\":\"44px\",fontWeight:\"800\",color:\"#0f172a\",margin:\"0 0 12px 0\",lineHeight:\"1.05\",letterSpacing:\"-0.03em\",textAlign:\"center\",maxWidth:\"900px\",marginLeft:\"auto\",marginRight:\"auto\"},children:customHeadline}),/*#__PURE__*/_jsx(\"p\",{style:{fontSize:isMobile?\"16px\":\"19px\",color:\"#475569\",margin:\"0 0 32px 0\",lineHeight:\"1.5\",textAlign:\"center\",maxWidth:\"800px\",marginLeft:\"auto\",marginRight:\"auto\"},children:customSubheadline}),/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",justifyContent:\"center\",width:\"100%\"},children:/*#__PURE__*/_jsxs(\"button\",{onClick:()=>{setShowStartScreen(false);trackFormStart();},style:{width:isMobile?\"100%\":\"320px\",padding:isMobile?\"20px 32px\":\"22px 40px\",background:`linear-gradient(135deg, ${colors.primary}, ${colors.primaryHover})`,color:\"white\",border:\"none\",borderRadius:\"12px\",fontSize:isMobile?\"18px\":\"20px\",fontWeight:\"700\",cursor:\"pointer\",transition:\"all 0.3s cubic-bezier(0.4, 0, 0.2, 1)\",boxShadow:`0 20px 40px ${colors.primary}35`,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",gap:\"12px\",letterSpacing:\"-0.01em\",transform:\"translateY(0)\",position:\"relative\",overflow:\"hidden\"},onMouseEnter:e=>{e.currentTarget.style.transform=\"translateY(-2px)\";e.currentTarget.style.boxShadow=`0 25px 50px ${colors.primary}40`;},onMouseLeave:e=>{e.currentTarget.style.transform=\"translateY(0)\";e.currentTarget.style.boxShadow=`0 20px 40px ${colors.primary}35`;},children:[/*#__PURE__*/_jsx(\"span\",{children:customButtonText}),/*#__PURE__*/_jsx(\"span\",{style:{fontSize:\"18px\",animation:\"slideRight 1.5s infinite\"},children:\"→\"})]})}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:isMobile?\"column\":\"row\",alignItems:\"center\",justifyContent:\"center\",gap:isMobile?\"12px\":\"24px\",marginTop:\"20px\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:\"6px\",fontSize:isMobile?\"13px\":\"14px\",color:\"#64748b\",fontWeight:\"500\"},children:[/*#__PURE__*/_jsx(\"span\",{children:\"⏱\"}),/*#__PURE__*/_jsx(\"span\",{children:\"Nur 2 Minuten\"})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:\"6px\",fontSize:isMobile?\"13px\":\"14px\",color:\"#64748b\",fontWeight:\"500\"},children:[/*#__PURE__*/_jsx(\"span\",{children:\"🔒\"}),/*#__PURE__*/_jsx(\"span\",{children:\"100% kostenlos\"})]})]})]}),/*#__PURE__*/_jsx(\"div\",{style:{/* borderTop: \"1px solid #e2e8f0\",\n                                padding: isMobile ? \"24px\" : \"32px 48px\",\n                                background: \"#fafbfc\",\n                                borderBottomLeftRadius: \"24px\",\n                                borderBottomRightRadius: \"24px\",*/borderTop:\"none\",padding:isMobile?\"24px 0\":\"32px 0\",background:\"transparent\",borderBottomLeftRadius:\"0\",borderBottomRightRadius:\"0\"},children:/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:isMobile?\"row\":\"row\",alignItems:\"center\",justifyContent:\"center\",gap:isMobile?\"12px\":\"16px\",padding:isMobile?\"16px 20px\":\"20px 32px\",backgroundColor:\"#f8fafc\",borderRadius:\"12px\",maxWidth:\"420px\",margin:\"0 auto\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",gap:\"2px\"},children:[...Array(5)].map((_,i)=>/*#__PURE__*/_jsx(\"span\",{style:{fontSize:isMobile?\"16px\":\"18px\",color:\"#fbbf24\"},children:\"★\"},i))}),/*#__PURE__*/_jsxs(\"div\",{style:{textAlign:\"left\"},children:[/*#__PURE__*/_jsx(\"p\",{style:{fontSize:isMobile?\"13px\":\"14px\",color:\"#1e293b\",fontWeight:\"600\",margin:\"0 0 2px 0\",lineHeight:\"1.3\"},children:\"27+ zufriedene Kunden\"}),/*#__PURE__*/_jsx(\"p\",{style:{fontSize:isMobile?\"11px\":\"12px\",color:\"#64748b\",margin:\"0\",lineHeight:\"1.3\"},children:\"in den letzten 12 Monaten\"})]})]})})]})})}),/*#__PURE__*/_jsx(\"style\",{children:`\n            @keyframes slideRight {\n                0%, 100% { transform: translateX(0); }\n                50% { transform: translateX(4px); }\n            }\n            \n            @keyframes fadeIn {\n                from { opacity: 0; }\n                to { opacity: 1; }\n            }\n        `})]});// Not Available Page Component for Mieter\n// Not Available Page Component for Mieter\n// Not Available Page Component for Mieter\nconst NotAvailablePage=()=>/*#__PURE__*/_jsx(\"div\",{style:containerStyle,children:/*#__PURE__*/_jsx(\"div\",{style:contentContainerStyle,children:/*#__PURE__*/_jsx(\"div\",{style:{maxWidth:\"480px\",width:\"100%\",margin:\"0 auto\",marginTop:isMobile?\"40px\":\"80px\"},children:/*#__PURE__*/_jsxs(\"div\",{style:{background:\"white\",borderRadius:\"24px\",border:\"none\",padding:isMobile?\"48px 32px\":\"64px 48px\",textAlign:\"center\",boxShadow:\"none\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{width:\"64px\",height:\"64px\",background:colors.primary,borderRadius:\"50%\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",margin:\"0 auto 40px\"},children:/*#__PURE__*/_jsxs(\"svg\",{width:\"32\",height:\"32\",viewBox:\"0 0 24 24\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",children:[/*#__PURE__*/_jsx(\"path\",{d:\"M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7z\",stroke:\"white\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"}),/*#__PURE__*/_jsx(\"circle\",{cx:\"12\",cy:\"9\",r:\"2.5\",stroke:\"white\",strokeWidth:\"2\"})]})}),/*#__PURE__*/_jsx(\"h1\",{style:{fontSize:\"22px\",fontWeight:\"600\",color:\"#1a1a1a\",marginBottom:\"12px\",letterSpacing:\"-0.02em\"},children:\"Service nicht verf\\xfcgbar\"}),/*#__PURE__*/_jsx(\"p\",{style:{fontSize:\"15px\",color:\"#737373\",lineHeight:\"1.6\",marginBottom:\"32px\"},children:\"Unser Service richtet sich derzeit ausschlie\\xdflich an Hauseigent\\xfcmer, Bautr\\xe4ger und Hausverwaltungen.\"}),/*#__PURE__*/_jsx(\"div\",{style:{background:\"#fafafa\",border:\"1px solid #e5e5e5\",borderRadius:\"20px\",padding:\"24px\",marginBottom:\"32px\",textAlign:\"left\"},children:/*#__PURE__*/_jsx(\"p\",{style:{fontSize:\"14px\",color:\"#737373\",lineHeight:\"1.6\",margin:0},children:\"Als Mieter wenden Sie sich bitte direkt an Ihren Vermieter oder die Hausverwaltung f\\xfcr Dacharbeiten.\"})}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:\"12px\",marginBottom:\"32px\"},children:[/*#__PURE__*/_jsx(\"button\",{onClick:()=>{// Reset the mieter selection and go back to role question\n    setIsMieterSelected(false);setAnswers(prev=>({...prev,role:undefined}));// Find role question in flow and navigate to it\n    const roleIndex=questionFlow.indexOf(\"role\");if(roleIndex!==-1){setCurrentStep(roleIndex);window.scrollTo({top:0,behavior:\"smooth\"});}},style:{padding:\"14px 24px\",borderRadius:\"16px\",fontSize:\"15px\",fontWeight:\"600\",cursor:\"pointer\",border:\"none\",transition:\"all 0.15s ease\",background:colors.primary,color:\"white\"},onMouseEnter:e=>{e.target.style.background=colors.primaryHover;e.target.style.transform=\"translateY(-2px)\";},onMouseLeave:e=>{e.target.style.background=colors.primary;e.target.style.transform=\"translateY(0)\";},children:\"← Rolle \\xe4ndern\"}),/*#__PURE__*/_jsx(\"button\",{onClick:()=>{window.location.href=getBaseUrl();},style:{padding:\"12px 24px\",borderRadius:\"16px\",fontSize:\"14px\",fontWeight:\"500\",cursor:\"pointer\",border:\"1px solid #e5e5e5\",transition:\"all 0.15s ease\",background:\"white\",color:\"#1a1a1a\"},onMouseEnter:e=>{e.target.style.background=\"#f9fafb\";},onMouseLeave:e=>{e.target.style.background=\"white\";},style:{padding:\"12px 24px\",borderRadius:\"16px\",fontSize:\"14px\",fontWeight:\"500\",cursor:\"pointer\",border:\"none\",transition:\"all 0.15s ease\",background:colors.primary,color:\"white\"},onMouseEnter:e=>{e.target.style.background=colors.primaryHover;},onMouseLeave:e=>{e.target.style.background=colors.primary;},children:\"Zur Website\"})]}),/*#__PURE__*/_jsx(\"div\",{style:{fontSize:\"13px\",color:\"#a3a3a3\",lineHeight:\"1.6\",paddingTop:\"32px\",borderTop:\"1px solid #e5e5e5\"},children:\"Vielen Dank f\\xfcr Ihr Verst\\xe4ndnis.\"})]})})})});// Out of Service Area Page Component\n// Out of Service Area Page Component\nconst OutOfServiceAreaPage=()=>/*#__PURE__*/_jsx(\"div\",{style:containerStyle,children:/*#__PURE__*/_jsx(\"div\",{style:contentContainerStyle,children:/*#__PURE__*/_jsx(\"div\",{style:{maxWidth:\"480px\",width:\"100%\",margin:\"0 auto\",marginTop:isMobile?\"40px\":\"80px\"},children:/*#__PURE__*/_jsxs(\"div\",{style:{background:\"white\",borderRadius:\"24px\",border:\"none\",padding:isMobile?\"48px 32px\":\"64px 48px\",textAlign:\"center\",boxShadow:\"none\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{width:\"64px\",height:\"64px\",background:colors.primary,borderRadius:\"50%\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",margin:\"0 auto 40px\"},children:/*#__PURE__*/_jsxs(\"svg\",{width:\"32\",height:\"32\",viewBox:\"0 0 24 24\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",children:[/*#__PURE__*/_jsx(\"path\",{d:\"M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7z\",stroke:\"white\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"}),/*#__PURE__*/_jsx(\"circle\",{cx:\"12\",cy:\"9\",r:\"2.5\",stroke:\"white\",strokeWidth:\"2\"})]})}),/*#__PURE__*/_jsx(\"h1\",{style:{fontSize:\"22px\",fontWeight:\"600\",color:\"#1a1a1a\",marginBottom:\"12px\",letterSpacing:\"-0.02em\"},children:\"Au\\xdferhalb des Servicebereichs\"}),/*#__PURE__*/_jsx(\"p\",{style:{fontSize:\"15px\",color:\"#737373\",lineHeight:\"1.6\",marginBottom:\"32px\"},children:\"Leider k\\xf6nnen wir diese Adresse derzeit nicht bedienen.\"}),/*#__PURE__*/_jsxs(\"div\",{style:{background:\"#fafafa\",border:\"1px solid #e5e5e5\",borderRadius:\"20px\",padding:\"24px\",marginBottom:\"32px\",textAlign:\"left\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",justifyContent:\"space-between\",alignItems:\"center\",padding:\"12px 0\",borderBottom:\"1px solid #e5e5e5\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{fontSize:\"14px\",color:\"#737373\"},children:\"Entfernung\"}),/*#__PURE__*/_jsx(\"span\",{style:{fontSize:\"14px\",fontWeight:\"600\",color:\"#1a1a1a\"},children:distanceFromCenter?`${Math.round(distanceFromCenter)} km`:\"—\"})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",justifyContent:\"space-between\",alignItems:\"center\",padding:\"12px 0\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{fontSize:\"14px\",color:\"#737373\"},children:\"Aktueller Serviceradius\"}),/*#__PURE__*/_jsxs(\"span\",{style:{fontSize:\"14px\",fontWeight:\"600\",color:\"#1a1a1a\"},children:[serviceRadiusKm,\" km\"]})]})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:\"12px\",marginBottom:\"32px\"},children:[/*#__PURE__*/_jsx(\"button\",{onClick:()=>{// Reset the address and go back to address question\n    setIsOutOfServiceArea(false);setShowServiceAreaWarning(false);setDistanceFromCenter(null);setIsAddressFromGoogle(false);setAnswers(prev=>({...prev,address:\"\"}));// Clear autocomplete reference to force re-initialization\n    autocompleteRef.current=null;mapInstanceRef.current=null;// Find address question in flow and navigate to it\n    const addressIndex=questionFlow.indexOf(\"address\");if(addressIndex!==-1){setCurrentStep(addressIndex);window.scrollTo({top:0,behavior:\"smooth\"});}},style:{padding:\"14px 24px\",borderRadius:\"16px\",fontSize:\"15px\",fontWeight:\"600\",cursor:\"pointer\",border:\"none\",transition:\"all 0.15s ease\",background:colors.primary,color:\"white\"},onMouseEnter:e=>{e.target.style.background=colors.primaryHover;e.target.style.transform=\"translateY(-2px)\";},onMouseLeave:e=>{e.target.style.background=colors.primary;e.target.style.transform=\"translateY(0)\";},children:\"← Adresse \\xe4ndern\"}),/*#__PURE__*/_jsx(\"button\",{onClick:()=>{window.location.href=getBaseUrl();},style:{padding:\"12px 24px\",borderRadius:\"16px\",fontSize:\"14px\",fontWeight:\"500\",cursor:\"pointer\",border:\"none\",transition:\"all 0.15s ease\",background:colors.primary,color:\"white\"},onMouseEnter:e=>{e.target.style.background=colors.primaryHover;},onMouseLeave:e=>{e.target.style.background=colors.primary;},children:\"Bei Expansion benachrichtigen\"}),/*#__PURE__*/_jsx(\"button\",{onClick:()=>{window.location.href=getBaseUrl();},style:{padding:\"12px 24px\",borderRadius:\"16px\",fontSize:\"14px\",fontWeight:\"500\",cursor:\"pointer\",transition:\"all 0.15s ease\",background:\"white\",color:\"#1a1a1a\",border:\"1px solid #e5e5e5\"},onMouseEnter:e=>{e.target.style.background=\"#fafafa\";},onMouseLeave:e=>{e.target.style.background=\"white\";},children:\"Zur\\xfcck zur Startseite\"})]}),/*#__PURE__*/_jsx(\"div\",{style:{fontSize:\"13px\",color:\"#a3a3a3\",lineHeight:\"1.6\",paddingTop:\"32px\",borderTop:\"1px solid #e5e5e5\"},children:\"Wir erweitern kontinuierlich unseren Servicebereich. Kontaktieren Sie uns f\\xfcr weitere Informationen.\"})]})})})});// Google Maps API Loading\nuseEffect(()=>{if(typeof window!==\"undefined\"){const loadGoogleMapsScript=()=>{if(window.google&&window.google.maps){setIsGoogleMapsLoaded(true);return;}const script=document.createElement(\"script\");script.src=`https://maps.googleapis.com/maps/api/js?key=AIzaSyAYgUol72_HZC4aGBGOvTXlcgY92uSmpYY&libraries=places`;script.async=true;script.defer=true;script.onload=()=>setIsGoogleMapsLoaded(true);script.onerror=()=>{console.error(\"Failed to load Google Maps API\");};document.head.appendChild(script);};loadGoogleMapsScript();}},[]);// Prevent Google Maps from attaching to non-address inputs\n// FIXED: Properly block Google Maps on non-address fields\nuseEffect(()=>{if(typeof window===\"undefined\")return;// Track which input is currently focused\nlet currentFocusedInput=null;// Function to destroy Google Maps dropdown on blocked fields\nconst destroyGoogleMapsOnBlockedFields=()=>{const allPacContainers=document.querySelectorAll(\".pac-container\");allPacContainers.forEach(container=>{// Check if current focused element is a blocked input\nconst activeElement=document.activeElement;if(activeElement&&activeElement.hasAttribute(\"data-block-google-maps\")&&activeElement.tagName===\"INPUT\"){// DESTROY IT\ncontainer.style.display=\"none\";container.style.visibility=\"hidden\";container.style.opacity=\"0\";container.style.height=\"0\";container.style.overflow=\"hidden\";container.style.pointerEvents=\"none\";// Nuclear option: remove it from DOM\nif(container.parentNode){container.parentNode.removeChild(container);}}});};// Run immediately\ndestroyGoogleMapsOnBlockedFields();// Run every 100ms to catch any new Google Maps dropdowns\nconst interval=setInterval(destroyGoogleMapsOnBlockedFields,100);// Watch for DOM changes\nconst observer=new MutationObserver(destroyGoogleMapsOnBlockedFields);observer.observe(document.body,{childList:true,subtree:true});// Add focus listeners to ALL inputs to track which is focused\nconst handleFocus=e=>{if(e.target.tagName===\"INPUT\"){currentFocusedInput=e.target;// If it's a blocked input, immediately destroy any pac-containers\nif(e.target.hasAttribute(\"data-block-google-maps\")){setTimeout(destroyGoogleMapsOnBlockedFields,0);setTimeout(destroyGoogleMapsOnBlockedFields,50);setTimeout(destroyGoogleMapsOnBlockedFields,100);setTimeout(destroyGoogleMapsOnBlockedFields,200);}}};const handleInput=e=>{if(e.target.tagName===\"INPUT\"&&e.target.hasAttribute(\"data-block-google-maps\")){setTimeout(destroyGoogleMapsOnBlockedFields,0);setTimeout(destroyGoogleMapsOnBlockedFields,50);}};// Add global listeners\ndocument.addEventListener(\"focusin\",handleFocus,true);document.addEventListener(\"input\",handleInput,true);return()=>{clearInterval(interval);observer.disconnect();document.removeEventListener(\"focusin\",handleFocus,true);document.removeEventListener(\"input\",handleInput,true);};},[currentStep]);// Initialize Google Maps autocomplete - ENHANCED VERSION WITH MAP DISPLAY\nuseEffect(()=>{if(isGoogleMapsLoaded&&questionFlow[currentStep]===\"address\"&&addressInputRef.current&&!autocompleteRef.current){try{const autocompleteInstance=new window.google.maps.places.Autocomplete(addressInputRef.current,{types:[\"geocode\"],componentRestrictions:{country:\"de\"},fields:[\"formatted_address\",\"geometry\",\"address_components\",\"place_id\",\"types\"]});autocompleteRef.current=autocompleteInstance;autocompleteInstance.addListener(\"place_changed\",()=>{const place=autocompleteInstance.getPlace();if(place.formatted_address&&place.geometry&&place.place_id){handleAnswer(\"address\",place.formatted_address);setIsAddressFromGoogle(true);setAddressValidationStatus(\"checking\")// Show checking status\n;const components=updateAddressComponents(place,\"google_maps\");if(components.latitude&&components.longitude){console.log(\"🔍 Distance Calculation Debug:\",{serviceCenterCity:serviceCenterCity,serviceCenterCoords:serviceCenterCoordinates,userAddress:components.formatted_address,userCoords:{lat:components.latitude,lng:components.longitude}});// Skip distance check if service center not geocoded yet\nif(!serviceCenterCoordinates.lat||!serviceCenterCoordinates.lng){console.warn(\"⚠️ Service center coordinates not ready yet!\");setDistanceFromCenter(0);setIsOutOfServiceArea(false);setShowServiceAreaWarning(false);setAddressValidationStatus(\"valid\")// Show as valid\n;// Show map but don't auto-advance\nif(showMapAfterAddress){setTimeout(()=>{initializeMap(place);},300);}return;}const distance=calculateDistance(serviceCenterCoordinates.lat,serviceCenterCoordinates.lng,components.latitude,components.longitude);console.log(`📏 Distance calculated: ${Math.round(distance)} km (max: ${serviceRadiusKm} km)`);setDistanceFromCenter(distance);if(distance>serviceRadiusKm){setIsOutOfServiceArea(true);setAddressValidationStatus(\"invalid\")// Show as invalid\n;// Fire Facebook event when address is out of service radius\ntrackFacebookPixelOutOfRadius(distance);if(showDistanceWarning){setShowServiceAreaWarning(true);}}else{setIsOutOfServiceArea(false);setShowServiceAreaWarning(false);setAddressValidationStatus(\"valid\")// Show as valid\n;// Show map but don't auto-advance\nif(showMapAfterAddress){setTimeout(()=>{initializeMap(place);},300);}}}}else{setIsAddressFromGoogle(false);setAddressValidationStatus(null)// Reset status\n;}});console.log(\"Google Maps autocomplete initialized\");}catch(error){console.log(\"Failed to initialize Google Maps autocomplete:\",error);}}// Cleanup when leaving address step\nreturn()=>{if(autocompleteRef.current&&questionFlow[currentStep]!==\"address\"){try{window.google.maps.event.clearInstanceListeners(autocompleteRef.current);}catch(error){console.log(\"Cleanup error:\",error);}autocompleteRef.current=null;mapInstanceRef.current=null;}};},[isGoogleMapsLoaded,currentStep,questionFlow]);// Initialize the Google Map display\nconst initializeMap=place=>{if(!mapRef.current||!place.geometry)return;try{// Create the map with satellite view\nconst map=new window.google.maps.Map(mapRef.current,{center:place.geometry.location,zoom:18,mapTypeId:window.google.maps.MapTypeId.SATELLITE,disableDefaultUI:true,zoomControl:true,zoomControlOptions:{position:window.google.maps.ControlPosition.RIGHT_BOTTOM},mapTypeControl:true,mapTypeControlOptions:{position:window.google.maps.ControlPosition.TOP_RIGHT,style:window.google.maps.MapTypeControlStyle.DROPDOWN_MENU,mapTypeIds:[window.google.maps.MapTypeId.SATELLITE,window.google.maps.MapTypeId.ROADMAP,window.google.maps.MapTypeId.HYBRID]}});// Add a custom marker\nconst marker=new window.google.maps.Marker({position:place.geometry.location,map:map,title:place.formatted_address,icon:{path:window.google.maps.SymbolPath.CIRCLE,scale:12,fillColor:\"#5E68EA\",fillOpacity:1,strokeColor:\"#ffffff\",strokeWeight:3},animation:window.google.maps.Animation.DROP});mapInstanceRef.current=map;// Animate the map container\nif(mapRef.current){mapRef.current.style.height=\"0px\";mapRef.current.style.opacity=\"0\";mapRef.current.style.transform=\"translateY(20px)\";mapRef.current.style.display=\"block\";// Trigger animation\nsetTimeout(()=>{mapRef.current.style.transition=\"all 0.8s cubic-bezier(0.4, 0, 0.2, 1)\";mapRef.current.style.height=isMobile?\"300px\":\"400px\";mapRef.current.style.opacity=\"1\";mapRef.current.style.transform=\"translateY(0px)\";// Resize map after animation\nsetTimeout(()=>{window.google.maps.event.trigger(map,\"resize\");map.setCenter(place.geometry.location);},400);},100);}}catch(error){console.log(\"Failed to initialize map:\",error);}};// Clean up on unmount\nuseEffect(()=>{return()=>{if(autocompleteRef.current){try{window.google.maps.event.clearInstanceListeners(autocompleteRef.current);}catch(error){// Ignore cleanup errors on unmount\n}autocompleteRef.current=null;}if(mapInstanceRef.current){mapInstanceRef.current=null;}};},[]);// Question flow generation logic\n// Question flow generation logic\nconst generateQuestionFlow=()=>{debugLogger.logFlow(\"🔄 Generating Question Flow\",{currentAnswers:answers});let flow=[];// Only add service question if not skipped\nif(!finalSkipService){flow.push(\"service\");}else{console.log(\"⏭️ SKIPPED: service question\");}// Only add roofType question if not skipped\nif(!finalSkipRoofType){flow.push(\"roofType\");}else{console.log(\"⏭️ SKIPPED: roofType question\");}// Add houseSize after roofType\nflow.push(\"houseSize\");console.log(\"=== GENERATING QUESTION FLOW ===\");console.log(\"Current answers:\",answers);console.log(\"Role selected:\",answers.role);const isReparaturSelected=Array.isArray(answers.service)&&answers.service.includes(\"reparatur\");const isDaemmungSelected=Array.isArray(answers.service)&&answers.service.includes(\"dach_daemmen\");console.log(\"Is Reparatur selected?\",isReparaturSelected);console.log(\"Is D\\xe4mmung selected?\",isDaemmungSelected);if(!isReparaturSelected){const isFlachdach=answers.roofType===\"flachdach\";flow.push(\"windows\");if(answers.windows&&(answers.windows===\"austausch\"||answers.windows===\"neueinbau\")){flow.push(\"windowCount\");}if(answers.roofType&&answers.roofType!==\"flachdach\"){flow.push(\"dormer\");}if(!isDaemmungSelected){if(isFlachdach){flow.push(\"flachdachInsulation\",\"flachdachSolar\");console.log(\"✅ Added flachdach insulation & solar\");}else{flow.push(\"insulation\",\"solar\");console.log(\"✅ Added steildach insulation & solar\");}}else{if(isFlachdach){flow.push(\"flachdachSolar\");console.log(\"⏭️ Skipped insulation (already selected), added solar\");}else{flow.push(\"solar\");console.log(\"⏭️ Skipped insulation (already selected), added solar\");}}console.log(\"✅ Added detail questions\");}else{console.log(\"⏭️ Skipping detail questions (reparatur selected)\");}flow.push(\"timeline\",\"role\");console.log(\"✅ Added timeline and role\");flow.push(\"address\");console.log(\"✅ Added address\");if(answers.role===\"hausverwaltung\"){flow.push(\"firmenname\");console.log(\"✅ Added firmenname (hausverwaltung)\");flow.push(\"ansprechpartner\");console.log(\"✅ Added ansprechpartner (hausverwaltung)\");}else if(answers.role&&answers.role!==\"mieter\"){flow.push(\"name\");console.log(\"✅ Added name (role:\",answers.role,\")\");}else if(answers.role===\"mieter\"){console.log(\"⚠️ Mieter selected - form will be blocked\");}if(answers.address||answers.name||answers.firmenname){flow.push(\"email\",\"phone\");console.log(\"✅ Added email and phone\");}console.log(\"=== FINAL FLOW ===\",flow);debugLogger.logFlow(\"✅ Question Flow Generated\",{flow:flow,totalSteps:flow.length,currentAnswers:answers});return flow;};// Update flow when answers change\nuseEffect(()=>{console.log(\"=== ANSWERS CHANGED ===\");console.log(\"Current answers:\",answers);debugLogger.logFlow(\"📊 Answers Changed - Regenerating Flow\",{changedAnswers:answers,previousFlow:questionFlow});const newFlow=generateQuestionFlow();console.log(\"New flow generated:\",newFlow);debugLogger.logFlow(\"🔄 Flow Updated\",{newFlow:newFlow,oldFlow:questionFlow,flowChanged:JSON.stringify(newFlow)!==JSON.stringify(questionFlow)});setQuestionFlow(newFlow);setTotalSteps(newFlow.length);console.log(\"Current step:\",currentStep);console.log(\"Flow length:\",newFlow.length);// Ensure currentStep doesn't exceed the new flow length\nif(currentStep>=newFlow.length&&newFlow.length>0){console.log(\"⚠️ Current step exceeds flow, resetting to:\",newFlow.length-1);setCurrentStep(newFlow.length-1);}console.log(\"Current question:\",newFlow[currentStep]);},[answers]);/*// Update flow when answers change\n    useEffect(() => {\n        const newFlow = generateQuestionFlow()\n        setQuestionFlow(newFlow)\n        setTotalSteps(newFlow.length)\n\n        // Ensure currentStep doesn't exceed the new flow length\n        if (currentStep >= newFlow.length && newFlow.length > 0) {\n            setCurrentStep(newFlow.length - 1)\n        }\n    }, [answers])*/// Memoize question flow generation\nconst generatedFlow=useMemo(()=>{console.log(\"🔄 Regenerating question flow\");let flow=[];if(!finalSkipService){flow.push(\"service\");}if(!finalSkipRoofType){flow.push(\"roofType\");}flow.push(\"houseSize\");const isReparaturSelected=Array.isArray(answers.service)&&answers.service.includes(\"reparatur\");const isDaemmungSelected=Array.isArray(answers.service)&&answers.service.includes(\"dach_daemmen\");if(!isReparaturSelected){const isFlachdach=answers.roofType===\"flachdach\";flow.push(\"windows\");if(answers.windows&&(answers.windows===\"austausch\"||answers.windows===\"neueinbau\")){flow.push(\"windowCount\");}if(answers.roofType&&answers.roofType!==\"flachdach\"){flow.push(\"dormer\");}if(!isDaemmungSelected){if(isFlachdach){flow.push(\"flachdachInsulation\",\"flachdachSolar\");}else{flow.push(\"insulation\",\"solar\");}}else{if(isFlachdach){flow.push(\"flachdachSolar\");}else{flow.push(\"solar\");}}}flow.push(\"timeline\",\"role\");flow.push(\"address\");if(answers.role===\"hausverwaltung\"){flow.push(\"firmenname\",\"ansprechpartner\");}else if(answers.role&&answers.role!==\"mieter\"){flow.push(\"name\");}if(answers.address||answers.name||answers.firmenname){flow.push(\"email\",\"phone\");}return flow;},[answers.service,answers.roofType,answers.windows,answers.role,answers.address,answers.name,answers.firmenname,finalSkipService,finalSkipRoofType]);// Update state when memoized flow changes\nuseEffect(()=>{setQuestionFlow(generatedFlow);setTotalSteps(generatedFlow.length);if(currentStep>=generatedFlow.length&&generatedFlow.length>0){setCurrentStep(generatedFlow.length-1);}},[generatedFlow]);// ADD THIS ENTIRE BLOCK RIGHT HERE - THIS IS THE NEW CODE\n// FIXED: Auto-advance logic that respects navigation direction\n// FIXED: Auto-advance logic that respects navigation direction\n// FIXED: Auto-advance logic that respects navigation direction and prevents double-firing\nuseEffect(()=>{const currentQuestionId=questionFlow[currentStep];// Skip auto-advance if we're navigating backward\nif(navigationDirection===\"backward\"){return;}// Skip if we're in transition\nif(isTransitioning){return;}// Create a ref to track if we should auto-advance\nif(!window._lastServiceAnswer){window._lastServiceAnswer={};}// Create a ref to track which step we last auto-advanced from\nif(!window._lastAutoAdvanceStep){window._lastAutoAdvanceStep=-1;}const isServiceQuestion=currentQuestionId===\"service\";if(isServiceQuestion){const serviceAnswer=answers[currentQuestionId];// Only auto-advance if:\n// 1. We have an answer\n// 2. We're moving forward\n// 3. The answer is different from last tracked answer\n// 4. We haven't already auto-advanced from this step\nif(Array.isArray(serviceAnswer)&&serviceAnswer.length>0&&navigationDirection===\"forward\"&&JSON.stringify(window._lastServiceAnswer[currentQuestionId])!==JSON.stringify(serviceAnswer)&&window._lastAutoAdvanceStep!==currentStep){window._lastServiceAnswer[currentQuestionId]=serviceAnswer;window._lastAutoAdvanceStep=currentStep;// Wait for flow to update, then advance\nsetTimeout(()=>{if(questionFlow[currentStep+1]){nextStep();}},400);}}// Clean up tracking when leaving service questions\nif(!isServiceQuestion){window._lastServiceAnswer={};// Don't reset _lastAutoAdvanceStep here - keep it for the session\n}},[answers,currentStep,questionFlow,navigationDirection,isTransitioning]);// Scroll detection for \"Back to Top\" button\nuseEffect(()=>{if(typeof window===\"undefined\")return;const handleScroll=()=>{// Get the question card element\nconst questionCard=document.querySelector(\"[data-question-card]\");if(!questionCard)return;// Check if the top of the card is above the viewport\nconst rect=questionCard.getBoundingClientRect();const isAboveViewport=rect.top<-100// 100px threshold\n;setIsScrolledPastContent(isAboveViewport);};// Add scroll listener\nwindow.addEventListener(\"scroll\",handleScroll,{passive:true});// Check initial state\nhandleScroll();return()=>window.removeEventListener(\"scroll\",handleScroll);},[currentStep])// Re-check when step changes\n;// Auto-advance after service selection when flow is updated\nuseEffect(()=>{const currentQuestionId=questionFlow[currentStep];// Check if we just selected a service and the flow now includes the insulation question\nif(currentQuestionId===\"flachdachService\"||currentQuestionId===\"steildachService\"){const service=answers[currentQuestionId];if(service===\"komplett\"){// Check if the next step in the flow is the insulation question\nconst nextQuestionId=questionFlow[currentStep+1];if(nextQuestionId===\"flachdachDaemmungTyp\"||nextQuestionId===\"steildachDaemmungTyp\"){// Flow has been updated with insulation question, now advance\nconsole.log(\"Flow updated with insulation question, advancing...\");setTimeout(()=>{nextStep();},300);}}else if(service){// For other services, just advance normally\nsetTimeout(()=>{nextStep();},300);}}},[questionFlow,currentStep]);// Auto-set slider defaults\nuseEffect(()=>{const currentQuestionId=questionFlow[currentStep];if(currentQuestionId&&questions[currentQuestionId]){const question=questions[currentQuestionId];if(question.type===\"slider\"&&answers[currentQuestionId]===undefined){const defaultValue=question.default||question.min;setTimeout(()=>{setAnswers(prev=>({...prev,[currentQuestionId]:defaultValue}));},0);}}},[currentStep,questionFlow]);const handleAnswer=(questionId,value)=>{console.log(\"📝 handleAnswer called:\",questionId,\"=\",value);debugLogger.logAnswer(questionId,value,{...answers,[questionId]:value});setAnswers(prev=>({...prev,[questionId]:value}));// ✅ CRITICAL FIX: Set navigation direction to forward when user selects an answer\n// This ensures tracking works for auto-advance questions\nsetNavigationDirection(\"forward\");// Track the question interaction\nconst question=questions[questionId];if(question){trackQuestionInteraction(questionId,question.type,value);}// SPECIAL DEBUG FOR ROLE\nif(questionId===\"role\"){console.log(\"🎯 ROLE SELECTED:\",value);console.log(\"Current answers before role:\",answers);console.log(\"Will trigger flow regeneration...\");if(value===\"mieter\"){setIsMieterSelected(true);// Fire Facebook event when Mieter is selected\ntrackFacebookPixelMieter();}}};/*\n    const nextStep = async () => {\n        const currentQuestionId = questionFlow[currentStep]\n\n        console.log(\"⏭️ NEXT STEP CALLED\")\n\n        debugLogger.logNavigation(currentStep, currentStep + 1, \"forward\")\n        console.log(\"  Current step:\", currentStep)\n        console.log(\"  Current question:\", currentQuestionId)\n        console.log(\"  Question flow:\", questionFlow)\n        console.log(\"  Flow length:\", questionFlow.length)\n        console.log(\"  Next question would be:\", questionFlow[currentStep + 1])\n        console.log(\"  Current answers:\", answers)\n\n        // SAFETY CHECK: Ensure current question exists\n        if (!currentQuestionId) {\n            console.error(\"❌ Cannot advance: current question is undefined\", {\n                currentStep,\n                flowLength: questionFlow.length,\n                flow: questionFlow,\n            })\n            return\n        }\n\n        // ✅ Phone validation before proceeding\n        if (currentQuestionId === \"phone\") {\n            const phoneValue = answers[currentQuestionId]\n\n            if (\n                !phoneValue ||\n                typeof phoneValue !== \"string\" ||\n                phoneValue.trim().length < 8\n            ) {\n                setPhoneValidationStatus(\"invalid\")\n                return\n            }\n\n            setPhoneValidationStatus(\"checking\")\n\n            const validationResult = await validatePhoneWithSinch(\n                phoneValue.trim()\n            )\n            setSinchValidationResult(validationResult)\n\n            if (!validationResult.valid) {\n                setPhoneValidationStatus(\"invalid\")\n                return\n            }\n\n            setPhoneValidationStatus(\"valid\")\n        }\n\n        // Track step completion\n        const timeOnStep = Math.round((Date.now() - stepStartTime) / 1000)\n\n        trackGA4Event(\"step_completed\", {\n            event_category: \"form_funnel\",\n            event_label: \"step_completed\",\n            step_number: currentStep + 1,\n            step_hash_url: questionUrls[currentQuestionId],\n            step_question_id: currentQuestionId,\n            time_on_step_seconds: timeOnStep,\n            answer_provided: answers[currentQuestionId] ? \"yes\" : \"no\",\n            progress_percentage: Math.round(\n                ((currentStep + 1) / questionFlow.length) * 100\n            ),\n            funnel_name: \"roof_lead_generation\",\n        })\n\n        // Clear inactivity timer when user progresses\n        if (inactivityTimer) {\n            clearTimeout(inactivityTimer)\n            setInactivityTimer(null)\n        }\n\n        // Check address validity if on address step\n        if (\n            currentQuestionId === \"address\" &&\n            allowManualAddress &&\n            !isAddressFromGoogle\n        ) {\n            const geocoded = await geocodeManualAddress(answers.address)\n\n            if (geocoded) {\n                console.log(\"🔍 Manual Address Distance Check:\", {\n                    serviceCenterCoords: serviceCenterCoordinates,\n                    userCoords: { lat: geocoded.lat, lng: geocoded.lng },\n                })\n\n                if (\n                    !serviceCenterCoordinates.lat ||\n                    !serviceCenterCoordinates.lng\n                ) {\n                    console.warn(\n                        \"⚠️ Service center not ready for manual address\"\n                    )\n                    return\n                }\n\n                const distance = calculateDistance(\n                    serviceCenterCoordinates.lat,\n                    serviceCenterCoordinates.lng,\n                    geocoded.lat,\n                    geocoded.lng\n                )\n\n                console.log(\n                    `📏 Manual address distance: ${Math.round(distance)} km (max: ${serviceRadiusKm} km)`\n                )\n                if (distance > serviceRadiusKm) {\n                    setDistanceFromCenter(distance)\n                    setIsOutOfServiceArea(true)\n                    trackFacebookPixelOutOfRadius(distance)\n                    return\n                }\n            }\n        }\n\n        // Check if already calculated distance is outside service area\n        if (\n            currentQuestionId === \"address\" &&\n            distanceFromCenter &&\n            distanceFromCenter > serviceRadiusKm\n        ) {\n            setIsOutOfServiceArea(true)\n            return\n        }\n\n        // Continue with normal flow\n        if (currentStep < questionFlow.length - 1) {\n            const nextStepIndex = currentStep + 1\n            const nextQuestionId = questionFlow[nextStepIndex]\n\n            console.log(\n                `🎯 About to advance to step ${nextStepIndex}: ${nextQuestionId}`\n            )\n\n            // ✅ CRITICAL: Track the NEXT step BEFORE starting transition\n            if (!window._trackedSteps) {\n                window._trackedSteps = new Set()\n            }\n\n            const nextStepKey = nextQuestionId\n\n            // ✅ ALWAYS TRACK - Remove duplicate prevention\n            console.log(\n                `✅ Pre-tracking next step ${nextStepIndex + 1}: ${nextQuestionId}`\n            )\n\n            // Mark as tracked (but still fire all events)\n            window._trackedSteps.add(nextStepKey)\n\n            // Track the individual step event\n            const stepNumber = String(nextStepIndex + 1).padStart(2, \"0\")\n            const eventName = `form_step_${stepNumber}_${nextQuestionId}`\n\n            trackGA4Event(eventName, {\n                step_number: nextStepIndex + 1,\n                step_name: nextQuestionId,\n                total_steps: questionFlow.length,\n                progress_percentage: Math.round(\n                    ((nextStepIndex + 1) / questionFlow.length) * 100\n                ),\n            })\n\n            // Track the generic step view\n            trackStepView(\n                nextStepIndex,\n                nextQuestionId,\n                questionUrls[nextQuestionId]\n            )\n\n            // 🔥 Fire Facebook Pixel event for this step\n            console.log(\n                `🔥 Firing Facebook Pixel: form_step_${stepNumber}_${nextQuestionId}`\n            )\n            trackFacebookPixelStep(nextQuestionId)\n\n            // 🔥 Fire special step_10 event when reaching role question\n            if (nextQuestionId === \"role\") {\n                trackFacebookPixelStep10()\n            }\n\n            // Set direction to forward\n            setNavigationDirection(\"forward\")\n\n            // NOW start transition (after tracking is done)\n            setIsTransitioning(true)\n            setFadeClass(\"fade-out\")\n\n            // Smooth scroll to top\n            window.scrollTo({ top: 0, behavior: \"smooth\" })\n\n            setTimeout(() => {\n                // Move to next step\n                setCurrentStep(nextStepIndex)\n\n                // Fade in new question\n                setFadeClass(\"fade-in\")\n                setTimeout(() => {\n                    setIsTransitioning(false)\n                }, 300)\n            }, 300) // Wait for fade out\n        }\n    }*/const nextStep=async()=>{const currentQuestionId=questionFlow[currentStep];console.log(\"⏭️ NEXT STEP CALLED\");debugLogger.logNavigation(currentStep,currentStep+1,\"forward\");console.log(\"  Current step:\",currentStep);console.log(\"  Current question:\",currentQuestionId);console.log(\"  Question flow:\",questionFlow);console.log(\"  Flow length:\",questionFlow.length);console.log(\"  Next question would be:\",questionFlow[currentStep+1]);console.log(\"  Current answers:\",answers);// SAFETY CHECK: Ensure current question exists\nif(!currentQuestionId){console.error(\"❌ Cannot advance: current question is undefined\",{currentStep,flowLength:questionFlow.length,flow:questionFlow});return;}// ✅ Phone validation before proceeding\nif(currentQuestionId===\"phone\"){const phoneValue=answers[currentQuestionId];if(!phoneValue||typeof phoneValue!==\"string\"||phoneValue.trim().length<8){setPhoneValidationStatus(\"invalid\");return;}setPhoneValidationStatus(\"checking\");const validationResult=await validatePhoneWithSinch(phoneValue.trim());setSinchValidationResult(validationResult);if(!validationResult.valid){setPhoneValidationStatus(\"invalid\");return;}setPhoneValidationStatus(\"valid\");}// Track step completion\nconst timeOnStep=Math.round((Date.now()-stepStartTime)/1e3);trackGA4Event(\"step_completed\",{event_category:\"form_funnel\",event_label:\"step_completed\",step_number:currentStep+1,step_hash_url:questionUrls[currentQuestionId],step_question_id:currentQuestionId,time_on_step_seconds:timeOnStep,answer_provided:answers[currentQuestionId]?\"yes\":\"no\",progress_percentage:Math.round((currentStep+1)/questionFlow.length*100),funnel_name:\"roof_lead_generation\"});// Clear inactivity timer when user progresses\nif(inactivityTimer){clearTimeout(inactivityTimer);setInactivityTimer(null);}// Check address validity if on address step\nif(currentQuestionId===\"address\"&&allowManualAddress&&!isAddressFromGoogle){const geocoded=await geocodeManualAddress(answers.address);if(geocoded){console.log(\"🔍 Manual Address Distance Check:\",{serviceCenterCoords:serviceCenterCoordinates,userCoords:{lat:geocoded.lat,lng:geocoded.lng}});if(!serviceCenterCoordinates.lat||!serviceCenterCoordinates.lng){console.warn(\"⚠️ Service center not ready for manual address\");return;}const distance=calculateDistance(serviceCenterCoordinates.lat,serviceCenterCoordinates.lng,geocoded.lat,geocoded.lng);console.log(`📏 Manual address distance: ${Math.round(distance)} km (max: ${serviceRadiusKm} km)`);if(distance>serviceRadiusKm){setDistanceFromCenter(distance);setIsOutOfServiceArea(true);trackFacebookPixelOutOfRadius(distance);return;}}}// Check if already calculated distance is outside service area\nif(currentQuestionId===\"address\"&&distanceFromCenter&&distanceFromCenter>serviceRadiusKm){setIsOutOfServiceArea(true);return;}// Continue with normal flow\nif(currentStep<questionFlow.length-1){const nextStepIndex=currentStep+1;const nextQuestionId=questionFlow[nextStepIndex];console.log(`🎯 About to advance to step ${nextStepIndex}: ${nextQuestionId}`);// ✅ CRITICAL: Track the NEXT step BEFORE starting transition\nif(!window._trackedSteps){window._trackedSteps=new Set;}const nextStepKey=nextQuestionId// Just the question ID, no step number\n;if(!window._trackedSteps.has(nextStepKey)){console.log(`✅ Pre-tracking next step ${nextStepIndex+1}: ${nextQuestionId}`);// Mark as tracked IMMEDIATELY\nwindow._trackedSteps.add(nextStepKey);// Track the individual step event\nconst stepNumber=String(nextStepIndex+1).padStart(2,\"0\");const eventName=`form_step_${stepNumber}_${nextQuestionId}`;trackGA4Event(eventName,{step_number:nextStepIndex+1,step_name:nextQuestionId,total_steps:questionFlow.length,progress_percentage:Math.round((nextStepIndex+1)/questionFlow.length*100)});// Track the generic step view\ntrackStepView(nextStepIndex,nextQuestionId,questionUrls[nextQuestionId]);// 🔥 Fire Facebook Pixel event for this step\nconsole.log(`🔥 Firing Facebook Pixel: form_step_${stepNumber}_${nextQuestionId}`);trackFacebookPixelStep(nextQuestionId);// 🔥 Fire special step_10 event when reaching role question\nif(nextQuestionId===\"role\"){trackFacebookPixelStep10();}}else{console.log(`⏭️ Next step ${nextStepIndex+1} already tracked, skipping`);}// Set direction to forward\nsetNavigationDirection(\"forward\");// NOW start transition (after tracking is done)\nsetIsTransitioning(true);setFadeClass(\"fade-out\");// Smooth scroll to top\nwindow.scrollTo({top:0,behavior:\"smooth\"});setTimeout(()=>{// Move to next step\nsetCurrentStep(nextStepIndex);// Fade in new question\nsetFadeClass(\"fade-in\");setTimeout(()=>{setIsTransitioning(false);},300);},300)// Wait for fade out\n;}};/*\n    const nextStep = async () => {\n        const currentQuestionId = questionFlow[currentStep]\n\n        console.log(\"⏭️ NEXT STEP CALLED\")\n\n        debugLogger.logNavigation(currentStep, currentStep + 1, \"forward\")\n        console.log(\"  Current step:\", currentStep)\n        console.log(\"  Current question:\", currentQuestionId)\n        console.log(\"  Question flow:\", questionFlow)\n        console.log(\"  Flow length:\", questionFlow.length)\n        console.log(\"  Next question would be:\", questionFlow[currentStep + 1])\n        console.log(\"  Current answers:\", answers)\n\n        // SAFETY CHECK: Ensure current question exists\n        if (!currentQuestionId) {\n            console.error(\"❌ Cannot advance: current question is undefined\", {\n                currentStep,\n                flowLength: questionFlow.length,\n                flow: questionFlow,\n            })\n            return\n        }\n\n        // ✅ Phone validation before proceeding\n        if (currentQuestionId === \"phone\") {\n            const phoneValue = answers[currentQuestionId]\n\n            if (\n                !phoneValue ||\n                typeof phoneValue !== \"string\" ||\n                phoneValue.trim().length < 8\n            ) {\n                setPhoneValidationStatus(\"invalid\")\n                return\n            }\n\n            // Show loading state\n            setPhoneValidationStatus(\"checking\")\n\n            // Validate with HLR API via Make.com webhook\n            const validationResult = await validatePhoneWithSinch(\n                phoneValue.trim()\n            )\n            setSinchValidationResult(validationResult)\n\n            if (!validationResult.valid) {\n                setPhoneValidationStatus(\"invalid\")\n                return // Don't proceed if invalid\n            }\n\n            setPhoneValidationStatus(\"valid\")\n            // Continue with normal flow below\n        }\n\n        // NEW: Track step completion with time measurement\n        const timeOnStep = Math.round((Date.now() - stepStartTime) / 1000)\n\n        trackGA4Event(\"step_completed\", {\n            event_category: \"form_funnel\",\n            event_label: \"step_completed\",\n            step_number: currentStep + 1,\n            step_hash_url: questionUrls[currentQuestionId],\n            step_question_id: currentQuestionId,\n            time_on_step_seconds: timeOnStep,\n            answer_provided: answers[currentQuestionId] ? \"yes\" : \"no\",\n            progress_percentage: Math.round(\n                ((currentStep + 1) / questionFlow.length) * 100\n            ),\n            funnel_name: \"roof_lead_generation\",\n        })\n\n        // NEW: Clear inactivity timer when user progresses\n        if (inactivityTimer) {\n            clearTimeout(inactivityTimer)\n            setInactivityTimer(null)\n        }\n\n        // EXISTING: Check address validity if on address step\n        if (\n            currentQuestionId === \"address\" &&\n            allowManualAddress &&\n            !isAddressFromGoogle\n        ) {\n            const geocoded = await geocodeManualAddress(answers.address)\n\n            if (geocoded) {\n                console.log(\"🔍 Manual Address Distance Check:\", {\n                    serviceCenterCoords: serviceCenterCoordinates,\n                    userCoords: { lat: geocoded.lat, lng: geocoded.lng },\n                })\n\n                // Skip if service center not ready\n                if (\n                    !serviceCenterCoordinates.lat ||\n                    !serviceCenterCoordinates.lng\n                ) {\n                    console.warn(\n                        \"⚠️ Service center not ready for manual address\"\n                    )\n                    return\n                }\n\n                const distance = calculateDistance(\n                    serviceCenterCoordinates.lat,\n                    serviceCenterCoordinates.lng,\n                    geocoded.lat,\n                    geocoded.lng\n                )\n\n                console.log(\n                    `📏 Manual address distance: ${Math.round(distance)} km (max: ${serviceRadiusKm} km)`\n                )\n                if (distance > serviceRadiusKm) {\n                    setDistanceFromCenter(distance)\n                    setIsOutOfServiceArea(true)\n                    trackFacebookPixelOutOfRadius(distance)\n                    return\n                }\n            }\n        }\n\n        // EXISTING: Check if already calculated distance is outside service area\n        if (\n            currentQuestionId === \"address\" &&\n            distanceFromCenter &&\n            distanceFromCenter > serviceRadiusKm\n        ) {\n            setIsOutOfServiceArea(true)\n            return\n        }\n\n        // EXISTING: Continue with normal flow\n        if (currentStep < questionFlow.length - 1) {\n            const answer = answers[currentQuestionId]\n\n            // ✅ CRITICAL: Set direction to forward BEFORE state updates\n            setNavigationDirection(\"forward\")\n\n            // Start transition\n            setIsTransitioning(true)\n            setFadeClass(\"fade-out\")\n\n            // Smooth scroll to top at the same time as fade out starts\n            window.scrollTo({ top: 0, behavior: \"smooth\" })\n\n            setTimeout(() => {\n                // Move to next step\n                setCurrentStep(currentStep + 1)\n\n                // Fade in new question\n                setFadeClass(\"fade-in\")\n                setTimeout(() => {\n                    setIsTransitioning(false)\n                }, 300)\n            }, 300) // Wait for fade out\n        }\n    }*/const prevStep=()=>{if(currentStep>minStep){setNavigationDirection(\"backward\");debugLogger.logNavigation(currentStep,currentStep-1,\"backward\");// Start transition\nsetIsTransitioning(true);setFadeClass(\"fade-out\");setTimeout(()=>{const newStep=currentStep-1;setCurrentStep(newStep);// Get the question we're navigating to\nconst questionId=questionFlow[newStep];// Clear service selection (multiple choice) when navigating back to it\nif(questionId===\"service\"){setAnswers(prev=>({...prev,service:[]}));}// Clear service selection when navigating back to it\nif(questionId===\"flachdachService\"||questionId===\"steildachService\"){setAnswers(prev=>({...prev,[questionId]:undefined}));}// Clear BOTH service selections when going back to roof type\nif(questionId===\"roofType\"){setAnswers(prev=>({...prev,flachdachService:undefined,steildachService:undefined}));}// Smooth scroll to top\nwindow.scrollTo({top:0,behavior:\"smooth\"});// Fade in new question\nsetFadeClass(\"fade-in\");setTimeout(()=>{setIsTransitioning(false);},300);},300);}};// Step validation\n// Step validation\nconst isStepValid=()=>{const currentQuestionId=questionFlow[currentStep];const answer=answers[currentQuestionId];console.log(\"🔍 isStepValid check:\",currentQuestionId,\"answer:\",answer);if(!currentQuestionId){console.log(\"❌ No question ID\");return false;}const question=questions[currentQuestionId];if(question.type===\"slider\")return true;if(question.type===\"multiple\"){const isValid=Array.isArray(answer)&&answer.length>0;console.log(\"  Multiple choice valid?\",isValid);return isValid;}if(question.type===\"dual-input\"){// FIXED: Check if values exist AND are strings before calling trim\nconst isValid=!!(answer&&typeof answer.vorname===\"string\"&&typeof answer.nachname===\"string\"&&answer.vorname.trim()!==\"\"&&answer.nachname.trim()!==\"\");console.log(\"  Dual-input valid?\",isValid,answer);return isValid;}// For phone question - just check if something is typed\nif(question.id===\"phone\"){if(typeof answer!==\"string\"){return false;}// Just check if there's any input (at least 8 characters)\nreturn answer.trim().length>=8;}if(question.type===\"address\"){// FIXED: Check if answer is a string before calling trim\nif(!answer||typeof answer!==\"string\"||answer.trim()===\"\"){console.log(\"  Address invalid - empty or not string\");return false;}if(allowManualAddress){const hasNumber=/\\d+/.test(answer.trim());const hasLetters=/[a-zA-Z]+/.test(answer.trim());const minLength=answer.trim().length>=5;const isValid=isAddressFromGoogle||hasNumber&&hasLetters&&minLength;console.log(\"  Address valid (manual allowed)?\",isValid);return isValid;}else{console.log(\"  Address valid (Google only)?\",isAddressFromGoogle);return isAddressFromGoogle;}}const isValid=answer!==undefined&&answer!==\"\";console.log(\"  General validation:\",isValid);return isValid;};// Form submission\n// Form submission with UTM tracking\n// Form submission with UTM tracking - FIXED VERSION\n// Form submission with UTM tracking and Job ID handling\n// Form submission with enhanced Job ID handling and debugging\n/*  const handleSubmit = async () => {\n        // ✅ NEW: Phone validation BEFORE submission\n        const phoneValue = answers.phone\n\n        if (\n            !phoneValue ||\n            typeof phoneValue !== \"string\" ||\n            phoneValue.trim().length < 8\n        ) {\n            setPhoneValidationStatus(\"invalid\")\n            return\n        }\n\n        // ✅ Show spinner while validating phone (NOT loading screen yet)\n        setPhoneValidationStatus(\"checking\")\n\n        // ✅ Validate with Make.com webhook\n        const validationResult = await validatePhoneWithSinch(phoneValue.trim())\n        setSinchValidationResult(validationResult)\n\n        if (!validationResult.valid) {\n            setPhoneValidationStatus(\"invalid\")\n            return // Don't proceed if invalid\n        }\n\n        setPhoneValidationStatus(\"valid\")\n\n        // ✅ NOW show loading screen and proceed with form submission\n        setIsSubmitting(true)\n        debugLogger.log(\"submission\", \"📤 Starting Form Submission\", {\n            answers,\n        })\n\n        // DEBUG: Check what thankYouUrl actually contains\n        console.log(\"=== THANK YOU URL DEBUG ===\")\n        console.log(\"thankYouUrl prop value:\", thankYouUrl)\n        console.log(\"thankYouUrl type:\", typeof thankYouUrl)\n        console.log(\"thankYouUrl includes '?':\", thankYouUrl.includes(\"?\"))\n\n        let jobId = null\n        console.log(\"=== FORM SUBMISSION DEBUG START ===\")\n\n        const submitToWebhook = async (data, retryCount = 0) => {\n            const maxRetries = 3\n            const webhookUrl =\n                \"https://handlyde.app.n8n.cloud/webhook/be035f81-005b-474a-98e0-1f8ccb3dd0f8\"\n\n            try {\n                console.log(\n                    `Attempting submission ${retryCount + 1}/${maxRetries + 1}:`,\n                    data\n                )\n\n                const response = await fetch(webhookUrl, {\n                    method: \"POST\",\n                    headers: {\n                        \"Content-Type\": \"application/json\",\n                        Accept: \"application/json\",\n                        \"User-Agent\": \"RoofLeadForm/1.0\",\n                    },\n                    body: JSON.stringify(data),\n                    signal: AbortSignal.timeout\n                        ? AbortSignal.timeout(30000)\n                        : undefined,\n                })\n\n                console.log(\"Response status:\", response.status)\n                console.log(\n                    \"Response headers:\",\n                    Object.fromEntries(response.headers.entries())\n                )\n\n                if (response.ok) {\n                    // Get the raw response text first\n                    const responseText = await response.text()\n                    console.log(\"Raw response text:\", responseText)\n\n                    let responseData\n                    try {\n                        // Try to parse as JSON\n                        responseData = JSON.parse(responseText)\n                        console.log(\"Parsed JSON response:\", responseData)\n                    } catch (parseError) {\n                        console.log(\n                            \"Response is not JSON, treating as plain text:\",\n                            responseText\n                        )\n                        responseData = responseText\n                    }\n\n                    return { success: true, data: responseData }\n                } else {\n                    throw new Error(\n                        `HTTP ${response.status}: ${response.statusText}`\n                    )\n                }\n            } catch (error) {\n                console.error(\n                    `Submission attempt ${retryCount + 1} failed:`,\n                    error\n                )\n\n                if (retryCount < maxRetries) {\n                    const delay = Math.min(1000 * Math.pow(2, retryCount), 5000)\n                    console.log(`Retrying in ${delay}ms...`)\n                    await new Promise((resolve) => setTimeout(resolve, delay))\n                    return submitToWebhook(data, retryCount + 1)\n                } else {\n                    throw error\n                }\n            }\n        }\n\n        try {\n            const formattedAnswers = { ...answers }\n\n            // Convert house size to numeric square meters\n            if (formattedAnswers.houseSize) {\n                formattedAnswers.houseSizeSquareMeters =\n                    houseSizeToSquareMeters(formattedAnswers.houseSize)\n                formattedAnswers.houseSizeCategory = formattedAnswers.houseSize\n            }\n\n            // ✅ NEW: Use E.164 format for phone if Sinch validated it\n            if (formattedAnswers.phone && sinchValidationResult?.valid) {\n                formattedAnswers.phone_e164 = sinchValidationResult.e164\n                formattedAnswers.phone_display = formattedAnswers.phone // Keep original for display\n                formattedAnswers.phone_carrier = sinchValidationResult.carrier\n                formattedAnswers.phone_type = sinchValidationResult.numberType\n                // Use E.164 for actual submission\n                formattedAnswers.phone = sinchValidationResult.e164\n            } else if (formattedAnswers.phone) {\n                // Fallback: convert to E.164 using our helper function\n                formattedAnswers.phone_e164 = convertToE164(\n                    formattedAnswers.phone\n                )\n                formattedAnswers.phone_display = formattedAnswers.phone\n                formattedAnswers.phone = convertToE164(formattedAnswers.phone)\n            }\n\n            // Handle name fields based on role\n            // Convert house size to numeric square meters\n            if (formattedAnswers.houseSize) {\n                formattedAnswers.houseSizeSquareMeters =\n                    houseSizeToSquareMeters(formattedAnswers.houseSize)\n                formattedAnswers.houseSizeCategory = formattedAnswers.houseSize\n            }\n\n            // ✅ NEW: Use E.164 format for phone if Sinch validated it\n            if (formattedAnswers.phone && sinchValidationResult?.valid) {\n                formattedAnswers.phone_e164 = sinchValidationResult.e164\n                formattedAnswers.phone_display = formattedAnswers.phone\n                formattedAnswers.phone_carrier = sinchValidationResult.carrier\n                formattedAnswers.phone_type = sinchValidationResult.numberType\n                formattedAnswers.phone = sinchValidationResult.e164\n            } else if (formattedAnswers.phone) {\n                formattedAnswers.phone_e164 = convertToE164(\n                    formattedAnswers.phone\n                )\n                formattedAnswers.phone_display = formattedAnswers.phone\n                formattedAnswers.phone = convertToE164(formattedAnswers.phone)\n            }\n\n            // Handle name fields based on role\n            if (formattedAnswers.role === \"hausverwaltung\") {\n                // For companies, use firmenname AND ansprechpartner\n                if (formattedAnswers.firmenname) {\n                    formattedAnswers.firmenname = formattedAnswers.firmenname\n                }\n                if (formattedAnswers.ansprechpartner) {\n                    formattedAnswers.ansprechpartner_vorname =\n                        formattedAnswers.ansprechpartner.vorname\n                    formattedAnswers.ansprechpartner_nachname =\n                        formattedAnswers.ansprechpartner.nachname\n                    delete formattedAnswers.ansprechpartner\n                }\n            } else {\n                // For individuals, split name into first/last\n                if (formattedAnswers.name) {\n                    formattedAnswers.vorname = formattedAnswers.name.vorname\n                    formattedAnswers.nachname = formattedAnswers.name.nachname\n                    delete formattedAnswers.name\n                }\n            }\n\n            // TODO: Update service mapping based on new multi-select service field\n            const getTypeId = () => {\n                // If service override is set\n                if (serviceOverride && serviceOverride !== \"none\") {\n                    const overrideMap = {\n                        komplett: 1,\n                        daemmung: 2,\n                        fenster: 3,\n                        gauben: 4,\n                        dachrinnen: 5,\n                        reparatur: 6,\n                    }\n                    return overrideMap[serviceOverride] || 0\n                }\n\n                // FIRST: Check service selection (multiple choice)\n                if (\n                    formattedAnswers.service &&\n                    Array.isArray(formattedAnswers.service)\n                ) {\n                    const serviceTypeMap = {\n                        dachsanierung: 1,\n                        neuer_dachbau: 1,\n                        dach_daemmen: 2,\n                        dachfenster_gauben: 3,\n                        reparatur: 6,\n                        noch_nicht_sicher: 0,\n                    }\n\n                    // Return the first valid type ID from selected services\n                    for (const service of formattedAnswers.service) {\n                        if (serviceTypeMap[service]) {\n                            return serviceTypeMap[service]\n                        }\n                    }\n                }\n\n                // SECOND: Check windows question - only if no service was selected\n                if (\n                    formattedAnswers.windows === \"austausch\" ||\n                    formattedAnswers.windows === \"neueinbau\"\n                ) {\n                    return 3 // Neue Dachfenster\n                }\n\n                return 0\n            }\n\n            // NEW FUNCTION: Get the service category ID\n            const getServiceCategoryId = () => {\n                if (\n                    formattedAnswers.service &&\n                    Array.isArray(formattedAnswers.service)\n                ) {\n                    const serviceTypeMap = {\n                        dachsanierung: 1,\n                        neuer_dachbau: 1,\n                        dachfenster_gauben: 3,\n                        reparatur: 6,\n                        dach_daemmen: 2,\n                    }\n\n                    // Return the first valid service type ID from selected services\n                    for (const service of formattedAnswers.service) {\n                        if (serviceTypeMap[service]) {\n                            return serviceTypeMap[service]\n                        }\n                    }\n                }\n                return 0\n            }\n\n            const getPropertyId = () => {\n                // Map roof type to property ID\n                if (formattedAnswers.roofType) {\n                    const roofTypeMap = {\n                        flachdach: 1,\n                        satteldach: 2,\n                        walmdach: 3,\n                        sonstige: 0,\n                    }\n                    return roofTypeMap[formattedAnswers.roofType] || 0\n                }\n                return 0\n            }\n\n            const getTaskIds = () => {\n                const taskIds = []\n\n                // From service selections\n                if (\n                    formattedAnswers.service &&\n                    Array.isArray(formattedAnswers.service)\n                ) {\n                    if (formattedAnswers.service.includes(\"reparatur\")) {\n                        taskIds.push(13) // Replacing Individual Roof Tiles\n                        taskIds.push(14) // Eliminate Leaks\n                    }\n\n                    if (formattedAnswers.service.includes(\"dach_daemmen\")) {\n                        taskIds.push(16) // Roof Insulation\n                    }\n                }\n\n                // Windows tasks - based on the windows question\n                if (formattedAnswers.windows === \"austausch\") {\n                    // Ja, Austausch → Replacing Existing Windows\n                    taskIds.push(8)\n                }\n\n                if (formattedAnswers.windows === \"neueinbau\") {\n                    // Ja, Neueinbau → New Roof Windows\n                    taskIds.push(15)\n                }\n\n                // Add dormer task\n                if (formattedAnswers.dormer === \"ja\") {\n                    taskIds.push(4) // New Dormer Windows\n                }\n\n                // Add insulation tasks from separate insulation question (steildach)\n                if (formattedAnswers.insulation === \"ja\") {\n                    taskIds.push(16) // Roof Insulation\n                }\n\n                // Add insulation tasks from flachdach insulation question\n                if (formattedAnswers.flachdachInsulation === \"ja\") {\n                    taskIds.push(16) // Roof Insulation\n                }\n\n                // Add solar/PV task\n                if (formattedAnswers.solar === \"ja\") {\n                    taskIds.push(18) // PV System\n                }\n\n                // Add solar/PV task for flachdach\n                if (formattedAnswers.flachdachSolar === \"ja\") {\n                    taskIds.push(18) // PV System\n                }\n\n                return [...new Set(taskIds)] // Remove duplicates\n            }\n\n            const getSquareMeters = () => {\n                // houseSize now stores the numeric value directly\n                return formattedAnswers.houseSize || 0\n            }\n            const getTimeId = () => {\n                const timelineValue = formattedAnswers.timeline\n                console.log(\n                    \"getTimeId called, timeline value:\",\n                    timelineValue,\n                    \"type:\",\n                    typeof timelineValue\n                )\n                return timelineValue || 0\n            }\n\n            // Debug ID mappings\n            const idMappings = {\n                \"📋 Type ID\": {\n                    value: getTypeId(),\n                    meaning: getTypeName(getTypeId()),\n                    source: \"From service/windows selection\",\n                },\n                \"🏠 Property ID\": {\n                    value: getPropertyId(),\n                    meaning: getPropertyName(getPropertyId()),\n                    source: \"From roofType selection\",\n                },\n                \"✅ Task IDs\": {\n                    value: getTaskIds(),\n                    meaning: getTaskIds().map((id) => getTaskName(id)),\n                    source: \"From multiple selections\",\n                },\n                \"⏰ Time ID\": {\n                    value: getTimeId(),\n                    meaning: getTimeName(getTimeId()),\n                    source: \"From timeline selection\",\n                },\n                \"📐 Square Meters\": {\n                    value: getSquareMeters(),\n                    meaning: `${getSquareMeters()} m²`,\n                    source: \"From houseSize selection\",\n                },\n            }\n\n            debugLogger.logIdMappings(idMappings)\n\n            // Enhanced submission data\n            console.log(\"=== DEBUGGING TIMELINE ===\")\n            console.log(\"formattedAnswers.timeline:\", formattedAnswers.timeline)\n            console.log(\"Type of timeline:\", typeof formattedAnswers.timeline)\n            console.log(\"getTimeId() returns:\", getTimeId())\n            // Calculate estimated area range based on houseSize\n            // Calculate estimated area range based on houseSize\n            const getEstimatedAreaRange = () => {\n                const houseSize = formattedAnswers.houseSize\n                if (houseSize === 75) {\n                    // Under 100 m²\n                    return { estimatedStartArea: 0, estimatedEndArea: 100 }\n                } else if (houseSize === 150) {\n                    // 100-200 m²\n                    return { estimatedStartArea: 100, estimatedEndArea: 200 }\n                } else if (houseSize === 250) {\n                    // Over 200 m²\n                    return { estimatedStartArea: 200, estimatedEndArea: null }\n                }\n                return { estimatedStartArea: null, estimatedEndArea: null }\n            }\n\n            // Calculate number of windows\n            const getNumberOfWindows = () => {\n                const windowCount = formattedAnswers.windowCount\n                if (windowCount === \"1\") return 1\n                if (windowCount === \"2_4\") return 2\n                if (windowCount === \"4_plus\") return 4\n                return null\n            }\n\n            // Calculate number of gauben (dormers)\n            const getNumberOfGauben = () => {\n                const dormer = formattedAnswers.dormer\n                if (dormer === \"ja\") return 1\n                return null\n            }\n\n            const areaRange = getEstimatedAreaRange()\n\n            const submissionData = {\n                ...formattedAnswers,\n                serviceOverride: serviceOverride || \"none\",\n                taskIds: getTaskIds(),\n                estimatedStartArea: areaRange.estimatedStartArea,\n                estimatedEndArea: areaRange.estimatedEndArea,\n                numberOfWindows: getNumberOfWindows(),\n                numberOfGauben: getNumberOfGauben(),\n                estimatedStartArea: areaRange.estimatedStartArea,\n                estimatedEndArea: areaRange.estimatedEndArea,\n                numberOfWindows: getNumberOfWindows(),\n                numberOfGauben: getNumberOfGauben(),\n                typeId: getTypeId(), // Single value\n                propertyId: getPropertyId(),\n                squareMeters: getSquareMeters(),\n                timeId: getTimeId(),\n                address_street_name: addressComponents.street_name,\n                address_house_number: addressComponents.house_number,\n                address_postal_code: addressComponents.postal_code,\n                address_city: addressComponents.city,\n                address_state: addressComponents.state,\n                address_country: addressComponents.country,\n                address_formatted: addressComponents.formatted_address,\n                address_source: addressComponents.address_source,\n                address_latitude: addressComponents.latitude,\n                address_longitude: addressComponents.longitude,\n                address_place_id: addressComponents.place_id,\n                phone_type: detectPhoneType(formattedAnswers.phone),\n                phone_formatted: formattedAnswers.phone,\n                phone_is_mobile:\n                    detectPhoneType(formattedAnswers.phone) === \"mobile\",\n                phone_is_landline:\n                    detectPhoneType(formattedAnswers.phone) === \"landline\",\n                utm_source: utmParams.utm_source || null,\n                utm_medium: utmParams.utm_medium || null,\n                utm_campaign: utmParams.utm_campaign || null,\n                utm_content: utmParams.utm_content || null,\n                utm_term: utmParams.utm_term || null,\n                utm_id: utmParams.utm_id || null,\n                referrer_url: referrerInfo.url || null,\n                landing_page:\n                    referrerInfo.landingPage ||\n                    (typeof window !== \"undefined\"\n                        ? window.location.href\n                        : null),\n                session_id: referrerInfo.sessionId,\n                facebook_click_id: referrerInfo.facebook_click_id || null,\n                facebook_pixel_enabled:\n                    typeof window !== \"undefined\" && window.fbq ? true : false,\n                timestamp: new Date().toISOString(),\n                source: \"roof-lead-form\",\n                userAgent:\n                    typeof window !== \"undefined\" ? navigator.userAgent : null,\n                url:\n                    typeof window !== \"undefined\" ? window.location.href : null,\n                formVersion: \"1.0\",\n                webhookId,\n                page_title:\n                    typeof document !== \"undefined\" ? document.title : null,\n                screen_resolution:\n                    typeof window !== \"undefined\"\n                        ? `${window.screen.width}x${window.screen.height}`\n                        : null,\n                viewport_size:\n                    typeof window !== \"undefined\"\n                        ? `${window.innerWidth}x${window.innerHeight}`\n                        : null,\n                timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n                language:\n                    typeof navigator !== \"undefined\"\n                        ? navigator.language\n                        : null,\n            }\n\n            if (typeof window !== \"undefined\" && window.gtag) {\n                try {\n                    window.gtag(\"event\", \"generate_lead\", {\n                        event_category: \"engagement\",\n                        event_label: \"roof_lead_form\",\n                        value: 1,\n                        utm_source: utmParams.utm_source,\n                        utm_campaign: utmParams.utm_campaign,\n                    })\n                    console.log(\"Google Analytics Lead event fired\")\n                } catch (gaError) {\n                    console.log(\"Google Analytics error:\", gaError)\n                }\n            }\n\n            debugLogger.logSubmission(submissionData)\n            // Submit the form and get response\n            const result = await submitToWebhook(submissionData)\n\n            if (result.success) {\n                console.log(\"=== WEBHOOK RESPONSE DEBUG ===\")\n                console.log(\"Full result object:\", result)\n                console.log(\"Result data:\", result.data)\n                console.log(\"Result data type:\", typeof result.data)\n\n                // Track completion\n                trackFormCompletion(formattedAnswers)\n\n                // Clear localStorage\n                if (typeof window !== \"undefined\") {\n                    localStorage.removeItem(STORAGE_KEY)\n                }\n\n                // Enhanced job ID extraction with extensive logging\n\n                if (result.data) {\n                    console.log(\"Attempting to extract job ID...\")\n                    console.log(\n                        \"Full result object structure:\",\n                        JSON.stringify(result, null, 2)\n                    )\n\n                    // If response is already an object\n                    if (typeof result.data === \"object\") {\n                        console.log(\n                            \"Response is an object, checking properties...\"\n                        )\n                        console.log(\n                            \"Available keys in response:\",\n                            Object.keys(result.data)\n                        )\n\n                        // Try multiple possible locations for job ID\n                        jobId =\n                            result.data.jobId ||\n                            result.data.data?.jobId ||\n                            result.data.job_id ||\n                            result.data.id ||\n                            null\n\n                        console.log(\"Extracted job ID:\", jobId)\n\n                        if (!jobId) {\n                            console.log(\n                                \"Could not find job ID. Full response structure:\",\n                                JSON.stringify(result.data, null, 2)\n                            )\n                        }\n                    }\n                } else {\n                    console.log(\"No data in result\")\n                }\n\n                // Build redirect URL with form data\n                let redirectUrl = actualThankYouUrl\n                const urlParams = new URLSearchParams()\n\n                // Add job ID if available\n                if (jobId) {\n                    console.log(`✅ Job ID found: \"${jobId}\"`)\n                    const jobIdString = String(jobId).trim()\n                    urlParams.append(\"jobId\", jobIdString)\n                }\n\n                // Add form data\n                if (formattedAnswers.email) {\n                    urlParams.append(\"email\", formattedAnswers.email)\n                }\n                if (formattedAnswers.vorname) {\n                    urlParams.append(\"firstName\", formattedAnswers.vorname)\n                }\n                if (formattedAnswers.nachname) {\n                    urlParams.append(\"lastName\", formattedAnswers.nachname)\n                }\n                if (formattedAnswers.phone) {\n                    urlParams.append(\"phone\", formattedAnswers.phone)\n                }\n\n                // Build final URL\n                const hasExistingParams = actualThankYouUrl.includes(\"?\")\n                const separator = hasExistingParams ? \"&\" : \"?\"\n                const paramString = urlParams.toString()\n\n                if (paramString) {\n                    redirectUrl = `${actualThankYouUrl}${separator}${paramString}`\n                }\n\n                console.log(\"=== FORM SUBMISSION DEBUG END ===\")\n                // Small delay to ensure console logs are visible\n                await new Promise((resolve) => setTimeout(resolve, 100))\n\n                // Redirect (skip if debugging)\n                if (DEBUG_NO_REDIRECT) {\n                    console.log(\"🚫 REDIRECT BLOCKED FOR DEBUGGING\")\n                    console.log(\"Would redirect to:\", redirectUrl)\n                    console.log(\"Form data successfully submitted to webhook!\")\n                    console.log(\n                        \"Set DEBUG_NO_REDIRECT = false to enable redirect\"\n                    )\n                } else {\n                    window.location.href = redirectUrl\n                }\n            } else {\n                throw new Error(\"Submission failed after all retries\")\n            }\n        } catch (error) {\n            console.error(\"Submission error:\", error)\n            debugLogger.logError(\"handleSubmit\", error)\n\n            // Try to redirect with jobId if we managed to extract one before the error\n            let redirectUrl = actualThankYouUrl\n\n            // Check if jobId exists in the current scope\n            if (typeof jobId !== \"undefined\" && jobId) {\n                const separator = actualThankYouUrl.includes(\"?\") ? \"&\" : \"?\"\n                redirectUrl = `${actualThankYouUrl}${separator}jobId=${encodeURIComponent(jobId)}`\n                console.log(\n                    `Redirecting with jobId despite error: ${redirectUrl}`\n                )\n            } else {\n                console.log(\n                    \"No jobId found, redirecting to plain thank you page\"\n                )\n            }\n\n            if (DEBUG_NO_REDIRECT) {\n                console.log(\"🚫 REDIRECT BLOCKED (error fallback)\")\n                console.log(\"Would redirect to:\", redirectUrl)\n            } else {\n                window.location.href = redirectUrl\n            }\n        } finally {\n            setIsSubmitting(false)\n        }\n    } */// FULL handleSubmit function with debug logging\n// Replace your existing handleSubmit function (around line 2615) with this\nconst handleSubmit=async()=>{console.log(\"═══════════════════════════════════════\");console.log(\"🚀 FORM SUBMISSION STARTED\");console.log(\"═══════════════════════════════════════\");console.log(\"All answers:\",answers);// ═══════════════════════════════════════\n// PHONE VALIDATION\n// ═══════════════════════════════════════\nconst phoneValue=answers.phone;console.log(\"\\n📱 PHONE VALIDATION DEBUG:\");console.log(\"  - Raw phone value:\",phoneValue);console.log(\"  - Type:\",typeof phoneValue);console.log(\"  - Length:\",phoneValue?.length);console.log(\"  - Trimmed:\",phoneValue?.trim?.());console.log(\"  - Trimmed length:\",phoneValue?.trim?.()?.length);// Basic validation check\nif(!phoneValue||typeof phoneValue!==\"string\"||phoneValue.trim().length<8){console.log(\"❌ BLOCKED: Failed basic validation\");console.log(\"  - !phoneValue:\",!phoneValue);console.log(\"  - typeof !== string:\",typeof phoneValue!==\"string\");console.log(\"  - length < 8:\",phoneValue?.trim?.()?.length<8);setPhoneValidationStatus(\"invalid\");return;}console.log(\"✅ Passed basic validation, calling Sinch...\");setPhoneValidationStatus(\"checking\");try{console.log(\"🔄 Calling validatePhoneWithSinch...\");console.log(\"  - Input:\",phoneValue.trim());console.log(\"  - E164 conversion:\",convertToE164(phoneValue.trim()));const validationResult=await validatePhoneWithSinch(phoneValue.trim());console.log(\"\\n📞 SINCH VALIDATION RESULT:\");console.log(\"  - Full result:\",JSON.stringify(validationResult,null,2));console.log(\"  - valid:\",validationResult.valid);console.log(\"  - error:\",validationResult.error);console.log(\"  - e164:\",validationResult.e164);console.log(\"  - carrier:\",validationResult.carrier);console.log(\"  - numberType:\",validationResult.numberType);setSinchValidationResult(validationResult);if(!validationResult.valid){console.log(\"❌ BLOCKED: Sinch returned invalid\");console.log(\"  - Reason:\",validationResult.error);setPhoneValidationStatus(\"invalid\");return;}console.log(\"✅ Sinch validation PASSED!\");setPhoneValidationStatus(\"valid\");}catch(error){console.log(\"\\n💥 SINCH VALIDATION ERROR:\");console.log(\"  - Error:\",error);console.log(\"  - Message:\",error.message);console.log(\"  - Stack:\",error.stack);setPhoneValidationStatus(\"invalid\");return;}// ═══════════════════════════════════════\n// PROCEED WITH FORM SUBMISSION\n// ═══════════════════════════════════════\nconsole.log(\"\\n🚀 Phone valid, proceeding to form submission...\");setIsSubmitting(true);debugLogger.log(\"submission\",\"📤 Starting Form Submission\",{answers});console.log(\"\\n🔗 THANK YOU URL DEBUG:\");console.log(\"  - thankYouUrl prop:\",thankYouUrl);console.log(\"  - actualThankYouUrl:\",actualThankYouUrl);let jobId=null;console.log(\"=== FORM SUBMISSION DEBUG START ===\");const submitToWebhook=async(data,retryCount=0)=>{const maxRetries=3;const webhookUrl=\"https://handlyde.app.n8n.cloud/webhook/be035f81-005b-474a-98e0-1f8ccb3dd0f8\";try{console.log(`\n📤 Webhook attempt ${retryCount+1}/${maxRetries+1}`);console.log(\"  - URL:\",webhookUrl);const response=await fetch(webhookUrl,{method:\"POST\",headers:{\"Content-Type\":\"application/json\",Accept:\"application/json\",\"User-Agent\":\"RoofLeadForm/1.0\"},body:JSON.stringify(data),signal:AbortSignal.timeout?AbortSignal.timeout(3e4):undefined});console.log(\"  - Response status:\",response.status);console.log(\"  - Response ok:\",response.ok);if(response.ok){const responseText=await response.text();console.log(\"  - Raw response:\",responseText.substring(0,500));let responseData;try{responseData=JSON.parse(responseText);console.log(\"  - Parsed JSON:\",responseData);}catch(parseError){console.log(\"  - Response is not JSON, treating as plain text\");responseData=responseText;}return{success:true,data:responseData};}else{throw new Error(`HTTP ${response.status}: ${response.statusText}`);}}catch(error){console.error(`❌ Webhook attempt ${retryCount+1} failed:`,error);if(retryCount<maxRetries){const delay=Math.min(1e3*Math.pow(2,retryCount),5e3);console.log(`  - Retrying in ${delay}ms...`);await new Promise(resolve=>setTimeout(resolve,delay));return submitToWebhook(data,retryCount+1);}else{throw error;}}};try{const formattedAnswers={...answers};// Convert house size to numeric square meters\nif(formattedAnswers.houseSize){formattedAnswers.houseSizeSquareMeters=houseSizeToSquareMeters(formattedAnswers.houseSize);formattedAnswers.houseSizeCategory=formattedAnswers.houseSize;}// Use E.164 format for phone if Sinch validated it\nif(formattedAnswers.phone&&sinchValidationResult?.valid){formattedAnswers.phone_e164=sinchValidationResult.e164;formattedAnswers.phone_display=formattedAnswers.phone;formattedAnswers.phone_carrier=sinchValidationResult.carrier;formattedAnswers.phone_type=sinchValidationResult.numberType;formattedAnswers.phone=sinchValidationResult.e164;}else if(formattedAnswers.phone){formattedAnswers.phone_e164=convertToE164(formattedAnswers.phone);formattedAnswers.phone_display=formattedAnswers.phone;formattedAnswers.phone=convertToE164(formattedAnswers.phone);}// Handle name fields based on role\nif(formattedAnswers.role===\"hausverwaltung\"){if(formattedAnswers.firmenname){formattedAnswers.firmenname=formattedAnswers.firmenname;}if(formattedAnswers.ansprechpartner){formattedAnswers.ansprechpartner_vorname=formattedAnswers.ansprechpartner.vorname;formattedAnswers.ansprechpartner_nachname=formattedAnswers.ansprechpartner.nachname;delete formattedAnswers.ansprechpartner;}}else{if(formattedAnswers.name){formattedAnswers.vorname=formattedAnswers.name.vorname;formattedAnswers.nachname=formattedAnswers.name.nachname;delete formattedAnswers.name;}}const getTypeId=()=>{if(serviceOverride&&serviceOverride!==\"none\"){const overrideMap={komplett:1,daemmung:2,fenster:3,gauben:4,dachrinnen:5,reparatur:6};return overrideMap[serviceOverride]||0;}if(formattedAnswers.service&&Array.isArray(formattedAnswers.service)){const serviceTypeMap={dachsanierung:1,neuer_dachbau:1,dach_daemmen:2,dachfenster_gauben:3,reparatur:6,noch_nicht_sicher:0};for(const service of formattedAnswers.service){if(serviceTypeMap[service]){return serviceTypeMap[service];}}}if(formattedAnswers.windows===\"austausch\"||formattedAnswers.windows===\"neueinbau\"){return 3;}return 0;};const getServiceCategoryId=()=>{if(formattedAnswers.service&&Array.isArray(formattedAnswers.service)){const serviceTypeMap={dachsanierung:1,neuer_dachbau:1,dachfenster_gauben:3,reparatur:6,dach_daemmen:2};for(const service of formattedAnswers.service){if(serviceTypeMap[service]){return serviceTypeMap[service];}}}return 0;};const getPropertyId=()=>{if(formattedAnswers.roofType){const roofTypeMap={flachdach:1,satteldach:2,walmdach:3,sonstige:0};return roofTypeMap[formattedAnswers.roofType]||0;}return 0;};const getTaskIds=()=>{const taskIds=[];if(formattedAnswers.service&&Array.isArray(formattedAnswers.service)){if(formattedAnswers.service.includes(\"reparatur\")){taskIds.push(13);taskIds.push(14);}if(formattedAnswers.service.includes(\"dach_daemmen\")){taskIds.push(16);}}if(formattedAnswers.windows===\"austausch\"){taskIds.push(8);}if(formattedAnswers.windows===\"neueinbau\"){taskIds.push(15);}if(formattedAnswers.dormer===\"ja\"){taskIds.push(4);}if(formattedAnswers.insulation===\"ja\"){taskIds.push(16);}if(formattedAnswers.flachdachInsulation===\"ja\"){taskIds.push(16);}if(formattedAnswers.solar===\"ja\"){taskIds.push(18);}if(formattedAnswers.flachdachSolar===\"ja\"){taskIds.push(18);}return[...new Set(taskIds)];};const getSquareMeters=()=>{return formattedAnswers.houseSize||0;};const getTimeId=()=>{const timelineValue=formattedAnswers.timeline;console.log(\"getTimeId called, timeline value:\",timelineValue);return timelineValue||0;};const getEstimatedAreaRange=()=>{const houseSize=formattedAnswers.houseSize;if(houseSize===75){return{estimatedStartArea:0,estimatedEndArea:100};}else if(houseSize===150){return{estimatedStartArea:100,estimatedEndArea:200};}else if(houseSize===250){return{estimatedStartArea:200,estimatedEndArea:null};}return{estimatedStartArea:null,estimatedEndArea:null};};const getNumberOfWindows=()=>{const windowCount=formattedAnswers.windowCount;if(windowCount===\"1\")return 1;if(windowCount===\"2_4\")return 2;if(windowCount===\"4_plus\")return 4;return null;};const getNumberOfGauben=()=>{const dormer=formattedAnswers.dormer;if(dormer===\"ja\")return 1;return null;};const areaRange=getEstimatedAreaRange();const submissionData={...formattedAnswers,serviceOverride:serviceOverride||\"none\",taskIds:getTaskIds(),estimatedStartArea:areaRange.estimatedStartArea,estimatedEndArea:areaRange.estimatedEndArea,numberOfWindows:getNumberOfWindows(),numberOfGauben:getNumberOfGauben(),typeId:getTypeId(),propertyId:getPropertyId(),squareMeters:getSquareMeters(),timeId:getTimeId(),address_street_name:addressComponents.street_name,address_house_number:addressComponents.house_number,address_postal_code:addressComponents.postal_code,address_city:addressComponents.city,address_state:addressComponents.state,address_country:addressComponents.country,address_formatted:addressComponents.formatted_address,address_source:addressComponents.address_source,address_latitude:addressComponents.latitude,address_longitude:addressComponents.longitude,address_place_id:addressComponents.place_id,phone_type:detectPhoneType(formattedAnswers.phone),phone_formatted:formattedAnswers.phone,phone_is_mobile:detectPhoneType(formattedAnswers.phone)===\"mobile\",phone_is_landline:detectPhoneType(formattedAnswers.phone)===\"landline\",...(()=>{const sp=new URLSearchParams(window.location.search);let hp=new URLSearchParams;if(window.location.hash.includes(\"?\")){hp=new URLSearchParams(window.location.hash.split(\"?\")[1]);}const get=key=>sp.get(key)||hp.get(key)||null;return{utm_source:get(\"utm_source\"),utm_medium:get(\"utm_medium\"),utm_campaign:get(\"utm_campaign\"),utm_content:get(\"utm_content\"),utm_term:get(\"utm_term\"),utm_id:get(\"utm_id\")};})(),referrer_url:referrerInfo.url||null,landing_page:referrerInfo.landingPage||(typeof window!==\"undefined\"?window.location.href:null),session_id:referrerInfo.sessionId,fbc:(()=>{try{const fbcCookie=document.cookie.split(\"; \").find(c=>c.startsWith(\"_fbc=\"));if(fbcCookie)return fbcCookie.split(\"=\")[1];}catch(e){}if(referrerInfo.fbc)return referrerInfo.fbc;const fbclid=new URLSearchParams(window.location.search).get(\"fbclid\");if(fbclid)return`fb.1.${Date.now()}.${fbclid}`;return null;})(),fbp:(()=>{try{const fbpCookie=document.cookie.split(\"; \").find(c=>c.startsWith(\"_fbp=\"));if(fbpCookie)return fbpCookie.split(\"=\")[1];}catch(e){}return referrerInfo.facebook_browser_id||null;})(),fbclid:(()=>{const sp=new URLSearchParams(window.location.search);let id=sp.get(\"fbclid\");if(!id&&window.location.hash.includes(\"?\")){const hp=new URLSearchParams(window.location.hash.split(\"?\")[1]);id=hp.get(\"fbclid\");}return id||null;})(),facebook_pixel_enabled:typeof window!==\"undefined\"&&window.fbq?true:false,timestamp:new Date().toISOString(),source:\"roof-lead-form\",userAgent:typeof window!==\"undefined\"?navigator.userAgent:null,url:typeof window!==\"undefined\"?window.location.href:null,formVersion:\"1.0\",webhookId,page_title:typeof document!==\"undefined\"?document.title:null,screen_resolution:typeof window!==\"undefined\"?`${window.screen.width}x${window.screen.height}`:null,viewport_size:typeof window!==\"undefined\"?`${window.innerWidth}x${window.innerHeight}`:null,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,language:typeof navigator!==\"undefined\"?navigator.language:null};console.log(\"\\n📦 SUBMISSION DATA:\");console.log(\"  - Email:\",submissionData.email);console.log(\"  - Phone:\",submissionData.phone);console.log(\"  - Name:\",submissionData.vorname,submissionData.nachname);if(typeof window!==\"undefined\"&&window.gtag){try{window.gtag(\"event\",\"generate_lead\",{event_category:\"engagement\",event_label:\"roof_lead_form\",value:1,utm_source:utmParams.utm_source,utm_campaign:utmParams.utm_campaign});console.log(\"✅ Google Analytics Lead event fired\");}catch(gaError){console.log(\"⚠️ Google Analytics error:\",gaError);}}debugLogger.logSubmission(submissionData);// Submit the form and get response\nconsole.log(\"\\n📤 SUBMITTING TO WEBHOOK...\");const result=await submitToWebhook(submissionData);console.log(\"\\n📥 WEBHOOK RESULT:\");console.log(\"  - Success:\",result.success);if(result.success){console.log(\"✅ Webhook submission successful!\");// Track completion\ntrackFormCompletion(formattedAnswers);// Clear localStorage\nif(typeof window!==\"undefined\"){localStorage.removeItem(STORAGE_KEY);console.log(\"✅ localStorage cleared\");}// Extract job ID\nif(result.data){console.log(\"Attempting to extract job ID...\");if(typeof result.data===\"object\"){console.log(\"Available keys in response:\",Object.keys(result.data));jobId=result.data.jobId||result.data.data?.jobId||result.data.job_id||result.data.id||null;console.log(\"Extracted job ID:\",jobId);}}// Build redirect URL with form data\nlet redirectUrl=actualThankYouUrl;const urlParams=new URLSearchParams;if(jobId){console.log(`✅ Job ID found: \"${jobId}\"`);const jobIdString=String(jobId).trim();urlParams.append(\"jobId\",jobIdString);}if(formattedAnswers.email){urlParams.append(\"email\",formattedAnswers.email);}if(formattedAnswers.vorname){urlParams.append(\"firstName\",formattedAnswers.vorname);}if(formattedAnswers.nachname){urlParams.append(\"lastName\",formattedAnswers.nachname);}if(formattedAnswers.phone){urlParams.append(\"phone\",formattedAnswers.phone);}const hasExistingParams=actualThankYouUrl.includes(\"?\");const separator=hasExistingParams?\"&\":\"?\";const paramString=urlParams.toString();if(paramString){redirectUrl=`${actualThankYouUrl}${separator}${paramString}`;}console.log(\"\\n═══════════════════════════════════════\");console.log(\"🎯 REDIRECT DEBUG:\");console.log(\"═══════════════════════════════════════\");console.log(\"  - actualThankYouUrl:\",actualThankYouUrl);console.log(\"  - Final redirectUrl:\",redirectUrl);console.log(\"  - DEBUG_NO_REDIRECT:\",DEBUG_NO_REDIRECT);// Small delay to ensure console logs are visible\nawait new Promise(resolve=>setTimeout(resolve,100));// Redirect\nif(DEBUG_NO_REDIRECT){console.log(\"\\n🚫 REDIRECT BLOCKED FOR DEBUGGING\");console.log(\"Would redirect to:\",redirectUrl);console.log(\"Form data successfully submitted to webhook!\");console.log(\"Set DEBUG_NO_REDIRECT = false to enable redirect\");}else{console.log(\"\\n🚀 REDIRECTING NOW TO:\",redirectUrl);window.location.href=redirectUrl;}}else{throw new Error(\"Submission failed after all retries\");}}catch(error){console.error(\"\\n💥 SUBMISSION ERROR:\");console.error(\"  - Error:\",error);console.error(\"  - Message:\",error.message);debugLogger.logError(\"handleSubmit\",error);// Try to redirect with jobId if we managed to extract one before the error\nlet redirectUrl=actualThankYouUrl;if(typeof jobId!==\"undefined\"&&jobId){const separator=actualThankYouUrl.includes(\"?\")?\"&\":\"?\";redirectUrl=`${actualThankYouUrl}${separator}jobId=${encodeURIComponent(jobId)}`;console.log(`Redirecting with jobId despite error: ${redirectUrl}`);}else{console.log(\"No jobId found, redirecting to plain thank you page\");}if(DEBUG_NO_REDIRECT){console.log(\"🚫 REDIRECT BLOCKED (error fallback)\");console.log(\"Would redirect to:\",redirectUrl);}else{console.log(\"🚀 REDIRECTING (error fallback) TO:\",redirectUrl);window.location.href=redirectUrl;}}finally{setIsSubmitting(false);}};useEffect(()=>{const handleGlobalKeyDown=e=>{// Only handle Enter key\nif(e.key!==\"Enter\")return;// Don't interfere if user is typing in an input\nif(e.target.tagName===\"INPUT\"||e.target.tagName===\"TEXTAREA\"){return;// Let input-specific handlers deal with this\n}// Prevent default form submission\ne.preventDefault();// Check if current step is valid\nif(!isStepValid())return;// Calculate isLastStep here since it's not a state variable\nconst isLastStep=currentStep===questionFlow.length-1;// Submit or go to next step\nif(isLastStep){if(!isSubmitting){handleSubmit();}}else{nextStep();}};// Add event listener\ndocument.addEventListener(\"keydown\",handleGlobalKeyDown);// Cleanup\nreturn()=>{document.removeEventListener(\"keydown\",handleGlobalKeyDown);};},[currentStep,questionFlow.length,isSubmitting,answers])// Updated dependencies\n;if(showStartScreen){return /*#__PURE__*/_jsx(StartScreen,{});}if(isInitializing||questionFlow.length===0){return /*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",alignItems:\"center\",justifyContent:\"center\",minHeight:\"100vh\",backgroundColor:\"#fafafa\"},children:/*#__PURE__*/_jsxs(\"div\",{style:{textAlign:\"center\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{width:\"40px\",height:\"40px\",border:\"3px solid #e5e7eb\",borderTop:`3px solid ${colors.primary}`,borderRadius:\"50%\",animation:\"spin 1s linear infinite\",margin:\"0 auto 16px\"}}),/*#__PURE__*/_jsx(\"p\",{style:{color:\"#6b7280\",fontSize:\"14px\",margin:0},children:\"Formular wird geladen...\"})]})});}if(isOutOfServiceArea){return /*#__PURE__*/_jsx(OutOfServiceAreaPage,{});}if(isMieterSelected){return /*#__PURE__*/_jsx(NotAvailablePage,{});}if(isSubmitting){return /*#__PURE__*/_jsx(LoadingScreen,{});}if(!isReady){return /*#__PURE__*/_jsx(\"div\",{style:{textAlign:\"center\",paddingTop:\"50vh\",fontSize:\"20px\",color:colors.gray[500]},children:\"Formular wird geladen...\"});}const progress=totalSteps>0?Math.round((currentStep+1)/totalSteps*100):0;// Clean question rendering with better visuals\nconst QuestionHeader=({question,subtitle})=>/*#__PURE__*/_jsxs(\"div\",{style:{textAlign:\"center\",marginBottom:isMobile?\"20px\":\"28px\",minHeight:isMobile?\"80px\":\"100px\",display:\"flex\",flexDirection:\"column\",justifyContent:\"center\",width:\"100%\",padding:isMobile?\"0 8px\":\"0\"},children:[/*#__PURE__*/_jsx(\"h2\",{style:{fontSize:isMobile?\"22px\":\"36px\",fontWeight:\"600\",color:\"#111827\",margin:\"0 0 12px 0\",lineHeight:isMobile?\"1.35\":\"1.3\",width:\"100%\",maxWidth:\"100%\",textAlign:\"center\",wordBreak:\"keep-all\",overflowWrap:\"normal\"},children:question}),/*#__PURE__*/_jsx(\"div\",{style:{minHeight:isMobile?\"24px\":\"28px\"},children:subtitle&&/*#__PURE__*/_jsx(\"p\",{style:{color:\"#6b7280\",fontSize:isMobile?\"18px\":\"19px\",margin:\"0\",fontWeight:\"400\",lineHeight:\"1.5\"},children:subtitle})})]});// Clean question rendering with better visuals\nconst renderQuestion=()=>{const currentQuestionId=questionFlow[currentStep];// Debug logging\nconsole.log(\"=== RENDER QUESTION DEBUG ===\");console.log(\"Current step:\",currentStep);console.log(\"Current question ID:\",currentQuestionId);console.log(\"Question flow:\",questionFlow);console.log(\"Answers so far:\",answers);if(!currentQuestionId){console.error(\"No question ID at step\",currentStep);return /*#__PURE__*/_jsxs(\"div\",{style:{padding:\"20px\",textAlign:\"center\",color:\"#ef4444\"},children:[/*#__PURE__*/_jsx(\"h3\",{children:\"Error: No question found\"}),/*#__PURE__*/_jsxs(\"p\",{children:[\"Step \",currentStep,\" has no question ID\"]}),/*#__PURE__*/_jsxs(\"p\",{children:[\"Question flow: \",JSON.stringify(questionFlow)]})]});}const question=questions[currentQuestionId];if(!question){console.error(`Question not found for ID: ${currentQuestionId}`);console.error(\"Available questions:\",Object.keys(questions));return /*#__PURE__*/_jsxs(\"div\",{style:{padding:\"20px\",textAlign:\"center\",color:\"#ef4444\"},children:[/*#__PURE__*/_jsx(\"h3\",{children:\"Error: Question not defined\"}),/*#__PURE__*/_jsxs(\"p\",{children:['Question ID \"',currentQuestionId,'\" is not in questions object']}),/*#__PURE__*/_jsxs(\"p\",{children:[\"Available questions: \",Object.keys(questions).join(\", \")]})]});}const answer=answers[currentQuestionId];// NEW: Determine which image set to use for houseSize\nlet hasImages=questionImages[currentQuestionId];// Special handling for houseSize - use different images for flachdach\nif(currentQuestionId===\"houseSize\"&&answers.roofType===\"flachdach\"){hasImages=questionImages.houseSizeFlachdach;}switch(question.type){case\"select\":return /*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsxs(\"div\",{style:{textAlign:\"center\",marginBottom:isMobile?\"48px\":\"64px\",minHeight:isMobile?\"100px\":\"120px\",display:\"flex\",flexDirection:\"column\",justifyContent:\"center\"},children:[/*#__PURE__*/_jsx(\"h1\",{style:{fontSize:isMobile?\"24px\":\"36px\",fontWeight:\"700\",color:\"#0f172a\",margin:\"0 0 12px 0\",lineHeight:\"1.2\",letterSpacing:\"-0.02em\"},children:question.question}),/*#__PURE__*/_jsx(\"div\",{style:{minHeight:isMobile?\"24px\":\"30px\"},children:question.subtitle&&/*#__PURE__*/_jsx(\"p\",{style:{color:\"#64748b\",fontSize:isMobile?\"16px\":\"20px\",margin:\"0\",fontWeight:\"400\",lineHeight:\"1.5\",letterSpacing:\"-0.01em\"},children:question.subtitle})})]}),/*#__PURE__*/_jsx(\"div\",{style:{display:\"grid\",gridTemplateColumns:\"1fr 1fr\",gap:isMobile?\"12px\":\"24px\",maxWidth:\"700px\",margin:\"0 auto\"},children:question.options.map((option,index)=>{const optionImage=hasImages?questionImages[currentQuestionId][option.value]:null;const isSelected=answer===option.value;return /*#__PURE__*/_jsxs(\"button\",{onClick:()=>{handleAnswer(currentQuestionId,option.value);setTimeout(nextStep,600);},style:{padding:\"0\",borderRadius:\"16px\",border:isSelected?`3px solid ${colors.primary}`:`2px solid #e5e7eb`,backgroundColor:\"white\",textAlign:\"left\",cursor:\"pointer\",transition:\"all 0.3s cubic-bezier(0.4, 0, 0.2, 1)\",width:\"100%\",boxShadow:isSelected?`0 8px 16px ${colors.primary}20`:\"0 2px 8px rgba(0, 0, 0, 0.08)\",overflow:\"hidden\",display:\"flex\",flexDirection:\"column\",transform:isSelected?\"translateY(-4px)\":\"translateY(0)\",position:\"relative\",animation:`fadeInScale 0.6s cubic-bezier(0.4, 0, 0.2, 1) ${index*150}ms both`},onMouseEnter:e=>{if(!isSelected){e.currentTarget.style.transform=\"translateY(-2px)\";e.currentTarget.style.boxShadow=\"0 20px 25px -5px rgba(0, 0, 0, 0.15), 0 10px 10px -5px rgba(0, 0, 0, 0.1)\";}},onMouseLeave:e=>{if(!isSelected){e.currentTarget.style.transform=\"translateY(0)\";e.currentTarget.style.boxShadow=\"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)\";}},children:[option.popular&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",top:\"12px\",right:\"12px\",background:`linear-gradient(135deg, ${colors.warning}, #d97706)`,color:\"white\",padding:\"4px 8px\",borderRadius:\"6px\",fontSize:\"11px\",fontWeight:\"600\",zIndex:2,boxShadow:`0 2px 8px ${colors.warning}40`,animation:\"pulse 2s infinite\"},children:\"BELIEBT\"}),optionImage&&/*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",height:isMobile?\"140px\":\"210px\",overflow:\"hidden\",position:\"relative\"},children:[/*#__PURE__*/_jsx(\"img\",{src:optionImage,alt:option.label,style:{width:\"100%\",height:\"100%\",objectFit:\"cover\",display:\"block\"}}),isSelected&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",top:\"16px\",right:\"16px\",width:\"32px\",height:\"32px\",backgroundColor:colors.primary,borderRadius:\"50%\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",boxShadow:\"0 4px 12px rgba(94, 104, 234, 0.4)\",animation:\"successBounce 0.6s ease-out\"},children:/*#__PURE__*/_jsx(\"div\",{style:{color:\"white\",fontSize:\"18px\",fontWeight:\"bold\"},children:\"✓\"})})]}),/*#__PURE__*/_jsx(\"div\",{style:{padding:isMobile?\"16px\":\"32px\"},children:/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:\"16px\"},children:[!optionImage&&option.icon&&/*#__PURE__*/_jsx(\"div\",{style:{fontSize:isMobile?\"24px\":\"48px\",lineHeight:\"1\",flexShrink:0},children:option.icon}),/*#__PURE__*/_jsxs(\"div\",{style:{flex:1},children:[/*#__PURE__*/_jsx(\"h3\",{style:{fontSize:isMobile?\"18px\":\"20px\",fontWeight:\"700\",color:isSelected?colors.primary:\"#1e293b\",margin:\"0\",transition:\"color 0.3s ease\",letterSpacing:\"-0.01em\"},children:option.label}),option.description&&/*#__PURE__*/_jsx(\"p\",{style:{color:\"#64748b\",fontSize:isMobile?\"14px\":\"16px\",margin:\"0\",fontWeight:\"400\",lineHeight:\"1.5\",transition:\"color 0.3s ease\"},children:option.description})]})]})})]},option.value);})})]});case\"single\":const isDaemmungQuestion=currentQuestionId===\"flachdachDaemmungTyp\"||currentQuestionId===\"steildachDaemmungTyp\";const needsExtraPadding=currentQuestionId===\"zeitrahmen\"||currentQuestionId===\"eigentuemer\";return /*#__PURE__*/_jsxs(\"div\",{style:{maxWidth:\"700px\",margin:\"0 auto\"},children:[\" \",/*#__PURE__*/_jsx(QuestionHeader,{question:question.question,subtitle:question.subtitle}),/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:\"12px\"},children:question.options.map((option,index)=>{// NEW: Get images based on roof type for houseSize\nlet optionImage=null;if(currentQuestionId===\"houseSize\"&&answers.roofType===\"flachdach\"){optionImage=questionImages.houseSizeFlachdach?.[option.value];}else{optionImage=hasImages?questionImages[currentQuestionId]?.[option.value]:null;}const isSelected=answer===option.value;if(isDaemmungQuestion){return /*#__PURE__*/_jsxs(\"button\",{onClick:()=>{handleAnswer(currentQuestionId,option.value);setTimeout(nextStep,400);},style:{width:\"100%\",padding:\"0\",borderRadius:\"8px\",border:isSelected?`2px solid ${colors.primary}`:\"1px solid #e5e7eb\",backgroundColor:isSelected?colors.primaryLight:\"white\",textAlign:\"left\",cursor:\"pointer\",transition:\"all 0.2s ease\",fontSize:isMobile?\"15px\":\"16px\",fontWeight:\"500\",color:\"#111827\",display:\"flex\",flexDirection:\"row\",alignItems:\"stretch\",gap:\"0\",height:isMobile?\"80px\":\"100px\",minHeight:isMobile?\"80px\":\"100px\",overflow:\"hidden\",boxShadow:isSelected?\"0 4px 8px rgba(94, 104, 234, 0.1)\":\"0 1px 2px rgba(0, 0, 0, 0.05)\",position:\"relative\"},onMouseEnter:e=>{if(!isSelected){e.currentTarget.style.backgroundColor=\"#f9fafb\";e.currentTarget.style.borderColor=\"#9ca3af\";}},onMouseLeave:e=>{if(!isSelected){e.currentTarget.style.backgroundColor=\"white\";e.currentTarget.style.borderColor=\"#e5e7eb\";}},children:[optionImage&&/*#__PURE__*/_jsx(\"div\",{style:{width:isMobile?\"100px\":\"120px\",height:\"100%\",minWidth:isMobile?\"100px\":\"120px\",flexShrink:0,overflow:\"hidden\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",backgroundColor:\"#f8f9fa\"},children:/*#__PURE__*/_jsx(\"img\",{src:optionImage,alt:option.label,style:{width:\"100%\",height:\"100%\",objectFit:\"cover\",display:\"block\"}})}),/*#__PURE__*/_jsxs(\"div\",{style:{flex:1,padding:isMobile?\"10px 12px\":\"12px 16px\",display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{flex:1},children:[/*#__PURE__*/_jsx(\"div\",{style:{fontSize:isMobile?\"13px\":\"14px\",fontWeight:\"500\",lineHeight:\"1.2\"},children:option.label}),option.description&&!isMobile&&/*#__PURE__*/_jsx(\"div\",{style:{fontSize:\"11px\",color:\"#6b7280\",marginTop:\"4px\",lineHeight:\"1.3\",overflow:\"hidden\",textOverflow:\"ellipsis\",display:\"-webkit-box\",WebkitLineClamp:2,WebkitBoxOrient:\"vertical\"},children:option.description})]}),isSelected&&/*#__PURE__*/_jsx(\"div\",{style:{width:\"24px\",height:\"24px\",backgroundColor:colors.primary,borderRadius:\"50%\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",flexShrink:0,marginLeft:\"12px\"},children:/*#__PURE__*/_jsx(\"div\",{style:{color:\"white\",fontSize:\"14px\",fontWeight:\"bold\"},children:\"✓\"})})]})]},option.value);}else{return /*#__PURE__*/_jsxs(\"button\",{onClick:()=>{handleAnswer(currentQuestionId,option.value);if(currentQuestionId!==\"flachdachService\"&&currentQuestionId!==\"steildachService\"){setTimeout(nextStep,400);}},style:{width:\"100%\",padding:\"0\",borderRadius:\"12px\",border:isSelected?`2px solid ${colors.primary}`:\"1px solid #e5e7eb\",backgroundColor:isSelected?colors.primaryLight:\"white\",textAlign:\"left\",cursor:\"pointer\",transition:\"all 0.2s ease\",fontSize:isMobile?\"16px\":\"17px\",fontWeight:\"500\",color:\"#111827\",display:\"flex\",flexDirection:\"row\",alignItems:\"stretch\",gap:\"0\",height:isMobile?\"80px\":\"100px\",minHeight:isMobile?\"80px\":\"100px\",overflow:\"hidden\",boxShadow:isSelected?\"0 4px 8px rgba(94, 104, 234, 0.1)\":\"0 1px 2px rgba(0, 0, 0, 0.05)\",position:\"relative\"},onMouseEnter:e=>{if(!isSelected){e.currentTarget.style.backgroundColor=\"#f9fafb\";e.currentTarget.style.borderColor=\"#9ca3af\";}},onMouseLeave:e=>{if(!isSelected){e.currentTarget.style.backgroundColor=\"white\";e.currentTarget.style.borderColor=\"#e5e7eb\";}},children:[option.popular&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",top:\"6px\",right:\"6px\",background:\"#f59e0b\",color:\"white\",padding:\"2px 6px\",borderRadius:\"4px\",fontSize:\"9px\",fontWeight:\"600\",zIndex:2},children:\"BELIEBT\"}),optionImage&&/*#__PURE__*/_jsx(\"div\",{style:{width:isMobile?\"100px\":\"120px\",height:\"100%\",minWidth:isMobile?\"100px\":\"120px\",flexShrink:0,overflow:\"hidden\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",backgroundColor:\"#f8f9fa\"},children:/*#__PURE__*/_jsx(\"img\",{src:optionImage,alt:option.label,style:{width:\"100%\",height:\"100%\",objectFit:\"cover\",display:\"block\"}})}),/*#__PURE__*/_jsx(\"div\",{style:{flex:1,padding:needsExtraPadding?isMobile?\"20px 18px\":\"24px 22px\":isMobile?\"18px 16px\":\"20px 18px\",display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\",alignSelf:\"stretch\"},children:/*#__PURE__*/_jsxs(\"div\",{style:{flex:1},children:[/*#__PURE__*/_jsx(\"div\",{children:option.label}),option.description&&!isMobile&&/*#__PURE__*/_jsx(\"div\",{style:{fontSize:\"12px\",color:isSelected?colors.primary:\"#111827\",marginTop:\"6px\",lineHeight:\"1.4\",whiteSpace:\"pre-line\"},children:option.description})]})})]},option.value);}})})]});case\"multiple\":if(currentQuestionId===\"service\"){return /*#__PURE__*/_jsxs(\"div\",{style:{maxWidth:\"1000px\",margin:\"0 auto\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{textAlign:\"center\",marginBottom:isMobile?\"32px\":\"40px\",padding:isMobile?\"0 16px\":\"0\"},children:[showFirstQuestionHeadline&&/*#__PURE__*/_jsx(\"h1\",{style:{fontSize:isMobile?\"22px\":\"36px\",fontWeight:\"800\",color:\"#0f172a\",margin:\"0 0 8px 0\",lineHeight:\"1.1\",letterSpacing:\"-0.03em\",width:\"100%\",maxWidth:\"100%\"},children:question.question}),question.subtitle&&/*#__PURE__*/_jsx(\"p\",{style:{color:\"#475569\",fontSize:isMobile?\"14px\":\"20px\",margin:\"0\",lineHeight:\"1.5\"},children:question.subtitle})]}),/*#__PURE__*/_jsx(\"div\",{style:{display:\"grid\",gridTemplateColumns:isMobile?\"repeat(2, 1fr)\":\"repeat(auto-fit, minmax(280px, 1fr))\",gap:isMobile?\"12px\":\"20px\",maxWidth:\"900px\",margin:\"0 auto\"},children:question.options.map((option,index)=>{const optionImage=hasImages?questionImages[currentQuestionId][option.value]:null;const currentAnswers=Array.isArray(answer)?answer:[];const isChecked=currentAnswers.includes(option.value);return /*#__PURE__*/_jsxs(\"button\",{onClick:()=>{const currentAnswers=Array.isArray(answer)?answer:[];if(isChecked){handleAnswer(currentQuestionId,currentAnswers.filter(a=>a!==option.value));}else{handleAnswer(currentQuestionId,[...currentAnswers,option.value]);}},style:{padding:\"0\",borderRadius:isMobile?\"12px\":\"16px\",border:isChecked?`3px solid ${colors.primary}`:\"2px solid #e5e7eb\",backgroundColor:\"white\",cursor:\"pointer\",transition:\"all 0.3s cubic-bezier(0.4, 0, 0.2, 1)\",overflow:\"hidden\",boxShadow:isChecked?`0 20px 40px ${colors.primary}30`:\"0 4px 12px rgba(0, 0, 0, 0.08)\",transform:isChecked?\"translateY(-4px) scale(1.02)\":\"translateY(0)\",animation:`fadeInScale 0.6s ease-out ${index*.1}s both`,position:\"relative\"},onMouseEnter:e=>{if(!isChecked){e.currentTarget.style.transform=\"translateY(-2px)\";e.currentTarget.style.boxShadow=\"0 20px 40px rgba(0, 0, 0, 0.12)\";}},onMouseLeave:e=>{if(!isChecked){e.currentTarget.style.transform=\"translateY(0)\";e.currentTarget.style.boxShadow=\"0 4px 12px rgba(0, 0, 0, 0.08)\";}},children:[optionImage&&/*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",height:isMobile?\"100px\":\"160px\",overflow:\"hidden\",position:\"relative\",backgroundColor:\"#f1f5f9\"},children:[/*#__PURE__*/_jsx(\"img\",{src:optionImage,alt:option.label,style:{width:\"100%\",height:\"100%\",objectFit:\"cover\",transition:\"transform 0.5s ease\",transform:isChecked?\"scale(1.05)\":\"scale(1)\"}}),isChecked&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",top:isMobile?\"8px\":\"12px\",right:isMobile?\"8px\":\"12px\",width:isMobile?\"28px\":\"32px\",height:isMobile?\"28px\":\"32px\",backgroundColor:colors.primary,borderRadius:\"50%\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",boxShadow:`0 8px 16px ${colors.primary}40`,animation:\"successBounce 0.6s ease-out\"},children:/*#__PURE__*/_jsx(\"div\",{style:{color:\"white\",fontSize:isMobile?\"14px\":\"16px\",fontWeight:\"bold\"},children:\"✓\"})}),/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,background:isChecked?`linear-gradient(to bottom, transparent, ${colors.primary}20)`:\"transparent\",transition:\"all 0.3s ease\"}})]}),/*#__PURE__*/_jsxs(\"div\",{style:{padding:isMobile?\"12px\":\"18px\",textAlign:\"left\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:isMobile?\"8px\":\"10px\"},children:/*#__PURE__*/_jsx(\"h3\",{style:{fontSize:isMobile?\"13px\":\"18px\",fontWeight:\"700\",color:isChecked?colors.primary:\"#1e293b\",margin:\"0\",transition:\"color 0.3s ease\",letterSpacing:\"-0.02em\",lineHeight:\"1.3\"},children:option.label})}),/*#__PURE__*/_jsxs(\"div\",{style:{marginTop:isMobile?\"8px\":\"10px\",display:\"flex\",alignItems:\"center\",gap:\"4px\",color:isChecked?colors.primary:\"#94a3b8\",fontSize:isMobile?\"11px\":\"12px\",fontWeight:\"600\",transition:\"all 0.3s ease\"},children:[/*#__PURE__*/_jsx(\"span\",{children:isChecked?\"Ausgew\\xe4hlt\":\"Ausw\\xe4hlen\"}),/*#__PURE__*/_jsx(\"span\",{style:{fontSize:isMobile?\"12px\":\"13px\",transform:isChecked?\"translateX(4px)\":\"translateX(0)\",transition:\"transform 0.3s ease\"},children:\"→\"})]})]})]},option.value);})}),/*#__PURE__*/_jsx(\"div\",{style:{textAlign:\"center\",marginTop:isMobile?\"24px\":\"48px\"},children:/*#__PURE__*/_jsxs(\"p\",{style:{color:\"#94a3b8\",fontSize:isMobile?\"12px\":\"14px\",margin:\"0\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",gap:\"6px\"},children:[/*#__PURE__*/_jsx(\"span\",{}),/*#__PURE__*/_jsx(\"span\",{})]})})]});}return /*#__PURE__*/_jsxs(\"div\",{style:{maxWidth:\"500px\",margin:\"0 auto\"},children:[/*#__PURE__*/_jsx(QuestionHeader,{question:question.question,subtitle:question.subtitle}),/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:\"12px\"},children:question.options.map(option=>{const optionImage=hasImages?questionImages[currentQuestionId][option.value]:null;const currentAnswers=Array.isArray(answer)?answer:[];const isChecked=currentAnswers.includes(option.value);return /*#__PURE__*/_jsxs(\"button\",{onClick:()=>{const currentAnswers=Array.isArray(answer)?answer:[];if(isChecked){handleAnswer(currentQuestionId,currentAnswers.filter(a=>a!==option.value));}else{handleAnswer(currentQuestionId,[...currentAnswers,option.value]);}},style:{display:\"flex\",alignItems:hasImages?\"stretch\":\"center\",width:\"100%\",padding:\"0\",borderRadius:\"8px\",border:isChecked?`2px solid ${colors.primary}`:`1px solid #e5e7eb`,backgroundColor:isChecked?colors.primaryLight:\"white\",cursor:\"pointer\",transition:\"all 0.2s ease\",boxShadow:isChecked?\"0 4px 8px rgba(94, 104, 234, 0.1)\":\"0 1px 2px rgba(0, 0, 0, 0.05)\",overflow:\"hidden\",minHeight:optionImage?isMobile?\"80px\":\"100px\":\"auto\",textAlign:\"left\"},onMouseEnter:e=>{if(!isChecked){e.currentTarget.style.backgroundColor=\"#f9fafb\";e.currentTarget.style.borderColor=\"#9ca3af\";}},onMouseLeave:e=>{if(!isChecked){e.currentTarget.style.backgroundColor=\"white\";e.currentTarget.style.borderColor=\"#e5e7eb\";}},children:[optionImage&&/*#__PURE__*/_jsx(\"div\",{style:{width:isMobile?\"100px\":\"120px\",height:isMobile?\"80px\":\"100px\",minWidth:isMobile?\"100px\":\"120px\",flexShrink:0,overflow:\"hidden\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",backgroundColor:\"#f8f9fa\"},children:/*#__PURE__*/_jsx(\"img\",{src:optionImage,alt:option.label,style:{width:\"100%\",height:\"100%\",objectFit:\"cover\",display:\"block\"}})}),/*#__PURE__*/_jsxs(\"div\",{style:{flex:1,padding:isMobile?\"16px\":\"18px\",display:\"flex\",alignItems:\"center\",gap:\"12px\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{fontSize:isMobile?\"15px\":\"16px\",fontWeight:\"500\",color:isChecked?colors.primary:\"#111827\",flex:1},children:option.label}),isChecked&&/*#__PURE__*/_jsx(\"div\",{style:{width:\"24px\",height:\"24px\",backgroundColor:colors.primary,borderRadius:\"50%\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",flexShrink:0},children:/*#__PURE__*/_jsx(\"div\",{style:{color:\"white\",fontSize:\"14px\",fontWeight:\"bold\"},children:\"✓\"})})]})]},option.value);})})]});case\"slider\":const defaultValue=question.default||question.min;const currentValue=answer!==undefined?answer:defaultValue;if(answer===undefined){handleAnswer(currentQuestionId,defaultValue);}return /*#__PURE__*/_jsxs(\"div\",{style:{maxWidth:\"500px\",margin:\"0 auto\"},children:[/*#__PURE__*/_jsx(QuestionHeader,{question:question.question,subtitle:question.subtitle}),/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"div\",{style:{textAlign:\"center\",marginBottom:\"32px\",padding:isMobile?\"24px\":\"32px\",backgroundColor:\"#f8faff\",borderRadius:\"12px\",border:\"1px solid #e0e7ff\"},children:/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",justifyContent:\"center\",gap:\"12px\",flexWrap:\"wrap\"},children:[/*#__PURE__*/_jsx(\"input\",{type:\"number\",min:question.min,max:question.max,step:question.step,value:currentValue,onChange:e=>{const inputValue=e.target.value;if(inputValue===\"\")return;const numValue=parseInt(inputValue);if(!isNaN(numValue)){const clampedValue=Math.max(question.min,Math.min(question.max,numValue));handleAnswer(currentQuestionId,clampedValue);}},onBlur:e=>{if(e.target.value===\"\"||isNaN(parseInt(e.target.value))){handleAnswer(currentQuestionId,question.min);}e.target.style.borderColor=\"#5E68EA\";e.target.style.boxShadow=\"none\";},onKeyDown:e=>{if(e.key===\"Backspace\"||e.key===\"Delete\")return true;if(e.key===\"Enter\")e.target.blur();},style:{fontSize:isMobile?\"22px\":\"36px\",fontWeight:\"700\",color:colors.primary,backgroundColor:\"transparent\",border:`2px solid ${colors.primary}`,borderRadius:\"8px\",padding:isMobile?\"8px 12px\":\"12px 16px\",textAlign:\"center\",width:isMobile?\"120px\":\"140px\",outline:\"none\",transition:\"all 0.2s ease\"},onFocus:e=>{e.target.style.boxShadow=`0 0 0 3px ${colors.primary}20`;setTimeout(()=>e.target.select(),0);}}),/*#__PURE__*/_jsx(\"span\",{style:{fontSize:isMobile?\"22px\":\"32px\",fontWeight:\"600\",color:colors.primary,lineHeight:\"1\"},children:question.unit})]})}),/*#__PURE__*/_jsxs(\"div\",{style:{padding:\"0 16px\"},children:[/*#__PURE__*/_jsx(\"input\",{type:\"range\",min:question.min,max:question.max,step:question.step,value:currentValue,onChange:e=>handleAnswer(currentQuestionId,parseInt(e.target.value)),style:{width:\"100%\",height:\"6px\",borderRadius:\"3px\",background:`linear-gradient(to right, ${colors.primary} 0%, ${colors.primary} ${(currentValue-question.min)/(question.max-question.min)*100}%, #e5e7eb ${(currentValue-question.min)/(question.max-question.min)*100}%, #e5e7eb 100%)`,outline:\"none\",cursor:\"pointer\",WebkitAppearance:\"none\",appearance:\"none\"}}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",justifyContent:\"space-between\",marginTop:\"16px\",fontSize:\"14px\",color:\"#6b7280\",fontWeight:\"500\"},children:[/*#__PURE__*/_jsxs(\"span\",{children:[question.min,\" \",question.unit]}),/*#__PURE__*/_jsx(\"span\",{children:question.unit===\"%\"?`${question.max} ${question.unit}`:`${question.max}+ ${question.unit}`})]})]})]})]});case\"input\":return /*#__PURE__*/_jsxs(\"div\",{style:{maxWidth:\"500px\",margin:\"0 auto\",width:\"100%\"},children:[/*#__PURE__*/_jsx(QuestionHeader,{question:question.question,subtitle:question.subtitle}),/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\"},children:[question.inputType===\"email\"?/*#__PURE__*/_jsx(\"input\",{type:\"email\",name:\"email\",id:\"user-email-input\",autoComplete:\"email\",value:typeof answer===\"string\"?answer:\"\",onChange:e=>handleAnswer(currentQuestionId,e.target.value),onKeyDown:e=>{if(e.key===\"Enter\"){e.preventDefault();const currentValue=typeof e.target.value===\"string\"?e.target.value:\"\";const isValid=/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(currentValue.trim());if(isValid){if(currentStep===questionFlow.length-1){if(!isSubmitting)handleSubmit();}else{nextStep();}}}},placeholder:\"ihre.email@beispiel.de\",style:{width:\"100%\",padding:isMobile?\"22px\":\"18px\",fontSize:isMobile?\"17px\":\"16px\",border:answer&&typeof answer===\"string\"&&!/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(answer.trim())?\"2px solid #ef4444\":\"1px solid #e5e7eb\",borderRadius:\"8px\",outline:\"none\",transition:\"border-color 0.2s ease\",boxSizing:\"border-box\",backgroundColor:\"white\",fontWeight:\"400\",boxShadow:\"0 1px 2px rgba(0, 0, 0, 0.05)\"}}):question.inputType===\"tel\"?/*#__PURE__*/_jsx(\"input\",{\"data-block-google-maps\":\"true\",type:\"tel\",name:\"tel\",id:\"user-phone-input\",autoComplete:\"tel\",inputMode:\"tel\",value:typeof answer===\"string\"?answer:\"\",onChange:e=>handlePhoneInput(e.target.value,currentQuestionId),onKeyPress:e=>{// ✅ UPDATED: Only allow + and numbers (0-9)\n// Block: spaces, dashes, letters, parentheses, everything else\nconst allowedChars=/[\\d\\+]/;if(!allowedChars.test(e.key)){e.preventDefault();}},onKeyDown:e=>{if(e.key===\"Enter\"){e.preventDefault();const currentValue=typeof e.target.value===\"string\"?e.target.value:\"\";const isValid=validatePhoneNumber(currentValue.trim());if(isValid&&currentValue.trim()){if(currentStep===questionFlow.length-1){if(!isSubmitting)handleSubmit();}else{nextStep();}}}},onFocus:e=>{e.target.style.borderColor=\"#5E68EA\";e.target.style.boxShadow=\"0 0 0 3px rgba(94, 104, 234, 0.1)\";},onBlur:e=>{// Reset border styling\ne.target.style.borderColor=\"#e5e7eb\";e.target.style.boxShadow=\"0 1px 2px rgba(0, 0, 0, 0.05)\";// Reset validation status when user stops typing\nif(phoneValidationStatus!==null){setPhoneValidationStatus(null);}},placeholder:\"Telefonnummer eingeben\",style:{width:\"100%\",padding:isMobile?\"22px\":\"18px\",fontSize:isMobile?\"17px\":\"16px\",border:phoneValidationStatus===\"invalid\"?\"2px solid #ef4444\":phoneValidationStatus===\"valid\"?\"2px solid #10b981\":\"1px solid #e5e7eb\",borderRadius:\"8px\",outline:\"none\",transition:\"border-color 0.2s ease\",boxSizing:\"border-box\",backgroundColor:\"white\",fontWeight:\"400\",boxShadow:\"0 1px 2px rgba(0, 0, 0, 0.05)\",WebkitAppearance:\"none\",MozAppearance:\"textfield\"}}):/*#__PURE__*/_jsx(\"input\",{\"data-block-google-maps\":\"true\",type:\"text\",name:currentQuestionId===\"firmenname\"?\"organization\":\"text\",id:`user-text-${currentQuestionId}`,autoComplete:currentQuestionId===\"firmenname\"?\"organization\":\"off\",value:typeof answer===\"string\"?answer:\"\",onChange:e=>handleAnswer(currentQuestionId,e.target.value),onKeyDown:e=>{if(e.key===\"Enter\"){e.preventDefault();const currentValue=typeof e.target.value===\"string\"?e.target.value:\"\";if(currentValue.trim()){if(currentStep===questionFlow.length-1){if(!isSubmitting)handleSubmit();}else{nextStep();}}}},onFocus:e=>{e.target.style.borderColor=\"#5E68EA\";e.target.style.boxShadow=\"0 0 0 3px rgba(94, 104, 234, 0.1)\";},onBlur:e=>{e.target.style.borderColor=\"#e5e7eb\";e.target.style.boxShadow=\"0 1px 2px rgba(0, 0, 0, 0.05)\";},placeholder:question.placeholder,style:{width:\"100%\",padding:isMobile?\"22px\":\"18px\",fontSize:isMobile?\"17px\":\"16px\",border:\"1px solid #e5e7eb\",borderRadius:\"8px\",outline:\"none\",transition:\"border-color 0.2s ease\",boxSizing:\"border-box\",backgroundColor:\"white\",fontWeight:\"400\",boxShadow:\"0 1px 2px rgba(0, 0, 0, 0.05)\"}}),question.inputType===\"tel\"&&answer&&typeof answer===\"string\"&&/*#__PURE__*/_jsxs(\"div\",{style:{marginTop:\"8px\"},children:[phoneValidationStatus===\"checking\"&&/*#__PURE__*/_jsxs(\"p\",{style:{color:\"#6b7280\",fontSize:\"14px\",margin:\"0 0 4px 0\",fontWeight:\"400\",display:\"flex\",alignItems:\"center\",gap:\"6px\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{animation:\"spin 1s linear infinite\"},children:\"⏳\"}),/*#__PURE__*/_jsx(\"span\",{children:\"Nummer wird \\xfcberpr\\xfcft...\"})]}),phoneValidationStatus===\"valid\"&&sinchValidationResult&&/*#__PURE__*/_jsxs(\"p\",{style:{color:colors.success,fontSize:\"14px\",margin:\"0 0 4px 0\",fontWeight:\"500\",display:\"flex\",alignItems:\"center\",gap:\"6px\"},children:[/*#__PURE__*/_jsx(\"span\",{children:\"✓\"}),/*#__PURE__*/_jsxs(\"span\",{children:[\"G\\xfcltige\",\" \",sinchValidationResult.numberType===\"mobile\"?\"Mobilnummer\":\"Festnetznummer\",sinchValidationResult.carrier&&` (${sinchValidationResult.carrier})`]})]}),phoneValidationStatus===\"invalid\"&&/*#__PURE__*/_jsx(\"p\",{style:{color:\"#ef4444\",fontSize:\"14px\",margin:\"0 0 4px 0\",fontWeight:\"400\"},children:\"Diese Nummer konnte nicht verifiziert werden\"}),!validatePhoneNumber(answer.trim())&&!phoneValidationStatus&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"p\",{style:{color:\"#ef4444\",fontSize:\"14px\",margin:\"0 0 4px 0\",fontWeight:\"400\"},children:\"Bitte geben Sie eine g\\xfcltige deutsche Telefonnummer ein\"}),/*#__PURE__*/_jsx(\"p\",{style:{color:\"#6b7280\",fontSize:\"12px\",margin:\"0\",fontStyle:\"italic\"},children:\"Mobil: 0176 47219338 | Festnetz: 030 47219338\"})]})]}),question.inputType===\"email\"&&answer&&typeof answer===\"string\"&&!/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(answer.trim())&&/*#__PURE__*/_jsx(\"div\",{style:{marginTop:\"8px\"},children:/*#__PURE__*/_jsx(\"p\",{style:{color:\"#ef4444\",fontSize:\"14px\",margin:\"0 0 4px 0\",fontWeight:\"400\"},children:\"Bitte geben Sie eine g\\xfcltige E-Mail-Adresse ein\"})})]})]});case\"address\":return /*#__PURE__*/_jsxs(\"div\",{style:{maxWidth:\"600px\",margin:\"0 auto\"},children:[/*#__PURE__*/_jsx(QuestionHeader,{question:question.question,subtitle:question.subtitle}),/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\"},children:[/*#__PURE__*/_jsx(\"input\",{ref:addressInputRef,type:\"text\",name:\"address\",id:\"address-input\",autoComplete:\"off\",value:answer||\"\",onChange:e=>{const inputValue=e.target.value;handleAnswer(currentQuestionId,inputValue);// Reset validation status when user types\nsetAddressValidationStatus(null);if(!autocompleteRef.current||inputValue!==answer){setIsAddressFromGoogle(false);}if(mapRef.current&&mapRef.current.style.display===\"block\"){mapRef.current.style.display=\"none\";mapRef.current.style.height=\"0px\";}if(allowManualAddress&&inputValue.trim()){updateAddressComponents(inputValue,\"manual_entry\");}},onKeyDown:e=>{if(e.key===\"Enter\"){e.preventDefault();// Only allow progression if address is valid (within radius)\nif(addressValidationStatus===\"valid\"&&e.target.value?.trim()){const isLastStep=currentStep===questionFlow.length-1;if(isLastStep){if(!isSubmitting)handleSubmit();}else{nextStep();}}}},onBlur:async e=>{let isValid=false;if(answer){if(allowManualAddress){const hasNumber=/\\d+/.test(answer.trim());const hasLetters=/[a-zA-Z]+/.test(answer.trim());const minLength=answer.trim().length>=5;isValid=isAddressFromGoogle||hasNumber&&hasLetters&&minLength;if(isValid&&!isAddressFromGoogle&&isGoogleMapsLoaded){setAddressValidationStatus(\"checking\");const geocoded=await geocodeManualAddress(answer);if(geocoded){const distance=calculateDistance(serviceCenterCoordinates.lat,serviceCenterCoordinates.lng,geocoded.lat,geocoded.lng);setDistanceFromCenter(distance);if(distance>serviceRadiusKm){setAddressValidationStatus(\"invalid\");setShowServiceAreaWarning(true);}else{setAddressValidationStatus(\"valid\");setShowServiceAreaWarning(false);}setAddressComponents(prev=>({...prev,latitude:geocoded.lat,longitude:geocoded.lng,place_id:geocoded.place_id}));}}}else{isValid=isAddressFromGoogle;}}e.target.style.border=answer&&!isValid?`2px solid ${colors.primary}`:\"1px solid #e5e7eb\";e.target.style.boxShadow=\"0 1px 2px rgba(0, 0, 0, 0.05)\";},placeholder:question.placeholder,style:{width:\"100%\",padding:isMobile?\"20px\":\"18px\",paddingRight:addressValidationStatus?isMobile?\"50px\":\"55px\":isMobile?\"20px\":\"18px\",fontSize:isMobile?\"17px\":\"16px\",lineHeight:\"1.5\",border:addressValidationStatus===\"invalid\"?`2px solid ${colors.error}`:addressValidationStatus===\"valid\"?`2px solid ${colors.success}`:\"1px solid #e5e7eb\",borderRadius:\"12px\",outline:\"none\",transition:\"all 0.3s ease\",boxSizing:\"border-box\",backgroundColor:\"white\",fontWeight:\"400\",boxShadow:\"0 1px 2px rgba(0, 0, 0, 0.05)\",height:isMobile?\"60px\":\"56px\"},onFocus:e=>{if(addressValidationStatus!==\"invalid\"){e.target.style.border=`2px solid ${colors.primary}`;e.target.style.boxShadow=\"0 0 0 3px rgba(94, 104, 234, 0.1)\";}}}),addressValidationStatus&&/*#__PURE__*/_jsxs(\"div\",{style:{position:\"absolute\",right:isMobile?\"16px\":\"18px\",top:isMobile?\"14px\":\"12px\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",width:\"32px\",height:\"32px\",borderRadius:\"50%\",backgroundColor:addressValidationStatus===\"checking\"?\"#e5e7eb\":addressValidationStatus===\"valid\"?colors.success:colors.error,pointerEvents:\"none\",animation:addressValidationStatus===\"checking\"?\"none\":\"successBounce 0.4s ease-out\"},children:[addressValidationStatus===\"checking\"&&/*#__PURE__*/_jsx(\"div\",{style:{width:\"16px\",height:\"16px\",border:\"2px solid white\",borderTopColor:\"transparent\",borderRadius:\"50%\",animation:\"spin 1s linear infinite\"}}),addressValidationStatus===\"valid\"&&/*#__PURE__*/_jsx(\"svg\",{width:\"18\",height:\"18\",viewBox:\"0 0 24 24\",fill:\"none\",style:{display:\"block\"},children:/*#__PURE__*/_jsx(\"path\",{d:\"M20 6L9 17L4 12\",stroke:\"white\",strokeWidth:\"3\",strokeLinecap:\"round\",strokeLinejoin:\"round\"})}),addressValidationStatus===\"invalid\"&&/*#__PURE__*/_jsx(\"svg\",{width:\"18\",height:\"18\",viewBox:\"0 0 24 24\",fill:\"none\",style:{display:\"block\"},children:/*#__PURE__*/_jsx(\"path\",{d:\"M18 6L6 18M6 6L18 18\",stroke:\"white\",strokeWidth:\"3\",strokeLinecap:\"round\"})})]}),!isGoogleMapsLoaded&&!addressValidationStatus&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",right:\"16px\",top:\"50%\",transform:\"translateY(-50%)\",color:\"#6b7280\",fontSize:\"14px\",fontWeight:\"400\"},children:\"Laden...\"}),isGoogleMapsLoaded&&!serviceCenterCoordinates.lat&&!addressValidationStatus&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",right:\"16px\",top:\"50%\",transform:\"translateY(-50%)\",color:\"#f59e0b\",fontSize:\"12px\",fontWeight:\"500\"},children:\"⏳ Standort wird geladen...\"}),answer&&allowManualAddress&&!isAddressFromGoogle&&!addressValidationStatus&&!/\\d+.*[,\\s].*\\d{5}/.test(answer.trim())&&/*#__PURE__*/_jsx(\"p\",{style:{color:colors.primary,fontSize:\"14px\",margin:\"8px 0 0 0\",fontWeight:\"400\"},children:\"Bitte geben Sie eine vollst\\xe4ndige Adresse ein (Stra\\xdfe, Hausnummer, PLZ, Ort)\"}),addressValidationStatus===\"valid\"&&/*#__PURE__*/_jsxs(\"p\",{style:{color:colors.success,fontSize:\"14px\",margin:\"8px 0 0 0\",fontWeight:\"500\",display:\"flex\",alignItems:\"center\",gap:\"6px\"},children:[/*#__PURE__*/_jsx(\"span\",{children:\"✓\"}),/*#__PURE__*/_jsx(\"span\",{children:\"Adresse liegt in unserem Servicebereich\"})]}),addressValidationStatus===\"invalid\"&&/*#__PURE__*/_jsxs(\"p\",{style:{color:colors.error,fontSize:\"14px\",margin:\"8px 0 0 0\",fontWeight:\"500\",display:\"flex\",alignItems:\"center\",gap:\"6px\"},children:[/*#__PURE__*/_jsx(\"span\",{children:\"✕\"}),/*#__PURE__*/_jsxs(\"span\",{children:[\"Adresse liegt au\\xdferhalb unseres Servicebereichs (\",distanceFromCenter?Math.round(distanceFromCenter):\"?\",\" \",\"km entfernt)\"]})]}),/*#__PURE__*/_jsx(\"p\",{style:{fontSize:\"13px\",color:\"#6b7280\",margin:\"12px 0 0 0\",fontStyle:\"italic\",fontWeight:\"400\"},children:allowManualAddress?\"Tippen Sie f\\xfcr Vorschl\\xe4ge oder geben Sie die Adresse manuell ein\":isGoogleMapsLoaded?\"\":\"Google Maps wird geladen...\"})]}),showServiceAreaWarning&&distanceFromCenter>serviceRadiusKm&&/*#__PURE__*/_jsxs(\"div\",{style:{marginTop:\"16px\",padding:\"16px\",backgroundColor:\"#fef3c7\",border:\"1px solid #fbbf24\",borderRadius:\"8px\",animation:\"slideInUp 0.3s ease-out\"},children:[/*#__PURE__*/_jsxs(\"p\",{style:{color:\"#92400e\",fontSize:\"14px\",margin:\"0 0 12px 0\",fontWeight:\"500\"},children:[\"⚠️ Diese Adresse liegt\",\" \",Math.round(distanceFromCenter),\" km von unserem Servicebereich entfernt (max.\",\" \",serviceRadiusKm,\" km).\"]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",gap:\"12px\",flexWrap:\"wrap\"},children:[/*#__PURE__*/_jsx(\"button\",{onClick:()=>setIsOutOfServiceArea(true),style:{padding:\"8px 16px\",backgroundColor:colors.warning,color:\"white\",border:\"none\",borderRadius:\"6px\",fontSize:\"14px\",fontWeight:\"600\",cursor:\"pointer\"},children:\"Trotzdem fortfahren\"}),/*#__PURE__*/_jsx(\"button\",{onClick:()=>{handleAnswer(\"address\",\"\");setIsAddressFromGoogle(false);setShowServiceAreaWarning(false);setAddressValidationStatus(null);},style:{padding:\"8px 16px\",backgroundColor:\"white\",color:colors.warning,border:`1px solid ${colors.warning}`,borderRadius:\"6px\",fontSize:\"14px\",fontWeight:\"600\",cursor:\"pointer\"},children:\"Andere Adresse\"})]})]}),/*#__PURE__*/_jsx(\"div\",{ref:mapRef,style:{width:\"100%\",height:\"0px\",borderRadius:\"20px\",overflow:\"hidden\",marginTop:\"24px\",boxShadow:\"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)\",display:\"none\",opacity:\"0\",transform:\"translateY(20px)\",border:`3px solid ${colors.primary}`,position:\"relative\"},children:/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",top:\"0\",left:\"0\",right:\"0\",bottom:\"0\",backgroundColor:`${colors.primary}15`,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",zIndex:1,borderRadius:\"17px\",backdropFilter:\"blur(10px)\",pointerEvents:\"none\"},children:/*#__PURE__*/_jsxs(\"div\",{style:{backgroundColor:\"white\",padding:\"12px 24px\",borderRadius:\"12px\",boxShadow:\"0 8px 16px rgba(0, 0, 0, 0.1)\",display:\"flex\",alignItems:\"center\",gap:\"12px\",fontSize:\"14px\",fontWeight:\"500\",color:colors.primary,animation:\"pulse 2s infinite\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{width:\"16px\",height:\"16px\",backgroundColor:colors.primary,borderRadius:\"50%\",animation:\"spin 1s linear infinite\"}}),\"Karte wird geladen...\"]})})})]});case\"dual-input\":return /*#__PURE__*/_jsxs(\"div\",{style:{maxWidth:\"600px\",margin:\"0 auto\"},children:[/*#__PURE__*/_jsx(QuestionHeader,{question:question.question,subtitle:question.subtitle}),/*#__PURE__*/_jsx(\"div\",{style:{display:\"grid\",gridTemplateColumns:isMobile?\"1fr\":\"1fr 1fr\",gap:\"16px\",maxWidth:\"600px\",margin:\"0 auto\"},children:question.fields.map((field,index)=>/*#__PURE__*/_jsx(\"div\",{style:{position:\"relative\"},children:/*#__PURE__*/_jsx(\"input\",{\"data-block-google-maps\":\"true\",type:\"text\",name:field.id===\"vorname\"?\"given-name\":\"family-name\",autoComplete:field.id===\"vorname\"?\"given-name\":\"family-name\",value:answer?.[field.id]||\"\",onChange:e=>{const newAnswer={...answer,[field.id]:e.target.value};handleAnswer(currentQuestionId,newAnswer);},onKeyDown:e=>{if(e.key===\"Enter\"){e.preventDefault();const currentAnswer={...answer,[field.id]:e.target.value};const isValid=currentAnswer.vorname?.trim()&&currentAnswer.nachname?.trim();if(isValid){const isLastStep=currentStep===questionFlow.length-1;if(isLastStep){if(!isSubmitting)handleSubmit();}else{nextStep();}}else{if(e.target.value.trim()&&index===0){const nextInput=e.target.parentElement.nextElementSibling?.querySelector(\"input\");if(nextInput)nextInput.focus();}}}},placeholder:field.placeholder,style:{width:\"100%\",padding:isMobile?\"20px\":\"22px\",fontSize:isMobile?\"17px\":\"18px\",border:\"1px solid #e5e7eb\",borderRadius:\"12px\",outline:\"none\",transition:\"border-color 0.2s ease\",boxSizing:\"border-box\",backgroundColor:\"white\",fontWeight:\"400\",boxShadow:\"0 1px 2px rgba(0, 0, 0, 0.05)\"},onFocus:e=>{e.target.style.borderColor=\"#5E68EA\";e.target.style.boxShadow=\"0 0 0 3px rgba(94, 104, 234, 0.1)\";},onBlur:e=>{e.target.style.borderColor=\"#e5e7eb\";e.target.style.boxShadow=\"0 1px 2px rgba(0, 0, 0, 0.05)\";}})},field.id))})]});default:console.error(`Unknown question type: ${question.type}`);return /*#__PURE__*/_jsxs(\"div\",{style:{padding:\"20px\",textAlign:\"center\",color:\"#ef4444\"},children:[/*#__PURE__*/_jsx(\"h3\",{children:\"Error: Unknown question type\"}),/*#__PURE__*/_jsxs(\"p\",{children:['Question type \"',question.type,'\" is not handled']})]});}};const isLastStep=currentStep===questionFlow.length-1;const buttonStyle=(isPrimary,isDisabled)=>({padding:isMobile?\"12px 20px\":\"14px 28px\",borderRadius:\"8px\",fontWeight:\"600\",fontSize:isMobile?\"15px\":\"16px\",border:isPrimary?\"none\":`1px solid ${colors.gray[200]}`,cursor:isDisabled?\"not-allowed\":\"pointer\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",backgroundColor:isDisabled?colors.gray[100]:isPrimary?colors.primary:\"white\",color:isDisabled?colors.gray[400]:isPrimary?\"white\":\"#374151\",minWidth:isMobile?\"110px\":\"130px\",boxShadow:\"none\",transform:\"translateY(0)\",letterSpacing:\"-0.01em\"});return /*#__PURE__*/_jsxs(\"div\",{style:containerStyle,children:[/*#__PURE__*/_jsx(\"div\",{style:{position:\"fixed\",top:\"0\",left:\"0\",right:\"0\",zIndex:50,height:\"3px\",backgroundColor:colors.gray[100]},children:/*#__PURE__*/_jsx(\"div\",{style:{height:\"100%\",background:colors.primary,transition:\"width 0.8s cubic-bezier(0.4, 0, 0.2, 1)\",width:`${progress}%`}})}),/*#__PURE__*/_jsx(DebugUTMPanel,{utmParams:utmParams,referrerInfo:referrerInfo,currentStep:currentStep}),/*#__PURE__*/_jsx(\"div\",{style:contentContainerStyle,children:/*#__PURE__*/_jsx(\"div\",{style:mainContainerStyle,children:/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",minHeight:\"calc(100vh - 100px)\",paddingTop:\"0\"},children:[/*#__PURE__*/_jsx(\"div\",{\"data-question-card\":true,style:{...cardStyle,marginTop:\"0\",marginBottom:\"0\",paddingTop:\"0\",paddingBottom:isMobile?\"100px\":\"110px\",transition:\"all 0.3s cubic-bezier(0.4, 0, 0.2, 1)\",opacity:fadeClass===\"fade-in\"?1:0,transform:fadeClass===\"fade-in\"?\"translateY(0)\":\"translateY(20px)\",pointerEvents:isTransitioning?\"none\":\"auto\",flex:\"1\"},children:renderQuestion()}),!questionsWithHiddenNavigation.includes(questionFlow[currentStep])&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"fixed\",bottom:0,left:0,right:0,backgroundColor:\"rgba(255, 255, 255, 0.98)\",backdropFilter:\"blur(12px)\",WebkitBackdropFilter:\"blur(12px)\",padding:isMobile?\"12px 16px\":\"14px 24px\",borderTop:\"1px solid rgba(0, 0, 0, 0.08)\",boxShadow:\"0 -2px 8px rgba(0, 0, 0, 0.06)\",zIndex:100},children:/*#__PURE__*/_jsxs(\"div\",{style:{maxWidth:\"900px\",margin:\"0 auto\",display:\"flex\",justifyContent:\"space-between\",alignItems:\"center\",gap:\"16px\",opacity:isTransitioning?.5:1,pointerEvents:isTransitioning?\"none\":\"auto\",transition:\"opacity 0.3s ease\"},children:[/*#__PURE__*/_jsx(\"button\",{onClick:()=>{if(isScrolledPastContent){// Scroll to top smoothly\nwindow.scrollTo({top:0,behavior:\"smooth\"});}else{// Normal back behavior\nif(!isTransitioning)prevStep();}},disabled:(()=>{// If scrolled past content, never disable (always allow scroll to top)\nif(isScrolledPastContent)return false;const currentQuestionId=questionFlow[currentStep];const isServiceQuestion=currentQuestionId===\"flachdachService\"||currentQuestionId===\"steildachService\";if(isServiceQuestion&&currentStep>0){return isTransitioning;}return currentStep<=minStep||isTransitioning;})(),style:buttonStyle(false,(()=>{// If scrolled past content, never show as disabled\nif(isScrolledPastContent)return false;const currentQuestionId=questionFlow[currentStep];const isServiceQuestion=currentQuestionId===\"flachdachService\"||currentQuestionId===\"steildachService\";if(isServiceQuestion&&currentStep>0){return isTransitioning;}return currentStep<=minStep||isTransitioning;})()),children:isScrolledPastContent?\"↑ Zur\\xfcck nach oben\":\"← Zur\\xfcck\"}),isLastStep?/*#__PURE__*/_jsx(\"button\",{onClick:()=>!isTransitioning&&!isSubmitting&&handleSubmit(),disabled:!isStepValid()||isSubmitting||isTransitioning,style:buttonStyle(true,!isStepValid()||isSubmitting||isTransitioning),children:isSubmitting?/*#__PURE__*/_jsxs(\"span\",{style:{display:\"flex\",alignItems:\"center\",gap:\"8px\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{animation:\"spin 1s linear infinite\"},children:\"⏳\"}),isMobile?\"Senden...\":\"Wird gesendet...\"]}):/*#__PURE__*/_jsx(\"span\",{style:{display:\"flex\",alignItems:\"center\",gap:\"8px\"},children:isMobile?\"Angebot erhalten\":\"Kostenloses Angebot erhalten\"})}):/*#__PURE__*/_jsx(\"button\",{onClick:()=>!isTransitioning&&nextStep(),disabled:!isStepValid()||isTransitioning||phoneValidationStatus===\"checking\"||questionFlow[currentStep]===\"address\"&&addressValidationStatus!==\"valid\",style:{...buttonStyle(true,!isStepValid()||isTransitioning||phoneValidationStatus===\"checking\"||questionFlow[currentStep]===\"address\"&&addressValidationStatus!==\"valid\"),...questionFlow[currentStep]===\"phone\"&&isStepValid()&&phoneValidationStatus!==\"checking\"&&{background:colors.primary,cursor:\"pointer\"}},children:questionFlow[currentStep]===\"phone\"&&phoneValidationStatus===\"checking\"?/*#__PURE__*/_jsxs(\"span\",{style:{display:\"flex\",alignItems:\"center\",gap:\"8px\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{display:\"inline-block\",width:\"16px\",height:\"16px\",border:\"2px solid white\",borderTopColor:\"transparent\",borderRadius:\"50%\",animation:\"spin 0.6s linear infinite\"}}),\"\\xdcberpr\\xfcfe Nummer...\"]}):\"Weiter →\"})]})})]})})}),/*#__PURE__*/_jsx(\"style\",{children:`\n               /* Google Maps styling for address field only */\n.pac-container {\n    background-color: white;\n    border: 1px solid #d1d5db;\n    border-radius: 8px;\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\n    margin-top: 4px;\n    z-index: 10000;\n}\n\n.pac-item {\n    border-bottom: 1px solid #f3f4f6;\n    padding: 12px 16px;\n    font-size: 15px;\n    cursor: pointer;\n}\n\n.pac-item:hover {\n    background-color: #f9fafb;\n}\n\n.pac-item-selected {\n    background-color: #f0f4ff;\n}\n                    @keyframes spin {\n                        from { transform: rotate(0deg); }\n                        to { transform: rotate(360deg); }\n                    }\n                    @keyframes loadingDot {\n    0%, 80%, 100% {\n        transform: scale(1);\n        opacity: 1;\n    }\n    40% {\n        transform: scale(1.3);\n        opacity: 0.7;\n    }\n}\n\n                    @keyframes slideInUp {\n                        from { \n                            opacity: 0; \n                            transform: translateY(30px);\n                        }\n                        to { \n                            opacity: 1; \n                            transform: translateY(0);\n                        }\n                    }\n\n                    @keyframes fadeInScale {\n                        from { \n                            opacity: 0; \n                            transform: scale(0.95) translateY(10px);\n                        }\n                        to { \n                            opacity: 1; \n                            transform: scale(1) translateY(0);\n                        }\n                    }\n\n                    @keyframes fadeIn {\n    from { \n        opacity: 0;\n        transform: translateY(20px);\n    }\n    to { \n        opacity: 1;\n        transform: translateY(0);\n    }\n}\n\n@keyframes fadeOut {\n    from { \n        opacity: 1;\n        transform: translateY(0);\n    }\n    to { \n        opacity: 0;\n        transform: translateY(-20px);\n    }\n}\n\n@keyframes slideInFromRight {\n    from { \n        opacity: 0;\n        transform: translateX(30px);\n    }\n    to { \n        opacity: 1;\n        transform: translateX(0);\n    }\n}\n\n@keyframes slideOutToLeft {\n    from { \n        opacity: 1;\n        transform: translateX(0);\n    }\n    to { \n        opacity: 0;\n        transform: translateX(-30px);\n    }\n}\n\n/* Smooth all transitions */\n* {\n    scroll-behavior: smooth;\n}\n\n                    @keyframes pulse {\n                        0%, 100% { \n                            opacity: 1;\n                            transform: scale(1);\n                        }\n                        50% { \n                            opacity: 0.9;\n                            transform: scale(1.05);\n                        }\n                    }\n\n                    @keyframes loadingDot {\n    0%, 80%, 100% {\n        transform: scale(1);\n        opacity: 1;\n    }\n    40% {\n        transform: scale(1.5);\n        opacity: 0.6;\n    }\n}\n\n@keyframes slideUp {\n    from {\n        opacity: 0;\n        transform: translateY(30px);\n    }\n    to {\n        opacity: 1;\n        transform: translateY(0);\n    }\n}\n\n@keyframes scaleIn {\n    from {\n        opacity: 0;\n        transform: scale(0.5);\n    }\n    to {\n        opacity: 1;\n        transform: scale(1);\n    }\n}\n\n@keyframes fadeInText {\n    from {\n        opacity: 0;\n        transform: translateY(10px);\n    }\n    to {\n        opacity: 1;\n        transform: translateY(0);\n    }\n}\n\n@keyframes bounce {\n    0%, 100% {\n        transform: translate(-50%, -50%) scale(1);\n    }\n    25% {\n        transform: translate(-50%, -55%) scale(0.95);\n    }\n    50% {\n        transform: translate(-50%, -45%) scale(1.05);\n    }\n    75% {\n        transform: translate(-50%, -52%) scale(0.98);\n    }\n}\n\n                    @keyframes successBounce {\n                        0% { transform: scale(0.3); opacity: 0; }\n                        50% { transform: scale(1.05); }\n                        70% { transform: scale(0.9); }\n                        100% { transform: scale(1); opacity: 1; }\n                    }\n                    \n                    @keyframes checkmark {\n                        0% { transform: scale(0); opacity: 0; }\n                        100% { transform: scale(1); opacity: 1; }\n                    }\n\n                    @keyframes shimmer {\n                        0% { background-position: -200px 0; }\n                        100% { background-position: calc(200px + 100%) 0; }\n                    }\n\n                    @keyframes mapSlideIn {\n                        from {\n                            height: 0px;\n                            opacity: 0;\n                            transform: translateY(20px);\n                        }\n                        to {\n                            height: 400px;\n                            opacity: 1;\n                            transform: translateY(0px);\n                        }\n                    }\n\n                    input[type=\"range\"]::-webkit-slider-thumb {\n                        appearance: none;\n                        height: 20px;\n                        width: 20px;\n                        border-radius: 50%;\n                        background: ${colors.primary};\n                        cursor: pointer;\n                        boxShadow: 0 2px 4px ${colors.primary}30;\n                        border: 2px solid white;\n                        transition: all 0.2s ease;\n                    }\n                    \n                    input[type=\"range\"]::-webkit-slider-thumb:hover {\n                        transform: scale(1.1);\n                        boxShadow: 0 4px 8px ${colors.primary}40;\n                    }\n                    \n                    input[type=\"range\"]::-moz-range-thumb {\n                        height: 20px;\n                        width: 20px;\n                        border-radius: 50%;\n                        background: ${colors.primary};\n                        cursor: pointer;\n                        border: 2px solid white;\n                        boxShadow: 0 2px 4px ${colors.primary}30;\n                    }\n\n                    .pac-container {\n                        background-color: white;\n                        border: 1px solid ${colors.gray[200]};\n                        border-radius: 8px;\n                        box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n                        font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Inter\", sans-serif;\n                        margin-top: 4px;\n                        overflow: hidden;\n                        animation: slideInUp 0.3s ease-out;\n                    }\n\n                    .pac-item {\n                        border-bottom: 1px solid ${colors.gray[100]};\n                        padding: 12px 16px;\n                        font-size: 15px;\n                        cursor: pointer;\n                        transition: all 0.2s ease;\n                    }\n\n                    .pac-item:last-child {\n                        border-bottom: none;\n                    }\n\n                    .pac-item:hover {\n                        background-color: ${colors.gray[50]};\n                        transform: translateX(2px);\n                    }\n\n                    .pac-item-selected {\n                        background-color: ${colors.primaryLight};\n                        border-left: 3px solid ${colors.primary};\n                    }\n\n                    .pac-item-query {\n                        color: ${colors.primary};\n                        fontWeight: 500;\n                    }\n\n                    .pac-matched {\n                        fontWeight: 600;\n                        color: ${colors.primary};\n                    }\n\n                    .pac-icon {\n                        display: none;\n                    }\n\n                    /* Custom input focus animations */\n                    input:focus, textarea:focus {\n                        animation: focusPulse 0.3s ease-out;\n                    }\n\n                    @keyframes focusPulse {\n                        0% { transform: scale(1); }\n                        50% { transform: scale(1.02); }\n                        100% { transform: scale(1); }\n                    }\n                    @keyframes spin {\n    to {\n        transform: rotate(360deg);\n    }\n}\n                `})]});}addPropertyControls(RoofLeadForm,{copyVariant:{// ADD THIS ENTIRE BLOCK\ntype:ControlType.Enum,title:\"Copy Variant\",options:[\"low\",\"high\"],optionTitles:[\"Low\",\"High\"],defaultValue:\"low\"},showFirstQuestionHeadline:{type:ControlType.Boolean,title:\"Show First Q Headline\",defaultValue:true,enabledTitle:\"Visible\",disabledTitle:\"Hidden\"},initialQuestionId:{type:ControlType.Enum,title:\"Start Step\",options:Object.keys(questionTitles),optionTitles:Object.values(questionTitles),defaultValue:\"roofType\"},showStartScreen:{// ADD THIS ENTIRE BLOCK\ntype:ControlType.Boolean,title:\"Show Start Screen\",defaultValue:true,enabledTitle:\"Show intro screen\",disabledTitle:\"Skip to form\"},thankYouUrl:{type:ControlType.String,title:\"Thank You Page URL\",defaultValue:\"\",placeholder:\"Leave empty to auto-detect from domain\"},webhookId:{type:ControlType.Number,title:\"Webhook ID\",min:1,max:9999,step:1,displayStepper:true},serviceOverride:{type:ControlType.Enum,title:\"Service Override\",options:[\"none\",\"komplett\",\"daemmung\",\"fenster\",\"begrunung\",\"gauben\",\"dachrinnen\",\"reparatur\"],optionTitles:[\"No Override\",\"Complete Roof\",\"Insulation Only\",\"Windows Only\",\"Roof Greening\",\"Dormers Only\",\"Gutters Only\",\"Repair Only\"],defaultValue:\"none\"},primaryColor:{type:ControlType.Color,title:\"Primary Color\",defaultValue:\"#5E68EA\"},successColor:{type:ControlType.Color,title:\"Success Color\",defaultValue:\"#10b981\"},warningColor:{type:ControlType.Color,title:\"Warning Color\",defaultValue:\"#f59e0b\"},selectedBackgroundColor:{type:ControlType.Color,title:\"Selected Background Color\",defaultValue:\"#f0f4ff\"},selectedTextColor:{type:ControlType.Color,title:\"Selected Text Color\",defaultValue:\"#1e40af\"},serviceCenterCity:{type:ControlType.String,title:\"Service Center City\",defaultValue:\"M\\xf6nchengladbach\",placeholder:\"e.g., Berlin, M\\xfcnchen, Hamburg\"},serviceCenterLatitude:{type:ControlType.Number,title:\"Override Latitude (optional)\",defaultValue:null,min:-90,max:90,step:1e-5,displayStepper:true,hidden:props=>!props.serviceCenterLatitude},serviceCenterLongitude:{type:ControlType.Number,title:\"Override Longitude (optional)\",defaultValue:null,min:-180,max:180,step:1e-5,displayStepper:true,hidden:props=>!props.serviceCenterLongitude},serviceRadiusKm:{type:ControlType.Number,title:\"Service Radius (km)\",defaultValue:50,min:1,max:500,step:1,displayStepper:true},showDistanceWarning:{type:ControlType.Boolean,title:\"Show Distance Warning\",defaultValue:true,enabledTitle:\"Show warning before rejecting\",disabledTitle:\"Reject immediately\"},allowManualAddress:{type:ControlType.Boolean,title:\"Allow Manual Address\",defaultValue:false,enabledTitle:\"Allow manual input\",disabledTitle:\"Google Maps only\"},showMapAfterAddress:{type:ControlType.Boolean,title:\"Show Map After Address\",defaultValue:true,enabledTitle:\"Show map with delay\",disabledTitle:\"Skip map, advance immediately\"},skipServiceQuestion:{type:ControlType.Boolean,title:\"Skip Service Question\",defaultValue:false,enabledTitle:\"Skip\",disabledTitle:\"Show question\"},defaultServiceValue:{type:ControlType.Array,title:\"Default Service Values\",control:{type:ControlType.Enum,options:[\"dachsanierung\",\"neuer_dachbau\",\"dach_daemmen\",\"dachfenster_gauben\",\"reparatur\",\"noch_nicht_sicher\"],optionTitles:[\"Dachsanierung\",\"Dach-Neubau\",\"Dach d\\xe4mmen\",\"Dachfenster / Gauben\",\"Reparatur\",\"Noch nicht sicher\"]},defaultValue:[\"dachsanierung\"],hidden:props=>!props.skipServiceQuestion},skipRoofTypeQuestion:{type:ControlType.Boolean,title:\"Skip Roof Type Question\",defaultValue:false,enabledTitle:\"Skip\",disabledTitle:\"Show question\"},defaultRoofTypeValue:{type:ControlType.Enum,title:\"Default Roof Type\",options:[\"satteldach\",\"flachdach\",\"walmdach\",\"sonstige\"],optionTitles:[\"Satteldach\",\"Flachdach\",\"Walmdach\",\"Sonstige\"],defaultValue:\"satteldach\",hidden:props=>!props.skipRoofTypeQuestion}})/* Demo Component showing autocomplete functionality\nfunction RoofLeadFormDemo() {\n    return (\n        <div>\n            <div\n                style={{\n                    padding: \"20px\",\n                    background: \"#f0f9ff\",\n                    border: \"1px solid #0284c7\",\n                    borderRadius: \"8px\",\n                    marginBottom: \"20px\",\n                    textAlign: \"center\",\n                }}\n            >\n                <h3 style={{ margin: \"0 0 10px 0\", color: \"#0284c7\" }}>\n                    Browser Autocomplete Enabled\n                </h3>\n                <p\n                    style={{\n                        margin: \"0 0 15px 0\",\n                        fontSize: \"14px\",\n                        color: \"#0369a1\",\n                    }}\n                >\n                    Form fields will suggest your saved information (name,\n                    email, phone, address) from your browser's autofill data\n                </p>\n                <div\n                    style={{\n                        display: \"grid\",\n                        gridTemplateColumns:\n                            \"repeat(auto-fit, minmax(200px, 1fr))\",\n                        gap: \"10px\",\n                        marginTop: \"15px\",\n                        fontSize: \"12px\",\n                        color: \"#0369a1\",\n                    }}\n                >\n                    <div>👤 Name: autocomplete=\"given-name/family-name\"</div>\n                    <div>📧 Email: autocomplete=\"email\"</div>\n                    <div>📱 Phone: autocomplete=\"tel\"</div>\n                    <div>🏠 Address: autocomplete=\"street-address\"</div>\n                </div>\n            </div>\n            <RoofLeadForm />\n        </div>\n    )\n}*/;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"RoofLeadForm\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"600\",\"framerDisableUnlink\":\"* @framerIntrinsicWidth 500\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ultimateversion.map"],"mappings":"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"}