{"version":3,"file":"client.mjs","names":[],"sources":["../app/teaser-gkv-krankenkassenwechsel.client.ts"],"sourcesContent":["/// <reference types=\"../.check24-home/types/client\" />\n\nimport { HomeClientComponentElement, HomeClientComponentProps, UserInfo } from \"../.check24-home/types/client\";\nimport { Language } from \"../.check24-home/types/check24\";\n\ninterface GkvKrankenkassenwechselProps extends HomeClientComponentProps {\n    linkUrl?: string;\n}\n\ninterface InsuranceType {\n    value: string;\n    label: string;\n}\n\ninterface Insurer {\n    id: number;\n    name: string;\n    insurer_key: string;\n}\n\nconst INSURANCE_TYPES: InsuranceType[] = [\n    { value: 'by_law_or_joint_insured', label: 'Gesetzlich krankenversichert' },\n    { value: 'private', label: 'Privat versichert' },\n    { value: 'abroad', label: 'Im Ausland versichert' },\n    { value: 'none', label: 'Nicht versichert' }\n];\n\nconst INSURERS: Insurer[] = [{\"id\":448,\"name\":\"AOK Baden-Württemberg\",\"insurer_key\":\"aok_bw\"},{\"id\":449,\"name\":\"AOK Bayern\",\"insurer_key\":\"aok_bayern\"},{\"id\":450,\"name\":\"AOK Bremen/Bremerhaven\",\"insurer_key\":\"aok_hb\"},{\"id\":451,\"name\":\"AOK Hessen\",\"insurer_key\":\"aok_he\"},{\"id\":447,\"name\":\"AOK Niedersachsen\",\"insurer_key\":\"aok_nieders\"},{\"id\":452,\"name\":\"AOK Nordost\",\"insurer_key\":\"aok_nordost\"},{\"id\":453,\"name\":\"AOK NORDWEST\",\"insurer_key\":\"aok_nw\"},{\"id\":454,\"name\":\"AOK PLUS\",\"insurer_key\":\"aok_plus\"},{\"id\":455,\"name\":\"AOK Rheinland-Pfalz/Saarland\",\"insurer_key\":\"aok_rps\"},{\"id\":456,\"name\":\"AOK Rheinland/Hamburg\",\"insurer_key\":\"aok_rh\"},{\"id\":457,\"name\":\"AOK Sachsen-Anhalt\",\"insurer_key\":\"aok_san\"},{\"id\":459,\"name\":\"Audi BKK\",\"insurer_key\":\"audi_bkk\"},{\"id\":460,\"name\":\"BAHN-BKK\",\"insurer_key\":\"bahn_bkk\"},{\"id\":461,\"name\":\"BARMER\",\"insurer_key\":\"barmer\"},{\"id\":462,\"name\":\"BERGISCHE KRANKENKASSE\",\"insurer_key\":\"bergische_kk\"},{\"id\":463,\"name\":\"Bertelsmann BKK\",\"insurer_key\":\"bertelsmann_bkk\"},{\"id\":466,\"name\":\"BIG direkt gesund\",\"insurer_key\":\"big_direkt\"},{\"id\":469,\"name\":\"BKK Akzo Nobel Bayern\",\"insurer_key\":\"bkk_akzo\"},{\"id\":540,\"name\":\"BKK B. Braun Aesculap\",\"insurer_key\":\"bkk_braun\"},{\"id\":471,\"name\":\"BKK der MTU Friedrichshafen GmbH\",\"insurer_key\":\"bkk_mtu\"},{\"id\":542,\"name\":\"BKK Deutsche Bank AG\",\"insurer_key\":\"db\"},{\"id\":472,\"name\":\"BKK Diakonie\",\"insurer_key\":\"bkk_diakonie\"},{\"id\":473,\"name\":\"BKK DürkoppAdler\",\"insurer_key\":\"bkk_da\"},{\"id\":474,\"name\":\"BKK EUREGIO\",\"insurer_key\":\"bkk_euregio\"},{\"id\":543,\"name\":\"BKK EVM\",\"insurer_key\":\"bkk_evm\"},{\"id\":544,\"name\":\"BKK EWE\",\"insurer_key\":\"bkk_ewe\"},{\"id\":475,\"name\":\"BKK exklusiv\",\"insurer_key\":\"bkk_exclusiv\"},{\"id\":476,\"name\":\"BKK Faber-Castell & Partner\",\"insurer_key\":\"bkk_faber\"},{\"id\":477,\"name\":\"BKK firmus\",\"insurer_key\":\"bkk_firmus\"},{\"id\":478,\"name\":\"BKK Freudenberg\",\"insurer_key\":\"bkk_freudenberg\"},{\"id\":479,\"name\":\"BKK GILDEMEISTER SEIDENSTICKER\",\"insurer_key\":\"bkk_gs\"},{\"id\":546,\"name\":\"BKK Groz-Beckert\",\"insurer_key\":\"bkk_gb\"},{\"id\":481,\"name\":\"BKK Herkules\",\"insurer_key\":\"bkk_herkules\"},{\"id\":547,\"name\":\"BKK KARL MAYER\",\"insurer_key\":\"bkk_mayer\"},{\"id\":483,\"name\":\"BKK Linde\",\"insurer_key\":\"bkk_linde\"},{\"id\":549,\"name\":\"BKK MAHLE\",\"insurer_key\":\"bkk_mahle\"},{\"id\":484,\"name\":\"BKK Melitta HMR\",\"insurer_key\":\"bkk_melitta\"},{\"id\":550,\"name\":\"BKK Miele\",\"insurer_key\":\"bkk_miele\"},{\"id\":486,\"name\":\"BKK PFAFF\",\"insurer_key\":\"bkk_pfaff\"},{\"id\":487,\"name\":\"BKK Pfalz\",\"insurer_key\":\"bkk_pfalz\"},{\"id\":538,\"name\":\"BKK Pricewaterhouse­Coopers\",\"insurer_key\":\"bkkpricewaterhousecoopers\"},{\"id\":488,\"name\":\"BKK ProVita\",\"insurer_key\":\"bkk_provita\"},{\"id\":489,\"name\":\"BKK Public\",\"insurer_key\":\"bkk_public\"},{\"id\":551,\"name\":\"BKK Rieker.Ricosta.Weisser\",\"insurer_key\":\"bkkrieker-ricosta-weiser\"},{\"id\":553,\"name\":\"BKK Salzgitter\",\"insurer_key\":\"bkk_salzgitter\"},{\"id\":491,\"name\":\"BKK SBH\",\"insurer_key\":\"bkkschwarzwaldbaarheuberg\"},{\"id\":490,\"name\":\"BKK Scheufelen\",\"insurer_key\":\"bkk_scheufelen\"},{\"id\":492,\"name\":\"BKK Technoform\",\"insurer_key\":\"bkk_technoform\"},{\"id\":496,\"name\":\"BKK VDN\",\"insurer_key\":\"bkk_vdn\"},{\"id\":497,\"name\":\"BKK VerbundPlus\",\"insurer_key\":\"bkk_verbundplus\"},{\"id\":555,\"name\":\"BKK Voralb HELLER*INDEX*LEUZE\",\"insurer_key\":\"bkk_voralb\"},{\"id\":499,\"name\":\"BKK Werra-Meissner\",\"insurer_key\":\"bkk_wm\"},{\"id\":500,\"name\":\"BKK Wirtschaft & Finanzen\",\"insurer_key\":\"bkk_wf\"},{\"id\":556,\"name\":\"BKK Würth\",\"insurer_key\":\"bkk_wuerth\"},{\"id\":502,\"name\":\"BKK24\",\"insurer_key\":\"bkk24\"},{\"id\":557,\"name\":\"BMW BKK\",\"insurer_key\":\"bmw_bkk\"},{\"id\":503,\"name\":\"Bosch BKK\",\"insurer_key\":\"bosch_bkk\"},{\"id\":505,\"name\":\"Continentale BKK\",\"insurer_key\":\"continentale_bkk\"},{\"id\":506,\"name\":\"DAK-Gesundheit\",\"insurer_key\":\"dak_gh\"},{\"id\":571,\"name\":\"DAK-Gesundheit (Wahltarif GT 120)\",\"insurer_key\":\"dak_gh_wt_1\"},{\"id\":578,\"name\":\"DAK-Gesundheit (Wahltarif GT 150)\",\"insurer_key\":\"dak_gh_wt_2\"},{\"id\":507,\"name\":\"Debeka BKK\",\"insurer_key\":\"debeka_bkk\"},{\"id\":510,\"name\":\"energie-BKK\",\"insurer_key\":\"energie_bkk\"},{\"id\":559,\"name\":\"Ernst & Young BKK\",\"insurer_key\":\"ernstyoungbkk\"},{\"id\":511,\"name\":\"Heimat Krankenkasse\",\"insurer_key\":\"heimat_kk\"},{\"id\":512,\"name\":\"HEK - Hanseatische Krankenkasse\",\"insurer_key\":\"hek\"},{\"id\":513,\"name\":\"hkk Krankenkasse\",\"insurer_key\":\"hkk\"},{\"id\":517,\"name\":\"IKK - Die Innovationskasse\",\"insurer_key\":\"ikk_nord\"},{\"id\":576,\"name\":\"IKK - Die Innovationskasse (Wahltarif Arzt)\",\"insurer_key\":\"ikk_wt_doctor_1\"},{\"id\":514,\"name\":\"IKK Brandenburg und Berlin\",\"insurer_key\":\"ikkbb\"},{\"id\":515,\"name\":\"IKK classic\",\"insurer_key\":\"ikk\"},{\"id\":516,\"name\":\"IKK gesund plus\",\"insurer_key\":\"ikk_gesund_plus\"},{\"id\":518,\"name\":\"IKK Südwest\",\"insurer_key\":\"ikk-suedwest\"},{\"id\":519,\"name\":\"KKH Kaufmännische Krankenkasse\",\"insurer_key\":\"kkh\"},{\"id\":520,\"name\":\"KNAPPSCHAFT\",\"insurer_key\":\"kbs\"},{\"id\":548,\"name\":\"Koenig & Bauer BKK (BKK KBA)\",\"insurer_key\":\"bkk_kba\"},{\"id\":560,\"name\":\"Krones BKK\",\"insurer_key\":\"krones_bkk\"},{\"id\":536,\"name\":\"Mercedes-Benz BKK\",\"insurer_key\":\"daimler_bkk\"},{\"id\":561,\"name\":\"Merck BKK\",\"insurer_key\":\"bkk_merck\"},{\"id\":522,\"name\":\"mhplus Krankenkasse\",\"insurer_key\":\"mhplus\"},{\"id\":495,\"name\":\"mkk – meine krankenkasse\",\"insurer_key\":\"bkk_vbu\"},{\"id\":464,\"name\":\"Mobil Krankenkasse\",\"insurer_key\":\"mobil_bkk\"},{\"id\":577,\"name\":\"Mobil Krankenkasse (Wahltarif Zahnersatz)\",\"insurer_key\":\"mobil_wt_dentures_1\"},{\"id\":523,\"name\":\"novitas bkk\",\"insurer_key\":\"novitas_bkk\"},{\"id\":524,\"name\":\"Pronova BKK\",\"insurer_key\":\"pronova_bkk\"},{\"id\":525,\"name\":\"R+V Betriebskrankenkasse\",\"insurer_key\":\"rundv_bkk\"},{\"id\":526,\"name\":\"Salus BKK\",\"insurer_key\":\"salus_bkk\"},{\"id\":528,\"name\":\"SECURVITA Krankenkasse\",\"insurer_key\":\"securvita\"},{\"id\":527,\"name\":\"Siemens-Betriebskrankenkasse (SBK)\",\"insurer_key\":\"sbk\"},{\"id\":530,\"name\":\"SKD BKK\",\"insurer_key\":\"skd_bkk\"},{\"id\":564,\"name\":\"Südzucker-BKK\",\"insurer_key\":\"suedzucker_bkk\"},{\"id\":537,\"name\":\"SVLFG (Sozialversicherung für Landwirtschaft, Forsten und Gartenbau)\",\"insurer_key\":\"svlfg\"},{\"id\":532,\"name\":\"TK - Techniker Krankenkasse\",\"insurer_key\":\"tk\"},{\"id\":494,\"name\":\"TUI BKK\",\"insurer_key\":\"tui_bkk\"},{\"id\":534,\"name\":\"VIACTIV Krankenkasse\",\"insurer_key\":\"viactiv\"},{\"id\":566,\"name\":\"vivida bkk\",\"insurer_key\":\"vivida\"},{\"id\":465,\"name\":\"WMF BKK\",\"insurer_key\":\"wmf_bkk\"},{\"id\":501,\"name\":\"ZF BKK\",\"insurer_key\":\"bkk_zf_partner\"}];\n\nexport default class GkvKrankenkassenwechselTeaserClient extends HTMLElement implements HomeClientComponentElement {\n    linkUrl: string = \"https://www.check24.de/gesetzliche-krankenversicherung/?web_home_teaser\";\n    deviceOutput: \"desktop\" | \"mobile\" | \"tabletapp\" | \"app\" = \"desktop\";\n    language: Language = \"de-DE\";\n    user?: UserInfo | undefined;\n    platform: \"app\" | \"web\" = \"web\";\n\n    private shadow: ShadowRoot | null = null;\n    private currentInsuranceType: string = 'by_law_or_joint_insured';\n    private currentInsurer: number | null = null;\n    private currentInsurerKey: string | null = null;\n    private searchTerm: string = '';\n    private isTypeDropdownOpen: boolean = false;\n    private isInsurerDropdownOpen: boolean = false;\n    private highlightedIndex: number = -1;\n    private listenersAttached: boolean = false;\n\n    private isStatutory(): boolean {\n        return this.currentInsuranceType === 'by_law_or_joint_insured';\n    }\n\n    private onShadowClick = (e: Event): void => {\n        if (!this.shadow) return;\n        const target = e.target as HTMLElement | null;\n        if (!target) return;\n\n        const typeOption = target.closest('.type-option') as HTMLElement | null;\n        if (typeOption) {\n            e.preventDefault();\n            this.currentInsuranceType = typeOption.dataset.value || '';\n            if (this.isStatutory()) {\n                this.currentInsurer = null;\n                this.currentInsurerKey = null;\n            }\n            this.isTypeDropdownOpen = false;\n            this.searchTerm = '';\n            this.highlightedIndex = -1;\n            this.updateUi();\n            return;\n        }\n\n        const insurerOption = target.closest('.insurer-option') as HTMLElement | null;\n        if (insurerOption) {\n            e.preventDefault();\n            const insurer: Insurer = {\n                id: parseInt(insurerOption.dataset.id || '0', 10),\n                name: insurerOption.dataset.name || '',\n                insurer_key: insurerOption.dataset.key || ''\n            };\n            this.selectInsurer(insurer);\n            return;\n        }\n\n        if (target.closest('.cta-button')) {\n            e.preventDefault();\n            window.location.href = this.buildSubmitUrl();\n            return;\n        }\n\n        if (target.closest('.type-dropdown')) {\n            e.preventDefault();\n            this.isTypeDropdownOpen = !this.isTypeDropdownOpen;\n            this.isInsurerDropdownOpen = false;\n            this.updateDropdowns();\n            return;\n        }\n\n        if (target.closest('.insurer-field')) {\n            const insurerInput = this.shadow?.querySelector('.insurer-input') as HTMLInputElement;\n            if (insurerInput && target !== insurerInput) {\n                e.preventDefault();\n                insurerInput.focus();\n            }\n            return;\n        }\n\n        if (target.closest('.teaser-container') && window.innerWidth <= 959 && !target.closest('.form-container')) {\n            window.location.href = this.linkUrl;\n            return;\n        }\n\n        if (target.closest('.teaser-container') && !target.closest('.form-container')) {\n            if (this.isTypeDropdownOpen || this.isInsurerDropdownOpen) {\n                this.isTypeDropdownOpen = false;\n                this.isInsurerDropdownOpen = false;\n                this.updateDropdowns();\n            }\n        }\n    };\n\n    private onShadowInput = (e: Event): void => {\n        const input = e.target as HTMLInputElement | null;\n        if (!input || !input.classList.contains('insurer-input')) return;\n        this.searchTerm = input.value;\n        this.isTypeDropdownOpen = false;\n        this.isInsurerDropdownOpen = true;\n        this.highlightedIndex = -1;\n        this.updateDropdowns();\n    };\n\n    private onShadowFocusIn = (e: Event): void => {\n        const target = e.target as HTMLElement | null;\n        if (!target) return;\n        if (target.classList.contains('insurer-input')) {\n            this.isTypeDropdownOpen = false;\n            this.isInsurerDropdownOpen = true;\n            this.updateDropdowns();\n        }\n    };\n\n    private onShadowKeyDown = (e: Event): void => {\n        const keyEvent = e as KeyboardEvent;\n        const input = e.target as HTMLElement | null;\n        if (!input || !input.classList.contains('insurer-input')) return;\n        if (!this.isInsurerDropdownOpen) return;\n\n        const filteredInsurers = this.filterInsurers(this.searchTerm);\n\n        if (keyEvent.key === 'ArrowDown') {\n            keyEvent.preventDefault();\n            if (this.highlightedIndex < filteredInsurers.length - 1) {\n                this.highlightedIndex++;\n                this.updateInsurerDropdown();\n            }\n        } else if (keyEvent.key === 'ArrowUp') {\n            keyEvent.preventDefault();\n            if (this.highlightedIndex > 0) {\n                this.highlightedIndex--;\n                this.updateInsurerDropdown();\n            }\n        } else if (keyEvent.key === 'Enter') {\n            keyEvent.preventDefault();\n            if (this.highlightedIndex >= 0 && filteredInsurers[this.highlightedIndex]) {\n                this.selectInsurer(filteredInsurers[this.highlightedIndex]);\n            }\n        } else if (keyEvent.key === 'Escape') {\n            this.isInsurerDropdownOpen = false;\n            this.updateInsurerDropdown();\n        }\n    };\n\n    private onDocumentClick = (e: MouseEvent): void => {\n        if (!this.isTypeDropdownOpen && !this.isInsurerDropdownOpen) return;\n        const path = e.composedPath();\n        const clickedInsideThisComponent = path.includes(this);\n        if (clickedInsideThisComponent) return;\n        this.isTypeDropdownOpen = false;\n        this.isInsurerDropdownOpen = false;\n        this.updateDropdowns();\n    };\n\n    constructor() {\n        super();\n    }\n\n    static get observedAttributes(): string[] {\n        return ['link-url', 'device-output', 'language', 'user', 'platform'];\n    }\n\n    private readAttributes(): Pick<GkvKrankenkassenwechselProps, 'deviceOutput' | 'language' | 'user' | 'platform'> {\n        if (typeof C24Home !== 'undefined' && typeof C24Home.validateAttributes === 'function') {\n            return C24Home.validateAttributes<GkvKrankenkassenwechselProps>(this.attributes);\n        }\n\n        let userInfo: UserInfo | undefined;\n        const rawUser = this.getAttribute('user');\n        if (rawUser) {\n            try { userInfo = JSON.parse(rawUser); } catch { /* ignore */ }\n        }\n\n        const deviceOutput = this.getAttribute('device-output');\n        const platform = this.getAttribute('platform');\n        const language = this.getAttribute('language');\n\n        return {\n            deviceOutput: (deviceOutput as GkvKrankenkassenwechselProps['deviceOutput']) ?? 'desktop',\n            language: (language as Language) ?? 'de-DE',\n            platform: (platform as GkvKrankenkassenwechselProps['platform']) ?? 'web',\n            user: userInfo,\n        };\n    }\n\n    attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n        if (oldValue === newValue) return;\n\n        if (name === 'link-url') {\n            this.linkUrl = newValue || this.linkUrl;\n        }\n\n        const validated = this.readAttributes();\n        this.deviceOutput = validated.deviceOutput;\n        this.language = validated.language;\n        this.user = validated.user;\n        this.platform = validated.platform;\n\n        if (this.shadow) {\n            this.render();\n            this.updateUi();\n        }\n    }\n\n    connectedCallback(): void {\n        if (!this.shadow) {\n            this.shadow = this.attachShadow({ mode: 'closed' });\n        }\n\n        const linkUrlAttr = this.getAttribute('link-url');\n        if (linkUrlAttr) this.linkUrl = linkUrlAttr;\n\n        const validated = this.readAttributes();\n        this.deviceOutput = validated.deviceOutput;\n        this.language = validated.language;\n        this.user = validated.user;\n        this.platform = validated.platform;\n\n        this.render();\n        this.attachListenersOnce();\n        this.updateUi();\n    }\n\n    disconnectedCallback(): void {\n        document.removeEventListener('click', this.onDocumentClick);\n    }\n\n    private attachListenersOnce(): void {\n        if (!this.shadow || this.listenersAttached) return;\n        this.listenersAttached = true;\n\n        this.shadow.addEventListener('click', this.onShadowClick);\n        this.shadow.addEventListener('input', this.onShadowInput);\n        this.shadow.addEventListener('focusin', this.onShadowFocusIn);\n        this.shadow.addEventListener('keydown', this.onShadowKeyDown);\n        document.addEventListener('click', this.onDocumentClick);\n    }\n\n    private filterInsurers(searchTerm: string): Insurer[] {\n        const search = searchTerm.trim().toLowerCase();\n        const insurers = INSURERS;\n\n        if (!search) {\n            return insurers;\n        }\n\n        return insurers.filter(insurer =>\n            insurer.name.toLowerCase().includes(search)\n        );\n    }\n\n    private highlightMatch(text: string, searchTerm: string): string {\n        if (!searchTerm.trim()) return text;\n\n        const regex = new RegExp(`(${searchTerm.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')})`, 'gi');\n        return text.replace(regex, '<strong>$1</strong>');\n    }\n\n    private buildSubmitUrl(): string {\n        const url = new URL('https://www.check24.de/gesetzliche-krankenversicherung/?web_home_teaser');\n        const params = url.searchParams;\n\n        params.append('c24api_current_insurance_type', this.currentInsuranceType);\n\n        if (this.isStatutory() && this.currentInsurer) {\n            params.append('c24api_current_insurer', this.currentInsurer.toString());\n            if (this.currentInsurerKey) {\n                params.append('c24api_insurer_key', this.currentInsurerKey);\n            }\n        }\n\n        return url.toString();\n    }\n\n    private updateUi(): void {\n        this.updateTypeLabel();\n        this.updateInsurerField();\n        this.updateDropdowns();\n    }\n\n    private selectInsurer(insurer: Insurer): void {\n        this.currentInsurer = insurer.id;\n        this.currentInsurerKey = insurer.insurer_key;\n        this.searchTerm = insurer.name;\n        this.isInsurerDropdownOpen = false;\n        this.highlightedIndex = -1;\n\n        const insurerInput = this.shadow?.querySelector('.insurer-input') as HTMLInputElement;\n        if (insurerInput) {\n            insurerInput.value = insurer.name;\n        }\n\n        this.updateInsurerDropdown();\n    }\n\n    private updateTypeLabel(): void {\n        const typeLabel = this.shadow?.querySelector('.type-label');\n        if (typeLabel) {\n            const selected = INSURANCE_TYPES.find(t => t.value === this.currentInsuranceType);\n            typeLabel.textContent = selected ? selected.label : 'Bitte wählen';\n        }\n    }\n\n    private updateInsurerField(): void {\n        const insurerField = this.shadow?.querySelector('.insurer-field') as HTMLElement;\n        const insurerInput = this.shadow?.querySelector('.insurer-input') as HTMLInputElement;\n\n        if (insurerField) {\n            if (this.isStatutory()) {\n                insurerField.style.display = 'flex';\n            } else {\n                insurerField.style.display = 'none';\n            }\n        }\n\n        if (insurerInput) {\n            insurerInput.value = this.searchTerm;\n        }\n    }\n\n    private updateDropdowns(): void {\n        const typeOptions = this.shadow?.querySelector('.type-options') as HTMLElement;\n        const typeDropdown = this.shadow?.querySelector('.type-dropdown');\n        const typeValue = this.shadow?.querySelector('.type-dropdown .field-value');\n\n        if (typeOptions && typeDropdown) {\n            if (typeValue) {\n                typeValue.setAttribute('aria-expanded', this.isTypeDropdownOpen ? 'true' : 'false');\n            }\n\n            if (this.isTypeDropdownOpen) {\n                const fieldRect = typeDropdown.getBoundingClientRect();\n\n                typeOptions.style.display = 'block';\n                typeOptions.style.width = fieldRect.width + 'px';\n            } else {\n                typeOptions.style.display = 'none';\n            }\n        }\n\n        const typeChevron = this.shadow?.querySelector('.type-chevron') as HTMLElement;\n        if (typeChevron) {\n            typeChevron.style.transform = this.isTypeDropdownOpen ? 'rotate(180deg)' : 'rotate(0deg)';\n        }\n\n        this.updateInsurerDropdown();\n    }\n\n    private updateInsurerDropdown(): void {\n        const insurerDropdown = this.shadow?.querySelector('.insurer-dropdown') as HTMLElement;\n        const insurerField = this.shadow?.querySelector('.insurer-field');\n        const insurerInput = this.shadow?.querySelector('.insurer-input') as HTMLInputElement;\n\n        if (!insurerDropdown || !insurerField) return;\n\n        const filteredInsurers = this.filterInsurers(this.searchTerm);\n\n        if (insurerInput) {\n            insurerInput.setAttribute('aria-expanded', this.isInsurerDropdownOpen && filteredInsurers.length > 0 ? 'true' : 'false');\n        }\n\n        if (this.isInsurerDropdownOpen && filteredInsurers.length > 0) {\n            const fieldRect = insurerField.getBoundingClientRect();\n\n            insurerDropdown.style.display = 'block';\n            insurerDropdown.style.width = fieldRect.width + 'px';\n            insurerDropdown.innerHTML = filteredInsurers.map((insurer, index) => `\n                <div class=\"insurer-option ${index === this.highlightedIndex ? 'highlighted' : ''}\" \n                     role=\"option\"\n                     data-id=\"${insurer.id}\" \n                     data-name=\"${insurer.name}\" \n                     data-key=\"${insurer.insurer_key}\">\n                    ${this.highlightMatch(insurer.name, this.searchTerm)}\n                </div>\n            `).join('');\n        } else {\n            insurerDropdown.style.display = 'none';\n        }\n    }\n\n    private render(): void {\n        if (!this.shadow) return;\n\n        this.shadow.innerHTML = `\n      <style>\n        :host {\n          display: block;\n          position: relative;\n          box-sizing: border-box;\n          background-color: transparent;\n          font-family: Inter, Arial, sans-serif;\n        }\n\n        @media (min-width: 960px) {\n          :host {\n            height: 600px;\n            margin-top: -126px;\n            padding: 126px 0 114px 0;\n            font-family: Inter, Arial, sans-serif;\n          }\n        }\n\n        @media (min-width: 769px) and (max-width: 959px) {\n          :host {\n            height: 504px;\n            margin-top: 0;\n            padding: 30px 20px 114px 20px;\n            background-color: transparent;\n            font-family: Inter, Arial, sans-serif;\n          }\n        }\n        \n        .teaser-container {\n          position: relative;\n          width: 100%;\n          height: 100%;\n          background-color: transparent;\n          z-index: 0;\n        }\n        .teaser-content {\n          display: flex;\n          flex-direction: column;\n          align-items: center;\n          height: 100%;\n          position: absolute;\n          width: 100%;\n          min-width: 100%;\n        }\n        .text-wrapper {\n          display: flex;\n          flex-direction: column;\n          align-items: center;\n          position: relative;\n          padding-top: 50px;\n        }\n        .mobile-break {\n          display: none;\n        }\n\n        .headline-text {\n          font-size: 30px;\n          line-height: 1.3;\n          font-weight: 700;\n          color: #FFFFFF;\n          margin: 0;\n          white-space: nowrap;\n          text-align: center;\n        }\n        .subline-text {\n          font-size: 18px;\n          font-weight: 300;\n          color: #FFFFFF;\n          margin: 16px 0 0 0;\n          white-space: nowrap;\n          text-align: center;\n        }\n        \n        .form-container {\n          background: #FFFFFF;\n          border-radius: 40px;\n          padding: 5px 5px 5px 32px;\n          display: flex;\n          align-items: center;\n          gap: 24px;\n          box-shadow: 0 1px 5px rgba(0, 0, 0, 0.1);\n          border: 3px solid #FFBB1C;\n          box-sizing: border-box;\n          max-width: 928px;\n          min-width: min(960px, calc(100% - 32px));\n          width: calc(100% - 32px);\n          position: absolute;\n          bottom: 60px;\n          left: 16px;\n          right: 16px;\n          margin: 0 auto;\n        }\n        \n        .form-field {\n          cursor: pointer;\n          display: flex;\n          flex-direction: column;\n          gap: 6px;\n          padding: 0;\n          flex: 1 0 0;\n          min-width: 0;\n          position: relative;\n          -webkit-tap-highlight-color: transparent;\n          user-select: none;\n        }\n        \n        .form-field:not(:first-of-type)::before {\n          content: \"\";\n          position: absolute;\n          left: 0;\n          top: 0;\n          bottom: 0;\n          width: 1px;\n          background: #949494;\n        }\n        \n        .form-field:not(:first-of-type) {\n          position: relative;\n          padding-left: 24px\n        }\n        \n        .field-label {\n          font-size: 14px;\n          color: #666;\n          white-space: nowrap;\n          overflow: hidden;\n          text-overflow: ellipsis;\n          text-align: left;\n          line-height: 1.4;\n          \n          // sonst ist das 'A' vorne abgeschnitten\n          left: -1px;\n          padding-left: 1px;\n        }\n        \n        .field-value {\n          font-size: 16px;\n          color: #181818;\n          display: flex;\n          align-items: center;\n          justify-content: space-between;\n          gap: 8px;\n          white-space: nowrap;\n          overflow: hidden;\n          text-overflow: ellipsis;\n          -webkit-tap-highlight-color: transparent;\n          user-select: none;\n        }\n        \n        .chevron {\n          width: 16px;\n          height: 16px;\n          color: #999;\n          transition: transform 0.2s;\n          flex-shrink: 0;\n        }\n        \n        .type-options, .insurer-dropdown {\n          position: absolute;\n          left: 0;\n          top: calc(100% + 17px);\n          background: white;\n          border: 1px solid #ddd;\n          border-radius: 8px;\n          box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n          z-index: 9999;\n          max-height: 240px;\n          overflow-y: auto;\n          display: none;\n          text-align: left;\n        }\n        \n        .type-option, .insurer-option {\n          padding: 12px 16px;\n          font-size: 14px;\n          color: #181818;\n          cursor: pointer;\n          transition: background 0.15s ease;\n          white-space: nowrap;\n          overflow: hidden;\n          text-overflow: ellipsis;\n          -webkit-tap-highlight-color: transparent;\n          user-select: none;\n        }\n        \n        .type-option:hover, .insurer-option:hover, .insurer-option.highlighted {\n          background: #f5f5f5;\n        }\n        \n        .insurer-option strong {\n          font-weight: bold;\n          color: #000;\n        }\n        \n        .insurer-input {\n          width: 100%;\n          border: none;\n          outline: none;\n          font-size: 16px;\n          color: #181818;\n          background: transparent;\n          overflow: hidden;\n          text-overflow: ellipsis;\n          padding: 0;\n        }\n        \n        .insurer-input::placeholder {\n          color: #666;\n        }\n        \n        .cta-button {\n          background: #0563C1;\n          color: #FFFFFF;\n          border: none;\n          border-radius: 90px;\n          padding: 12px 16px;\n          min-width: 140px;\n          font-size: 16px;\n          font-weight: 400;\n          cursor: pointer;\n          white-space: nowrap;\n          transition: background 0.2s ease;\n          flex-shrink: 0;\n          align-self: stretch;\n          overflow: hidden;\n          text-overflow: ellipsis;\n          display: flex;\n          align-items: center;\n          justify-content: center;\n          -webkit-tap-highlight-color: transparent;\n          user-select: none;\n          height: 48px;\n        }\n        .cta-button:hover {\n          background: #044a9e;\n        }\n        \n        @media (max-width: 959px) {\n          .teaser-container {\n            cursor: pointer;\n          }\n          .form-container {\n            display: none;\n          }\n        }\n        \n        /* Tablet Layout */\n        @media (min-width: 769px) and (max-width: 959px) {\n          .teaser-content {\n            align-items: center;\n          }\n          \n          .text-wrapper {\n            align-items: center;\n            padding-top: 20px;\n          }\n          \n          .headline-text {\n            font-size: 30px;\n            text-align: center;\n            white-space: normal;\n            line-height: 1.3;\n          }\n          \n          .subline-text {\n            font-size: 18px;\n            text-align: center;\n            white-space: normal;\n            margin: 16px 0 0 0;\n          }\n          \n          .image-wrapper {\n            position: static;\n            width: 100%;\n            left: auto;\n            right: auto;\n            top: auto;\n            bottom: auto;\n            justify-content: center;\n            margin-top: 40px;\n          }\n        }\n        \n        /* Phone Layout */\n        @media (max-width: 768px) {\n          :host {\n            height: 230px;\n            margin-top: 0;\n            padding: 30px 10px 0 20px;\n            background-image: none;\n          }\n          \n          .teaser-content {\n            align-items: flex-start;\n            height: 100%;\n          }\n          \n          .text-wrapper {\n            align-items: flex-start;\n            max-width: 100%;\n            padding-top: 0;\n            flex-shrink: 0;\n            position: relative;\n            z-index: 1;\n          }\n          \n          .mobile-break {\n            display: inline;\n          }\n\n          .headline-text {\n            font-size: 20px;\n            text-align: left;\n            white-space: normal;\n            line-height: 1.3;\n          }\n          \n          .subline-text {\n            font-size: 16px;\n            text-align: left;\n            white-space: normal;\n            margin: 8px 0 0 0;\n          }\n        }\n      </style>\n      <div class=\"teaser-container\">\n        <div class=\"teaser-content\">\n          <div class=\"text-wrapper\">\n            <h2 class=\"headline-text\">Mehr Geld für die<br class=\"mobile-break\"> schönen Dinge</h2>\n            <p class=\"subline-text\">Krankenkasse wechseln</p>\n          </div>\n          <div class=\"form-container\" role=\"search\" aria-label=\"Krankenversicherung Suchformular\">\n            <div class=\"form-field type-dropdown\" aria-label=\"Versicherungsart auswählen\">\n              <div class=\"field-label\">Aktuelle Versicherungsart</div>\n              <div class=\"field-value\" role=\"combobox\" aria-haspopup=\"listbox\" aria-expanded=\"false\">\n                <span class=\"type-label\">Gesetzlich krankenversichert</span>\n                <svg class=\"chevron type-chevron\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\">\n                  <polyline points=\"6 9 12 15 18 9\"></polyline>\n                </svg>\n              </div>\n              <div class=\"type-options\" role=\"listbox\" aria-label=\"Versicherungsarten\">\n                <div class=\"type-option\" data-value=\"by_law_or_joint_insured\" role=\"option\">Gesetzlich krankenversichert</div>\n                <div class=\"type-option\" data-value=\"private\" role=\"option\">Privat versichert</div>\n                <div class=\"type-option\" data-value=\"abroad\" role=\"option\">Im Ausland versichert</div>\n                <div class=\"type-option\" data-value=\"none\" role=\"option\">Nicht versichert</div>\n              </div>\n            </div>\n            \n            <div class=\"form-field insurer-field\" aria-label=\"Krankenkasse suchen\">\n              <div class=\"field-label\">Aktuelle Krankenkasse</div>\n              <input type=\"text\" \n                     class=\"insurer-input\" \n                     placeholder=\"bitte Krankenkasse eingeben\"\n                     autocomplete=\"off\"\n                     role=\"combobox\"\n                     aria-haspopup=\"listbox\"\n                     aria-expanded=\"false\"\n                     aria-label=\"Krankenkasse eingeben\"\n                     aria-autocomplete=\"list\">\n              <div class=\"insurer-dropdown\" role=\"listbox\" aria-label=\"Krankenkassen\"></div>\n            </div>\n            \n            <button class=\"cta-button\" aria-label=\"Krankenversicherung vergleichen\">Vergleichen</button>\n          </div>\n        </div>\n      </div>\n    `;\n    }\n}\n\nif (!import.meta.env.DEV) {\n    customElements.define('gkv-krankenkassenwechsel202607', GkvKrankenkassenwechselTeaserClient);\n}\n"],"mappings":"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"}