{"id":1287,"date":"2026-07-31T20:41:07","date_gmt":"2026-07-31T18:41:07","guid":{"rendered":"https:\/\/dart.scubyhome.de\/wordpress\/?page_id=1287"},"modified":"2026-08-16T19:53:17","modified_gmt":"2026-08-16T17:53:17","slug":"landingpage","status":"publish","type":"page","link":"https:\/\/dart.scubyhome.de\/wordpress\/","title":{"rendered":"SV Hage Darts \u2013 Steeldart-Verein in Hage (Ostfriesland) | Probetraining"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1287\" class=\"elementor elementor-1287\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7342d0a e-flex e-con-boxed e-con e-parent\" data-id=\"7342d0a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4b2e13a e-flex e-con-boxed e-con e-parent\" data-id=\"4b2e13a\" 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-280bb05 elementor-widget elementor-widget-html\" data-id=\"280bb05\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- SV Hage Darts Startseite \u2013 ADDON-VERSION (Live-Panel via SV-Hage-Matchcenter-Plugin) | Elementor HTML Widget | Version 1.3 -->\r\n<script type=\"application\/ld+json\">\r\n{\r\n  \"@context\": \"https:\/\/schema.org\",\r\n  \"@type\": \"SportsClub\",\r\n  \"name\": \"SV Hage Darts\",\r\n  \"alternateName\": \"SV Hage Darts \\u2013 Steeldart in Hage\",\r\n  \"description\": \"Steeldart-Sparte des SV Hage: vier Mannschaften in Kreisliga und Kreisklasse (DVWE), \\u00fcber 30 aktive Spieler und Ausrichter des Nordsee Dart Masters\\u2122. Probetraining jederzeit m\\u00f6glich \\u2013 f\\u00fcr jung und alt, Frauen wie M\\u00e4nner.\",\r\n  \"url\": \"https:\/\/dart.scubyhome.de\/wordpress\/\",\r\n  \"logo\": \"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/07\/SV-Hage-Darts-Logo.png\",\r\n  \"image\": \"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/07\/SturmDart.png\",\r\n  \"sport\": \"Darts\",\r\n  \"slogan\": \"Sturm. Spiel. Gemeinschaft.\",\r\n  \"parentOrganization\": {\r\n    \"@type\": \"SportsOrganization\",\r\n    \"name\": \"SV Hage\",\r\n    \"url\": \"https:\/\/www.svhage.de\/\"\r\n  },\r\n  \"location\": {\r\n    \"@type\": \"Place\",\r\n    \"name\": \"Zeppelin Hage\",\r\n    \"address\": {\r\n      \"@type\": \"PostalAddress\",\r\n      \"streetAddress\": \"Kastanienallee 1\",\r\n      \"postalCode\": \"26524\",\r\n      \"addressLocality\": \"Hage\",\r\n      \"addressRegion\": \"Niedersachsen\",\r\n      \"addressCountry\": \"DE\"\r\n    }\r\n  },\r\n  \"openingHoursSpecification\": [\r\n    {\r\n      \"@type\": \"OpeningHoursSpecification\",\r\n      \"dayOfWeek\": [\"Tuesday\", \"Wednesday\"],\r\n      \"opens\": \"19:00\",\r\n      \"closes\": \"21:00\"\r\n    }\r\n  ],\r\n  \"sameAs\": [\r\n    \"https:\/\/www.instagram.com\/sv_hage_darter\/\",\r\n    \"https:\/\/chat.whatsapp.com\/KVf8V7CfhLnETrmjKDYpUT\",\r\n    \"https:\/\/www.svhage.de\/\",\r\n    \"https:\/\/nordseedartmasters.de\/\"\r\n  ]\r\n}\r\n<\/script>\r\n<style>\r\n  .svh-home {\r\n    --svh-bg: #050b12;\r\n    --svh-card: rgba(255,255,255,.078);\r\n    --svh-line: rgba(255,255,255,.145);\r\n    --svh-text: #f7fbff;\r\n    --svh-muted: #a8b8c9;\r\n    --svh-blue: #1d9bd7;\r\n    --svh-ice: #92eaff;\r\n    --svh-gold: #d9a441;\r\n    --svh-green: #39b978;\r\n    --svh-red: #d94a5f;\r\n    --svh-shadow: 0 28px 80px rgba(0,0,0,.46);\r\n    --svh-radius: 28px;\r\n\r\n    background: var(--svh-bg);\r\n    color: var(--svh-text);\r\n    font-family: Inter, Segoe UI, Arial, sans-serif;\r\n    overflow: hidden;\r\n    position: relative;\r\n  }\r\n\r\n  .svh-home * {\r\n    box-sizing: border-box;\r\n  }\r\n\r\n  .svh-home a {\r\n    color: inherit;\r\n    text-decoration: none;\r\n  }\r\n\r\n  .svh-home img {\r\n    max-width: 100%;\r\n    display: block;\r\n  }\r\n\r\n  .svh-bg-glow {\r\n    position: absolute;\r\n    inset: 0;\r\n    pointer-events: none;\r\n    background:\r\n      radial-gradient(circle at 16% 0%, rgba(29,155,215,.20), transparent 30%),\r\n      radial-gradient(circle at 92% 12%, rgba(217,164,65,.12), transparent 24%),\r\n      linear-gradient(180deg, #07131f 0%, #03070d 72%);\r\n    z-index: 0;\r\n  }\r\n\r\n  .svh-wrap {\r\n    width: min(1200px, calc(100% - 36px));\r\n    margin: 0 auto;\r\n    position: relative;\r\n    z-index: 2;\r\n  }\r\n\r\n  .svh-btn {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    border-radius: 999px;\r\n    padding: 13px 20px;\r\n    border: 1px solid var(--svh-line);\r\n    background: rgba(255,255,255,.08);\r\n    color: var(--svh-text);\r\n    font-weight: 950;\r\n    box-shadow: 0 14px 30px rgba(0,0,0,.22);\r\n    transition: .2s ease;\r\n    cursor: pointer;\r\n  }\r\n\r\n  .svh-btn:hover {\r\n    transform: translateY(-2px);\r\n    background: rgba(255,255,255,.13);\r\n  }\r\n\r\n  .svh-home .svh-btn-primary {\r\n    background: #f7fbff;\r\n    color: #06111d;\r\n    border: 0;\r\n  }\r\n\r\n  .svh-nav {\r\n    position: sticky;\r\n    top: 0;\r\n    z-index: 50;\r\n    border-bottom: 1px solid var(--svh-line);\r\n    background: rgba(5,11,18,.86);\r\n    backdrop-filter: blur(18px);\r\n  }\r\n\r\n  .svh-nav-inner {\r\n    height: 78px;\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: space-between;\r\n    gap: 20px;\r\n  }\r\n\r\n  .svh-brand {\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 13px;\r\n    font-weight: 1000;\r\n  }\r\n\r\n  .svh-brand-logo {\r\n    width: 56px;\r\n    height: 56px;\r\n    border-radius: 18px;\r\n    background: rgba(255,255,255,.94);\r\n    display: grid;\r\n    place-items: center;\r\n    padding: 6px;\r\n    box-shadow: 0 14px 34px rgba(0,0,0,.35);\r\n  }\r\n\r\n  .svh-brand-title {\r\n    line-height: 1.05;\r\n  }\r\n\r\n  .svh-brand-title small {\r\n    display: block;\r\n    color: var(--svh-muted);\r\n    font-size: 11px;\r\n    text-transform: uppercase;\r\n    letter-spacing: 1.4px;\r\n    margin-top: 3px;\r\n  }\r\n\r\n  .svh-nav-links {\r\n    display: flex;\r\n    gap: 20px;\r\n    font-size: 14px;\r\n    font-weight: 850;\r\n    color: #c9d6e4;\r\n  }\r\n\r\n  .svh-nav-links a:hover {\r\n    color: #fff;\r\n  }\r\n\r\n  .svh-hero {\r\n    min-height: 850px;\r\n    position: relative;\r\n    display: flex;\r\n    align-items: center;\r\n    overflow: hidden;\r\n  }\r\n\r\n  .svh-hero::before {\r\n    content: \"\";\r\n    position: absolute;\r\n    inset: 0;\r\n    background-image: url(\"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/07\/SturmDart.png\");\r\n    background-size: cover;\r\n    background-position: center 28%;\r\n    filter: saturate(1.08) contrast(1.04) brightness(1.08);\r\n    z-index: 0;\r\n  }\r\n\r\n  .svh-hero::after {\r\n    content: \"\";\r\n    position: absolute;\r\n    inset: 0;\r\n    background:\r\n      linear-gradient(90deg, rgba(5,11,18,.9) 0%, rgba(5,11,18,.64) 40%, rgba(5,11,18,.18) 66%, rgba(5,11,18,.42) 100%),\r\n      linear-gradient(180deg, rgba(5,11,18,.08) 0%, rgba(5,11,18,.72) 100%);\r\n    z-index: 1;\r\n  }\r\n\r\n  .svh-hero-grid {\r\n    display: grid;\r\n    grid-template-columns: 1.03fr .97fr;\r\n    gap: 38px;\r\n    align-items: end;\r\n    padding: 92px 0 64px;\r\n  }\r\n\r\n  .svh-pill {\r\n    display: inline-flex;\r\n    border: 1px solid rgba(255,255,255,.22);\r\n    background: rgba(255,255,255,.085);\r\n    border-radius: 999px;\r\n    padding: 10px 15px;\r\n    font-size: 13px;\r\n    font-weight: 1000;\r\n    letter-spacing: 1.45px;\r\n    text-transform: uppercase;\r\n    color: #d8e9f7;\r\n  }\r\n\r\n  .svh-hero h1 {\r\n    font-size: clamp(54px, 7.4vw, 106px);\r\n    line-height: .88;\r\n    margin: 22px 0 20px;\r\n    letter-spacing: -3.8px;\r\n    font-weight: 1000;\r\n  }\r\n\r\n  .svh-accent {\r\n    color: #bdeeff;\r\n  }\r\n\r\n  .svh-lead {\r\n    font-size: 20px;\r\n    line-height: 1.72;\r\n    color: #d1dbe6;\r\n    max-width: 690px;\r\n    margin: 0 0 30px;\r\n  }\r\n\r\n  .svh-actions {\r\n    display: flex;\r\n    gap: 14px;\r\n    flex-wrap: wrap;\r\n  }\r\n\r\n  .svh-facts {\r\n    display: grid;\r\n    grid-template-columns: repeat(4, 1fr);\r\n    gap: 12px;\r\n    margin-top: 34px;\r\n  }\r\n\r\n  .svh-fact {\r\n    background: rgba(255,255,255,.075);\r\n    border: 1px solid var(--svh-line);\r\n    border-radius: 21px;\r\n    padding: 17px;\r\n    box-shadow: var(--svh-shadow);\r\n  }\r\n\r\n  .svh-fact b {\r\n    display: block;\r\n    font-size: 29px;\r\n  }\r\n\r\n  .svh-fact span {\r\n    color: var(--svh-muted);\r\n    font-size: 12px;\r\n    letter-spacing: 1px;\r\n    text-transform: uppercase;\r\n    font-weight: 950;\r\n  }\r\n\r\n  .svh-live-panel {\r\n    border: 1px solid var(--svh-line);\r\n    background: rgba(5,11,18,.66);\r\n    backdrop-filter: blur(16px);\r\n    border-radius: 34px;\r\n    padding: 24px;\r\n    box-shadow: var(--svh-shadow);\r\n  }\r\n\r\n  .svh-live-head {\r\n    display: flex;\r\n    gap: 16px;\r\n    align-items: center;\r\n    margin-bottom: 18px;\r\n  }\r\n\r\n  .svh-live-logo {\r\n    width: 88px;\r\n    height: 88px;\r\n    border-radius: 24px;\r\n    background: rgba(255,255,255,.94);\r\n    display: grid;\r\n    place-items: center;\r\n    padding: 10px;\r\n  }\r\n\r\n  .svh-tag {\r\n    display: inline-flex;\r\n    border: 1px solid rgba(146,234,255,.28);\r\n    background: rgba(146,234,255,.10);\r\n    padding: 8px 12px;\r\n    border-radius: 999px;\r\n    font-size: 12px;\r\n    font-weight: 1000;\r\n    letter-spacing: 1px;\r\n    text-transform: uppercase;\r\n    color: #cdf7ff;\r\n  }\r\n\r\n  .svh-live-panel h3 {\r\n    font-size: 28px;\r\n    margin: 0 0 6px;\r\n  }\r\n\r\n  .svh-live-panel p {\r\n    color: var(--svh-muted);\r\n    line-height: 1.6;\r\n    margin: 0;\r\n  }\r\n\r\n  \/* ---- \"Heute\"-Highlight (Spiel\/Turnier am selben Tag) ---- *\/\r\n  .svh-today { margin-bottom: 20px; border: 1px solid rgba(146,234,255,.42); background: linear-gradient(150deg, rgba(146,234,255,.16), rgba(29,155,215,.05)); border-radius: 22px; padding: 16px; box-shadow: 0 0 26px rgba(146,234,255,.12); }\r\n  .svh-today[hidden] { display: none; }\r\n  .svh-today-head { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }\r\n  .svh-today-live { display: inline-flex; align-items: center; gap: 6px; background: var(--svh-red); color: #fff; font-size: 11px; font-weight: 1000; letter-spacing: .8px; text-transform: uppercase; padding: 4px 10px; border-radius: 999px; }\r\n  .svh-today-head b { font-size: 16px; letter-spacing: -.3px; }\r\n  .svh-today-list { display: grid; gap: 10px; }\r\n  .svh-today-card { display: block; border: 1px solid var(--svh-line); border-left: 3px solid var(--lg, #1d9bd7); background: rgba(255,255,255,.05); border-radius: 14px; padding: 12px 14px; transition: .2s ease; }\r\n  .svh-today-card:hover { background: rgba(255,255,255,.09); transform: translateY(-2px); border-color: rgba(146,234,255,.4); }\r\n  .svh-today-top { display: flex; align-items: center; gap: 8px; margin-bottom: 7px; }\r\n  .svh-today-top .svh-league-badge { background: var(--lg, #1d9bd7); }\r\n  .svh-today-time { margin-left: auto; color: var(--svh-ice); font-weight: 1000; font-size: 13px; }\r\n  .svh-today-title { font-weight: 950; font-size: 15px; line-height: 1.3; }\r\n  .svh-today-title .us { color: var(--svh-ice); font-weight: 1000; }\r\n  .svh-today-meta { color: var(--svh-muted); font-size: 12px; font-weight: 800; margin-top: 5px; display: flex; gap: 7px; flex-wrap: wrap; align-items: center; }\r\n  .svh-today-golive { margin-left: auto; color: var(--svh-ice); font-weight: 1000; white-space: nowrap; }\r\n  .svh-today-result { margin-left: auto; display: inline-flex; align-items: center; gap: 5px; color: #f0d08a; font-weight: 1000; white-space: nowrap; }\r\n  .svh-today-result.score { color: var(--svh-ice); }\r\n\r\n  .svh-score {\r\n    display: grid;\r\n    grid-template-columns: 1fr auto 1fr;\r\n    align-items: center;\r\n    gap: 12px;\r\n    border: 1px solid var(--svh-line);\r\n    background: rgba(255,255,255,.075);\r\n    border-radius: 24px;\r\n    padding: 18px;\r\n    margin-bottom: 14px;\r\n  }\r\n\r\n  .svh-score b {\r\n    font-size: 24px;\r\n  }\r\n\r\n  .svh-score small {\r\n    color: var(--svh-muted);\r\n    font-weight: 850;\r\n    text-transform: uppercase;\r\n    letter-spacing: 1px;\r\n  }\r\n\r\n  .svh-vs {\r\n    font-weight: 1000;\r\n    color: #06111d;\r\n    background: #fff;\r\n    border-radius: 999px;\r\n    padding: 8px 12px;\r\n  }\r\n\r\n  .svh-next {\r\n    display: grid;\r\n    grid-template-columns: 82px 1fr;\r\n    gap: 15px;\r\n    align-items: center;\r\n    border: 1px solid var(--svh-line);\r\n    background: rgba(255,255,255,.065);\r\n    border-radius: 24px;\r\n    padding: 16px;\r\n  }\r\n\r\n  .svh-date {\r\n    width: 72px;\r\n    height: 72px;\r\n    border-radius: 20px;\r\n    background: #fff;\r\n    color: #06111d;\r\n    display: grid;\r\n    place-items: center;\r\n    font-weight: 1000;\r\n    font-size: 18px;\r\n    text-align: center;\r\n  }\r\n\r\n  \/* Naechster Spieltag (live) *\/\r\n  .svh-fixtures {\r\n    display: grid;\r\n    gap: 12px;\r\n  }\r\n\r\n  .svh-fixtures-loading {\r\n    color: var(--svh-muted);\r\n    font-weight: 850;\r\n    padding: 8px 2px;\r\n  }\r\n\r\n  .svh-league {\r\n    border: 1px solid var(--svh-line);\r\n    background: rgba(255,255,255,.05);\r\n    border-radius: 22px;\r\n    padding: 15px;\r\n  }\r\n\r\n  .svh-league-head {\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 10px;\r\n    margin-bottom: 12px;\r\n    flex-wrap: wrap;\r\n  }\r\n\r\n  .svh-league-badge {\r\n    font-weight: 1000;\r\n    font-size: 13px;\r\n    letter-spacing: 1px;\r\n    background: var(--lg, #1d9bd7);\r\n    color: #06111d;\r\n    padding: 5px 11px;\r\n    border-radius: 999px;\r\n  }\r\n\r\n  .svh-league-day {\r\n    color: var(--svh-muted);\r\n    font-weight: 850;\r\n    font-size: 13px;\r\n  }\r\n\r\n  .svh-cd {\r\n    display: grid;\r\n    grid-template-columns: repeat(4, 1fr);\r\n    gap: 8px;\r\n    margin-bottom: 12px;\r\n  }\r\n\r\n  .svh-cd > div {\r\n    background: rgba(0,0,0,.26);\r\n    border: 1px solid var(--svh-line);\r\n    border-radius: 14px;\r\n    padding: 9px 4px;\r\n    text-align: center;\r\n  }\r\n\r\n  .svh-cd b {\r\n    display: block;\r\n    font-size: 22px;\r\n    line-height: 1;\r\n    font-weight: 1000;\r\n  }\r\n\r\n  .svh-cd span {\r\n    font-size: 10px;\r\n    text-transform: uppercase;\r\n    letter-spacing: 1px;\r\n    color: var(--svh-muted);\r\n    font-weight: 900;\r\n  }\r\n\r\n  .svh-cd.is-live b {\r\n    color: var(--svh-green);\r\n  }\r\n\r\n  .svh-fx {\r\n    display: grid;\r\n    gap: 8px;\r\n  }\r\n\r\n  .svh-fx-row {\r\n    display: grid;\r\n    grid-template-columns: 1fr auto;\r\n    gap: 10px;\r\n    align-items: center;\r\n    background: rgba(255,255,255,.05);\r\n    border: 1px solid var(--svh-line);\r\n    border-radius: 14px;\r\n    padding: 10px 12px;\r\n  }\r\n\r\n  .svh-fx-teams {\r\n    font-weight: 850;\r\n    font-size: 14px;\r\n    line-height: 1.35;\r\n  }\r\n\r\n  .svh-fx-teams .us {\r\n    color: var(--svh-ice);\r\n    font-weight: 1000;\r\n  }\r\n\r\n  .svh-vs-mini {\r\n    color: var(--svh-muted);\r\n    font-size: 11px;\r\n    font-weight: 900;\r\n    text-transform: uppercase;\r\n    margin: 0 6px;\r\n  }\r\n\r\n  .svh-fx-meta {\r\n    text-align: right;\r\n    white-space: nowrap;\r\n  }\r\n\r\n  .svh-fx-time {\r\n    display: block;\r\n    font-size: 12px;\r\n    color: var(--svh-muted);\r\n    font-weight: 850;\r\n  }\r\n\r\n  .svh-fx-time.svh-fx-moved { color: var(--svh-ice); font-weight: 1000; }\r\n\r\n  .svh-fx-tag {\r\n    display: inline-block;\r\n    font-size: 10px;\r\n    font-weight: 1000;\r\n    letter-spacing: .8px;\r\n    text-transform: uppercase;\r\n    padding: 3px 8px;\r\n    border-radius: 999px;\r\n    margin-top: 4px;\r\n  }\r\n\r\n  .svh-fx-home {\r\n    background: rgba(57,185,120,.16);\r\n    color: #7ff0b4;\r\n    border: 1px solid rgba(57,185,120,.42);\r\n  }\r\n\r\n  .svh-fx-away {\r\n    background: rgba(217,74,95,.16);\r\n    color: #ffabb6;\r\n    border: 1px solid rgba(217,74,95,.42);\r\n  }\r\n\r\n  .svh-fx-score:not(:empty) {\r\n    color: var(--svh-ice);\r\n    font-weight: 1000;\r\n    margin-left: 8px;\r\n  }\r\n\r\n  .svh-home .svh-fx-live {\r\n    display: none;\r\n    align-items: center;\r\n    gap: 6px;\r\n    margin-top: 6px;\r\n    padding: 4px 10px;\r\n    border-radius: 999px;\r\n    background: var(--svh-red);\r\n    color: #fff;\r\n    font-size: 11px;\r\n    font-weight: 1000;\r\n    letter-spacing: .6px;\r\n    text-transform: uppercase;\r\n    transition: .2s ease;\r\n  }\r\n\r\n  .svh-home .svh-fx-live:hover {\r\n    transform: translateY(-1px);\r\n    filter: brightness(1.08);\r\n  }\r\n\r\n  .svh-home .svh-fx-row.is-live .svh-fx-live {\r\n    display: inline-flex;\r\n  }\r\n\r\n  .svh-live-dot {\r\n    width: 7px;\r\n    height: 7px;\r\n    border-radius: 50%;\r\n    background: #fff;\r\n    animation: svh-pulse 1.1s ease-in-out infinite;\r\n  }\r\n\r\n  @keyframes svh-pulse {\r\n    0%, 100% { opacity: 1; transform: scale(1); }\r\n    50% { opacity: .35; transform: scale(.7); }\r\n  }\r\n\r\n  .svh-fx-row {\r\n    cursor: pointer;\r\n  }\r\n\r\n  .svh-fx-row:hover {\r\n    border-color: rgba(146,234,255,.4);\r\n    background: rgba(255,255,255,.08);\r\n  }\r\n\r\n  \/* Live-Modal (alle Einzelspiele gebuendelt) *\/\r\n  .svh-modal {\r\n    position: fixed;\r\n    inset: 0;\r\n    z-index: 9999;\r\n    display: grid;\r\n    place-items: center;\r\n    padding: 20px;\r\n  }\r\n\r\n  .svh-modal[hidden] { display: none; }\r\n\r\n  .svh-modal-backdrop {\r\n    position: absolute;\r\n    inset: 0;\r\n    background: rgba(3,7,13,.72);\r\n    backdrop-filter: blur(6px);\r\n  }\r\n\r\n  .svh-modal-card {\r\n    position: relative;\r\n    width: min(620px, 100%);\r\n    max-height: 86vh;\r\n    display: flex;\r\n    flex-direction: column;\r\n    background: #0a1420;\r\n    border: 1px solid var(--svh-line);\r\n    border-radius: 26px;\r\n    box-shadow: var(--svh-shadow);\r\n    overflow: hidden;\r\n  }\r\n\r\n  .svh-modal-head {\r\n    display: flex;\r\n    justify-content: space-between;\r\n    align-items: flex-start;\r\n    gap: 14px;\r\n    padding: 22px 24px 16px;\r\n    border-bottom: 1px solid var(--svh-line);\r\n  }\r\n\r\n  .svh-modal-badge {\r\n    display: inline-block;\r\n    font-weight: 1000;\r\n    font-size: 12px;\r\n    letter-spacing: 1px;\r\n    background: var(--lg, #1d9bd7);\r\n    color: #06111d;\r\n    padding: 4px 10px;\r\n    border-radius: 999px;\r\n    margin-bottom: 8px;\r\n  }\r\n\r\n  .svh-modal-head h3 { margin: 0; font-size: 24px; letter-spacing: -.5px; }\r\n  .svh-modal-head p { margin: 4px 0 0; color: var(--svh-muted); font-size: 13px; font-weight: 800; }\r\n\r\n  .svh-modal-close {\r\n    flex: none;\r\n    width: 40px;\r\n    height: 40px;\r\n    border-radius: 50%;\r\n    border: 1px solid var(--svh-line);\r\n    background: rgba(255,255,255,.06);\r\n    color: var(--svh-text);\r\n    font-size: 22px;\r\n    line-height: 1;\r\n    padding: 0;\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    cursor: pointer;\r\n    transition: .2s ease;\r\n  }\r\n\r\n  .svh-modal-close:hover { background: rgba(255,255,255,.13); }\r\n\r\n  .svh-modal-body {\r\n    padding: 16px 24px;\r\n    overflow-y: auto;\r\n    display: grid;\r\n    gap: 10px;\r\n  }\r\n\r\n  .svh-modal-foot {\r\n    padding: 14px 24px 20px;\r\n    border-top: 1px solid var(--svh-line);\r\n    display: flex;\r\n    justify-content: flex-end;\r\n  }\r\n\r\n  .svh-modal-empty {\r\n    color: var(--svh-muted);\r\n    text-align: center;\r\n    padding: 26px 10px;\r\n    font-weight: 800;\r\n  }\r\n\r\n  .svh-ribbon {\r\n    border: 1px solid var(--svh-line);\r\n    background: rgba(255,255,255,.04);\r\n    border-radius: 16px;\r\n    padding: 12px 14px;\r\n  }\r\n\r\n  .svh-ribbon.is-live {\r\n    border-color: rgba(57,185,120,.45);\r\n    background: rgba(57,185,120,.07);\r\n  }\r\n\r\n  .svh-ribbon-top {\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 8px;\r\n    margin-bottom: 10px;\r\n    font-size: 11px;\r\n    color: var(--svh-muted);\r\n    font-weight: 900;\r\n    text-transform: uppercase;\r\n    letter-spacing: .6px;\r\n  }\r\n\r\n  .svh-ribbon-board { color: var(--svh-ice); }\r\n  .svh-ribbon-round { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\r\n\r\n  .svh-ribbon-status { padding: 3px 8px; border-radius: 999px; }\r\n  .svh-ribbon-status.s-live { background: var(--svh-red); color: #fff; display: inline-flex; align-items: center; gap: 5px; }\r\n  .svh-ribbon-status.s-done { background: rgba(255,255,255,.1); color: var(--svh-muted); }\r\n  .svh-ribbon-status.s-soon { background: rgba(146,234,255,.14); color: #cdf7ff; }\r\n\r\n  .svh-ribbon-p {\r\n    display: grid;\r\n    grid-template-columns: 1fr auto auto;\r\n    gap: 12px;\r\n    align-items: center;\r\n    padding: 7px 0;\r\n    font-weight: 850;\r\n  }\r\n\r\n  .svh-ribbon-p + .svh-ribbon-p { border-top: 1px dashed rgba(255,255,255,.1); }\r\n  .svh-ribbon-p.us .svh-ribbon-name { color: var(--svh-ice); }\r\n\r\n  .svh-ribbon-p.throw {\r\n    background: rgba(57,185,120,.12);\r\n    border-radius: 10px;\r\n    box-shadow: inset 3px 0 0 var(--svh-green);\r\n    padding-left: 10px;\r\n  }\r\n\r\n  .svh-throw-chip {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 5px;\r\n    background: var(--svh-green);\r\n    color: #05130c;\r\n    font-size: 9px;\r\n    font-weight: 1000;\r\n    letter-spacing: .5px;\r\n    text-transform: uppercase;\r\n    padding: 2px 8px;\r\n    border-radius: 999px;\r\n    margin-bottom: 2px;\r\n  }\r\n\r\n  .svh-throw-chip .svh-live-dot {\r\n    width: 5px;\r\n    height: 5px;\r\n    background: #05130c;\r\n  }\r\n\r\n  .svh-ribbon-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\r\n  .svh-ribbon-legs { font-size: 18px; font-weight: 1000; min-width: 22px; text-align: center; }\r\n  .svh-ribbon-meta { display: flex; flex-direction: column; align-items: flex-end; gap: 1px; min-width: 60px; }\r\n  .svh-ribbon-last { font-size: 12px; font-weight: 1000; color: var(--svh-ice); line-height: 1.1; }\r\n  .svh-ribbon-rest { font-size: 10px; font-weight: 900; color: var(--svh-muted); text-transform: uppercase; letter-spacing: .3px; line-height: 1.1; }\r\n  .svh-ribbon-p.win .svh-ribbon-legs { color: var(--svh-green); }\r\n\r\n  .svh-livecenter {\r\n    margin-top: 12px;\r\n    width: 100%;\r\n    display: inline-flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    gap: 8px;\r\n    padding: 12px 16px;\r\n    border-radius: 16px;\r\n    border: 1px solid rgba(146,234,255,.3);\r\n    background: rgba(146,234,255,.1);\r\n    color: #cdf7ff;\r\n    font-family: inherit;\r\n    font-weight: 1000;\r\n    letter-spacing: .5px;\r\n    text-transform: uppercase;\r\n    font-size: 12px;\r\n    cursor: pointer;\r\n    transition: .2s ease;\r\n  }\r\n\r\n  .svh-livecenter:hover { background: rgba(146,234,255,.16); transform: translateY(-1px); }\r\n  .svh-livecenter .svh-live-dot { background: #7ff0b4; }\r\n\r\n  .svh-center-team {\r\n    border: 1px solid var(--svh-line);\r\n    background: rgba(255,255,255,.03);\r\n    border-radius: 18px;\r\n    padding: 12px;\r\n  }\r\n\r\n  .svh-center-head {\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 8px;\r\n    flex-wrap: wrap;\r\n    margin-bottom: 10px;\r\n  }\r\n\r\n  .svh-center-title { font-weight: 900; font-size: 14px; flex: 1 1 130px; min-width: 0; }\r\n  .svh-center-title b { color: var(--svh-ice); }\r\n  .svh-center-title .svh-vs-mini { margin: 0 5px; }\r\n  .svh-center-when { color: var(--svh-muted); font-size: 11px; font-weight: 850; text-transform: uppercase; letter-spacing: .5px; }\r\n  .svh-center-result { font-weight: 1000; color: var(--svh-ice); font-size: 15px; }\r\n\r\n  .svh-center-ext {\r\n    font-size: 11px; font-weight: 900; color: var(--svh-muted);\r\n    border: 1px solid var(--svh-line); border-radius: 999px; padding: 3px 9px;\r\n  }\r\n  .svh-center-ext:hover { color: #fff; }\r\n\r\n  .svh-center-games { display: grid; gap: 8px; }\r\n  .svh-center-empty { color: var(--svh-muted); font-size: 13px; padding: 6px 2px; font-weight: 700; }\r\n\r\n  \/* Turnier-Live (alle Boards parallel) *\/\r\n  .svh-modal.is-board .svh-modal-card { width: min(960px, 100%); }\r\n  .svh-board-summary { display: flex; align-items: center; gap: 10px; font-size: 12px; font-weight: 900; color: var(--svh-muted); text-transform: uppercase; letter-spacing: .5px; }\r\n  .svh-board-summary .svh-ribbon-status { padding: 3px 9px; border-radius: 999px; }\r\n  .svh-board-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 10px; }\r\n  .svh-board .svh-ribbon-players { display: grid; gap: 2px; }\r\n\r\n  \/* Turnier-Endergebnis (Sieger + Podium) *\/\r\n  .svh-result { display: grid; gap: 12px; }\r\n  .svh-result-winner { display: flex; align-items: center; gap: 14px; border: 1px solid rgba(232,182,75,.5); background: linear-gradient(145deg, rgba(232,182,75,.18), rgba(255,255,255,.03)); border-radius: 18px; padding: 16px 18px; }\r\n  .svh-result-trophy { font-size: 34px; line-height: 1; filter: drop-shadow(0 4px 14px rgba(240,194,74,.45)); }\r\n  .svh-result-label { display: block; color: #f0d08a; font-size: 11px; font-weight: 1000; letter-spacing: 1px; text-transform: uppercase; margin-bottom: 2px; }\r\n  .svh-result-winner b { font-size: 22px; letter-spacing: -.3px; }\r\n  .svh-podium { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }\r\n  .svh-podium li { display: grid; grid-template-columns: 34px 1fr auto; gap: 10px; align-items: center; border: 1px solid var(--svh-line); background: rgba(255,255,255,.04); border-radius: 12px; padding: 9px 12px; font-weight: 850; font-size: 14px; }\r\n  .svh-podium .pl { text-align: center; font-weight: 1000; color: var(--svh-muted); }\r\n  .svh-podium .medal { font-size: 15px; }\r\n  .svh-podium li.p1 { border-color: rgba(232,182,75,.5); background: rgba(232,182,75,.08); }\r\n\r\n  @media (max-width: 560px) {\r\n    .svh-modal { padding: 0; }\r\n    .svh-modal-card { width: 100%; height: 100%; max-height: 100%; border-radius: 0; }\r\n    .svh-modal-head { padding: 16px 16px 12px; }\r\n    .svh-modal-head h3 { font-size: 20px; }\r\n    .svh-modal-body { padding: 12px 14px; }\r\n    .svh-modal-foot { padding: 12px 14px 16px; }\r\n    .svh-center-title { flex-basis: 100%; }\r\n    .svh-ribbon-legs { font-size: 16px; }\r\n    .svh-ribbon-meta { min-width: 52px; }\r\n  }\r\n\r\n  .svh-section {\r\n    padding: 78px 0;\r\n    position: relative;\r\n    z-index: 2;\r\n  }\r\n\r\n  .svh-head {\r\n    display: flex;\r\n    justify-content: space-between;\r\n    align-items: end;\r\n    gap: 24px;\r\n    margin-bottom: 28px;\r\n  }\r\n\r\n  .svh-kicker {\r\n    color: var(--svh-ice);\r\n    text-transform: uppercase;\r\n    letter-spacing: 2px;\r\n    font-size: 13px;\r\n    font-weight: 1000;\r\n  }\r\n\r\n  .svh-head h2 {\r\n    font-size: clamp(34px, 4vw, 58px);\r\n    line-height: 1;\r\n    margin: 8px 0 0;\r\n    letter-spacing: -2px;\r\n  }\r\n\r\n  .svh-head p {\r\n    max-width: 490px;\r\n    color: var(--svh-muted);\r\n    line-height: 1.7;\r\n    margin: 0;\r\n  }\r\n\r\n  .svh-grid-3 {\r\n    display: grid;\r\n    grid-template-columns: 1.15fr .925fr .925fr;\r\n    gap: 18px;\r\n  }\r\n\r\n  .svh-card {\r\n    border: 1px solid var(--svh-line);\r\n    background: var(--svh-card);\r\n    border-radius: var(--svh-radius);\r\n    box-shadow: var(--svh-shadow);\r\n    overflow: hidden;\r\n  }\r\n\r\n  .svh-news {\r\n    padding: 26px;\r\n    min-height: 238px;\r\n  }\r\n\r\n  .svh-news-big {\r\n    min-height: 385px;\r\n    background: linear-gradient(145deg, rgba(29,155,215,.18), rgba(255,255,255,.07));\r\n  }\r\n\r\n  .svh-news h3 {\r\n    font-size: 27px;\r\n    margin: 18px 0 10px;\r\n  }\r\n\r\n  .svh-news-big h3 {\r\n    font-size: 40px;\r\n    line-height: 1.04;\r\n  }\r\n\r\n  .svh-news p,\r\n  .svh-feature p,\r\n  .svh-club-text p,\r\n  .svh-clublink p {\r\n    color: #c5d1df;\r\n    line-height: 1.65;\r\n  }\r\n\r\n  \/* News (WordPress-Beitraege) *\/\r\n  .svh-news-grid {\r\n    display: grid;\r\n    grid-template-columns: repeat(3, 1fr);\r\n    gap: 18px;\r\n  }\r\n\r\n  .svh-news-state {\r\n    grid-column: 1 \/ -1;\r\n    padding: 28px;\r\n    border: 1px solid var(--svh-line);\r\n    background: rgba(255,255,255,.05);\r\n    border-radius: var(--svh-radius);\r\n    color: var(--svh-muted);\r\n    text-align: center;\r\n    font-weight: 850;\r\n  }\r\n\r\n  .svh-post {\r\n    display: flex;\r\n    flex-direction: column;\r\n    padding: 0;\r\n    text-align: left;\r\n  }\r\n\r\n  .svh-post-media {\r\n    aspect-ratio: 16 \/ 9;\r\n    overflow: hidden;\r\n    background: linear-gradient(145deg, rgba(29,155,215,.2), rgba(255,255,255,.04));\r\n    border-bottom: 1px solid var(--svh-line);\r\n  }\r\n\r\n  .svh-post-media img {\r\n    width: 100%;\r\n    height: 100%;\r\n    object-fit: cover;\r\n    transition: transform .4s ease;\r\n  }\r\n\r\n  .svh-post:hover .svh-post-media img { transform: scale(1.05); }\r\n\r\n  .svh-post-fallback {\r\n    width: 100%;\r\n    height: 100%;\r\n    display: grid;\r\n    place-items: center;\r\n    color: var(--svh-ice);\r\n    font-weight: 1000;\r\n    letter-spacing: 1px;\r\n    text-transform: uppercase;\r\n    font-size: 13px;\r\n  }\r\n\r\n  .svh-post-body {\r\n    padding: 22px;\r\n    display: flex;\r\n    flex-direction: column;\r\n    gap: 12px;\r\n    flex: 1;\r\n  }\r\n\r\n  .svh-post-meta { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }\r\n  .svh-post-date { color: var(--svh-muted); font-size: 13px; font-weight: 800; }\r\n\r\n  .svh-post h3 { font-size: 22px; line-height: 1.16; margin: 0; }\r\n  .svh-post-excerpt { color: #c5d1df; line-height: 1.65; font-size: 15px; margin: 0; }\r\n\r\n  .svh-post-link {\r\n    margin-top: auto;\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 7px;\r\n    color: var(--svh-ice);\r\n    font-weight: 1000;\r\n    cursor: pointer;\r\n  }\r\n  .svh-post-link:hover { color: #fff; }\r\n\r\n  .svh-news-more {\r\n    display: flex;\r\n    justify-content: center;\r\n    margin-top: 28px;\r\n  }\r\n\r\n  .svh-nm-close {\r\n    position: absolute;\r\n    top: 14px;\r\n    right: 14px;\r\n    z-index: 3;\r\n    width: 44px;\r\n    height: 44px;\r\n    border-radius: 50%;\r\n    border: 1px solid var(--svh-line);\r\n    background: rgba(5,11,18,.72);\r\n    color: #fff;\r\n    font-size: 24px;\r\n    line-height: 1;\r\n    padding: 0;\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    cursor: pointer;\r\n    backdrop-filter: blur(6px);\r\n    transition: .2s ease;\r\n  }\r\n  .svh-nm-close:hover { background: rgba(5,11,18,.92); }\r\n\r\n  .svh-nm-media {\r\n    flex: none;\r\n    aspect-ratio: 16 \/ 8;\r\n    overflow: hidden;\r\n    background: #071321;\r\n    border-bottom: 1px solid var(--svh-line);\r\n  }\r\n  .svh-nm-media img { width: 100%; height: 100%; object-fit: cover; }\r\n\r\n  .svh-nm-body { flex: 1; min-height: 0; overflow-y: auto; padding: 24px; }\r\n  .svh-nm-date { color: var(--svh-muted); font-size: 13px; font-weight: 800; }\r\n  .svh-nm-title { font-size: clamp(24px, 4vw, 36px); line-height: 1.08; margin: 10px 0 16px; letter-spacing: -.5px; }\r\n  .svh-nm-content { color: #cdd7e3; line-height: 1.8; font-size: 16px; }\r\n  .svh-nm-content p { margin: 0 0 14px; }\r\n  .svh-nm-content a { color: var(--svh-ice); font-weight: 800; }\r\n  .svh-nm-content img { max-width: 100%; height: auto; border-radius: 14px; margin: 10px 0; }\r\n  .svh-nm-content h1, .svh-nm-content h2, .svh-nm-content h3, .svh-nm-content h4 { color: #fff; line-height: 1.2; }\r\n\r\n  @media (max-width: 980px) {\r\n    .svh-news-grid { grid-template-columns: 1fr; }\r\n  }\r\n\r\n  #svh-teams {\r\n    overflow: hidden;\r\n  }\r\n\r\n  #svh-teams::before {\r\n    content: \"\";\r\n    position: absolute;\r\n    top: -60px;\r\n    right: -60px;\r\n    width: min(46vw, 520px);\r\n    height: min(46vw, 520px);\r\n    background: url(\"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/07\/SV-Hage-Darts-Logo.png\") no-repeat center \/ contain;\r\n    filter: brightness(0) invert(1);\r\n    opacity: .06;\r\n    pointer-events: none;\r\n    z-index: 0;\r\n  }\r\n\r\n  .svh-team-nav {\r\n    display: grid;\r\n    grid-template-columns: repeat(6, 1fr);\r\n    gap: 14px;\r\n    margin-bottom: 22px;\r\n  }\r\n\r\n  .svh-team-btn {\r\n    cursor: pointer;\r\n    border: 1px solid var(--svh-line);\r\n    background: rgba(255,255,255,.065);\r\n    color: #fff;\r\n    border-radius: 22px;\r\n    padding: 17px;\r\n    text-align: left;\r\n    font-family: inherit;\r\n  }\r\n\r\n  .svh-team-btn.is-active {\r\n    border-color: rgba(146,234,255,.55);\r\n    background: rgba(146,234,255,.12);\r\n  }\r\n\r\n  .svh-team-btn i {\r\n    display: block;\r\n    width: 70px;\r\n    height: 5px;\r\n    border-radius: 999px;\r\n    background: var(--team-color);\r\n    margin-bottom: 12px;\r\n  }\r\n\r\n  .svh-team-btn b {\r\n    display: block;\r\n    font-size: 20px;\r\n  }\r\n\r\n  .svh-team-btn span {\r\n    color: var(--svh-muted);\r\n    font-size: 13px;\r\n  }\r\n\r\n  .svh-stage {\r\n    --team-active: #1d9bd7;\r\n    border: 1px solid var(--svh-line);\r\n    border-radius: 34px;\r\n    background: linear-gradient(145deg, rgba(255,255,255,.09), rgba(255,255,255,.045));\r\n    box-shadow: var(--svh-shadow);\r\n    overflow: hidden;\r\n  }\r\n\r\n  .svh-team-hero {\r\n    display: grid;\r\n    grid-template-columns: 1fr 330px;\r\n    gap: 26px;\r\n    padding: 34px;\r\n    align-items: center;\r\n  }\r\n\r\n  .svh-team-hero h3 {\r\n    font-size: 54px;\r\n    line-height: .95;\r\n    margin: 14px 0;\r\n    letter-spacing: -2px;\r\n  }\r\n\r\n  .svh-team-hero p {\r\n    color: #c7d2df;\r\n    line-height: 1.7;\r\n  }\r\n\r\n  .svh-team-stats {\r\n    display: grid;\r\n    grid-template-columns: repeat(3, 1fr);\r\n    gap: 12px;\r\n    margin-top: 22px;\r\n  }\r\n\r\n  .svh-team-stat {\r\n    border: 1px solid var(--svh-line);\r\n    background: rgba(0,0,0,.20);\r\n    border-radius: 18px;\r\n    padding: 15px;\r\n  }\r\n\r\n  .svh-team-stat b {\r\n    font-size: 24px;\r\n    display: block;\r\n  }\r\n\r\n  .svh-team-stat span {\r\n    font-size: 12px;\r\n    color: var(--svh-muted);\r\n    text-transform: uppercase;\r\n    font-weight: 900;\r\n    letter-spacing: 1px;\r\n  }\r\n\r\n  .svh-team-photo {\r\n    height: 300px;\r\n    border-radius: 28px;\r\n    background: linear-gradient(145deg, rgba(255,255,255,.12), rgba(255,255,255,.04));\r\n    border: 1px solid var(--svh-line);\r\n    display: grid;\r\n    place-items: center;\r\n    position: relative;\r\n    overflow: hidden;\r\n  }\r\n\r\n  .svh-team-photo img {\r\n    width: 100%;\r\n    height: 100%;\r\n    object-fit: cover;\r\n  }\r\n\r\n  .svh-players {\r\n    display: grid;\r\n    grid-template-columns: repeat(4, 1fr);\r\n    gap: 16px;\r\n    padding: 0 34px 34px;\r\n  }\r\n\r\n  .svh-player {\r\n    position: relative;\r\n    display: block;\r\n    aspect-ratio: 2 \/ 3;\r\n    border: 1px solid var(--svh-line);\r\n    border-radius: 18px;\r\n    overflow: hidden;\r\n    background: #071321;\r\n    cursor: pointer;\r\n    transition: .25s ease;\r\n    color: inherit;\r\n    text-decoration: none;\r\n  }\r\n\r\n  .svh-player:hover {\r\n    transform: translateY(-6px);\r\n    box-shadow: 0 26px 62px rgba(0,0,0,.5);\r\n    border-color: rgba(146,234,255,.4);\r\n  }\r\n\r\n  .svh-player img {\r\n    width: 100%;\r\n    height: 100%;\r\n    object-fit: cover;\r\n    display: block;\r\n  }\r\n\r\n  .svh-player-fallback {\r\n    width: 100%;\r\n    height: 100%;\r\n    display: flex;\r\n    flex-direction: column;\r\n    align-items: center;\r\n    justify-content: center;\r\n    gap: 14px;\r\n    padding: 20px;\r\n    text-align: center;\r\n    background: linear-gradient(160deg, var(--team-active), #071321 78%);\r\n  }\r\n\r\n  .svh-pf-ini {\r\n    width: 78px;\r\n    height: 78px;\r\n    border-radius: 22px;\r\n    background: rgba(255,255,255,.16);\r\n    display: grid;\r\n    place-items: center;\r\n    font-size: 26px;\r\n    font-weight: 1000;\r\n  }\r\n\r\n  .svh-pf-name {\r\n    font-weight: 1000;\r\n    font-size: 18px;\r\n    line-height: 1.2;\r\n  }\r\n\r\n  .svh-pf-hint {\r\n    font-size: 11px;\r\n    color: rgba(255,255,255,.72);\r\n    text-transform: uppercase;\r\n    letter-spacing: 1px;\r\n    font-weight: 900;\r\n  }\r\n\r\n  .svh-player-hint {\r\n    position: absolute;\r\n    left: 0;\r\n    right: 0;\r\n    bottom: 0;\r\n    padding: 36px 12px 12px;\r\n    background: linear-gradient(180deg, transparent, rgba(3,7,13,.9));\r\n    color: #fff;\r\n    font-size: 12px;\r\n    font-weight: 1000;\r\n    text-transform: uppercase;\r\n    letter-spacing: .5px;\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    gap: 6px;\r\n    opacity: 0;\r\n    transition: .25s ease;\r\n    pointer-events: none;\r\n  }\r\n\r\n  .svh-player:hover .svh-player-hint { opacity: 1; }\r\n\r\n  .svh-split {\r\n    display: grid;\r\n    grid-template-columns: 1fr 1fr;\r\n    gap: 20px;\r\n  }\r\n\r\n  .svh-feature {\r\n    padding: 30px;\r\n  }\r\n\r\n  .svh-feature h3 {\r\n    font-size: 34px;\r\n    line-height: 1;\r\n    margin: 8px 0 12px;\r\n  }\r\n\r\n  .svh-records {\r\n    display: grid;\r\n    grid-template-columns: repeat(4, 1fr);\r\n    gap: 14px;\r\n  }\r\n\r\n  .svh-record {\r\n    padding: 22px;\r\n    text-align: center;\r\n  }\r\n\r\n  .svh-record b {\r\n    font-size: 32px;\r\n    display: block;\r\n  }\r\n\r\n  .svh-record span {\r\n    color: var(--svh-muted);\r\n    font-size: 12px;\r\n    text-transform: uppercase;\r\n    letter-spacing: 1px;\r\n    font-weight: 950;\r\n  }\r\n\r\n  .svh-record small {\r\n    display: block;\r\n    margin-top: 6px;\r\n    color: var(--svh-ice);\r\n    font-size: 12px;\r\n    font-weight: 900;\r\n  }\r\n\r\n  .svh-club {\r\n    display: grid;\r\n    grid-template-columns: 1fr .9fr;\r\n    gap: 20px;\r\n    align-items: stretch;\r\n  }\r\n\r\n  .svh-club-text {\r\n    padding: 34px;\r\n  }\r\n\r\n  .svh-club-text h3 {\r\n    font-size: 44px;\r\n    line-height: 1;\r\n    margin: 8px 0 14px;\r\n  }\r\n\r\n  .svh-club-image {\r\n    min-height: 360px;\r\n    background-image: url(\"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/07\/SVHageRoom.png\");\r\n    background-size: cover;\r\n    background-position: center;\r\n    border-radius: var(--svh-radius);\r\n    position: relative;\r\n    overflow: hidden;\r\n  }\r\n\r\n  .svh-club-image::after {\r\n    content: \"\";\r\n    position: absolute;\r\n    inset: 0;\r\n    background: linear-gradient(90deg, rgba(5,11,18,.18), rgba(5,11,18,.72));\r\n  }\r\n\r\n  .svh-clublinks {\r\n    display: grid;\r\n    grid-template-columns: 1fr 1fr;\r\n    gap: 20px;\r\n    margin-top: 20px;\r\n  }\r\n\r\n  .svh-clublink {\r\n    padding: 32px;\r\n    display: flex;\r\n    flex-direction: column;\r\n    align-items: flex-start;\r\n  }\r\n\r\n  .svh-clublink-ico {\r\n    width: 56px;\r\n    height: 56px;\r\n    border-radius: 18px;\r\n    display: grid;\r\n    place-items: center;\r\n    background: rgba(29,155,215,.14);\r\n    border: 1px solid rgba(29,155,215,.4);\r\n    margin-bottom: 16px;\r\n  }\r\n\r\n  .svh-clublink-ico svg { width: 27px; height: 27px; fill: var(--svh-ice); }\r\n\r\n  .svh-clublink h4 {\r\n    font-size: 25px;\r\n    line-height: 1.08;\r\n    margin: 4px 0 12px;\r\n  }\r\n\r\n  .svh-clublink p { flex: 1; margin: 0 0 20px; }\r\n\r\n  .svh-sponsors {\r\n    display: grid;\r\n    grid-template-columns: repeat(3, 1fr);\r\n    gap: 12px;\r\n  }\r\n\r\n  .svh-sponsor {\r\n    height: 92px;\r\n    border: 1px solid var(--svh-line);\r\n    background: rgba(255,255,255,.94);\r\n    border-radius: 20px;\r\n    display: grid;\r\n    place-items: center;\r\n    padding: 12px 16px;\r\n    overflow: hidden;\r\n  }\r\n\r\n  .svh-sponsor img {\r\n    max-width: 100%;\r\n    max-height: 62px;\r\n    object-fit: contain;\r\n  }\r\n\r\n  @media (max-width: 980px) {\r\n    .svh-hero-grid,\r\n    .svh-team-hero,\r\n    .svh-split,\r\n    .svh-club,\r\n    .svh-clublinks {\r\n      grid-template-columns: 1fr;\r\n    }\r\n\r\n    .svh-facts,\r\n    .svh-team-nav,\r\n    .svh-players,\r\n    .svh-records {\r\n      grid-template-columns: repeat(2, 1fr);\r\n    }\r\n\r\n    .svh-grid-3 {\r\n      grid-template-columns: 1fr;\r\n    }\r\n\r\n    .svh-nav-links {\r\n      display: none;\r\n    }\r\n\r\n    .svh-sponsors {\r\n      grid-template-columns: repeat(2, 1fr);\r\n    }\r\n  }\r\n\r\n  @media (max-width: 560px) {\r\n    .svh-hero {\r\n      min-height: auto;\r\n    }\r\n\r\n    .svh-hero-grid {\r\n      padding: 54px 0;\r\n      grid-template-columns: 1fr;\r\n    }\r\n\r\n    .svh-hero h1 {\r\n      letter-spacing: -2px;\r\n    }\r\n\r\n    .svh-facts,\r\n    .svh-team-nav,\r\n    .svh-team-stats,\r\n    .svh-records,\r\n    .svh-sponsors {\r\n      grid-template-columns: 1fr;\r\n    }\r\n\r\n    .svh-players {\r\n      grid-template-columns: repeat(2, 1fr);\r\n    }\r\n\r\n    .svh-head {\r\n      display: block;\r\n    }\r\n\r\n    .svh-actions .svh-btn {\r\n      width: 100%;\r\n    }\r\n\r\n    .svh-team-hero,\r\n    .svh-players {\r\n      padding: 24px;\r\n    }\r\n\r\n    .svh-brand-title small {\r\n      display: none;\r\n    }\r\n\r\n    .svh-score {\r\n      grid-template-columns: 1fr;\r\n      text-align: center;\r\n    }\r\n\r\n    .svh-next {\r\n      grid-template-columns: 1fr;\r\n    }\r\n  }\r\n\r\n  \/* ---- Mobile: kompakte, sticky Team-Auswahl (weniger Scrollen) ---- *\/\r\n  @media (max-width: 780px) {\r\n    \/* overflow:hidden der Vorfahren wuerde position:sticky deaktivieren *\/\r\n    #svh-home { overflow: visible; }\r\n    #svh-teams { overflow: visible; }\r\n    #svh-teams::before { display: none; }\r\n\r\n    .svh-team-nav {\r\n      display: flex;\r\n      grid-template-columns: none;\r\n      flex-wrap: nowrap;\r\n      gap: 8px;\r\n      overflow-x: auto;\r\n      overflow-y: hidden;\r\n      margin: 0 -18px 16px;\r\n      padding: 10px 18px;\r\n      position: sticky;\r\n      top: 78px;\r\n      z-index: 30;\r\n      background: rgba(5,11,18,.92);\r\n      backdrop-filter: blur(12px);\r\n      border-bottom: 1px solid var(--svh-line);\r\n      scroll-snap-type: x proximity;\r\n      scrollbar-width: none;\r\n      -webkit-overflow-scrolling: touch;\r\n    }\r\n    .svh-team-nav::-webkit-scrollbar { display: none; }\r\n\r\n    .svh-team-btn {\r\n      flex: 0 0 auto;\r\n      scroll-snap-align: center;\r\n      display: inline-flex;\r\n      align-items: center;\r\n      gap: 8px;\r\n      padding: 9px 14px;\r\n      border-radius: 999px;\r\n    }\r\n    .svh-team-btn i {\r\n      width: 11px;\r\n      height: 11px;\r\n      border-radius: 50%;\r\n      margin: 0;\r\n      flex: none;\r\n    }\r\n    .svh-team-btn b { font-size: 14px; line-height: 1; }\r\n    .svh-team-btn span { display: none; }\r\n  }\r\n\r\n  \/* ---- Nordsee Dart Masters Band ---- *\/\r\n  .svh-ndm {\r\n    position: relative;\r\n    display: grid;\r\n    grid-template-columns: 190px 1fr;\r\n    gap: 32px;\r\n    align-items: center;\r\n    border: 1px solid var(--svh-line);\r\n    border-radius: var(--svh-radius);\r\n    background:\r\n      radial-gradient(circle at 12% 18%, rgba(29,155,215,.24), transparent 55%),\r\n      linear-gradient(135deg, rgba(11,22,35,.94), rgba(5,11,18,.94));\r\n    box-shadow: var(--svh-shadow);\r\n    padding: 34px 40px;\r\n    overflow: hidden;\r\n  }\r\n\r\n  .svh-ndm::after {\r\n    content: \"\";\r\n    position: absolute;\r\n    inset: 0;\r\n    background: url(\"https:\/\/nordseedartmasters.de\/wp-content\/uploads\/2026\/03\/Waves.png\") center \/ cover no-repeat;\r\n    opacity: .07;\r\n    pointer-events: none;\r\n  }\r\n\r\n  .svh-ndm > * { position: relative; z-index: 1; }\r\n  .svh-ndm-logo { display: grid; place-items: center; }\r\n  .svh-ndm-logo img { max-width: 168px; filter: drop-shadow(0 14px 34px rgba(0,0,0,.55)); }\r\n\r\n  .svh-ndm-body h3 {\r\n    font-size: clamp(26px, 3vw, 38px);\r\n    line-height: 1.04;\r\n    letter-spacing: -1px;\r\n    margin: 8px 0 12px;\r\n  }\r\n\r\n  .svh-ndm-body p { color: #c7d2df; line-height: 1.7; margin: 0 0 20px; max-width: 660px; }\r\n  .svh-ndm-actions { display: flex; gap: 12px; flex-wrap: wrap; }\r\n\r\n  \/* ---- Trainings-\/Kontaktkarte ---- *\/\r\n  .svh-train { display: grid; gap: 10px; margin: 20px 0 22px; }\r\n\r\n  .svh-train-item {\r\n    display: grid;\r\n    grid-template-columns: 92px 1fr;\r\n    gap: 12px;\r\n    align-items: baseline;\r\n    border-left: 2px solid rgba(146,234,255,.4);\r\n    padding: 4px 0 4px 14px;\r\n  }\r\n\r\n  .svh-train-item span {\r\n    color: var(--svh-ice);\r\n    font-size: 11px;\r\n    font-weight: 1000;\r\n    letter-spacing: 1px;\r\n    text-transform: uppercase;\r\n  }\r\n\r\n  .svh-train-item b { font-weight: 850; line-height: 1.4; }\r\n  .svh-train-actions { display: flex; gap: 12px; flex-wrap: wrap; }\r\n\r\n  \/* ---- Kapitaens-Badge ---- *\/\r\n  .svh-cap-badge {\r\n    position: absolute;\r\n    top: 10px;\r\n    left: 10px;\r\n    z-index: 2;\r\n    background: rgba(5,11,18,.74);\r\n    border: 1px solid rgba(146,234,255,.5);\r\n    color: var(--svh-ice);\r\n    font-size: 10px;\r\n    font-weight: 1000;\r\n    letter-spacing: .6px;\r\n    text-transform: uppercase;\r\n    padding: 4px 10px;\r\n    border-radius: 999px;\r\n    backdrop-filter: blur(4px);\r\n    pointer-events: none;\r\n  }\r\n\r\n  \/* ---- Storm-Strip (rotierender Spruch) ---- *\/\r\n  .svh-storm-strip {\r\n    position: relative;\r\n    z-index: 2;\r\n    border-top: 1px solid var(--svh-line);\r\n    border-bottom: 1px solid var(--svh-line);\r\n    background: rgba(5,11,18,.55);\r\n    text-align: center;\r\n    padding: 16px 18px;\r\n    overflow: hidden;\r\n  }\r\n\r\n  .svh-storm-spruch {\r\n    display: inline-block;\r\n    color: var(--svh-ice);\r\n    font-weight: 1000;\r\n    letter-spacing: 2px;\r\n    text-transform: uppercase;\r\n    font-size: clamp(13px, 1.6vw, 16px);\r\n    transition: opacity .5s ease, transform .5s ease;\r\n  }\r\n\r\n  .svh-storm-spruch.is-out { opacity: 0; transform: translateY(-6px); }\r\n\r\n  \/* ---- Scroll-Reveal ---- *\/\r\n  .svh-reveal { opacity: 0; transform: translateY(26px); transition: opacity .7s ease, transform .7s ease; }\r\n  .svh-reveal.is-in { opacity: 1; transform: none; }\r\n\r\n  @media (prefers-reduced-motion: reduce) {\r\n    .svh-reveal { opacity: 1 !important; transform: none !important; transition: none; }\r\n    .svh-storm-spruch { transition: none; }\r\n  }\r\n\r\n  \/* ---- Footer ---- *\/\r\n  .svh-footer {\r\n    position: relative;\r\n    z-index: 2;\r\n    border-top: 1px solid var(--svh-line);\r\n    background: rgba(3,7,13,.6);\r\n    padding: 46px 0 30px;\r\n  }\r\n\r\n  .svh-footer-grid {\r\n    display: grid;\r\n    grid-template-columns: 1.3fr 1fr 1.1fr auto;\r\n    gap: 26px 30px;\r\n    align-items: start;\r\n  }\r\n\r\n  .svh-footer-brand { display: flex; align-items: center; gap: 14px; }\r\n  .svh-footer-brand b { display: block; font-size: 18px; }\r\n  .svh-footer-brand span { color: var(--svh-muted); font-size: 13px; }\r\n\r\n  .svh-footer-col { display: flex; flex-direction: column; gap: 9px; }\r\n  .svh-footer-col h4 {\r\n    margin: 0 0 4px;\r\n    font-size: 12px;\r\n    text-transform: uppercase;\r\n    letter-spacing: 1.4px;\r\n    color: var(--svh-muted);\r\n    font-weight: 1000;\r\n  }\r\n  .svh-footer-col a { color: #c9d6e4; font-weight: 850; font-size: 14px; }\r\n  .svh-footer-col a:hover { color: #fff; }\r\n\r\n  .svh-footer-social { display: flex; flex-direction: column; gap: 10px; }\r\n\r\n  .svh-social-btn {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 8px;\r\n    border: 1px solid var(--svh-line);\r\n    background: rgba(255,255,255,.06);\r\n    border-radius: 999px;\r\n    padding: 9px 15px;\r\n    font-weight: 950;\r\n    font-size: 13px;\r\n    transition: .2s ease;\r\n  }\r\n\r\n  .svh-social-btn:hover { background: rgba(255,255,255,.12); transform: translateY(-2px); }\r\n  .svh-social-btn svg { width: 17px; height: 17px; fill: currentColor; }\r\n\r\n  .svh-footer-bottom {\r\n    display: flex;\r\n    justify-content: space-between;\r\n    align-items: center;\r\n    gap: 16px;\r\n    flex-wrap: wrap;\r\n    margin-top: 30px;\r\n    padding-top: 20px;\r\n    border-top: 1px solid var(--svh-line);\r\n    color: var(--svh-muted);\r\n    font-size: 13px;\r\n    font-weight: 800;\r\n  }\r\n\r\n  .svh-photo-credit {\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    gap: 9px;\r\n    text-align: center;\r\n    flex-wrap: wrap;\r\n    margin-top: 30px;\r\n    padding-top: 22px;\r\n    border-top: 1px solid var(--svh-line);\r\n    color: var(--svh-muted);\r\n    font-size: 13px;\r\n    font-weight: 800;\r\n  }\r\n\r\n  .svh-photo-credit .svh-cam { width: 16px; height: 16px; fill: var(--svh-ice); flex: none; }\r\n  .svh-photo-credit b { color: var(--svh-text); font-weight: 950; }\r\n  .svh-photo-credit a { color: var(--svh-ice); font-weight: 950; }\r\n  .svh-photo-credit a:hover { color: #fff; }\r\n\r\n  .svh-top-row {\r\n    display: flex;\r\n    justify-content: flex-end;\r\n    margin-top: 40px;\r\n  }\r\n\r\n  .svh-top-btn {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 7px;\r\n    border: 1px solid var(--svh-line);\r\n    background: rgba(255,255,255,.06);\r\n    color: var(--svh-muted);\r\n    border-radius: 999px;\r\n    padding: 9px 16px;\r\n    font-weight: 950;\r\n    font-size: 12px;\r\n    letter-spacing: 1px;\r\n    text-transform: uppercase;\r\n    cursor: pointer;\r\n    transition: .2s ease;\r\n  }\r\n\r\n  .svh-top-btn:hover { color: #fff; background: rgba(255,255,255,.12); transform: translateY(-2px); }\r\n  .svh-top-btn svg { width: 13px; height: 13px; fill: currentColor; }\r\n\r\n  @media (max-width: 780px) {\r\n    .svh-ndm { grid-template-columns: 1fr; text-align: center; gap: 22px; padding: 30px 24px; }\r\n    .svh-ndm-logo img { max-width: 130px; }\r\n    .svh-ndm-actions { justify-content: center; }\r\n    .svh-footer-grid { grid-template-columns: 1fr; }\r\n  }\r\n\r\n  \/* ---- Spielerprofil-Modal ---- *\/\r\n  .svh-modal-card.svh-pm-card { width: min(760px, 100%); }\r\n  .svh-pm-body { flex: 1; min-height: 0; overflow-y: auto; padding: 30px; }\r\n\r\n  .svh-pm-hero { display: grid; grid-template-columns: 200px 1fr; gap: 24px; align-items: center; --tc: #1d9bd7; }\r\n  .svh-pm-cardimg { aspect-ratio: 2 \/ 3; border-radius: 16px; overflow: hidden; border: 1px solid var(--svh-line); background: #071321; }\r\n  .svh-pm-cardimg img { width: 100%; height: 100%; object-fit: cover; }\r\n  .svh-pm-fb { width: 100%; height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; text-align: center; padding: 12px; background: linear-gradient(160deg, var(--tc), #071321 78%); }\r\n  .svh-pm-fb .ini { width: 56px; height: 56px; border-radius: 16px; background: rgba(255,255,255,.16); display: grid; place-items: center; font-size: 20px; font-weight: 1000; }\r\n  .svh-pm-fb .nm { font-weight: 1000; font-size: 13px; }\r\n\r\n  .svh-pm-meta { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 10px; }\r\n  .svh-pm-team { display: inline-flex; align-items: center; gap: 8px; border: 1px solid var(--svh-line); background: rgba(255,255,255,.05); padding: 5px 12px; border-radius: 999px; font-weight: 900; font-size: 12px; }\r\n  .svh-pm-team::before { content: \"\"; width: 11px; height: 11px; border-radius: 50%; background: var(--tc); }\r\n  .svh-pm-role { display: inline-flex; align-items: center; border: 1px solid rgba(146,234,255,.5); background: rgba(5,11,18,.5); color: var(--svh-ice); padding: 5px 11px; border-radius: 999px; font-weight: 1000; font-size: 10px; letter-spacing: .6px; text-transform: uppercase; }\r\n  .svh-pm-name { font-size: clamp(26px, 5vw, 40px); line-height: 1; letter-spacing: -1.5px; font-weight: 1000; margin: 0; }\r\n  .svh-pm-nick { color: var(--svh-ice); font-size: 15px; font-weight: 900; margin: 6px 0 0; }\r\n\r\n  .svh-pm-src { display: inline-block; margin-left: 8px; font-size: 9px; font-weight: 1000; letter-spacing: .6px; text-transform: uppercase; padding: 3px 8px; border-radius: 999px; vertical-align: middle; }\r\n  .svh-pm-src.dvwe { background: rgba(29,155,215,.16); color: #9fd8f4; border: 1px solid rgba(29,155,215,.5); }\r\n  .svh-pm-src.club { background: rgba(232,182,75,.14); color: #f0d08a; border: 1px solid rgba(232,182,75,.5); }\r\n\r\n  .svh-pm-section { margin-top: 24px; }\r\n  .svh-pm-section h4 { font-size: 12px; text-transform: uppercase; letter-spacing: 1.6px; color: var(--svh-ice); font-weight: 1000; margin: 0 0 6px; }\r\n  .svh-pm-sub { color: var(--svh-muted); font-size: 12px; font-weight: 800; margin-bottom: 14px; }\r\n\r\n  .svh-pm-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }\r\n  .svh-pm-stat { border: 1px solid var(--svh-line); background: rgba(0,0,0,.22); border-radius: 14px; padding: 12px 8px; text-align: center; }\r\n  .svh-pm-stat b { display: block; font-size: 26px; line-height: 1; font-weight: 1000; }\r\n  .svh-pm-stat.zero b { color: var(--svh-muted); }\r\n  .svh-pm-stat span { display: block; margin-top: 5px; color: var(--svh-muted); font-size: 10px; font-weight: 950; letter-spacing: .5px; text-transform: uppercase; }\r\n  .svh-pm-detail { margin-top: 12px; display: grid; gap: 6px; }\r\n  .svh-pm-line { display: flex; gap: 10px; font-size: 13px; align-items: baseline; }\r\n  .svh-pm-line .k { color: var(--svh-muted); font-weight: 900; text-transform: uppercase; letter-spacing: .5px; font-size: 11px; min-width: 118px; }\r\n  .svh-pm-line .v { font-weight: 850; }\r\n\r\n  .svh-pm-rec { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }\r\n  .svh-pm-rec-item { border: 1px solid var(--svh-line); background: rgba(0,0,0,.22); border-radius: 14px; padding: 12px 14px; text-align: center; }\r\n  .svh-pm-rec-item .lbl { display: block; color: var(--svh-muted); font-size: 10px; font-weight: 950; letter-spacing: .5px; text-transform: uppercase; margin-bottom: 5px; }\r\n  .svh-pm-rec-item b { display: block; font-size: 24px; font-weight: 1000; line-height: 1; }\r\n  .svh-pm-rec-item small { display: block; margin-top: 5px; color: var(--svh-muted); font-size: 11px; font-weight: 800; }\r\n  .svh-pm-rec-item.empty b { color: var(--svh-muted); }\r\n\r\n  .svh-pm-season + .svh-pm-season { margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--svh-line); }\r\n  .svh-pm-season-h { font-size: 12px; font-weight: 1000; color: var(--svh-text); margin-bottom: 9px; letter-spacing: .2px; }\r\n  .svh-pm-games-btn { margin-top: 10px; width: 100%; display: inline-flex; align-items: center; justify-content: center; gap: 7px; border: 1px solid var(--svh-line); background: rgba(255,255,255,.04); color: var(--svh-ice); border-radius: 12px; padding: 9px 12px; font-family: inherit; font-weight: 950; font-size: 12px; letter-spacing: .3px; cursor: pointer; transition: .2s ease; }\r\n  .svh-pm-games-btn:hover { background: rgba(146,234,255,.1); }\r\n  .svh-pm-games-btn .chev { transition: transform .2s ease; }\r\n  .svh-pm-games-btn.open .chev { transform: rotate(180deg); }\r\n  .svh-pm-games { margin-top: 10px; display: grid; gap: 14px; }\r\n  .svh-pm-games[hidden] { display: none; }\r\n  .svh-pm-rec-h { font-size: 11px; font-weight: 950; color: var(--svh-muted); text-transform: uppercase; letter-spacing: .5px; }\r\n  .svh-pm-pager { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 14px; }\r\n  .svh-pm-page-btn { border: 1px solid var(--svh-line); background: rgba(255,255,255,.04); color: var(--svh-ice); border-radius: 999px; padding: 7px 14px; font-family: inherit; font-weight: 950; font-size: 12px; cursor: pointer; transition: .2s ease; }\r\n  .svh-pm-page-btn:hover:not([disabled]) { background: rgba(146,234,255,.12); }\r\n  .svh-pm-page-btn[disabled] { opacity: .4; cursor: default; }\r\n  .svh-pm-page-info { color: var(--svh-muted); font-size: 12px; font-weight: 850; text-align: center; }\r\n  .svh-pm-games-grp .grp-h { font-size: 10px; text-transform: uppercase; letter-spacing: .5px; color: var(--svh-muted); font-weight: 950; margin-bottom: 6px; }\r\n  .svh-pm-game { display: grid; grid-template-columns: 42px 1fr auto; gap: 10px; align-items: center; padding: 8px 12px; border: 1px solid var(--svh-line); border-radius: 10px; background: rgba(255,255,255,.03); font-weight: 850; font-size: 13px; }\r\n  .svh-pm-game + .svh-pm-game { margin-top: 6px; }\r\n  .svh-pm-game .res { font-weight: 1000; font-size: 15px; }\r\n  .svh-pm-game.win .res { color: #7ff0b4; }\r\n  .svh-pm-game.loss .res { color: #ffabb6; }\r\n  .svh-pm-game .opp { color: var(--svh-text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\r\n  .svh-pm-game .avg { color: var(--svh-muted); font-size: 11px; font-weight: 900; white-space: nowrap; }\r\n\r\n  .svh-pm-fixrow { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }\r\n  .svh-pm-fix { border: 1px solid var(--svh-line); background: rgba(255,255,255,.04); border-radius: 14px; padding: 14px 16px; }\r\n  .svh-pm-fix .lbl { color: var(--svh-muted); font-size: 11px; font-weight: 1000; letter-spacing: 1px; text-transform: uppercase; margin-bottom: 8px; }\r\n  .svh-pm-fix .opp { font-weight: 1000; font-size: 15px; line-height: 1.25; }\r\n  .svh-pm-fix .sub { color: var(--svh-muted); font-size: 13px; font-weight: 800; margin-top: 6px; }\r\n  .svh-pm-fix .res { font-size: 24px; font-weight: 1000; margin-top: 4px; }\r\n  .svh-pm-badge { display: inline-block; font-size: 10px; font-weight: 1000; letter-spacing: .6px; text-transform: uppercase; padding: 3px 9px; border-radius: 999px; margin-top: 8px; }\r\n  .svh-pm-badge.home, .svh-pm-badge.win { background: rgba(57,185,120,.16); color: #7ff0b4; border: 1px solid rgba(57,185,120,.42); }\r\n  .svh-pm-badge.away, .svh-pm-badge.loss { background: rgba(217,74,95,.16); color: #ffabb6; border: 1px solid rgba(217,74,95,.42); }\r\n\r\n  .svh-pm-dl { display: grid; gap: 11px; }\r\n  .svh-pm-dl > div { display: grid; grid-template-columns: 120px 1fr; gap: 12px; align-items: baseline; }\r\n  .svh-pm-dl dt { color: var(--svh-muted); font-size: 11px; font-weight: 1000; letter-spacing: 1px; text-transform: uppercase; }\r\n  .svh-pm-dl dd { margin: 0; font-weight: 800; line-height: 1.4; }\r\n  .svh-pm-empty { color: var(--svh-muted); font-weight: 800; }\r\n\r\n  .svh-pm-honor { margin-top: 22px; border: 1px solid rgba(160,108,255,.42); background: linear-gradient(145deg, rgba(160,108,255,.16), rgba(255,255,255,.03)); border-radius: 18px; padding: 18px 20px; }\r\n  .svh-pm-honor h4 { display: flex; align-items: center; gap: 8px; font-size: 12px; text-transform: uppercase; letter-spacing: 1.6px; color: #c9b3ff; font-weight: 1000; margin: 0 0 8px; }\r\n  .svh-pm-honor-heart { color: #c39bff; font-size: 14px; }\r\n  .svh-pm-honor-text { color: #e2e9f4; line-height: 1.75; font-size: 15px; margin: 0; }\r\n\r\n  .svh-pm-alumni { margin-top: 22px; border: 1px solid rgba(232,182,75,.45); background: linear-gradient(145deg, rgba(232,182,75,.16), rgba(255,255,255,.03)); border-radius: 18px; padding: 18px 20px; }\r\n  .svh-pm-alumni h4 { display: flex; align-items: center; gap: 8px; font-size: 12px; text-transform: uppercase; letter-spacing: 1.6px; color: #f0d08a; font-weight: 1000; margin: 0 0 8px; }\r\n  .svh-pm-alumni-star { color: #f0c24a; font-size: 14px; }\r\n  .svh-pm-alumni-text { color: #eef1f6; line-height: 1.75; font-size: 15px; margin: 0; }\r\n  .svh-pm-alumni-meta { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 12px; }\r\n  .svh-pm-alumni-chip { display: inline-flex; align-items: center; gap: 6px; border: 1px solid rgba(232,182,75,.4); background: rgba(232,182,75,.08); color: #f0d08a; padding: 5px 11px; border-radius: 999px; font-size: 12px; font-weight: 900; }\r\n\r\n  .svh-pm-legend-note { display: flex; gap: 12px; align-items: flex-start; border: 1px solid rgba(232,182,75,.32); background: linear-gradient(145deg, rgba(232,182,75,.10), rgba(255,255,255,.02)); border-radius: 16px; padding: 16px 18px; }\r\n  .svh-pm-legend-note .st { color: #f0c24a; font-size: 20px; line-height: 1; flex: none; margin-top: 1px; text-shadow: 0 0 14px rgba(240,194,74,.5); }\r\n  .svh-pm-legend-note p { margin: 0; color: #eef1f6; line-height: 1.75; font-size: 15px; }\r\n\r\n  @media (max-width: 560px) {\r\n    .svh-pm-body { padding: 18px; }\r\n    .svh-pm-hero { grid-template-columns: 128px 1fr; gap: 16px; }\r\n    .svh-pm-stats { grid-template-columns: repeat(2, 1fr); }\r\n    .svh-pm-fixrow { grid-template-columns: 1fr; }\r\n  }\r\n\r\n  \/* ---- Ligatabellen ---- *\/\r\n  .svh-tables-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }\r\n  .svh-table-card { padding: 20px 22px; }\r\n  .svh-table-head { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; flex-wrap: wrap; }\r\n  .svh-table-head .svh-league-badge { background: var(--lg, #1d9bd7); }\r\n  .svh-table-title { font-weight: 1000; font-size: 18px; }\r\n  .svh-table-ext { margin-left: auto; font-size: 11px; font-weight: 900; color: var(--svh-muted); border: 1px solid var(--svh-line); border-radius: 999px; padding: 4px 10px; }\r\n  .svh-table-ext:hover { color: #fff; }\r\n  .svh-table-wrap { overflow-x: auto; }\r\n\r\n  .svh-tbl { width: 100%; border-collapse: collapse; font-size: 13px; min-width: 430px; }\r\n  .svh-tbl th { text-align: right; color: var(--svh-muted); font-size: 10px; font-weight: 1000; letter-spacing: .5px; text-transform: uppercase; padding: 0 6px 10px; border-bottom: 1px solid var(--svh-line); }\r\n  .svh-tbl th.l { text-align: left; }\r\n  .svh-tbl td { padding: 9px 6px; text-align: right; border-bottom: 1px solid rgba(255,255,255,.06); font-weight: 850; white-space: nowrap; }\r\n  .svh-tbl td.l { text-align: left; }\r\n  .svh-tbl td.pl { color: var(--svh-muted); font-weight: 1000; }\r\n  .svh-tbl td.team { max-width: 170px; overflow: hidden; text-overflow: ellipsis; }\r\n  .svh-tbl td.pts { color: var(--svh-ice); font-weight: 1000; }\r\n  .svh-tbl tr.us { background: rgba(146,234,255,.08); }\r\n  .svh-tbl tr.us td.team { color: var(--svh-ice); font-weight: 1000; }\r\n  .svh-table-empty { color: var(--svh-muted); font-weight: 800; padding: 16px 4px; }\r\n\r\n  @media (max-width: 980px) { .svh-tables-grid { grid-template-columns: 1fr; } }\r\n\r\n  \/* ---- Pokalweg-Band (kompakte eigene Sektion) ---- *\/\r\n  .svh-pokal-band { display: grid; grid-template-columns: auto 1fr auto; gap: 24px; align-items: center; border: 1px solid var(--svh-line); border-radius: var(--svh-radius); background: linear-gradient(135deg, rgba(217,164,65,.12), rgba(255,255,255,.03)); box-shadow: var(--svh-shadow); padding: 22px 30px; }\r\n  .svh-pokal-ico { width: 60px; height: 60px; border-radius: 18px; display: grid; place-items: center; background: rgba(217,164,65,.14); border: 1px solid rgba(217,164,65,.4); }\r\n  .svh-pokal-ico svg { width: 32px; height: 32px; fill: var(--svh-gold); }\r\n  .svh-pokal-body h3 { font-size: clamp(21px, 2.4vw, 28px); line-height: 1.05; margin: 6px 0 7px; letter-spacing: -.5px; }\r\n  .svh-pokal-body p { color: #c7d2df; line-height: 1.6; margin: 0; max-width: 620px; }\r\n  @media (max-width: 780px) {\r\n    .svh-pokal-band { grid-template-columns: 1fr; text-align: center; gap: 16px; padding: 24px; }\r\n    .svh-pokal-ico { margin: 0 auto; }\r\n    .svh-pokal-body p { margin: 0 auto; }\r\n  }\r\n<\/style>\r\n\r\n<div class=\"svh-home\" id=\"svh-home\">\r\n  <div class=\"svh-bg-glow\"><\/div>\r\n\r\n  <nav class=\"svh-nav\">\r\n    <div class=\"svh-wrap svh-nav-inner\">\r\n      <a href=\"#svh-top\" class=\"svh-brand\">\r\n        <span class=\"svh-brand-logo\">\r\n          <img decoding=\"async\" src=\"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/07\/SV-Hage-Darts-Logo.png\" alt=\"SV Hage Darts Logo\">\r\n        <\/span>\r\n        <span class=\"svh-brand-title\">\r\n          SV Hage Darts\r\n          <small>Steeldart in Hage<\/small>\r\n        <\/span>\r\n      <\/a>\r\n\r\n      <div class=\"svh-nav-links\">\r\n        <a href=\"#svh-news\">Aktuelles<\/a>\r\n        <a href=\"#svh-teams\">Mannschaften<\/a>\r\n        <a href=\"#svh-tables\">Tabelle<\/a>\r\n        <a href=\"#svh-records\">Rekorde<\/a>\r\n        <a href=\"#svh-pokal\">Pokal<\/a>\r\n        <a href=\"#svh-clubhome\">Vereinsheim<\/a>\r\n      <\/div>\r\n\r\n      <a href=\"#svh-contact\" class=\"svh-btn svh-btn-primary\">Probetraining<\/a>\r\n    <\/div>\r\n  <\/nav>\r\n\r\n  <header class=\"svh-hero\" id=\"svh-top\">\r\n    <div class=\"svh-wrap svh-hero-grid\">\r\n      <div>\r\n        <span class=\"svh-pill\">Ein Verein f\u00fcr alle \u00b7 Von jung bis alt \u00b7 F\u00fcr jede und jeden<\/span>\r\n\r\n        <h1>SV Hage<br><span class=\"svh-accent\">Darts<\/span><br>am Board.<\/h1>\r\n\r\n        <p class=\"svh-lead\">\r\n          Aus den ersten Pfeilen am Board ist eine der lebendigsten Sparten des Vereins geworden:\r\n          vier Mannschaften, \u00fcber 30 aktive Spieler und die Vizemeisterschaft schon in unserer ersten\r\n          DVWE-Saison. Liga, Pokal und unser eigenes Nordsee Dart Masters\u2122 \u2013 hier treffen Ehrgeiz\r\n          und jede Menge Spa\u00df am Oche aufeinander. Und das Beste: Bei uns ist jede und jeder willkommen \u2013\r\n          vom Jugendlichen bis zum Senior, Frauen wie M\u00e4nner. Unser J\u00fcngster ist gerade einmal 16\r\n          und wirft schon in der A-Mannschaft.\r\n        <\/p>\r\n\r\n        <div class=\"svh-actions\">\r\n          <a href=\"#svh-teams\" class=\"svh-btn svh-btn-primary\">Mannschaften entdecken<\/a>\r\n          <a href=\"#svh-contact\" class=\"svh-btn\">Probetraining vereinbaren<\/a>\r\n        <\/div>\r\n\r\n        <div class=\"svh-facts\">\r\n          <div class=\"svh-fact\"><b>4<\/b><span>Mannschaften<\/span><\/div>\r\n          <div class=\"svh-fact\"><b>30+<\/b><span>Aktive Spieler<\/span><\/div>\r\n          <div class=\"svh-fact\"><b>A<\/b><span>Kreisliga 1<\/span><\/div>\r\n          <div class=\"svh-fact\"><b>B-D<\/b><span>Kreisklasse 6<\/span><\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <aside class=\"svh-live-panel\">\r\n        <div class=\"svh-today\" id=\"svh-today\" hidden><\/div>\r\n        <div class=\"svh-live-head\">\r\n          <div class=\"svh-live-logo\">\r\n            <img decoding=\"async\" src=\"https:\/\/dvwe-dart.de\/wp-content\/uploads\/2020\/09\/DVWE_Logo_450x104.png\" alt=\"DVWE Logo\">\r\n          <\/div>\r\n          <div>\r\n            <span class=\"svh-tag\">Spielplan<\/span>\r\n            <h3>N\u00e4chster Spieltag<\/h3>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"svh-fixtures\" id=\"svh-fixtures\">\r\n          <div class=\"svh-fixtures-loading\">Spieltage werden geladen \u2026<\/div>\r\n        <\/div>\r\n\r\n        <button class=\"svh-livecenter\" id=\"svh-livecenter\" type=\"button\">\r\n          <span class=\"svh-live-dot\"><\/span>Live-Center \u00b7 alle 4 Teams\r\n        <\/button>\r\n      <\/aside>\r\n    <\/div>\r\n  <\/header>\r\n\r\n  <div class=\"svh-storm-strip\" aria-hidden=\"true\">\r\n    <span class=\"svh-storm-spruch\" id=\"svh-spruch\">Ride the Storm.<\/span>\r\n  <\/div>\r\n\r\n  <section class=\"svh-section\" id=\"svh-news\">\r\n    <div class=\"svh-wrap\">\r\n      <div class=\"svh-head\">\r\n        <div>\r\n          <div class=\"svh-kicker\">Aktuelles<\/div>\r\n          <h2>Das passiert bei SV Hage Darts.<\/h2>\r\n        <\/div>\r\n        <p>\r\n          Spieltage, Ergebnisse, Mannschaftsvorstellungen, Pokalabende und alles,\r\n          was unsere Dartsparte bewegt. Immer aktuell. Immer nah dran.\r\n        <\/p>\r\n      <\/div>\r\n\r\n      <div class=\"svh-news-grid\" id=\"svh-news-grid\">\r\n        <div class=\"svh-news-state\">Beitr\u00e4ge werden geladen \u2026<\/div>\r\n      <\/div>\r\n\r\n      <div class=\"svh-news-more\">\r\n        <a href=\"https:\/\/dart.scubyhome.de\/wordpress\/index.php\/news\/\" class=\"svh-btn svh-btn-primary\">Alle Beitr\u00e4ge ansehen<\/a>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <section class=\"svh-section\" id=\"svh-teams\">\r\n    <div class=\"svh-wrap\">\r\n      <div class=\"svh-head\">\r\n        <div>\r\n          <div class=\"svh-kicker\">Mannschaften<\/div>\r\n          <h2>Vier Teams. Ein Verein.<\/h2>\r\n        <\/div>\r\n        <p>\r\n          Von der Kreisliga bis zur Kreisklasse. Jede Mannschaft schreibt ihre eigene Geschichte,\r\n          tr\u00e4gt aber dieselben Farben und dieselbe Leidenschaft f\u00fcr den Dartsport.\r\n        <\/p>\r\n      <\/div>\r\n\r\n      <div class=\"svh-team-nav\" role=\"tablist\">\r\n        <button class=\"svh-team-btn is-active\" style=\"--team-color:#1d9bd7\" onclick=\"svhShowTeam('a',this)\" type=\"button\">\r\n          <i><\/i><b>SV Hage A<\/b><span>Kreisliga 1<\/span>\r\n        <\/button>\r\n\r\n        <button class=\"svh-team-btn\" style=\"--team-color:#d9a441\" onclick=\"svhShowTeam('b',this)\" type=\"button\">\r\n          <i><\/i><b>SV Hage B<\/b><span>Kreisklasse 6<\/span>\r\n        <\/button>\r\n\r\n        <button class=\"svh-team-btn\" style=\"--team-color:#39b978\" onclick=\"svhShowTeam('c',this)\" type=\"button\">\r\n          <i><\/i><b>SV Hage C<\/b><span>Kreisklasse 6<\/span>\r\n        <\/button>\r\n\r\n        <button class=\"svh-team-btn\" style=\"--team-color:#d94a5f\" onclick=\"svhShowTeam('d',this)\" type=\"button\">\r\n          <i><\/i><b>SV Hage D<\/b><span>Kreisklasse 6<\/span>\r\n        <\/button>\r\n\r\n        <button class=\"svh-team-btn\" style=\"--team-color:#a06cff\" onclick=\"svhShowTeam('e',this)\" type=\"button\">\r\n          <i><\/i><b>Herz &amp; Seele<\/b><span>Immer ein Teil von uns<\/span>\r\n        <\/button>\r\n\r\n        <button class=\"svh-team-btn\" style=\"--team-color:#e8b64b\" onclick=\"svhShowTeam('f',this)\" type=\"button\">\r\n          <i><\/i><b>Legenden<\/b><span>Ehemalige &middot; Unvergessen<\/span>\r\n        <\/button>\r\n      <\/div>\r\n\r\n      <div class=\"svh-stage\" id=\"svh-stage\">\r\n        <div class=\"svh-team-hero\">\r\n          <div>\r\n            <span class=\"svh-tag\" id=\"svh-team-league\">Kreisliga 1<\/span>\r\n            <h3 id=\"svh-team-name\">SV Hage A<\/h3>\r\n            <p id=\"svh-team-text\">\r\n              SV Hage A vertritt den Verein auf dem h\u00f6chsten Niveau der Sparte. Mit Erfahrung, Ehrgeiz und dem Anspruch, sich Woche f\u00fcr Woche weiterzuentwickeln, geht das Team in der Kreisliga 1 ans Oche.\r\n            <\/p>\r\n\r\n            <div class=\"svh-team-stats\">\r\n              <div class=\"svh-team-stat\"><b id=\"svh-team-count\">5<\/b><span id=\"svh-team-count-l\">Spieler im Kader<\/span><\/div>\r\n              <div class=\"svh-team-stat\"><b id=\"svh-team-mid\">2026\/27<\/b><span id=\"svh-team-mid-l\">Saison<\/span><\/div>\r\n              <div class=\"svh-team-stat\"><b id=\"svh-team-focus\">Kreisliga etablieren<\/b><span id=\"svh-team-focus-l\">Ziel<\/span><\/div>\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <div class=\"svh-team-photo\">\r\n            <img decoding=\"async\" src=\"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/05\/WhatsApp-Image-2026-05-02-at-07.33.28.jpeg\" alt=\"Teamfoto SV Hage Darts\">\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"svh-players\" id=\"svh-players\"><\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <section class=\"svh-section\" id=\"svh-tables\">\r\n    <div class=\"svh-wrap\">\r\n      <div class=\"svh-head\">\r\n        <div>\r\n          <div class=\"svh-kicker\">Tabellen<\/div>\r\n          <h2>Wo wir stehen.<\/h2>\r\n        <\/div>\r\n        <p>\r\n          Die aktuellen Ligatabellen der Saison 2026\/27 \u2013 live aus dem DVWE-Spielplan.\r\n          Mit jedem Spieltag f\u00fcllt sich hier alles automatisch.\r\n        <\/p>\r\n      <\/div>\r\n\r\n      <div class=\"svh-tables-grid\">\r\n        <div class=\"svh-card svh-table-card\" style=\"--lg:#1d9bd7\">\r\n          <div class=\"svh-table-head\">\r\n            <span class=\"svh-league-badge\">KL 01<\/span>\r\n            <span class=\"svh-table-title\">Kreisliga 1<\/span>\r\n            <a class=\"svh-table-ext\" href=\"https:\/\/2k-dart-software.com\/frontend\/events\/10\/event\/1442\/table\" target=\"_blank\" rel=\"noopener\">Voll ansehen \u2197<\/a>\r\n          <\/div>\r\n          <div class=\"svh-table-wrap\" id=\"svh-table-a\"><div class=\"svh-table-empty\">Tabelle wird geladen \u2026<\/div><\/div>\r\n        <\/div>\r\n\r\n        <div class=\"svh-card svh-table-card\" style=\"--lg:#d9a441\">\r\n          <div class=\"svh-table-head\">\r\n            <span class=\"svh-league-badge\">KK 06<\/span>\r\n            <span class=\"svh-table-title\">Kreisklasse 6<\/span>\r\n            <a class=\"svh-table-ext\" href=\"https:\/\/2k-dart-software.com\/frontend\/events\/10\/event\/1455\/table\" target=\"_blank\" rel=\"noopener\">Voll ansehen \u2197<\/a>\r\n          <\/div>\r\n          <div class=\"svh-table-wrap\" id=\"svh-table-b\"><div class=\"svh-table-empty\">Tabelle wird geladen \u2026<\/div><\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <section class=\"svh-section\" id=\"svh-pokal\">\r\n    <div class=\"svh-wrap\">\r\n      <div class=\"svh-pokal-band\">\r\n        <div class=\"svh-pokal-ico\">\r\n          <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M19 4h-2V2H7v2H5C3.9 4 3 4.9 3 6v1c0 2.55 1.92 4.63 4.39 4.94A5.01 5.01 0 0 0 11 15.9V18H8v2h8v-2h-3v-2.1a5.01 5.01 0 0 0 3.61-3.96C19.08 11.63 21 9.55 21 7V6c0-1.1-.9-2-2-2ZM5 7V6h2v3.82C5.84 9.4 5 8.3 5 7Zm14 0c0 1.3-.84 2.4-2 2.82V6h2v1Z\"\/><\/svg>\r\n        <\/div>\r\n        <div class=\"svh-pokal-body\">\r\n          <div class=\"svh-kicker\">Pokal &amp; Cup<\/div>\r\n          <h3>Unser Pokalweg 2026\/27<\/h3>\r\n          <p>Bezirkspokal und NDV 8er-Pokal \u2013 jede Runde, jedes Ergebnis. Angetreten, gek\u00e4mpft, Erfahrung gesammelt.<\/p>\r\n        <\/div>\r\n        <a href=\"https:\/\/dart.scubyhome.de\/wordpress\/index.php\/pokalweg\/\" class=\"svh-btn svh-btn-primary\">Pokalweg ansehen &rarr;<\/a>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <section class=\"svh-section\" id=\"svh-records\">\r\n    <div class=\"svh-wrap\">\r\n      <div class=\"svh-head\">\r\n        <div>\r\n          <div class=\"svh-kicker\">Hall of Fame<\/div>\r\n          <h2>Leistungen, die bleiben.<\/h2>\r\n        <\/div>\r\n        <p>\r\n          Besondere Momente verdienen einen besonderen Platz: die h\u00f6chsten Finishes, die k\u00fcrzesten\r\n          Legs und die meisten 180er \u2013 erzielt von unseren Spielern in der DVWE-Premierensaison 2025\/26.\r\n        <\/p>\r\n      <\/div>\r\n\r\n      <div class=\"svh-records\">\r\n        <div class=\"svh-card svh-record\"><b>120<\/b><span>Highest Finish<\/span><small>Harald de Vries<\/small><\/div>\r\n        <div class=\"svh-card svh-record\"><b>17<\/b><span>K\u00fcrzestes Leg<\/span><small>Uwe L\u00fcppen<\/small><\/div>\r\n        <div class=\"svh-card svh-record\"><b>7<\/b><span>180er gesamt<\/span><small>Premierensaison 2025\/26<\/small><\/div>\r\n        <div class=\"svh-card svh-record\"><b>3<\/b><span>Meiste 180er<\/span><small>Kr\u00fcger &amp; L\u00fcppen<\/small><\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <section class=\"svh-section svh-ndm-section\">\r\n    <div class=\"svh-wrap\">\r\n      <div class=\"svh-ndm\">\r\n        <div class=\"svh-ndm-logo\">\r\n          <img decoding=\"async\" src=\"https:\/\/nordseedartmasters.de\/wp-content\/uploads\/2026\/06\/Logo_NordseeDartMasters.png\" alt=\"Nordsee Dart Masters Logo\" loading=\"lazy\">\r\n        <\/div>\r\n        <div class=\"svh-ndm-body\">\r\n          <div class=\"svh-kicker\">Unser Event<\/div>\r\n          <h3>Ausrichter des Nordsee Dart Masters\u2122<\/h3>\r\n          <p>\r\n            Sturm. Spiel. Gemeinschaft. \u2013 Von der K\u00fcste, f\u00fcr die Community: In Hage richten wir das\r\n            Nordsee Dart Masters\u2122 aus \u2013 drei Tage Dartsport mit \u00fcber 440 Spielern. Und mit der neuen\r\n            NDM\u2122 Series geht der Sturm weiter, Qualifier f\u00fcr Qualifier bis zur Final Stage. Ride the Storm.\r\n          <\/p>\r\n          <div class=\"svh-ndm-actions\">\r\n            <a class=\"svh-btn svh-btn-primary\" href=\"https:\/\/nordseedartmasters.de\/\" target=\"_blank\" rel=\"noopener\">Zum Event<\/a>\r\n            <a class=\"svh-btn\" href=\"https:\/\/nordseedartmasters.de\/index.php\/ndm_series\/\" target=\"_blank\" rel=\"noopener\">NDM\u2122 Series ansehen<\/a>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <section class=\"svh-section\">\r\n    <div class=\"svh-wrap svh-split\">\r\n      <div class=\"svh-card svh-feature\">\r\n        <div class=\"svh-kicker\">Vereinsgeschichte<\/div>\r\n        <h3>Noch jung. Schon Geschichte geschrieben.<\/h3>\r\n        <p>\r\n          Unsere erste DVWE-Saison endete direkt mit der Vizemeisterschaft. Was als neues Kapitel begann,\r\n          wurde in k\u00fcrzester Zeit zur Erfolgsgeschichte \u2013 heute gehen bereits vier Mannschaften an den Start.\r\n          Und die Reise hat gerade erst begonnen.\r\n        <\/p>\r\n      <\/div>\r\n\r\n      <div class=\"svh-card svh-feature\">\r\n        <div class=\"svh-kicker\">Heimspielabend<\/div>\r\n        <h3>Wo Darts zu Hause ist.<\/h3>\r\n        <p>\r\n          Trainingsabende, Heimspiele, Gespr\u00e4che am Board und spannende Legs. Hier entstehen Freundschaften,\r\n          Erinnerungen und echtes Vereinsleben \u2013 f\u00fcr Anf\u00e4nger, Ligaspieler und alle, die Lust auf Darts haben,\r\n          ob jung oder alt, Frau oder Mann.\r\n        <\/p>\r\n        <a href=\"#svh-contact\" class=\"svh-btn svh-btn-primary\">Mitspielen<\/a>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <section class=\"svh-section\" id=\"svh-clubhome\">\r\n    <div class=\"svh-wrap svh-club\">\r\n      <div class=\"svh-card svh-club-text\">\r\n        <div class=\"svh-kicker\">Vereinsheim<\/div>\r\n        <h3>Unser Zuhause.<\/h3>\r\n        <p>\r\n          Mehr als nur ein Spielort: Hier wird trainiert, gefachsimpelt, gelacht und um jeden Dart gek\u00e4mpft.\r\n          Trainiert wird jeden Dienstag &amp; Mittwoch von 19 bis 21 Uhr im Zeppelin Hage, Kastanienallee 1.\r\n          Wer den SV Hage kennenlernen m\u00f6chte, ist hier genau richtig.\r\n        <\/p>\r\n        <a href=\"#svh-contact\" class=\"svh-btn svh-btn-primary\">Probetraining anfragen<\/a>\r\n      <\/div>\r\n\r\n      <div class=\"svh-club-image\"><\/div>\r\n    <\/div>\r\n\r\n    <div class=\"svh-wrap svh-clublinks\">\r\n      <div class=\"svh-card svh-clublink\">\r\n        <div class=\"svh-clublink-ico\">\r\n          <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4 20V4H2v18h20v-2H4Zm3-3h2v-6H7v6Zm4 0h2V7h-2v10Zm4 0h2v-8h-2v8Zm4 0h2V9h-2v8Z\"\/><\/svg>\r\n        <\/div>\r\n        <div class=\"svh-kicker\">Interner Bereich<\/div>\r\n        <h4>Wo unsere Trainingsstatistiken wohnen.<\/h4>\r\n        <p>\r\n          Hier lauern die nackten Zahlen aus dem Training: Averages, 180er, Highfinishes\r\n          und der ein oder andere Wurf, den man am liebsten wieder l\u00f6schen w\u00fcrde. Wer wissen\r\n          will, wer wirklich trainiert \u2013 und wer nur so tut \u2013 schaut hier vorbei. Zahlen l\u00fcgen\r\n          schlie\u00dflich nicht, auch wenn wir uns das manchmal w\u00fcnschen. \ud83d\ude05\r\n        <\/p>\r\n        <a href=\"https:\/\/dart.scubyhome.de\/wordpress\/index.php\/statistiken\/\" class=\"svh-btn svh-btn-primary\" target=\"_blank\" rel=\"noopener\">Zu den Statistiken<\/a>\r\n      <\/div>\r\n\r\n      <div class=\"svh-card svh-clublink\">\r\n        <div class=\"svh-clublink-ico\">\r\n          <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M16 11a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm-8 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm0 2c-2.67 0-8 1.34-8 4v3h9.5a5.5 5.5 0 0 1 1.2-3.75C9.9 13.4 8.66 13 8 13Zm8 0c-.29 0-.62.02-.97.05A5.48 5.48 0 0 1 17 17v3h7v-3c0-2.66-5.33-4-8-4Zm3-6h2V5h-2V3h-2v2h-2v2h2v2h2V7Z\"\/><\/svg>\r\n        <\/div>\r\n        <div class=\"svh-kicker\">Spieler+<\/div>\r\n        <h4>Termine, Zu- &amp; Absagen an einem Ort.<\/h4>\r\n        <p>\r\n          Training, Ligaspiele und Events verwalten wir \u00fcber Spieler+. Zu- oder absagen,\r\n          Aufstellungen checken und immer wissen, wann's am Oche losgeht \u2013 ganz ohne\r\n          endlose WhatsApp-Nachrichten. Ein Klick, und du bist im Team-Kalender.\r\n        <\/p>\r\n        <a href=\"https:\/\/www.spielerplus.de\/site\/events\" class=\"svh-btn svh-btn-primary\" target=\"_blank\" rel=\"noopener\">Zu Spieler+<\/a>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <section class=\"svh-section\" id=\"svh-contact\">\r\n    <div class=\"svh-wrap svh-split\">\r\n      <div class=\"svh-card svh-feature\">\r\n        <div class=\"svh-kicker\">Mitspielen<\/div>\r\n        <h3>Wirf deine ersten Pfeile mit uns.<\/h3>\r\n        <p>\r\n          Ganz egal, ob blutiger Anf\u00e4nger oder erfahrener Ligaspieler, 16 oder 66, Frau oder Mann \u2013\r\n          bei uns z\u00e4hlen die Freude am Sport und die Gemeinschaft. Frauen und M\u00e4dchen sind bei uns\r\n          ausdr\u00fccklich willkommen, und unser j\u00fcngster Spieler steht mit gerade einmal 16 Jahren schon\r\n          in der A-Mannschaft am Oche. Komm vorbei, lern uns kennen und werde Teil von SV Hage Darts.\r\n        <\/p>\r\n\r\n        <div class=\"svh-train\">\r\n          <div class=\"svh-train-item\"><span>Ort<\/span><b>Zeppelin Hage \u00b7 Kastanienallee 1, 26524 Hage<\/b><\/div>\r\n          <div class=\"svh-train-item\"><span>Training<\/span><b>Dienstag &amp; Mittwoch \u00b7 19\u201321 Uhr<\/b><\/div>\r\n        <\/div>\r\n\r\n        <div class=\"svh-train-actions\">\r\n          <a href=\"https:\/\/dart.scubyhome.de\/wordpress\/index.php\/kontakt\/\" class=\"svh-btn svh-btn-primary\">Kontakt aufnehmen<\/a>\r\n          <a href=\"https:\/\/www.google.com\/maps\/search\/?api=1&amp;query=Zeppelin+Hage+Kastanienallee+1+26524+Hage\" class=\"svh-btn\" target=\"_blank\" rel=\"noopener\">Auf der Karte ansehen<\/a>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"svh-card svh-feature\">\r\n        <div class=\"svh-kicker\">Partner<\/div>\r\n        <h3>Gemeinsam mehr erreichen.<\/h3>\r\n        <p>\r\n          Unsere Dartsparte w\u00e4chst stetig. Mit starken Partnern an unserer Seite schaffen wir die Basis\r\n          f\u00fcr sportliche Entwicklung, Vereinsleben und Events wie das Nordsee Dart Masters\u2122.\r\n          Danke an alle, die diesen Weg mit uns gehen.\r\n        <\/p>\r\n\r\n        <div class=\"svh-sponsors\">\r\n          <div class=\"svh-sponsor\"><img decoding=\"async\" src=\"https:\/\/nordseedartmasters.de\/wp-content\/uploads\/2026\/03\/Ergo_Marco.jpg\" alt=\"ERGO Marco Abbes\" loading=\"lazy\" onerror=\"this.parentNode.style.display='none'\"><\/div>\r\n          <div class=\"svh-sponsor\"><img decoding=\"async\" src=\"https:\/\/nordseedartmasters.de\/wp-content\/uploads\/2026\/03\/ERGO-Logo-Red-RGB-PNG2.jpg\" alt=\"ERGO\" loading=\"lazy\" onerror=\"this.parentNode.style.display='none'\"><\/div>\r\n          <div class=\"svh-sponsor\"><img decoding=\"async\" src=\"https:\/\/nordseedartmasters.de\/wp-content\/uploads\/2026\/02\/Daniel_Buss.png\" alt=\"Bauunternehmen Daniel Buss\" loading=\"lazy\" onerror=\"this.parentNode.style.display='none'\"><\/div>\r\n          <div class=\"svh-sponsor\"><img decoding=\"async\" src=\"https:\/\/nordseedartmasters.de\/wp-content\/uploads\/2026\/02\/Logo-1.jpg\" alt=\"IB Finanz &amp; Immobilien GmbH\" loading=\"lazy\" onerror=\"this.parentNode.style.display='none'\"><\/div>\r\n          <div class=\"svh-sponsor\"><img decoding=\"async\" src=\"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2025\/03\/SCHINK-Logo-ohne-Rahmen.png\" alt=\"Schink Fliegengitter Manufaktur\" loading=\"lazy\" onerror=\"this.parentNode.style.display='none'\"><\/div>\r\n          <div class=\"svh-sponsor\"><img decoding=\"async\" src=\"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2025\/02\/Zeppelin.jpg\" alt=\"Zeppelin Bowling Bistro Events Hage\" loading=\"lazy\" onerror=\"this.parentNode.style.display='none'\"><\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <footer class=\"svh-footer\">\r\n    <div class=\"svh-wrap svh-footer-grid\">\r\n      <div class=\"svh-footer-brand\">\r\n        <span class=\"svh-brand-logo\">\r\n          <img decoding=\"async\" src=\"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/07\/SV-Hage-Darts-Logo.png\" alt=\"SV Hage Darts Logo\">\r\n        <\/span>\r\n        <div>\r\n          <b>SV Hage Darts<\/b>\r\n          <span>Sturm. Spiel. Gemeinschaft.<\/span>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <nav class=\"svh-footer-col\" aria-label=\"Sektionen\">\r\n        <h4>Sektionen<\/h4>\r\n        <a href=\"#svh-news\">Aktuelles<\/a>\r\n        <a href=\"#svh-teams\">Mannschaften<\/a>\r\n        <a href=\"#svh-tables\">Tabelle<\/a>\r\n        <a href=\"#svh-records\">Rekorde<\/a>\r\n        <a href=\"#svh-pokal\">Pokalweg<\/a>\r\n        <a href=\"#svh-clubhome\">Vereinsheim<\/a>\r\n      <\/nav>\r\n\r\n      <nav class=\"svh-footer-col\" aria-label=\"Verein\">\r\n        <h4>Verein<\/h4>\r\n        <a href=\"https:\/\/dart.scubyhome.de\/wordpress\/index.php\/impressum\/\">Impressum<\/a>\r\n        <a href=\"https:\/\/dart.scubyhome.de\/wordpress\/index.php\/datenschutzerklaerung-2\/\">Datenschutz<\/a>\r\n        <a href=\"https:\/\/dart.scubyhome.de\/wordpress\/index.php\/kontakt\/\">Kontakt<\/a>\r\n        <a href=\"https:\/\/nordseedartmasters.de\/\" target=\"_blank\" rel=\"noopener\">Nordsee Dart Masters<\/a>\r\n        <a href=\"https:\/\/www.svhage.de\/\" target=\"_blank\" rel=\"noopener\">SV Hage<\/a>\r\n      <\/nav>\r\n\r\n      <div class=\"svh-footer-social\">\r\n        <a class=\"svh-social-btn\" href=\"https:\/\/www.instagram.com\/sv_hage_darter\/\" target=\"_blank\" rel=\"noopener\">\r\n          <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M12 2.2c3.2 0 3.6 0 4.9.07 1.2.06 1.8.25 2.2.42.6.22 1 .48 1.4.9.42.4.68.8.9 1.4.17.4.36 1 .42 2.2.06 1.3.07 1.7.07 4.9s0 3.6-.07 4.9c-.06 1.2-.25 1.8-.42 2.2a3.8 3.8 0 0 1-.9 1.4c-.4.42-.8.68-1.4.9-.4.17-1 .36-2.2.42-1.3.06-1.7.07-4.9.07s-3.6 0-4.9-.07c-1.2-.06-1.8-.25-2.2-.42a3.8 3.8 0 0 1-1.4-.9 3.8 3.8 0 0 1-.9-1.4c-.17-.4-.36-1-.42-2.2C2.2 15.6 2.2 15.2 2.2 12s0-3.6.07-4.9c.06-1.2.25-1.8.42-2.2.22-.6.48-1 .9-1.4.4-.42.8-.68 1.4-.9.4-.17 1-.36 2.2-.42C8.4 2.2 8.8 2.2 12 2.2Zm0 1.8c-3.1 0-3.5 0-4.7.07-1 .05-1.6.22-1.9.36-.5.18-.8.4-1.2.75-.35.35-.57.7-.75 1.2-.14.3-.31.9-.36 1.9C3 9.5 3 9.9 3 12s0 2.5.07 3.7c.05 1 .22 1.6.36 1.9.18.5.4.8.75 1.2.35.35.7.57 1.2.75.3.14.9.31 1.9.36 1.2.07 1.6.07 4.7.07s3.5 0 4.7-.07c1-.05 1.6-.22 1.9-.36.5-.18.8-.4 1.2-.75.35-.35.57-.7.75-1.2.14-.3.31-.9.36-1.9.07-1.2.07-1.6.07-3.7s0-2.5-.07-3.7c-.05-1-.22-1.6-.36-1.9a3.2 3.2 0 0 0-.75-1.2 3.2 3.2 0 0 0-1.2-.75c-.3-.14-.9-.31-1.9-.36C15.5 4 15.1 4 12 4Zm0 3.1a4.9 4.9 0 1 1 0 9.8 4.9 4.9 0 0 1 0-9.8Zm0 1.8a3.1 3.1 0 1 0 0 6.2 3.1 3.1 0 0 0 0-6.2Zm5.1-.9a1.15 1.15 0 1 1 0 2.3 1.15 1.15 0 0 1 0-2.3Z\"\/><\/svg>Instagram SV Hage\r\n        <\/a>\r\n        <a class=\"svh-social-btn\" href=\"https:\/\/instagram.com\/nordseedartmasters\" target=\"_blank\" rel=\"noopener\">\r\n          <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M12 2.2c3.2 0 3.6 0 4.9.07 1.2.06 1.8.25 2.2.42.6.22 1 .48 1.4.9.42.4.68.8.9 1.4.17.4.36 1 .42 2.2.06 1.3.07 1.7.07 4.9s0 3.6-.07 4.9c-.06 1.2-.25 1.8-.42 2.2a3.8 3.8 0 0 1-.9 1.4c-.4.42-.8.68-1.4.9-.4.17-1 .36-2.2.42-1.3.06-1.7.07-4.9.07s-3.6 0-4.9-.07c-1.2-.06-1.8-.25-2.2-.42a3.8 3.8 0 0 1-1.4-.9 3.8 3.8 0 0 1-.9-1.4c-.17-.4-.36-1-.42-2.2C2.2 15.6 2.2 15.2 2.2 12s0-3.6.07-4.9c.06-1.2.25-1.8.42-2.2.22-.6.48-1 .9-1.4.4-.42.8-.68 1.4-.9.4-.17 1-.36 2.2-.42C8.4 2.2 8.8 2.2 12 2.2Zm0 1.8c-3.1 0-3.5 0-4.7.07-1 .05-1.6.22-1.9.36-.5.18-.8.4-1.2.75-.35.35-.57.7-.75 1.2-.14.3-.31.9-.36 1.9C3 9.5 3 9.9 3 12s0 2.5.07 3.7c.05 1 .22 1.6.36 1.9.18.5.4.8.75 1.2.35.35.7.57 1.2.75.3.14.9.31 1.9.36 1.2.07 1.6.07 4.7.07s3.5 0 4.7-.07c1-.05 1.6-.22 1.9-.36.5-.18.8-.4 1.2-.75.35-.35.57-.7.75-1.2.14-.3.31-.9.36-1.9.07-1.2.07-1.6.07-3.7s0-2.5-.07-3.7c-.05-1-.22-1.6-.36-1.9a3.2 3.2 0 0 0-.75-1.2 3.2 3.2 0 0 0-1.2-.75c-.3-.14-.9-.31-1.9-.36C15.5 4 15.1 4 12 4Zm0 3.1a4.9 4.9 0 1 1 0 9.8 4.9 4.9 0 0 1 0-9.8Zm0 1.8a3.1 3.1 0 1 0 0 6.2 3.1 3.1 0 0 0 0-6.2Zm5.1-.9a1.15 1.15 0 1 1 0 2.3 1.15 1.15 0 0 1 0-2.3Z\"\/><\/svg>Instagram NDM\r\n        <\/a>\r\n        <a class=\"svh-social-btn\" href=\"https:\/\/chat.whatsapp.com\/KVf8V7CfhLnETrmjKDYpUT\" target=\"_blank\" rel=\"noopener\">\r\n          <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M12.04 2C6.6 2 2.2 6.4 2.2 11.84c0 1.9.5 3.68 1.4 5.24L2 22l5.06-1.32a9.8 9.8 0 0 0 4.98 1.36h.01c5.44 0 9.84-4.4 9.84-9.84 0-2.63-1.02-5.1-2.88-6.96A9.78 9.78 0 0 0 12.04 2Zm0 1.8c2.14 0 4.16.84 5.68 2.36a8 8 0 0 1 2.36 5.68c0 4.44-3.62 8.04-8.05 8.04a8 8 0 0 1-4.1-1.12l-.29-.17-3 .78.8-2.92-.19-.3a8 8 0 0 1-1.23-4.31c0-4.44 3.61-8.04 8.05-8.04Zm-4.6 4.3c-.22 0-.57.08-.87.4-.3.33-1.14 1.12-1.14 2.73s1.17 3.17 1.33 3.39c.16.22 2.3 3.51 5.66 4.79.79.34 1.4.54 1.88.69.79.25 1.5.21 2.07.13.63-.09 1.95-.8 2.22-1.56.27-.77.27-1.42.19-1.56-.08-.13-.3-.21-.62-.37-.33-.16-1.95-.96-2.25-1.07-.3-.11-.52-.16-.74.16-.22.33-.85 1.07-1.04 1.29-.19.22-.38.25-.71.08-.33-.16-1.39-.51-2.65-1.63-.98-.87-1.64-1.95-1.83-2.28-.19-.33-.02-.5.14-.66.15-.15.33-.38.49-.58.16-.19.22-.33.33-.55.11-.22.05-.41-.03-.58-.08-.16-.74-1.78-1.02-2.44-.27-.64-.54-.55-.74-.56l-.63-.01Z\"\/><\/svg>WhatsApp-Community\r\n        <\/a>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"svh-wrap svh-photo-credit\">\r\n      <svg class=\"svh-cam\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M9 3 7.3 5H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-3.3L15 3H9Zm3 5a5 5 0 1 1 0 10 5 5 0 0 1 0-10Zm0 2a3 3 0 1 0 0 6 3 3 0 0 0 0-6Z\"\/><\/svg>\r\n      <span>Unsere Team- &amp; Spielerfotos knipst Michael Fantin \u2013 herzlichen Dank an <a href=\"https:\/\/www.instagram.com\/augenblick.abgeknipst\/\" target=\"_blank\" rel=\"noopener\">#augenblick.abgeknipst<\/a>.<\/span>\r\n    <\/div>\r\n\r\n    <div class=\"svh-wrap svh-footer-bottom\">\r\n      <span>\u00a9 2026 SV Hage Darts \u00b7 Steeldart in Hage<\/span>\r\n      <a href=\"#svh-top\" class=\"svh-top-btn\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M12 5l7 7-1.4 1.4L13 9.8V20h-2V9.8l-4.6 4.6L5 12z\"\/><\/svg>Nach oben<\/a>\r\n    <\/div>\r\n  <\/footer>\r\n\r\n  <div class=\"svh-modal\" id=\"svh-modal\" hidden>\r\n    <div class=\"svh-modal-backdrop\" data-close><\/div>\r\n    <div class=\"svh-modal-card\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"svh-modal-title\">\r\n      <div class=\"svh-modal-head\">\r\n        <div>\r\n          <span class=\"svh-modal-badge\">Live-Center<\/span>\r\n          <h3 id=\"svh-modal-title\">Alle Mannschaften<\/h3>\r\n          <p id=\"svh-modal-sub\"><\/p>\r\n        <\/div>\r\n        <button class=\"svh-modal-close\" type=\"button\" data-close aria-label=\"Schlie\u00dfen\">&times;<\/button>\r\n      <\/div>\r\n      <div class=\"svh-modal-body\" id=\"svh-modal-body\"><\/div>\r\n      <div class=\"svh-modal-foot\">\r\n        <button class=\"svh-btn\" type=\"button\" data-close>Schlie\u00dfen<\/button>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"svh-modal\" id=\"svh-news-modal\" hidden>\r\n    <div class=\"svh-modal-backdrop\" data-nclose><\/div>\r\n    <div class=\"svh-modal-card\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"svh-nm-title\">\r\n      <button class=\"svh-nm-close\" type=\"button\" data-nclose aria-label=\"Schlie\u00dfen\">&times;<\/button>\r\n      <div class=\"svh-nm-media\" id=\"svh-nm-media\"><\/div>\r\n      <div class=\"svh-nm-body\">\r\n        <div class=\"svh-post-meta\"><span class=\"svh-tag\">Beitrag<\/span><span class=\"svh-nm-date\" id=\"svh-nm-date\"><\/span><\/div>\r\n        <h3 class=\"svh-nm-title\" id=\"svh-nm-title\">Titel<\/h3>\r\n        <div class=\"svh-nm-content\" id=\"svh-nm-content\"><\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"svh-modal\" id=\"svh-player-modal\" hidden>\r\n    <div class=\"svh-modal-backdrop\" data-pclose><\/div>\r\n    <div class=\"svh-modal-card svh-pm-card\" role=\"dialog\" aria-modal=\"true\" aria-label=\"Spielerprofil\">\r\n      <button class=\"svh-nm-close\" type=\"button\" data-pclose aria-label=\"Schlie\u00dfen\">&times;<\/button>\r\n      <div class=\"svh-pm-body\" id=\"svh-pm-body\"><\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n  window.svhTeams = {\r\n    a: {\r\n      name: \"SV Hage A\",\r\n      league: \"Kreisliga 1\",\r\n      color: \"#1d9bd7\",\r\n      event: 1442, phase: 2136,\r\n      focus: \"Kreisliga etablieren\",\r\n      text: \"SV Hage A vertritt den Verein auf dem h\u00f6chsten Niveau der Sparte. Mit Erfahrung, Ehrgeiz und dem Anspruch, sich Woche f\u00fcr Woche weiterzuentwickeln, geht das Team in der Kreisliga 1 ans Oche.\",\r\n      players: [\r\n        { n: \"Thorben Kr\u00fcger\", img: \"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/08\/Thorben.jpg\", cap: true, mid: 64479 },\r\n        { n: \"Jan-Erik de Vries\", img: \"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/08\/Jan-Erik.png\" },\r\n        { n: \"Uwe L\u00fcppen\", img: \"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/08\/Uwe.png\", mid: 64480, nick: \"PERNOD 501\", hand: \"Rechts\", darts: \"BULL's DOT3 24 g\", dbl: \"D16\", song: \"\u201eIch f\u00fchl mich disco\u201c von C.S.\", since: \"Januar 2025\", motto: \"Ik mut gornix \u2026\" },\r\n        { n: \"Ime Roffel\", img: \"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/08\/Ime.png\", nick: \"Mystery\", hand: \"Rechts\", darts: \"KOTO 23 g\", dbl: \"D8\", song: \"\u201ePlay the Game Tonight\u201c \u2013 Kansas\", since: \"20.01.2026\", motto: \"Nicht zu spielen, hei\u00dft immer zu verlieren.\" },\r\n        { n: \"Jan Hylsky\", img: \"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/08\/Jan.png\", mid: 89384, nick: \"Husky\", hand: \"Rechts\", darts: \"42 mm Spitzen \u00b7 Royal Darts 23 g \u00b7 Short K-Flex\", dbl: \"D16\", song: \"\u201eCome & Go\u201c \u2013 Juice WRLD ft. Marshmello\", since: \"Anfang 2026\", motto: \"Egal wie oder wo, ich will gewinnen.\" }\r\n      ]\r\n    },\r\n    b: {\r\n      name: \"SV Hage B\",\r\n      league: \"Kreisklasse 6\",\r\n      color: \"#d9a441\",\r\n      event: 1455, phase: 2149,\r\n      focus: \"Konstanz & Teamgeist\",\r\n      text: \"SV Hage B steht f\u00fcr Zusammenhalt und Einsatz. In der Kreisklasse 6 gibt das Team an jedem Spieltag alles f\u00fcr die Vereinsfarben \u2013 geschlossen, hungrig und mit Spa\u00df am Spiel.\",\r\n      players: [\r\n        { n: \"Wilm-Hendrik Schulz\", img: \"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/08\/Wilm.jpg\", cap: true, mid: 64486, nick: \"Scuby\", hand: \"Links\", darts: \"Target Luke Littler Edge 24 g\", dbl: \"D16 \u00b7 D8 \u00b7 D9 \u00b7 D11\", song: \"Mr. Brightside\", since: \"Januar 2025\", motto: \"Unm\u00f6gliches kann sofort erledigt werden, Wunder brauchen etwas l\u00e4nger!\" },\r\n        { n: \"Michael Fantin\", img: \"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/08\/Michael.jpg\", nick: \"Gladiatore\", hand: \"Rechts\", darts: \"Target Daytona GT\", dbl: \"D16\", song: \"\u201eDon't Worry, Be Happy\u201c \u2013 Bobby McFerrin\", since: \"Mai 2025\", motto: \"N\u00fctzt ja nix.\" },\r\n        { n: \"Thomas K\u00f6nig\", img: \"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/08\/Thomas.png\" },\r\n        { n: \"Harald de Vries\", img: \"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/08\/Harald.jpg\", mid: 85614 },\r\n        { n: \"Niels Rosendahl\", img: \"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/08\/Niels.png\" }\r\n      ]\r\n    },\r\n    c: {\r\n      name: \"SV Hage C\",\r\n      league: \"Kreisklasse 6\",\r\n      color: \"#39b978\",\r\n      event: 1455, phase: 2149,\r\n      focus: \"Entwicklung\",\r\n      text: \"Bei SV Hage C trifft Entwicklung auf Motivation. Hier sammeln Spieler Erfahrung, wachsen als Team zusammen und schreiben ihre eigene Geschichte in den Farben des SV Hage.\",\r\n      players: [\r\n        { n: \"Artur Paul\", img: \"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/08\/Artur.jpg\", cap: true, mid: 89270 },\r\n        { n: \"Jonas Nannen\", img: \"\", mid: 64483 },\r\n        { n: \"Mirco Lohoff\", img: \"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/08\/Mirco.jpg\", nick: \"The Bogey\", hand: \"Rechts\", darts: \"Winmau Diablo 22 g \u00b7 Target L-Style\", dbl: \"D18 \u00b7 D16\", song: \"\u201eGreatest Show\u201c \u2013 Hugh Jackman\", since: \"April 2026\", motto: \"180 im Herzen \u2013 26 im Board!\" },\r\n        { n: \"Fabian Rosenberg\", img: \"\" },\r\n        { n: \"Stefan Meis\", img: \"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/08\/Stefan.png\", mid: 64482, nick: \"Madhouse Meise\", age: \"45+\", hand: \"Rechts\", darts: \"Vernichterstahl \u00b7 23 g\", motto: \"Schlimmer geht immer \ud83e\udd74\" }\r\n      ]\r\n    },\r\n    d: {\r\n      name: \"SV Hage D\",\r\n      league: \"Kreisklasse 6\",\r\n      color: \"#d94a5f\",\r\n      event: 1455, phase: 2149,\r\n      focus: \"Aufbau & Zukunft\",\r\n      text: \"SV Hage D bringt neue Energie ans Board und verk\u00f6rpert die Zukunft der Sparte. Einstieg, Leidenschaft und Vereinscharakter \u2013 der n\u00e4chste Schritt f\u00fcr Darts in Hage.\",\r\n      players: [\r\n        { n: \"Werner Meerfeld\", img: \"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/08\/Werner.jpg\", cap: true, nick: \"Bootsmann\", hand: \"Rechts\", darts: \"Target 975 \u00b7 23 g\", dbl: \"D18\", song: \"\u201eShut Up and Dance\u201c\", since: \"04.03.2026\", motto: \"Davon geht die Welt nicht unter, morgen fangen 100 neue Tage an.\" },\r\n        { n: \"Andreas Kaufmann\", img: \"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/08\/Andreas.png\", nick: \"Parzival\", hand: \"Rechts\", darts: \"Red Dragon 21 g\", dbl: \"D15\", song: \"\u201eNorth Wind Calls\u201c \u2013 Lynn Melodi\", since: \"Januar 2025\", motto: \"Wat mut, dat mut.\" },\r\n        { n: \"Karsten K\u00f6psel\", img: \"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/08\/Karsten.png\", nick: \"die Krabbe\", hand: \"Rechts\", darts: \"Red Dragon Razor Edge Spectron 20 g\", dbl: \"D16\", song: \"\u201eMr. Brightside\u201c \u2013 The Killers\", since: \"10.04.2024\", motto: \"Tripple is funny, but Double makes the money.\" },\r\n        { n: \"Markus Ivo\", img: \"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/08\/Markus.png\" },\r\n        { n: \"Luca Antoni Thesinga\", img: \"\" },\r\n        { n: \"Marcel Margraf\", img: \"\" },\r\n        { n: \"Wolfgang Eilts\", img: \"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/08\/Wolfgang.png\" },\r\n        { n: \"Stephan Schmitt\", img: \"\" },\r\n        { n: \"Jonas Eden\", img: \"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/08\/Jonas-Eden.png\", nick: \"Jonny\", hand: \"Rechts\", darts: \"Precise Double Dipper 26 g\", dbl: \"D8\", song: \"\u201eJonny B Good\u201c \u2013 Chuck Berry\", since: \"Juni 2026\", motto: \"Wenn es schief geht, dann richtig.\" },\r\n        { n: \"Lukas Kohl\", img: \"\" },\r\n        { n: \"Michael Poppinga\", img: \"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/08\/Michael-Poppinga.png\", nick: \"The Northern Arrow\", hand: \"Rechts\", darts: \"Target Bolide ENVY \u00b7 25 g\", dbl: \"D16\", song: \"\u201eThunderstruck\u201c \u2013 AC\/DC\", since: \"Juli 2026\", motto: \"Je k\u00e4lter der Norden, desto hei\u00dfer die Darts.\" },\r\n        { n: \"Phillip Poppinga\", img: \"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/08\/Phillip.jpg\", nick: \"The Sniper\", hand: \"Rechts\", darts: \"Target Luke Littler G1 \u00b7 24 g\", dbl: \"D20\", song: \"\u201eFire\u201c \u2013 Scooter\", since: \"Juli 2026\", motto: \"Bull ist auch nur eine gro\u00dfe 25. \ud83c\udfaf\ud83d\ude04\" },\r\n        { n: \"Patrick Veen\", img: \"\" },\r\n        { n: \"J\u00fcrgen Halenka\", img: \"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/08\/Jogi.png\", nick: \"Jogi\", hand: \"Rechts\", darts: \"Target Bolide 04 \u00b7 23 g\", dbl: \"D8 \u00b7 D4\", song: \"\u201eThunderstruck\u201c \u2013 AC\/DC\", motto: \"Wer aufgibt, hat schon verloren.\" }\r\n      ]\r\n    },\r\n    e: {\r\n      name: \"Herz & Seele\",\r\n      league: \"Das Herz des Vereins\",\r\n      color: \"#a06cff\",\r\n      focus: \"Unverzichtbar\",\r\n      focusLabel: \"F\u00fcr uns\",\r\n      statCountLabel: \"Im Herzen\",\r\n      stat2Value: \"\u221e\",\r\n      stat2Label: \"Verbunden\",\r\n      honor: true,\r\n      text: \"Diese Spieler stehen aktuell in keiner Mannschaft \u2013 aber ohne sie w\u00e4re SV Hage Darts nicht das, was es ist. F\u00fcr ihren Einsatz, ihr Herzblut und ihre Verbundenheit sagen wir einfach: Danke, dass ihr Teil unserer Familie seid.\",\r\n      players: [\r\n        { n: \"Klaus Leppich\", img: \"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/08\/Klaus.png\", nick: \"Klausi\" },\r\n        { n: \"J\u00f6rg\", img: \"\", honorText: \"J\u00f6rg geh\u00f6rt zu den Menschen, die man in keiner Tabelle findet und trotzdem \u00fcberall sp\u00fcrt. Ob ein gutes Wort zur richtigen Zeit oder einfach da sein, wenn es z\u00e4hlt \u2013 du machst SV Hage Darts ein St\u00fcck w\u00e4rmer. Danke, dass du zu uns geh\u00f6rst.\" },\r\n        { n: \"Wolfgang\", img: \"\", honorText: \"Ruhig, verl\u00e4sslich und immer mit einem L\u00e4cheln: Wolfgang ist der gute Geist, auf den man sich blind verlassen kann. Deine Gelassenheit tut dem ganzen Verein gut \u2013 sch\u00f6n, dass es dich bei uns gibt.\" },\r\n        { n: \"Manfred\", img: \"\", nick: \"Manny\", honorText: \"Wo Manny ist, ist gute Laune. Mit einem Spruch auf den Lippen und einem gro\u00dfen Herzen sorgst du daf\u00fcr, dass bei uns gelacht wird \u2013 am Oche wie am Tresen. Ein SV Hage Darts ohne dich? Undenkbar.\" },\r\n        { n: \"Reinhard\", img: \"\", honorText: \"Reinhard steht f\u00fcr Herzblut und Best\u00e4ndigkeit. Ohne viel Aufhebens bist du einfach da, wenn man dich braucht \u2013 genau das macht dich f\u00fcr uns unbezahlbar. Danke f\u00fcr deine Treue zu unserer Dartfamilie.\" },\r\n        { n: \"Hubert Sch\u00e4ffler\", img: \"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/08\/Hubert.png\", nick: \"Beidh\u00e4nder\", hand: \"Links + rechts\", darts: \"Win Max GT180 \u00b7 24 g\", dbl: \"D3\", song: \"\u201eConquest of Paradise\u201c \u2013 Vangelis\", since: \"Juli 2024\", motto: \"Alles was Spa\u00df macht \ud83d\ude0a\ud83d\udc4d\ud83c\udffc\", honorText: \"Hubert ist einer, der nie viel Wirbel macht und trotzdem immer zur Stelle ist. Mit ruhiger Art, einem offenen Ohr und einem gro\u00dfen Herzen geh\u00f6rst du fest zu SV Hage Darts. Sch\u00f6n, dass es dich gibt \u2013 danke, Hubert.\" }\r\n      ]\r\n    },\r\n    f: {\r\n      name: \"Legenden\",\r\n      league: \"Ehemalige \u00b7 F\u00fcr immer unvergessen\",\r\n      color: \"#e8b64b\",\r\n      focus: \"Danke f\u00fcr alles!\",\r\n      focusLabel: \"F\u00fcr immer Hage\",\r\n      statCountLabel: \"Legenden\",\r\n      stat2Value: \"\u2605\",\r\n      stat2Label: \"Unvergessen\",\r\n      alumni: true,\r\n      text: \"Diese Spieler haben unsere Farben getragen, unsere Anf\u00e4nge gepr\u00e4gt und am Oche Spuren hinterlassen, die bleiben. Ihr Weg hat sie weitergef\u00fchrt \u2013 doch ihre Geschichte geh\u00f6rt f\u00fcr immer zu SV Hage Darts. Einmal Hage, immer Hage.\",\r\n      players: [\r\n        { n: \"J\u00fcrgen Winter\", img: \"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/uploads\/2026\/08\/Juergen.jpeg\", nick: \"Snowman\", farewell: \"April 2026\", farewellReason: \"Grund \u00b7 Umzug\", alumniText: \"J\u00fcrgen hat unsere Premierensaison mitgepr\u00e4gt und mit ruhiger Hand am Oche seine Spuren hinterlassen. Im April 2026 f\u00fchrte ihn ein Umzug fort \u2013 seine Bestleistungen und sein Platz in unserer Geschichte bleiben. Einmal Hage, immer Hage.\" }\r\n      ]\r\n    }\r\n  };\r\n\r\n  \/* Spielerkarten alphabetisch nach Nachname sortieren (pro Team) *\/\r\n  (function () {\r\n    function svhLastName(n) { var p = String(n).trim().split(\/\\s+\/); return p[p.length - 1]; }\r\n    Object.keys(window.svhTeams).forEach(function (k) {\r\n      window.svhTeams[k].players.sort(function (a, b) {\r\n        return svhLastName(a.n).localeCompare(svhLastName(b.n), \"de\", { sensitivity: \"base\" }) || a.n.localeCompare(b.n, \"de\");\r\n      });\r\n    });\r\n  })();\r\n\r\n  function svhInitials(name) {\r\n    return name\r\n      .split(\" \")\r\n      .map(function(part) {\r\n        return part.charAt(0);\r\n      })\r\n      .join(\"\")\r\n      .substring(0, 2)\r\n      .toUpperCase();\r\n  }\r\n\r\n  function svhEsc(s) {\r\n    return String(s == null ? \"\" : s).replace(\/[&<>\"']\/g, function (c) {\r\n      return { \"&\": \"&amp;\", \"<\": \"&lt;\", \">\": \"&gt;\", '\"': \"&quot;\", \"'\": \"&#39;\" }[c];\r\n    });\r\n  }\r\n\r\n  function svhRenderPlayers(team, teamId) {\r\n    var grid = document.getElementById(\"svh-players\");\r\n    if (!grid) return;\r\n\r\n    grid.innerHTML = team.players.map(function (player, index) {\r\n      var name = svhEsc(player.n);\r\n      var inner = player.img\r\n        ? '<img decoding=\"async\" src=\"' + svhEsc(player.img) + '\" alt=\"' + name + '\" loading=\"lazy\">'\r\n        : '<div class=\"svh-player-fallback\">'\r\n          + '<div class=\"svh-pf-ini\">' + svhInitials(player.n) + '<\/div>'\r\n          + '<div class=\"svh-pf-name\">' + name + '<\/div>'\r\n          + '<div class=\"svh-pf-hint\">Karte folgt<\/div>'\r\n          + '<\/div>';\r\n      var cap = player.cap ? '<span class=\"svh-cap-badge\">Kapit\u00e4n<\/span>' : '';\r\n      return '<a class=\"svh-player\" role=\"button\" tabindex=\"0\" data-pteam=\"' + teamId + '\" data-pidx=\"' + index + '\">'\r\n        + cap\r\n        + inner\r\n        + '<span class=\"svh-player-hint\">Zum Spielerprofil <span aria-hidden=\"true\">&rarr;<\/span><\/span>'\r\n        + '<\/a>';\r\n    }).join(\"\");\r\n  }\r\n\r\n  function svhShowTeam(id, button) {\r\n    var team = window.svhTeams[id];\r\n    if (!team) return;\r\n\r\n    document.querySelectorAll(\".svh-team-btn\").forEach(function(btn) {\r\n      btn.classList.remove(\"is-active\");\r\n    });\r\n\r\n    if (button) {\r\n      button.classList.add(\"is-active\");\r\n      var nav = button.parentNode;\r\n      if (nav && nav.scrollWidth > nav.clientWidth) {\r\n        nav.scrollTo({ left: button.offsetLeft - (nav.clientWidth - button.offsetWidth) \/ 2, behavior: \"smooth\" });\r\n      }\r\n    }\r\n\r\n    var stage = document.getElementById(\"svh-stage\");\r\n    if (stage) {\r\n      stage.style.setProperty(\"--team-active\", team.color);\r\n    }\r\n\r\n    document.getElementById(\"svh-team-league\").textContent = team.league;\r\n    document.getElementById(\"svh-team-name\").textContent = team.name;\r\n    document.getElementById(\"svh-team-text\").textContent = team.text;\r\n    document.getElementById(\"svh-team-count\").textContent = team.players.length;\r\n    document.getElementById(\"svh-team-count-l\").textContent = team.statCountLabel || \"Spieler im Kader\";\r\n    document.getElementById(\"svh-team-mid\").textContent = team.stat2Value || \"2026\/27\";\r\n    document.getElementById(\"svh-team-mid-l\").textContent = team.stat2Label || \"Saison\";\r\n    document.getElementById(\"svh-team-focus\").textContent = team.focus;\r\n    document.getElementById(\"svh-team-focus-l\").textContent = team.focusLabel || \"Ziel\";\r\n\r\n    svhRenderPlayers(team, id);\r\n  }\r\n\r\n  svhRenderPlayers(window.svhTeams.a, \"a\");\r\n\r\n  \/* ===== SV-Hage-Matchcenter-Addon =====================================\r\n     Live-Panel (N\u00e4chster Spieltag + Live-Center + \"Heute\") kommt aus dem\r\n     Plugin. Die beiden Original-Skripte unten sind per Guard deaktiviert\r\n     (if (window.SVH_MC) return;). Ohne Plugin\/SVH_MC l\u00e4uft der Original-Code\r\n     als Fallback weiter. proxy:\"\" = Direktzugriff auf die 3K-APIs wie bisher;\r\n     f\u00fcr den gecachten Plugin-Proxy stattdessen:\r\n       proxy: \"https:\/\/dart.scubyhome.de\/wordpress\/wp-json\/svh-matchcenter\/v1\/proxy\"\r\n  ===================================================================== *\/\r\n  window.SVH_MC = {\r\n    proxy: \"\",\r\n    usPattern: \"^\\\\s*SV\\\\s*Hage\\\\b\",\r\n    poll: { liveMs: 9000, bracketMs: 20000, fixturesMs: 900000, todayMs: 300000 },\r\n    sources: {\r\n      dvwe: { api: \"https:\/\/backend-ddv.3k-darts.com\/2k-backend-ddv\/api\/v1\/frontend\", mandant: 570, db: 10, region: 20 },\r\n      club: { api: \"https:\/\/backend5.3k-darts.com\/2k-backend5\/api\/v1\/frontend\", mandant: 2339, db: 6 },\r\n      ndms: { api: \"https:\/\/backend6.3k-darts.com\/2k-backend6\/api\/v1\/frontend\", mandant: 3484, db: 11 },\r\n      live: { page: \"https:\/\/live.3k-darts.com\/event\/\", api: \"https:\/\/live.3k-darts.com\/dartsscorer-liveticker\/api\/v1\" }\r\n    },\r\n    leagues: [\r\n      { badge: \"KL 01\", label: \"Kreisliga 1\", color: \"#1d9bd7\", event: 1442, phase: 2136, showTable: true },\r\n      { badge: \"KK 06\", label: \"Kreisklasse 6\", color: \"#d9a441\", event: 1455, phase: 2149, showTable: true }\r\n    ],\r\n    highlights: [\r\n      { kind: \"match\", source: \"dvwe\", title: \"NDV 8er-Pokal\", badge: \"Pokal\", round: \"Letzte 128\",\r\n        date: \"2026-08-16\", time: \"14:00\", event: 1710, phase: 2411, roundId: 36030, match: 1391888,\r\n        home: \"TuS Nenndorf I\", guest: \"SV Hage I\", color: \"#d94a5f\",\r\n        liveUrl: \"https:\/\/live.3k-darts.com\/event\/10\/1710\" }\r\n    ]\r\n  };\r\n  (function () {\r\n    var s = document.createElement(\"script\");\r\n    s.src = \"https:\/\/dart.scubyhome.de\/wordpress\/wp-content\/plugins\/svh-matchcenter\/assets\/matchcenter.js\";\r\n    document.body.appendChild(s);\r\n  })();\r\n\r\n  \/* Naechster Spieltag - live aus dem DVWE-Spielplan (3K\/2K Dart Software) *\/\r\n  (function () {\r\n    if (window.SVH_MC) return; \/* Addon aktiv \u2192 Original-Live-Panel deaktiviert *\/\r\n    var API = \"https:\/\/backend-ddv.3k-darts.com\/2k-backend-ddv\/api\/v1\/frontend\";\r\n    var LIVE_PAGE = \"https:\/\/live.3k-darts.com\/event\/\";\r\n    var LIVE_API = \"https:\/\/live.3k-darts.com\/dartsscorer-liveticker\/api\/v1\";\r\n    var CLUB_API = \"https:\/\/backend5.3k-darts.com\/2k-backend5\/api\/v1\/frontend\";\r\n    var LEAGUES = [\r\n      { key: \"KL 01\", color: \"#1d9bd7\", event: 1442, phase: 2136 },\r\n      { key: \"KK 06\", color: \"#d9a441\", event: 1455, phase: 2149 }\r\n    ];\r\n    var host = document.getElementById(\"svh-fixtures\");\r\n    if (!host) return;\r\n    var matchIndex = {};\r\n    var matchOrder = [];\r\n\r\n    function isUs(name) { return \/^\\s*SV\\s*Hage\\b\/i.test(name || \"\"); }\r\n\r\n    function esc(s) {\r\n      return String(s == null ? \"\" : s).replace(\/[&<>\"']\/g, function (c) {\r\n        return { \"&\": \"&amp;\", \"<\": \"&lt;\", \">\": \"&gt;\", '\"': \"&quot;\", \"'\": \"&#39;\" }[c];\r\n      });\r\n    }\r\n\r\n    function fmtDate(d) {\r\n      return d.toLocaleDateString(\"de-DE\", { weekday: \"short\", day: \"2-digit\", month: \"2-digit\", year: \"2-digit\", timeZone: \"Europe\/Berlin\" });\r\n    }\r\n\r\n    function fmtTime(d) {\r\n      return d.toLocaleTimeString(\"de-DE\", { hour: \"2-digit\", minute: \"2-digit\", timeZone: \"Europe\/Berlin\" });\r\n    }\r\n\r\n    function fmtDayShort(d) {\r\n      return d.toLocaleDateString(\"de-DE\", { weekday: \"short\", day: \"2-digit\", month: \"2-digit\", timeZone: \"Europe\/Berlin\" });\r\n    }\r\n\r\n    function dayKey(d) {\r\n      return d.toLocaleDateString(\"en-CA\", { timeZone: \"Europe\/Berlin\" });\r\n    }\r\n\r\n    function dayStart() { var n = new Date(); n.setHours(0, 0, 0, 0); return n.getTime(); }\r\n\r\n    function loadLeague(cfg) {\r\n      return fetch(API + \"\/event\/\" + cfg.event + \"\/phase\/\" + cfg.phase)\r\n        .then(function (r) { return r.json(); })\r\n        .then(function (phase) {\r\n          var min = dayStart();\r\n          var rounds = (phase.rounds || []).slice().sort(function (a, b) {\r\n            return new Date(a.dateFrom) - new Date(b.dateFrom);\r\n          });\r\n          \/* ALLE Runden scannen (nicht nach Runden-Zeitfenster vorfiltern): nur so\r\n             werden Spiele gefunden, die nach hinten verlegt wurden und jetzt nach\r\n             einem spaeteren Spieltag liegen (ihr eigenes Runden-Fenster kann bereits\r\n             vergangen sein). \"Naechster Spieltag\" wird ueber das naechste Spiel-DATUM\r\n             bestimmt, nicht ueber die Runden-Reihenfolge. *\/\r\n          return Promise.all(rounds.map(function (rd) {\r\n            return fetch(API + \"\/event\/\" + cfg.event + \"\/phase\/\" + cfg.phase + \"\/round\/\" + rd.id)\r\n              .then(function (r) { return r.json(); })\r\n              .then(function (data) {\r\n                return (data.matches || []).filter(function (m) {\r\n                  return isUs(m.participantHome && m.participantHome.displayName) ||\r\n                         isUs(m.participantGuest && m.participantGuest.displayName);\r\n                }).map(function (m) {\r\n                  return {\r\n                    id: m.id,\r\n                    db: m.dbId,\r\n                    home: m.participantHome ? m.participantHome.displayName : \"?\",\r\n                    away: m.participantGuest ? m.participantGuest.displayName : \"?\",\r\n                    sh: m.setsHome, sa: m.setsAway, status: m.statusCd,\r\n                    date: new Date(m.datePlanned),\r\n                    roundId: rd.id, roundName: rd.name\r\n                  };\r\n                });\r\n              })\r\n              .catch(function () { return []; });\r\n          })).then(function (perRound) {\r\n            var upcoming = [];\r\n            perRound.forEach(function (arr) {\r\n              arr.forEach(function (m) {\r\n                if (m.date.getTime() >= min && m.status !== \"FINISH\") upcoming.push(m);\r\n              });\r\n            });\r\n            if (!upcoming.length) return { cfg: cfg, round: null, matches: [] };\r\n            upcoming.sort(function (a, b) { return a.date - b.date; });\r\n            var nextId = upcoming[0].roundId;\r\n            var matches = upcoming.filter(function (m) { return m.roundId === nextId; })\r\n              .sort(function (a, b) { return a.date - b.date; });\r\n            return { cfg: cfg, round: { id: nextId, name: upcoming[0].roundName }, matches: matches };\r\n          });\r\n        })\r\n        .catch(function () { return { cfg: cfg, round: null, matches: [] }; });\r\n    }\r\n\r\n    function renderLeague(res) {\r\n      var cfg = res.cfg;\r\n      if (!res.round || !res.matches.length) {\r\n        return '<div class=\"svh-league\" style=\"--lg:' + cfg.color + '\">' +\r\n          '<div class=\"svh-league-head\"><span class=\"svh-league-badge\">' + esc(cfg.key) + '<\/span>' +\r\n          '<span class=\"svh-league-day\">Kein anstehender Spieltag<\/span><\/div><\/div>';\r\n      }\r\n      var first = res.matches[0].date;\r\n      var firstKey = dayKey(first);\r\n      var multiDay = res.matches.some(function (m) { return dayKey(m.date) !== firstKey; });\r\n      var rows = res.matches.map(function (m) {\r\n        var home = isUs(m.home);\r\n        var tagClass = home ? \"svh-fx-home\" : \"svh-fx-away\";\r\n        var tagText = home ? \"Heim\" : \"Ausw\\u00e4rts\";\r\n        var moved = dayKey(m.date) !== firstKey;\r\n        var whenTxt = multiDay ? (fmtDayShort(m.date) + \" \\u00b7 \" + fmtTime(m.date)) : fmtTime(m.date);\r\n        var liveUrl = LIVE_PAGE + m.db + \"\/\" + m.id;\r\n        matchIndex[m.id] = {\r\n          home: m.home, away: m.away, league: cfg.key, color: cfg.color,\r\n          day: res.round.name + \" \\u00b7 \" + fmtDate(m.date), time: fmtTime(m.date),\r\n          live: liveUrl, db: m.db, sh: m.sh, sa: m.sa, status: m.status\r\n        };\r\n        matchOrder.push(m.id);\r\n        return '<div class=\"svh-fx-row\" data-start=\"' + m.date.getTime() + '\" data-db=\"' + esc(String(m.db)) + '\" data-mid=\"' + esc(String(m.id)) + '\" data-home=\"' + esc(m.home) + '\" role=\"button\" tabindex=\"0\">' +\r\n          '<div class=\"svh-fx-teams\"><span class=\"' + (home ? \"us\" : \"\") + '\">' + esc(m.home) + '<\/span>' +\r\n          '<span class=\"svh-vs-mini\">vs<\/span><span class=\"' + (isUs(m.away) ? \"us\" : \"\") + '\">' + esc(m.away) + '<\/span>' +\r\n          '<span class=\"svh-fx-score\"><\/span><\/div>' +\r\n          '<div class=\"svh-fx-meta\"><span class=\"svh-fx-time' + (moved ? \" svh-fx-moved\" : \"\") + '\">' + whenTxt + '<\/span>' +\r\n          '<span class=\"svh-fx-tag ' + tagClass + '\">' + tagText + '<\/span>' +\r\n          '<span class=\"svh-fx-live\"><span class=\"svh-live-dot\"><\/span>Live<\/span>' +\r\n          '<\/div><\/div>';\r\n      }).join(\"\");\r\n      return '<div class=\"svh-league\" style=\"--lg:' + cfg.color + '\">' +\r\n        '<div class=\"svh-league-head\"><span class=\"svh-league-badge\">' + esc(cfg.key) + '<\/span>' +\r\n        '<span class=\"svh-league-day\">' + esc(res.round.name) + ' \\u00b7 ' + fmtDate(first) + '<\/span><\/div>' +\r\n        '<div class=\"svh-cd\" data-target=\"' + first.getTime() + '\">' +\r\n        '<div><b>--<\/b><span>Tage<\/span><\/div><div><b>--<\/b><span>Std<\/span><\/div>' +\r\n        '<div><b>--<\/b><span>Min<\/span><\/div><div><b>--<\/b><span>Sek<\/span><\/div><\/div>' +\r\n        '<div class=\"svh-fx\">' + rows + '<\/div><\/div>';\r\n    }\r\n\r\n    function pad(n) { return (n < 10 ? \"0\" : \"\") + n; }\r\n\r\n    function tick() {\r\n      var now = Date.now();\r\n      host.querySelectorAll(\".svh-cd\").forEach(function (cd) {\r\n        var t = parseInt(cd.getAttribute(\"data-target\"), 10);\r\n        var diff = Math.max(0, t - now);\r\n        var s = Math.floor(diff \/ 1000);\r\n        var d = Math.floor(s \/ 86400); s -= d * 86400;\r\n        var h = Math.floor(s \/ 3600); s -= h * 3600;\r\n        var mi = Math.floor(s \/ 60); s -= mi * 60;\r\n        var b = cd.querySelectorAll(\"b\");\r\n        b[0].textContent = d; b[1].textContent = pad(h); b[2].textContent = pad(mi); b[3].textContent = pad(s);\r\n        cd.classList.toggle(\"is-live\", diff === 0);\r\n      });\r\n      host.querySelectorAll(\".svh-fx-row\").forEach(function (row) {\r\n        var st = parseInt(row.getAttribute(\"data-start\"), 10);\r\n        if (!st) return;\r\n        if (now >= st && !row.classList.contains(\"is-live\")) {\r\n          row.classList.add(\"is-live\");\r\n          fetchLive(row);\r\n        }\r\n      });\r\n    }\r\n\r\n    function load() {\r\n      Promise.all(LEAGUES.map(loadLeague)).then(function (results) {\r\n        matchIndex = {};\r\n        matchOrder = [];\r\n        host.innerHTML = results.map(renderLeague).join(\"\");\r\n        tick();\r\n      }).catch(function () {\r\n        host.innerHTML = '<div class=\"svh-fixtures-loading\">Spielplan konnte nicht geladen werden.<\/div>';\r\n      });\r\n    }\r\n\r\n    function fetchLive(row) {\r\n      var db = row.getAttribute(\"data-db\"), mid = row.getAttribute(\"data-mid\");\r\n      var scoreEl = row.querySelector(\".svh-fx-score\");\r\n      if (!db || !mid || !scoreEl) return;\r\n      fetch(LIVE_API + \"\/match\/\" + db + \"\/0\/\" + mid).then(function (r) { return r.json(); }).then(function (j) {\r\n        var arr = (j && j.data) || [];\r\n        if (!arr.length) { scoreEl.textContent = \"\"; return; }\r\n        var mt = arr[0];\r\n        var mp = mt.matchPlayers || [];\r\n        if (mp.length < 2) { scoreEl.textContent = \"\"; return; }\r\n        var homeName = (row.getAttribute(\"data-home\") || \"\").toLowerCase();\r\n        var hp = mp[0], ap = mp[1];\r\n        if (homeName && (mp[1].playerName || \"\").toLowerCase().indexOf(homeName) === 0) { hp = mp[1]; ap = mp[0]; }\r\n        var useSets = (hp.sets > 0 || ap.sets > 0);\r\n        var score = useSets ? (hp.sets + \":\" + ap.sets) : (hp.legs + \":\" + ap.legs);\r\n        scoreEl.textContent = (mt.statusFinished ? \"Endstand \" : \"\") + score;\r\n      }).catch(function () {});\r\n    }\r\n\r\n    function updateLive() {\r\n      host.querySelectorAll(\".svh-fx-row.is-live\").forEach(fetchLive);\r\n    }\r\n\r\n    var modal = document.getElementById(\"svh-modal\");\r\n    var modalBody = document.getElementById(\"svh-modal-body\");\r\n    var modalSub = document.getElementById(\"svh-modal-sub\");\r\n    var modalTitleEl = document.getElementById(\"svh-modal-title\");\r\n    var modalBadgeEl = modal ? modal.querySelector(\".svh-modal-badge\") : null;\r\n    var modalTimer = null, centerOpen = false;\r\n    var centerMode = \"league\", tourInfo = null, tourMatches = [], tourBracketTimer = null, tourPlaceCache = {};\r\n\r\n    function ribbonHtml(m) {\r\n      var mp = m.matchPlayers || [];\r\n      var live = !!m.statusActive, done = !!m.statusFinished;\r\n      var statusCls = live ? \"s-live\" : (done ? \"s-done\" : \"s-soon\");\r\n      var statusTxt = live ? '<span class=\"svh-live-dot\"><\/span>Live' : (done ? \"Beendet\" : \"Gleich\");\r\n      var lead = -1;\r\n      if (mp.length === 2) {\r\n        var l0 = mp[0].legs || 0, l1 = mp[1].legs || 0;\r\n        if (l0 > l1) lead = 0; else if (l1 > l0) lead = 1;\r\n      }\r\n      var players = mp.map(function (p, i) {\r\n        var us = \/hage\/i.test(p.playerTeamname || \"\") || \/hage\/i.test(p.playerName || \"\");\r\n        var cls = \"svh-ribbon-p\" + (us ? \" us\" : \"\") + (live && m.currentplayerIndex === i ? \" throw\" : \"\") + (done && lead === i ? \" win\" : \"\");\r\n        var meta = \"\";\r\n        if (live) {\r\n          var chip = (m.currentplayerIndex === i) ? '<span class=\"svh-throw-chip\"><span class=\"svh-live-dot\"><\/span>Am Wurf<\/span>' : \"\";\r\n          var last = (p.lastScore != null) ? '<span class=\"svh-ribbon-last\">Wurf ' + p.lastScore + \"<\/span>\" : \"\";\r\n          meta = chip + last + '<span class=\"svh-ribbon-rest\">Rest ' + (p.points != null ? p.points : \"\\u2013\") + \"<\/span>\";\r\n        }\r\n        return '<div class=\"' + cls + '\"><span class=\"svh-ribbon-name\">' + esc(p.playerName || \"\\u2013\") + \"<\/span>\" +\r\n          '<span class=\"svh-ribbon-legs\">' + (p.legs != null ? p.legs : 0) + \"<\/span>\" +\r\n          '<span class=\"svh-ribbon-meta\">' + meta + \"<\/span><\/div>\";\r\n      }).join(\"\");\r\n      var round = [m.mode, m.roundName].filter(Boolean).join(\" \\u00b7 \");\r\n      return '<div class=\"svh-ribbon' + (live ? \" is-live\" : \"\") + '\">' +\r\n        '<div class=\"svh-ribbon-top\"><span class=\"svh-ribbon-board\">' + (m.board ? \"Board \" + esc(String(m.board)) : \"Spiel\") + \"<\/span>\" +\r\n        '<span class=\"svh-ribbon-round\">' + esc(round) + \"<\/span>\" +\r\n        '<span class=\"svh-ribbon-status ' + statusCls + '\">' + statusTxt + \"<\/span><\/div>\" +\r\n        '<div class=\"svh-ribbon-players\">' + players + \"<\/div><\/div>\";\r\n    }\r\n\r\n    function sortRibbons(arr) {\r\n      return arr.slice().sort(function (a, b) {\r\n        var ra = a.statusActive ? 0 : (a.statusFinished ? 2 : 1);\r\n        var rb = b.statusActive ? 0 : (b.statusFinished ? 2 : 1);\r\n        if (ra !== rb) return ra - rb;\r\n        return (parseInt(a.board, 10) || 0) - (parseInt(b.board, 10) || 0);\r\n      });\r\n    }\r\n\r\n    function teamGroupHtml(res) {\r\n      var info = res.info;\r\n      var usHome = isUs(info.home);\r\n      var usName = usHome ? info.home : info.away;\r\n      var opp = usHome ? info.away : info.home;\r\n      var arr = sortRibbons(res.data);\r\n      var anyLive = arr.some(function (m) { return m.statusActive; });\r\n      var isDone = info.status === \"FINISH\";\r\n      var status = anyLive\r\n        ? '<span class=\"svh-ribbon-status s-live\"><span class=\"svh-live-dot\"><\/span>Live<\/span>'\r\n        : ((arr.length || isDone) ? '<span class=\"svh-ribbon-status s-done\">Beendet<\/span>' : '<span class=\"svh-ribbon-status s-soon\">Ausstehend<\/span>');\r\n      var result = \"\";\r\n      if (isDone && (info.sh != null || info.sa != null)) {\r\n        var mine = usHome ? info.sh : info.sa, them = usHome ? info.sa : info.sh;\r\n        result = '<span class=\"svh-center-result\">' + (mine == null ? 0 : mine) + ':' + (them == null ? 0 : them) + '<\/span>';\r\n      }\r\n      var games = arr.length\r\n        ? arr.map(ribbonHtml).join(\"\")\r\n        : '<div class=\"svh-center-empty\">Die Einzelspiele erscheinen, sobald das Match live ist.<\/div>';\r\n      return '<div class=\"svh-center-team\" style=\"--lg:' + info.color + '\">' +\r\n        '<div class=\"svh-center-head\">' +\r\n        '<span class=\"svh-league-badge\">' + esc(info.league) + '<\/span>' +\r\n        '<div class=\"svh-center-title\"><b>' + esc(usName) + '<\/b><span class=\"svh-vs-mini\">vs<\/span>' + esc(opp) + '<\/div>' +\r\n        '<span class=\"svh-center-when\">' + (usHome ? \"Heim\" : \"Ausw\\u00e4rts\") + \" \\u00b7 \" + info.time + '<\/span>' +\r\n        result +\r\n        status +\r\n        '<a class=\"svh-center-ext\" href=\"' + info.live + '\" target=\"_blank\" rel=\"noopener noreferrer\">3K \\u2197<\/a>' +\r\n        '<\/div><div class=\"svh-center-games\">' + games + '<\/div><\/div>';\r\n    }\r\n\r\n    function renderCenter() {\r\n      if (!centerOpen) return;\r\n      var ids = matchOrder.slice();\r\n      if (!ids.length) { modalBody.innerHTML = '<div class=\"svh-modal-empty\">Aktuell ist kein Spieltag angesetzt.<\/div>'; return; }\r\n      Promise.all(ids.map(function (mid) {\r\n        var info = matchIndex[mid];\r\n        return fetch(LIVE_API + \"\/match\/\" + info.db + \"\/0\/\" + mid)\r\n          .then(function (r) { return r.json(); })\r\n          .then(function (j) { return { info: info, data: (j && j.data) || [] }; })\r\n          .catch(function () { return { info: info, data: [] }; });\r\n      })).then(function (results) {\r\n        if (!centerOpen) return;\r\n        modalBody.innerHTML = results.map(teamGroupHtml).join(\"\");\r\n      });\r\n    }\r\n\r\n    function openCenter() {\r\n      if (!modal) return;\r\n      centerOpen = true;\r\n      centerMode = \"league\";\r\n      modal.classList.remove(\"is-board\");\r\n      if (tourBracketTimer) { clearInterval(tourBracketTimer); tourBracketTimer = null; }\r\n      if (modalTitleEl) modalTitleEl.textContent = \"Alle Mannschaften\";\r\n      if (modalBadgeEl) { modalBadgeEl.textContent = \"Live-Center\"; modalBadgeEl.style.removeProperty(\"--lg\"); }\r\n      var first = matchOrder.length ? matchIndex[matchOrder[0]] : null;\r\n      modalSub.textContent = first ? first.day : \"\";\r\n      modalBody.innerHTML = '<div class=\"svh-modal-empty\">Spiele werden geladen \\u2026<\/div>';\r\n      modal.removeAttribute(\"hidden\");\r\n      document.body.style.overflow = \"hidden\";\r\n      renderCenter();\r\n      if (modalTimer) clearInterval(modalTimer);\r\n      modalTimer = setInterval(renderCenter, 9000);\r\n    }\r\n\r\n    function closeModal() {\r\n      if (!modal) return;\r\n      centerOpen = false;\r\n      centerMode = \"league\";\r\n      modal.setAttribute(\"hidden\", \"\");\r\n      modal.classList.remove(\"is-board\");\r\n      document.body.style.overflow = \"\";\r\n      if (modalTimer) { clearInterval(modalTimer); modalTimer = null; }\r\n      if (tourBracketTimer) { clearInterval(tourBracketTimer); tourBracketTimer = null; }\r\n    }\r\n\r\n    \/* --- Vereinsturnier-Live: alle Boards eines Turniers (backend5, dbId 6) --- *\/\r\n    function tLoadBracket(eventId) {\r\n      return fetch(CLUB_API + \"\/event\/\" + eventId).then(function (r) { return r.json(); }).then(function (ev) {\r\n        var phases = (ev && ev.phases) || [];\r\n        return Promise.all(phases.map(function (ph) {\r\n          return fetch(CLUB_API + \"\/event\/\" + eventId + \"\/phase\/\" + ph.id).then(function (r) { return r.json(); }).then(function (pj) {\r\n            var rounds = (pj && pj.rounds) || [];\r\n            return Promise.all(rounds.map(function (rd) {\r\n              return fetch(CLUB_API + \"\/event\/\" + eventId + \"\/phase\/\" + ph.id + \"\/round\/\" + rd.id)\r\n                .then(function (r) { return r.json(); }).then(function (rj) { return (rj && rj.matches) || []; }).catch(function () { return []; });\r\n            }));\r\n          }).catch(function () { return []; });\r\n        })).then(function (perPhase) {\r\n          var all = [];\r\n          perPhase.forEach(function (perRound) { perRound.forEach(function (ms) { (ms || []).forEach(function (m) { all.push(m); }); }); });\r\n          return all;\r\n        });\r\n      }).catch(function () { return []; });\r\n    }\r\n\r\n    function tPlayable(matches) {\r\n      return matches.filter(function (m) {\r\n        return m && m.statusCd !== \"FINISH\" && !m.byeHome && !m.byeAway && m.participantHome && m.participantGuest;\r\n      });\r\n    }\r\n\r\n    \/* Endplatzierung eines beendeten Turniers (Sieger + Podium) *\/\r\n    function tPlacement(ev) {\r\n      if (tourPlaceCache[ev]) return Promise.resolve(tourPlaceCache[ev]);\r\n      return fetch(CLUB_API + \"\/event\/\" + ev + \"\/placement\").then(function (r) { return r.json(); }).then(function (j) {\r\n        var arr = Array.isArray(j) ? j : [];\r\n        if (arr.some(function (x) { return x.comment === \"WINNER\" || x.placeIndex === 1; })) tourPlaceCache[ev] = arr;\r\n        return arr;\r\n      }).catch(function () { return []; });\r\n    }\r\n\r\n    function tPodiumHtml(places) {\r\n      var sorted = places.slice().sort(function (a, b) { return (a.placeIndex || 99) - (b.placeIndex || 99); });\r\n      var winner = sorted[0];\r\n      var medals = { 1: \"\\uD83E\\uDD47\", 2: \"\\uD83E\\uDD48\", 3: \"\\uD83E\\uDD49\" };\r\n      var list = sorted.slice(0, 8).map(function (x) {\r\n        var pi = x.placeIndex || \"\";\r\n        var medal = medals[pi] ? '<span class=\"medal\" aria-hidden=\"true\">' + medals[pi] + '<\/span>' : '';\r\n        return '<li class=\"p' + pi + '\"><span class=\"pl\">' + esc(String(x.place || pi)) + '<\/span>' +\r\n          '<span class=\"svh-ribbon-name\">' + esc(x.participant ? x.participant.displayName : \"?\") + '<\/span>' + medal + '<\/li>';\r\n      }).join(\"\");\r\n      var wname = winner && winner.participant ? winner.participant.displayName : \"?\";\r\n      return '<div class=\"svh-board-summary\"><span class=\"svh-ribbon-status s-done\">Turnier beendet<\/span><span>Endergebnis<\/span><\/div>' +\r\n        '<div class=\"svh-result\"><div class=\"svh-result-winner\"><span class=\"svh-result-trophy\" aria-hidden=\"true\">\\uD83C\\uDFC6<\/span>' +\r\n        '<div><span class=\"svh-result-label\">Turniersieger<\/span><b>' + esc(wname) + '<\/b><\/div><\/div>' +\r\n        '<ol class=\"svh-podium\">' + list + '<\/ol><\/div>';\r\n    }\r\n\r\n    function tBoardCard(c) {\r\n      var m = c.m, live = c.live;\r\n      var isLive = !!(live && live.statusActive) || (!live && m.statusCd === \"ACTIVE\");\r\n      var done = !!(live && live.statusFinished) || m.statusCd === \"FINISH\";\r\n      var board = m.board || (live && live.board) || \"\";\r\n      var roundName = (m.round && m.round.name) || (live && live.roundName) || \"\";\r\n      var statusCls = isLive ? \"s-live\" : (done ? \"s-done\" : \"s-soon\");\r\n      var statusTxt = isLive ? '<span class=\"svh-live-dot\"><\/span>Live' : (done ? \"Beendet\" : \"Bereit\");\r\n      var players, mp = live && live.matchPlayers;\r\n      if (isLive && mp && mp.length >= 2) {\r\n        var cur = live.currentplayerIndex;\r\n        players = mp.map(function (p, i) {\r\n          var throwing = cur === i;\r\n          var chip = throwing ? '<span class=\"svh-throw-chip\"><span class=\"svh-live-dot\"><\/span>Am Wurf<\/span>' : \"\";\r\n          var last = (throwing && p.lastScore != null) ? '<span class=\"svh-ribbon-last\">Wurf ' + p.lastScore + '<\/span>' : \"\";\r\n          var rest = '<span class=\"svh-ribbon-rest\">Rest ' + (p.points != null ? p.points : \"\\u2013\") + '<\/span>';\r\n          return '<div class=\"svh-ribbon-p' + (throwing ? \" throw\" : \"\") + '\"><span class=\"svh-ribbon-name\">' + esc(p.playerName || \"\\u2013\") + '<\/span>' +\r\n            '<span class=\"svh-ribbon-legs\">' + (p.legs != null ? p.legs : 0) + '<\/span>' +\r\n            '<span class=\"svh-ribbon-meta\">' + chip + last + rest + '<\/span><\/div>';\r\n        }).join(\"\");\r\n      } else {\r\n        var useLive = m.statusCd === \"ACTIVE\";\r\n        var lh = (useLive && m.liveLegsHome != null) ? m.liveLegsHome : (m.legsHome || 0);\r\n        var la = (useLive && m.liveLegsAway != null) ? m.liveLegsAway : (m.legsAway || 0);\r\n        players = [[m.participantHome.displayName, lh], [m.participantGuest.displayName, la]].map(function (x) {\r\n          return '<div class=\"svh-ribbon-p\"><span class=\"svh-ribbon-name\">' + esc(x[0] || \"\\u2013\") + '<\/span>' +\r\n            '<span class=\"svh-ribbon-legs\">' + x[1] + '<\/span><span class=\"svh-ribbon-meta\"><\/span><\/div>';\r\n        }).join(\"\");\r\n      }\r\n      return '<div class=\"svh-ribbon svh-board' + (isLive ? \" is-live\" : \"\") + '\">' +\r\n        '<div class=\"svh-ribbon-top\"><span class=\"svh-ribbon-board\">' + (board ? \"Board \" + esc(String(board)) : \"Spiel\") + '<\/span>' +\r\n        '<span class=\"svh-ribbon-round\">' + esc(roundName) + '<\/span>' +\r\n        '<span class=\"svh-ribbon-status ' + statusCls + '\">' + statusTxt + '<\/span><\/div>' +\r\n        '<div class=\"svh-ribbon-players\">' + players + '<\/div><\/div>';\r\n    }\r\n\r\n    \/* Live-Board aus dem Liveticker: Restscore, Am Wurf + letzter Wurf pro Board *\/\r\n    function tLiveCard(live) {\r\n      var mp = live.matchPlayers || [];\r\n      var isLive = !!live.statusActive;\r\n      var done = !!live.statusFinished;\r\n      var statusCls = isLive ? \"s-live\" : (done ? \"s-done\" : \"s-soon\");\r\n      var statusTxt = isLive ? '<span class=\"svh-live-dot\"><\/span>Live' : (done ? \"Beendet\" : \"Bereit\");\r\n      var cur = live.currentplayerIndex;\r\n      var lead = -1;\r\n      if (mp.length === 2) {\r\n        var l0 = mp[0].legs || 0, l1 = mp[1].legs || 0;\r\n        if (l0 > l1) lead = 0; else if (l1 > l0) lead = 1;\r\n      }\r\n      var players = mp.map(function (p, i) {\r\n        var throwing = isLive && cur === i;\r\n        var meta = \"\";\r\n        if (isLive) {\r\n          var chip = throwing ? '<span class=\"svh-throw-chip\"><span class=\"svh-live-dot\"><\/span>Am Wurf<\/span>' : \"\";\r\n          var last = (p.lastScore != null) ? '<span class=\"svh-ribbon-last\">Wurf ' + p.lastScore + '<\/span>' : \"\";\r\n          meta = chip + last + '<span class=\"svh-ribbon-rest\">Rest ' + (p.points != null ? p.points : \"\\u2013\") + '<\/span>';\r\n        } else if (p.dartsTotal > 0) {\r\n          meta = '<span class=\"svh-ribbon-last\">\\u00d8 ' + (p.scoreTotal \/ p.dartsTotal * 3).toFixed(1) + '<\/span>';\r\n        }\r\n        var cls = \"svh-ribbon-p\" + (throwing ? \" throw\" : \"\") + (done && lead === i ? \" win\" : \"\");\r\n        return '<div class=\"' + cls + '\"><span class=\"svh-ribbon-name\">' + esc(p.playerName || \"\\u2013\") + '<\/span>' +\r\n          '<span class=\"svh-ribbon-legs\">' + (p.legs != null ? p.legs : 0) + '<\/span>' +\r\n          '<span class=\"svh-ribbon-meta\">' + meta + '<\/span><\/div>';\r\n      }).join(\"\");\r\n      var round = [live.mode, live.roundName].filter(Boolean).join(\" \\u00b7 \");\r\n      return '<div class=\"svh-ribbon svh-board' + (isLive ? \" is-live\" : \"\") + '\">' +\r\n        '<div class=\"svh-ribbon-top\"><span class=\"svh-ribbon-board\">' + (live.board ? \"Board \" + esc(String(live.board)) : \"Spiel\") + '<\/span>' +\r\n        '<span class=\"svh-ribbon-round\">' + esc(round) + '<\/span>' +\r\n        '<span class=\"svh-ribbon-status ' + statusCls + '\">' + statusTxt + '<\/span><\/div>' +\r\n        '<div class=\"svh-ribbon-players\">' + players + '<\/div><\/div>';\r\n    }\r\n\r\n    function renderTournament() {\r\n      if (!centerOpen || centerMode !== \"tournament\" || !tourInfo) return;\r\n      var db = tourInfo.db || 6;\r\n      \/* Liveticker per GRUPPEN-Key (= Event-Id) liefert ALLE Live-Boards auf einmal *\/\r\n      fetch(LIVE_API + \"\/match\/\" + db + \"\/0\/\" + tourInfo.id)\r\n        .then(function (r) { return r.json(); })\r\n        .then(function (j) { return (j && j.data) || []; })\r\n        .catch(function () { return []; })\r\n        .then(function (boards) {\r\n          if (!centerOpen || centerMode !== \"tournament\") return;\r\n          boards.sort(function (a, b) {\r\n            var ra = a.statusActive ? 0 : (a.statusFinished ? 2 : 1);\r\n            var rb = b.statusActive ? 0 : (b.statusFinished ? 2 : 1);\r\n            if (ra !== rb) return ra - rb;\r\n            return (parseInt(a.board, 10) || 99) - (parseInt(b.board, 10) || 99);\r\n          });\r\n          if (boards.length) {\r\n            var liveN = boards.filter(function (x) { return x.statusActive; }).length;\r\n            var head = '<div class=\"svh-board-summary\">' +\r\n              (liveN ? '<span class=\"svh-ribbon-status s-live\"><span class=\"svh-live-dot\"><\/span>' + liveN + ' live<\/span>' : '<span class=\"svh-ribbon-status s-done\">Gerade beendet<\/span>') +\r\n              '<span>' + boards.length + ' Board' + (boards.length === 1 ? '' : 's') + ' am Oche<\/span><\/div>';\r\n            modalBody.innerHTML = head + '<div class=\"svh-board-grid\">' + boards.map(tLiveCard).join(\"\") + '<\/div>';\r\n            return;\r\n          }\r\n          \/* Kein Live-Board im Ticker -> Bracket-Fallback (Live-Legs statt 0:0) *\/\r\n          var playable = tPlayable(tourMatches);\r\n          var active = playable.filter(function (m) { return m.statusCd === \"ACTIVE\"; });\r\n          if (active.length) {\r\n            active.sort(function (a, b) { return (parseInt(a.board, 10) || 99) - (parseInt(b.board, 10) || 99); });\r\n            var head2 = '<div class=\"svh-board-summary\"><span class=\"svh-ribbon-status s-live\"><span class=\"svh-live-dot\"><\/span>' + active.length + ' live<\/span><span>Live-Legs<\/span><\/div>';\r\n            modalBody.innerHTML = head2 + '<div class=\"svh-board-grid\">' + active.map(function (m) { return tBoardCard({ m: m, live: null }); }).join(\"\") + '<\/div>';\r\n            return;\r\n          }\r\n          \/* Turnier evtl. beendet -> Endergebnis (Sieger + Podium) *\/\r\n          tPlacement(tourInfo.id).then(function (places) {\r\n            if (!centerOpen || centerMode !== \"tournament\") return;\r\n            var ranked = places.filter(function (x) { return x.participant && (x.place || x.placeIndex); });\r\n            var hasWinner = places.some(function (x) { return x.comment === \"WINNER\" || x.placeIndex === 1; });\r\n            if (ranked.length && hasWinner) {\r\n              modalBody.innerHTML = tPodiumHtml(ranked);\r\n              return;\r\n            }\r\n            if (playable.length) {\r\n              var next = playable.slice().sort(function (a, b) { return (parseInt(a.board, 10) || 99) - (parseInt(b.board, 10) || 99); }).slice(0, 8);\r\n              var head3 = '<div class=\"svh-board-summary\"><span class=\"svh-ribbon-status s-soon\">Gleich geht\\u2019s los<\/span><span>' + playable.length + ' Spiele im Turnier<\/span><\/div>';\r\n              modalBody.innerHTML = head3 + '<div class=\"svh-board-grid\">' + next.map(function (m) { return tBoardCard({ m: m, live: null }); }).join(\"\") + '<\/div>';\r\n              return;\r\n            }\r\n            modalBody.innerHTML = '<div class=\"svh-modal-empty\">' + esc(tourInfo.startText || \"Die Boards erscheinen live, sobald das Turnier startet.\") + '<\/div>';\r\n          });\r\n        });\r\n    }\r\n\r\n    function tRefreshBracket() {\r\n      if (!centerOpen || centerMode !== \"tournament\" || !tourInfo) return Promise.resolve();\r\n      return tLoadBracket(tourInfo.id).then(function (ms) { if (centerMode === \"tournament\") tourMatches = ms; });\r\n    }\r\n\r\n    function openTournament(info) {\r\n      if (!modal || !info || !info.id) return;\r\n      centerOpen = true;\r\n      centerMode = \"tournament\";\r\n      tourInfo = info;\r\n      tourMatches = [];\r\n      modal.classList.add(\"is-board\");\r\n      if (modalTitleEl) modalTitleEl.textContent = info.name || \"Vereinsturnier\";\r\n      if (modalBadgeEl) { modalBadgeEl.textContent = \"Turnier-Live\"; modalBadgeEl.style.setProperty(\"--lg\", info.color || \"#e8b64b\"); }\r\n      modalSub.textContent = info.sub || \"Live \\u00b7 alle Boards\";\r\n      modalBody.innerHTML = '<div class=\"svh-modal-empty\">Boards werden geladen \\u2026<\/div>';\r\n      modal.removeAttribute(\"hidden\");\r\n      document.body.style.overflow = \"hidden\";\r\n      tRefreshBracket().then(renderTournament);\r\n      if (modalTimer) clearInterval(modalTimer);\r\n      modalTimer = setInterval(renderTournament, 9000);\r\n      if (tourBracketTimer) clearInterval(tourBracketTimer);\r\n      tourBracketTimer = setInterval(tRefreshBracket, 20000);\r\n    }\r\n    window.svhOpenTournamentLive = openTournament;\r\n\r\n    \/* --- Einzel-Match-Live: ein bestimmtes Team-Match (z. B. NDV-Pokal, backend-ddv dbId 10) --- *\/\r\n    var matchLiveInfo = null;\r\n    function renderMatchLive() {\r\n      if (!centerOpen || centerMode !== \"match\" || !matchLiveInfo) return;\r\n      fetch(LIVE_API + \"\/match\/\" + matchLiveInfo.db + \"\/0\/\" + matchLiveInfo.match)\r\n        .then(function (r) { return r.json(); })\r\n        .then(function (j) { return (j && j.data) || []; })\r\n        .catch(function () { return []; })\r\n        .then(function (games) {\r\n          if (!centerOpen || centerMode !== \"match\") return;\r\n          if (!games.length) {\r\n            modalBody.innerHTML = '<div class=\"svh-modal-empty\">' + esc(matchLiveInfo.startText || \"Die Spiele erscheinen live, sobald gespielt wird.\") + '<\/div>';\r\n            return;\r\n          }\r\n          modalBody.innerHTML = teamGroupHtml({ info: matchLiveInfo.info, data: games });\r\n        });\r\n    }\r\n\r\n    function openMatchLive(info) {\r\n      if (!modal || !info || !info.match) return;\r\n      centerOpen = true;\r\n      centerMode = \"match\";\r\n      matchLiveInfo = info;\r\n      modal.classList.remove(\"is-board\");\r\n      if (tourBracketTimer) { clearInterval(tourBracketTimer); tourBracketTimer = null; }\r\n      if (modalTitleEl) modalTitleEl.textContent = info.name || \"Live-Match\";\r\n      if (modalBadgeEl) { modalBadgeEl.textContent = info.badge || \"Pokal-Live\"; modalBadgeEl.style.setProperty(\"--lg\", info.color || \"#d94a5f\"); }\r\n      modalSub.textContent = info.sub || \"\";\r\n      modalBody.innerHTML = '<div class=\"svh-modal-empty\">Spiele werden geladen \\u2026<\/div>';\r\n      modal.removeAttribute(\"hidden\");\r\n      document.body.style.overflow = \"hidden\";\r\n      renderMatchLive();\r\n      if (modalTimer) clearInterval(modalTimer);\r\n      modalTimer = setInterval(renderMatchLive, 9000);\r\n    }\r\n    window.svhOpenMatchLive = openMatchLive;\r\n\r\n    host.addEventListener(\"click\", function (e) {\r\n      var row = e.target.closest && e.target.closest(\".svh-fx-row\");\r\n      if (row) openCenter();\r\n    });\r\n    host.addEventListener(\"keydown\", function (e) {\r\n      if (e.key !== \"Enter\" && e.key !== \" \") return;\r\n      var row = e.target.closest && e.target.closest(\".svh-fx-row\");\r\n      if (row) { e.preventDefault(); openCenter(); }\r\n    });\r\n    var centerBtn = document.getElementById(\"svh-livecenter\");\r\n    if (centerBtn) centerBtn.addEventListener(\"click\", openCenter);\r\n    if (modal) {\r\n      modal.addEventListener(\"click\", function (e) { if (e.target.hasAttribute(\"data-close\")) closeModal(); });\r\n      document.addEventListener(\"keydown\", function (e) { if (e.key === \"Escape\") closeModal(); });\r\n    }\r\n\r\n    load();\r\n    setInterval(tick, 1000);\r\n    setInterval(load, 15 * 60 * 1000);\r\n    setInterval(updateLive, 20000);\r\n  })();\r\n\r\n  \/* \"Heute\"-Highlight - Spiel oder Turnier am heutigen Tag (DVWE-Liga + Vereinsturniere, mandant 2339) *\/\r\n  (function () {\r\n    if (window.SVH_MC) return; \/* Addon aktiv \u2192 \"Heute\" kommt aus dem Plugin *\/\r\n    var DVWE = \"https:\/\/backend-ddv.3k-darts.com\/2k-backend-ddv\/api\/v1\/frontend\";\r\n    var CLUB = \"https:\/\/backend5.3k-darts.com\/2k-backend5\/api\/v1\/frontend\";\r\n    var CLUB_MANDANT = 2339;\r\n    var LEAGUES = [\r\n      { key: \"KL 01\", color: \"#1d9bd7\", event: 1442, phase: 2136, label: \"Kreisliga 1\" },\r\n      { key: \"KK 06\", color: \"#d9a441\", event: 1455, phase: 2149, label: \"Kreisklasse 6\" }\r\n    ];\r\n    \/* Einmaliges Highlight-Match (NDV 8er-Pokal, backend-ddv dbId 10). Erscheint nur am Spieltag. *\/\r\n    var POKAL = {\r\n      date: \"2026-08-16\", time: \"14:00\", db: 10, event: 1710, phase: 2411, round: 36030, match: 1391888,\r\n      home: \"TuS Nenndorf I\", guest: \"SV Hage I\", title: \"NDV 8er-Pokal\", roundName: \"Letzte 128\",\r\n      color: \"#d94a5f\", live: \"https:\/\/live.3k-darts.com\/event\/10\/1710\"\r\n    };\r\n    var host = document.getElementById(\"svh-today\");\r\n    if (!host) return;\r\n\r\n    function esc(s) { return String(s == null ? \"\" : s).replace(\/[&<>\"']\/g, function (c) { return { \"&\": \"&amp;\", \"<\": \"&lt;\", \">\": \"&gt;\", '\"': \"&quot;\", \"'\": \"&#39;\" }[c]; }); }\r\n    function isUs(n) { return \/^\\s*SV\\s*Hage\\b\/i.test(n || \"\"); }\r\n    function ymd(d) { return new Date(d).toLocaleDateString(\"en-CA\", { timeZone: \"Europe\/Berlin\" }); }\r\n    function hhmm(d) { return new Date(d).toLocaleTimeString(\"de-DE\", { hour: \"2-digit\", minute: \"2-digit\", timeZone: \"Europe\/Berlin\" }); }\r\n    var TODAY = ymd(new Date());\r\n\r\n    function clubToday() {\r\n      return fetch(CLUB + \"\/event\/page?mandantKey=\" + CLUB_MANDANT + \"&eventTypeCd=TOURNAMENT&size=100&favoriteIds=\")\r\n        .then(function (r) { return r.json(); })\r\n        .then(function (j) {\r\n          var today = (j.content || []).filter(function (e) { return ymd(e.datetime) === TODAY; });\r\n          return Promise.all(today.map(function (e) {\r\n            var item = { kind: \"tournament\", id: e.id, db: e.dbId || 6, status: e.statusCd, ms: new Date(e.datetime).getTime(), name: e.name, time: hhmm(e.datetime),\r\n              badge: \"Turnier\", kindLabel: e.eventKindCd === \"DOUBLE\" ? \"Doppel\" : \"Einzel\",\r\n              venue: e.playingVenue || e.locationCity || \"\", color: e.color || \"#e8b64b\",\r\n              link: \"https:\/\/2k-dart-software.com\/frontend\/events\/\" + (e.dbId || 6) + \"\/event\/\" + e.id };\r\n            if (e.statusCd !== \"FINISH\") return Promise.resolve(item);\r\n            return fetch(CLUB + \"\/event\/\" + e.id + \"\/placement\").then(function (r) { return r.json(); }).then(function (pl) {\r\n              var w = (Array.isArray(pl) ? pl : []).filter(function (x) { return x.comment === \"WINNER\" || x.placeIndex === 1; })[0];\r\n              if (w && w.participant) item.winner = w.participant.displayName;\r\n              return item;\r\n            }).catch(function () { return item; });\r\n          }));\r\n        }).catch(function () { return []; });\r\n    }\r\n\r\n    function leagueToday(cfg) {\r\n      return fetch(DVWE + \"\/event\/\" + cfg.event + \"\/phase\/\" + cfg.phase)\r\n        .then(function (r) { return r.json(); })\r\n        .then(function (ph) {\r\n          var rounds = (ph.rounds || []).filter(function (r) { return ymd(r.dateFrom) <= TODAY && ymd(r.dateTo) >= TODAY; });\r\n          return Promise.all(rounds.map(function (rd) {\r\n            return fetch(DVWE + \"\/event\/\" + cfg.event + \"\/phase\/\" + cfg.phase + \"\/round\/\" + rd.id).then(function (r) { return r.json(); }).then(function (rj) { return rj.matches || []; }).catch(function () { return []; });\r\n          }));\r\n        }).then(function (lists) {\r\n          var out = [];\r\n          lists.forEach(function (ms) { ms.forEach(function (m) {\r\n            if (ymd(m.datePlanned) !== TODAY) return;\r\n            var home = m.participantHome && m.participantHome.displayName, away = m.participantGuest && m.participantGuest.displayName;\r\n            if (!isUs(home) && !isUs(away)) return;\r\n            out.push({ kind: \"league\", ms: new Date(m.datePlanned).getTime(), name: cfg.label, badge: cfg.key, color: cfg.color,\r\n              time: hhmm(m.datePlanned), home: home || \"?\", away: away || \"?\", heim: isUs(home),\r\n              status: m.statusCd, sh: m.setsHome, sa: m.setsAway, lh: m.legsHome, la: m.legsAway,\r\n              link: \"https:\/\/live.3k-darts.com\/event\/\" + m.dbId + \"\/\" + m.id });\r\n          }); });\r\n          return out;\r\n        }).catch(function () { return []; });\r\n    }\r\n\r\n    function pokalToday() {\r\n      if (TODAY !== POKAL.date) return Promise.resolve([]);\r\n      var ms = new Date(POKAL.date + \"T\" + POKAL.time + \":00\").getTime();\r\n      var base = { kind: \"pokal\", ms: ms, badge: \"Pokal\", color: POKAL.color, time: POKAL.time,\r\n        home: POKAL.home, guest: POKAL.guest, name: POKAL.title, roundName: POKAL.roundName,\r\n        link: POKAL.live, status: \"OPEN\" };\r\n      return fetch(DVWE + \"\/event\/\" + POKAL.event + \"\/phase\/\" + POKAL.phase + \"\/round\/\" + POKAL.round)\r\n        .then(function (r) { return r.json(); })\r\n        .then(function (rj) {\r\n          var m = (rj.matches || []).filter(function (x) { return x.id === POKAL.match; })[0];\r\n          if (m) {\r\n            base.status = m.statusCd;\r\n            if (m.statusCd === \"FINISH\") {\r\n              var lh = m.legsHome, la = m.legsAway;\r\n              base.winner = lh > la ? (m.participantHome && m.participantHome.displayName)\r\n                : (la > lh ? (m.participantGuest && m.participantGuest.displayName) : null);\r\n              base.result = (lh == null ? 0 : lh) + \":\" + (la == null ? 0 : la);\r\n            }\r\n          }\r\n          return [base];\r\n        }).catch(function () { return [base]; });\r\n    }\r\n\r\n    function render(items) {\r\n      items.sort(function (a, b) { return a.ms - b.ms; });\r\n      if (!items.length) { host.innerHTML = \"\"; host.setAttribute(\"hidden\", \"\"); return; }\r\n      var cards = items.map(function (it) {\r\n        var top = '<div class=\"svh-today-top\"><span class=\"svh-league-badge\">' + esc(it.badge) + '<\/span>' + (it.time ? '<span class=\"svh-today-time\">' + esc(it.time) + ' Uhr<\/span>' : '') + '<\/div>';\r\n        var title, meta;\r\n        if (it.kind === \"league\") {\r\n          title = '<div class=\"svh-today-title\"><span class=\"' + (isUs(it.home) ? \"us\" : \"\") + '\">' + esc(it.home) + '<\/span><span class=\"svh-vs-mini\">vs<\/span><span class=\"' + (isUs(it.away) ? \"us\" : \"\") + '\">' + esc(it.away) + '<\/span><\/div>';\r\n          var lgEnd = \"\";\r\n          if (it.status === \"FINISH\") {\r\n            var useSets = (it.sh > 0 || it.sa > 0);\r\n            var a = useSets ? it.sh : it.lh, b = useSets ? it.sa : it.la;\r\n            var mine = it.heim ? a : b, opp = it.heim ? b : a;\r\n            lgEnd = '<span class=\"svh-today-result score\">Ergebnis ' + (mine == null ? 0 : mine) + ':' + (opp == null ? 0 : opp) + '<\/span>';\r\n          }\r\n          meta = '<div class=\"svh-today-meta\"><span>' + esc(it.name) + '<\/span><span>\\u00b7<\/span><span>' + (it.heim ? \"Heimspiel\" : \"Ausw\\u00e4rts\") + '<\/span>' + lgEnd + '<\/div>';\r\n        } else if (it.kind === \"pokal\") {\r\n          title = '<div class=\"svh-today-title\"><span class=\"' + (isUs(it.home) ? \"us\" : \"\") + '\">' + esc(it.home) + '<\/span><span class=\"svh-vs-mini\">vs<\/span><span class=\"' + (isUs(it.guest) ? \"us\" : \"\") + '\">' + esc(it.guest) + '<\/span><\/div>';\r\n          var pEnd = (it.status === \"FINISH\")\r\n            ? (it.winner ? '<span class=\"svh-today-result\">\\uD83C\\uDFC6 Sieger: ' + esc(it.winner) + '<\/span>' : '<span class=\"svh-today-result score\">Ergebnis ' + esc(it.result || \"\") + '<\/span>')\r\n            : '<span class=\"svh-today-golive\">Live verfolgen \\u203a<\/span>';\r\n          meta = '<div class=\"svh-today-meta\"><span>' + esc(it.name) + '<\/span><span>\\u00b7<\/span><span>' + esc(it.roundName) + '<\/span>' + pEnd + '<\/div>';\r\n        } else {\r\n          title = '<div class=\"svh-today-title\">' + esc(it.name) + '<\/div>';\r\n          var tEnd = (it.status === \"FINISH\" && it.winner)\r\n            ? '<span class=\"svh-today-result\">\\uD83C\\uDFC6 Sieger: ' + esc(it.winner) + '<\/span>'\r\n            : '<span class=\"svh-today-golive\">Live verfolgen \\u203a<\/span>';\r\n          meta = '<div class=\"svh-today-meta\"><span>' + esc(it.kindLabel) + '<\/span>' + (it.venue ? '<span>\\u00b7<\/span><span>' + esc(it.venue) + '<\/span>' : '') + tEnd + '<\/div>';\r\n        }\r\n        var tourAttrs = it.kind === \"tournament\"\r\n          ? ' data-tour-id=\"' + esc(String(it.id)) + '\" data-tour-db=\"' + esc(String(it.db || 6)) + '\" data-tour-name=\"' + esc(it.name) + '\" data-tour-color=\"' + esc(it.color) + '\" data-tour-time=\"' + esc(it.time || \"\") + '\"'\r\n          : (it.kind === \"pokal\" ? ' data-pokal=\"1\"' : '');\r\n        return '<a class=\"svh-today-card\" style=\"--lg:' + esc(it.color) + '\" href=\"' + esc(it.link) + '\" target=\"_blank\" rel=\"noopener\"' + tourAttrs + '>' + top + title + meta + '<\/a>';\r\n      }).join(\"\");\r\n      var heading = items.length > 1 ? \"Heute am Oche\" : (items[0].kind === \"league\" ? \"Heute ist Spieltag\" : (items[0].kind === \"pokal\" ? \"Heute im Pokal\" : \"Heute Vereinsturnier\"));\r\n      host.innerHTML = '<div class=\"svh-today-head\"><span class=\"svh-today-live\"><span class=\"svh-live-dot\"><\/span>Heute<\/span><b>' + heading + '<\/b><\/div><div class=\"svh-today-list\">' + cards + '<\/div>';\r\n      host.removeAttribute(\"hidden\");\r\n    }\r\n\r\n    host.addEventListener(\"click\", function (e) {\r\n      var pk = e.target.closest && e.target.closest(\".svh-today-card[data-pokal]\");\r\n      if (pk && typeof window.svhOpenMatchLive === \"function\") {\r\n        e.preventDefault();\r\n        window.svhOpenMatchLive({\r\n          match: POKAL.match, db: POKAL.db,\r\n          name: POKAL.title, badge: \"Pokal-Live\", color: POKAL.color,\r\n          sub: POKAL.time + \" Uhr \\u00b7 \" + POKAL.home + \" vs \" + POKAL.guest + \" \\u00b7 \" + POKAL.roundName,\r\n          startText: \"Startet um \" + POKAL.time + \" Uhr \\u2013 die Spiele erscheinen live, sobald gespielt wird.\",\r\n          info: { home: POKAL.home, away: POKAL.guest, color: POKAL.color, league: POKAL.title + \" \\u00b7 \" + POKAL.roundName,\r\n            time: POKAL.time + \" Uhr\", live: POKAL.live, status: \"\", sh: null, sa: null }\r\n        });\r\n        return;\r\n      }\r\n      var card = e.target.closest && e.target.closest(\".svh-today-card[data-tour-id]\");\r\n      if (!card || typeof window.svhOpenTournamentLive !== \"function\") return;\r\n      e.preventDefault();\r\n      var t = card.getAttribute(\"data-tour-time\");\r\n      window.svhOpenTournamentLive({\r\n        id: card.getAttribute(\"data-tour-id\"),\r\n        db: card.getAttribute(\"data-tour-db\") || 6,\r\n        name: card.getAttribute(\"data-tour-name\"),\r\n        color: card.getAttribute(\"data-tour-color\"),\r\n        sub: t ? (t + \" Uhr \\u00b7 Live \\u00b7 alle Boards\") : \"Live \\u00b7 alle Boards\",\r\n        startText: t ? (\"Startet um \" + t + \" Uhr \\u2013 die Boards erscheinen live, sobald gespielt wird.\") : \"Die Boards erscheinen live, sobald das Turnier startet.\"\r\n      });\r\n    });\r\n\r\n    function loadToday() {\r\n      Promise.all([clubToday(), pokalToday()].concat(LEAGUES.map(leagueToday))).then(function (parts) {\r\n        render(parts.reduce(function (a, b) { return a.concat(b); }, []));\r\n      }).catch(function () { host.setAttribute(\"hidden\", \"\"); });\r\n    }\r\n    loadToday();\r\n    setInterval(loadToday, 5 * 60 * 1000);\r\n  })();\r\n\r\n  \/* News - letzte Beitraege aus der WordPress REST-API *\/\r\n  (function () {\r\n    var API = \"https:\/\/dart.scubyhome.de\/wordpress\/?rest_route=\/wp\/v2\/posts\";\r\n    var grid = document.getElementById(\"svh-news-grid\");\r\n    if (!grid) return;\r\n    var modal = document.getElementById(\"svh-news-modal\");\r\n    var mMedia = document.getElementById(\"svh-nm-media\");\r\n    var mDate = document.getElementById(\"svh-nm-date\");\r\n    var mTitle = document.getElementById(\"svh-nm-title\");\r\n    var mContent = document.getElementById(\"svh-nm-content\");\r\n    var posts = {};\r\n\r\n    function esc(s) {\r\n      return String(s == null ? \"\" : s).replace(\/[&<>\"']\/g, function (c) {\r\n        return { \"&\": \"&amp;\", \"<\": \"&lt;\", \">\": \"&gt;\", '\"': \"&quot;\", \"'\": \"&#39;\" }[c];\r\n      });\r\n    }\r\n    function decode(html) { var t = document.createElement(\"textarea\"); t.innerHTML = html || \"\"; return t.value; }\r\n    function stripTags(html) { var d = document.createElement(\"div\"); d.innerHTML = html || \"\"; return (d.textContent || \"\").replace(\/\\s+\/g, \" \").trim(); }\r\n    function fmtDate(iso) { try { return new Date(iso).toLocaleDateString(\"de-DE\", { day: \"2-digit\", month: \"long\", year: \"numeric\" }); } catch (e) { return \"\"; } }\r\n    function postImage(p) { try { return p._embedded[\"wp:featuredmedia\"][0].source_url; } catch (e) { return \"\"; } }\r\n\r\n    function cardHtml(p) {\r\n      var title = decode(p.title && p.title.rendered || \"\");\r\n      var excerpt = stripTags(p.excerpt && p.excerpt.rendered || \"\");\r\n      if (excerpt.length > 160) excerpt = excerpt.slice(0, 160).trim() + \" \\u2026\";\r\n      var image = postImage(p);\r\n      var media = image\r\n        ? '<div class=\"svh-post-media\"><img decoding=\"async\" src=\"' + esc(image) + '\" alt=\"' + esc(title) + '\" loading=\"lazy\"><\/div>'\r\n        : '<div class=\"svh-post-media\"><div class=\"svh-post-fallback\">SV Hage Darts<\/div><\/div>';\r\n      return '<article class=\"svh-card svh-post\">' + media +\r\n        '<div class=\"svh-post-body\">' +\r\n        '<div class=\"svh-post-meta\"><span class=\"svh-tag\">Beitrag<\/span><span class=\"svh-post-date\">' + esc(fmtDate(p.date)) + '<\/span><\/div>' +\r\n        '<h3>' + esc(title) + '<\/h3>' +\r\n        '<p class=\"svh-post-excerpt\">' + esc(excerpt) + '<\/p>' +\r\n        '<a class=\"svh-post-link\" data-post=\"' + p.id + '\">Weiterlesen <span aria-hidden=\"true\">&rarr;<\/span><\/a>' +\r\n        '<\/div><\/article>';\r\n    }\r\n\r\n    function openPost(id) {\r\n      var p = posts[id];\r\n      if (!p || !modal) return;\r\n      var image = postImage(p);\r\n      mMedia.innerHTML = image ? '<img decoding=\"async\" src=\"' + esc(image) + '\" alt=\"' + esc(decode(p.title.rendered)) + '\">' : \"\";\r\n      mMedia.style.display = image ? \"\" : \"none\";\r\n      mDate.textContent = fmtDate(p.date);\r\n      mTitle.textContent = decode(p.title && p.title.rendered || \"\");\r\n      mContent.innerHTML = (p.content && p.content.rendered) || \"<p>Kein Inhalt verf\\u00fcgbar.<\/p>\";\r\n      modal.removeAttribute(\"hidden\");\r\n      document.body.style.overflow = \"hidden\";\r\n    }\r\n    function closePost() { if (!modal) return; modal.setAttribute(\"hidden\", \"\"); document.body.style.overflow = \"\"; }\r\n\r\n    fetch(API + \"&per_page=3&_embed=1\", { headers: { \"Accept\": \"application\/json\" } })\r\n      .then(function (r) { return r.json(); })\r\n      .then(function (items) {\r\n        if (!Array.isArray(items) || !items.length) {\r\n          grid.innerHTML = '<div class=\"svh-news-state\">Aktuell sind keine Beitr\\u00e4ge ver\\u00f6ffentlicht.<\/div>';\r\n          return;\r\n        }\r\n        posts = {};\r\n        items.forEach(function (p) { posts[p.id] = p; });\r\n        grid.innerHTML = items.map(cardHtml).join(\"\");\r\n      })\r\n      .catch(function () {\r\n        grid.innerHTML = '<div class=\"svh-news-state\">Beitr\\u00e4ge konnten nicht geladen werden.<\/div>';\r\n      });\r\n\r\n    grid.addEventListener(\"click\", function (e) {\r\n      var t = e.target.closest && e.target.closest(\".svh-post-link\");\r\n      if (t && t.getAttribute(\"data-post\")) openPost(t.getAttribute(\"data-post\"));\r\n    });\r\n    if (modal) {\r\n      modal.addEventListener(\"click\", function (e) { if (e.target.hasAttribute(\"data-nclose\")) closePost(); });\r\n      document.addEventListener(\"keydown\", function (e) { if (e.key === \"Escape\") closePost(); });\r\n    }\r\n  })();\r\n\r\n  \/* Storm-Spruch (rotierend) *\/\r\n  (function () {\r\n    var el = document.getElementById(\"svh-spruch\");\r\n    if (!el) return;\r\n    var sprueche = [\"Ride the Storm.\", \"Na Hage \u2013 keen Weg tor\u00fcgg.\", \"Sturm. Spiel. Gemeinschaft.\", \"Jeder Pfeil z\u00e4hlt.\", \"Von jung bis alt \u2013 alle am Oche.\", \"Willkommen, wer du auch bist.\"];\r\n    var i = 0;\r\n    setInterval(function () {\r\n      el.classList.add(\"is-out\");\r\n      setTimeout(function () {\r\n        i = (i + 1) % sprueche.length;\r\n        el.textContent = sprueche[i];\r\n        el.classList.remove(\"is-out\");\r\n      }, 500);\r\n    }, 4500);\r\n  })();\r\n\r\n  \/* Dezente Scroll-Reveal-Animationen *\/\r\n  (function () {\r\n    if (!(\"IntersectionObserver\" in window)) return;\r\n    if (window.matchMedia && window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches) return;\r\n    var els = document.querySelectorAll(\r\n      \"#svh-home .svh-head, #svh-home .svh-stage, #svh-home .svh-news-grid, \" +\r\n      \"#svh-home .svh-record, #svh-home .svh-split > .svh-card, #svh-home .svh-club, \" +\r\n      \"#svh-home .svh-clublink, #svh-home .svh-ndm, #svh-home .svh-sponsors, #svh-home .svh-table-card\"\r\n    );\r\n    els.forEach(function (el) { el.classList.add(\"svh-reveal\"); });\r\n    var io = new IntersectionObserver(function (entries) {\r\n      entries.forEach(function (e) {\r\n        if (e.isIntersecting) { e.target.classList.add(\"is-in\"); io.unobserve(e.target); }\r\n      });\r\n    }, { threshold: 0.12, rootMargin: \"0px 0px -8% 0px\" });\r\n    els.forEach(function (el) { io.observe(el); });\r\n  })();\r\n\r\n  \/* \"Top\"-Button am Ende jeder Sektion *\/\r\n  (function () {\r\n    var svg = '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M12 5l7 7-1.4 1.4L13 9.8V20h-2V9.8l-4.6 4.6L5 12z\"\/><\/svg>';\r\n    document.querySelectorAll(\"#svh-home .svh-section\").forEach(function (sec) {\r\n      var row = document.createElement(\"div\");\r\n      row.className = \"svh-wrap svh-top-row\";\r\n      row.innerHTML = '<a href=\"#svh-top\" class=\"svh-top-btn\">' + svg + 'Top<\/a>';\r\n      sec.appendChild(row);\r\n    });\r\n    document.addEventListener(\"click\", function (e) {\r\n      var btn = e.target.closest && e.target.closest(\".svh-top-btn\");\r\n      if (!btn) return;\r\n      e.preventDefault();\r\n      var top = document.getElementById(\"svh-top\");\r\n      if (top && top.scrollIntoView) top.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\r\n      else window.scrollTo({ top: 0, behavior: \"smooth\" });\r\n    });\r\n  })();\r\n\r\n  \/* Spielerprofil-Modal (Klick auf Spielerkarte) *\/\r\n  (function () {\r\n    var API = \"https:\/\/backend-ddv.3k-darts.com\/2k-backend-ddv\/api\/v1\/frontend\";\r\n    \/* Statistik-Quellen werden dynamisch ermittelt: \u00fcber die Team-Suche werden\r\n       ALLE Events aller SV-Hage-Teams (Liga + Pokale, alle Saisons) gefunden,\r\n       damit die Bestleistungen wirklich \u00fcber alle Wettbewerbe aggregieren. *\/\r\n    var SEASON_DEFS = [\r\n      { id: 9, label: \"2025\/26\", fallback: [275] },\r\n      { id: 34, label: \"2026\/27\", fallback: [1442, 1455, 1432, 1433, 1469, 1472, 1710] }\r\n    ];\r\n    var STAT_REGION = 20;         \/\/ DVWE\r\n    var STAT_FALLBACK = [275, 1432, 1433, 1442, 1455, 1469, 1472, 1710]; \/\/ Bestleistungen-Fallback (Karriere)\r\n    \/* Vereinsturniere laufen auf einem eigenen Mandanten (backend5) - Bestleistungen\r\n       werden getrennt von DVWE aggregiert und in der Karte gesondert ausgewiesen. *\/\r\n    var CLUB_API = \"https:\/\/backend5.3k-darts.com\/2k-backend5\/api\/v1\/frontend\";\r\n    var CLUB_MANDANT = 2339;\r\n    var CLUB_PAGE = 25;\r\n    var grid = document.getElementById(\"svh-players\");\r\n    var modal = document.getElementById(\"svh-player-modal\");\r\n    var body = document.getElementById(\"svh-pm-body\");\r\n    if (!grid || !modal || !body) return;\r\n\r\n    var statCache = null, seasonsCache = null, phaseCache = {}, roundCache = {};\r\n    var resultsByEvent = {}, participantMatchCache = {}, reportCache = {};\r\n    var clubEventsCache = null, clubStatCache = null;\r\n    var clubEventListCache = null, clubPartCache = {}, clubPMCache = {};\r\n\r\n    function esc(s) { return String(s == null ? \"\" : s).replace(\/[&<>\"']\/g, function (c) { return { \"&\": \"&amp;\", \"<\": \"&lt;\", \">\": \"&gt;\", '\"': \"&quot;\", \"'\": \"&#39;\" }[c]; }); }\r\n    function norm(n) { return String(n || \"\").toLowerCase().replace(\/\u00e4\/g, \"ae\").replace(\/\u00f6\/g, \"oe\").replace(\/\u00fc\/g, \"ue\").replace(\/\u00df\/g, \"ss\").replace(\/[^a-z0-9]\/g, \"\"); }\r\n    function ini(n) { return n.split(\" \").map(function (p) { return p.charAt(0); }).join(\"\").substring(0, 2).toUpperCase(); }\r\n    function fmtDate(d) { return d.toLocaleDateString(\"de-DE\", { weekday: \"short\", day: \"2-digit\", month: \"2-digit\", year: \"2-digit\", timeZone: \"Europe\/Berlin\" }); }\r\n    function fmtTime(d) { return d.toLocaleTimeString(\"de-DE\", { hour: \"2-digit\", minute: \"2-digit\", timeZone: \"Europe\/Berlin\" }); }\r\n\r\n    function loadSeasons() {\r\n      if (seasonsCache) return seasonsCache;\r\n      seasonsCache = Promise.all(SEASON_DEFS.map(function (sd) {\r\n        return fetch(API + \"\/mandant\/570\/search\", {\r\n          method: \"POST\", headers: { \"Content-Type\": \"application\/json\" },\r\n          body: JSON.stringify({ type: \"TEAM\", seasonId: sd.id, regionId: STAT_REGION, name: \"Hage\" })\r\n        }).then(function (r) { return r.json(); }).then(function (j) {\r\n          var teams = [], evset = {};\r\n          (j.teamSeasons || []).forEach(function (ts) {\r\n            var club = ts.team && ts.team.club && ts.team.club.name;\r\n            if (!\/hage\/i.test(club || \"\")) return;\r\n            (ts.participations || []).forEach(function (pt) {\r\n              var e = pt.event;\r\n              if (e && e.id && e.hasPerformancesDefined) { evset[e.id] = 1; teams.push({ name: ts.name || (ts.team && ts.team.name) || \"\", pid: pt.id, ev: e.id }); }\r\n            });\r\n          });\r\n          var events = Object.keys(evset).map(Number);\r\n          if (!events.length) events = sd.fallback.slice();\r\n          return { id: sd.id, label: sd.label, events: events, teams: teams };\r\n        }).catch(function () { return { id: sd.id, label: sd.label, events: sd.fallback.slice(), teams: [] }; });\r\n      }));\r\n      return seasonsCache;\r\n    }\r\n    function loadEvents() {\r\n      return loadSeasons().then(function (seasons) {\r\n        var seen = {}, out = [];\r\n        seasons.forEach(function (s) { s.events.forEach(function (id) { if (!seen[id]) { seen[id] = 1; out.push(id); } }); });\r\n        STAT_FALLBACK.forEach(function (id) { if (!seen[id]) { seen[id] = 1; out.push(id); } });\r\n        return out;\r\n      });\r\n    }\r\n    function loadCatalogs() {\r\n      if (!statCache) statCache = loadEvents().then(function (events) {\r\n        return Promise.all(events.map(function (ev) {\r\n          return fetch(API + \"\/event\/\" + ev + \"\/performance\").then(function (r) { return r.json(); }).then(function (j) { return j.performanceCatalog || []; }).catch(function () { return []; });\r\n        }));\r\n      });\r\n      return statCache;\r\n    }\r\n    function resultsForEvent(ev) {\r\n      if (!resultsByEvent[ev]) resultsByEvent[ev] = fetch(API + \"\/event\/\" + ev + \"\/player\/results\").then(function (r) { return r.json(); }).then(function (j) { return Array.isArray(j) ? j : []; }).catch(function () { return []; });\r\n      return resultsByEvent[ev];\r\n    }\r\n    function participantMatches(pid) {\r\n      if (!participantMatchCache[pid]) participantMatchCache[pid] = fetch(API + \"\/participant\/\" + pid).then(function (r) { return r.json(); }).then(function (j) { return (j.matches || []).map(function (m) { return m.id; }); }).catch(function () { return []; });\r\n      return participantMatchCache[pid];\r\n    }\r\n    function matchReport(ev, mid) {\r\n      var k = ev + \"\/\" + mid;\r\n      if (!reportCache[k]) reportCache[k] = fetch(API + \"\/event\/\" + ev + \"\/match\/\" + mid + \"\/report\").then(function (r) { return r.json(); }).then(function (j) { return Array.isArray(j) ? j : []; }).catch(function () { return []; });\r\n      return reportCache[k];\r\n    }\r\n    function playerMatchesRow(p, target, row) {\r\n      var pl = row.member && row.member.player;\r\n      return (p.mid && row.member && row.member.id === p.mid) || norm(row.displayName) === target || (pl && norm(pl.firstnameLastname) === target);\r\n    }\r\n    function loadPhase(team) {\r\n      var k = team.event + \"\/\" + team.phase;\r\n      if (!phaseCache[k]) phaseCache[k] = fetch(API + \"\/event\/\" + team.event + \"\/phase\/\" + team.phase).then(function (r) { return r.json(); }).then(function (ph) { return ph.rounds || []; }).catch(function () { return []; });\r\n      return phaseCache[k];\r\n    }\r\n    function loadRound(team, id) {\r\n      var k = team.event + \"\/\" + team.phase + \"\/\" + id;\r\n      if (!roundCache[k]) roundCache[k] = fetch(API + \"\/event\/\" + team.event + \"\/phase\/\" + team.phase + \"\/round\/\" + id).then(function (r) { return r.json(); }).then(function (rd) { return rd.matches || []; }).catch(function () { return []; });\r\n      return roundCache[k];\r\n    }\r\n\r\n    function honorHtml(team, p) {\r\n      var imgHtml = p.img\r\n        ? '<div class=\"svh-pm-cardimg\"><img decoding=\"async\" src=\"' + esc(p.img) + '\" alt=\"' + esc(p.n) + '\" loading=\"lazy\"><\/div>'\r\n        : '<div class=\"svh-pm-cardimg\"><div class=\"svh-pm-fb\"><div class=\"ini\">' + ini(p.n) + '<\/div><div class=\"nm\">' + esc(p.n) + '<\/div><\/div><\/div>';\r\n      var role = p.honorRole || \"F\\u00fcr immer dabei\";\r\n      var values = p.honorValues || [\r\n        { v: \"180\", l: \"Herzblut\" },\r\n        { v: \"Bull\", l: \"Mitten im Verein\" },\r\n        { v: \"100%\", l: \"Verl\\u00e4sslich\" },\r\n        { v: \"\\u221e\", l: \"Immer dabei\" }\r\n      ];\r\n      var lines = p.honorLines || [\r\n        [\"Stammplatz\", \"In unseren Herzen \\u2013 fest reserviert\"],\r\n        [\"Spezialit\\u00e4t\", \"Zusammenhalt & gute Laune\"],\r\n        [\"Wert f\\u00fcrs Team\", \"Unbezahlbar\"]\r\n      ];\r\n      var text = p.honorText || \"Ob am Oche, am Tresen oder einfach als guter Freund an unserer Seite \\u2013 du geh\\u00f6rst zu SV Hage Darts. Nicht jede Leistung passt in eine Tabelle; deine z\\u00e4hlt trotzdem an jedem einzelnen Tag. Danke, dass du unser Team zu einer echten Familie machst.\";\r\n      var tiles = values.map(function (t) { return '<div class=\"svh-pm-stat\"><b>' + esc(t.v) + '<\/b><span>' + esc(t.l) + '<\/span><\/div>'; }).join(\"\");\r\n      var lineHtml = lines.map(function (r) { return '<div><dt>' + esc(r[0]) + '<\/dt><dd>' + esc(r[1]) + '<\/dd><\/div>'; }).join(\"\");\r\n      var steck = [[\"Wurfhand\", p.hand], [\"Setup\", p.darts], [\"Alter\", p.age], [\"Lieblings-Double\", p.dbl], [\"Walk-on Song\", p.song], [\"Dabei seit\", p.since], [\"Motto\", p.motto]].filter(function (r) { return r[1]; });\r\n      var steckHtml = steck.length ? '<div class=\"svh-pm-section\"><h4>Steckbrief<\/h4><dl class=\"svh-pm-dl\">' + steck.map(function (r) { return '<div><dt>' + esc(r[0]) + '<\/dt><dd>' + esc(r[1]) + '<\/dd><\/div>'; }).join(\"\") + '<\/dl><\/div>' : '';\r\n      return '<div class=\"svh-pm-hero\" style=\"--tc:' + team.color + '\">' + imgHtml +\r\n          '<div><div class=\"svh-pm-meta\"><span class=\"svh-pm-team\">' + esc(team.name) + ' \\u00b7 ' + esc(team.league) + '<\/span>' +\r\n          '<span class=\"svh-pm-role\">' + esc(role) + '<\/span><\/div>' +\r\n          '<h3 class=\"svh-pm-name\">' + esc(p.n) + '<\/h3>' + (p.nick ? '<div class=\"svh-pm-nick\">\\u201e' + esc(p.nick) + '\\u201c<\/div>' : '') + '<\/div>' +\r\n        '<\/div>' +\r\n        '<div class=\"svh-pm-honor\"><h4>Herz &amp; Seele <span class=\"svh-pm-honor-heart\" aria-hidden=\"true\">\\u2665<\/span><\/h4><p class=\"svh-pm-honor-text\">' + esc(text) + '<\/p><\/div>' +\r\n        '<div class=\"svh-pm-section\"><h4>Unsere Werte<\/h4><div class=\"svh-pm-sub\">Keine Statistik \\u2013 sondern das, was wirklich z\\u00e4hlt.<\/div><div class=\"svh-pm-stats\">' + tiles + '<\/div><dl class=\"svh-pm-dl\" style=\"margin-top:14px\">' + lineHtml + '<\/dl><\/div>' +\r\n        steckHtml;\r\n    }\r\n\r\n    function open(teamId, idx) {\r\n      var team = window.svhTeams[teamId];\r\n      if (!team) return;\r\n      var p = team.players[idx];\r\n      if (!p) return;\r\n      var isCap = !!p.cap;\r\n\r\n      if (team.honor) {\r\n        body.innerHTML = honorHtml(team, p);\r\n        modal.removeAttribute(\"hidden\");\r\n        document.body.style.overflow = \"hidden\";\r\n        body.scrollTop = 0;\r\n        return;\r\n      }\r\n\r\n      if (team.alumni) {\r\n        var aImg = p.img\r\n          ? '<div class=\"svh-pm-cardimg\"><img decoding=\"async\" src=\"' + esc(p.img) + '\" alt=\"' + esc(p.n) + '\" loading=\"lazy\"><\/div>'\r\n          : '<div class=\"svh-pm-cardimg\"><div class=\"svh-pm-fb\"><div class=\"ini\">' + ini(p.n) + '<\/div><div class=\"nm\">' + esc(p.n) + '<\/div><\/div><\/div>';\r\n        var aText = p.alumniText || \"Diese Legende hat unsere Farben getragen und den Weg von SV Hage Darts mitgepr\\u00e4gt. Auch wenn der Weg weiterf\\u00fchrte \\u2013 hier bleibt f\\u00fcr immer ein Platz in unserer Geschichte. Einmal Hage, immer Hage.\";\r\n        var aChips = \"\";\r\n        if (p.since) aChips += '<span class=\"svh-pm-alumni-chip\">Bei uns seit ' + esc(p.since) + '<\/span>';\r\n        if (p.farewell) aChips += '<span class=\"svh-pm-alumni-chip\">Abschied \\u00b7 ' + esc(p.farewell) + '<\/span>';\r\n        if (p.farewellReason) aChips += '<span class=\"svh-pm-alumni-chip\">' + esc(p.farewellReason) + '<\/span>';\r\n        var aSteck = [[\"Wurfhand\", p.hand], [\"Setup\", p.darts], [\"Alter\", p.age], [\"Lieblings-Double\", p.dbl], [\"Walk-on Song\", p.song], [\"Motto\", p.motto]].filter(function (r) { return r[1]; });\r\n        var aSteckHtml = aSteck.length ? '<div class=\"svh-pm-section\"><h4>Steckbrief<\/h4><dl class=\"svh-pm-dl\">' + aSteck.map(function (r) { return '<div><dt>' + esc(r[0]) + '<\/dt><dd>' + esc(r[1]) + '<\/dd><\/div>'; }).join(\"\") + '<\/dl><\/div>' : '';\r\n        body.innerHTML =\r\n          '<div class=\"svh-pm-hero\" style=\"--tc:' + team.color + '\">' + aImg +\r\n            '<div><div class=\"svh-pm-meta\"><span class=\"svh-pm-team\">' + esc(team.name) + '<\/span>' +\r\n            '<span class=\"svh-pm-role\">Legende<\/span><\/div>' +\r\n            '<h3 class=\"svh-pm-name\">' + esc(p.n) + '<\/h3>' + (p.nick ? '<div class=\"svh-pm-nick\">\\u201e' + esc(p.nick) + '\\u201c<\/div>' : '') + '<\/div>' +\r\n          '<\/div>' +\r\n          '<div class=\"svh-pm-alumni\"><h4>Legende <span class=\"svh-pm-alumni-star\" aria-hidden=\"true\">\\u2605<\/span><\/h4><p class=\"svh-pm-alumni-text\">' + esc(aText) + '<\/p>' + (aChips ? '<div class=\"svh-pm-alumni-meta\">' + aChips + '<\/div>' : '') + '<\/div>' +\r\n          '<div class=\"svh-pm-section\"><h4>Bestleistungen <span class=\"svh-pm-src dvwe\">DVWE<\/span><\/h4><div class=\"svh-pm-sub\">DVWE-Liga &amp; Pokal \\u00b7 Karriere<\/div><div id=\"svh-pm-stats\"><div class=\"svh-pm-empty\">Statistik wird geladen \\u2026<\/div><\/div><\/div>' +\r\n          '<div class=\"svh-pm-section\"><h4>Bestleistungen <span class=\"svh-pm-src club\">Verein<\/span><\/h4><div class=\"svh-pm-sub\">Vereinsturniere \\u00b7 Ranglisten, Fun &amp; Masters<\/div><div id=\"svh-pm-club\"><div class=\"svh-pm-empty\">Vereinsstatistik wird geladen \\u2026<\/div><\/div><div id=\"svh-pm-clubmatches\"><\/div><\/div>' +\r\n          '<div class=\"svh-pm-section\"><h4>Einzel &amp; Doppel<\/h4><div class=\"svh-pm-sub\">Liga-Bilanz \\u00b7 Siege : Niederlagen<\/div><div id=\"svh-pm-record\"><div class=\"svh-pm-empty\">Bilanz wird geladen \\u2026<\/div><\/div><\/div>' +\r\n          aSteckHtml;\r\n        modal.removeAttribute(\"hidden\");\r\n        document.body.style.overflow = \"hidden\";\r\n        body.scrollTop = 0;\r\n        renderStats(p, true);\r\n        renderClubStats(p);\r\n        renderClubMatches(p);\r\n        renderRecord(p, true);\r\n        return;\r\n      }\r\n\r\n      var imgHtml = p.img\r\n        ? '<div class=\"svh-pm-cardimg\"><img decoding=\"async\" src=\"' + esc(p.img) + '\" alt=\"' + esc(p.n) + '\" loading=\"lazy\"><\/div>'\r\n        : '<div class=\"svh-pm-cardimg\"><div class=\"svh-pm-fb\"><div class=\"ini\">' + ini(p.n) + '<\/div><div class=\"nm\">' + esc(p.n) + '<\/div><\/div><\/div>';\r\n\r\n      var steck = [[\"Wurfhand\", p.hand], [\"Setup\", p.darts], [\"Alter\", p.age], [\"Lieblings-Double\", p.dbl], [\"Walk-on Song\", p.song], [\"Dabei seit\", p.since], [\"Motto\", p.motto]].filter(function (r) { return r[1]; });\r\n      var steckHtml = steck.length\r\n        ? '<div class=\"svh-pm-section\"><h4>Steckbrief<\/h4><dl class=\"svh-pm-dl\">' + steck.map(function (r) { return '<div><dt>' + esc(r[0]) + '<\/dt><dd>' + esc(r[1]) + '<\/dd><\/div>'; }).join(\"\") + '<\/dl><\/div>'\r\n        : '';\r\n\r\n      body.innerHTML =\r\n        '<div class=\"svh-pm-hero\" style=\"--tc:' + team.color + '\">' + imgHtml +\r\n          '<div><div class=\"svh-pm-meta\"><span class=\"svh-pm-team\">' + esc(team.name) + ' \u00b7 ' + esc(team.league) + '<\/span>' +\r\n          '<span class=\"svh-pm-role\">' + (isCap ? \"Kapit\u00e4n\" : \"Spieler\") + '<\/span><\/div>' +\r\n          '<h3 class=\"svh-pm-name\">' + esc(p.n) + '<\/h3>' + (p.nick ? '<div class=\"svh-pm-nick\">\u201e' + esc(p.nick) + '\u201c<\/div>' : '') + '<\/div>' +\r\n        '<\/div>' +\r\n        '<div class=\"svh-pm-section\"><h4>Bestleistungen <span class=\"svh-pm-src dvwe\">DVWE<\/span><\/h4><div class=\"svh-pm-sub\">DVWE-Liga &amp; Pokal \u00b7 Saison 2025\/26 + 2026\/27<\/div><div id=\"svh-pm-stats\"><div class=\"svh-pm-empty\">Statistik wird geladen \u2026<\/div><\/div><\/div>' +\r\n        '<div class=\"svh-pm-section\"><h4>Bestleistungen <span class=\"svh-pm-src club\">Verein<\/span><\/h4><div class=\"svh-pm-sub\">Vereinsturniere \u00b7 Ranglisten, Fun &amp; Masters<\/div><div id=\"svh-pm-club\"><div class=\"svh-pm-empty\">Vereinsstatistik wird geladen \u2026<\/div><\/div><div id=\"svh-pm-clubmatches\"><\/div><\/div>' +\r\n        '<div class=\"svh-pm-section\"><h4>Einzel &amp; Doppel<\/h4><div class=\"svh-pm-sub\">Liga-Bilanz \u00b7 Siege : Niederlagen<\/div><div id=\"svh-pm-record\"><div class=\"svh-pm-empty\">Bilanz wird geladen \u2026<\/div><\/div><\/div>' +\r\n        '<div class=\"svh-pm-section\"><h4>Spiele \u00b7 ' + esc(team.name) + '<\/h4><div id=\"svh-pm-fix\"><div class=\"svh-pm-empty\">Spielplan wird geladen \u2026<\/div><\/div><\/div>' +\r\n        steckHtml;\r\n\r\n      modal.removeAttribute(\"hidden\");\r\n      document.body.style.overflow = \"hidden\";\r\n      body.scrollTop = 0;\r\n      renderStats(p);\r\n      renderClubStats(p);\r\n      renderClubMatches(p);\r\n      renderRecord(p);\r\n      renderFixtures(team);\r\n    }\r\n\r\n    function renderStats(p, alumni) {\r\n      var host = document.getElementById(\"svh-pm-stats\");\r\n      var target = norm(p.n);\r\n      loadCatalogs().then(function (catalogs) {\r\n        if (!host || !host.isConnected) return;\r\n        var a = { c180: 0, c171: 0, finishes: {}, best: 0, sg: null, sgd: null, bull: 0 };\r\n        catalogs.forEach(function (cat) { cat.forEach(function (type) { (type.playerPerformances || []).forEach(function (pp) {\r\n          var mine = (pp.performancePlayers || []).some(function (fp) { var pl = fp.player || {}; return norm(pl.firstnameLastname) === target || (p.mid && pl.member && pl.member.id === p.mid); });\r\n          if (!mine) return;\r\n          var code = type.performanceTypeCd, cnt = pp.count || 0, val = pp.value || 0;\r\n          if (code === \"HS\" && type.min >= 180) a.c180 += cnt;\r\n          else if (code === \"HS\") a.c171 += cnt;\r\n          else if (code === \"HF\") { a.finishes[val] = (a.finishes[val] || 0) + cnt; if (val > a.best) a.best = val; }\r\n          else if (code === \"SG\") a.sg = (a.sg == null) ? val : Math.min(a.sg, val);\r\n          else if (code === \"SGD\") a.sgd = (a.sgd == null) ? val : Math.min(a.sgd, val);\r\n          else if (code === \"BF\") { if (val > a.bull) a.bull = val; }\r\n        }); }); });\r\n        var hasAny = a.best || a.c180 || a.c171 || a.sg != null || a.sgd != null || a.bull;\r\n        if (!hasAny && alumni) {\r\n          var first = String(p.n).trim().split(\/\\s+\/)[0];\r\n          var note = p.statHonor || \"Manche Legenden misst man nicht in 180ern oder Highfinishes \\u2013 sondern in Momenten am Oche, Spr\\u00fcchen am Tresen und Freundschaften, die bleiben. \" + first + \" hat unsere Anf\\u00e4nge mitgeschrieben und einen Platz, den keine Zahl ersetzt. F\\u00fcr immer ein Teil von SV Hage Darts \\u2013 einmal Hage, immer Hage.\";\r\n          host.innerHTML = '<div class=\"svh-pm-legend-note\"><span class=\"st\" aria-hidden=\"true\">\\u2605<\/span><p>' + esc(note) + '<\/p><\/div>';\r\n          return;\r\n        }\r\n        function tl(v, l) { var z = (v == null || v === 0); return '<div class=\"svh-pm-stat' + (z ? \" zero\" : \"\") + '\"><b>' + (z ? \"\u2013\" : v) + '<\/b><span>' + l + '<\/span><\/div>'; }\r\n        var tiles = tl(a.best || null, \"Bester Finish\") + tl(a.c180, \"180er\") + tl(a.c171, \"171\u2013177\") + tl(a.sg != null ? a.sg : null, \"K\u00fcrz. Leg\");\r\n        var det = [], fk = Object.keys(a.finishes).map(Number).sort(function (x, y) { return y - x; });\r\n        if (fk.length) det.push('<div class=\"svh-pm-line\"><span class=\"k\">Highfinishes<\/span><span class=\"v\">' + fk.map(function (v) { return v + (a.finishes[v] > 1 ? \" \u00d7\" + a.finishes[v] : \"\"); }).join(\" \u00b7 \") + '<\/span><\/div>');\r\n        if (a.sgd != null) det.push('<div class=\"svh-pm-line\"><span class=\"k\">K\u00fcrz. Leg Doppel<\/span><span class=\"v\">' + a.sgd + ' Darts<\/span><\/div>');\r\n        if (a.bull) det.push('<div class=\"svh-pm-line\"><span class=\"k\">Bullfinish<\/span><span class=\"v\">' + a.bull + '<\/span><\/div>');\r\n        host.innerHTML = '<div class=\"svh-pm-stats\">' + tiles + '<\/div>' + (det.length ? '<div class=\"svh-pm-detail\">' + det.join(\"\") + '<\/div>' : '') + (hasAny ? '' : '<p class=\"svh-pm-empty\" style=\"margin-top:12px\">Noch keine erfassten Bestleistungen \u2013 die Statistik f\u00fcllt sich mit den Spieltagen.<\/p>');\r\n      }).catch(function () { if (host) host.innerHTML = '<p class=\"svh-pm-empty\">Statistik konnte nicht geladen werden.<\/p>'; });\r\n    }\r\n\r\n    function loadClubEventList() {\r\n      if (!clubEventListCache) clubEventListCache = fetch(CLUB_API + \"\/event\/page?mandantKey=\" + CLUB_MANDANT + \"&eventTypeCd=TOURNAMENT&size=100&favoriteIds=\")\r\n        .then(function (r) { return r.json(); })\r\n        .then(function (j) { return (j.content || []).filter(function (e) { return e.hasPerformancesDefined; }).map(function (e) { return { id: e.id, name: e.name, datetime: e.datetime, color: e.color || \"#e8b64b\" }; }); })\r\n        .catch(function () { return []; });\r\n      return clubEventListCache;\r\n    }\r\n    function loadClubEvents() {\r\n      if (!clubEventsCache) clubEventsCache = loadClubEventList().then(function (events) { return events.map(function (e) { return e.id; }); });\r\n      return clubEventsCache;\r\n    }\r\n    function loadClubCatalogs() {\r\n      if (!clubStatCache) clubStatCache = loadClubEvents().then(function (events) {\r\n        return Promise.all(events.map(function (ev) {\r\n          return fetch(CLUB_API + \"\/event\/\" + ev + \"\/performance\").then(function (r) { return r.json(); }).then(function (j) { return j.performanceCatalog || []; }).catch(function () { return []; });\r\n        }));\r\n      });\r\n      return clubStatCache;\r\n    }\r\n    function renderClubStats(p) {\r\n      var host = document.getElementById(\"svh-pm-club\");\r\n      if (!host) return;\r\n      var target = norm(p.n);\r\n      loadClubCatalogs().then(function (catalogs) {\r\n        if (!host || !host.isConnected) return;\r\n        var a = { c180: 0, c140: 0, finishes: {}, best: 0, sg: null, sgd: null, bull: 0 };\r\n        catalogs.forEach(function (cat) { cat.forEach(function (type) { (type.playerPerformances || []).forEach(function (pp) {\r\n          var mine = (pp.performancePlayers || []).some(function (fp) { var pl = fp.player || {}; return norm(pl.firstnameLastname) === target; });\r\n          if (!mine) return;\r\n          var code = type.performanceTypeCd, cnt = pp.count || 0, val = pp.value || 0;\r\n          if (code === \"HS\" && (type.min >= 180 || val >= 180)) a.c180 += cnt;\r\n          else if (code === \"HS\") a.c140 += cnt;\r\n          else if (code === \"HF\") { a.finishes[val] = (a.finishes[val] || 0) + cnt; if (val > a.best) a.best = val; }\r\n          else if (code === \"SG\") a.sg = (a.sg == null) ? val : Math.min(a.sg, val);\r\n          else if (code === \"SGD\") a.sgd = (a.sgd == null) ? val : Math.min(a.sgd, val);\r\n          else if (code === \"BF\") { if (val > a.bull) a.bull = val; }\r\n        }); }); });\r\n        var hasAny = a.best || a.c180 || a.c140 || a.sg != null || a.sgd != null || a.bull;\r\n        if (!hasAny) { host.innerHTML = '<p class=\"svh-pm-empty\">Bei unseren Vereinsturnieren sind (noch) keine Bestleistungen erfasst.<\/p>'; return; }\r\n        function tl(v, l) { var z = (v == null || v === 0); return '<div class=\"svh-pm-stat' + (z ? \" zero\" : \"\") + '\"><b>' + (z ? \"\\u2013\" : v) + '<\/b><span>' + l + '<\/span><\/div>'; }\r\n        var tiles = tl(a.best || null, \"Bester Finish\") + tl(a.c180, \"180er\") + tl(a.c140, \"140+\") + tl(a.sg != null ? a.sg : null, \"K\\u00fcrz. Leg\");\r\n        var det = [], fk = Object.keys(a.finishes).map(Number).sort(function (x, y) { return y - x; });\r\n        if (fk.length) det.push('<div class=\"svh-pm-line\"><span class=\"k\">Highfinishes<\/span><span class=\"v\">' + fk.map(function (v) { return v + (a.finishes[v] > 1 ? \" \\u00d7\" + a.finishes[v] : \"\"); }).join(\" \\u00b7 \") + '<\/span><\/div>');\r\n        if (a.sgd != null) det.push('<div class=\"svh-pm-line\"><span class=\"k\">K\\u00fcrz. Leg Doppel<\/span><span class=\"v\">' + a.sgd + ' Darts<\/span><\/div>');\r\n        if (a.bull) det.push('<div class=\"svh-pm-line\"><span class=\"k\">Bullfinish<\/span><span class=\"v\">' + a.bull + '<\/span><\/div>');\r\n        host.innerHTML = '<div class=\"svh-pm-stats\">' + tiles + '<\/div>' + (det.length ? '<div class=\"svh-pm-detail\">' + det.join(\"\") + '<\/div>' : '');\r\n      }).catch(function () { if (host) host.innerHTML = '<p class=\"svh-pm-empty\">Vereinsstatistik konnte nicht geladen werden.<\/p>'; });\r\n    }\r\n\r\n    \/* Einzelne Vereinsturnier-Matches (Turniere = eigene Teilnehmer-IDs, Namen abgek\u00fcrzt \"T. Kr\u00fcger\") *\/\r\n    function abbr(name) { var t = String(name).trim().split(\/\\s+\/); return t.length < 2 ? norm(name) : norm(t[0].charAt(0) + t.slice(1).join(\"\")); }\r\n    function sideHasMe(dn, full, ab) { return String(dn || \"\").split(\"&\").some(function (nm) { var x = norm(nm); return x === full || x === ab; }); }\r\n    function clubParticipants(ev) {\r\n      if (!clubPartCache[ev]) clubPartCache[ev] = fetch(CLUB_API + \"\/event\/\" + ev + \"\/participant\").then(function (r) { return r.json(); }).then(function (j) { return Array.isArray(j) ? j : (j.participants || j.content || []); }).catch(function () { return []; });\r\n      return clubPartCache[ev];\r\n    }\r\n    function clubParticipantMatches(pid) {\r\n      if (!clubPMCache[pid]) clubPMCache[pid] = fetch(CLUB_API + \"\/participant\/\" + pid).then(function (r) { return r.json(); }).then(function (j) { return j.matches || []; }).catch(function () { return []; });\r\n      return clubPMCache[pid];\r\n    }\r\n    function loadClubMatches(p) {\r\n      var full = norm(p.n), ab = abbr(p.n), seen = {}, games = [];\r\n      return loadClubEventList().then(function (events) {\r\n        return Promise.all(events.map(function (e) {\r\n          return clubParticipants(e.id).then(function (parts) {\r\n            var mine = parts.filter(function (pt) { return sideHasMe(pt.displayName, full, ab); });\r\n            return Promise.all(mine.map(function (pt) { return clubParticipantMatches(pt.id); })).then(function (lists) { return lists.reduce(function (a, b) { return a.concat(b || []); }, []); });\r\n          });\r\n        }));\r\n      }).then(function (lists) {\r\n        lists.forEach(function (ms) { (ms || []).forEach(function (m) {\r\n          if (!m || m.statusCd !== \"FINISH\" || m.byeHome || m.byeAway || !m.participantHome || !m.participantGuest) return;\r\n          if (seen[m.id]) return; seen[m.id] = 1;\r\n          var home = sideHasMe(m.participantHome.displayName, full, ab);\r\n          if (!home && !sideHasMe(m.participantGuest.displayName, full, ab)) return;\r\n          var myLegs = (home ? m.legsHome : m.legsAway) || 0, oppLegs = (home ? m.legsAway : m.legsHome) || 0;\r\n          var ev = m.event || {};\r\n          games.push({ evName: ev.name || \"Turnier\", evDate: ev.datetime || \"\", opp: home ? m.participantGuest.displayName : m.participantHome.displayName, myLegs: myLegs, oppLegs: oppLegs, won: myLegs > oppLegs, dbl: \/&\/.test((m.participantHome.displayName || \"\") + (m.participantGuest.displayName || \"\")), round: (m.round && m.round.name) || \"\", date: m.beginDate || m.endDate || ev.datetime || \"\" });\r\n        }); });\r\n        games.sort(function (a, b) { var ed = new Date(b.evDate) - new Date(a.evDate); return ed || (new Date(a.date) - new Date(b.date)); });\r\n        return { games: games };\r\n      });\r\n    }\r\n    function clubGameRow(g) {\r\n      return '<div class=\"svh-pm-game ' + (g.won ? \"win\" : \"loss\") + '\">' +\r\n        '<span class=\"res\">' + g.myLegs + ':' + g.oppLegs + '<\/span>' +\r\n        '<span class=\"opp\">vs ' + esc(g.opp) + '<\/span>' +\r\n        '<span class=\"avg\">' + (g.dbl ? \"Doppel \\u00b7 \" : \"\") + esc(g.round) + '<\/span>' +\r\n        '<\/div>';\r\n    }\r\n    function clubTotals(games) {\r\n      var s = { w: 0, l: 0, lw: 0, ll: 0 }, d = { w: 0, l: 0, lw: 0, ll: 0 };\r\n      games.forEach(function (g) { var t = g.dbl ? d : s; if (g.won) t.w++; else t.l++; t.lw += g.myLegs; t.ll += g.oppLegs; });\r\n      return { single: s, double: d };\r\n    }\r\n    function clubRecCard(t) {\r\n      function item(lbl, r) {\r\n        var has = (r.w + r.l) > 0;\r\n        return has ? '<div class=\"svh-pm-rec-item\"><span class=\"lbl\">' + lbl + '<\/span><b>' + r.w + ':' + r.l + '<\/b><small>Legs ' + r.lw + ':' + r.ll + '<\/small><\/div>'\r\n          : '<div class=\"svh-pm-rec-item empty\"><span class=\"lbl\">' + lbl + '<\/span><b>\\u2013<\/b><small>\\u2014<\/small><\/div>';\r\n      }\r\n      return '<div class=\"svh-pm-rec\">' + item(\"Einzel\", t.single) + item(\"Doppel\", t.double) + '<\/div>';\r\n    }\r\n    function renderClubPage(hostEl) {\r\n      var data = hostEl._data, games = data.games, pages = Math.max(1, Math.ceil(games.length \/ CLUB_PAGE));\r\n      var page = Math.min(Math.max(hostEl._page || 0, 0), pages - 1);\r\n      hostEl._page = page;\r\n      var slice = games.slice(page * CLUB_PAGE, page * CLUB_PAGE + CLUB_PAGE);\r\n      var html = \"\", curr = null;\r\n      slice.forEach(function (g) {\r\n        if (g.evName !== curr) { if (curr !== null) html += '<\/div>'; html += '<div class=\"svh-pm-games-grp\"><div class=\"grp-h\">' + esc(g.evName) + '<\/div>'; curr = g.evName; }\r\n        html += clubGameRow(g);\r\n      });\r\n      if (curr !== null) html += '<\/div>';\r\n      if (pages > 1) html += '<div class=\"svh-pm-pager\"><button type=\"button\" class=\"svh-pm-page-btn\" data-clubpage=\"prev\"' + (page === 0 ? ' disabled' : '') + '>\\u2039 Zur\\u00fcck<\/button>' +\r\n        '<span class=\"svh-pm-page-info\">Seite ' + (page + 1) + ' \/ ' + pages + ' \\u00b7 ' + games.length + ' Matches<\/span>' +\r\n        '<button type=\"button\" class=\"svh-pm-page-btn\" data-clubpage=\"next\"' + (page >= pages - 1 ? ' disabled' : '') + '>Weiter \\u203a<\/button><\/div>';\r\n      var listEl = hostEl.querySelector(\".svh-pm-clublist\");\r\n      if (listEl) listEl.innerHTML = html;\r\n    }\r\n    function renderClubOverview(hostEl, data) {\r\n      if (!data.games.length) { hostEl.innerHTML = '<p class=\"svh-pm-empty\">Keine Vereinsmatches gefunden.<\/p>'; return; }\r\n      hostEl._data = data; hostEl._page = 0;\r\n      hostEl.innerHTML = '<div class=\"svh-pm-rec-h\">Bilanz \\u00b7 alle Vereinsturniere<\/div>' + clubRecCard(clubTotals(data.games)) + '<div class=\"svh-pm-clublist\"><\/div>';\r\n      renderClubPage(hostEl);\r\n    }\r\n    function renderClubMatches(p) {\r\n      var host = document.getElementById(\"svh-pm-clubmatches\");\r\n      if (!host) return;\r\n      host._player = p;\r\n      host.innerHTML = '<button class=\"svh-pm-games-btn\" type=\"button\" data-clubmatches=\"1\">Vereinsmatches ansehen <span class=\"chev\" aria-hidden=\"true\">\\u25be<\/span><\/button>' +\r\n        '<div class=\"svh-pm-games\" id=\"svh-pm-clubgames\" hidden><\/div>';\r\n    }\r\n\r\n    function aggResults(lists, p, target) {\r\n      var s = { w: 0, l: 0, lw: 0, ll: 0 }, d = { w: 0, l: 0, lw: 0, ll: 0 }, found = false, teamName = null;\r\n      lists.forEach(function (arr) { arr.forEach(function (row) {\r\n        if (!playerMatchesRow(p, target, row)) return;\r\n        found = true; if (!teamName && row.team) teamName = row.team.name;\r\n        var sr = row.singleResult, dr = row.doubleResult;\r\n        if (sr) { s.w += sr.matchWon || 0; s.l += sr.matchLost || 0; s.lw += sr.legs1 || 0; s.ll += sr.legs2 || 0; }\r\n        if (dr) { d.w += dr.matchWon || 0; d.l += dr.matchLost || 0; d.lw += dr.legs1 || 0; d.ll += dr.legs2 || 0; }\r\n      }); });\r\n      return { found: found, single: s, double: d, teamName: teamName };\r\n    }\r\n    function recItem(lbl, r, has) {\r\n      if (!has) return '<div class=\"svh-pm-rec-item empty\"><span class=\"lbl\">' + lbl + '<\/span><b>\u2013<\/b><small>\u2014<\/small><\/div>';\r\n      return '<div class=\"svh-pm-rec-item\"><span class=\"lbl\">' + lbl + '<\/span><b>' + r.w + ':' + r.l + '<\/b><small>Legs ' + r.lw + ':' + r.ll + '<\/small><\/div>';\r\n    }\r\n    function seasonBlock(x, i) {\r\n      var a = x.agg;\r\n      if (!a.found) return '<div class=\"svh-pm-season\"><div class=\"svh-pm-season-h\">Saison ' + x.label + '<\/div><p class=\"svh-pm-empty\">Noch keine Spiele erfasst.<\/p><\/div>';\r\n      var hasS = (a.single.w + a.single.l) > 0, hasD = (a.double.w + a.double.l) > 0;\r\n      return '<div class=\"svh-pm-season\">' +\r\n        '<div class=\"svh-pm-season-h\">Saison ' + x.label + (a.teamName ? ' \u00b7 ' + esc(a.teamName) : '') + '<\/div>' +\r\n        '<div class=\"svh-pm-rec\">' + recItem(\"Einzel\", a.single, hasS) + recItem(\"Doppel\", a.double, hasD) + '<\/div>' +\r\n        '<button class=\"svh-pm-games-btn\" type=\"button\" data-season=\"' + i + '\">Einzelspiele ansehen <span class=\"chev\" aria-hidden=\"true\">\u25be<\/span><\/button>' +\r\n        '<div class=\"svh-pm-games\" id=\"svh-pm-games-' + i + '\" hidden><\/div>' +\r\n        '<\/div>';\r\n    }\r\n    function renderRecord(p, onlyFound) {\r\n      var host = document.getElementById(\"svh-pm-record\");\r\n      var target = norm(p.n);\r\n      loadSeasons().then(function (seasons) {\r\n        return Promise.all(seasons.map(function (season) {\r\n          return Promise.all(season.events.map(resultsForEvent)).then(function (lists) {\r\n            return { label: season.label, seasonId: season.id, agg: aggResults(lists, p, target) };\r\n          });\r\n        }));\r\n      }).then(function (perSeason) {\r\n        if (!host || !host.isConnected) return;\r\n        if (!perSeason.some(function (x) { return x.agg.found; })) {\r\n          host.innerHTML = '<p class=\"svh-pm-empty\">Noch keine Ligaspiele erfasst \u2013 sobald gespielt wird, erscheint hier die Einzel- &amp; Doppelbilanz.<\/p>';\r\n          return;\r\n        }\r\n        if (onlyFound) perSeason = perSeason.filter(function (x) { return x.agg.found; });\r\n        host._seasons = perSeason; host._player = p;\r\n        host.innerHTML = perSeason.map(seasonBlock).join(\"\");\r\n      }).catch(function () { if (host) host.innerHTML = '<p class=\"svh-pm-empty\">Bilanz konnte nicht geladen werden.<\/p>'; });\r\n    }\r\n\r\n    \/* Einzelspiel-Detail aus dem Match-Report (Klick auf \u201eEinzelspiele ansehen\") *\/\r\n    function nameInSide(displayName, target) {\r\n      if (!displayName) return false;\r\n      return displayName.split(\"&\").some(function (nm) { return norm(nm) === target; });\r\n    }\r\n    function extractGames(report, target) {\r\n      var out = [];\r\n      report.forEach(function (g) {\r\n        var home = g.participantHome || {}, away = g.participantGuest || {};\r\n        var inHome = nameInSide(home.displayName, target), inAway = nameInSide(away.displayName, target);\r\n        if (!inHome && !inAway) return;\r\n        var mine = inHome ? home : away, opp = inHome ? away : home;\r\n        var myLegs = (inHome ? g.legsHome : g.legsAway) || 0, oppLegs = (inHome ? g.legsAway : g.legsHome) || 0;\r\n        out.push({\r\n          type: g.matchTypeCd, opp: opp.displayName || \"?\",\r\n          myLegs: myLegs, oppLegs: oppLegs, won: myLegs > oppLegs,\r\n          avg: (mine.darts > 0) ? (mine.score \/ mine.darts * 3) : null,\r\n          date: g.endDate || g.beginDate || \"\"\r\n        });\r\n      });\r\n      return out;\r\n    }\r\n    function loadGames(p, seasonEntry) {\r\n      var target = norm(p.n);\r\n      return loadSeasons().then(function (seasons) {\r\n        var sdef = null;\r\n        seasons.forEach(function (s) { if (s.id === seasonEntry.seasonId) sdef = s; });\r\n        if (!sdef) return [];\r\n        var tName = seasonEntry.agg.teamName;\r\n        var teams = sdef.teams.filter(function (t) { return tName && norm(t.name) === norm(tName); });\r\n        if (!teams.length) teams = sdef.teams;\r\n        return Promise.all(teams.map(function (t) {\r\n          return participantMatches(t.pid).then(function (mids) {\r\n            return Promise.all(mids.map(function (mid) { return matchReport(t.ev, mid); }));\r\n          }).then(function (reports) {\r\n            var games = [];\r\n            reports.forEach(function (rep) { games = games.concat(extractGames(rep, target)); });\r\n            return games;\r\n          });\r\n        })).then(function (lists) {\r\n          var all = []; lists.forEach(function (l) { all = all.concat(l); });\r\n          all.sort(function (a, b) { return new Date(a.date) - new Date(b.date); });\r\n          return all;\r\n        });\r\n      });\r\n    }\r\n    function gameRow(g) {\r\n      return '<div class=\"svh-pm-game ' + (g.won ? \"win\" : \"loss\") + '\">' +\r\n        '<span class=\"res\">' + g.myLegs + ':' + g.oppLegs + '<\/span>' +\r\n        '<span class=\"opp\">vs ' + esc(g.opp) + '<\/span>' +\r\n        (g.avg != null ? '<span class=\"avg\">\u00d8 ' + g.avg.toFixed(1) + '<\/span>' : '') +\r\n        '<\/div>';\r\n    }\r\n    function renderGames(hostEl, games) {\r\n      if (!games.length) { hostEl.innerHTML = '<p class=\"svh-pm-empty\">Keine Einzelspiele gefunden.<\/p>'; return; }\r\n      var singles = games.filter(function (g) { return g.type === \"EZ\"; });\r\n      var doubles = games.filter(function (g) { return g.type === \"DP\"; });\r\n      var html = \"\";\r\n      if (singles.length) html += '<div class=\"svh-pm-games-grp\"><div class=\"grp-h\">Einzel (' + singles.length + ')<\/div>' + singles.map(gameRow).join(\"\") + '<\/div>';\r\n      if (doubles.length) html += '<div class=\"svh-pm-games-grp\"><div class=\"grp-h\">Doppel (' + doubles.length + ')<\/div>' + doubles.map(gameRow).join(\"\") + '<\/div>';\r\n      hostEl.innerHTML = html;\r\n    }\r\n\r\n    function renderFixtures(team) {\r\n      var host = document.getElementById(\"svh-pm-fix\");\r\n      loadPhase(team).then(function (rounds) {\r\n        rounds = rounds.slice().sort(function (a, b) { return new Date(a.dateFrom) - new Date(b.dateFrom); });\r\n        var now = Date.now(), nextR = null, lastR = null;\r\n        rounds.forEach(function (r) { var to = new Date(r.dateTo).getTime(); if (to >= now) { if (!nextR) nextR = r; } else lastR = r; });\r\n        function tm(r) { return r ? loadRound(team, r.id).then(function (ms) { return ms.find(function (m) { return (m.participantHome && m.participantHome.displayName) === team.name || (m.participantGuest && m.participantGuest.displayName) === team.name; }) || null; }) : Promise.resolve(null); }\r\n        return Promise.all([tm(nextR), tm(lastR)]);\r\n      }).then(function (res) {\r\n        if (!host || !host.isConnected) return;\r\n        var next = res[0], last = res[1], cards = \"\";\r\n        if (next) {\r\n          var home = (next.participantHome && next.participantHome.displayName) === team.name;\r\n          var opp = home ? (next.participantGuest && next.participantGuest.displayName) : (next.participantHome && next.participantHome.displayName);\r\n          var d = new Date(next.datePlanned);\r\n          cards += '<div class=\"svh-pm-fix\"><div class=\"lbl\">N\u00e4chstes Spiel<\/div><div class=\"opp\">vs ' + esc(opp || \"?\") + '<\/div><div class=\"sub\">' + fmtDate(d) + ' \u00b7 ' + fmtTime(d) + ' Uhr<\/div><span class=\"svh-pm-badge ' + (home ? \"home\" : \"away\") + '\">' + (home ? \"Heim\" : \"Ausw\u00e4rts\") + '<\/span><\/div>';\r\n        }\r\n        if (last && last.statusCd === \"FINISH\") {\r\n          var lh = (last.participantHome && last.participantHome.displayName) === team.name;\r\n          var lo = lh ? (last.participantGuest && last.participantGuest.displayName) : (last.participantHome && last.participantHome.displayName);\r\n          var us = lh ? last.setsHome : last.setsAway, them = lh ? last.setsAway : last.setsHome, win = us > them;\r\n          cards += '<div class=\"svh-pm-fix\"><div class=\"lbl\">Letztes Ergebnis<\/div><div class=\"opp\">vs ' + esc(lo || \"?\") + '<\/div><div class=\"res\">' + us + ' : ' + them + '<\/div><span class=\"svh-pm-badge ' + (win ? \"win\" : \"loss\") + '\">' + (win ? \"Sieg\" : \"Niederlage\") + '<\/span><\/div>';\r\n        }\r\n        host.innerHTML = cards ? '<div class=\"svh-pm-fixrow\">' + cards + '<\/div>' : '<p class=\"svh-pm-empty\">Aktuell sind keine Spiele angesetzt.<\/p>';\r\n      }).catch(function () { if (host) host.innerHTML = '<p class=\"svh-pm-empty\">Spielplan konnte nicht geladen werden.<\/p>'; });\r\n    }\r\n\r\n    function close() { modal.setAttribute(\"hidden\", \"\"); document.body.style.overflow = \"\"; }\r\n\r\n    function fromEvent(e) { var c = e.target.closest && e.target.closest(\".svh-player\"); if (!c) return; e.preventDefault(); open(c.getAttribute(\"data-pteam\"), parseInt(c.getAttribute(\"data-pidx\"), 10)); }\r\n    grid.addEventListener(\"click\", fromEvent);\r\n    grid.addEventListener(\"keydown\", function (e) { if (e.key === \"Enter\" || e.key === \" \") fromEvent(e); });\r\n    modal.addEventListener(\"click\", function (e) { if (e.target.hasAttribute(\"data-pclose\")) close(); });\r\n    document.addEventListener(\"keydown\", function (e) { if (e.key === \"Escape\") close(); });\r\n    body.addEventListener(\"click\", function (e) {\r\n      var btn = e.target.closest && e.target.closest(\".svh-pm-games-btn\");\r\n      if (!btn) return;\r\n      var host = document.getElementById(\"svh-pm-record\");\r\n      var i = parseInt(btn.getAttribute(\"data-season\"), 10);\r\n      var panel = document.getElementById(\"svh-pm-games-\" + i);\r\n      if (!host || !panel || !host._seasons) return;\r\n      if (panel.hasAttribute(\"hidden\")) {\r\n        panel.removeAttribute(\"hidden\"); btn.classList.add(\"open\");\r\n        if (!panel.getAttribute(\"data-loaded\")) {\r\n          panel.setAttribute(\"data-loaded\", \"1\");\r\n          panel.innerHTML = '<p class=\"svh-pm-empty\">Einzelspiele werden geladen \u2026<\/p>';\r\n          loadGames(host._player, host._seasons[i]).then(function (games) { renderGames(panel, games); }).catch(function () { panel.innerHTML = '<p class=\"svh-pm-empty\">Einzelspiele konnten nicht geladen werden.<\/p>'; });\r\n        }\r\n      } else {\r\n        panel.setAttribute(\"hidden\", \"\"); btn.classList.remove(\"open\");\r\n      }\r\n    });\r\n    body.addEventListener(\"click\", function (e) {\r\n      var btn = e.target.closest && e.target.closest(\"[data-clubmatches]\");\r\n      if (!btn) return;\r\n      var host = document.getElementById(\"svh-pm-clubmatches\");\r\n      var panel = document.getElementById(\"svh-pm-clubgames\");\r\n      if (!host || !panel) return;\r\n      if (panel.hasAttribute(\"hidden\")) {\r\n        panel.removeAttribute(\"hidden\"); btn.classList.add(\"open\");\r\n        if (!panel.getAttribute(\"data-loaded\")) {\r\n          panel.setAttribute(\"data-loaded\", \"1\");\r\n          panel.innerHTML = '<p class=\"svh-pm-empty\">Vereinsmatches werden geladen \\u2026<\/p>';\r\n          loadClubMatches(host._player).then(function (data) { renderClubOverview(panel, data); }).catch(function () { panel.innerHTML = '<p class=\"svh-pm-empty\">Vereinsmatches konnten nicht geladen werden.<\/p>'; });\r\n        }\r\n      } else {\r\n        panel.setAttribute(\"hidden\", \"\"); btn.classList.remove(\"open\");\r\n      }\r\n    });\r\n    body.addEventListener(\"click\", function (e) {\r\n      var pb = e.target.closest && e.target.closest(\"[data-clubpage]\");\r\n      if (!pb) return;\r\n      var panel = document.getElementById(\"svh-pm-clubgames\");\r\n      if (!panel || !panel._data) return;\r\n      panel._page = (panel._page || 0) + (pb.getAttribute(\"data-clubpage\") === \"next\" ? 1 : -1);\r\n      renderClubPage(panel);\r\n    });\r\n  })();\r\n\r\n  \/* Ligatabellen - aktuelle Saison (2k Dart Software) *\/\r\n  (function () {\r\n    var API = \"https:\/\/backend-ddv.3k-darts.com\/2k-backend-ddv\/api\/v1\/frontend\";\r\n    \/* phase = Liga-Phase, um die Team-Liste aus dem Spielplan abzuleiten, falls die\r\n       Tabelle im Backend noch nicht eingerichtet ist (dann: alle Teams bei 0). *\/\r\n    var TABLES = [\r\n      { ev: 1442, phase: 2136, host: \"svh-table-a\" },\r\n      { ev: 1455, phase: 2149, host: \"svh-table-b\" }\r\n    ];\r\n\r\n    function esc(s) { return String(s == null ? \"\" : s).replace(\/[&<>\"']\/g, function (c) { return { \"&\": \"&amp;\", \"<\": \"&lt;\", \">\": \"&gt;\", '\"': \"&quot;\", \"'\": \"&#39;\" }[c]; }); }\r\n    function isUs(n) { return \/^\\s*SV\\s*Hage\\b\/i.test(n || \"\"); }\r\n\r\n    function renderRows(host, rows) {\r\n      var body = rows.map(function (e, i) {\r\n        var us = isUs(e.name);\r\n        var pl = (e.placement == null || e.placement === \"\") ? (i + 1) : e.placement;\r\n        pl = String(pl).replace(\/\\.\\s*$\/, \"\");\r\n        return '<tr class=\"' + (us ? \"us\" : \"\") + '\">' +\r\n          '<td class=\"pl\">' + esc(pl) + '<\/td>' +\r\n          '<td class=\"l team\" title=\"' + esc(e.name) + '\">' + esc(e.name) + '<\/td>' +\r\n          '<td>' + (e.sp || 0) + '<\/td>' +\r\n          '<td>' + (e.s || 0) + '<\/td>' +\r\n          '<td>' + (e.u || 0) + '<\/td>' +\r\n          '<td>' + (e.n || 0) + '<\/td>' +\r\n          '<td>' + (e.sets1 || 0) + ':' + (e.sets2 || 0) + '<\/td>' +\r\n          '<td class=\"pts\">' + (e.pts1 || 0) + ':' + (e.pts2 || 0) + '<\/td>' +\r\n          '<\/tr>';\r\n      }).join(\"\");\r\n      host.innerHTML = '<table class=\"svh-tbl\"><thead><tr>' +\r\n        '<th class=\"l\">#<\/th><th class=\"l\">Team<\/th><th>Sp<\/th><th>S<\/th><th>U<\/th><th>N<\/th><th>S\u00e4tze<\/th><th>Pkt<\/th>' +\r\n        '<\/tr><\/thead><tbody>' + body + '<\/tbody><\/table>';\r\n    }\r\n\r\n    function fromEntries(entries) {\r\n      return entries.map(function (e) {\r\n        return {\r\n          placement: e.placement,\r\n          name: e.participantName || (e.participant && e.participant.displayName) || \"?\",\r\n          sp: e.matchCount, s: e.win, u: e.tie, n: e.lost,\r\n          sets1: e.sets1, sets2: e.sets2, pts1: e.points1, pts2: e.points2\r\n        };\r\n      });\r\n    }\r\n\r\n    function teamsFromSchedule(ev, phase) {\r\n      return fetch(API + \"\/event\/\" + ev + \"\/phase\/\" + phase).then(function (r) { return r.json(); }).then(function (ph) {\r\n        var rounds = (ph.rounds || []).slice().sort(function (a, b) { return new Date(a.dateFrom) - new Date(b.dateFrom); }).slice(0, 3);\r\n        return Promise.all(rounds.map(function (rd) {\r\n          return fetch(API + \"\/event\/\" + ev + \"\/phase\/\" + phase + \"\/round\/\" + rd.id).then(function (r) { return r.json(); }).then(function (rj) { return rj.matches || []; }).catch(function () { return []; });\r\n        })).then(function (lists) {\r\n          var set = {};\r\n          lists.forEach(function (ms) { ms.forEach(function (m) {\r\n            if (m.participantHome && m.participantHome.displayName) set[m.participantHome.displayName] = 1;\r\n            if (m.participantGuest && m.participantGuest.displayName) set[m.participantGuest.displayName] = 1;\r\n          }); });\r\n          return Object.keys(set).sort(function (a, b) { return a.localeCompare(b, \"de\"); });\r\n        });\r\n      });\r\n    }\r\n\r\n    TABLES.forEach(function (t) {\r\n      var host = document.getElementById(t.host);\r\n      if (!host) return;\r\n      fetch(API + \"\/event\/\" + t.ev + \"\/phase\/0\/round\/0\/table\")\r\n        .then(function (r) { return r.json(); })\r\n        .then(function (j) {\r\n          var grp = (j.tableEntries || [])[0];\r\n          var entries = (grp && grp.tableEntries) || [];\r\n          if (entries.length) { renderRows(host, fromEntries(entries)); return; }\r\n          return teamsFromSchedule(t.ev, t.phase).then(function (teams) {\r\n            if (!teams.length) { host.innerHTML = '<div class=\"svh-table-empty\">Die Tabelle startet mit dem ersten Spieltag am 21.08.2026.<\/div>'; return; }\r\n            renderRows(host, teams.map(function (name, i) {\r\n              return { placement: i + 1, name: name, sp: 0, s: 0, u: 0, n: 0, sets1: 0, sets2: 0, pts1: 0, pts2: 0 };\r\n            }));\r\n          });\r\n        })\r\n        .catch(function () { host.innerHTML = '<div class=\"svh-table-empty\">Tabelle konnte nicht geladen werden.<\/div>'; });\r\n    });\r\n  })();\r\n<\/script>\t\t\t\t<\/div>\n\t\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>SV Hage Darts Steeldart in Hage Aktuelles Mannschaften Tabelle Rekorde Pokal Vereinsheim Probetraining Ein Verein f\u00fcr alle \u00b7 Von jung bis alt \u00b7 F\u00fcr jede und jeden SV HageDartsam Board. Aus den ersten Pfeilen am Board ist eine der lebendigsten Sparten des Vereins geworden: vier Mannschaften, \u00fcber 30 aktive Spieler [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-1287","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/dart.scubyhome.de\/wordpress\/index.php\/wp-json\/wp\/v2\/pages\/1287","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dart.scubyhome.de\/wordpress\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/dart.scubyhome.de\/wordpress\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/dart.scubyhome.de\/wordpress\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dart.scubyhome.de\/wordpress\/index.php\/wp-json\/wp\/v2\/comments?post=1287"}],"version-history":[{"count":184,"href":"https:\/\/dart.scubyhome.de\/wordpress\/index.php\/wp-json\/wp\/v2\/pages\/1287\/revisions"}],"predecessor-version":[{"id":1686,"href":"https:\/\/dart.scubyhome.de\/wordpress\/index.php\/wp-json\/wp\/v2\/pages\/1287\/revisions\/1686"}],"wp:attachment":[{"href":"https:\/\/dart.scubyhome.de\/wordpress\/index.php\/wp-json\/wp\/v2\/media?parent=1287"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}