{"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-05-13T22:14:02","modified_gmt":"2026-05-13T20:14:02","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;scale&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\/05\/20260513_U14_FichEint_0030-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\t13.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\tPunkteteilung\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 Fichte - TuS Eintracht\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 Fichte und die TuS Eintracht trennen sich unentschieden mit 1:1. Dem Spielverlauf ist dieses Remis auch als gerecht anzusehen. Das Spiel war \u00fcber weite Strecken ausgeglichen.\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-fichte-bielefeld\/\">\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-4f3f97c\">\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\/20260513_Herren_FichGueth_0064-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\t13.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\tG\u00fctersloh siegt\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 Fichte - FC G\u00fctersloh\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 Fichte musste am Abend eine 1:2-Niederlage gegen den FC G\u00fctersloh hinnehmen. Die G\u00e4ste hatten auch mehr vom Spiel und gingen mit 1:0 in F\u00fchrung.\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-fichte-bielefeld\/\">\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-12044f7\">\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\/20260512_U15_HillJSGGAd_0059-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\t12.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\tWeitere Schritt\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 Hillegossen - JSG Quelle\/Gadderbaum\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 TuS Hillegossen ist weiter auf Meisterschaftskurs. Im vorgezogenen Meisterschaftsspiel der Kreisliga B schlug man zuhause die JSG Quelle\/Gadderbaum mit 4:1\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-einigkeit-hillegossen\/\">\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-40b5bc3\">\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\/20260510_U17_SchlosLipp_0138-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\t10.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\tPunkt f\u00fcr Beide\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 - Lippstadt\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 emotionales Spiel findet am Ende keinen Sieger: Schlo\u00df Holte und Lippstadt trennen sich 3:3 (1:2). Hitzig wurde es ganz am Ende, als der Schiedsrichter einen vermeintlichen Elfer f\u00fcr die Hausherren nicht gab \u2013 und zwei gelb-rote Karten gab es auch noch.\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-5e86a8b\">\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\/20260510_U19_UbbJoell_0033-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\t10.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\tGerechtes Remis?\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 Ubbedissen - TuS J\u00f6llenbeck\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\tAm Ende hie\u00df es 1:1. In einem munteren Spiel schenkten sich beide Seiten nichts. Der SVU ging durch einen Elfmeter in F\u00fchrung, der TuS J\u00f6llenbeck glich vor dem Ende aus. Die Hausherren haderten mit dem Schiri und einem nicht gegebenen Handelfmeter.\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-ubbedissen\/\">\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-31c8bab\">\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\/20260508_UbbedissenTradition_0171-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\t09.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\tEin gutes Event\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 Ubbedissen 09 - Traditionsmannschaft\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\tFullHouse in Ubbedissen: \u00dcber 1000 Zuschauer sahen das Duell des SVU gegen die Traditionsmannschaft von Arminia Bielefeld bei bestem Fu\u00dfballwetter. Hoher Besuch war auch vor Ort.\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-ubbedissen\/\">\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-e74b26b\">\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\/20260505_U17_SteinHeep_0096-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\t05.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\tKein guter Tag f\u00fcr die G\u00e4ste\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 - SV Heepen\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\t5:1 hie\u00df es am Ende in der Partie der Spvg. Steinhagen gegen die G\u00e4ste aus Heepen. Die Heeper hatten aber schon fr\u00fch mit einer schweren Verletzung eines Spielers zu k\u00e4mpfen und fanden anschlie\u00dfend nicht mehr ins Spiel.\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-fbd98e0\">\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\/20260503_U17_HeepQuell_0110-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\t03.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\tHeepen verspielt F\u00fchrung fast\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 - JSG Quelle\/Gadderbaum\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 letzten Spiel des Tages standen sich der SV Heepen und der TuS Quelle gegen\u00fcber. Dominierten die Heeper die erste Halbzeit mit 3:0, konnten die G\u00e4ste in der zweiten Halbzeit noch gef\u00e4hrlich zum 3:2 aufschlie\u00dfen.\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-a4cfc15\">\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\/20260503_Herren_TheeSoest_0096-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\t03.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\tKein Erfolg f\u00fcr Theesen\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\tVfl Theesen - Westfalia Soest\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 VfL Theesen kommt nicht von der Stelle. Gegen die G\u00e4ste aus Soest setzte es eine 0:2-Niederlage, auch weil die Hausherren ihre Chancen nicht nutzten.\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\/vfl-theesen\/\">\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-4332b09\">\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\/20260503_U19_EintUbb_0025.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\t03.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 stark\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 - SV Ubbedissen\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\tDas Nachbarschaftsduell hatten die Hausherren zu jeder Zeit fest im Griff und lie\u00dfen f\u00fcr den SV Ubbedissen kaum Chancen zu. Am Ende hie\u00df es 3:0. \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\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-5d137b8 e-flex e-con-boxed e-con e-parent\" data-id=\"5d137b8\" 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-f0212ec elementor-widget elementor-widget-html\" data-id=\"f0212ec\" 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=\"bpl-pfingstturnier-cta\" aria-label=\"Hinweis zu den Bildern des U17 Pfingsturniers 2026\">\r\n  <div class=\"bpl-pfingstturnier-cta__textwrap\">\r\n    <p class=\"bpl-pfingstturnier-cta__text\" lang=\"de\">\r\n      Hier findet ihr alle Bilder des U17 Pfingsturnieres 2026.\r\n    <\/p>\r\n    <p class=\"bpl-pfingstturnier-cta__text bpl-pfingstturnier-cta__text--en\" lang=\"en\">\r\n      Here you can find all photos from the U17 Whitsun Tournament 2026.\r\n    <\/p>\r\n  <\/div>\r\n\r\n  <a\r\n    class=\"bpl-pfingstturnier-cta__button\"\r\n    href=\"https:\/\/blickpunkt-lokalsport.de\/theesenpfingsten\/\"\r\n    target=\"_self\"\r\n    lang=\"de\"\r\n    aria-label=\"Zu den Bildern \/ Go to the photos\"\r\n  >\r\n    <span>Zu den Bildern<\/span>\r\n    <span class=\"bpl-pfingstturnier-cta__button-sep\">\/<\/span>\r\n    <span lang=\"en\">Go to the photos<\/span>\r\n  <\/a>\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  .bpl-pfingstturnier-cta {\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: space-between;\r\n    gap: 0.9rem;\r\n    flex-wrap: wrap;\r\n    margin: 0.8rem 0 1rem;\r\n    padding: 0.95rem 1rem;\r\n    background: #f1eef5;\r\n    border: 1px solid rgba(119, 104, 147, 0.15);\r\n    font-family: \"Inter\", system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Arial, sans-serif;\r\n  }\r\n\r\n  .bpl-pfingstturnier-cta__textwrap {\r\n    flex: 1 1 420px;\r\n    min-width: 0;\r\n  }\r\n\r\n  .bpl-pfingstturnier-cta__text {\r\n    margin: 0;\r\n    font-size: 0.95rem;\r\n    line-height: 1.45;\r\n    color: #243746;\r\n    font-weight: 500;\r\n  }\r\n\r\n  .bpl-pfingstturnier-cta__text + .bpl-pfingstturnier-cta__text {\r\n    margin-top: 0.18rem;\r\n  }\r\n\r\n  .bpl-pfingstturnier-cta__text--en {\r\n    font-size: 0.86rem;\r\n    color: #526372;\r\n  }\r\n\r\n  .bpl-pfingstturnier-cta__button {\r\n    font-size: 0.88rem;\r\n    padding: 0.62rem 1rem;\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    justify-content: center;\r\n    gap: 0.34rem;\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    white-space: nowrap;\r\n  }\r\n\r\n  .bpl-pfingstturnier-cta__button:hover,\r\n  .bpl-pfingstturnier-cta__button:focus-visible {\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  .bpl-pfingstturnier-cta__button:focus-visible {\r\n    outline: 2px solid rgba(119, 104, 147, 0.22);\r\n    outline-offset: 3px;\r\n  }\r\n\r\n  .bpl-pfingstturnier-cta__button-sep {\r\n    opacity: 0.72;\r\n  }\r\n\r\n  @media (max-width: 640px) {\r\n    .bpl-pfingstturnier-cta {\r\n      align-items: flex-start;\r\n      gap: 0.7rem;\r\n      padding: 0.82rem 0.85rem;\r\n    }\r\n\r\n    .bpl-pfingstturnier-cta__text {\r\n      font-size: 0.88rem;\r\n    }\r\n\r\n    .bpl-pfingstturnier-cta__text--en {\r\n      font-size: 0.8rem;\r\n    }\r\n\r\n    .bpl-pfingstturnier-cta__button {\r\n      width: 100%;\r\n      font-size: 0.82rem;\r\n      padding: 0.58rem 0.85rem;\r\n      white-space: normal;\r\n      text-align: center;\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-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 Freitag, 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  ];\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    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    if (diffDays < 0) diffDays += 7;\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  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    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    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-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\r\n    <div class=\"bpl-donate-header\">\r\n      <div class=\"bpl-donate-header__text\">\r\n        <div class=\"bpl-donate-header__eyebrow\">Unterst\u00fctzen<\/div>\r\n        <h2 class=\"bpl-donate-header__title\">Spendenaktion f\u00fcr Blickpunkt Lokalsport<\/h2>\r\n        <div class=\"bpl-donate-header__sub\">\r\n          Ehrenamtliche Fu\u00dfballfotografie im Amateur- und Jugendbereich braucht verl\u00e4ssliche Unterst\u00fctzung.\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div id=\"bplDonatePanel\" class=\"bpl-donate-panel is-open\">\r\n      <div class=\"bpl-donate-panel__inner\">\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><br>\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\/large?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    <\/div>\r\n\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    --nl-bg: #edf0f1;\r\n    --nl-bg-header: #e8ecef;\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: #7c8792;\r\n    --nl-border: rgba(21, 27, 34, 0.07);\r\n    --nl-border-strong: rgba(21, 27, 34, 0.10);\r\n  }\r\n\r\n  .bpl-donate {\r\n    margin: 18px 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-header {\r\n    padding: 12px 14px 11px;\r\n    border: 1px solid var(--nl-border-strong);\r\n    background: var(--nl-bg-header);\r\n  }\r\n\r\n  .bpl-donate-header__text {\r\n    display: flex;\r\n    flex-direction: column;\r\n    gap: 0.08rem;\r\n    min-width: 0;\r\n  }\r\n\r\n  .bpl-donate-header__eyebrow {\r\n    display: inline-block;\r\n    color: var(--nl-text-faint);\r\n    font-size: 0.64rem;\r\n    font-weight: 800;\r\n    text-transform: uppercase;\r\n    letter-spacing: 0.18em;\r\n    margin-bottom: 2px;\r\n  }\r\n\r\n  .bpl-donate-header__title {\r\n    margin: 0;\r\n    color: #8e2238;\r\n    font-family: \"Oswald\", sans-serif;\r\n    font-size: 1rem;\r\n    font-weight: 600;\r\n    text-transform: uppercase;\r\n    letter-spacing: 0.06em;\r\n    line-height: 1.18;\r\n  }\r\n\r\n  .bpl-donate-header__sub {\r\n    font-size: 0.8rem;\r\n    line-height: 1.45;\r\n    color: var(--nl-text-soft);\r\n  }\r\n\r\n  .bpl-donate-panel__inner {\r\n    padding: 14px 14px 16px;\r\n    background: var(--nl-bg);\r\n    border: 1px solid var(--nl-border);\r\n    border-top: none;\r\n  }\r\n\r\n  .bpl-donate-layout {\r\n    display: grid;\r\n    grid-template-columns: minmax(0, 1.08fr) minmax(320px, 0.92fr);\r\n    gap: 22px;\r\n    align-items: start;\r\n  }\r\n\r\n  .bpl-donate-copy {\r\n    min-width: 0;\r\n    max-width: 56ch;\r\n  }\r\n\r\n  .bpl-donate-copy h3 {\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: 6px;\r\n    color: var(--nl-text-faint);\r\n    font-size: 0.68rem;\r\n    font-weight: 700;\r\n    text-transform: uppercase;\r\n    letter-spacing: 0.13em;\r\n  }\r\n\r\n  .bpl-donate-copy__title {\r\n    margin: 0 0 12px;\r\n    font-family: \"Oswald\", sans-serif;\r\n    font-size: 1.2rem;\r\n    font-weight: 600;\r\n    line-height: 1.16;\r\n    letter-spacing: 0.01em;\r\n    color: #111827;\r\n  }\r\n\r\n  .bpl-donate-copy__intro {\r\n    margin: 0 0 10px;\r\n    font-size: 0.92rem;\r\n    line-height: 1.65;\r\n    color: #374151;\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 6px;\r\n    font-size: 0.84rem;\r\n    font-weight: 700;\r\n    color: #8e2238;\r\n  }\r\n\r\n  .bpl-donate-list {\r\n    margin: 0;\r\n    padding-left: 1.1rem;\r\n    list-style: disc;\r\n    font-size: 0.88rem;\r\n    color: #4b5563;\r\n    line-height: 1.65;\r\n  }\r\n\r\n  .bpl-donate-list li + li {\r\n    margin-top: 2px;\r\n  }\r\n\r\n  .bpl-donate-note {\r\n    margin-top: 14px;\r\n    padding: 11px 13px;\r\n    background: #ffffff;\r\n    border: 1px solid var(--nl-border);\r\n    color: #374151;\r\n    font-size: 0.86rem;\r\n    line-height: 1.55;\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: 10px;\r\n    background: #f4f6f7;\r\n    border: 1px solid var(--nl-border);\r\n  }\r\n\r\n  @media (max-width: 1100px) {\r\n    .bpl-donate-panel__inner {\r\n      padding: 12px 12px 14px;\r\n    }\r\n\r\n    .bpl-donate-layout {\r\n      grid-template-columns: 1fr;\r\n      gap: 16px;\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-header {\r\n      padding: 10px 11px;\r\n    }\r\n\r\n    .bpl-donate-header__title {\r\n      font-size: 0.94rem;\r\n    }\r\n\r\n    .bpl-donate-header__sub {\r\n      font-size: 0.74rem;\r\n      line-height: 1.4;\r\n    }\r\n\r\n    .bpl-donate-panel__inner {\r\n      padding: 11px 11px 12px;\r\n    }\r\n\r\n    .bpl-donate-copy__title {\r\n      font-size: 1.08rem;\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.84rem;\r\n    }\r\n\r\n    .bpl-donate-embed-card {\r\n      padding: 8px;\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-e930158 e-con-full e-flex e-con e-parent\" data-id=\"e930158\" 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-434cdde elementor-widget elementor-widget-html\" data-id=\"434cdde\" 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: #e4e4dd;\r\n    --nl-text: #151b22;\r\n    --nl-text-soft: #67727d;\r\n    --nl-border: rgba(120, 120, 100, 0.16);\r\n\r\n    --nl-red: #8e2238;\r\n    --nl-red-dark: #6e1729;\r\n  }\r\n\r\n  .bp-survey-cta {\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.85rem 0.95rem;\r\n    background: #e4e4dd;\r\n    border: 1px solid rgba(120, 120, 100, 0.16);\r\n    color: var(--nl-text);\r\n    font-family: \"Inter\", system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Arial, sans-serif;\r\n  }\r\n\r\n  .bp-survey-cta__inner {\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: space-between;\r\n    gap: 0.9rem;\r\n    flex-wrap: wrap;\r\n  }\r\n\r\n  .bp-survey-cta__text {\r\n    min-width: 260px;\r\n    flex: 1 1 500px;\r\n    font-size: 0.92rem;\r\n    line-height: 1.5;\r\n    color: var(--nl-text-soft);\r\n  }\r\n\r\n  .bp-survey-cta__text strong {\r\n    color: #111827;\r\n    font-weight: 700;\r\n  }\r\n\r\n  .bp-survey-cta__button {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    gap: 0.4rem;\r\n    min-height: 44px;\r\n    padding: 0.72rem 1rem;\r\n    background: var(--nl-red);\r\n    color: #ffffff !important;\r\n    text-decoration: none;\r\n    font-size: 0.8rem;\r\n    font-weight: 800;\r\n    letter-spacing: 0.08em;\r\n    text-transform: uppercase;\r\n    border: 1px solid var(--nl-red);\r\n    transition:\r\n      background 0.18s ease,\r\n      border-color 0.18s ease,\r\n      transform 0.12s ease,\r\n      box-shadow 0.18s ease;\r\n    box-shadow: 0 4px 10px rgba(142, 34, 56, 0.16);\r\n    white-space: nowrap;\r\n  }\r\n\r\n  .bp-survey-cta__button:hover {\r\n    background: var(--nl-red-dark);\r\n    border-color: var(--nl-red-dark);\r\n    transform: translateY(-1px);\r\n    box-shadow: 0 6px 14px rgba(110, 23, 41, 0.18);\r\n  }\r\n\r\n  .bp-survey-cta__arrow {\r\n    font-size: 0.95em;\r\n    line-height: 1;\r\n  }\r\n\r\n  @media (max-width: 768px) {\r\n    .bp-survey-cta {\r\n      padding: 0.78rem 0.8rem;\r\n    }\r\n\r\n    .bp-survey-cta__inner {\r\n      align-items: stretch;\r\n    }\r\n\r\n    .bp-survey-cta__text {\r\n      min-width: 0;\r\n      font-size: 0.88rem;\r\n    }\r\n\r\n    .bp-survey-cta__button {\r\n      width: 100%;\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<div class=\"bp-survey-cta\">\r\n  <div class=\"bp-survey-cta__inner\">\r\n    <div class=\"bp-survey-cta__text\">\r\n      <strong>Wir wollen eure Meinung wissen.<\/strong> Thema heute: unsere Website.\r\n      Wir freuen uns auf eure Teilnahme an der Umfrage.\r\n    <\/div>\r\n\r\n    <a\r\n      class=\"bp-survey-cta__button\"\r\n      href=\"https:\/\/blickpunkt-lokalsport.de\/umfrage\/\"\r\n    >\r\n      <span>Zur Umfrage<\/span>\r\n      <span class=\"bp-survey-cta__arrow\">\u203a<\/span>\r\n    <\/a>\r\n  <\/div>\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-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  }\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<div id=\"bp-image-stats\">\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\">54.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\">205.000<\/span>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\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>13.05.2026 | U14 Punkteteilung VfB Fichte &#8211; TuS Eintracht Der VfB Fichte und die TuS Eintracht trennen sich unentschieden mit 1:1. Dem Spielverlauf ist dieses Remis auch als gerecht anzusehen. Das Spiel war \u00fcber weite Strecken ausgeglichen. Zu den Bildern 13.05.2026 | Herren G\u00fctersloh siegt VfB Fichte &#8211; FC G\u00fctersloh Der VfB Fichte musste am &#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":53152,"href":"https:\/\/blickpunkt-lokalsport.de\/english\/wp-json\/wp\/v2\/pages\/22\/revisions\/53152"}],"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}]}}