{"id":22,"date":"2022-12-04T11:37:50","date_gmt":"2022-12-04T10:37:50","guid":{"rendered":"https:\/\/blickpunkt-lokalsport.de\/?page_id=22"},"modified":"2026-06-02T20:46:33","modified_gmt":"2026-06-02T18:46:33","slug":"starseite","status":"publish","type":"page","link":"https:\/\/blickpunkt-lokalsport.de\/english\/","title":{"rendered":"kick-off"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"22\" class=\"elementor elementor-22\" data-elementor-settings=\"{&quot;element_pack_global_tooltip_width&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;element_pack_global_tooltip_width_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;element_pack_global_tooltip_width_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;element_pack_global_tooltip_padding&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;top&quot;:&quot;&quot;,&quot;right&quot;:&quot;&quot;,&quot;bottom&quot;:&quot;&quot;,&quot;left&quot;:&quot;&quot;,&quot;isLinked&quot;:true},&quot;element_pack_global_tooltip_padding_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;top&quot;:&quot;&quot;,&quot;right&quot;:&quot;&quot;,&quot;bottom&quot;:&quot;&quot;,&quot;left&quot;:&quot;&quot;,&quot;isLinked&quot;:true},&quot;element_pack_global_tooltip_padding_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;top&quot;:&quot;&quot;,&quot;right&quot;:&quot;&quot;,&quot;bottom&quot;:&quot;&quot;,&quot;left&quot;:&quot;&quot;,&quot;isLinked&quot;:true},&quot;element_pack_global_tooltip_border_radius&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;top&quot;:&quot;&quot;,&quot;right&quot;:&quot;&quot;,&quot;bottom&quot;:&quot;&quot;,&quot;left&quot;:&quot;&quot;,&quot;isLinked&quot;:true},&quot;element_pack_global_tooltip_border_radius_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;top&quot;:&quot;&quot;,&quot;right&quot;:&quot;&quot;,&quot;bottom&quot;:&quot;&quot;,&quot;left&quot;:&quot;&quot;,&quot;isLinked&quot;:true},&quot;element_pack_global_tooltip_border_radius_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;top&quot;:&quot;&quot;,&quot;right&quot;:&quot;&quot;,&quot;bottom&quot;:&quot;&quot;,&quot;left&quot;:&quot;&quot;,&quot;isLinked&quot;:true}}\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-13b72b2 e-con-full e-flex e-con e-parent\" data-id=\"13b72b2\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3ebc5da elementor-widget elementor-widget-bdt-slideshow\" data-id=\"3ebc5da\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"bdt-slideshow.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div data-bdt-slideshow=\"{&quot;animation&quot;:&quot;fade&quot;,&quot;ratio&quot;:&quot;3:2&quot;,&quot;min-height&quot;:500,&quot;autoplay&quot;:true,&quot;autoplay-interval&quot;:10000,&quot;pause-on-hover&quot;:true,&quot;velocity&quot;:1}\" class=\"bdt-arrows-align-top-right\">\n\t\t\t<div class=\"bdt-position-relative bdt-visible-toggle\">\n\t\t\t\t\t\t\t\t<ul class=\"bdt-slideshow-items\" >\n\t\t\t\t\t<li class=\"bdt-slideshow-item elementor-repeater-item-8eaaf82\">\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/blickpunkt-lokalsport.de\/wp-content\/uploads\/2026\/06\/20260602_U14_HeepSchil_0158.jpg\" alt=\"Anpfiff\" class=\"bdt-cover\" data-bdt-cover=\"\">\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"bdt-overlay-default bdt-position-cover bdt-blend-soft-light\"><\/div>\n\t\t\t\t\n\t\t\t\t\t\t<div class=\"bdt-slideshow-content-wrapper bdt-position-z-index bdt-position-bottom-right bdt-position-large bdt-text-left\">\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<h4 class=\"bdt-slideshow-pre-title bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;200, -200&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\t\t02.06.2026 | U14\t\t\t\t\t<\/h4>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<span class=\"bdt-slideshow-title bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;300, -300&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\t\tSieg Heepen\t\t\t\t\t<\/span>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<h4 class=\"bdt-slideshow-post-title bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;350, -350&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\t\tSV Heepen - VfL Schildesche 4:1\t\t\t\t\t<\/h4>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div class=\"bdt-slideshow-text\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;500, -500&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\tIm Heimspiel am Dienstagabend hat der SV Heepen den VfL Schildesche mit 4:1 geschlagen. Neben einem guten Fu\u00dfballspiel waren auch unsere Kamerakids wieder aktiv dabei.\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<a class=\"bdt-slideshow-button bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;-150, 150&quot;,&quot;y&quot;:&quot;0, 0&quot;}\" href=\"https:\/\/blickpunkt-lokalsport.de\/sv-heepen\/\">\n\t\t\t\t\t\tZu den Bildern\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"bdt-button-icon-align-right bdt-slideshow-button-icon-right\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fa-fw fas fa-camera-retro\"><\/i>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<li class=\"bdt-slideshow-item elementor-repeater-item-89ad6fb\">\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/blickpunkt-lokalsport.de\/wp-content\/uploads\/2026\/05\/20260531_U19_EinFicht_0274-scaled.jpg\" alt=\"Anpfiff\" class=\"bdt-cover\" data-bdt-cover=\"\">\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"bdt-overlay-default bdt-position-cover bdt-blend-soft-light\"><\/div>\n\t\t\t\t\n\t\t\t\t\t\t<div class=\"bdt-slideshow-content-wrapper bdt-position-z-index bdt-position-bottom-right bdt-position-large bdt-text-left\">\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<h4 class=\"bdt-slideshow-pre-title bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;200, -200&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\t\t31.05.2026 | U19\t\t\t\t\t<\/h4>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<span class=\"bdt-slideshow-title bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;300, -300&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\t\tEintracht ist Meister\t\t\t\t\t<\/span>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<h4 class=\"bdt-slideshow-post-title bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;350, -350&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\t\tTuS Eintracht - VfB Fichte II 7:0\t\t\t\t\t<\/h4>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div class=\"bdt-slideshow-text\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;500, -500&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\tDie U19 der TuS Eintracht hat es geschafft: Nach einem sehr einseitigem Spiel gegen den Nachbarn von der Ru\u00dfheide sicherte sich die Mannschaft die Meisterschaft in der Kreisliga A.\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<a class=\"bdt-slideshow-button bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;-150, 150&quot;,&quot;y&quot;:&quot;0, 0&quot;}\" href=\"https:\/\/blickpunkt-lokalsport.de\/tus-eintracht-bielefelefeld-e-v\/\">\n\t\t\t\t\t\tZu den Bildern\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"bdt-button-icon-align-right bdt-slideshow-button-icon-right\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fa-fw fas fa-camera-retro\"><\/i>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<li class=\"bdt-slideshow-item elementor-repeater-item-f668eba\">\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/blickpunkt-lokalsport.de\/wp-content\/uploads\/2026\/05\/20260531_Herren_WellTuerk_0039.jpg\" alt=\"Anpfiff\" class=\"bdt-cover\" data-bdt-cover=\"\">\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"bdt-overlay-default bdt-position-cover bdt-blend-soft-light\"><\/div>\n\t\t\t\t\n\t\t\t\t\t\t<div class=\"bdt-slideshow-content-wrapper bdt-position-z-index bdt-position-bottom-right bdt-position-large bdt-text-left\">\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<h4 class=\"bdt-slideshow-pre-title bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;200, -200&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\t\t31.05.2026 | Herren\t\t\t\t\t<\/h4>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<span class=\"bdt-slideshow-title bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;300, -300&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\t\tVfR mit Niederlage\t\t\t\t\t<\/span>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<h4 class=\"bdt-slideshow-post-title bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;350, -350&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\t\tVfR Wellensiek - T\u00fcrkSport 0:4\t\t\t\t\t<\/h4>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div class=\"bdt-slideshow-text\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;500, -500&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\tDie Herren des VfR Wellensiek verabschieden sich mit einer Heimniederlage aus der laufenden Saison Gegen den FC T\u00fcrkSport gab es eine 0:4-Niederlage.\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<a class=\"bdt-slideshow-button bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;-150, 150&quot;,&quot;y&quot;:&quot;0, 0&quot;}\" href=\"https:\/\/blickpunkt-lokalsport.de\/vfr-wellensiek\/\">\n\t\t\t\t\t\tZu den Bildern\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"bdt-button-icon-align-right bdt-slideshow-button-icon-right\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fa-fw fas fa-camera-retro\"><\/i>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<li class=\"bdt-slideshow-item elementor-repeater-item-b9524c5\">\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/blickpunkt-lokalsport.de\/wp-content\/uploads\/2026\/05\/20260530_U15_WellHeep_0029-scaled.jpg\" alt=\"Anpfiff\" class=\"bdt-cover\" data-bdt-cover=\"\">\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"bdt-overlay-default bdt-position-cover bdt-blend-soft-light\"><\/div>\n\t\t\t\t\n\t\t\t\t\t\t<div class=\"bdt-slideshow-content-wrapper bdt-position-z-index bdt-position-bottom-right bdt-position-large bdt-text-left\">\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<h4 class=\"bdt-slideshow-pre-title bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;200, -200&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\t\t30.05.2026 | U14\t\t\t\t\t<\/h4>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<span class=\"bdt-slideshow-title bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;300, -300&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\t\tVfR dreht Spiel\t\t\t\t\t<\/span>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<h4 class=\"bdt-slideshow-post-title bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;350, -350&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\t\tVfR Wellensiek - SV Heepen 5:3\t\t\t\t\t<\/h4>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div class=\"bdt-slideshow-text\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;500, -500&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\tDer SV Heepne lag schon mit 3:0 in Front, als der VfR erst richtig aufdrehte. Die Gastgeber wollen das nicht auf sich sitzen lassen und drehten die Partie in H\u00e4lfte zwei zum 5:3.\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<a class=\"bdt-slideshow-button bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;-150, 150&quot;,&quot;y&quot;:&quot;0, 0&quot;}\" href=\"https:\/\/blickpunkt-lokalsport.de\/vfr-wellensiek\/\">\n\t\t\t\t\t\tZu den Bildern\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"bdt-button-icon-align-right bdt-slideshow-button-icon-right\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fa-fw fas fa-camera-retro\"><\/i>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<li class=\"bdt-slideshow-item elementor-repeater-item-525ae05\">\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/blickpunkt-lokalsport.de\/wp-content\/uploads\/2026\/05\/20260530_U15_StukPad_0012.jpg\" alt=\"Anpfiff\" class=\"bdt-cover\" data-bdt-cover=\"\">\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"bdt-overlay-default bdt-position-cover bdt-blend-soft-light\"><\/div>\n\t\t\t\t\n\t\t\t\t\t\t<div class=\"bdt-slideshow-content-wrapper bdt-position-z-index bdt-position-bottom-right bdt-position-large bdt-text-left\">\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<h4 class=\"bdt-slideshow-pre-title bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;200, -200&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\t\t30.05.2026 | U15\t\t\t\t\t<\/h4>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<span class=\"bdt-slideshow-title bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;300, -300&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\t\tNiederlage f\u00fcr VfB\t\t\t\t\t<\/span>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<h4 class=\"bdt-slideshow-post-title bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;350, -350&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\t\tVfB Schlo\u00df Holte - Heide Paderborn 1:4\t\t\t\t\t<\/h4>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div class=\"bdt-slideshow-text\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;500, -500&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\tIn der Landesliga standen sich der VfB Schlo\u00df Holte und Heide Paderborn gegen\u00fcber Die G\u00e4ste spielten stark und das spiegelt sich auch im Ergebnis wieder.\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<a class=\"bdt-slideshow-button bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;-150, 150&quot;,&quot;y&quot;:&quot;0, 0&quot;}\" href=\"https:\/\/blickpunkt-lokalsport.de\/vfb-schloss-holte\/\">\n\t\t\t\t\t\tZu den Bildern\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"bdt-button-icon-align-right bdt-slideshow-button-icon-right\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fa-fw fas fa-camera-retro\"><\/i>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<li class=\"bdt-slideshow-item elementor-repeater-item-cae2e77\">\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/blickpunkt-lokalsport.de\/wp-content\/uploads\/2026\/05\/20260530_U14_StukKau_0052-scaled.jpg\" alt=\"Anpfiff\" class=\"bdt-cover\" data-bdt-cover=\"\">\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"bdt-overlay-default bdt-position-cover bdt-blend-soft-light\"><\/div>\n\t\t\t\t\n\t\t\t\t\t\t<div class=\"bdt-slideshow-content-wrapper bdt-position-z-index bdt-position-bottom-right bdt-position-large bdt-text-left\">\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<h4 class=\"bdt-slideshow-pre-title bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;200, -200&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\t\t30.05.2026 | U14\t\t\t\t\t<\/h4>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<span class=\"bdt-slideshow-title bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;300, -300&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\t\tLucky Punch\t\t\t\t\t<\/span>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<h4 class=\"bdt-slideshow-post-title bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;350, -350&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\t\tVfB Schlo\u00df Holte - FC Kaunitz 3:2\t\t\t\t\t<\/h4>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div class=\"bdt-slideshow-text\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;500, -500&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\tDer VfB Schlo\u00df Holte hat den FC Kaunitz empfangen. Im Spitzenspiel der Kreisliga B konnten sich die Gastgeber nach 1:2-R\u00fcckstand mit 3:2 durchsetzen.\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<a class=\"bdt-slideshow-button bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;-150, 150&quot;,&quot;y&quot;:&quot;0, 0&quot;}\" href=\"https:\/\/blickpunkt-lokalsport.de\/vfb-schloss-holte\/\">\n\t\t\t\t\t\tZu den Bildern\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"bdt-button-icon-align-right bdt-slideshow-button-icon-right\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fa-fw fas fa-camera-retro\"><\/i>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<li class=\"bdt-slideshow-item elementor-repeater-item-c75e111\">\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/blickpunkt-lokalsport.de\/wp-content\/uploads\/2026\/05\/20260528_U14_SteinAms_0141-scaled.jpg\" alt=\"Anpfiff\" class=\"bdt-cover\" data-bdt-cover=\"\">\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"bdt-overlay-default bdt-position-cover bdt-blend-soft-light\"><\/div>\n\t\t\t\t\n\t\t\t\t\t\t<div class=\"bdt-slideshow-content-wrapper bdt-position-z-index bdt-position-bottom-right bdt-position-large bdt-text-left\">\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<h4 class=\"bdt-slideshow-pre-title bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;200, -200&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\t\t28.05.2026 | U15\t\t\t\t\t<\/h4>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<span class=\"bdt-slideshow-title bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;300, -300&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\t\tEin Punkt f\u00fcr alle\t\t\t\t\t<\/span>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<h4 class=\"bdt-slideshow-post-title bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;350, -350&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\t\tSpvg Steinhagen - TSV Amshausen 1:1\t\t\t\t\t<\/h4>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div class=\"bdt-slideshow-text\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;500, -500&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\tEin Punkt, der keinem wirklich hilft und dennoch gerecht ist. Der TSV Amshausen ging mit 1:0 in F\u00fchrung, kurz vor Schluss glichen die Hausherren aus. \nIhr wollt auch hinter die Kamera? Sprecht uns an!\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<a class=\"bdt-slideshow-button bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;-150, 150&quot;,&quot;y&quot;:&quot;0, 0&quot;}\" href=\"https:\/\/blickpunkt-lokalsport.de\/spvg-steinhagen\/\">\n\t\t\t\t\t\tZu den Bildern\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"bdt-button-icon-align-right bdt-slideshow-button-icon-right\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fa-fw fas fa-camera-retro\"><\/i>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<li class=\"bdt-slideshow-item elementor-repeater-item-8bdeae1\">\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/blickpunkt-lokalsport.de\/wp-content\/uploads\/2026\/05\/20260525_U17_Pfingstturnier_Tag03_0775-scaled.jpg\" alt=\"Anpfiff\" class=\"bdt-cover\" data-bdt-cover=\"\">\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"bdt-overlay-default bdt-position-cover bdt-blend-soft-light\"><\/div>\n\t\t\t\t\n\t\t\t\t\t\t<div class=\"bdt-slideshow-content-wrapper bdt-position-z-index bdt-position-bottom-right bdt-position-large bdt-text-left\">\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<h4 class=\"bdt-slideshow-pre-title bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;200, -200&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\t\t25.05.2026 | U17\t\t\t\t\t<\/h4>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<span class=\"bdt-slideshow-title bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;300, -300&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\t\tSC Verl gewinnt U17 Turnier\t\t\t\t\t<\/span>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<h4 class=\"bdt-slideshow-post-title bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;350, -350&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\t\tU17 Pfingstturnier VfL Theesen\t\t\t\t\t<\/h4>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div class=\"bdt-slideshow-text\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;500, -500&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\tWir gratulieren dem SC Verl zum Gewinn des Pfingstturniers! Hier findet ihr alle Bilder vom diesj\u00e4hrigen U17-Pfingstturnier in Theesen. Alle Bilder von heute (Montag) sind online. \nIhr wollt auch hinter die Kamera? Sprecht uns an!\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<a class=\"bdt-slideshow-button bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;-150, 150&quot;,&quot;y&quot;:&quot;0, 0&quot;}\" href=\"https:\/\/blickpunkt-lokalsport.de\/theesenpfingsten\/\">\n\t\t\t\t\t\tZu den Bildern\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"bdt-button-icon-align-right bdt-slideshow-button-icon-right\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fa-fw fas fa-camera-retro\"><\/i>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<li class=\"bdt-slideshow-item elementor-repeater-item-6ea4eba\">\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/blickpunkt-lokalsport.de\/wp-content\/uploads\/2026\/05\/20260521_U17_SennJoell_0076-scaled.jpg\" alt=\"Anpfiff\" class=\"bdt-cover\" data-bdt-cover=\"\">\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"bdt-overlay-default bdt-position-cover bdt-blend-soft-light\"><\/div>\n\t\t\t\t\n\t\t\t\t\t\t<div class=\"bdt-slideshow-content-wrapper bdt-position-z-index bdt-position-bottom-right bdt-position-large bdt-text-left\">\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<h4 class=\"bdt-slideshow-pre-title bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;200, -200&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\t\t21.05.2026 | U16\t\t\t\t\t<\/h4>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<span class=\"bdt-slideshow-title bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;300, -300&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\t\tNiederlage II\t\t\t\t\t<\/span>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<h4 class=\"bdt-slideshow-post-title bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;350, -350&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\t\tTuS 08 Senne I - TuS J\u00f6llenbeck 2:6\t\t\t\t\t<\/h4>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div class=\"bdt-slideshow-text\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;500, -500&quot;,&quot;y&quot;:&quot;0, 0&quot;}\">\n\t\t\t\t\tIm Heimspiel zwischen TuS 08 Senne I und dem TuS J\u00f6llenbeck waren die G\u00e4ste deutlich \u00fcberlegen. Die J\u00fcrmker zogen am Ende mit 2:6 davon.\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t<a class=\"bdt-slideshow-button bdt-display-inline-block\" bdt-slideshow-parallax=\"{&quot;x&quot;:&quot;-150, 150&quot;,&quot;y&quot;:&quot;0, 0&quot;}\" href=\"https:\/\/blickpunkt-lokalsport.de\/tus-08-senne-i\/\">\n\t\t\t\t\t\tZu den Bildern\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"bdt-button-icon-align-right bdt-slideshow-button-icon-right\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fa-fw fas fa-camera-retro\"><\/i>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"bdt-position-z-index bdt-position-top-right bdt-visible@m\">\n\t\t\t<div class=\"bdt-arrows-container bdt-slidenav-container\">\n\t\t\t\t<a href=\"\" class=\"bdt-navigation-prev bdt-slidenav-previous bdt-icon bdt-slidenav\" data-bdt-slideshow-item=\"previous\">\n\t\t\t\t\t<i class=\"ep-icon-arrow-left-4\" aria-hidden=\"true\"><\/i>\n\t\t\t\t<\/a>\n\t\t\t\t<a href=\"\" class=\"bdt-navigation-next bdt-slidenav-next bdt-icon bdt-slidenav\" data-bdt-slideshow-item=\"next\">\n\t\t\t\t\t<i class=\"ep-icon-arrow-right-4\" aria-hidden=\"true\"><\/i>\n\t\t\t\t<\/a>\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b0a3b73 e-con-full e-flex e-con e-parent\" data-id=\"b0a3b73\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a04e370 elementor-widget__width-initial elementor-widget elementor-widget-html\" data-id=\"a04e370\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\r\n  @import url('https:\/\/fonts.googleapis.com\/css2?family=Oswald:wght@500;600;700&family=Inter:wght@400;500;600;700;800&display=swap');\r\n\r\n  :root {\r\n    --nl-bg: #e5ebe6;\r\n    --nl-card: #f8f9fa;\r\n    --nl-text: #151b22;\r\n    --nl-text-soft: #67727d;\r\n    --nl-text-faint: #88929d;\r\n    --nl-border: rgba(21, 27, 34, 0.08);\r\n    --nl-border-strong: rgba(77, 134, 103, 0.12);\r\n\r\n    --nl-confirmed: #4d8667;\r\n    --nl-confirmed-dark: #355845;\r\n\r\n    --nl-soon: #b66a1e;\r\n    --nl-soon-dark: #8a4d12;\r\n\r\n    --nl-running: #8e2238;\r\n    --nl-running-dark: #7d2134;\r\n  }\r\n\r\n  #bp-countdown {\r\n    box-sizing: border-box;\r\n    width: 100%;\r\n    max-width: 1250px;\r\n    margin: 0.5rem auto;\r\n    padding: 0.95rem 1rem 0.9rem;\r\n    color: var(--nl-text);\r\n    border: 1px solid rgba(77, 134, 103, 0.12);\r\n    font-family: \"Inter\", system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Arial, sans-serif;\r\n    transition:\r\n      background 0.25s ease,\r\n      border-color 0.25s ease,\r\n      box-shadow 0.25s ease;\r\n  }\r\n\r\n  #bp-countdown.bp-state-normal {\r\n    background: #e5ebe6;\r\n    border-color: rgba(77, 134, 103, 0.14);\r\n  }\r\n\r\n  #bp-countdown.bp-state-soon {\r\n    background: #efe6d9;\r\n    border-color: rgba(182, 106, 30, 0.22);\r\n  }\r\n\r\n  #bp-countdown.bp-state-urgent {\r\n    background: #efe1e4;\r\n    border-color: rgba(142, 34, 56, 0.22);\r\n  }\r\n\r\n  #bp-countdown .bp-shell {\r\n    display: grid;\r\n    grid-template-columns: minmax(260px, 1.1fr) minmax(300px, 0.95fr) minmax(220px, 0.9fr);\r\n    gap: 1rem;\r\n    align-items: center;\r\n  }\r\n\r\n  #bp-countdown .bp-intro {\r\n    display: flex;\r\n    flex-direction: column;\r\n    gap: 0.18rem;\r\n    min-width: 0;\r\n  }\r\n\r\n  #bp-countdown .bp-label {\r\n    font-size: 0.64rem;\r\n    font-weight: 800;\r\n    letter-spacing: 0.18em;\r\n    text-transform: uppercase;\r\n    color: #7c8792;\r\n    transition: color 0.2s ease;\r\n  }\r\n\r\n  #bp-countdown .bp-title {\r\n    font-family: \"Oswald\", sans-serif;\r\n    font-size: 1.08rem;\r\n    line-height: 1.02;\r\n    letter-spacing: 0.03em;\r\n    text-transform: uppercase;\r\n    margin: 0;\r\n    transition: color 0.2s ease;\r\n    color: #111827;\r\n  }\r\n\r\n  #bp-countdown.bp-state-normal .bp-title {\r\n    color: var(--nl-confirmed-dark);\r\n  }\r\n\r\n  #bp-countdown.bp-state-soon .bp-title {\r\n    color: var(--nl-soon-dark);\r\n  }\r\n\r\n  #bp-countdown.bp-state-urgent .bp-title {\r\n    color: var(--nl-running-dark);\r\n  }\r\n\r\n  #bp-countdown .bp-subtitle {\r\n    font-size: 0.79rem;\r\n    color: var(--nl-text-soft);\r\n    line-height: 1.35;\r\n  }\r\n\r\n  #bp-countdown .bp-subtitle a {\r\n    color: #8e2238;\r\n    text-decoration: none;\r\n    font-weight: 700;\r\n    border-bottom: 1px solid rgba(142, 34, 56, 0.28);\r\n    transition: color 0.18s ease, border-color 0.18s ease;\r\n  }\r\n\r\n  #bp-countdown .bp-subtitle a:hover {\r\n    color: #6e1729;\r\n    border-color: rgba(110, 23, 41, 0.58);\r\n  }\r\n\r\n  #bp-countdown .bp-timer-wrap {\r\n    display: flex;\r\n    flex-direction: column;\r\n    gap: 0.28rem;\r\n    min-width: 0;\r\n  }\r\n\r\n  #bp-countdown .bp-timer-label {\r\n    font-size: 0.64rem;\r\n    font-weight: 800;\r\n    letter-spacing: 0.16em;\r\n    text-transform: uppercase;\r\n    color: var(--nl-text-faint);\r\n    transition: color 0.2s ease;\r\n  }\r\n\r\n  #bp-countdown.bp-state-normal .bp-timer-label {\r\n    color: #64806f;\r\n  }\r\n\r\n  #bp-countdown.bp-state-soon .bp-timer-label {\r\n    color: #9a6a3f;\r\n  }\r\n\r\n  #bp-countdown.bp-state-urgent .bp-timer-label {\r\n    color: #915362;\r\n  }\r\n\r\n  #bp-countdown .bp-timer {\r\n    display: flex;\r\n    align-items: center;\r\n    flex-wrap: nowrap;\r\n    gap: 0.28rem;\r\n    font-variant-numeric: tabular-nums;\r\n  }\r\n\r\n  #bp-countdown .bp-segment {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 0.22rem;\r\n  }\r\n\r\n  #bp-countdown .bp-value {\r\n    min-width: 42px;\r\n    padding: 0.34rem 0.5rem;\r\n    border: 1px solid rgba(21, 27, 34, 0.10);\r\n    background: var(--nl-card);\r\n    color: #111827;\r\n    font-weight: 800;\r\n    font-size: 0.92rem;\r\n    line-height: 1;\r\n    text-align: center;\r\n    transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease;\r\n  }\r\n\r\n  #bp-countdown .bp-unit {\r\n    font-size: 0.62rem;\r\n    font-weight: 800;\r\n    letter-spacing: 0.1em;\r\n    text-transform: uppercase;\r\n    color: var(--nl-text-faint);\r\n    min-width: 30px;\r\n    transition: color 0.2s ease;\r\n  }\r\n\r\n  #bp-countdown .bp-info {\r\n    display: flex;\r\n    flex-direction: column;\r\n    align-items: flex-end;\r\n    gap: 0.3rem;\r\n    min-width: 0;\r\n  }\r\n\r\n  #bp-countdown .bp-info-line {\r\n    font-size: 0.75rem;\r\n    color: var(--nl-text-soft);\r\n    line-height: 1.35;\r\n    text-align: right;\r\n    transition: color 0.2s ease;\r\n  }\r\n\r\n  #bp-countdown .bp-info-line strong {\r\n    color: #17212b;\r\n    font-weight: 700;\r\n  }\r\n\r\n  #bp-weekend-info.fade-out {\r\n    opacity: 0;\r\n    transition: opacity 0.25s ease;\r\n  }\r\n\r\n  #bp-countdown .bp-window {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    min-height: 22px;\r\n    padding: 0.14rem 0.5rem;\r\n    font-size: 0.64rem;\r\n    font-weight: 800;\r\n    text-transform: uppercase;\r\n    letter-spacing: 0.07em;\r\n    border: 1px solid rgba(21, 27, 34, 0.08);\r\n    color: #55616d;\r\n    background: #eef2f4;\r\n    white-space: nowrap;\r\n    transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease;\r\n  }\r\n\r\n  #bp-countdown.bp-state-normal .bp-value,\r\n  #bp-countdown.bp-state-normal .bp-window {\r\n    background: rgba(77, 134, 103, 0.08);\r\n    border-color: rgba(77, 134, 103, 0.20);\r\n    color: var(--nl-confirmed-dark);\r\n  }\r\n\r\n  @supports (background: color-mix(in srgb, white 90%, black 10%)) {\r\n    #bp-countdown.bp-state-normal .bp-value,\r\n    #bp-countdown.bp-state-normal .bp-window {\r\n      background: color-mix(in srgb, var(--nl-confirmed) 10%, #ffffff);\r\n      border-color: color-mix(in srgb, var(--nl-confirmed) 24%, #d9e1e5);\r\n      color: var(--nl-confirmed-dark);\r\n    }\r\n  }\r\n\r\n  #bp-countdown.bp-state-soon .bp-value,\r\n  #bp-countdown.bp-state-soon .bp-window {\r\n    background: rgba(182, 106, 30, 0.10);\r\n    border-color: rgba(182, 106, 30, 0.24);\r\n    color: var(--nl-soon-dark);\r\n  }\r\n\r\n  @supports (background: color-mix(in srgb, white 90%, black 10%)) {\r\n    #bp-countdown.bp-state-soon .bp-value,\r\n    #bp-countdown.bp-state-soon .bp-window {\r\n      background: color-mix(in srgb, var(--nl-soon) 12%, #ffffff);\r\n      border-color: color-mix(in srgb, var(--nl-soon) 28%, #d9e1e5);\r\n      color: var(--nl-soon-dark);\r\n    }\r\n  }\r\n\r\n  #bp-countdown.bp-state-urgent .bp-value,\r\n  #bp-countdown.bp-state-urgent .bp-window {\r\n    background: rgba(142, 34, 56, 0.10);\r\n    border-color: rgba(142, 34, 56, 0.24);\r\n    color: var(--nl-running-dark);\r\n  }\r\n\r\n  @supports (background: color-mix(in srgb, white 90%, black 10%)) {\r\n    #bp-countdown.bp-state-urgent .bp-value,\r\n    #bp-countdown.bp-state-urgent .bp-window {\r\n      background: color-mix(in srgb, var(--nl-running) 12%, #ffffff);\r\n      border-color: color-mix(in srgb, var(--nl-running) 26%, #d9e1e5);\r\n      color: var(--nl-running-dark);\r\n    }\r\n  }\r\n\r\n  #bp-countdown.bp-state-normal .bp-unit,\r\n  #bp-countdown.bp-state-normal .bp-info-line {\r\n    color: #5f7368;\r\n  }\r\n\r\n  #bp-countdown.bp-state-soon .bp-unit,\r\n  #bp-countdown.bp-state-soon .bp-info-line {\r\n    color: #8a6647;\r\n  }\r\n\r\n  #bp-countdown.bp-state-urgent .bp-unit,\r\n  #bp-countdown.bp-state-urgent .bp-info-line {\r\n    color: #7f4a57;\r\n  }\r\n\r\n  @media (max-width: 980px) {\r\n    #bp-countdown .bp-shell {\r\n      grid-template-columns: 1fr;\r\n      gap: 0.85rem;\r\n    }\r\n\r\n    #bp-countdown .bp-info {\r\n      align-items: flex-start;\r\n    }\r\n\r\n    #bp-countdown .bp-info-line {\r\n      text-align: left;\r\n    }\r\n  }\r\n\r\n  @media (max-width: 640px) {\r\n    #bp-countdown {\r\n      padding: 0.85rem 0.8rem;\r\n    }\r\n\r\n    #bp-countdown .bp-title {\r\n      font-size: 1rem;\r\n    }\r\n\r\n    #bp-countdown .bp-timer-wrap {\r\n      overflow-x: auto;\r\n      -webkit-overflow-scrolling: touch;\r\n    }\r\n\r\n    #bp-countdown .bp-timer {\r\n      flex-wrap: nowrap;\r\n      gap: 0.32rem;\r\n      width: max-content;\r\n      min-width: 100%;\r\n    }\r\n\r\n    #bp-countdown .bp-segment {\r\n      min-width: auto;\r\n      flex: 0 0 auto;\r\n    }\r\n\r\n    #bp-countdown .bp-value {\r\n      min-width: 38px;\r\n      padding: 0.32rem 0.42rem;\r\n      font-size: 0.88rem;\r\n    }\r\n\r\n    #bp-countdown .bp-unit {\r\n      min-width: auto;\r\n      font-size: 0.58rem;\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<div id=\"bp-countdown\" class=\"bp-state-normal\">\r\n  <div class=\"bp-shell\">\r\n    <div class=\"bp-intro\">\r\n      <div class=\"bp-label\">Fotow\u00fcnsche<\/div>\r\n      <h3 class=\"bp-title\">N\u00e4chste Einreichungsfrist<\/h3>\r\n      <div class=\"bp-subtitle\">\r\n        W\u00fcnsche k\u00f6nnen bis zur n\u00e4chsten Frist eingereicht werden \u00fcber\r\n        <a href=\"https:\/\/kalender.digital\/b\/1fdef775bc72a60e\/961\" target=\"_blank\" rel=\"noopener noreferrer\">kalender.digital<\/a>.\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"bp-timer-wrap\">\r\n      <div class=\"bp-timer-label\">Frist endet in<\/div>\r\n      <div class=\"bp-timer\">\r\n        <span class=\"bp-segment\">\r\n          <span class=\"bp-value\" id=\"bp-days\">00<\/span>\r\n          <span class=\"bp-unit\">Tage<\/span>\r\n        <\/span>\r\n        <span class=\"bp-segment\">\r\n          <span class=\"bp-value\" id=\"bp-hours\">00<\/span>\r\n          <span class=\"bp-unit\">Std<\/span>\r\n        <\/span>\r\n        <span class=\"bp-segment\">\r\n          <span class=\"bp-value\" id=\"bp-minutes\">00<\/span>\r\n          <span class=\"bp-unit\">Min<\/span>\r\n        <\/span>\r\n        <span class=\"bp-segment\">\r\n          <span class=\"bp-value\" id=\"bp-seconds\">00<\/span>\r\n          <span class=\"bp-unit\">Sek<\/span>\r\n        <\/span>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"bp-info\">\r\n      <div id=\"bp-weekend-info\" class=\"bp-info-line\"><\/div>\r\n      <div id=\"bp-deadline-note\" class=\"bp-info-line\">Einreichung gilt bis Fr., 18 Uhr<\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n(function() {\r\n  const blockedWeekends = [\r\n    \"04.04.2026-05.04.2026\",\r\n    \"23.05.2026-24.05.2026\"\r\n  ];\r\n\r\n  const blockedDays = [\r\n    \"01.05.2026\"\r\n  ];\r\n\r\n  const countdownEl = document.getElementById(\"bp-countdown\");\r\n\r\n  function formatDateWithDay(date) {\r\n    return date.toLocaleDateString(\"de-DE\", {\r\n      weekday: \"short\",\r\n      day: \"2-digit\",\r\n      month: \"2-digit\"\r\n    }).replace(\".\", \"\");\r\n  }\r\n\r\n  function formatDeadlineDate(date) {\r\n    return date.toLocaleDateString(\"de-DE\", {\r\n      weekday: \"short\",\r\n      day: \"2-digit\",\r\n      month: \"2-digit\"\r\n    }).replace(\".\", \"\");\r\n  }\r\n\r\n  function parseGermanDate(str) {\r\n    const [day, month, year] = str.split(\".\");\r\n    return new Date(Number(year), Number(month) - 1, Number(day), 0, 0, 0, 0);\r\n  }\r\n\r\n  function parseWeekendRange(rangeStr) {\r\n    const [startStr, endStr] = rangeStr.split(\"-\");\r\n    const start = parseGermanDate(startStr);\r\n    const end = parseGermanDate(endStr);\r\n    return { start, end };\r\n  }\r\n\r\n  function isBlockedSingleDay(date) {\r\n    return blockedDays.some(dStr => {\r\n      const d = parseGermanDate(dStr);\r\n      return d.getTime() === date.getTime();\r\n    });\r\n  }\r\n\r\n  function isBlockedWholeWeekend(saturday, sunday) {\r\n    return blockedWeekends.some(rangeStr => {\r\n      const { start, end } = parseWeekendRange(rangeStr);\r\n      return (\r\n        (saturday >= start && saturday <= end) ||\r\n        (sunday >= start && sunday <= end)\r\n      );\r\n    });\r\n  }\r\n\r\n  function isBlockedDate(date) {\r\n    if (isBlockedSingleDay(date)) return true;\r\n\r\n    const saturday = new Date(date);\r\n    const dow = date.getDay();\r\n    const offsetToSaturday = (6 - dow + 7) % 7;\r\n    saturday.setDate(date.getDate() + offsetToSaturday);\r\n\r\n    const sunday = new Date(saturday);\r\n    sunday.setDate(saturday.getDate() + 1);\r\n\r\n    if (isBlockedWholeWeekend(saturday, sunday)) return true;\r\n\r\n    return false;\r\n  }\r\n\r\n  function getWeekendRange(offsetWeeks = 0) {\r\n    const now = new Date();\r\n    const monday = new Date(now);\r\n    monday.setDate(monday.getDate() - ((monday.getDay() + 6) % 7) + offsetWeeks * 7);\r\n\r\n    let saturday = new Date(monday);\r\n    saturday.setDate(monday.getDate() + 5);\r\n\r\n    let sunday = new Date(monday);\r\n    sunday.setDate(monday.getDate() + 6);\r\n\r\n    let safety = 0;\r\n    while (isBlockedWholeWeekend(saturday, sunday) && safety < 20) {\r\n      saturday.setDate(saturday.getDate() + 7);\r\n      sunday.setDate(sunday.getDate() + 7);\r\n      safety++;\r\n    }\r\n\r\n    const parts = [];\r\n\r\n    if (!isBlockedSingleDay(saturday)) parts.push(formatDateWithDay(saturday));\r\n    if (!isBlockedSingleDay(sunday)) parts.push(formatDateWithDay(sunday));\r\n\r\n    if (parts.length === 0) {\r\n      return `${formatDateWithDay(saturday)} \u2013 ${formatDateWithDay(sunday)}`;\r\n    } else if (parts.length === 2) {\r\n      return `${parts[0]} \u2013 ${parts[1]}`;\r\n    }\r\n\r\n    return parts[0];\r\n  }\r\n\r\n  function isThisWeekendPhase() {\r\n    const now = new Date();\r\n    const dow = now.getDay();\r\n    const hour = now.getHours();\r\n\r\n    if (dow >= 1 && dow <= 4) return true;\r\n    if (dow === 5 && hour < 18) return true;\r\n    return false;\r\n  }\r\n\r\n  function getNextUsableFriday18(fromDate = new Date()) {\r\n    const result = new Date(fromDate);\r\n    const targetDow = 5;\r\n    const currentDow = result.getDay();\r\n    let diffDays = targetDow - currentDow;\r\n\r\n    if (diffDays < 0) diffDays += 7;\r\n\r\n    result.setDate(result.getDate() + diffDays);\r\n    result.setHours(18, 0, 0, 0);\r\n\r\n    if (result <= fromDate) {\r\n      result.setDate(result.getDate() + 7);\r\n    }\r\n\r\n    let safety = 0;\r\n    while (isBlockedDate(result) && safety < 30) {\r\n      result.setDate(result.getDate() + 7);\r\n      safety++;\r\n    }\r\n\r\n    return result;\r\n  }\r\n\r\n  const info = document.getElementById(\"bp-weekend-info\");\r\n  const deadlineNoteEl = document.getElementById(\"bp-deadline-note\");\r\n  let lastPhase = null;\r\n\r\n  let target = getNextUsableFriday18(new Date());\r\n\r\n  if (deadlineNoteEl) {\r\n    deadlineNoteEl.textContent =\r\n      \"Einreichung gilt bis \" + formatDeadlineDate(target) + \", 18 Uhr\";\r\n  }\r\n\r\n  function updateCountdownState(diffMs) {\r\n    if (!countdownEl) return;\r\n\r\n    countdownEl.classList.remove(\"bp-state-normal\", \"bp-state-soon\", \"bp-state-urgent\");\r\n\r\n    if (diffMs <= 6 * 60 * 60 * 1000) {\r\n      countdownEl.classList.add(\"bp-state-urgent\");\r\n    } else if (diffMs <= 24 * 60 * 60 * 1000) {\r\n      countdownEl.classList.add(\"bp-state-soon\");\r\n    } else {\r\n      countdownEl.classList.add(\"bp-state-normal\");\r\n    }\r\n  }\r\n\r\n  function updateWeekendInfo(initial = false) {\r\n    const currentPhase = isThisWeekendPhase() ? \"this\" : \"next\";\r\n    if (currentPhase === lastPhase && !initial) return;\r\n\r\n    const text = currentPhase === \"this\"\r\n      ? `G\u00fcltig f\u00fcr <span class=\"bp-window\">${getWeekendRange(0)}<\/span>`\r\n      : `G\u00fcltig f\u00fcr <span class=\"bp-window\">${getWeekendRange(1)}<\/span>`;\r\n\r\n    if (initial) {\r\n      info.innerHTML = text;\r\n    } else {\r\n      info.classList.add(\"fade-out\");\r\n      setTimeout(() => {\r\n        info.innerHTML = text;\r\n        info.classList.remove(\"fade-out\");\r\n      }, 250);\r\n    }\r\n\r\n    lastPhase = currentPhase;\r\n  }\r\n\r\n  function updateCountdown() {\r\n    const now = new Date();\r\n    let diff = target - now;\r\n\r\n    if (diff <= 0) {\r\n      target = getNextUsableFriday18(now);\r\n      diff = target - now;\r\n\r\n      if (deadlineNoteEl) {\r\n        deadlineNoteEl.textContent =\r\n          \"Einreichung gilt bis \" + formatDeadlineDate(target) + \", 18 Uhr\";\r\n      }\r\n    }\r\n\r\n    updateCountdownState(diff);\r\n\r\n    const totalSeconds = Math.floor(diff \/ 1000);\r\n    const days = Math.floor(totalSeconds \/ (60 * 60 * 24));\r\n    const hours = Math.floor((totalSeconds % (60 * 60 * 24)) \/ (60 * 60));\r\n    const minutes = Math.floor((totalSeconds % (60 * 60)) \/ 60);\r\n    const seconds = totalSeconds % 60;\r\n    const pad = n => String(n).padStart(2, \"0\");\r\n\r\n    document.getElementById(\"bp-days\").textContent = pad(days);\r\n    document.getElementById(\"bp-hours\").textContent = pad(hours);\r\n    document.getElementById(\"bp-minutes\").textContent = pad(minutes);\r\n    document.getElementById(\"bp-seconds\").textContent = pad(seconds);\r\n\r\n    updateWeekendInfo();\r\n  }\r\n\r\n  updateWeekendInfo(true);\r\n  updateCountdown();\r\n  setInterval(updateCountdown, 1000);\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a5004d2 e-con-full e-flex e-con e-parent\" data-id=\"a5004d2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-49b8ed5 elementor-widget elementor-widget-html\" data-id=\"49b8ed5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<link rel=\"stylesheet\" href=\"https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.css\" crossorigin=\"\" \/>\r\n\r\n<div id=\"naechstesSpiel\" class=\"naechstes-wrapper\" aria-live=\"polite\">\r\n  <div id=\"naechstesSpielLoading\" class=\"naechstes-loading-inline\" aria-live=\"polite\" style=\"display:none;\">\r\n    <div id=\"naechstesSpielLoadingText\" class=\"naechstes-loading-inline-text\">\r\n      Daten werden geladen. Es kann einen Moment dauern, bis Ergebnisse angezeigt werden.\r\n    <\/div>\r\n    <div class=\"naechstes-loading-inline-progress\" aria-hidden=\"true\">\r\n      <div id=\"naechtesSpielLoadingBarInner\" class=\"naechstes-loading-inline-progress-bar\"><\/div>\r\n    <\/div>\r\n    <div class=\"naechstes-loading-inline-meta\">\r\n      <span id=\"naechstesRefreshState\" class=\"naechstes-refresh-state-inline\">Status wird geladen<\/span>\r\n      <span id=\"naechstesSpielProgressLabel\">0%<\/span>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"naechstes-header-row\">\r\n    <div class=\"naechstes-title-wrap\">\r\n      <div class=\"naechstes-kicker\">Blickpunkt Lokalsport<\/div>\r\n      <h2 class=\"naechstes-title\">N\u00e4chste Fototermine<\/h2>\r\n      <div class=\"naechstes-subtitle\">\r\n        Best\u00e4tigte, geplante und laufende Eins\u00e4tze im redaktionellen \u00dcberblick\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"naechstes-live-indicator\">\r\n      <span class=\"naechstes-live-dot\"><\/span>\r\n      <span id=\"naechstesHeaderState\">Live aktualisiert<\/span>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"naechstes-content\">\r\n    <div id=\"naechstesEventGrid\" class=\"naechstes-event-grid\">\r\n      <section class=\"naechstes-event-column naechstes-event-column-primary\" aria-labelledby=\"naechstesHeuteHeading\">\r\n        <div class=\"naechstes-section-head\">\r\n          <div>\r\n            <div class=\"naechstes-section-label\">Heute<\/div>\r\n            <div id=\"naechstesHeuteHeading\" class=\"naechstes-event-column-header\">\r\n              Fototermine im Tagesverlauf\r\n            <\/div>\r\n          <\/div>\r\n          <span id=\"naechstesHeuteBadge\" class=\"badge-offline\">Stand<\/span>\r\n        <\/div>\r\n\r\n        <div class=\"naechstes-meta-topline\">\r\n          <div id=\"naechstesJetztLine\" class=\"naechstes-event-nowline\">Jetzt \u00b7 --:-- Uhr<\/div>\r\n        <\/div>\r\n\r\n        <div id=\"naechstesHeuteList\" class=\"naechstes-event-list\">\r\n          <div class=\"naechstes-event-hint\">\r\n            Letzter Stand wird angezeigt, Aktualisierung l\u00e4uft im Hintergrund \u2026\r\n          <\/div>\r\n        <\/div>\r\n      <\/section>\r\n\r\n      <section class=\"naechstes-event-column\" aria-labelledby=\"naechstesDemnaechstHeading\">\r\n        <div class=\"naechstes-section-head\">\r\n          <div>\r\n            <div class=\"naechstes-section-label\">Ausblick<\/div>\r\n            <div id=\"naechstesDemnaechstHeading\" class=\"naechstes-event-column-header\">\r\n              Die n\u00e4chsten Termine\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div id=\"naechstesDemnaechstList\" class=\"naechstes-event-list\">\r\n          <div class=\"naechstes-event-hint\">Die n\u00e4chsten Termine werden geladen \u2026<\/div>\r\n        <\/div>\r\n      <\/section>\r\n\r\n      <section\r\n        id=\"naechstesLivePanel\"\r\n        class=\"naechstes-event-column naechstes-live-panel is-hidden\"\r\n        aria-hidden=\"true\"\r\n        aria-labelledby=\"naechstesMapTitle\"\r\n      >\r\n        <div class=\"naechstes-section-head\">\r\n          <div>\r\n            <div class=\"naechstes-section-label\">Live<\/div>\r\n            <div class=\"naechstes-event-column-header\" id=\"naechstesMapTitle\">Aktueller Einsatzort<\/div>\r\n          <\/div>\r\n          <span class=\"naechstes-map-badge\">Karte<\/span>\r\n        <\/div>\r\n\r\n        <div class=\"naechstes-event-map-wrap\">\r\n          <div id=\"naechstesSpielMapWrap\">\r\n            <div id=\"naechstesSpielMap\"><\/div>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div id=\"naechstesSpielMapHint\" class=\"naechstes-event-hint\">\r\n          Live-Standort des aktuellen Fototermins\r\n        <\/div>\r\n      <\/section>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"naechstes-footer-row\">\r\n    <small id=\"naechstesSpielStatus\" class=\"naechstes-status\">\r\n      Letzter bekannter Stand wird angezeigt \u00b7 Aktualisierung l\u00e4uft automatisch\r\n    <\/small>\r\n\r\n    <a\r\n      href=\"https:\/\/blickpunkt-lokalsport.de\/fototermin-uebersicht\/\"\r\n      class=\"naechstes-link-all\"\r\n      target=\"_blank\"\r\n      rel=\"noopener noreferrer\"\r\n    >\r\n      <span>Alle Fototermine<\/span>\r\n      <span class=\"naechstes-link-arrow\">\u203a<\/span>\r\n    <\/a>\r\n  <\/div>\r\n<\/div>\r\n\r\n<style>\r\n  @import url('https:\/\/fonts.googleapis.com\/css2?family=Oswald:wght@500;600;700&family=Inter:wght@400;500;600;700;800&display=swap');\r\n\r\n  :root {\r\n    --nl-bg: #edf0f1;\r\n    --nl-card: #f8f9fa;\r\n    --nl-text: #151b22;\r\n    --nl-text-soft: #67727d;\r\n    --nl-text-faint: #88929d;\r\n    --nl-border: rgba(21, 27, 34, 0.08);\r\n    --nl-border-strong: rgba(21, 27, 34, 0.11);\r\n    --nl-confirmed: #4d8667;\r\n    --nl-planned: #4d6f9d;\r\n    --nl-publish: #7b8a6f;\r\n    --nl-running: #8e2238;\r\n  }\r\n\r\n  .naechstes-wrapper {\r\n    font-family: \"Inter\", system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Arial, sans-serif;\r\n    max-width: 1250px;\r\n    margin: 0.5rem auto;\r\n    padding: 1rem 1.05rem 0.9rem;\r\n    background: var(--nl-bg);\r\n    color: var(--nl-text);\r\n    border: 1px solid var(--nl-border-strong);\r\n    box-shadow: none;\r\n    position: relative;\r\n    overflow: hidden;\r\n  }\r\n\r\n  .naechstes-header-row {\r\n    display: flex;\r\n    align-items: flex-start;\r\n    justify-content: space-between;\r\n    gap: 0.9rem;\r\n    flex-wrap: wrap;\r\n    margin-bottom: 0.85rem;\r\n  }\r\n\r\n  .naechstes-title-wrap {\r\n    display: flex;\r\n    flex-direction: column;\r\n    gap: 0.14rem;\r\n    max-width: 760px;\r\n  }\r\n\r\n  .naechstes-kicker {\r\n    font-size: 0.64rem;\r\n    font-weight: 800;\r\n    letter-spacing: 0.18em;\r\n    text-transform: uppercase;\r\n    color: #7c8792;\r\n  }\r\n\r\n  .naechstes-title {\r\n    color: #111827;\r\n    font-family: \"Oswald\", sans-serif;\r\n    font-weight: 600;\r\n    font-size: 1.18rem;\r\n    margin: 0;\r\n    letter-spacing: 0.04em;\r\n    text-transform: uppercase;\r\n    line-height: 1.02;\r\n  }\r\n\r\n  .naechstes-subtitle {\r\n    font-size: 0.82rem;\r\n    color: var(--nl-text-soft);\r\n    line-height: 1.35;\r\n    margin-top: 0.04rem;\r\n  }\r\n\r\n  .naechstes-live-indicator {\r\n    font-size: 0.72rem;\r\n    color: #5f6975;\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 0.36rem;\r\n    background: rgba(255, 255, 255, 0.6);\r\n    border: 1px solid rgba(21, 27, 34, 0.07);\r\n    padding: 0.3rem 0.56rem;\r\n  }\r\n\r\n  .naechstes-live-dot {\r\n    width: 7px;\r\n    height: 7px;\r\n    border-radius: 999px;\r\n    background: var(--nl-confirmed);\r\n    display: inline-block;\r\n    box-shadow: 0 0 0 3px rgba(77, 134, 103, 0.14);\r\n  }\r\n\r\n  .naechstes-loading-inline {\r\n    display: none;\r\n    margin: 0 0 0.8rem;\r\n    padding: 0.05rem 0 0.15rem;\r\n  }\r\n\r\n  .naechstes-loading-inline-text {\r\n    font-size: 0.74rem;\r\n    color: var(--nl-text-soft);\r\n    line-height: 1.4;\r\n    margin-bottom: 0.26rem;\r\n  }\r\n\r\n  .naechstes-loading-inline-progress {\r\n    position: relative;\r\n    width: 100%;\r\n    max-width: 420px;\r\n    height: 8px;\r\n    background: #dfe4e8;\r\n    border: 1px solid rgba(21, 27, 34, 0.06);\r\n    overflow: hidden;\r\n  }\r\n\r\n  .naechstes-loading-inline-progress-bar {\r\n    width: 0%;\r\n    height: 100%;\r\n    background: linear-gradient(90deg, #65707b 0%, #4b5563 100%);\r\n    transition: width 0.35s ease;\r\n  }\r\n\r\n  .naechstes-loading-inline-meta {\r\n    margin-top: 0.22rem;\r\n    font-size: 0.7rem;\r\n    color: var(--nl-text-faint);\r\n    display: flex;\r\n    justify-content: space-between;\r\n    gap: 0.5rem;\r\n    max-width: 420px;\r\n  }\r\n\r\n  .naechstes-refresh-state-inline {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 0.36rem;\r\n  }\r\n\r\n  .naechstes-refresh-state-inline.is-loading::before {\r\n    content: \"\";\r\n    width: 10px;\r\n    height: 10px;\r\n    border-radius: 999px;\r\n    border: 2px solid rgba(106, 116, 128, 0.22);\r\n    border-top-color: var(--nl-running);\r\n    animation: nlSpin 0.8s linear infinite;\r\n  }\r\n\r\n  @keyframes nlSpin {\r\n    to { transform: rotate(360deg); }\r\n  }\r\n\r\n  @media (prefers-reduced-motion: reduce) {\r\n    .naechstes-refresh-state-inline.is-loading::before {\r\n      animation: none;\r\n      border-top-color: rgba(106, 116, 128, 0.6);\r\n    }\r\n  }\r\n\r\n  .naechstes-event-grid {\r\n    display: grid;\r\n    grid-template-columns: repeat(2, minmax(0, 1fr));\r\n    gap: 0.85rem;\r\n    align-items: stretch;\r\n  }\r\n\r\n  .naechstes-event-grid.has-live-map {\r\n    grid-template-columns: minmax(0, 1.16fr) minmax(0, 1fr) minmax(290px, 330px);\r\n  }\r\n\r\n  .naechstes-event-column {\r\n    position: relative;\r\n    background: var(--nl-card);\r\n    padding: 0.95rem 0.92rem 0.9rem;\r\n    border: 1px solid var(--nl-border);\r\n    box-shadow: none;\r\n    display: flex;\r\n    flex-direction: column;\r\n    gap: 0.55rem;\r\n    min-width: 0;\r\n  }\r\n\r\n  .naechstes-event-column-primary {\r\n    background: #f9fbfa;\r\n    border-color: rgba(77, 134, 103, 0.18);\r\n  }\r\n\r\n  .naechstes-section-head {\r\n    display: flex;\r\n    align-items: flex-start;\r\n    justify-content: space-between;\r\n    gap: 0.6rem;\r\n    flex-wrap: wrap;\r\n    border-bottom: 1px solid rgba(21, 27, 34, 0.07);\r\n    padding-bottom: 0.5rem;\r\n    margin-bottom: 0.05rem;\r\n  }\r\n\r\n  .naechstes-section-label {\r\n    font-size: 0.64rem;\r\n    font-weight: 800;\r\n    letter-spacing: 0.18em;\r\n    text-transform: uppercase;\r\n    color: var(--nl-text-faint);\r\n    margin-bottom: 0.12rem;\r\n  }\r\n\r\n  .naechstes-event-column-header {\r\n    font-size: 1rem;\r\n    line-height: 1.16;\r\n    font-weight: 800;\r\n    color: #17212b;\r\n    letter-spacing: -0.01em;\r\n  }\r\n\r\n  .badge-live,\r\n  .badge-offline,\r\n  .badge-running,\r\n  .naechstes-map-badge {\r\n    font-size: 0.64rem;\r\n    font-weight: 800;\r\n    padding: 0.14rem 0.54rem;\r\n    text-transform: uppercase;\r\n    letter-spacing: 0.06em;\r\n    border: 1px solid rgba(15, 23, 42, 0.09);\r\n    background: #e6eaed;\r\n    color: #56616d;\r\n    white-space: nowrap;\r\n    align-self: flex-start;\r\n  }\r\n\r\n  .badge-live {\r\n    background: var(--nl-confirmed);\r\n    color: #ffffff;\r\n    border-color: #426f57;\r\n  }\r\n\r\n  .badge-offline {\r\n    background: #e4e8eb;\r\n    color: #5d6773;\r\n  }\r\n\r\n  .badge-running {\r\n    background: var(--nl-running);\r\n    color: #ffffff;\r\n    border-color: #6e1729;\r\n  }\r\n\r\n  .naechstes-map-badge {\r\n    background: #edf1f4;\r\n    color: #44505d;\r\n    border-color: rgba(21, 27, 34, 0.08);\r\n  }\r\n\r\n  .naechstes-meta-topline {\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: space-between;\r\n    gap: 0.7rem;\r\n    flex-wrap: wrap;\r\n  }\r\n\r\n  .naechstes-event-nowline {\r\n    margin-top: 0.05rem;\r\n    margin-bottom: 0.12rem;\r\n    font-size: 0.72rem;\r\n    font-weight: 700;\r\n    letter-spacing: 0.12em;\r\n    text-transform: uppercase;\r\n    color: #65707b;\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 0.38rem;\r\n  }\r\n\r\n  .naechstes-event-nowline::before {\r\n    content: \"\";\r\n    width: 6px;\r\n    height: 6px;\r\n    border-radius: 999px;\r\n    background: var(--nl-confirmed);\r\n  }\r\n\r\n  .naechstes-event-hint {\r\n    font-size: 0.79rem;\r\n    color: var(--nl-text-faint);\r\n    line-height: 1.38;\r\n    margin-top: 0.06rem;\r\n  }\r\n\r\n  .naechstes-event-list {\r\n    display: flex;\r\n    flex-direction: column;\r\n    gap: 0.55rem;\r\n    min-height: 60px;\r\n  }\r\n\r\n  .naechstes-event-item {\r\n    position: relative;\r\n    display: grid;\r\n    grid-template-columns: 84px 1fr;\r\n    gap: 0.78rem;\r\n    align-items: flex-start;\r\n    padding: 0.62rem 0.72rem 0.62rem 0.65rem;\r\n    border-top: 1px solid rgba(21, 27, 34, 0.06);\r\n    border-radius: 8px;\r\n    transition: background 0.18s ease, border-color 0.18s ease;\r\n  }\r\n\r\n  .naechstes-event-item::before {\r\n    content: \"\";\r\n    position: absolute;\r\n    left: 0;\r\n    top: 0.62rem;\r\n    bottom: 0.62rem;\r\n    width: 3px;\r\n    background: #d4dbe0;\r\n    border-radius: 999px;\r\n  }\r\n\r\n  .naechstes-event-item.is-confirmed::before {\r\n    background: var(--nl-confirmed);\r\n  }\r\n\r\n  .naechstes-event-item.is-planned::before {\r\n    background: var(--nl-planned);\r\n  }\r\n\r\n  .naechstes-event-item.is-publish::before {\r\n    background: var(--nl-publish);\r\n  }\r\n\r\n  .naechstes-event-item.is-running::before {\r\n    background: var(--nl-running);\r\n    width: 4px;\r\n  }\r\n\r\n  \/* Fallback *\/\r\n  .naechstes-event-item.is-confirmed {\r\n    background: rgba(77, 134, 103, 0.07);\r\n  }\r\n\r\n  .naechstes-event-item.is-planned {\r\n    background: rgba(77, 111, 157, 0.08);\r\n  }\r\n\r\n  .naechstes-event-item.is-publish {\r\n    background: rgba(123, 138, 111, 0.09);\r\n  }\r\n\r\n  .naechstes-event-item.is-running {\r\n    background: rgba(142, 34, 56, 0.09);\r\n  }\r\n\r\n  \/* Modern *\/\r\n  @supports (background: color-mix(in srgb, white 90%, black 10%)) {\r\n    .naechstes-event-item.is-confirmed {\r\n      background: color-mix(in srgb, var(--nl-confirmed) 7%, #ffffff);\r\n    }\r\n\r\n    .naechstes-event-item.is-planned {\r\n      background: color-mix(in srgb, var(--nl-planned) 8%, #ffffff);\r\n    }\r\n\r\n    .naechstes-event-item.is-publish {\r\n      background: color-mix(in srgb, var(--nl-publish) 9%, #ffffff);\r\n    }\r\n\r\n    .naechstes-event-item.is-running {\r\n      background: color-mix(in srgb, var(--nl-running) 9%, #ffffff);\r\n    }\r\n  }\r\n\r\n  .naechstes-event-list .naechstes-event-item:first-child {\r\n    border-top: 0;\r\n    padding-top: 0.18rem;\r\n  }\r\n\r\n  .naechstes-event-list .naechstes-event-item:first-child::before {\r\n    top: 0.18rem;\r\n  }\r\n\r\n  .naechstes-event-side {\r\n    display: flex;\r\n    flex-direction: column;\r\n    gap: 0.12rem;\r\n  }\r\n\r\n  .naechstes-event-date {\r\n    font-size: 0.78rem;\r\n    font-weight: 700;\r\n    text-transform: uppercase;\r\n    letter-spacing: 0.08em;\r\n    color: #64707c;\r\n  }\r\n\r\n  .naechstes-event-time {\r\n    font-size: 0.96rem;\r\n    font-weight: 800;\r\n    line-height: 1.05;\r\n    color: #8e2238;\r\n    letter-spacing: -0.02em;\r\n  }\r\n\r\n  .naechstes-event-meta {\r\n    display: flex;\r\n    flex-direction: column;\r\n    gap: 0.16rem;\r\n    min-width: 0;\r\n  }\r\n\r\n  .naechstes-event-summary {\r\n    font-size: 0.9rem;\r\n    color: #141b22;\r\n    font-weight: 700;\r\n    line-height: 1.28;\r\n    word-break: break-word;\r\n  }\r\n\r\n  .naechstes-event-submeta {\r\n    font-size: 0.76rem;\r\n    color: #66717d;\r\n    line-height: 1.35;\r\n  }\r\n\r\n  .naechstes-event-tags {\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 0.35rem;\r\n    flex-wrap: wrap;\r\n    margin-top: 0.06rem;\r\n  }\r\n\r\n  .naechstes-tag {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    min-height: 20px;\r\n    padding: 0.1rem 0.42rem;\r\n    font-size: 0.62rem;\r\n    font-weight: 800;\r\n    text-transform: uppercase;\r\n    letter-spacing: 0.07em;\r\n    border: 1px solid rgba(21, 27, 34, 0.08);\r\n    color: #55616d;\r\n    background: #eef2f4;\r\n    white-space: nowrap;\r\n  }\r\n\r\n  .naechstes-tag.tag-confirmed {\r\n    color: #355845;\r\n    background: rgba(77, 134, 103, 0.10);\r\n    border-color: rgba(77, 134, 103, 0.18);\r\n  }\r\n\r\n  .naechstes-tag.tag-planned {\r\n    color: #375070;\r\n    background: rgba(77, 111, 157, 0.10);\r\n    border-color: rgba(77, 111, 157, 0.20);\r\n  }\r\n\r\n  .naechstes-tag.tag-publish {\r\n    color: #5c6852;\r\n    background: rgba(123, 138, 111, 0.12);\r\n    border-color: rgba(123, 138, 111, 0.22);\r\n  }\r\n\r\n  .naechstes-tag.tag-live {\r\n    color: #7d2134;\r\n    background: rgba(142, 34, 56, 0.10);\r\n    border-color: rgba(142, 34, 56, 0.20);\r\n  }\r\n\r\n  .naechstes-event-running-label {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 0.32rem;\r\n    width: fit-content;\r\n    font-size: 0.64rem;\r\n    font-weight: 800;\r\n    text-transform: uppercase;\r\n    letter-spacing: 0.08em;\r\n    color: #ffffff;\r\n    background: var(--nl-running);\r\n    border: 1px solid #6e1729;\r\n    padding: 0.15rem 0.42rem;\r\n    margin-top: 0.16rem;\r\n  }\r\n\r\n  .naechstes-event-running-label::before {\r\n    content: \"\";\r\n    width: 6px;\r\n    height: 6px;\r\n    border-radius: 999px;\r\n    background: #ffffff;\r\n  }\r\n\r\n  .naechstes-live-panel {\r\n    opacity: 1;\r\n    visibility: visible;\r\n    transition: opacity 0.2s ease;\r\n  }\r\n\r\n  .naechstes-live-panel.is-hidden {\r\n    opacity: 0;\r\n    visibility: hidden;\r\n    pointer-events: none;\r\n    padding: 0;\r\n    border: 0;\r\n    box-shadow: none;\r\n    min-height: 0;\r\n    max-height: 0;\r\n    overflow: hidden;\r\n  }\r\n\r\n  .naechstes-event-map-wrap {\r\n    display: flex;\r\n    justify-content: center;\r\n    align-items: flex-start;\r\n    padding-top: 0.12rem;\r\n  }\r\n\r\n  #naechstesSpielMapWrap {\r\n    width: 100%;\r\n  }\r\n\r\n  #naechstesSpielMap {\r\n    width: 100%;\r\n    height: 368px;\r\n    min-height: 368px;\r\n    background: #f3f6f7;\r\n    border: 1px solid rgba(15, 23, 42, 0.08);\r\n  }\r\n\r\n  .leaflet-container {\r\n    width: 100%;\r\n    height: 100%;\r\n    background: #f3f6f7;\r\n  }\r\n\r\n  .leaflet-popup-content {\r\n    font-family: \"Inter\", system-ui, sans-serif;\r\n    font-size: 13px;\r\n    line-height: 1.45;\r\n  }\r\n\r\n  .naechstes-footer-row {\r\n    display: flex;\r\n    justify-content: space-between;\r\n    align-items: center;\r\n    margin-top: 0.75rem;\r\n    padding-top: 0.65rem;\r\n    border-top: 1px solid rgba(21, 27, 34, 0.07);\r\n    gap: 0.6rem;\r\n    flex-wrap: wrap;\r\n  }\r\n\r\n  .naechstes-status {\r\n    color: #626d79;\r\n    font-size: 0.67rem;\r\n    font-weight: 500;\r\n  }\r\n\r\n  .naechstes-link-all {\r\n    font-size: 0.76rem;\r\n    padding: 0.36rem 0.9rem;\r\n    border: 1px solid #8e2238;\r\n    color: #ffffff !important;\r\n    text-decoration: none;\r\n    font-weight: 700;\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 0.28rem;\r\n    background: #8e2238 !important;\r\n    transition:\r\n      background 0.15s ease,\r\n      color 0.15s ease,\r\n      transform 0.1s ease,\r\n      box-shadow 0.15s ease,\r\n      border-color 0.15s ease;\r\n    box-shadow: 0 4px 10px rgba(142, 34, 56, 0.14);\r\n  }\r\n\r\n  .naechstes-link-all:hover {\r\n    background: #6e1729 !important;\r\n    color: #ffffff !important;\r\n    border-color: #6e1729;\r\n    transform: translateY(-1px);\r\n    box-shadow: 0 6px 12px rgba(110, 23, 41, 0.16);\r\n  }\r\n\r\n  .naechstes-link-arrow {\r\n    font-size: 0.95em;\r\n  }\r\n\r\n  @media (max-width: 1024px) {\r\n    .naechstes-event-grid,\r\n    .naechstes-event-grid.has-live-map {\r\n      grid-template-columns: repeat(2, minmax(0, 1fr));\r\n    }\r\n\r\n    .naechstes-live-panel {\r\n      grid-column: 1 \/ -1;\r\n    }\r\n\r\n    #naechstesSpielMap,\r\n    #naechstesSpielMapWrap {\r\n      height: 320px;\r\n      min-height: 320px;\r\n    }\r\n  }\r\n\r\n  @media (max-width: 768px) {\r\n    .naechstes-wrapper {\r\n      margin: 0.4rem 0.5rem;\r\n      padding: 0.85rem 0.8rem;\r\n    }\r\n\r\n    .naechstes-title {\r\n      font-size: 1.02rem;\r\n    }\r\n\r\n    .naechstes-subtitle {\r\n      font-size: 0.78rem;\r\n    }\r\n\r\n    .naechstes-event-grid,\r\n    .naechstes-event-grid.has-live-map {\r\n      grid-template-columns: 1fr;\r\n    }\r\n\r\n    .naechstes-live-panel {\r\n      grid-column: auto;\r\n    }\r\n\r\n    .naechstes-event-item {\r\n      grid-template-columns: 78px 1fr;\r\n      gap: 0.65rem;\r\n    }\r\n\r\n    #naechstesSpielMap,\r\n    #naechstesSpielMapWrap {\r\n      height: 280px;\r\n      min-height: 280px;\r\n    }\r\n\r\n    .naechstes-loading-inline-progress,\r\n    .naechstes-loading-inline-meta {\r\n      max-width: 100%;\r\n    }\r\n  }\r\n\r\n  @media (max-width: 480px) {\r\n    .naechstes-title {\r\n      font-size: 0.96rem;\r\n    }\r\n\r\n    .naechstes-event-item {\r\n      grid-template-columns: 1fr;\r\n      gap: 0.3rem;\r\n      padding-left: 0.6rem;\r\n      padding-right: 0.6rem;\r\n    }\r\n\r\n    .naechstes-event-side {\r\n      gap: 0.06rem;\r\n    }\r\n\r\n    .naechstes-event-time {\r\n      font-size: 0.9rem;\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<script src=\"https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.js\" crossorigin=\"\"><\/script>\r\n\r\n<script>\r\n(function() {\r\n  const root = document.getElementById('naechstesSpiel');\r\n  if (!root || root.dataset.initialized === '1') return;\r\n  root.dataset.initialized = '1';\r\n\r\n  const ICS_URL_CONFIRMED = \"https:\/\/export.kalender.digital\/ics\/4615281\/b40e8d17b4be6185fe64\/fototerminbesttigt.ics?past_months=3&future_months=36\";\r\n  const ICS_URL_PLANNED   = \"https:\/\/export.kalender.digital\/ics\/4863324\/b40e8d17b4be6185fe64\/inplanung.ics?past_months=3&future_months=36\";\r\n  const ICS_URL_PUBLISH   = \"https:\/\/export.kalender.digital\/ics\/6029751\/b40e8d17b4be6185fe64\/terminverffentlichung.ics?past_months=3&future_months=36\";\r\n\r\n  const CORSPROXIES = [\r\n    icsUrl => `https:\/\/api.allorigins.win\/raw?url=${encodeURIComponent(icsUrl)}`,\r\n    icsUrl => `https:\/\/corsproxy.io\/?${encodeURIComponent(icsUrl)}`,\r\n    icsUrl => `https:\/\/api.codetabs.com\/v1\/proxy?quest=${encodeURIComponent(icsUrl)}`\r\n  ];\r\n\r\n  const CLUB_PLACES = [\r\n    {name:'VfB Fichte Bielefeld', addr:'M\u00fchlenstra\u00dfe 121, 33607 Bielefeld', lon:8.5630235, lat:52.0199558},\r\n    {name:'TuS Eintracht Bielefeld', addr:'Graudenzer Str 18, 33604 Bielefeld', lon:8.554422, lat:52.006845},\r\n    {name:'VfL Theesen', addr:'Gaudigstra\u00dfe 29, 33739 Bielefeld', lon:8.5235827, lat:52.0681899},\r\n    {name:'SV Ubbedissen', addr:'Pyrmonter Str 9, 33699 Bielefeld', lon:8.6349867, lat:51.9868287},\r\n    {name:'DSC Arminia Bielefeld', addr:'Stapenhorststra\u00dfe 100, 33615 Bielefeld', lon:8.5148078, lat:52.0316107},\r\n    {name:'TuS Dornberg', addr:'Kirchdornberger Str 46, 33619 Bielefeld', lon:8.4461487, lat:52.045895},\r\n    {name:'VfR Wellensiek', addr:'Erfahrung 20, 33619 Bielefeld', lon:8.4974104, lat:52.0392019},\r\n    {name:'TuS Hoberge-Uerentrup', addr:'Bergstra\u00dfe 17, 33619 Bielefeld', lon:8.4656257, lat:52.0222818},\r\n    {name:'SC Halle', addr:'Wasserwerkstra\u00dfe 1b, 33790 Halle (Westfalen)', lon:8.3531112, lat:52.0494873},\r\n    {name:'VfL Schildesche', addr:'Talbr\u00fcckenstra\u00dfe 130, 33609 Bielefeld', lon:8.5705793, lat:52.0527548},\r\n    {name:'TuS Einigkeit Hillegossen', addr:'Selhausenstra\u00dfe 102, 33699 Bielefeld', lon:8.6019146, lat:51.9857454},\r\n    {name:'TuS 08 Senne I', addr:'Am Waldbad 72, 33659 Bielefeld', lon:8.5266708, lat:51.9619498},\r\n    {name:'SC Peckeloh', addr:'Am Wiedenfeld 4, 33775 Versmold', lon:8.1319193, lat:52.018464},\r\n    {name:'SC 04\/26 Bielefeld', addr:'Am Meierteich, 33613 Bielefeld', lon:8.5257874, lat:52.0438467},\r\n    {name:'SC Verl', addr:'Sender Str 36, 33415 Verl', lon:8.5135835, lat:51.8843441},\r\n    {name:'TuS J\u00f6llenbeck', addr:'Naturstadion 12b, 33739 Bielefeld', lon:8.5278124, lat:52.0865546},\r\n    {name:'TuS Quelle', addr:'Gottfriedstra\u00dfe 10, 33649 Bielefeld', lon:8.4899939, lat:51.9997654},\r\n    {name:'SV Heepen', addr:'L\u00fcbrasser Weg 31, 33719 Bielefeld', lon:8.616958, lat:52.026885},\r\n    {name:'TuS Ost', addr:'Radrennbahnweg 50A, 33609 Bielefeld', lon:8.5815211, lat:52.0346887},\r\n    {name:'TuS Brake', addr:'Lohrenkamp 37, 33729 Bielefeld', lon:8.5917887, lat:52.0743582},\r\n    {name:'VfL Ummeln', addr:'Tr\u00fcggelbachstra\u00dfe 28, 33649 Bielefeld', lon:8.4621148, lat:51.9680783},\r\n    {name:'Spvg. Steinhagen', addr:'Am Cronsbach 10, 33803 Steinhagen', lon:8.4231925, lat:51.9987135},\r\n    {name:'FC Altenhagen', addr:'Milser Str 132, 33729 Bielefeld', lon:8.6342478, lat:52.0557012},\r\n    {name:'SV R\u00f6dinghausen', addr:'Auf d Drift 36, 32289 R\u00f6dinghausen', lon:8.5066959, lat:52.2499652},\r\n    {name:'TV Friesen Milse', addr:'Milser Str 40, 33729 Bielefeld', lon:8.6085219, lat:52.0574447},\r\n    {name:'SV Avenwedde', addr:'Gazellenweg 16, 33335 G\u00fctersloh', lon:8.446701, lat:51.9304111},\r\n    {name:'TuS Langenheide', addr:'Langenheider Str 33, 33824 Werther (Westfalen)', lon:8.3931561, lat:52.1006012},\r\n    {name:'SV Eidinghausen-Werste', addr:'Jahnstra\u00dfe 46, 32549 Bad Oeynhausen', lon:8.77051, lat:52.20933},\r\n    {name:'VfL Oldentrup', addr:'Kr\u00e4henwinkel 4, 33719 Bielefeld', lon:8.6068968, lat:52.0104094},\r\n    {name:'TuS GW Podinghausen', addr:'Am Sportpl 6, 32130 Enger', lon:8.5423124, lat:52.1180611},\r\n    {name:'VfB Schloss Holte 1919', addr:'Oerlinghauser Str. 37, 33758 Schlo\u00df Holte-Stukenbrock', lon:8.6090765, lat:51.9141008},\r\n    {name:'BV Werther', addr:'Teutoburger-Wald-Weg, 33824 Werther', lon:8.4092322, lat:52.0655363},\r\n    {name:'BW 98 G\u00fctersloh', addr:'Pavenst\u00e4dter Weg, 33334 G\u00fctersloh', lon:8.3398131, lat:51.9096257},\r\n    {name:'SV H\u00e4ger', addr:'Schr\u00f6ttinghausener Str 14, 33824 Werther (Westfalen)', lon:8.452828, lat:52.0940885},\r\n    {name:'SpVg. Versmold', addr:'Schulstra\u00dfe 14, 33775 Versmold', lon:8.1515125, lat:52.0418881},\r\n    {name:'SC GW Espeln', addr:'Heideweg 41, 33161 H\u00f6velhof', lon:8.5937513, lat:51.8201668},\r\n    {name:'FC GW Kirchlengern', addr:'Schelmenbrink 17, 32278 Kirchlengern', lon:8.6552284, lat:52.1933166},\r\n    {name:'FC G\u00fctersloh', addr:'Alter Hellweg, 33334 G\u00fctersloh', lon:8.3648184, lat:51.8840168},\r\n    {name:'SV Spexard', addr:'Bruder-Konrad-Stra\u00dfe 100, 33334 G\u00fctersloh', lon:8.4097334, lat:51.8817527},\r\n    {name:'SV Werl-Aspe', addr:'Paul-Schneider-Stra\u00dfe, 32107 Bad Salzuflen-Werl-Aspe', lon:8.7317832, lat:52.0634785},\r\n    {name:'TSV Amshausen', addr:'Amshausener Str 87, 33803 Steinhagen', lon:8.4050668, lat:52.0268659},\r\n    {name:'SpVg Oelde', addr:'Kreuzstra\u00dfe 22, 59302 Oelde', lon:8.1592658, lat:51.8241018},\r\n    {name:'SV Gadderbaum', addr:'An d Rehwiese 64, 33617 Bielefeld', lon:8.5238, lat:52.00437}\r\n  ];\r\n\r\n  const ALIASES = {\r\n    \"arminia bielefeld\": \"DSC Arminia Bielefeld\",\r\n    \"arminia\": \"DSC Arminia Bielefeld\",\r\n    \"dsc arminia\": \"DSC Arminia Bielefeld\",\r\n    \"fichte bielefeld\": \"VfB Fichte Bielefeld\",\r\n    \"fichte\": \"VfB Fichte Bielefeld\",\r\n    \"sv heepen\": \"SV Heepen\",\r\n    \"heepen\": \"SV Heepen\",\r\n    \"theesen\": \"VfL Theesen\",\r\n    \"vfl theesen\": \"VfL Theesen\",\r\n    \"schildesche\": \"VfL Schildesche\",\r\n    \"vfl schildesche\": \"VfL Schildesche\",\r\n    \"quelle\": \"TuS Quelle\",\r\n    \"tus quelle\": \"TuS Quelle\",\r\n    \"joellenbeck\": \"TuS J\u00f6llenbeck\",\r\n    \"jollenbeck\": \"TuS J\u00f6llenbeck\",\r\n    \"j\u00f6llenbeck\": \"TuS J\u00f6llenbeck\",\r\n    \"tus jollenbeck\": \"TuS J\u00f6llenbeck\",\r\n    \"ummeln\": \"VfL Ummeln\",\r\n    \"vfl ummeln\": \"VfL Ummeln\",\r\n    \"oldentrup\": \"VfL Oldentrup\",\r\n    \"vfl oldentrup\": \"VfL Oldentrup\",\r\n    \"spvg steinhagen\": \"Spvg. Steinhagen\",\r\n    \"spvg. steinhagen\": \"Spvg. Steinhagen\",\r\n    \"steinhagen\": \"Spvg. Steinhagen\",\r\n    \"spvg versmold\": \"SpVg. Versmold\",\r\n    \"spvg. versmold\": \"SpVg. Versmold\",\r\n    \"versmold\": \"SpVg. Versmold\",\r\n    \"sc 04 26 bielefeld\": \"SC 04\/26 Bielefeld\",\r\n    \"sc 04\/26 bielefeld\": \"SC 04\/26 Bielefeld\",\r\n    \"04 26 bielefeld\": \"SC 04\/26 Bielefeld\",\r\n    \"04\/26 bielefeld\": \"SC 04\/26 Bielefeld\"\r\n  };\r\n\r\n  const statusEl = document.getElementById('naechstesSpielStatus');\r\n  const heuteListEl = document.getElementById('naechstesHeuteList');\r\n  const demnaechstListEl = document.getElementById('naechstesDemnaechstList');\r\n  const badgeEl = document.getElementById('naechstesHeuteBadge');\r\n  const nowLineEl = document.getElementById('naechstesJetztLine');\r\n  const gridEl = document.getElementById('naechstesEventGrid');\r\n  const livePanelEl = document.getElementById('naechstesLivePanel');\r\n  const mapHintEl = document.getElementById('naechstesSpielMapHint');\r\n  const titleEl = document.getElementById('naechstesMapTitle');\r\n  const headerStateEl = document.getElementById('naechstesHeaderState');\r\n\r\n  const loadingWrapEl = document.getElementById('naechstesSpielLoading');\r\n  const loadingTextEl = document.getElementById('naechstesSpielLoadingText');\r\n  const loadingBarInnerEl = document.getElementById('naechtesSpielLoadingBarInner');\r\n  const refreshStateEl = document.getElementById('naechstesRefreshState');\r\n  const progressLabelEl = document.getElementById('naechstesSpielProgressLabel');\r\n\r\n  let liveMap = null;\r\n  let liveMapMarker = null;\r\n  let progressTimer = null;\r\n  let progressValue = 0;\r\n  let loadingStartedAt = 0;\r\n  let hasLoadedOnce = false;\r\n  let refreshInProgress = false;\r\n\r\n  const MIN_LOADING_BAR_MS = 900;\r\n  const MAP_ORIGIN = [52.0089, 8.5706];\r\n\r\n  function setProgress(value, text) {\r\n    progressValue = Math.max(0, Math.min(100, Math.round(value)));\r\n\r\n    if (loadingWrapEl) loadingWrapEl.style.display = 'block';\r\n    if (loadingBarInnerEl) loadingBarInnerEl.style.width = progressValue + '%';\r\n    if (progressLabelEl) progressLabelEl.textContent = progressValue + '%';\r\n    if (loadingTextEl && text) loadingTextEl.textContent = text;\r\n\r\n    if (loadingBarInnerEl) {\r\n      loadingBarInnerEl.style.background = progressValue === 100\r\n        ? 'linear-gradient(90deg, #5d8d72 0%, #4d8667 100%)'\r\n        : 'linear-gradient(90deg, #65707b 0%, #4b5563 100%)';\r\n    }\r\n  }\r\n\r\n  function startProgressAnimation() {\r\n    if (progressTimer) clearInterval(progressTimer);\r\n\r\n    setProgress(8, 'Daten werden geladen. Es kann einen Moment dauern, bis Ergebnisse angezeigt werden.');\r\n\r\n    progressTimer = setInterval(() => {\r\n      if (progressValue < 34) {\r\n        setProgress(progressValue + 6, 'Best\u00e4tigte Termine werden geladen \u2026');\r\n      } else if (progressValue < 66) {\r\n        setProgress(progressValue + 4, 'Geplante Termine werden geladen \u2026');\r\n      } else if (progressValue < 90) {\r\n        setProgress(progressValue + 2, 'Live-Daten werden vorbereitet \u2026');\r\n      } else if (progressValue < 96) {\r\n        setProgress(progressValue + 1, 'Ergebnisse werden vorbereitet \u2026');\r\n      }\r\n    }, 160);\r\n  }\r\n\r\n  function stopProgressAnimation() {\r\n    if (progressTimer) {\r\n      clearInterval(progressTimer);\r\n      progressTimer = null;\r\n    }\r\n  }\r\n\r\n  function showLoadingBar() {\r\n    loadingStartedAt = Date.now();\r\n    if (loadingWrapEl) loadingWrapEl.style.display = 'block';\r\n\r\n    if (refreshStateEl) {\r\n      refreshStateEl.classList.add('naechstes-refresh-state-inline', 'is-loading');\r\n      refreshStateEl.textContent = 'Status wird geladen';\r\n    }\r\n\r\n    startProgressAnimation();\r\n  }\r\n\r\n  async function hideLoadingBar() {\r\n    stopProgressAnimation();\r\n    setProgress(100, 'Ergebnisse werden vorbereitet \u2026');\r\n\r\n    if (refreshStateEl) {\r\n      refreshStateEl.classList.remove('is-loading');\r\n      refreshStateEl.textContent = 'Abgeschlossen';\r\n    }\r\n\r\n    const elapsed = Date.now() - loadingStartedAt;\r\n    const wait = Math.max(0, MIN_LOADING_BAR_MS - elapsed);\r\n\r\n    if (wait > 0) await new Promise(r => setTimeout(r, wait));\r\n    await new Promise(r => setTimeout(r, 450));\r\n\r\n    if (loadingWrapEl) loadingWrapEl.style.display = 'none';\r\n    if (loadingBarInnerEl) loadingBarInnerEl.style.width = '0%';\r\n    if (progressLabelEl) progressLabelEl.textContent = '0%';\r\n    if (loadingTextEl) {\r\n      loadingTextEl.textContent =\r\n        'Daten werden geladen. Es kann einen Moment dauern, bis Ergebnisse angezeigt werden.';\r\n    }\r\n    if (refreshStateEl) {\r\n      refreshStateEl.classList.remove('naechstes-refresh-state-inline', 'is-loading');\r\n      refreshStateEl.textContent = 'Status wird geladen';\r\n    }\r\n\r\n    progressValue = 0;\r\n  }\r\n\r\n  function setRefreshState(state) {\r\n    if (headerStateEl) {\r\n      headerStateEl.textContent =\r\n        state === 'loading' ? 'Aktualisierung im Hintergrund' : 'Live aktualisiert';\r\n    }\r\n  }\r\n\r\n  function formatStamp(date) {\r\n    return date.toLocaleString('de-DE', {\r\n      day: '2-digit',\r\n      month: '2-digit',\r\n      hour: '2-digit',\r\n      minute: '2-digit',\r\n      timeZone: 'Europe\/Berlin'\r\n    }) + ' Uhr';\r\n  }\r\n\r\n  async function fetchWithProxies(icsUrl) {\r\n    let lastError = null;\r\n\r\n    for (const buildUrl of CORSPROXIES) {\r\n      try {\r\n        const response = await fetch(buildUrl(icsUrl), { method: 'GET' });\r\n        if (!response.ok) continue;\r\n\r\n        const text = await response.text();\r\n        if (text && text.includes('BEGIN:VCALENDAR')) return text;\r\n      } catch (err) {\r\n        lastError = err;\r\n      }\r\n    }\r\n\r\n    throw new Error('ICS konnte nicht geladen werden: ' + (lastError ? lastError.message : 'unbekannt'));\r\n  }\r\n\r\n  function unfoldLines(lines) {\r\n    const unfolded = [];\r\n\r\n    for (let i = 0; i < lines.length; i++) {\r\n      let line = lines[i];\r\n\r\n      while (\r\n        i + 1 < lines.length &&\r\n        (lines[i + 1].startsWith(' ') || lines[i + 1].startsWith('\\t'))\r\n      ) {\r\n        line += lines[i + 1].slice(1);\r\n        i++;\r\n      }\r\n\r\n      unfolded.push(line);\r\n    }\r\n\r\n    return unfolded;\r\n  }\r\n\r\n  function cleanSummary(text) {\r\n    if (!text) return '';\r\n    return text\r\n      .replace(\/\\\\,\/g, ',')\r\n      .replace(\/\\\\;\/g, ';')\r\n      .replace(\/\\\\n\/g, ' ')\r\n      .replace(\/\\s*Vorschlag:\\s*\/gi, '')\r\n      .trim();\r\n  }\r\n\r\n  function parseIcsDate(rawValue, propKey) {\r\n    if (!rawValue) return null;\r\n\r\n    const value = rawValue.trim();\r\n    const isDateOnly = \/VALUE=DATE\/i.test(propKey) || \/^\\d{8}$\/.test(value);\r\n\r\n    if (isDateOnly) {\r\n      const y = value.slice(0, 4);\r\n      const m = value.slice(4, 6);\r\n      const d = value.slice(6, 8);\r\n      return new Date(`${y}-${m}-${d}T00:00:00`);\r\n    }\r\n\r\n    if (\/^\\d{8}T\\d{6}Z$\/.test(value)) {\r\n      const y = value.slice(0, 4);\r\n      const m = value.slice(4, 6);\r\n      const d = value.slice(6, 8);\r\n      const hh = value.slice(9, 11);\r\n      const mm = value.slice(11, 13);\r\n      const ss = value.slice(13, 15);\r\n      return new Date(`${y}-${m}-${d}T${hh}:${mm}:${ss}Z`);\r\n    }\r\n\r\n    if (\/^\\d{8}T\\d{6}$\/.test(value)) {\r\n      const y = value.slice(0, 4);\r\n      const m = value.slice(4, 6);\r\n      const d = value.slice(6, 8);\r\n      const hh = value.slice(9, 11);\r\n      const mm = value.slice(11, 13);\r\n      const ss = value.slice(13, 15);\r\n      return new Date(`${y}-${m}-${d}T${hh}:${mm}:${ss}`);\r\n    }\r\n\r\n    return null;\r\n  }\r\n\r\n  function parseICS(text, sourceType) {\r\n    const rawLines = text.split(\/\\r?\\n\/);\r\n    const lines = unfoldLines(rawLines);\r\n    const events = [];\r\n    let event = null;\r\n\r\n    for (let line of lines) {\r\n      line = line.trim();\r\n      if (!line) continue;\r\n\r\n      if (line.toUpperCase() === 'BEGIN:VEVENT') {\r\n        event = {};\r\n        continue;\r\n      }\r\n\r\n      if (line.toUpperCase() === 'END:VEVENT') {\r\n        if (event && event.datum && event.dtend && event.summary) {\r\n          event.sourceType = sourceType;\r\n          events.push(event);\r\n        }\r\n        event = null;\r\n        continue;\r\n      }\r\n\r\n      if (!event) continue;\r\n\r\n      const separatorIndex = line.indexOf(':');\r\n      if (separatorIndex === -1) continue;\r\n\r\n      const propKey = line.slice(0, separatorIndex).trim();\r\n      const propValue = line.slice(separatorIndex + 1).trim();\r\n      const upperKey = propKey.toUpperCase();\r\n\r\n      if (upperKey.startsWith('DTSTART')) {\r\n        event.datum = parseIcsDate(propValue, propKey);\r\n      } else if (upperKey.startsWith('DTEND')) {\r\n        event.dtend = parseIcsDate(propValue, propKey);\r\n      } else if (upperKey === 'SUMMARY') {\r\n        event.summary = cleanSummary(propValue);\r\n      } else if (upperKey === 'LOCATION') {\r\n        event.location = cleanSummary(propValue);\r\n      }\r\n    }\r\n\r\n    return events;\r\n  }\r\n\r\n  function formatInBerlin(date) {\r\n    const datum = date.toLocaleDateString('de-DE', {\r\n      day: '2-digit',\r\n      month: '2-digit',\r\n      timeZone: 'Europe\/Berlin'\r\n    });\r\n\r\n    const zeit = date.toLocaleTimeString('de-DE', {\r\n      hour: '2-digit',\r\n      minute: '2-digit',\r\n      hour12: false,\r\n      timeZone: 'Europe\/Berlin'\r\n    });\r\n\r\n    return { datum, zeit };\r\n  }\r\n\r\n  function getBerlinDateParts(date) {\r\n    const parts = new Intl.DateTimeFormat('de-DE', {\r\n      timeZone: 'Europe\/Berlin',\r\n      year: 'numeric',\r\n      month: '2-digit',\r\n      day: '2-digit'\r\n    }).formatToParts(date);\r\n\r\n    const map = {};\r\n    parts.forEach(p => {\r\n      if (p.type !== 'literal') map[p.type] = p.value;\r\n    });\r\n\r\n    return {\r\n      year: map.year,\r\n      month: map.month,\r\n      day: map.day\r\n    };\r\n  }\r\n\r\n  function isSameBerlinDay(d1, d2) {\r\n    const a = getBerlinDateParts(d1);\r\n    const b = getBerlinDateParts(d2);\r\n    return a.year === b.year && a.month === b.month && a.day === b.day;\r\n  }\r\n\r\n  function isRunningNow(ev, jetzt) {\r\n    return jetzt >= ev.datum && jetzt < ev.dtend;\r\n  }\r\n\r\n  function isUpcomingToday(ev, jetzt) {\r\n    return isSameBerlinDay(ev.datum, jetzt) && ev.datum > jetzt;\r\n  }\r\n\r\n  function normalizeClubName(name) {\r\n    return (name || '')\r\n      .toLowerCase()\r\n      .normalize('NFD')\r\n      .replace(\/[\\u0300-\\u036f]\/g, '')\r\n      .replace(\/\u00e4\/g, 'ae')\r\n      .replace(\/\u00f6\/g, 'oe')\r\n      .replace(\/\u00fc\/g, 'ue')\r\n      .replace(\/\u00df\/g, 'ss')\r\n      .replace(\/[^\\w\\s]\/g, ' ')\r\n      .replace(\/\\bsv\\b\/g, 'sv')\r\n      .replace(\/\\bvfl\\b\/g, 'vfl')\r\n      .replace(\/\\btus\\b\/g, 'tus')\r\n      .replace(\/\\bsc\\b\/g, 'sc')\r\n      .replace(\/\\bfc\\b\/g, 'fc')\r\n      .replace(\/\\bspvg\\b\/g, 'spvg')\r\n      .replace(\/\\bbv\\b\/g, 'bv')\r\n      .replace(\/\\s+\/g, ' ')\r\n      .trim();\r\n  }\r\n\r\n  function getHomeClub(summary) {\r\n    if (!summary) return null;\r\n\r\n    const cleaned = cleanSummary(summary)\r\n      .replace(\/\\s+\u2013\\s+\/g, ' - ')\r\n      .replace(\/\\s+-\\s+\/g, ' - ')\r\n      .replace(\/\\s+vs\\.?\\s+\/gi, ' - ')\r\n      .replace(\/\\s+gegen\\s+\/gi, ' - ')\r\n      .replace(\/\\s+gg\\.?\\s+\/gi, ' - ')\r\n      .trim();\r\n\r\n    if (!cleaned.includes(' - ')) return cleaned;\r\n    return cleaned.split(' - ')[0].trim();\r\n  }\r\n\r\n  function findClubByName(homeClub) {\r\n    if (!homeClub) return null;\r\n\r\n    const normalizedHome = normalizeClubName(homeClub);\r\n    const aliasedName = ALIASES[normalizedHome] || homeClub;\r\n    const normalizedAliased = normalizeClubName(aliasedName);\r\n\r\n    let exact = CLUB_PLACES.find(club => normalizeClubName(club.name) === normalizedAliased);\r\n    if (exact) return exact;\r\n\r\n    let partial = CLUB_PLACES.find(club => {\r\n      const n = normalizeClubName(club.name);\r\n      return n.includes(normalizedAliased) || normalizedAliased.includes(n);\r\n    });\r\n    if (partial) return partial;\r\n\r\n    const searchWords = normalizedAliased.split(' ').filter(Boolean);\r\n\r\n    let scored = CLUB_PLACES\r\n      .map(club => {\r\n        const n = normalizeClubName(club.name);\r\n        const clubWords = n.split(' ').filter(Boolean);\r\n        let score = 0;\r\n\r\n        searchWords.forEach(word => {\r\n          if (clubWords.includes(word)) score += 3;\r\n          else if (n.includes(word)) score += 1;\r\n        });\r\n\r\n        return { club, score };\r\n      })\r\n      .sort((a, b) => b.score - a.score);\r\n\r\n    if (scored.length && scored[0].score >= 2) {\r\n      return scored[0].club;\r\n    }\r\n\r\n    return null;\r\n  }\r\n\r\n  function getSourceTag(ev, running) {\r\n    if (running) return { label: 'Live', className: 'tag-live' };\r\n    if (ev.sourceType === 'planned') return { label: 'Geplant', className: 'tag-planned' };\r\n    if (ev.sourceType === 'publish') return { label: 'Ver\u00f6ff.', className: 'tag-publish' };\r\n    return { label: 'Gebucht', className: 'tag-confirmed' };\r\n  }\r\n\r\n  function getEventClasses(ev, running) {\r\n    let classes = ['naechstes-event-item'];\r\n\r\n    if (running) {\r\n      classes.push('is-running');\r\n      return classes.join(' ');\r\n    }\r\n\r\n    if (ev.sourceType === 'planned') {\r\n      classes.push('is-planned');\r\n    } else if (ev.sourceType === 'publish') {\r\n      classes.push('is-publish');\r\n    } else {\r\n      classes.push('is-confirmed');\r\n    }\r\n\r\n    return classes.join(' ');\r\n  }\r\n\r\n  function getEventMeta(ev, running) {\r\n    if (running) return 'L\u00e4uft gerade \u00b7 Einsatz aktiv';\r\n    if (ev.sourceType === 'planned') return 'In Planung \u00b7 Termin kann sich noch \u00e4ndern';\r\n    if (ev.sourceType === 'publish') return 'Ver\u00f6ffentlichung der n\u00e4chsten Fototermine';\r\n    return 'Zugesagter Fototermin';\r\n  }\r\n\r\n  function renderEventCard(ev, jetzt) {\r\n    const { datum, zeit: startZeit } = formatInBerlin(ev.datum);\r\n    const { zeit: endZeit } = formatInBerlin(ev.dtend);\r\n    const running = isRunningNow(ev, jetzt);\r\n    const summaryClean = cleanSummary(ev.summary);\r\n    const classes = getEventClasses(ev, running);\r\n    const metaText = getEventMeta(ev, running);\r\n    const sourceTag = getSourceTag(ev, running);\r\n\r\n    return `\r\n      <article class=\"${classes}\">\r\n        <div class=\"naechstes-event-side\">\r\n          <div class=\"naechstes-event-date\">${datum}<\/div>\r\n          <div class=\"naechstes-event-time\">${startZeit}<\/div>\r\n          <div class=\"naechstes-event-submeta\">${endZeit} Uhr<\/div>\r\n        <\/div>\r\n\r\n        <div class=\"naechstes-event-meta\">\r\n          <div class=\"naechstes-event-summary\">${summaryClean}<\/div>\r\n          <div class=\"naechstes-event-tags\">\r\n            <span class=\"naechstes-tag ${sourceTag.className}\">${sourceTag.label}<\/span>\r\n          <\/div>\r\n          <div class=\"naechstes-event-submeta\">${metaText}<\/div>\r\n          ${running ? '<div class=\"naechstes-event-running-label\">L\u00e4uft gerade<\/div>' : ''}\r\n        <\/div>\r\n      <\/article>\r\n    `;\r\n  }\r\n\r\n  function renderEventList(target, events, jetzt, emptyText) {\r\n    if (!target) return;\r\n\r\n    if (!events.length) {\r\n      target.innerHTML = `<div class=\"naechstes-event-hint\">${emptyText}<\/div>`;\r\n      return;\r\n    }\r\n\r\n    target.innerHTML = events.map(ev => renderEventCard(ev, jetzt)).join('');\r\n  }\r\n\r\n  function updateBadge(heute, jetzt) {\r\n    if (!badgeEl) return;\r\n\r\n    const runningCount = heute.filter(e => isRunningNow(e, jetzt)).length;\r\n\r\n    badgeEl.className = '';\r\n\r\n    if (runningCount) {\r\n      badgeEl.classList.add('badge-running');\r\n      badgeEl.textContent = 'L\u00e4uft gerade';\r\n    } else if (heute.length) {\r\n      badgeEl.classList.add('badge-live');\r\n      badgeEl.textContent = 'Live';\r\n    } else {\r\n      badgeEl.classList.add('badge-offline');\r\n      badgeEl.textContent = 'Keine Termine';\r\n    }\r\n  }\r\n\r\n  function hideLivePanel() {\r\n    if (livePanelEl) {\r\n      livePanelEl.classList.add('is-hidden');\r\n      livePanelEl.setAttribute('aria-hidden', 'true');\r\n    }\r\n    if (gridEl) gridEl.classList.remove('has-live-map');\r\n  }\r\n\r\n  function showLivePanel() {\r\n    if (livePanelEl) {\r\n      livePanelEl.classList.remove('is-hidden');\r\n      livePanelEl.setAttribute('aria-hidden', 'false');\r\n    }\r\n    if (gridEl) gridEl.classList.add('has-live-map');\r\n\r\n    if (liveMap) {\r\n      setTimeout(() => liveMap.invalidateSize({ pan: false }), 60);\r\n      setTimeout(() => liveMap.invalidateSize({ pan: false }), 180);\r\n      setTimeout(() => liveMap.invalidateSize({ pan: false }), 320);\r\n    }\r\n  }\r\n\r\n  function initLiveMap() {\r\n    if (liveMap || typeof L === 'undefined') return;\r\n\r\n    liveMap = L.map('naechstesSpielMap', { zoomControl: true }).setView(MAP_ORIGIN, 11);\r\n\r\n    L.tileLayer('https:\/\/{s}.tile.openstreetmap.org\/{z}\/{x}\/{y}.png', {\r\n      maxZoom: 19,\r\n      attribution: '&copy; OpenStreetMap'\r\n    }).addTo(liveMap);\r\n  }\r\n\r\n  function showMap(club) {\r\n    if (!club || typeof L === 'undefined') return;\r\n\r\n    showLivePanel();\r\n\r\n    requestAnimationFrame(() => {\r\n      initLiveMap();\r\n      if (!liveMap) return;\r\n\r\n      if (titleEl) titleEl.textContent = 'Aktueller Einsatzort';\r\n      if (mapHintEl) mapHintEl.textContent = `Heimspielort: ${club.name}`;\r\n\r\n      if (liveMapMarker) {\r\n        liveMap.removeLayer(liveMapMarker);\r\n        liveMapMarker = null;\r\n      }\r\n\r\n      liveMapMarker = L.marker([club.lat, club.lon]).addTo(liveMap);\r\n      liveMapMarker.bindPopup(\r\n        `<strong>${club.name}<\/strong><br>${club.addr}<br><small>Live-Fototermin<\/small>`\r\n      );\r\n\r\n      liveMap.setView([club.lat, club.lon], 15, { animate: false });\r\n\r\n      const rerenderMap = () => {\r\n        if (!liveMap) return;\r\n        liveMap.invalidateSize({ pan: false });\r\n      };\r\n\r\n      setTimeout(rerenderMap, 60);\r\n      setTimeout(rerenderMap, 180);\r\n      setTimeout(() => {\r\n        rerenderMap();\r\n        if (liveMapMarker) liveMapMarker.openPopup();\r\n      }, 320);\r\n    });\r\n  }\r\n\r\n  function updateLiveMap(runningEvent) {\r\n    if (!runningEvent || typeof L === 'undefined') {\r\n      hideLivePanel();\r\n      return;\r\n    }\r\n\r\n    const homeClub = getHomeClub(runningEvent.summary) || runningEvent.location || '';\r\n    const club = findClubByName(homeClub);\r\n\r\n    if (!club) {\r\n      hideLivePanel();\r\n      return;\r\n    }\r\n\r\n    showMap(club);\r\n  }\r\n\r\n  async function loadCalendar(url, sourceType) {\r\n    const text = await fetchWithProxies(url);\r\n    return parseICS(text, sourceType);\r\n  }\r\n\r\n  async function updateNaechstesSpiel() {\r\n    if (refreshInProgress) return;\r\n    refreshInProgress = true;\r\n\r\n    const jetzt = new Date();\r\n\r\n    if (nowLineEl) {\r\n      nowLineEl.textContent =\r\n        'Jetzt \u00b7 ' +\r\n        jetzt.toLocaleTimeString('de-DE', {\r\n          hour: '2-digit',\r\n          minute: '2-digit',\r\n          hour12: false,\r\n          timeZone: 'Europe\/Berlin'\r\n        }) +\r\n        ' Uhr';\r\n    }\r\n\r\n    setRefreshState('loading');\r\n    showLoadingBar();\r\n    root.setAttribute('aria-busy', 'true');\r\n\r\n    try {\r\n      const confirmedPromise = loadCalendar(ICS_URL_CONFIRMED, 'confirmed').then(data => {\r\n        setProgress(34, 'Best\u00e4tigte Termine werden geladen \u2026');\r\n        return data;\r\n      });\r\n\r\n      const plannedPromise = loadCalendar(ICS_URL_PLANNED, 'planned').then(data => {\r\n        setProgress(66, 'Geplante Termine werden geladen \u2026');\r\n        return data;\r\n      });\r\n\r\n      const publishPromise = loadCalendar(ICS_URL_PUBLISH, 'publish').then(data => {\r\n        setProgress(90, 'Ver\u00f6ffentlichte Hinweise werden geladen \u2026');\r\n        return data;\r\n      });\r\n\r\n      const [confirmed, planned, publish] = await Promise.all([\r\n        confirmedPromise,\r\n        plannedPromise,\r\n        publishPromise\r\n      ]);\r\n\r\n      const allEvents = [...confirmed, ...planned, ...publish]\r\n        .filter(\r\n          e =>\r\n            e &&\r\n            e.datum instanceof Date &&\r\n            !isNaN(e.datum) &&\r\n            e.dtend instanceof Date &&\r\n            !isNaN(e.dtend)\r\n        )\r\n        .sort((a, b) => a.datum - b.datum);\r\n\r\n      const relevanteEvents = allEvents.filter(e => e.dtend > jetzt);\r\n      const heute = relevanteEvents.filter(e => isRunningNow(e, jetzt) || isUpcomingToday(e, jetzt));\r\n      const demnaechst = relevanteEvents.filter(e => !heute.includes(e)).slice(0, 4);\r\n      const runningEvent = allEvents.find(e => isRunningNow(e, jetzt)) || null;\r\n\r\n      updateBadge(heute, jetzt);\r\n      renderEventList(heuteListEl, heute, jetzt, 'Keine Fototermine heute');\r\n      renderEventList(demnaechstListEl, demnaechst, jetzt, 'Keine kommenden Fototermine');\r\n      updateLiveMap(runningEvent);\r\n\r\n      if (statusEl) {\r\n        statusEl.textContent =\r\n          `Letzter Stand: ${formatStamp(new Date())} \u00b7 \u00c4nderungen im Kalender werden automatisch \u00fcbernommen`;\r\n      }\r\n\r\n      hasLoadedOnce = true;\r\n      setRefreshState('idle');\r\n      await hideLoadingBar();\r\n    } catch (e) {\r\n      console.error('Fehler n\u00e4chstesSpiel:', e);\r\n\r\n      if (statusEl) {\r\n        statusEl.textContent =\r\n          'Aktualisierung fehlgeschlagen \u00b7 letzter bekannter Stand bleibt sichtbar';\r\n      }\r\n\r\n      if (!hasLoadedOnce && heuteListEl && !heuteListEl.innerHTML.trim()) {\r\n        heuteListEl.innerHTML =\r\n          '<div class=\"naechstes-event-hint\">Termine konnten gerade nicht geladen werden.<\/div>';\r\n      }\r\n\r\n      if (!hasLoadedOnce && demnaechstListEl && !demnaechstListEl.innerHTML.trim()) {\r\n        demnaechstListEl.innerHTML =\r\n          '<div class=\"naechstes-event-hint\">Keine Daten verf\u00fcgbar.<\/div>';\r\n      }\r\n\r\n      hideLivePanel();\r\n      setRefreshState('idle');\r\n      await hideLoadingBar();\r\n    } finally {\r\n      root.setAttribute('aria-busy', 'false');\r\n      refreshInProgress = false;\r\n    }\r\n  }\r\n\r\n  updateNaechstesSpiel();\r\n  setInterval(updateNaechstesSpiel, 600000);\r\n\r\n  document.addEventListener('visibilitychange', () => {\r\n    if (!document.hidden) updateNaechstesSpiel();\r\n  });\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6dbae3e e-flex e-con-boxed e-con e-parent\" data-id=\"6dbae3e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-87e1aa3 elementor-widget elementor-widget-spacer\" data-id=\"87e1aa3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-aac079d e-con-full e-flex e-con e-parent\" data-id=\"aac079d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3b73c91 elementor-widget elementor-widget-html\" data-id=\"3b73c91\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"bls-status-inline\">\r\n  <style>\r\n    @import url('https:\/\/fonts.googleapis.com\/css2?family=Oswald:wght@500;600;700&family=Inter:wght@400;500;600;700&display=swap');\r\n\r\n    :root {\r\n      --nl-bg: #e5ebe6;\r\n      --nl-card: #f8f9fa;\r\n      --nl-card-soft: #f9fbfa;\r\n      --nl-text: #151b22;\r\n      --nl-text-soft: #67727d;\r\n      --nl-text-faint: #88929d;\r\n      --nl-border: rgba(21, 27, 34, 0.06);\r\n      --nl-border-strong: rgba(77, 134, 103, 0.12);\r\n      --nl-accent: #111827;\r\n      --nl-success: #4d8667;\r\n    }\r\n\r\n    .bls-status-inline {\r\n      font-family: \"Inter\", system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\r\n      max-width: 100%;\r\n      margin: 0 auto;\r\n      background: #e5ebe6;\r\n      border-radius: 0;\r\n      padding: 0.9rem 1rem 1rem;\r\n      border: 1px solid rgba(77, 134, 103, 0.12);\r\n      box-shadow: none;\r\n      color: var(--nl-text);\r\n    }\r\n\r\n    .bls-status-inline-title {\r\n      font-family: \"Oswald\", sans-serif;\r\n      font-size: 1rem;\r\n      font-weight: 600;\r\n      letter-spacing: 0.06em;\r\n      text-transform: uppercase;\r\n      color: #111827;\r\n      margin-bottom: 0.08rem;\r\n      line-height: 1.08;\r\n    }\r\n\r\n    .bls-status-inline-sub {\r\n      font-size: 0.81rem;\r\n      color: var(--nl-text-soft);\r\n      margin-bottom: 0.48rem;\r\n      line-height: 1.45;\r\n      max-width: 70ch;\r\n    }\r\n\r\n    .bls-status-inline-form {\r\n      display: flex;\r\n      flex-wrap: wrap;\r\n      align-items: center;\r\n      gap: 0.45rem;\r\n      padding: 0.15rem 0;\r\n    }\r\n\r\n    .bls-status-inline-input {\r\n      border-radius: 0;\r\n      border: 1px solid var(--nl-border-strong);\r\n      padding: 0.42rem 0.8rem;\r\n      font-size: 0.86rem;\r\n      min-width: 150px;\r\n      max-width: 220px;\r\n      flex: 0 1 auto;\r\n      background: #ffffff;\r\n      color: #111827;\r\n      transition: border-color 0.18s ease, box-shadow 0.18s ease, background 0.18s ease;\r\n    }\r\n\r\n    .bls-status-inline-input::placeholder {\r\n      color: #9ca3af;\r\n    }\r\n\r\n    .bls-status-inline-input:focus {\r\n      outline: none;\r\n      border-color: #94a3b8;\r\n      box-shadow: 0 0 0 2px rgba(148, 163, 184, 0.35);\r\n      background: #ffffff;\r\n    }\r\n\r\n    .bls-status-inline-button {\r\n      border-radius: 0;\r\n      border: 1px solid var(--nl-accent);\r\n      padding: 0.46rem 0.95rem;\r\n      font-size: 0.74rem;\r\n      font-weight: 800;\r\n      text-transform: uppercase;\r\n      letter-spacing: 0.11em;\r\n      background: var(--nl-accent);\r\n      color: #f9fafb;\r\n      cursor: pointer;\r\n      flex: 0 0 auto;\r\n      white-space: nowrap;\r\n      display: inline-flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      gap: 0.25rem;\r\n      box-shadow: none;\r\n      transition: transform 0.14s ease, box-shadow 0.14s ease, background 0.14s ease, color 0.14s ease, border-color 0.14s ease;\r\n    }\r\n\r\n    .bls-status-inline-button::before {\r\n      content: \"\";\r\n      width: 6px;\r\n      height: 6px;\r\n      background: #f9fafb;\r\n      flex: 0 0 auto;\r\n    }\r\n\r\n    .bls-status-inline-button:hover {\r\n      background: #1f2937;\r\n      border-color: #1f2937;\r\n      transform: translateY(-1px);\r\n      box-shadow: 0 3px 8px rgba(15, 23, 42, 0.16);\r\n    }\r\n\r\n    .bls-status-inline-button:focus-visible {\r\n      outline: 2px solid #94a3b8;\r\n      outline-offset: 3px;\r\n    }\r\n\r\n    .bls-status-inline-reset {\r\n      background: transparent;\r\n      color: var(--nl-text-soft);\r\n      border-color: var(--nl-border-strong);\r\n      box-shadow: none;\r\n    }\r\n\r\n    .bls-status-inline-reset::before {\r\n      background: var(--nl-text-faint);\r\n    }\r\n\r\n    .bls-status-inline-reset:hover {\r\n      background: #f3f4f6;\r\n      color: #111827;\r\n      border-color: var(--nl-border-strong);\r\n    }\r\n\r\n    .bls-status-inline-loading {\r\n      display: none;\r\n      margin-top: 0.55rem;\r\n    }\r\n\r\n    .bls-status-inline-loading-text {\r\n      font-size: 0.74rem;\r\n      color: var(--nl-text-soft);\r\n      line-height: 1.4;\r\n      margin-bottom: 0.26rem;\r\n    }\r\n\r\n    .bls-status-inline-progress {\r\n      position: relative;\r\n      width: 100%;\r\n      max-width: 420px;\r\n      height: 8px;\r\n      background: #dfe4e8;\r\n      border: 1px solid rgba(21, 27, 34, 0.06);\r\n      overflow: hidden;\r\n    }\r\n\r\n    .bls-status-inline-progress-bar {\r\n      width: 0%;\r\n      height: 100%;\r\n      background: linear-gradient(90deg, #65707b 0%, #4b5563 100%);\r\n      transition: width 0.35s ease;\r\n    }\r\n\r\n    .bls-status-inline-progress-meta {\r\n      margin-top: 0.22rem;\r\n      font-size: 0.7rem;\r\n      color: var(--nl-text-faint);\r\n      display: flex;\r\n      justify-content: space-between;\r\n      gap: 0.5rem;\r\n      max-width: 420px;\r\n    }\r\n\r\n    .bls-status-inline-hint {\r\n      margin-top: 0.45rem;\r\n      font-size: 0.74rem;\r\n      line-height: 1.45;\r\n      color: var(--nl-text-soft);\r\n      max-width: 72ch;\r\n    }\r\n\r\n    .bls-status-inline-error {\r\n      color: #b91c1c;\r\n      font-size: 0.78rem;\r\n      margin-top: 0.35rem;\r\n      line-height: 1.4;\r\n    }\r\n\r\n    .bls-status-inline-result {\r\n      margin-top: 0.45rem;\r\n      display: grid;\r\n      gap: 0.35rem;\r\n    }\r\n\r\n    .bls-status-card {\r\n      position: relative;\r\n      border: 1px solid var(--nl-border);\r\n      background: #ffffff;\r\n      padding: 0.55rem 0.7rem 0.58rem;\r\n      box-shadow: none;\r\n      transition: border-color 0.14s ease, background 0.14s ease, transform 0.14s ease;\r\n    }\r\n\r\n    .bls-status-card:hover {\r\n      border-color: var(--nl-border-strong);\r\n      transform: translateY(-1px);\r\n    }\r\n\r\n    .bls-status-card::before {\r\n      content: \"\";\r\n      position: absolute;\r\n      left: 0;\r\n      top: 0;\r\n      bottom: 0;\r\n      width: 3px;\r\n      background: rgba(107, 114, 128, 0.35);\r\n    }\r\n\r\n    .bls-status-card-header {\r\n      display: grid;\r\n      grid-template-columns: 1fr auto;\r\n      gap: 0.35rem 0.8rem;\r\n      align-items: start;\r\n      margin-bottom: 0.16rem;\r\n    }\r\n\r\n    .bls-status-card-title {\r\n      font-size: 0.78rem;\r\n      font-weight: 700;\r\n      color: #111827;\r\n      line-height: 1.35;\r\n    }\r\n\r\n    .bls-status-card-date {\r\n      font-size: 0.73rem;\r\n      font-weight: 600;\r\n      color: var(--nl-text-soft);\r\n      white-space: nowrap;\r\n      line-height: 1.3;\r\n    }\r\n\r\n    .bls-status-card-meta {\r\n      display: flex;\r\n      flex-wrap: wrap;\r\n      gap: 0.35rem 0.5rem;\r\n      align-items: center;\r\n      margin-bottom: 0.28rem;\r\n      font-size: 0.72rem;\r\n      color: var(--nl-text-soft);\r\n      line-height: 1.35;\r\n    }\r\n\r\n    .bls-status-badge {\r\n      display: inline-flex;\r\n      align-items: center;\r\n      padding: 0.14rem 0.42rem;\r\n      font-size: 0.63rem;\r\n      font-weight: 800;\r\n      text-transform: uppercase;\r\n      letter-spacing: 0.08em;\r\n      border: 1px solid rgba(21, 27, 34, 0.08);\r\n      background: #eef1f3;\r\n      color: #56616d;\r\n      white-space: nowrap;\r\n    }\r\n\r\n    .bls-status-card-game {\r\n      font-size: 0.73rem;\r\n      color: #55606c;\r\n    }\r\n\r\n    .bls-status-card-body {\r\n      font-size: 0.76rem;\r\n      color: #374151;\r\n      line-height: 1.45;\r\n    }\r\n\r\n    .bls-status-card-gebucht {\r\n      background: #fbfcfb;\r\n    }\r\n\r\n    .bls-status-card-gebucht::before {\r\n      background: #4d8667;\r\n    }\r\n\r\n    .bls-status-card-vorgemerkt {\r\n      background: #fcfbf8;\r\n    }\r\n\r\n    .bls-status-card-vorgemerkt::before {\r\n      background: #9a7b44;\r\n    }\r\n\r\n    .bls-status-card-neue-anfrage {\r\n      background: #fcfafc;\r\n    }\r\n\r\n    .bls-status-card-neue-anfrage::before {\r\n      background: #7c6a8e;\r\n    }\r\n\r\n    .bls-status-card-geplant {\r\n      background: #fafbfd;\r\n    }\r\n\r\n    .bls-status-card-geplant::before {\r\n      background: #5e789b;\r\n    }\r\n\r\n    .bls-status-card-kein {\r\n      background: #f3f4f6;\r\n    }\r\n\r\n    .bls-status-card-kein::before {\r\n      background: #9aa3ad;\r\n    }\r\n\r\n    .bls-status-card-kein .bls-status-card-body {\r\n      font-size: 0.77rem;\r\n    }\r\n\r\n    @media (max-width: 700px) {\r\n      .bls-status-inline-input {\r\n        flex: 1 1 100%;\r\n        max-width: 100%;\r\n      }\r\n\r\n      .bls-status-inline-button {\r\n        width: 100%;\r\n        justify-content: center;\r\n      }\r\n\r\n      .bls-status-card-header {\r\n        grid-template-columns: 1fr;\r\n        gap: 0.12rem;\r\n      }\r\n\r\n      .bls-status-card-date {\r\n        white-space: normal;\r\n      }\r\n\r\n      .bls-status-inline-progress,\r\n      .bls-status-inline-progress-meta {\r\n        max-width: 100%;\r\n      }\r\n    }\r\n  <\/style>\r\n\r\n  <div class=\"bls-status-inline-title\">Terminstatus-Abfrage<\/div>\r\n  <div class=\"bls-status-inline-sub\">\r\n    Pr\u00fcfe hier den aktuellen Status deines Fotowunschs (Verein + Altersklasse, z.&nbsp;B. \u201eJ\u00f6llenbeck\u201c &amp; \u201eU15\u201c).\r\n  <\/div>\r\n\r\n  <form class=\"bls-status-inline-form\" id=\"blsInlineForm\">\r\n    <input\r\n      type=\"text\"\r\n      id=\"blsInlineVerein\"\r\n      class=\"bls-status-inline-input\"\r\n      placeholder=\"Verein (z.\u202fB. J\u00f6llenbeck)\"\r\n      autocomplete=\"off\"\r\n    >\r\n    <input\r\n      type=\"text\"\r\n      id=\"blsInlineAk\"\r\n      class=\"bls-status-inline-input\"\r\n      placeholder=\"AK (z.\u202fB. U15 \u2013 optional)\"\r\n      autocomplete=\"off\"\r\n    >\r\n    <button type=\"submit\" class=\"bls-status-inline-button\">\r\n      Stand abfragen\r\n    <\/button>\r\n    <button type=\"button\" class=\"bls-status-inline-button bls-status-inline-reset\">\r\n      Zur\u00fccksetzen\r\n    <\/button>\r\n  <\/form>\r\n\r\n  <div class=\"bls-status-inline-loading\" id=\"blsInlineLoading\">\r\n    <div class=\"bls-status-inline-loading-text\" id=\"blsInlineLoadingText\">\r\n      Daten werden geladen. Es kann einen Moment dauern, bis Ergebnisse angezeigt werden.\r\n    <\/div>\r\n    <div class=\"bls-status-inline-progress\" aria-hidden=\"true\">\r\n      <div class=\"bls-status-inline-progress-bar\" id=\"blsInlineProgressBar\"><\/div>\r\n    <\/div>\r\n    <div class=\"bls-status-inline-progress-meta\">\r\n      <span>Status wird geladen<\/span>\r\n      <span id=\"blsInlineProgressLabel\">0%<\/span>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"bls-status-inline-hint\">\r\n    Hinweis: Neue Eintr\u00e4ge oder frisch ge\u00e4nderte Kalenderdaten k\u00f6nnen mit leichter Verz\u00f6gerung erscheinen. Wenn zun\u00e4chst nichts angezeigt wird, versuche es bitte kurz darauf erneut.\r\n  <\/div>\r\n\r\n  <div class=\"bls-status-inline-error\" id=\"blsInlineError\" style=\"display:none;\"><\/div>\r\n  <div class=\"bls-status-inline-result\" id=\"blsInlineResult\" style=\"display:none;\"><\/div>\r\n\r\n  <script>\r\n    (function() {\r\n      const CORS_PROXIES = [\r\n        { name: \"AllOrigins\", url: (icsUrl) => \"https:\/\/api.allorigins.win\/raw?url=\" + encodeURIComponent(icsUrl) },\r\n        { name: \"Cors.sh\", url: (icsUrl) => \"https:\/\/cors.sh\/\" + icsUrl },\r\n        { name: \"CorsProxy.io\", url: (icsUrl) => \"https:\/\/corsproxy.io\/?\" + encodeURIComponent(icsUrl) },\r\n        { name: \"ThingProxy\", url: (icsUrl) => \"https:\/\/thingproxy.freeboard.io\/fetch\/\" + icsUrl },\r\n        { name: \"CORS.lol\", url: (icsUrl) => \"https:\/\/api.cors.lol\/?url=\" + encodeURIComponent(icsUrl) },\r\n        { name: \"Cloudflare-CORS-Anywhere\", url: (icsUrl) => \"https:\/\/cloudflare-cors-anywhere.herokuapp.com\/\" + icsUrl },\r\n        { name: \"Codetabs\", url: (icsUrl) => \"https:\/\/api.codetabs.com\/v1\/proxy?quest=\" + encodeURIComponent(icsUrl) },\r\n        { name: \"CORS-Anywhere\", url: (icsUrl) => \"https:\/\/cors-anywhere.herokuapp.com\/\" + icsUrl }\r\n      ];\r\n\r\n      async function fetchWithProxies(icsUrl) {\r\n        let lastError = null;\r\n        for (const proxy of CORS_PROXIES) {\r\n          try {\r\n            const response = await fetch(proxy.url(icsUrl));\r\n            if (response.ok) {\r\n              return await response.text();\r\n            }\r\n          } catch (e) {\r\n            lastError = e;\r\n          }\r\n        }\r\n        throw new Error(\"Alle Proxies fehlgeschlagen: \" + (lastError ? lastError.message : \"\"));\r\n      }\r\n\r\n      const ICS_URL_FESTE      = \"https:\/\/export.kalender.digital\/ics\/4615281\/b40e8d17b4be6185fe64\/fototerminbesttigt.ics?past_months=3&future_months=6\";\r\n      const ICS_URL_VORGEMERKT = \"https:\/\/export.kalender.digital\/ics\/4863317\/b40e8d17b4be6185fe64\/vorgemerktnochkeinefestebuchung.ics?past_months=3&future_months=6\";\r\n      const ICS_URL_GEPLANT    = \"https:\/\/export.kalender.digital\/ics\/4863324\/b40e8d17b4be6185fe64\/inplanung.ics?past_months=3&future_months=6\";\r\n\r\n      let datenKlein = [];\r\n      let isLoading = false;\r\n      let lastLoadTime = 0;\r\n\r\n      const form = document.getElementById(\"blsInlineForm\");\r\n      const inputVerein = document.getElementById(\"blsInlineVerein\");\r\n      const inputAk = document.getElementById(\"blsInlineAk\");\r\n      const errorEl = document.getElementById(\"blsInlineError\");\r\n      const resultEl = document.getElementById(\"blsInlineResult\");\r\n      const loadingEl = document.getElementById(\"blsInlineLoading\");\r\n      const loadingTextEl = document.getElementById(\"blsInlineLoadingText\");\r\n      const progressBar = document.getElementById(\"blsInlineProgressBar\");\r\n      const progressLabel = document.getElementById(\"blsInlineProgressLabel\");\r\n      const resetBtn = document.querySelector(\".bls-status-inline-reset\");\r\n\r\n      const STATUS_TEXTS = {\r\n        vorgemerkt:\r\n          \"Aktuell erfasst und gesichtet, aber noch ohne feste Zusage. Die finale Entscheidung f\u00e4llt freitags.\",\r\n        \"neue-anfrage\":\r\n          \"Dein Terminwunsch wurde eingetragen, aber bisher noch nicht von uns gesichtet.\",\r\n        geplant:\r\n          \"Das Spiel ist aktuell in der engeren Auswahl. Der Status kann sich noch \u00e4ndern.\",\r\n        gebucht:\r\n          \"Wir kommen zu eurem Spiel. \u00c4nderungen sind nur in Ausnahmef\u00e4llen m\u00f6glich.\",\r\n        keinTreffer:\r\n          \"Aktuell wurde kein passender Eintrag gefunden. Bitte sp\u00e4ter erneut versuchen.\"\r\n      };\r\n\r\n      const STATUS_LABELS = {\r\n        vorgemerkt: \"Vorgemerkt\",\r\n        \"neue-anfrage\": \"Neue Anfrage\",\r\n        geplant: \"In Planung\",\r\n        gebucht: \"Gebucht\",\r\n        keinTreffer: \"Kein Treffer\"\r\n      };\r\n\r\n      function setProgress(p, text) {\r\n        const clamped = Math.max(0, Math.min(100, Math.round(p)));\r\n\r\n        if (loadingEl) loadingEl.style.display = \"block\";\r\n        if (progressBar) progressBar.style.width = clamped + \"%\";\r\n        if (progressLabel) progressLabel.textContent = clamped + \"%\";\r\n        if (loadingTextEl && text) loadingTextEl.textContent = text;\r\n\r\n        if (progressBar) {\r\n          progressBar.style.background = clamped === 100\r\n            ? \"linear-gradient(90deg, #5d8d72 0%, #4d8667 100%)\"\r\n            : \"linear-gradient(90deg, #65707b 0%, #4b5563 100%)\";\r\n        }\r\n      }\r\n\r\n      function hideLoading() {\r\n        if (loadingEl) loadingEl.style.display = \"none\";\r\n      }\r\n\r\n      function normalize(text) {\r\n        return (text || \"\").toString().trim().toLowerCase();\r\n      }\r\n\r\n      function normalizeClubNameSimple(name) {\r\n        let n = (name || \"\").toUpperCase().trim();\r\n\r\n        n = n.replace(\/J\u00d6LLENEBECK\/gi, \"J\u00d6LLENBECK\");\r\n        n = n.replace(\/JOLLENBECK\/gi, \"J\u00d6LLENBECK\");\r\n\r\n        n = n.replace(\/\\bVFR\\b\/g, \"VFR\");\r\n        n = n.replace(\/\\bVFR\\.\/g, \"VFR\");\r\n        n = n.replace(\/\\bVFR\/g, \"VFR\");\r\n\r\n        const prefixes = [\"TUS\",\"TSV\",\"SC\",\"SV\",\"VFL\",\"VFR\",\"DSC\",\"KF\",\"KUS\",\"FC\",\"TG\",\"SPVG\",\"SCE\",\"VFB\",\"TV\",\"SG\",\"NK\",\"BSW\",\"BV\",\"TFC\",\"KSC\",\"GSV\",\"SUK\"];\r\n        for (const p of prefixes) {\r\n          if (n.startsWith(p + \" \")) {\r\n            n = n.substring(p.length + 1).trim();\r\n            break;\r\n          }\r\n        }\r\n        return n.toLowerCase();\r\n      }\r\n\r\n      function extractPartieTeamsFromBeschreibung(desc) {\r\n        if (!desc) return null;\r\n\r\n        let txt = String(desc)\r\n          .replace(\/\\\\n\/g, \" \")\r\n          .replace(\/\\s+\/g, \" \");\r\n\r\n        const m = txt.match(\/Welches?\\s*Spiel\\s*\\(Partie\\)\\?\\s*:(.*?)(?:\\sPreis:|$)\/i);\r\n        if (!m || !m[1]) return null;\r\n\r\n        const partieLine = m[1].trim();\r\n        let heim = \"\";\r\n        let gast = \"\";\r\n\r\n        if (partieLine.includes(\" vs \")) {\r\n          const parts = partieLine.split(\" vs \");\r\n          heim = parts[0].trim();\r\n          gast = parts[1].trim();\r\n        } else if (partieLine.includes(\" vs.\")) {\r\n          const parts = partieLine.split(\" vs.\");\r\n          heim = parts[0].trim();\r\n          gast = parts[1].trim();\r\n        } else if (partieLine.includes(\" - \")) {\r\n          const parts = partieLine.split(\" - \");\r\n          heim = parts[0].trim();\r\n          gast = parts[1].trim();\r\n        } else if (partieLine.toLowerCase().includes(\" gegen \")) {\r\n          const parts = partieLine.split(\/gegen\/i);\r\n          heim = parts[0].trim();\r\n          gast = parts[1].trim();\r\n        } else {\r\n          heim = partieLine.trim();\r\n        }\r\n\r\n        return { partie: partieLine, heim, gast };\r\n      }\r\n\r\n      function extractTeamsFromSummary(summary) {\r\n        if (!summary) return { heim: \"\", gast: \"\" };\r\n        let line = summary;\r\n\r\n        if (line.includes(\" - \")) {\r\n          const parts = line.split(\" - \");\r\n          return { heim: parts[0].trim(), gast: parts[1].trim() };\r\n        }\r\n\r\n        if (line.includes(\" vs \")) {\r\n          const parts = line.split(\" vs \");\r\n          return { heim: parts[0].trim(), gast: parts[1].trim() };\r\n        }\r\n\r\n        if (line.includes(\" : \")) {\r\n          const parts = line.split(\" : \");\r\n          return { heim: parts[0].trim(), gast: parts[1].trim() };\r\n        }\r\n\r\n        return { heim: line.trim(), gast: \"\" };\r\n      }\r\n\r\n      function parseICS(text, statusTyp) {\r\n        const lines = (text || \"\").split(\/\\r?\\n\/);\r\n        let event = null;\r\n\r\n        lines.forEach((line) => {\r\n          if (line === \"BEGIN:VEVENT\") {\r\n            event = {};\r\n          } else if (line === \"END:VEVENT\") {\r\n            if (event && event.datum) {\r\n              const teams = extractTeamsFromSummary(event.partie || \"\");\r\n              datenKlein.push({\r\n                datum: event.datum,\r\n                mannschaft: event.mannschaft || \"\",\r\n                altersklasse: event.altersklasse || \"\",\r\n                partie: event.partie || \"\",\r\n                beschreibung: event.beschreibung || \"\",\r\n                heimTeam: teams.heim || \"\",\r\n                gastTeam: teams.gast || \"\",\r\n                vorgemerkt: statusTyp === \"vorgemerkt\",\r\n                bestellt: statusTyp === \"bestellt\",\r\n                geplant: statusTyp === \"geplant\"\r\n              });\r\n            }\r\n            event = null;\r\n          } else if (event) {\r\n            if (line.startsWith(\"DTSTART;VALUE=DATE:\")) {\r\n              const d = line.substr(19);\r\n              event.datum = new Date(d.slice(0,4) + \"-\" + d.slice(4,6) + \"-\" + d.slice(6));\r\n            } else if (line.startsWith(\"DTSTART:\")) {\r\n              const d = line.substr(8);\r\n              const year   = Number(d.slice(0,4));\r\n              const month  = Number(d.slice(4,6)) - 1;\r\n              const day    = Number(d.slice(6,8));\r\n              const hour   = Number(d.slice(9,11) || \"0\");\r\n              const minute = Number(d.slice(11,13) || \"0\");\r\n              const second = Number(d.slice(13,15) || \"0\");\r\n              event.datum = new Date(Date.UTC(year, month, day, hour, minute, second));\r\n            } else if (line.startsWith(\"SUMMARY:\")) {\r\n              const sum = line.substr(8);\r\n              event.partie = sum;\r\n              const m = sum.split(\" - \")[0] || sum;\r\n              event.mannschaft = m.replace(\/^U\\s*\\d+\\s+\/i, \"\").trim();\r\n              const akMatch = sum.match(\/\\bU\\s*[-\\\/]?\\s*(\\d{1,2})\\b\/i);\r\n              event.altersklasse = akMatch ? \"U\" + akMatch[1] : \"\";\r\n            } else if (line.startsWith(\"DESCRIPTION:\")) {\r\n              event.beschreibung = line.substr(12);\r\n            }\r\n          }\r\n        });\r\n      }\r\n\r\n      async function ladeDatenKlein() {\r\n        const now = Date.now();\r\n        if (isLoading) return;\r\n        if (now - lastLoadTime < 60 * 1000 && datenKlein.length) return;\r\n\r\n        isLoading = true;\r\n        errorEl.style.display = \"none\";\r\n        errorEl.textContent = \"\";\r\n\r\n        setProgress(8, \"Daten werden geladen. Es kann einen Moment dauern, bis Ergebnisse angezeigt werden.\");\r\n\r\n        try {\r\n          datenKlein = [];\r\n\r\n          const festePromise = fetchWithProxies(ICS_URL_FESTE).then(t => {\r\n            setProgress(34, \"Best\u00e4tigte Termine werden geladen \u2026\");\r\n            return t;\r\n          });\r\n\r\n          const vorgemerktPromise = fetchWithProxies(ICS_URL_VORGEMERKT).then(t => {\r\n            setProgress(66, \"Vorgemerkte Termine werden geladen \u2026\");\r\n            return t;\r\n          });\r\n\r\n          const geplantPromise = fetchWithProxies(ICS_URL_GEPLANT).then(t => {\r\n            setProgress(90, \"Geplante Termine werden geladen \u2026\");\r\n            return t;\r\n          });\r\n\r\n          const [feste, vorgemerkt, geplant] = await Promise.all([\r\n            festePromise,\r\n            vorgemerktPromise,\r\n            geplantPromise\r\n          ]);\r\n\r\n          parseICS(feste, \"bestellt\");\r\n          parseICS(vorgemerkt, \"vorgemerkt\");\r\n          parseICS(geplant, \"geplant\");\r\n\r\n          lastLoadTime = Date.now();\r\n          setProgress(100, \"Ergebnisse werden vorbereitet \u2026\");\r\n\r\n          setTimeout(() => {\r\n            hideLoading();\r\n          }, 450);\r\n\r\n        } catch (e) {\r\n          console.error(e);\r\n          setProgress(0, \"Die Daten konnten gerade nicht geladen werden.\");\r\n          errorEl.textContent = \"Fehler beim Laden der Daten. Bitte sp\u00e4ter erneut versuchen.\";\r\n          errorEl.style.display = \"block\";\r\n        } finally {\r\n          isLoading = false;\r\n        }\r\n      }\r\n\r\n      function statusKeyForEntry(entry) {\r\n        const summary = String(entry.partie || \"\").toLowerCase();\r\n        if (summary.includes(\"buchung\")) return \"neue-anfrage\";\r\n\r\n        const isGebucht = entry.bestellt && !entry.vorgemerkt && !entry.geplant;\r\n        if (isGebucht) return \"gebucht\";\r\n        if (entry.geplant) return \"geplant\";\r\n        if (entry.vorgemerkt) return \"vorgemerkt\";\r\n        return null;\r\n      }\r\n\r\n      function findeTreffer(vereinEingabe, akEingabe) {\r\n        if (!datenKlein.length) return [];\r\n\r\n        const clubInputNorm = normalizeClubNameSimple(vereinEingabe);\r\n        const akInputNorm = normalize(akEingabe);\r\n\r\n        const jetzt = new Date();\r\n        const filtered = datenKlein.filter(d => d.datum && d.datum >= jetzt);\r\n\r\n        const matches = filtered.filter(d => {\r\n          const key = statusKeyForEntry(d);\r\n\r\n          let clubNames = [d.mannschaft, d.heimTeam, d.gastTeam];\r\n\r\n          if (key === \"neue-anfrage\") {\r\n            const extra = extractPartieTeamsFromBeschreibung(d.beschreibung || \"\");\r\n            if (extra) {\r\n              clubNames.push(extra.heim, extra.gast);\r\n            }\r\n          }\r\n\r\n          const vereinMatch = clubNames.some(name => {\r\n            const norm = normalizeClubNameSimple(name || \"\");\r\n            if (!norm) return false;\r\n            return norm.includes(clubInputNorm) || clubInputNorm.includes(norm);\r\n          });\r\n          if (!vereinMatch) return false;\r\n\r\n          if (!akInputNorm) return true;\r\n          const akNorm = normalize(d.altersklasse || \"\");\r\n          return akNorm === akInputNorm || akNorm.includes(akInputNorm) || akInputNorm.includes(akNorm);\r\n        });\r\n\r\n        return matches.sort((a, b) => a.datum - b.datum);\r\n      }\r\n\r\n      function renderTreffer(treffer) {\r\n        resultEl.style.display = \"block\";\r\n\r\n        if (!treffer.length) {\r\n          resultEl.innerHTML =\r\n            '<div class=\"bls-status-card bls-status-card-kein\">' +\r\n              '<div class=\"bls-status-card-body\">' + STATUS_TEXTS.keinTreffer + '<\/div>' +\r\n            '<\/div>';\r\n          return;\r\n        }\r\n\r\n        const html = treffer.map(t => {\r\n          const key = statusKeyForEntry(t);\r\n          const text = key && STATUS_TEXTS[key] ? STATUS_TEXTS[key] : STATUS_TEXTS.keinTreffer;\r\n          const label = key && STATUS_LABELS[key] ? STATUS_LABELS[key] : STATUS_LABELS.keinTreffer;\r\n\r\n          let cardClass = \"bls-status-card-kein\";\r\n          if (key === \"gebucht\") cardClass = \"bls-status-card-gebucht\";\r\n          else if (key === \"geplant\") cardClass = \"bls-status-card-geplant\";\r\n          else if (key === \"vorgemerkt\") cardClass = \"bls-status-card-vorgemerkt\";\r\n          else if (key === \"neue-anfrage\") cardClass = \"bls-status-card-neue-anfrage\";\r\n\r\n          const datumStr = t.datum.toLocaleDateString(\"de-DE\", {\r\n            day: \"2-digit\",\r\n            month: \"2-digit\",\r\n            year: \"numeric\"\r\n          });\r\n\r\n          const uhrzeitStr = t.datum.toLocaleTimeString(\"de-DE\", {\r\n            hour: \"2-digit\",\r\n            minute: \"2-digit\",\r\n            hour12: false\r\n          });\r\n\r\n          const extra = extractPartieTeamsFromBeschreibung(t.beschreibung || \"\");\r\n          const headerHeim = extra && extra.heim ? extra.heim : (t.heimTeam || t.mannschaft || \"\");\r\n          const headerGast = extra && extra.gast ? extra.gast : (t.gastTeam || \"\");\r\n          const partieStr = extra ? extra.partie : (t.partie || \"(Partie noch nicht hinterlegt)\");\r\n          const akStr = t.altersklasse ? t.altersklasse : \"ohne AK\";\r\n\r\n          return (\r\n            '<div class=\"bls-status-card ' + cardClass + '\">' +\r\n              '<div class=\"bls-status-card-header\">' +\r\n                '<div class=\"bls-status-card-title\">' +\r\n                  headerHeim + (headerGast ? \" vs \" + headerGast : \"\") +\r\n                '<\/div>' +\r\n                '<div class=\"bls-status-card-date\">' + datumStr + ' \u2022 ' + uhrzeitStr + '<\/div>' +\r\n              '<\/div>' +\r\n              '<div class=\"bls-status-card-meta\">' +\r\n                '<span class=\"bls-status-badge\">' + label + '<\/span>' +\r\n                '<span>' + akStr + '<\/span>' +\r\n                '<span class=\"bls-status-card-game\">' + partieStr + '<\/span>' +\r\n              '<\/div>' +\r\n              '<div class=\"bls-status-card-body\">' + text + '<\/div>' +\r\n            '<\/div>'\r\n          );\r\n        }).join(\"\");\r\n\r\n        resultEl.innerHTML = html;\r\n      }\r\n\r\n      form.addEventListener(\"submit\", async function(e) {\r\n        e.preventDefault();\r\n        errorEl.style.display = \"none\";\r\n        errorEl.textContent = \"\";\r\n        resultEl.style.display = \"none\";\r\n        resultEl.textContent = \"\";\r\n\r\n        const verein = inputVerein.value;\r\n        const ak = inputAk.value;\r\n\r\n        if (!verein || !verein.trim()) {\r\n          errorEl.textContent = \"Bitte gib mindestens einen Vereinsnamen ein.\";\r\n          errorEl.style.display = \"block\";\r\n          return;\r\n        }\r\n\r\n        await ladeDatenKlein();\r\n\r\n        if (!datenKlein.length) {\r\n          renderTreffer([]);\r\n          return;\r\n        }\r\n\r\n        const treffer = findeTreffer(verein, ak);\r\n        renderTreffer(treffer);\r\n      });\r\n\r\n      resetBtn.addEventListener(\"click\", function() {\r\n        form.reset();\r\n\r\n        errorEl.style.display = \"none\";\r\n        errorEl.textContent = \"\";\r\n        resultEl.style.display = \"none\";\r\n        resultEl.textContent = \"\";\r\n\r\n        if (loadingEl) loadingEl.style.display = \"none\";\r\n        if (progressBar) progressBar.style.width = \"0%\";\r\n        if (progressLabel) progressLabel.textContent = \"0%\";\r\n        if (loadingTextEl) {\r\n          loadingTextEl.textContent = \"Daten werden geladen. Es kann einen Moment dauern, bis Ergebnisse angezeigt werden.\";\r\n        }\r\n      });\r\n    })();\r\n  <\/script>\r\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-859009a e-flex e-con-boxed e-con e-parent\" data-id=\"859009a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9d48b7f elementor-widget elementor-widget-spacer\" data-id=\"9d48b7f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-ac67232 e-flex e-con-boxed e-con e-parent\" data-id=\"ac67232\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-97444bb elementor-widget elementor-widget-spacer\" data-id=\"97444bb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f9624a2 e-flex e-con-boxed e-con e-parent\" data-id=\"f9624a2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2be0a8b elementor-widget elementor-widget-html\" data-id=\"2be0a8b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<section class=\"bp-about\">\r\n  <div class=\"bp-about__inner\">\r\n    <div class=\"bp-about__eyebrow\">\u00dcber Blickpunkt Lokalsport<\/div>\r\n\r\n    <div class=\"bp-about__grid\">\r\n      <div class=\"bp-about__main\">\r\n        <h2 class=\"bp-about__title\">Fu\u00dfball aus der Region \u2013 nah dran<\/h2>\r\n\r\n        <p class=\"bp-about__text\">\r\n          Blickpunkt Lokalsport begleitet den Amateur- und Jugendfu\u00dfball in Bielefeld\r\n          und Ostwestfalen-Lippe mit Fotos, kurzen Berichten und Eindr\u00fccken direkt aus\r\n          den Vereinen.\r\n        <\/p>\r\n\r\n        <p class=\"bp-about__text\">\r\n          Im Fokus stehen Mannschaften, Nachwuchsfu\u00dfball, Ehrenamt und die vielen\r\n          kleinen Momente am Spielfeldrand, die den lokalen Fu\u00dfball besonders machen.\r\n        <\/p>\r\n\r\n        <div class=\"bp-about__highlight\">\r\n          <div class=\"bp-about__highlight-head\">\r\n            <h3 class=\"bp-about__highlight-title\">Kamerakids an der Seitenlinie<\/h3>\r\n          <\/div>\r\n\r\n          <div class=\"bp-about__highlight-layout\">\r\n            <figure class=\"bp-about__mini-figure\">\r\n              <img decoding=\"async\"\r\n                class=\"bp-about__mini-image bp-about__zoomable\"\r\n                src=\"http:\/\/blickpunkt-lokalsport.de\/wp-content\/uploads\/2026\/05\/AZ013494-scaled.jpeg\"\r\n                alt=\"Benjamin Hanke zusammen mit einem Kamerakid am Spielfeldrand\"\r\n                data-full=\"http:\/\/blickpunkt-lokalsport.de\/wp-content\/uploads\/2026\/05\/AZ013494-scaled.jpeg\"\r\n                data-caption=\"Gemeinsam am Spielfeldrand.\"\r\n                loading=\"lazy\"\r\n              >\r\n              <figcaption class=\"bp-about__mini-caption\">\r\n                Gemeinsam am Spielfeldrand.\r\n              <\/figcaption>\r\n            <\/figure>\r\n\r\n            <p class=\"bp-about__text bp-about__text--compact\">\r\n              Kinder und Jugendliche k\u00f6nnen mit den Kamerakids selbst hinter der Kamera\r\n              stehen, eigene Perspektiven entdecken und den Fu\u00dfball in ihrer Region\r\n              aktiv mit festhalten.\r\n            <\/p>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <aside class=\"bp-about__media\" aria-label=\"Blickpunkt Lokalsport Fotografie\">\r\n        <figure class=\"bp-about__figure\">\r\n          <img decoding=\"async\"\r\n            class=\"bp-about__image bp-about__zoomable\"\r\n            src=\"http:\/\/blickpunkt-lokalsport.de\/wp-content\/uploads\/2026\/05\/DSCF8577-scaled.jpeg\"\r\n            alt=\"Szene aus dem Amateur- oder Jugendfu\u00dfball in der Region, fotografiert von Blickpunkt Lokalsport\"\r\n            data-full=\"http:\/\/blickpunkt-lokalsport.de\/wp-content\/uploads\/2026\/05\/DSCF8577-scaled.jpeg\"\r\n            data-caption=\"Der Kopf hinter Blickpunkt Lokalsport ist Benjamin Hanke (Foto). Fotos (2): Andreas Zobe, NW\"\r\n            loading=\"lazy\"\r\n          >\r\n          <figcaption class=\"bp-about__caption\">\r\n            Der Kopf hinter Blickpunkt Lokalsport ist Benjamin Hanke (Foto). Fotos (2): Andreas Zobe, NW\r\n          <\/figcaption>\r\n        <\/figure>\r\n      <\/aside>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"bp-lightbox\" id=\"bpLightbox\" aria-hidden=\"true\">\r\n    <div class=\"bp-lightbox__inner\" role=\"dialog\" aria-modal=\"true\" aria-label=\"Bildansicht\">\r\n      <button class=\"bp-lightbox__close\" type=\"button\" aria-label=\"Bild schlie\u00dfen\">&times;<\/button>\r\n      <img decoding=\"async\" class=\"bp-lightbox__image\" id=\"bpLightboxImage\" src=\"\" alt=\"\">\r\n      <div class=\"bp-lightbox__caption\" id=\"bpLightboxCaption\"><\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<style>\r\n  .bp-about {\r\n    background: #f7f7f7;\r\n    border-top: 1px solid rgba(15,23,42,0.06);\r\n    border-bottom: 1px solid rgba(15,23,42,0.06);\r\n  }\r\n\r\n  .bp-about__inner {\r\n    width: min(100%, 1180px);\r\n    margin: 0 auto;\r\n    padding: 28px 16px 30px;\r\n    font-family: \"Inter\", system-ui, sans-serif;\r\n    color: #111827;\r\n  }\r\n\r\n  .bp-about__eyebrow {\r\n    display: inline-block;\r\n    margin-bottom: 10px;\r\n    color: #6b7280;\r\n    font-size: 0.68rem;\r\n    font-weight: 800;\r\n    text-transform: uppercase;\r\n    letter-spacing: 0.16em;\r\n  }\r\n\r\n  .bp-about__grid {\r\n    display: grid;\r\n    grid-template-columns: minmax(0, 1.15fr) minmax(300px, 0.85fr);\r\n    gap: 28px;\r\n    align-items: start;\r\n  }\r\n\r\n  .bp-about__main {\r\n    min-width: 0;\r\n  }\r\n\r\n  .bp-about h2,\r\n  .bp-about h3,\r\n  .bp-about h4 {\r\n    all: unset;\r\n    display: block;\r\n    box-sizing: border-box;\r\n  }\r\n\r\n  .bp-about__title {\r\n    margin: 0 0 12px;\r\n    font-family: \"Oswald\", sans-serif;\r\n    font-size: clamp(1.3rem, 2.1vw, 1.8rem);\r\n    line-height: 1.05;\r\n    text-transform: uppercase;\r\n    letter-spacing: 0.025em;\r\n    color: #0f172a;\r\n  }\r\n\r\n  .bp-about__text {\r\n    margin: 0 0 10px;\r\n    max-width: 64ch;\r\n    color: #374151;\r\n    font-size: 0.94rem;\r\n    line-height: 1.7;\r\n  }\r\n\r\n  .bp-about__text--compact {\r\n    margin: 0;\r\n    max-width: none;\r\n  }\r\n\r\n  .bp-about__highlight {\r\n    margin-top: 15px;\r\n    padding: 14px 15px 15px;\r\n    background: #f2f4f5;\r\n    border: 1px solid rgba(15,23,42,0.07);\r\n    box-shadow: 0 8px 20px rgba(15,23,42,0.04);\r\n  }\r\n\r\n  .bp-about__highlight-head {\r\n    margin-bottom: 10px;\r\n  }\r\n\r\n  .bp-about__highlight-title {\r\n    margin: 0;\r\n    font-family: \"Inter\", system-ui, sans-serif;\r\n    font-size: 0.82rem;\r\n    font-weight: 800;\r\n    text-transform: uppercase;\r\n    letter-spacing: 0.12em;\r\n    line-height: 1.35;\r\n    color: #8e2238;\r\n  }\r\n\r\n  .bp-about__highlight-layout {\r\n    display: grid;\r\n    grid-template-columns: 236px minmax(0, 1fr);\r\n    gap: 16px;\r\n    align-items: start;\r\n  }\r\n\r\n  .bp-about__mini-figure,\r\n  .bp-about__figure {\r\n    margin: 0;\r\n  }\r\n\r\n  .bp-about__mini-image,\r\n  .bp-about__image {\r\n    display: block;\r\n    width: 100%;\r\n    height: auto;\r\n    background: #e5e7eb;\r\n  }\r\n\r\n  .bp-about__mini-image {\r\n    border: 1px solid rgba(15,23,42,0.08);\r\n    box-shadow: 0 6px 18px rgba(15,23,42,0.06);\r\n  }\r\n\r\n  .bp-about__image {\r\n    border: 1px solid rgba(15,23,42,0.08);\r\n    box-shadow: 0 10px 28px rgba(15,23,42,0.08);\r\n  }\r\n\r\n  .bp-about__zoomable {\r\n    cursor: zoom-in;\r\n    transition: transform 180ms ease, opacity 180ms ease;\r\n  }\r\n\r\n  .bp-about__zoomable:hover {\r\n    transform: scale(1.01);\r\n    opacity: 0.96;\r\n  }\r\n\r\n  .bp-about__mini-caption {\r\n    margin-top: 5px;\r\n    color: #6b7280;\r\n    font-size: 0.68rem;\r\n    line-height: 1.4;\r\n  }\r\n\r\n  .bp-about__caption {\r\n    margin-top: 8px;\r\n    color: #6b7280;\r\n    font-size: 0.74rem;\r\n    line-height: 1.5;\r\n  }\r\n\r\n  .bp-about__media {\r\n    min-width: 0;\r\n  }\r\n\r\n  .bp-lightbox {\r\n    position: fixed;\r\n    inset: 0;\r\n    z-index: 9999;\r\n    display: none;\r\n    align-items: center;\r\n    justify-content: center;\r\n    padding: 24px;\r\n    background: linear-gradient(\r\n      rgba(15, 23, 42, 0.42),\r\n      rgba(15, 23, 42, 0.58)\r\n    );\r\n    backdrop-filter: blur(12px) saturate(120%);\r\n    -webkit-backdrop-filter: blur(12px) saturate(120%);\r\n  }\r\n\r\n  .bp-lightbox.is-open {\r\n    display: flex;\r\n  }\r\n\r\n  .bp-lightbox__inner {\r\n    position: relative;\r\n    width: min(100%, 1180px);\r\n    max-height: 92vh;\r\n  }\r\n\r\n  .bp-lightbox__image {\r\n    display: block;\r\n    max-width: 100%;\r\n    max-height: 82vh;\r\n    width: auto;\r\n    height: auto;\r\n    margin: 0 auto;\r\n    background: #111827;\r\n    border: 1px solid rgba(255,255,255,0.14);\r\n    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.28);\r\n  }\r\n\r\n  .bp-lightbox__caption {\r\n    margin-top: 10px;\r\n    color: #e5e7eb;\r\n    font-size: 0.85rem;\r\n    line-height: 1.5;\r\n    text-align: center;\r\n  }\r\n\r\n  .bp-lightbox__close {\r\n    position: absolute;\r\n    top: -14px;\r\n    right: -14px;\r\n    width: 42px;\r\n    height: 42px;\r\n    border: 1px solid rgba(255,255,255,0.18);\r\n    border-radius: 999px;\r\n    background: rgba(255,255,255,0.88);\r\n    color: #111827;\r\n    font-size: 1.5rem;\r\n    line-height: 1;\r\n    cursor: pointer;\r\n    box-shadow: 0 10px 24px rgba(0,0,0,0.18);\r\n    backdrop-filter: blur(8px);\r\n    -webkit-backdrop-filter: blur(8px);\r\n  }\r\n\r\n  @media (max-width: 920px) {\r\n    .bp-about__grid {\r\n      grid-template-columns: 1fr;\r\n      gap: 20px;\r\n    }\r\n\r\n    .bp-about__text {\r\n      max-width: none;\r\n    }\r\n  }\r\n\r\n  @media (max-width: 700px) {\r\n    .bp-about__highlight {\r\n      padding: 12px 12px 13px;\r\n    }\r\n\r\n    .bp-about__highlight-layout {\r\n      grid-template-columns: 1fr;\r\n      gap: 10px;\r\n    }\r\n\r\n    .bp-about__mini-caption {\r\n      font-size: 0.67rem;\r\n    }\r\n  }\r\n\r\n  @media (max-width: 640px) {\r\n    .bp-about__inner {\r\n      padding: 20px 14px 22px;\r\n    }\r\n\r\n    .bp-about__eyebrow {\r\n      margin-bottom: 8px;\r\n      font-size: 0.64rem;\r\n    }\r\n\r\n    .bp-about__title {\r\n      font-size: clamp(1.16rem, 5.5vw, 1.45rem);\r\n    }\r\n\r\n    .bp-about__text {\r\n      font-size: 0.88rem;\r\n      line-height: 1.66;\r\n    }\r\n\r\n    .bp-about__caption {\r\n      font-size: 0.7rem;\r\n    }\r\n\r\n    .bp-about__highlight-title {\r\n      font-size: 0.78rem;\r\n    }\r\n\r\n    .bp-lightbox {\r\n      padding: 14px;\r\n    }\r\n\r\n    .bp-lightbox__caption {\r\n      font-size: 0.78rem;\r\n    }\r\n\r\n    .bp-lightbox__close {\r\n      top: -8px;\r\n      right: -4px;\r\n      width: 38px;\r\n      height: 38px;\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<script>\r\n  (function () {\r\n    const images = document.querySelectorAll('.bp-about__zoomable');\r\n    const lightbox = document.getElementById('bpLightbox');\r\n    const lightboxImage = document.getElementById('bpLightboxImage');\r\n    const lightboxCaption = document.getElementById('bpLightboxCaption');\r\n    const closeButton = lightbox.querySelector('.bp-lightbox__close');\r\n\r\n    if (!images.length || !lightbox) return;\r\n\r\n    function openLightbox(image) {\r\n      lightboxImage.src = image.dataset.full || image.src;\r\n      lightboxImage.alt = image.alt || '';\r\n      lightboxCaption.textContent = image.dataset.caption || '';\r\n      lightbox.classList.add('is-open');\r\n      lightbox.setAttribute('aria-hidden', 'false');\r\n      document.body.style.overflow = 'hidden';\r\n    }\r\n\r\n    function closeLightbox() {\r\n      lightbox.classList.remove('is-open');\r\n      lightbox.setAttribute('aria-hidden', 'true');\r\n      lightboxImage.src = '';\r\n      lightboxImage.alt = '';\r\n      lightboxCaption.textContent = '';\r\n      document.body.style.overflow = '';\r\n    }\r\n\r\n    images.forEach((image) => {\r\n      image.addEventListener('click', function () {\r\n        openLightbox(image);\r\n      });\r\n    });\r\n\r\n    closeButton.addEventListener('click', closeLightbox);\r\n\r\n    lightbox.addEventListener('click', function (event) {\r\n      if (event.target === lightbox) {\r\n        closeLightbox();\r\n      }\r\n    });\r\n\r\n    document.addEventListener('keydown', function (event) {\r\n      if (event.key === 'Escape' && lightbox.classList.contains('is-open')) {\r\n        closeLightbox();\r\n      }\r\n    });\r\n  })();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-183e8e1 e-flex e-con-boxed e-con e-parent\" data-id=\"183e8e1\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-15ac88a elementor-widget elementor-widget-html\" data-id=\"15ac88a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<section class=\"bpl-donate\">\r\n  <div class=\"bpl-donate-inner\">\r\n    <details class=\"bpl-donate-accordion\" name=\"bpl-sections\">\r\n      <summary class=\"bpl-donate-summary\">\r\n\r\n        <div class=\"bpl-donate-summary__main\">\r\n          <span class=\"bpl-donate-summary__eyebrow\">Unterst\u00fctzen<\/span>\r\n          <span class=\"bpl-donate-summary__title\">Blickpunkt Lokalsport unterst\u00fctzen<\/span>\r\n        <\/div>\r\n\r\n        <div class=\"bpl-donate-summary__sub\">\r\n          Ehrenamtliche Fu\u00dfballfotografie im Amateur- und Jugendbereich braucht verl\u00e4ssliche Unterst\u00fctzung.\r\n        <\/div>\r\n\r\n        <div class=\"bpl-donate-summary__label\">Spenden<\/div>\r\n\r\n        <span class=\"bpl-donate-summary__icon\" aria-hidden=\"true\"><\/span>\r\n      <\/summary>\r\n\r\n      <div class=\"bpl-donate-panel\">\r\n        <div class=\"bpl-donate-layout\">\r\n\r\n          <div class=\"bpl-donate-copy\">\r\n            <span class=\"bpl-donate-copy__kicker\">Blickpunkt Lokalsport<\/span>\r\n\r\n            <h3 class=\"bpl-donate-copy__title\">\r\n              Fu\u00dfballfotografie f\u00fcr Vereine, Teams und Familien in der Region\r\n            <\/h3>\r\n\r\n            <p class=\"bpl-donate-copy__intro\">\r\n              Blickpunkt Lokalsport begleitet ehrenamtlich Spiele im Amateur- und Jugendfu\u00dfball in Bielefeld und der Region \u2013\r\n              mit Fotos direkt vom Spielfeldrand, regelm\u00e4\u00dfig und mit viel Zeitaufwand neben dem Berufsalltag.\r\n            <\/p>\r\n\r\n            <div class=\"bpl-donate-copy__block\">\r\n              <h4 class=\"bpl-donate-copy__subhead\">Wof\u00fcr Spenden helfen<\/h4>\r\n              <ul class=\"bpl-donate-list\">\r\n                <li>Fahrten zu Spielen in der Region<\/li>\r\n                <li>Technik, Speicher und Wartung<\/li>\r\n                <li>Software, Hosting und Online-Dienste<\/li>\r\n                <li>Sichtung, Bearbeitung und Ver\u00f6ffentlichung der Bilder<\/li>\r\n              <\/ul>\r\n            <\/div>\r\n\r\n            <div class=\"bpl-donate-note\">\r\n              <strong>Kurz gesagt:<\/strong>\r\n              Deine Unterst\u00fctzung hilft dabei, den Amateur- und Jugendfu\u00dfball sichtbar zu machen \u2013\r\n              verl\u00e4sslich, regional und dauerhaft.\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <div class=\"bpl-donate-embed-col\">\r\n            <div class=\"bpl-donate-embed-card\">\r\n              <div class=\"gfm-embed\"\r\n                   data-url=\"https:\/\/www.gofundme.com\/f\/dein-spiel-unser-fokus-fussballfotografie-aus-leidenschaft\/widget\/medium?sharesheet=undefined&attribution_id=sl:bbd91281-7a89-4691-beb4-909d4c2128d7\"><\/div>\r\n            <\/div>\r\n            <script defer src=\"https:\/\/www.gofundme.com\/static\/js\/embed.js\"><\/script>\r\n          <\/div>\r\n\r\n        <\/div>\r\n      <\/div>\r\n    <\/details>\r\n  <\/div>\r\n<\/section>\r\n\r\n<style>\r\n  @import url('https:\/\/fonts.googleapis.com\/css2?family=Oswald:wght@500;600;700&family=Inter:wght@400;500;600;700&display=swap');\r\n\r\n  :root {\r\n    --bpl-surface: #e8e4dc;\r\n    --bpl-surface-soft: #f1eee8;\r\n    --bpl-line: rgba(72, 63, 52, 0.14);\r\n    --bpl-line-soft: rgba(72, 63, 52, 0.09);\r\n    --bpl-text: #1f1b18;\r\n    --bpl-text-soft: #655d55;\r\n    --bpl-text-faint: #857c72;\r\n    --bpl-accent: #8e2238;\r\n    --bpl-accent-dark: #6f1a2c;\r\n  }\r\n\r\n  .bpl-donate {\r\n    margin: 14px 0;\r\n  }\r\n\r\n  .bpl-donate-inner {\r\n    width: min(100%, 1250px);\r\n    margin: 0 auto;\r\n    font-family: \"Inter\", system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Arial, sans-serif;\r\n  }\r\n\r\n  .bpl-donate-accordion {\r\n    background: var(--bpl-surface);\r\n    border-top: 1px solid var(--bpl-line);\r\n    border-bottom: 1px solid var(--bpl-line);\r\n  }\r\n\r\n  .bpl-donate-summary {\r\n    list-style: none;\r\n    display: grid;\r\n    grid-template-columns: minmax(0, 1fr) minmax(260px, 0.92fr) auto 18px;\r\n    gap: 16px;\r\n    align-items: center;\r\n    padding: 11px 12px;\r\n    cursor: pointer;\r\n  }\r\n\r\n  .bpl-donate-summary::-webkit-details-marker {\r\n    display: none;\r\n  }\r\n\r\n  .bpl-donate-summary::marker {\r\n    display: none;\r\n  }\r\n\r\n  .bpl-donate-summary__main {\r\n    min-width: 0;\r\n  }\r\n\r\n  .bpl-donate-summary__eyebrow {\r\n    display: block;\r\n    margin-bottom: 2px;\r\n    color: var(--bpl-text-faint);\r\n    font-size: 0.6rem;\r\n    font-weight: 800;\r\n    text-transform: uppercase;\r\n    letter-spacing: 0.18em;\r\n  }\r\n\r\n  .bpl-donate-summary__title {\r\n    display: block;\r\n    color: var(--bpl-text);\r\n    font-family: \"Oswald\", sans-serif;\r\n    font-size: 0.98rem;\r\n    font-weight: 600;\r\n    text-transform: uppercase;\r\n    letter-spacing: 0.05em;\r\n    line-height: 1.14;\r\n  }\r\n\r\n  .bpl-donate-summary__sub {\r\n    min-width: 0;\r\n    color: var(--bpl-text-soft);\r\n    font-size: 0.74rem;\r\n    line-height: 1.4;\r\n  }\r\n\r\n  .bpl-donate-summary__label {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    min-height: 34px;\r\n    padding: 0 11px;\r\n    background: var(--bpl-accent);\r\n    color: #ffffff;\r\n    font-size: 0.72rem;\r\n    font-weight: 800;\r\n    text-transform: uppercase;\r\n    letter-spacing: 0.11em;\r\n    line-height: 1;\r\n    white-space: nowrap;\r\n  }\r\n\r\n  .bpl-donate-summary__icon {\r\n    justify-self: end;\r\n    width: 10px;\r\n    height: 10px;\r\n    border-right: 1.5px solid var(--bpl-text-soft);\r\n    border-bottom: 1.5px solid var(--bpl-text-soft);\r\n    transform: rotate(45deg);\r\n    transition: transform 180ms ease;\r\n  }\r\n\r\n  .bpl-donate-accordion[open] .bpl-donate-summary__icon {\r\n    transform: rotate(-135deg);\r\n  }\r\n\r\n  .bpl-donate-panel {\r\n    padding: 0 12px 12px;\r\n  }\r\n\r\n  .bpl-donate-layout {\r\n    display: grid;\r\n    grid-template-columns: minmax(0, 1.22fr) minmax(280px, 0.78fr);\r\n    gap: 22px;\r\n    align-items: start;\r\n    border-top: 1px solid var(--bpl-line-soft);\r\n    padding-top: 10px;\r\n  }\r\n\r\n  .bpl-donate-copy {\r\n    min-width: 0;\r\n    max-width: 62ch;\r\n  }\r\n\r\n  .bpl-donate-copy h3,\r\n  .bpl-donate-copy h4 {\r\n    all: unset;\r\n    display: block;\r\n  }\r\n\r\n  .bpl-donate-copy__kicker {\r\n    display: inline-block;\r\n    margin-bottom: 5px;\r\n    color: var(--bpl-text-faint);\r\n    font-size: 0.64rem;\r\n    font-weight: 700;\r\n    text-transform: uppercase;\r\n    letter-spacing: 0.12em;\r\n  }\r\n\r\n  .bpl-donate-copy__title {\r\n    margin: 0 0 8px;\r\n    font-family: \"Oswald\", sans-serif;\r\n    font-size: 1.05rem;\r\n    font-weight: 600;\r\n    line-height: 1.14;\r\n    letter-spacing: 0.01em;\r\n    color: var(--bpl-text);\r\n  }\r\n\r\n  .bpl-donate-copy__intro {\r\n    margin: 0 0 10px;\r\n    font-size: 0.86rem;\r\n    line-height: 1.6;\r\n    color: #514a43;\r\n  }\r\n\r\n  .bpl-donate-copy__block {\r\n    margin-top: 8px;\r\n  }\r\n\r\n  .bpl-donate-copy__subhead {\r\n    margin: 0 0 5px;\r\n    font-size: 0.77rem;\r\n    font-weight: 700;\r\n    color: var(--bpl-accent);\r\n  }\r\n\r\n  .bpl-donate-list {\r\n    margin: 0;\r\n    padding-left: 1rem;\r\n    list-style: disc;\r\n    font-size: 0.82rem;\r\n    color: #5d554d;\r\n    line-height: 1.55;\r\n  }\r\n\r\n  .bpl-donate-list li + li {\r\n    margin-top: 1px;\r\n  }\r\n\r\n  .bpl-donate-note {\r\n    margin-top: 10px;\r\n    padding-top: 9px;\r\n    border-top: 1px solid var(--bpl-line-soft);\r\n    color: #514a43;\r\n    font-size: 0.8rem;\r\n    line-height: 1.5;\r\n  }\r\n\r\n  .bpl-donate-note strong {\r\n    color: var(--bpl-text);\r\n  }\r\n\r\n  .bpl-donate-embed-col {\r\n    min-width: 0;\r\n  }\r\n\r\n  .bpl-donate-embed-card {\r\n    padding: 0;\r\n    background: transparent;\r\n    border: none;\r\n  }\r\n\r\n  @media (max-width: 1100px) {\r\n    .bpl-donate-summary {\r\n      grid-template-columns: minmax(0, 1fr) auto 18px;\r\n      gap: 12px;\r\n    }\r\n\r\n    .bpl-donate-summary__sub {\r\n      grid-column: 1 \/ -1;\r\n      padding-right: 24px;\r\n    }\r\n\r\n    .bpl-donate-summary__icon {\r\n      grid-row: 1;\r\n      grid-column: 3;\r\n      align-self: center;\r\n    }\r\n\r\n    .bpl-donate-layout {\r\n      grid-template-columns: 1fr;\r\n      gap: 14px;\r\n    }\r\n\r\n    .bpl-donate-copy {\r\n      max-width: none;\r\n    }\r\n  }\r\n\r\n  @media (max-width: 640px) {\r\n    .bpl-donate {\r\n      margin: 12px 0;\r\n    }\r\n\r\n    .bpl-donate-summary {\r\n      grid-template-columns: 1fr auto 18px;\r\n      gap: 8px;\r\n      padding: 10px 10px 9px;\r\n    }\r\n\r\n    .bpl-donate-summary__label {\r\n      min-height: 30px;\r\n      padding: 0 9px;\r\n      font-size: 0.66rem;\r\n    }\r\n\r\n    .bpl-donate-summary__sub {\r\n      grid-column: 1 \/ -1;\r\n      padding-right: 0;\r\n      font-size: 0.7rem;\r\n      line-height: 1.34;\r\n    }\r\n\r\n    .bpl-donate-panel {\r\n      padding: 0 10px 10px;\r\n    }\r\n\r\n    .bpl-donate-layout {\r\n      gap: 12px;\r\n      padding-top: 9px;\r\n    }\r\n\r\n    .bpl-donate-copy__title {\r\n      font-size: 0.98rem;\r\n    }\r\n\r\n    .bpl-donate-copy__intro,\r\n    .bpl-donate-list,\r\n    .bpl-donate-note {\r\n      font-size: 0.79rem;\r\n    }\r\n  }\r\n<\/style>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-113982c e-flex e-con-boxed e-con e-parent\" data-id=\"113982c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-bbeba47 elementor-widget elementor-widget-html\" data-id=\"bbeba47\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\r\n  @import url('https:\/\/fonts.googleapis.com\/css2?family=Oswald:wght@500;600;700&family=Inter:wght@400;500;600;700;800&display=swap');\r\n\r\n  :root {\r\n    --nl-bg: #f2f2ee;\r\n    --nl-card: #f8f9fa;\r\n    --nl-text: #151b22;\r\n    --nl-text-soft: #67727d;\r\n    --nl-text-faint: #88929d;\r\n    --nl-border: rgba(120, 120, 100, 0.16);\r\n\r\n    --nl-red: #8e2238;\r\n    --nl-red-strong: #7d2134;\r\n    --nl-red-soft: rgba(142, 34, 56, 0.14);\r\n\r\n    --nl-green: #2f7a4f;\r\n    --nl-green-strong: #245e3d;\r\n    --nl-green-soft: rgba(47, 122, 79, 0.16);\r\n  }\r\n\r\n  #bp-image-stats {\r\n    box-sizing: border-box;\r\n    width: 100%;\r\n    max-width: 1250px;\r\n    margin: 0.5rem auto;\r\n    padding: 0.82rem 0.95rem;\r\n    background: var(--nl-bg);\r\n    color: var(--nl-text);\r\n    border: 1px solid var(--nl-border);\r\n    box-shadow: none;\r\n    font-family: \"Inter\", system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Arial, sans-serif;\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: space-between;\r\n    gap: 0.85rem;\r\n    flex-wrap: wrap;\r\n    text-decoration: none;\r\n    transition:\r\n      background 0.18s ease,\r\n      border-color 0.18s ease,\r\n      box-shadow 0.18s ease,\r\n      transform 0.12s ease;\r\n  }\r\n\r\n  #bp-image-stats:hover {\r\n    background: #ecece6;\r\n    border-color: rgba(120, 120, 100, 0.24);\r\n  }\r\n\r\n  #bp-image-stats:focus-visible {\r\n    outline: 2px solid var(--nl-red);\r\n    outline-offset: 2px;\r\n  }\r\n\r\n  #bp-image-stats strong {\r\n    font-weight: 700;\r\n    margin: 0;\r\n    color: #111827;\r\n    letter-spacing: 0.02em;\r\n    font-size: 0.8rem;\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 0.7rem;\r\n    flex: 1.3;\r\n    min-width: 260px;\r\n  }\r\n\r\n  #bp-image-stats strong::before {\r\n    content: \"\";\r\n    width: 5px;\r\n    height: 1.5rem;\r\n    background: linear-gradient(180deg, var(--nl-red) 0%, var(--nl-red-strong) 100%);\r\n    flex: 0 0 5px;\r\n  }\r\n\r\n  #bp-image-stats strong .bp-title-main {\r\n    font-family: \"Oswald\", sans-serif;\r\n    font-size: 1rem;\r\n    font-weight: 600;\r\n    color: #111827;\r\n    letter-spacing: 0.02em;\r\n    text-transform: uppercase;\r\n    line-height: 1.05;\r\n  }\r\n\r\n  #bp-image-stats .bp-counter-wrap {\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: flex-end;\r\n    gap: 0.6rem;\r\n    flex: 1;\r\n    min-width: 280px;\r\n    flex-wrap: wrap;\r\n  }\r\n\r\n  #bp-image-stats .bp-counter-block {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 0.44rem;\r\n    padding: 0.38rem 0.76rem;\r\n    border-radius: 999px;\r\n    white-space: nowrap;\r\n    border: 1px solid rgba(21, 27, 34, 0.10);\r\n    background: var(--nl-card);\r\n  }\r\n\r\n  #bp-image-stats .bp-counter-block.is-online {\r\n    background: var(--nl-green-soft);\r\n    border-color: rgba(47, 122, 79, 0.28);\r\n  }\r\n\r\n  #bp-image-stats .bp-counter-block.is-archive {\r\n    background: var(--nl-red-soft);\r\n    border-color: rgba(142, 34, 56, 0.26);\r\n  }\r\n\r\n  #bp-image-stats .bp-dot {\r\n    width: 8px;\r\n    height: 8px;\r\n    border-radius: 50%;\r\n    flex: 0 0 8px;\r\n  }\r\n\r\n  #bp-image-stats .bp-dot-online {\r\n    background: var(--nl-green);\r\n    box-shadow: 0 0 0 3px rgba(47, 122, 79, 0.14);\r\n  }\r\n\r\n  #bp-image-stats .bp-dot-archive {\r\n    background: var(--nl-red);\r\n    box-shadow: 0 0 0 3px rgba(142, 34, 56, 0.12);\r\n  }\r\n\r\n  #bp-image-stats .bp-counter-label {\r\n    font-size: 0.64rem;\r\n    letter-spacing: 0.14em;\r\n    text-transform: uppercase;\r\n    color: var(--nl-text-faint);\r\n    font-weight: 800;\r\n  }\r\n\r\n  #bp-image-stats .bp-counter-value {\r\n    font-variant-numeric: tabular-nums;\r\n    font-weight: 800;\r\n    font-size: 0.94rem;\r\n    color: #111827;\r\n  }\r\n\r\n  #bp-image-stats .bp-counter-block.is-online .bp-counter-value {\r\n    color: var(--nl-green-strong);\r\n  }\r\n\r\n  #bp-image-stats .bp-counter-block.is-archive .bp-counter-value {\r\n    color: var(--nl-red-strong);\r\n  }\r\n\r\n  @media (max-width: 768px) {\r\n    #bp-image-stats {\r\n      flex-direction: column;\r\n      align-items: stretch;\r\n      text-align: left;\r\n      padding: 0.72rem 0.72rem 0.78rem;\r\n      gap: 0.72rem;\r\n    }\r\n\r\n    #bp-image-stats strong {\r\n      min-width: 0;\r\n    }\r\n\r\n    #bp-image-stats .bp-counter-wrap {\r\n      justify-content: flex-start;\r\n      min-width: 0;\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<a id=\"bp-image-stats\" href=\"https:\/\/blickpunkt-lokalsport.de\/statistik\/\" aria-label=\"Zur Statistik von Blickpunkt Lokalsport\">\r\n  <strong>\r\n    <span class=\"bp-title-main\">Bilder aktuell online &amp; im Archiv<\/span>\r\n  <\/strong>\r\n\r\n  <div class=\"bp-counter-wrap\">\r\n    <div class=\"bp-counter-block is-online\">\r\n      <span class=\"bp-dot bp-dot-online\"><\/span>\r\n      <span class=\"bp-counter-label\">Aktuell online<\/span>\r\n      <span class=\"bp-counter-value\" id=\"bp-images-online\">58.000<\/span>\r\n    <\/div>\r\n\r\n    <div class=\"bp-counter-block is-archive\">\r\n      <span class=\"bp-dot bp-dot-archive\"><\/span>\r\n      <span class=\"bp-counter-label\">Gesamt im Archiv<\/span>\r\n      <span class=\"bp-counter-value\" id=\"bp-images-archive\">215.000<\/span>\r\n    <\/div>\r\n  <\/div>\r\n<\/a>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-8fbd3a0 e-con-full e-flex e-con e-parent\" data-id=\"8fbd3a0\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>02.06.2026 | U14 Sieg Heepen SV Heepen &#8211; VfL Schildesche 4:1 Im Heimspiel am Dienstagabend hat der SV Heepen den VfL Schildesche mit 4:1 geschlagen. Neben einem guten Fu\u00dfballspiel waren auch unsere Kamerakids wieder aktiv dabei. Zu den Bildern 31.05.2026 | U19 Eintracht ist Meister TuS Eintracht &#8211; VfB Fichte II 7:0 Die U19 der &#8230; <a title=\"kick-off\" class=\"read-more\" href=\"https:\/\/blickpunkt-lokalsport.de\/english\/\" aria-label=\"Read more about Anpfiff\">Read more<\/a><\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-22","page","type-page","status-publish"],"acf":[],"_links":{"self":[{"href":"https:\/\/blickpunkt-lokalsport.de\/english\/wp-json\/wp\/v2\/pages\/22","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blickpunkt-lokalsport.de\/english\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/blickpunkt-lokalsport.de\/english\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/blickpunkt-lokalsport.de\/english\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blickpunkt-lokalsport.de\/english\/wp-json\/wp\/v2\/comments?post=22"}],"version-history":[{"count":10,"href":"https:\/\/blickpunkt-lokalsport.de\/english\/wp-json\/wp\/v2\/pages\/22\/revisions"}],"predecessor-version":[{"id":53575,"href":"https:\/\/blickpunkt-lokalsport.de\/english\/wp-json\/wp\/v2\/pages\/22\/revisions\/53575"}],"wp:attachment":[{"href":"https:\/\/blickpunkt-lokalsport.de\/english\/wp-json\/wp\/v2\/media?parent=22"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}