{"id":52607,"date":"2026-04-22T16:01:55","date_gmt":"2026-04-22T14:01:55","guid":{"rendered":"https:\/\/blickpunkt-lokalsport.de\/?page_id=52607"},"modified":"2026-04-22T16:04:47","modified_gmt":"2026-04-22T14:04:47","slug":"fachbegriffe-2","status":"publish","type":"page","link":"https:\/\/blickpunkt-lokalsport.de\/english\/fachbegriffe-2\/","title":{"rendered":"Statistik"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"52607\" class=\"elementor elementor-52607\" 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-3da84f8 e-con-full e-flex e-con e-parent\" data-id=\"3da84f8\" 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-6300810 elementor-widget elementor-widget-spacer\" data-id=\"6300810\" 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<\/div>\n\t\t<div class=\"elementor-element elementor-element-6e4b0e6a e-con-full e-flex e-con e-parent\" data-id=\"6e4b0e6a\" 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-220fcf37 elementor-widget elementor-widget-bdt-advanced-heading\" data-id=\"220fcf37\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"bdt-advanced-heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div id=\"220fcf37\" class=\"bdt-ep-advanced-heading\" data-settings=\"{&quot;titleMultiColor&quot;:&quot;no&quot;}\"><div class=\"bdt-ep-advanced-heading-content bdt-visible@m\"><div class=\"bdt-transform-origin-top-left\">Statistik<\/div><\/div><div class=\"bdt-ep-advanced-heading-sub-title\"><div class=\"bdt-ep-advanced-heading-sub-title-content\">Zahlen &amp; Fakten<\/div><\/div><h2 class=\"bdt-ep-advanced-heading-title\"><span class=\"bdt-ep-advanced-heading-main-title\"><span class=\"bdt-ep-advanced-heading-main-title-inner\">Statistik<\/span><\/span><\/h2><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5bb42569 elementor-widget elementor-widget-spacer\" data-id=\"5bb42569\" 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<\/div>\n\t\t<div class=\"elementor-element elementor-element-03e0239 e-con-full e-flex e-con e-parent\" data-id=\"03e0239\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4de8b87 elementor-widget elementor-widget-html\" data-id=\"4de8b87\" 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    .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: #f5f7fa;\r\n      border-radius: 0;\r\n      padding: 1rem 1.1rem 1.1rem;\r\n      border: 1px solid rgba(15, 23, 42, 0.08);\r\n      box-shadow: 0 10px 24px rgba(15, 23, 42, 0.10);\r\n      color: #111827;\r\n    }\r\n\r\n    .bls-status-inline-title {\r\n      font-family: \"Oswald\", sans-serif;\r\n      font-size: 1.15rem;\r\n      font-weight: 600;\r\n      letter-spacing: 0.04em;\r\n      text-transform: uppercase;\r\n      color: #111827;\r\n      margin-bottom: 0.15rem;\r\n      line-height: 1;\r\n    }\r\n\r\n    .bls-status-inline-sub {\r\n      font-size: 0.86rem;\r\n      color: #4b5563;\r\n      margin-bottom: 0.7rem;\r\n      line-height: 1.45;\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.5rem;\r\n      padding: 0.3rem 0;\r\n    }\r\n\r\n    .bls-status-inline-input {\r\n      border-radius: 0;\r\n      border: 1px solid rgba(15, 23, 42, 0.12);\r\n      padding: 0.5rem 0.9rem;\r\n      font-size: 0.9rem;\r\n      min-width: 150px;\r\n      max-width: 230px;\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: #b30d2f;\r\n      box-shadow: 0 0 0 2px rgba(179, 13, 47, 0.18);\r\n      background: #ffffff;\r\n    }\r\n\r\n    .bls-status-inline-button {\r\n      border-radius: 0;\r\n      border: 1px solid #111827;\r\n      padding: 0.55rem 1.1rem;\r\n      font-size: 0.8rem;\r\n      font-weight: 800;\r\n      text-transform: uppercase;\r\n      letter-spacing: 0.12em;\r\n      background: #111827;\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: 0 4px 12px rgba(15, 23, 42, 0.22);\r\n      transition: transform 0.18s ease, box-shadow 0.18s ease, background 0.18s ease, color 0.18s ease, border-color 0.18s 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      transform: translateY(-1px);\r\n      box-shadow: 0 8px 18px rgba(15, 23, 42, 0.28);\r\n    }\r\n\r\n    .bls-status-inline-button:focus-visible {\r\n      outline: 3px solid rgba(179, 13, 47, 0.22);\r\n      outline-offset: 3px;\r\n    }\r\n\r\n    .bls-status-inline-reset {\r\n      background: transparent;\r\n      color: #b30d2f;\r\n      border-color: rgba(179, 13, 47, 0.7);\r\n      box-shadow: none;\r\n    }\r\n\r\n    .bls-status-inline-reset::before {\r\n      background: rgba(179, 13, 47, 0.6);\r\n    }\r\n\r\n    .bls-status-inline-reset:hover {\r\n      background: rgba(248, 226, 230, 0.8);\r\n      color: #7f1023;\r\n      border-color: rgba(127, 16, 35, 0.8);\r\n    }\r\n\r\n    .bls-status-inline-progress {\r\n      margin-top: 0;\r\n      display: none;\r\n    }\r\n\r\n    .bls-status-inline-progress-circle {\r\n      --bls-progress: 0;\r\n      width: 30px;\r\n      height: 30px;\r\n      border-radius: 999px;\r\n      background:\r\n        conic-gradient(#b30d2f calc(var(--bls-progress) * 1%), rgba(15, 23, 42, 0.12) 0);\r\n      display: inline-flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      position: relative;\r\n      margin-left: 0.3rem;\r\n      box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.15);\r\n    }\r\n\r\n    .bls-status-inline-progress-circle-inner {\r\n      position: absolute;\r\n      width: 20px;\r\n      height: 20px;\r\n      border-radius: 999px;\r\n      background: #ffffff;\r\n    }\r\n\r\n    .bls-status-inline-progress-circle-label {\r\n      position: relative;\r\n      font-size: 0.7rem;\r\n      font-weight: 700;\r\n      color: #111827;\r\n    }\r\n\r\n    .bls-status-inline-error {\r\n      color: #b30d2f;\r\n      font-size: 0.8rem;\r\n      margin-top: 0.3rem;\r\n    }\r\n\r\n    .bls-status-inline-result {\r\n      margin-top: 0.6rem;\r\n      font-size: 0.85rem;\r\n      line-height: 1.4;\r\n      display: grid;\r\n      gap: 0.5rem;\r\n    }\r\n\r\n    .bls-status-card {\r\n      border-radius: 0;\r\n      padding: 0.6rem 0.8rem 0.7rem;\r\n      color: #111827;\r\n      font-size: 0.82rem;\r\n      border: 1px solid rgba(15, 23, 42, 0.10);\r\n      box-shadow: 0 6px 16px rgba(15, 23, 42, 0.12);\r\n      position: relative;\r\n      overflow: hidden;\r\n      background: #ffffff;\r\n      transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease, background 0.18s ease;\r\n    }\r\n\r\n    .bls-status-card:hover {\r\n      transform: translateY(-1px);\r\n      box-shadow: 0 10px 22px rgba(15, 23, 42, 0.16);\r\n      border-color: rgba(15, 23, 42, 0.18);\r\n    }\r\n\r\n    .bls-status-card-header {\r\n      display: flex;\r\n      justify-content: space-between;\r\n      gap: 0.45rem;\r\n      font-weight: 700;\r\n      font-size: 0.8rem;\r\n      margin-bottom: 0.15rem;\r\n      color: #111827;\r\n    }\r\n\r\n    .bls-status-card-header span:last-child {\r\n      font-weight: 600;\r\n      font-size: 0.78rem;\r\n      opacity: 0.9;\r\n    }\r\n\r\n    .bls-status-card-subline {\r\n      font-size: 0.78rem;\r\n      font-weight: 600;\r\n      margin-bottom: 0.25rem;\r\n      color: #4b5563;\r\n    }\r\n\r\n    .bls-status-card-body {\r\n      font-size: 0.82rem;\r\n      color: #374151;\r\n    }\r\n\r\n    .bls-status-card-gebucht {\r\n      background: #e7f6ef;\r\n      border-color: rgba(16, 185, 129, 0.35);\r\n    }\r\n\r\n    .bls-status-card-vorgemerkt {\r\n      background: #fff5e6;\r\n      border-color: rgba(245, 158, 11, 0.35);\r\n    }\r\n\r\n    .bls-status-card-neue-anfrage {\r\n      background: #fef2f7;\r\n      border-color: rgba(236, 72, 153, 0.32);\r\n    }\r\n\r\n    .bls-status-card-geplant {\r\n      background: #e6f1ff;\r\n      border-color: rgba(59, 130, 246, 0.32);\r\n    }\r\n\r\n    .bls-status-card-kein {\r\n      background: #f3f4f6;\r\n      border-color: rgba(107, 114, 128, 0.28);\r\n    }\r\n\r\n    @media (max-width: 600px) {\r\n      .bls-status-inline-form {\r\n        gap: 0.4rem;\r\n      }\r\n\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        flex-direction: column;\r\n        align-items: flex-start;\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 & \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    <div class=\"bls-status-inline-progress\" id=\"blsInlineProgress\">\r\n      <div class=\"bls-status-inline-progress-circle\" id=\"blsInlineProgressCircle\">\r\n        <div class=\"bls-status-inline-progress-circle-inner\"><\/div>\r\n        <div class=\"bls-status-inline-progress-circle-label\" id=\"blsInlineProgressLabel\">0%<\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/form>\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 progress = document.getElementById(\"blsInlineProgress\");\r\n      const progressCircle = document.getElementById(\"blsInlineProgressCircle\");\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          \"Vorgemerkt: Aktuell haben wir deinen Terminwunsch erfasst und er ist bereits von uns gesichtet worden. Bisher k\u00f6nnen wir aber noch nicht sagen, ob dein Wunsch ber\u00fccksichtigt werden kann. Die endg\u00fcltige Entscheidung findet jeden Freitag statt.\",\r\n        \"neue-anfrage\":\r\n          \"Neue Fotoanfrage: Du hast deinen Terminwunsch erfolgreich eingetragen. Wir haben dein Match aber noch nicht gesichtet. Dieses sollte aber zeitnah geschehen.\",\r\n        geplant:\r\n          \"In Planung: Wir haben dein Wunschspiel genauer angeschaut und es ist aktuell in der engeren Auswahl. Dieser Status kann sich allerdings noch \u00e4ndern (zu vorgemerkt oder gebucht). Schau sp\u00e4ter nochmal vorbei.\",\r\n        gebucht:\r\n          \"Termin best\u00e4tigt: Gl\u00fcckwunsch, wir kommen zu deinem Spiel. Nur in seltenen F\u00e4llen kann sich das nochmal \u00e4ndern (Spielausfall, Verlegung, Krankheit oder \u00e4hnliches). Im Normalfall sind wir bei euch dabei!\",\r\n        keinTreffer:\r\n          \"Wir haben aktuell nichts gefunden, bitte sp\u00e4ter nochmal versuchen. Frische Buchungen werden nicht ber\u00fccksichtigt.\"\r\n      };\r\n\r\n      function setProgress(p) {\r\n        if (!progress || !progressCircle || !progressLabel) return;\r\n        progress.style.display = \"inline-block\";\r\n        const clamped = Math.max(0, Math.min(100, Math.round(p)));\r\n        progressCircle.style.setProperty(\"--bls-progress\", clamped);\r\n        progressLabel.textContent = clamped + \"%\";\r\n\r\n        if (clamped === 100) {\r\n          progressCircle.style.background =\r\n            \"conic-gradient(#16a34a calc(var(--bls-progress) * 1%), rgba(15, 23, 42, 0.12) 0)\";\r\n        } else {\r\n          progressCircle.style.background =\r\n            \"conic-gradient(#b30d2f calc(var(--bls-progress) * 1%), rgba(15, 23, 42, 0.12) 0)\";\r\n        }\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).replace(\/\\\\n\/g, \"\\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        if (line.includes(\" - \")) {\r\n          const parts = line.split(\" - \");\r\n          return {\r\n            heim: parts[0].trim(),\r\n            gast: parts[1].trim()\r\n          };\r\n        }\r\n        if (line.includes(\" vs \")) {\r\n          const parts = line.split(\" vs \");\r\n          return {\r\n            heim: parts[0].trim(),\r\n            gast: parts[1].trim()\r\n          };\r\n        }\r\n        if (line.includes(\" : \")) {\r\n          const parts = line.split(\" : \");\r\n          return {\r\n            heim: parts[0].trim(),\r\n            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        setProgress(5);\r\n\r\n        try {\r\n          datenKlein = [];\r\n          const [feste, vorgemerkt, geplant] = await Promise.all([\r\n            fetchWithProxies(ICS_URL_FESTE).then(t => { setProgress(35); return t; }),\r\n            fetchWithProxies(ICS_URL_VORGEMERKT).then(t => { setProgress(65); return t; }),\r\n            fetchWithProxies(ICS_URL_GEPLANT).then(t => { setProgress(90); return t; })\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);\r\n        } catch (e) {\r\n          console.error(e);\r\n          setProgress(0);\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\">' +\r\n                STATUS_TEXTS.keinTreffer +\r\n              \"<\/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\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 datumKurzStr = t.datum.toLocaleDateString(\"de-DE\", {\r\n            day: \"2-digit\",\r\n            month: \"2-digit\"\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 akStr = t.altersklasse ? \" \u2022 \" + t.altersklasse : \"\";\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\r\n          const partieStr = extra ? extra.partie : (t.partie || \"(Partie noch nicht hinterlegt)\");\r\n\r\n          return (\r\n            '<div class=\"bls-status-card ' + cardClass + '\">' +\r\n              '<div class=\"bls-status-card-header\">' +\r\n                '<span>' +\r\n                  headerHeim +\r\n                  (headerGast ? \" vs \" + headerGast : \"\") +\r\n                  akStr +\r\n                \"<\/span>\" +\r\n                '<span>' + datumStr + ' \u2022 ' + uhrzeitStr + \"<\/span>\" +\r\n              \"<\/div>\" +\r\n              '<div class=\"bls-status-card-subline\">' +\r\n                'Spiel: ' + partieStr + ' \u2022 ' + datumKurzStr + ' ' + uhrzeitStr.replace(\/^0\/, \"\") + ' Uhr' +\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 (progress && progressCircle && progressLabel) {\r\n          progress.style.display = \"inline-block\";\r\n          progressCircle.style.setProperty(\"--bls-progress\", 0);\r\n          progressLabel.textContent = \"0%\";\r\n          progressCircle.style.background =\r\n            \"conic-gradient(#b30d2f calc(var(--bls-progress) * 1%), rgba(15, 23, 42, 0.12) 0)\";\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-4b0fa75 e-con-full e-flex e-con e-parent\" data-id=\"4b0fa75\" 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-df21504 elementor-widget elementor-widget-html\" data-id=\"df21504\" 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=\"metrics-section\">\r\n  <div class=\"metrics-inner\">\r\n    <div class=\"metrics-header\">\r\n      <span class=\"metrics-kicker\">Projektkennzahlen<\/span>\r\n      <h2>Zahlen hinter Blickpunkt Lokalsport<\/h2>\r\n      <p>\r\n        Hinter jeder Galerie stehen viele Stunden Arbeit, Fahrten zu den Pl\u00e4tzen\r\n        und laufende Kosten. Vieles davon bleibt im Hintergrund \u2013 diese Zahlen\r\n        zeigen, was das Projekt Jahr f\u00fcr Jahr leistet.\r\n      <\/p>\r\n    <\/div>\r\n\r\n    <div class=\"metrics-accordion\">\r\n      <!-- Gruppe 1: Aufwand & Reichweite -->\r\n      <button class=\"metrics-accordion-trigger\" type=\"button\"\r\n              aria-expanded=\"false\" aria-controls=\"metricsPanelTop\">\r\n        <span class=\"metrics-accordion-text\">\r\n          <span class=\"metrics-accordion-title\">Aufwand & Reichweite<\/span>\r\n          <span class=\"metrics-accordion-sub\">Zeit, Spiele und Sichtbarkeit pro Saison<\/span>\r\n        <\/span>\r\n        <span class=\"metrics-accordion-side\">\r\n          <span class=\"metrics-accordion-tag\">Ein-\/ausklappbar<\/span>\r\n          <svg class=\"metrics-accordion-chevron\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\r\n            <path d=\"M6 9l6 6 6-6\" stroke=\"currentColor\" stroke-width=\"2\"\r\n                  stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path>\r\n          <\/svg>\r\n        <\/span>\r\n      <\/button>\r\n\r\n      <div id=\"metricsPanelTop\" class=\"metrics-panel\">\r\n        <div class=\"metrics-panel-inner\">\r\n          <div class=\"metrics-grid metrics-grid-top\">\r\n            <div class=\"metrics-card\">\r\n              <span class=\"metrics-label\">Zeitaufwand<\/span>\r\n              <span class=\"metrics-value\">\u2248 1000<\/span>\r\n              <span class=\"metrics-unit\">Stunden \/ Jahr<\/span>\r\n              <p>\r\n                Ehrenamtliche Arbeit zus\u00e4tzlich zum normalen Berufsalltag \u2013 von der\r\n                Planung \u00fcber Anfahrten bis zur Auswahl und Bearbeitung der Bilder.\r\n              <\/p>\r\n            <\/div>\r\n\r\n            <div class=\"metrics-card\">\r\n              <span class=\"metrics-label\">Begleitete Spiele<\/span>\r\n              <span class=\"metrics-value\">250+<\/span>\r\n              <span class=\"metrics-unit\">Spiele \/ Jahr<\/span>\r\n              <p>\r\n                Vom Jugendspiel auf dem Nebenplatz bis zum Ligaspiel im Herrenbereich \u2013\r\n                quer durch die Region und \u00fcber die gesamte Saison verteilt.\r\n              <\/p>\r\n            <\/div>\r\n\r\n            <div class=\"metrics-card\">\r\n              <span class=\"metrics-label\">Instagram-Aufrufe<\/span>\r\n              <span class=\"metrics-value\">\u2248 200.000<\/span>\r\n              <span class=\"metrics-unit\">pro Monat<\/span>\r\n              <p>\r\n                Reichweite \u00fcber Reels, Beitr\u00e4ge und Stories \u2013 direkt in der Zielgruppe\r\n                von Spielern, Eltern, Trainern und Vereinen aus der Region.\r\n              <\/p>\r\n            <\/div>\r\n\r\n            <div class=\"metrics-card\">\r\n              <span class=\"metrics-label\">Seitenaufrufe Website<\/span>\r\n              <span class=\"metrics-value\">\u2248 10.000<\/span>\r\n              <span class=\"metrics-unit\">pro Monat<\/span>\r\n              <p>\r\n                Aufrufe von blickpunkt-lokalsport.de \u2013 vor allem \u00fcber Spieltagsgalerien,\r\n                Vereinsgalerien und Verlinkungen der Vereine.\r\n              <\/p>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <!-- Gruppe 2: Bilder & Projektkosten -->\r\n      <button class=\"metrics-accordion-trigger\" type=\"button\"\r\n              aria-expanded=\"false\" aria-controls=\"metricsPanelBottom\">\r\n        <span class=\"metrics-accordion-text\">\r\n          <span class=\"metrics-accordion-title\">Bilder & Projektkosten<\/span>\r\n          <span class=\"metrics-accordion-sub\">Fotoarchiv, Galerien und laufende Ausgaben<\/span>\r\n        <\/span>\r\n        <span class=\"metrics-accordion-side\">\r\n          <span class=\"metrics-accordion-tag\">Ein-\/ausklappbar<\/span>\r\n          <svg class=\"metrics-accordion-chevron\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\r\n            <path d=\"M6 9l6 6 6-6\" stroke=\"currentColor\" stroke-width=\"2\"\r\n                  stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path>\r\n          <\/svg>\r\n        <\/span>\r\n      <\/button>\r\n\r\n      <div id=\"metricsPanelBottom\" class=\"metrics-panel\">\r\n        <div class=\"metrics-panel-inner\">\r\n          <div class=\"metrics-grid metrics-grid-bottom\">\r\n            <div class=\"metrics-card\">\r\n              <span class=\"metrics-label\">Fotos pro Saison<\/span>\r\n              <span class=\"metrics-value\">\u2248 16.500<\/span>\r\n              <span class=\"metrics-unit\">fertige Bilder<\/span>\r\n              <p>\r\n                Spieltagsgalerien, Portraits und Reportagen, die Jugend- und\r\n                Amateurfu\u00dfball in OWL sichtbar machen und Momente dauerhaft festhalten.\r\n              <\/p>\r\n            <\/div>\r\n\r\n            <div class=\"metrics-card\">\r\n              <span class=\"metrics-label\">Projektkosten<\/span>\r\n              <span class=\"metrics-value\">\u2248 2.500 \u20ac<\/span>\r\n              <span class=\"metrics-unit\">pro Jahr<\/span>\r\n              <p>\r\n                Kamera- und Objektivverschlei\u00df, Software, Fahrtkosten und Infrastruktur,\r\n                damit die Berichterstattung in dieser Form \u00fcberhaupt m\u00f6glich bleibt.\r\n              <\/p>\r\n            <\/div>\r\n\r\n            <div class=\"metrics-card\">\r\n              <span class=\"metrics-label\">Fotoarchiv gesamt<\/span>\r\n              <span class=\"metrics-value\">193.000+<\/span>\r\n              <span class=\"metrics-unit\">Bilder<\/span>\r\n              <p>\r\n                Vollst\u00e4ndig archivierte Fotos aus dem Jugend- und Amateurfu\u00dfball,\r\n                geordnet nach Vereinen, Teams, Wettbewerben und Spieltagen.\r\n              <\/p>\r\n            <\/div>\r\n\r\n            <div class=\"metrics-card metrics-card-live\">\r\n              <span class=\"metrics-label\">Fotos aktuell live<\/span>\r\n              <span class=\"metrics-value\">48.000+<\/span>\r\n              <span class=\"metrics-unit\">online<\/span>\r\n              <p>\r\n                Direkt abrufbare Bilder in Vereins- und Spieltagsgalerien \u2013 laufend\r\n                erweitert und f\u00fcr Spieler, Eltern und Vereine frei zug\u00e4nglich.\r\n              <\/p>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <p class=\"metrics-footnote\">\r\n      Blickpunkt Lokalsport ist ein nicht-kommerzielles, ehrenamtlich gef\u00fchrtes Projekt.\r\n      Jede Form von Unterst\u00fctzung hilft, dieses Angebot f\u00fcr den lokalen Fu\u00dfball langfristig\r\n      zu erhalten.\r\n    <\/p>\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  .metrics-section {\r\n    margin: 20px 0 18px;\r\n  }\r\n\r\n  .metrics-inner {\r\n    max-width: 1250px;\r\n    margin: 0 auto;\r\n    background: #f5f7fa;\r\n    border: 1px solid rgba(15, 23, 42, 0.08);\r\n    border-radius: 0;\r\n    padding: 16px 16px 18px;\r\n    box-shadow: 0 10px 24px rgba(15, 23, 42, 0.06);\r\n    position: relative;\r\n    overflow: hidden;\r\n  }\r\n\r\n  .metrics-inner::before {\r\n    content: \"\";\r\n    position: absolute;\r\n    inset: 0 0 auto 0;\r\n    height: 4px;\r\n    background: linear-gradient(90deg, #e5e7eb 0%, #cbd5e1 100%);\r\n  }\r\n\r\n  .metrics-header {\r\n    margin-bottom: 14px;\r\n  }\r\n\r\n  .metrics-kicker {\r\n    display: inline-block;\r\n    margin-bottom: 6px;\r\n    font-size: 0.72rem;\r\n    font-weight: 700;\r\n    text-transform: uppercase;\r\n    letter-spacing: 0.14em;\r\n    color: #4b5563;\r\n  }\r\n\r\n  .metrics-header h2 {\r\n    margin: 0 0 6px;\r\n    font-family: \"Oswald\", sans-serif;\r\n    font-size: clamp(1.45rem, 1.2rem + 1vw, 1.95rem);\r\n    line-height: 1.05;\r\n    letter-spacing: 0.02em;\r\n    color: #111827;\r\n    text-transform: uppercase;\r\n  }\r\n\r\n  .metrics-header p {\r\n    margin: 0;\r\n    max-width: 72ch;\r\n    font-size: 0.95rem;\r\n    line-height: 1.55;\r\n    color: #4b5563;\r\n    font-family: \"Inter\", sans-serif;\r\n  }\r\n\r\n  .metrics-grid {\r\n    display: grid;\r\n    grid-template-columns: repeat(4, minmax(0, 1fr));\r\n    gap: 10px;\r\n  }\r\n\r\n  .metrics-card {\r\n    background: #ffffff;\r\n    border: 1px solid rgba(15, 23, 42, 0.08);\r\n    border-radius: 0;\r\n    padding: 12px 12px 13px;\r\n    color: #111827;\r\n    box-shadow: 0 4px 10px rgba(15, 23, 42, 0.04);\r\n    transition: transform 0.15s ease, box-shadow 0.15s ease, border-color 0.15s ease;\r\n  }\r\n\r\n  .metrics-card:hover {\r\n    transform: translateY(-1px);\r\n    box-shadow: 0 8px 18px rgba(15, 23, 42, 0.08);\r\n    border-color: rgba(15, 23, 42, 0.14);\r\n  }\r\n\r\n  .metrics-label {\r\n    display: block;\r\n    font-size: 0.68rem;\r\n    font-weight: 700;\r\n    text-transform: uppercase;\r\n    letter-spacing: 0.1em;\r\n    color: #6b7280;\r\n    margin-bottom: 5px;\r\n    font-family: \"Inter\", sans-serif;\r\n  }\r\n\r\n  .metrics-value {\r\n    display: block;\r\n    font-family: \"Oswald\", sans-serif;\r\n    font-size: 1.8rem;\r\n    line-height: 0.95;\r\n    font-weight: 600;\r\n    color: #111827;\r\n    margin-bottom: 4px;\r\n    letter-spacing: 0.01em;\r\n  }\r\n\r\n  .metrics-unit {\r\n    display: block;\r\n    font-size: 0.78rem;\r\n    font-weight: 600;\r\n    color: #4b5563;\r\n    margin-bottom: 8px;\r\n    text-transform: uppercase;\r\n    letter-spacing: 0.06em;\r\n  }\r\n\r\n  .metrics-card p {\r\n    margin: 0;\r\n    color: #4b5563;\r\n    line-height: 1.5;\r\n    font-size: 0.84rem;\r\n    font-family: \"Inter\", sans-serif;\r\n  }\r\n\r\n  .metrics-footnote {\r\n    margin: 10px 0 0;\r\n    font-size: 0.78rem;\r\n    color: #6b7280;\r\n    line-height: 1.45;\r\n    font-family: \"Inter\", sans-serif;\r\n  }\r\n\r\n  .metrics-card-live {\r\n    border-color: rgba(179, 13, 47, 0.28);\r\n    background: linear-gradient(180deg, rgba(179, 13, 47, 0.04) 0%, #ffffff 100%);\r\n    box-shadow: 0 0 0 1px rgba(179, 13, 47, 0.05);\r\n  }\r\n\r\n  .metrics-card-live .metrics-label {\r\n    color: #9f1239;\r\n  }\r\n\r\n  .metrics-card-live .metrics-value,\r\n  .metrics-card-live .metrics-unit {\r\n    color: #b30d2f;\r\n  }\r\n\r\n  .metrics-accordion {\r\n    margin-top: 10px;\r\n    margin-bottom: 8px;\r\n  }\r\n\r\n  .metrics-section .metrics-accordion-trigger,\r\n  .metrics-section button.metrics-accordion-trigger,\r\n  .elementor-widget-html .metrics-section .metrics-accordion-trigger,\r\n  .elementor-widget-container .metrics-section .metrics-accordion-trigger {\r\n    -webkit-appearance: none !important;\r\n    appearance: none !important;\r\n    width: 100%;\r\n    display: flex;\r\n    justify-content: space-between;\r\n    align-items: center;\r\n    gap: 12px;\r\n    padding: 10px 0;\r\n    margin: 0;\r\n    border: 0 !important;\r\n    border-radius: 0 !important;\r\n    background: transparent !important;\r\n    background-color: transparent !important;\r\n    background-image: none !important;\r\n    box-shadow: none !important;\r\n    color: inherit !important;\r\n    text-align: left;\r\n    cursor: pointer;\r\n  }\r\n\r\n  .metrics-section .metrics-accordion-trigger:hover,\r\n  .metrics-section .metrics-accordion-trigger:focus,\r\n  .metrics-section .metrics-accordion-trigger:active,\r\n  .metrics-section button.metrics-accordion-trigger:hover,\r\n  .metrics-section button.metrics-accordion-trigger:focus,\r\n  .metrics-section button.metrics-accordion-trigger:active {\r\n    background: transparent !important;\r\n    background-color: transparent !important;\r\n    background-image: none !important;\r\n    box-shadow: none !important;\r\n    color: inherit !important;\r\n    border: 0 !important;\r\n    outline: none;\r\n  }\r\n\r\n  .metrics-section .metrics-accordion-trigger:focus-visible {\r\n    outline: 2px solid #cbd5e1;\r\n    outline-offset: 2px;\r\n  }\r\n\r\n  .metrics-accordion-text {\r\n    min-width: 0;\r\n  }\r\n\r\n  .metrics-accordion-title {\r\n    display: block;\r\n    font-size: 0.9rem;\r\n    font-weight: 700;\r\n    letter-spacing: 0.08em;\r\n    text-transform: uppercase;\r\n    color: #b30d2f !important;\r\n    font-family: \"Inter\", sans-serif;\r\n  }\r\n\r\n  .metrics-accordion-sub {\r\n    display: block;\r\n    font-size: 0.8rem;\r\n    color: #6b7280 !important;\r\n    margin-top: 2px;\r\n  }\r\n\r\n  .metrics-accordion-side {\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 8px;\r\n    flex-shrink: 0;\r\n  }\r\n\r\n  .metrics-accordion-tag {\r\n    padding: 4px 8px;\r\n    border-radius: 999px;\r\n    background: rgba(179, 13, 47, 0.08);\r\n    color: #b30d2f;\r\n    font-size: 0.7rem;\r\n    letter-spacing: 0.08em;\r\n    text-transform: uppercase;\r\n    white-space: nowrap;\r\n  }\r\n\r\n  .metrics-accordion-chevron {\r\n    width: 18px;\r\n    height: 18px;\r\n    color: #b30d2f;\r\n    transition: transform 0.25s cubic-bezier(.16,1,.3,1);\r\n    flex-shrink: 0;\r\n  }\r\n\r\n  .metrics-accordion-trigger[aria-expanded=\"true\"] .metrics-accordion-chevron {\r\n    transform: rotate(180deg);\r\n  }\r\n\r\n  .metrics-panel {\r\n    overflow: hidden;\r\n    max-height: 0;\r\n    transition: max-height 0.3s cubic-bezier(.16,1,.3,1);\r\n  }\r\n\r\n  .metrics-panel.is-open {\r\n    max-height: 2000px;\r\n  }\r\n\r\n  .metrics-panel-inner {\r\n    padding-top: 4px;\r\n  }\r\n\r\n  @media (min-width: 961px) {\r\n    .metrics-section .metrics-accordion-trigger {\r\n      cursor: pointer;\r\n    }\r\n  }\r\n\r\n  @media (max-width: 1100px) {\r\n    .metrics-grid {\r\n      grid-template-columns: repeat(3, minmax(0, 1fr));\r\n    }\r\n  }\r\n\r\n  @media (max-width: 820px) {\r\n    .metrics-grid {\r\n      grid-template-columns: repeat(2, minmax(0, 1fr));\r\n    }\r\n  }\r\n\r\n  @media (max-width: 640px) {\r\n    .metrics-accordion-trigger {\r\n      align-items: flex-start;\r\n    }\r\n\r\n    .metrics-accordion-side {\r\n      gap: 6px;\r\n    }\r\n\r\n    .metrics-accordion-tag {\r\n      font-size: 0.64rem;\r\n      padding: 4px 7px;\r\n    }\r\n  }\r\n\r\n  @media (max-width: 540px) {\r\n    .metrics-inner {\r\n      padding: 14px 12px 14px;\r\n    }\r\n\r\n    .metrics-grid {\r\n      grid-template-columns: 1fr;\r\n      gap: 8px;\r\n    }\r\n\r\n    .metrics-value {\r\n      font-size: 1.65rem;\r\n    }\r\n\r\n    .metrics-accordion-trigger {\r\n      gap: 10px;\r\n    }\r\n\r\n    .metrics-accordion-side {\r\n      flex-direction: column;\r\n      align-items: flex-end;\r\n    }\r\n\r\n    .metrics-accordion-tag {\r\n      font-size: 0.62rem;\r\n      letter-spacing: 0.06em;\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<script>\r\n  (function () {\r\n    const triggers = document.querySelectorAll(\".metrics-accordion-trigger\");\r\n\r\n    function closeAllPanels() {\r\n      triggers.forEach(btn => {\r\n        const panelId = btn.getAttribute(\"aria-controls\");\r\n        const panel = document.getElementById(panelId);\r\n        if (!panel) return;\r\n\r\n        btn.setAttribute(\"aria-expanded\", \"false\");\r\n        panel.classList.remove(\"is-open\");\r\n      });\r\n    }\r\n\r\n    function openPanel(btn) {\r\n      const panelId = btn.getAttribute(\"aria-controls\");\r\n      const panel = document.getElementById(panelId);\r\n      if (!panel) return;\r\n\r\n      btn.setAttribute(\"aria-expanded\", \"true\");\r\n      panel.classList.add(\"is-open\");\r\n    }\r\n\r\n    function init() {\r\n      triggers.forEach(btn => {\r\n        btn.addEventListener(\"click\", function () {\r\n          const expanded = btn.getAttribute(\"aria-expanded\") === \"true\";\r\n\r\n          if (expanded) {\r\n            btn.setAttribute(\"aria-expanded\", \"false\");\r\n            const panel = document.getElementById(btn.getAttribute(\"aria-controls\"));\r\n            if (panel) panel.classList.remove(\"is-open\");\r\n          } else {\r\n            closeAllPanels();\r\n            openPanel(btn);\r\n          }\r\n        });\r\n      });\r\n\r\n      closeAllPanels();\r\n    }\r\n\r\n    if (document.readyState === \"loading\") {\r\n      document.addEventListener(\"DOMContentLoaded\", init);\r\n    } else {\r\n      init();\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\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>StatistikZahlen &amp; Fakten Statistik Terminstatus-Abfrage Pr\u00fcfe hier den aktuellen Status deines Fotowunschs (Verein + Altersklasse, z.&nbsp;B. \u201eJ\u00f6llenbeck\u201c &#038; \u201eU15\u201c). Stand abfragen Zur\u00fccksetzen 0% Projektkennzahlen Zahlen hinter Blickpunkt Lokalsport Hinter jeder Galerie stehen viele Stunden Arbeit, Fahrten zu den Pl\u00e4tzen und laufende Kosten. Vieles davon bleibt im Hintergrund \u2013 diese Zahlen zeigen, was das Projekt Jahr &#8230; <a title=\"Statistik\" class=\"read-more\" href=\"https:\/\/blickpunkt-lokalsport.de\/english\/fachbegriffe-2\/\" aria-label=\"Read more about Statistik\">Read more<\/a><\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-52607","page","type-page","status-publish"],"acf":[],"_links":{"self":[{"href":"https:\/\/blickpunkt-lokalsport.de\/english\/wp-json\/wp\/v2\/pages\/52607","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=52607"}],"version-history":[{"count":7,"href":"https:\/\/blickpunkt-lokalsport.de\/english\/wp-json\/wp\/v2\/pages\/52607\/revisions"}],"predecessor-version":[{"id":52615,"href":"https:\/\/blickpunkt-lokalsport.de\/english\/wp-json\/wp\/v2\/pages\/52607\/revisions\/52615"}],"wp:attachment":[{"href":"https:\/\/blickpunkt-lokalsport.de\/english\/wp-json\/wp\/v2\/media?parent=52607"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}