/* =============================================================
   Badhub – main.css
   Mobile-First · Kein Framework · Vanilla CSS
   Farben: #003366 Dunkelblau · #B51218 Rot · #fff Weiß
   ============================================================= */

/* ── CSS-Variablen ─────────────────────────────────────────── */
:root {
    --primary:      #003366;
    --primary-dk:   #002244;
    --accent:       #B51218;
    --accent-dk:    #911016;
    --white:        #ffffff;
    --gray-50:      #f8fafc;
    --gray-100:     #f1f3f5;
    --gray-200:     #e9ecef;
    --gray-300:     #dee2e6;
    --gray-400:     #adb5bd;
    --gray-600:     #6c757d;
    --gray-700:     #495057;
    --gray-800:     #343a40;
    --green:        #198754;
    --green-light:  #d1fae5;
    --blue-light:   #dbeafe;
    --blue-text:    #1d4ed8;
    --shadow-sm:    0 1px 3px rgba(0,0,0,.08);
    --shadow:       0 2px 8px rgba(0,0,0,.11);
    --radius:       6px;
    --transition:   0.15s ease;
}

/* ── Reset ─────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html { font-size: 16px; -webkit-text-size-adjust: 100%; }

body {
    font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    font-size: 0.9375rem; /* 15px */
    line-height: 1.55;
    color: var(--gray-800);
    background: var(--gray-50);
}

a { color: var(--primary); text-decoration: none; }
a:hover { text-decoration: underline; color: var(--accent); }
img { display: block; max-width: 100%; }

/* ── Layout ────────────────────────────────────────────────── */
.container {
    width: 100%;
    max-width: 1100px;
    margin: 0 auto;
    padding: 0 1rem;
}

.main-content { padding: 1.5rem 0 3rem; }

/* ── Header ────────────────────────────────────────────────── */
.site-header {
    background: var(--white);
    color: var(--primary);
    border-bottom: 3px solid var(--accent);
    box-shadow: 0 2px 6px rgba(0,0,0,.1);
    position: sticky;
    top: 0;
    z-index: 100;
}

.site-header .container {
    display: flex;
    align-items: center;
    height: 60px;
    gap: 1.5rem;
}

.site-logo {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--primary);
    letter-spacing: -.01em;
    white-space: nowrap;
    flex-shrink: 0;
}
.site-logo:hover { text-decoration: none; color: var(--primary); opacity: .75; }
.site-logo span { color: var(--accent); }

.site-nav {
    display: flex;
    gap: 1.25rem;
    list-style: none;
    margin-left: auto;
    flex-wrap: wrap;
    justify-content: flex-end;
}

.nav-badge-beta {
    display: inline-block;
    font-size: .6rem;
    font-weight: 700;
    letter-spacing: .04em;
    color: #fff;
    background: #7b1fa2;
    border-radius: 3px;
    padding: 1px 4px;
    vertical-align: middle;
    margin-left: 3px;
    line-height: 1.4;
}
/* Liveticker-Menüpunkt. Wird nur angezeigt wenn isLivetickerActive()==true,
   der roter Pulsing-Dot macht ihn für Zuschauer auf Spieltagen sofort
   erkennbar. Siehe lib/helpers.php :: isLivetickerActive(). */
.nav-badge-live {
    display: inline-block;
    font-size: .6rem;
    font-weight: 700;
    letter-spacing: .04em;
    color: #fff;
    background: #d32f2f;
    border-radius: 3px;
    padding: 1px 4px;
    vertical-align: middle;
    margin-left: 3px;
    line-height: 1.4;
    position: relative;
}
.nav-badge-live::before {
    content: "";
    display: inline-block;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #fff;
    margin-right: 3px;
    vertical-align: 1px;
    animation: nav-live-pulse 1.4s ease-in-out infinite;
}
@keyframes nav-live-pulse {
    0%, 100% { opacity: 1; }
    50%      { opacity: 0.3; }
}
.site-nav a {
    color: var(--accent);
    font-size: 0.875rem;
    padding-bottom: 2px;
    border-bottom: 2px solid transparent;
    transition: color var(--transition), border-color var(--transition);
}
.site-nav a:hover,
.site-nav a.active {
    color: var(--accent);
    border-bottom-color: var(--accent);
    text-decoration: none;
}

/* ── Burger Menu ───────────────────────────────────────────── */
.burger-btn {
    display: none;
    flex-direction: column;
    justify-content: center;
    gap: 5px;
    width: 36px;
    height: 36px;
    background: none;
    border: none;
    cursor: pointer;
    padding: 4px;
    margin-left: auto;
}
.burger-btn span {
    display: block;
    width: 100%;
    height: 2px;
    background: var(--accent);
    border-radius: 2px;
    transition: transform .25s ease, opacity .25s ease;
}
.burger-btn.is-open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.burger-btn.is-open span:nth-child(2) { opacity: 0; }
.burger-btn.is-open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

@media (max-width: 640px) {
    .burger-btn { display: flex; }

    .site-nav {
        display: none;
        position: absolute;
        top: 100%;
        left: 0;
        right: 0;
        flex-direction: column;
        gap: 0;
        background: #fff;
        border-top: 2px solid var(--accent);
        box-shadow: 0 4px 12px rgba(0,0,0,.12);
        z-index: 200;
        padding: .5rem 0;
    }
    .site-nav.is-open { display: flex; }

    .site-nav a {
        padding: .75rem 1.25rem;
        border-bottom: none;
        font-size: 1rem;
        border-left: none;
        border-right: 3px solid transparent;
        text-align: right;
    }
    .site-nav a:hover,
    .site-nav a.active {
        background: color-mix(in srgb, var(--accent) 8%, #fff);
        border-right-color: var(--accent);
        border-bottom: none;
    }
}

/* ── Mobile Tile Menu ─────────────────────────────────────── */
.mobile-menu {
    display: none;
    position: fixed;
    inset: 0;
    z-index: 150;
}
.mobile-menu.is-open { display: block; }
@media (min-width: 641px) {
    .mobile-menu { display: none !important; }
}

.mobile-menu__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(0,0,0,.4);
    opacity: 0;
    transition: opacity .25s ease;
}
.mobile-menu.is-open .mobile-menu__backdrop { opacity: 1; }

.mobile-menu__panel {
    position: absolute;
    top: 97px;  /* home-strip (34px) + header (60px) + border (3px) */
    left: 0;
    right: 0;
    max-height: calc(100dvh - 97px);
    overflow-y: auto;
    background: var(--gray-50);
    border-top: 3px solid var(--accent);
    box-shadow: 0 8px 24px rgba(0,0,0,.15);
    transform: translateY(-12px);
    opacity: 0;
    transition: transform .25s cubic-bezier(.4,0,.2,1),
                opacity .2s ease;
    padding-bottom: 1rem;
}
.mobile-menu.is-open .mobile-menu__panel {
    transform: translateY(0);
    opacity: 1;
}

/* Suchfeld im Menü */
.mobile-menu__search {
    padding: 12px 16px 4px;
}
.mobile-menu__search-input {
    width: 100%;
    padding: 10px 12px 10px 38px;
    border: 1px solid var(--gray-300);
    border-radius: var(--radius);
    font-size: .9375rem;
    background: var(--white);
    appearance: none;
    -webkit-appearance: none;
}
.mobile-menu__search-input:focus {
    outline: 2px solid var(--accent);
    outline-offset: -1px;
    border-color: var(--accent);
}
.mobile-menu__search-wrap {
    position: relative;
}
.mobile-menu__search-icon {
    position: absolute;
    left: 11px;
    top: 50%;
    transform: translateY(-50%);
    width: 16px;
    height: 16px;
    pointer-events: none;
    opacity: .45;
}

/* Gruppen */
.mobile-menu__group {
    padding: 8px 16px 4px;
}
.mobile-menu__group-label {
    font-size: .6875rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--gray-600);
    margin: 0 0 8px 2px;
}

/* Grid */
.mobile-menu__grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
}

/* Einzelne Kachel */
.menu-tile {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 14px 4px 10px;
    background: var(--white);
    border-radius: var(--radius);
    box-shadow: var(--shadow-sm);
    text-decoration: none;
    color: var(--primary);
    border: 2px solid transparent;
    transition: background .15s ease, border-color .15s ease, transform .1s ease;
    -webkit-tap-highlight-color: transparent;
}
.menu-tile:hover { text-decoration: none; }
.menu-tile:active {
    transform: scale(.96);
    background: var(--gray-100);
}

/* Aktive Seite */
.menu-tile.is-active {
    border-color: var(--accent);
    background: color-mix(in srgb, var(--accent) 6%, var(--white));
}
.menu-tile.is-active .menu-tile__icon { background-color: var(--accent); }
.menu-tile.is-active .menu-tile__label {
    color: var(--accent);
    font-weight: 700;
}

/* Kachel-Label */
.menu-tile__label {
    font-size: .75rem;
    font-weight: 600;
    line-height: 1.2;
    text-align: center;
    color: var(--gray-800);
}

/* BETA-Badge */
.menu-tile__badge {
    position: absolute;
    top: 3px;
    right: 3px;
    font-size: .5rem;
    font-weight: 700;
    letter-spacing: .04em;
    color: #fff;
    background: #7b1fa2;
    border-radius: 3px;
    padding: 1px 4px;
    line-height: 1.4;
}

/* Schließen-Button */
.mobile-menu__close {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    width: 100%;
    padding: 10px 0;
    margin-top: 4px;
    border: none;
    background: transparent;
    color: var(--gray-400);
    font-size: .75rem;
    font-weight: 600;
    letter-spacing: .03em;
    cursor: pointer;
    transition: color .15s ease;
}
.mobile-menu__close:active {
    color: var(--gray-600);
}
.mobile-menu__close svg {
    opacity: .7;
}

/* Icons via CSS mask-image */
.menu-tile__icon {
    display: block;
    width: 26px;
    height: 26px;
    margin-bottom: 6px;
    background-color: var(--primary);
    -webkit-mask-size: contain;
    mask-size: contain;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
}

/* Trophy – Ligen */
.menu-tile__icon--ligen {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9H4.5a2.5 2.5 0 010-5H6'/%3E%3Cpath d='M18 9h1.5a2.5 2.5 0 000-5H18'/%3E%3Cpath d='M4 22h16'/%3E%3Cpath d='M10 14.66V17c0 .55-.47.98-.97 1.21C7.85 18.75 7 19.24 7 20h10c0-.76-.85-1.25-2.03-1.79C14.47 17.98 14 17.55 14 17v-2.34'/%3E%3Cpath d='M18 2H6v7a6 6 0 0012 0V2z'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9H4.5a2.5 2.5 0 010-5H6'/%3E%3Cpath d='M18 9h1.5a2.5 2.5 0 000-5H18'/%3E%3Cpath d='M4 22h16'/%3E%3Cpath d='M10 14.66V17c0 .55-.47.98-.97 1.21C7.85 18.75 7 19.24 7 20h10c0-.76-.85-1.25-2.03-1.79C14.47 17.98 14 17.55 14 17v-2.34'/%3E%3Cpath d='M18 2H6v7a6 6 0 0012 0V2z'/%3E%3C/svg%3E");
}
/* Calendar – Spielplan */
.menu-tile__icon--spielplan {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2'/%3E%3Cline x1='16' y1='2' x2='16' y2='6'/%3E%3Cline x1='8' y1='2' x2='8' y2='6'/%3E%3Cline x1='3' y1='10' x2='21' y2='10'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2'/%3E%3Cline x1='16' y1='2' x2='16' y2='6'/%3E%3Cline x1='8' y1='2' x2='8' y2='6'/%3E%3Cline x1='3' y1='10' x2='21' y2='10'/%3E%3C/svg%3E");
}
/* Medal – Turniere */
.menu-tile__icon--turniere {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='8' r='6'/%3E%3Cpath d='M15.477 12.89L17 22l-5-3-5 3 1.523-9.11'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='8' r='6'/%3E%3Cpath d='M15.477 12.89L17 22l-5-3-5 3 1.523-9.11'/%3E%3C/svg%3E");
}
/* Bar Chart – Statistik */
.menu-tile__icon--statistik {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='18' y1='20' x2='18' y2='10'/%3E%3Cline x1='12' y1='20' x2='12' y2='4'/%3E%3Cline x1='6' y1='20' x2='6' y2='14'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='18' y1='20' x2='18' y2='10'/%3E%3Cline x1='12' y1='20' x2='12' y2='4'/%3E%3Cline x1='6' y1='20' x2='6' y2='14'/%3E%3C/svg%3E");
}
/* Trending Up – Rangliste */
.menu-tile__icon--rangliste {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='23 6 13.5 15.5 8.5 10.5 1 18'/%3E%3Cpolyline points='17 6 23 6 23 12'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='23 6 13.5 15.5 8.5 10.5 1 18'/%3E%3Cpolyline points='17 6 23 6 23 12'/%3E%3C/svg%3E");
}
/* Swords – HeadsUp */
.menu-tile__icon--headsup {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.5 17.5L3 6V3h3l11.5 11.5'/%3E%3Cpath d='M13 19l6-6'/%3E%3Cpath d='M16 16l4 4'/%3E%3Cpath d='M19 21l2-2'/%3E%3Cpath d='M9.5 6.5L21 18v3h-3L6.5 9.5'/%3E%3Cpath d='M11 5l-6 6'/%3E%3Cpath d='M8 8L4 4'/%3E%3Cpath d='M5 3L3 5'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.5 17.5L3 6V3h3l11.5 11.5'/%3E%3Cpath d='M13 19l6-6'/%3E%3Cpath d='M16 16l4 4'/%3E%3Cpath d='M19 21l2-2'/%3E%3Cpath d='M9.5 6.5L21 18v3h-3L6.5 9.5'/%3E%3Cpath d='M11 5l-6 6'/%3E%3Cpath d='M8 8L4 4'/%3E%3Cpath d='M5 3L3 5'/%3E%3C/svg%3E");
}
/* Zap – BadiX */
.menu-tile__icon--badix {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolygon points='13 2 3 14 12 14 11 22 21 10 12 10 13 2'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolygon points='13 2 3 14 12 14 11 22 21 10 12 10 13 2'/%3E%3C/svg%3E");
}
/* Shield – Vereine */
.menu-tile__icon--vereine {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z'/%3E%3C/svg%3E");
}
/* Map Pin – Hallen */
.menu-tile__icon--hallen {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0118 0z'/%3E%3Ccircle cx='12' cy='10' r='3'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0118 0z'/%3E%3Ccircle cx='12' cy='10' r='3'/%3E%3C/svg%3E");
}
/* Clock – Archiv */
.menu-tile__icon--archiv {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpolyline points='12 6 12 12 16 14'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpolyline points='12 6 12 12 16 14'/%3E%3C/svg%3E");
}

/* ── Breadcrumb ────────────────────────────────────────────── */
.breadcrumb {
    display: flex;
    flex-wrap: wrap;
    gap: .25rem;
    align-items: center;
    font-size: .8125rem;
    color: var(--gray-600);
    margin-bottom: 1.25rem;
}
.breadcrumb a { color: var(--gray-600); }
.breadcrumb a:hover { color: var(--accent); text-decoration: none; }
.breadcrumb-sep { color: var(--gray-400); padding: 0 .125rem; }

/* ── Page heading ──────────────────────────────────────────── */
.page-title {
    font-size: 1.375rem;
    font-weight: 700;
    color: var(--primary);
    margin-bottom: .25rem;
}
.page-subtitle { color: var(--gray-600); font-size: .875rem; margin-bottom: 1.5rem; }

.section-title {
    font-size: .9375rem;
    font-weight: 700;
    color: var(--primary);
    margin-bottom: .875rem;
    display: flex;
    align-items: center;
    gap: .5rem;
}
.section-title::after {
    content: '';
    flex: 1;
    height: 2px;
    background: var(--gray-200);
    border-radius: 1px;
}

/* ── Season / Filter bar ───────────────────────────────────── */
.season-bar,
.filter-bar {
    display: flex;
    align-items: flex-end;
    flex-wrap: wrap;
    gap: .75rem;
    padding: .875rem 1rem;
    background: var(--white);
    border-radius: var(--radius);
    box-shadow: var(--shadow-sm);
    margin-bottom: 1.25rem;
}

.filter-group {
    display: flex;
    flex-direction: column;
    gap: .25rem;
    min-width: 0;
}
.filter-group label,
.season-bar > label {
    font-size: .75rem;
    font-weight: 600;
    color: var(--gray-600);
    text-transform: uppercase;
    letter-spacing: .04em;
    white-space: nowrap;
}

.season-bar select,
.filter-bar select,
.filter-group select {
    padding: .4rem 2rem .4rem .625rem;
    border: 1px solid var(--gray-200);
    border-radius: var(--radius);
    background: var(--gray-50);
    font-size: .875rem;
    color: var(--gray-800);
    cursor: pointer;
    -webkit-appearance: none;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath fill='%236c757d' d='M5 6L0 0h10z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right .625rem center;
    max-width: 240px;
}
.season-bar select:focus,
.filter-group select:focus { outline: 2px solid var(--accent); outline-offset: 1px; }

/* ── Buttons ───────────────────────────────────────────────── */
.btn {
    display: inline-flex;
    align-items: center;
    gap: .375rem;
    padding: .4rem .9rem;
    border-radius: var(--radius);
    font-size: .875rem;
    font-weight: 600;
    border: none;
    cursor: pointer;
    transition: background var(--transition), color var(--transition);
    white-space: nowrap;
    line-height: 1.4;
}
.btn--primary { background: var(--accent); color: var(--white); }
.btn--primary:hover { background: var(--accent-dk); text-decoration: none; color: var(--white); }
.btn--ghost { background: transparent; color: var(--primary); border: 1px solid var(--primary); }
.btn--ghost:hover { background: var(--primary); color: var(--white); text-decoration: none; }
.btn--sm { padding: .25rem .625rem; font-size: .8125rem; }

/* ── Card ──────────────────────────────────────────────────── */
.card {
    background: var(--white);
    border-radius: var(--radius);
    box-shadow: var(--shadow-sm);
    overflow: hidden;
    margin-bottom: 1.25rem;
}
.card-header {
    padding: .75rem 1rem;
    background: var(--primary);
    color: var(--white);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .5rem;
}
.card-header h2 { font-size: .9375rem; font-weight: 700; }
.card-header a { font-size: .8125rem; color: rgba(255,255,255,.7); flex-shrink: 0; }
.card-header a:hover { color: var(--accent); text-decoration: none; }

/* ── Match rows (Übersicht) ────────────────────────────────── */
.match-list { list-style: none; }

.match-row {
    display: flex;
    align-items: center;
    gap: .625rem;
    padding: .625rem 1rem;
    border-bottom: 1px solid var(--gray-100);
    font-size: .875rem;
    transition: background var(--transition);
}
.match-row:last-child { border-bottom: none; }
.match-row:hover { background: var(--gray-50); }

.match-date {
    flex-shrink: 0;
    width: 3.5rem;
    font-size: .8125rem;
    color: var(--gray-600);
    line-height: 1.3;
    text-align: center;
}
.match-date b { display: block; font-size: .6875rem; font-weight: 600; color: var(--gray-400); text-transform: uppercase; }
.match-date .match-time { display: block; font-size: .75rem; margin-top: .125rem; color: var(--primary); font-weight: 600; }

.match-teams {
    flex: 1;
    min-width: 0;
}
.match-teams-names {
    font-weight: 500;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.match-group { font-size: .75rem; color: var(--gray-600); margin-top: .125rem; }
.match-group a { color: var(--gray-600); }
.match-group a:hover { color: var(--accent); }

.match-score {
    flex-shrink: 0;
    font-size: 1.0625rem;
    font-weight: 700;
    color: var(--primary);
    min-width: 2.5rem;
    text-align: center;
    letter-spacing: -.01em;
}

/* ── Status Badges ─────────────────────────────────────────── */
.badge {
    display: inline-flex;
    align-items: center;
    gap: .25rem;
    padding: .2em .6em;
    border-radius: 99px;
    font-size: .75rem;
    font-weight: 600;
    white-space: nowrap;
    line-height: 1.4;
    flex-shrink: 0;
}
.badge--open       { background: var(--gray-100); color: var(--gray-600); }
.badge--live       { background: var(--green-light); color: var(--green); }
.badge--completed  { background: var(--blue-light); color: var(--blue-text); }
.badge--confirmed  { background: #d1fae5; color: #065f46; }
.badge--warning    { background: #fef9c3; color: #854d0e; }
.badge--annulled   { background: var(--gray-100); color: var(--gray-400); text-decoration: line-through; }
.badge--playoff    { background: #ede9fe; color: #5b21b6; font-size: .65rem; }

/* Live: pulsierender Punkt */
.badge--live::before {
    content: '';
    display: block;
    width: 6px; height: 6px;
    border-radius: 50%;
    background: var(--green);
    animation: blink 1.5s infinite;
}
@keyframes blink { 0%,100%{opacity:1} 50%{opacity:.3} }

/* ── Spielplan Table ───────────────────────────────────────── */
.spielplan-wrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    border-radius: var(--radius);
    box-shadow: var(--shadow-sm);
    background: var(--white);
}

.spielplan-table {
    width: 100%;
    border-collapse: collapse;
    font-size: .875rem;
    min-width: 500px;
}
.spielplan-table thead th {
    padding: .625rem .75rem;
    text-align: left;
    font-size: .75rem;
    font-weight: 700;
    color: var(--gray-600);
    text-transform: uppercase;
    letter-spacing: .04em;
    border-bottom: 2px solid var(--gray-200);
    white-space: nowrap;
    background: var(--gray-50);
}
.spielplan-table tbody tr {
    border-bottom: 1px solid var(--gray-100);
    transition: background var(--transition);
}
.spielplan-table tbody tr:last-child { border-bottom: none; }
.spielplan-table tbody tr:hover { background: var(--gray-50); }
.spielplan-table td {
    padding: .625rem .75rem;
    vertical-align: middle;
}
.spielplan-table .td-num {
    color: var(--gray-400);
    font-size: .8125rem;
    text-align: right;
    width: 2.5rem;
}
.spielplan-table .td-date {
    white-space: nowrap;
    color: var(--gray-800);
    font-size: .875rem;
}
.spielplan-table .td-date small { display: block; font-size: .75rem; color: var(--gray-600); }
.spielplan-table .td-team { font-weight: 500; }
.spielplan-table .td-team--home { padding-right: .25rem; }
.spielplan-table .td-team--guest { padding-left: .25rem; }
.spielplan-table .td-score {
    font-weight: 700;
    color: var(--primary);
    text-align: center;
    white-space: nowrap;
    width: 4rem;
    font-size: 1rem;
}
.spielplan-table .td-status { width: 7.5rem; }
.score-link {
    color: var(--primary);
    font-weight: 700;
    text-decoration: none;
}
.score-link:hover { color: var(--accent); }

/* Row-Zustand: Live, Annulliert */
.spielplan-table tr.row--live { background: #f0fdf4; }
.spielplan-table tr.row--annulled td { opacity: .5; }

/* ── Group Picker ──────────────────────────────────────────── */
.group-picker { margin-bottom: 1.25rem; }
.group-picker-section {
    background: var(--white);
    border-radius: var(--radius);
    box-shadow: var(--shadow-sm);
    overflow: hidden;
    margin-bottom: .75rem;
}
.group-picker-section h3 {
    font-size: .8125rem;
    font-weight: 700;
    color: var(--white);
    background: var(--primary);
    padding: .5rem 1rem;
    text-transform: uppercase;
    letter-spacing: .05em;
}
.group-picker-list { list-style: none; }
.group-picker-list li a {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: .625rem 1rem;
    color: var(--gray-800);
    font-size: .875rem;
    border-bottom: 1px solid var(--gray-100);
    transition: background var(--transition);
}
.group-picker-list li:last-child a { border-bottom: none; }
.group-picker-list li a:hover { background: var(--gray-50); color: var(--primary); text-decoration: none; }
.group-picker-list li a::after { content: '›'; color: var(--gray-400); font-size: 1.1rem; }
.group-picker-section--hobby h3 { background: var(--green, #16a34a); }

/* Grid: picker-Abschnitte auf Desktop nebeneinander */
@media (min-width: 768px) {
    .group-picker { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: .75rem; }
    .group-picker-section { margin-bottom: 0; }
}

/* ── Stats Strip ───────────────────────────────────────────── */
.stats-strip {
    display: flex;
    flex-wrap: wrap;
    gap: .75rem;
    margin-bottom: 1.5rem;
}
.stat-item {
    flex: 1;
    min-width: 110px;
    background: var(--white);
    border-radius: var(--radius);
    box-shadow: var(--shadow-sm);
    padding: .875rem 1rem;
    border-left: 3px solid var(--accent);
}
.stat-item__value { font-size: 1.5rem; font-weight: 700; color: var(--primary); line-height: 1; }
.stat-item__label { font-size: .75rem; color: var(--gray-600); margin-top: .25rem; }

/* ── Two-column grid ───────────────────────────────────────── */
.grid-2 { display: grid; grid-template-columns: 1fr; gap: 1.25rem; }
@media (min-width: 768px) { .grid-2 { grid-template-columns: 1fr 1fr; } }

/* ── Empty state ───────────────────────────────────────────── */
.empty-state {
    padding: 2.5rem 1rem;
    text-align: center;
    color: var(--gray-600);
    font-size: .875rem;
}

/* ── Cross-federation player notice ───────────────────────── */
.sp-crossfed-notice {
    display: flex;
    align-items: center;
    gap: .5rem;
    padding: .75rem 1rem;
    font-size: .875rem;
    color: var(--gray-700);
    background: #f0f6ff;
    border-left: 3px solid #4A90D9;
}
.sp-crossfed-notice__icon { flex-shrink: 0; }
.sp-crossfed-notice__link {
    margin-left: auto;
    white-space: nowrap;
    font-weight: 600;
    color: #2563EB;
    text-decoration: none;
}
.sp-crossfed-notice__link:hover { text-decoration: underline; }

/* ── Group info bar ────────────────────────────────────────── */
.group-info-bar {
    display: flex;
    flex-wrap: wrap;
    gap: .75rem;
    align-items: center;
    padding: .75rem 1rem;
    background: var(--white);
    border-radius: var(--radius);
    box-shadow: var(--shadow-sm);
    margin-bottom: 1.25rem;
    font-size: .875rem;
}
.group-info-bar strong { color: var(--primary); }
.group-info-bar .group-meta { color: var(--gray-600); font-size: .8125rem; }

/* ── Staffel-Navigation (Vor/Zurück) ───────────────────────── */
.staffel-nav {
    display: flex;
    justify-content: space-between;
    gap: .5rem;
    margin-bottom: 1.25rem;
}
.staffel-nav__btn {
    display: inline-flex;
    align-items: center;
    padding: .375rem .75rem;
    border-radius: var(--radius);
    border: 1px solid var(--gray-200);
    background: var(--white);
    color: var(--primary);
    font-size: .8125rem;
    text-decoration: none;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 48%;
    transition: background var(--transition), border-color var(--transition);
}
.staffel-nav__btn:hover { background: var(--gray-50); border-color: var(--gray-400); text-decoration: none; color: var(--accent); }
.staffel-nav__btn--disabled { border-style: dashed; color: var(--gray-400); cursor: default; pointer-events: none; min-width: 1px; }
.staffel-nav__btn--next { margin-left: auto; }

/* ── Footer ────────────────────────────────────────────────── */
.site-footer {
    border-top: 1px solid var(--gray-200);
    padding: 1.25rem 0;
    color: var(--gray-600);
    font-size: .8125rem;
    margin-top: auto;
}
.site-footer .container {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: .5rem;
}
.site-footer a { color: var(--gray-600); }
.site-footer a:hover { color: var(--accent); }

/* ── Utility ───────────────────────────────────────────────── */
.text-muted  { color: var(--gray-600); }
.text-sm     { font-size: .8125rem; }
.text-xs     { font-size: .75rem; }
.text-right  { text-align: right; }
.text-center { text-align: center; }
.mt-1 { margin-top: .5rem; }
.mt-2 { margin-top: 1rem; }
.mb-1 { margin-bottom: .5rem; }
.mb-2 { margin-bottom: 1rem; }
.d-none { display: none; }
@media (max-width: 639px) { .hide-sm { display: none !important; } }
@media (min-width: 640px) { .show-sm { display: none !important; } }

/* ── Bereich-Buttons (Senioren / Jugend / Schüler / Hobby) ─────────────── */
.bereich-nav {
    display: flex;
    flex-wrap: wrap;
    gap: .375rem;
    margin-bottom: .875rem;
}
.bereich-btn {
    display: inline-block;
    padding: .375rem .875rem;
    border-radius: 2rem;
    font-size: .875rem;
    font-weight: 500;
    color: var(--gray-700);
    background: var(--gray-100);
    border: 1px solid var(--gray-200);
    text-decoration: none;
    transition: background var(--transition), color var(--transition), border-color var(--transition);
    white-space: nowrap;
}
.bereich-btn:hover { background: var(--gray-200); color: var(--primary); text-decoration: none; }
.bereich-btn.active {
    background: var(--primary);
    color: var(--white);
    border-color: var(--primary);
}

/* Kategorie-Trenner (nur bei "Alle"-Ansicht sichtbar, sonst hidden) */
.kategorie-trenner {
    grid-column: 1 / -1;
    display: flex;
    align-items: center;
    gap: 1rem;
    color: var(--gray-600);
    font-weight: 600;
    font-size: .875rem;
    margin: .25rem 0;
}
.kategorie-trenner::before,
.kategorie-trenner::after {
    content: '';
    flex: 1;
    border-top: 1px solid var(--gray-200);
}
.kategorie-trenner--hobby { color: var(--green); }
.kategorie-trenner--hobby::before,
.kategorie-trenner--hobby::after { border-top-color: var(--green-light); }

.season-bar__sep { color: var(--gray-300); margin: 0 .25rem; }
.season-bar__hobby-label { color: var(--green) !important; }
.season-bar__hobby-select { border-color: var(--green-light); }

/* ── Klickbare Spielplanzeile ──────────────────────────────────────────── */
.spielplan-table tr.row--clickable { cursor: pointer; }
.spielplan-table tr.row--clickable:hover { background: #eef2ff; }

/* ── Tabelle ───────────────────────────────────────────────── */
.tabelle-wrap { overflow-x: auto; margin-bottom: 1.25rem; }
.tabelle-table {
    width: 100%;
    border-collapse: collapse;
    background: var(--white);
    border-radius: var(--radius);
    box-shadow: var(--shadow-sm);
    overflow: hidden;
    font-size: .875rem;
}
.tabelle-table th {
    padding: .625rem .75rem;
    font-size: .75rem;
    font-weight: 700;
    color: var(--gray-600);
    text-transform: uppercase;
    letter-spacing: .04em;
    border-bottom: 2px solid var(--gray-200);
    background: var(--gray-50);
    white-space: nowrap;
}
.tabelle-table td {
    padding: .625rem .75rem;
    vertical-align: middle;
    border-bottom: 1px solid var(--gray-100);
}
.tabelle-table tbody tr:last-child td { border-bottom: none; }
.tabelle-table tbody tr:hover { background: var(--gray-50); }
.tabelle-table tr.row--clickable { cursor: pointer; }
.tabelle-table .td-rank {
    width: 2.75rem;
    font-weight: 700;
    color: var(--primary);
    white-space: nowrap;
}
.tabelle-table .td-team { font-weight: 500; overflow-wrap: anywhere; }
.tabelle-table .td-num { text-align: center; width: 2.25rem; }
.tabelle-table .td-score { text-align: center; white-space: nowrap; font-variant-numeric: tabular-nums; }

@media (max-width: 640px) {
    .tabelle-table th, .tabelle-table td { padding: .5rem .3rem; }
    .tabelle-table .td-rank { width: 2rem; }
    .tabelle-table .td-num  { width: 1.625rem; }
}

/* Auf-/Abstieg Zeilen-Farben */
.tabelle-table tr.row--rise td:first-child          { border-left: 3px solid var(--success); }
.tabelle-table tr.row--rise-relegation td:first-child { border-left: 3px solid var(--success); }
.tabelle-table tr.row--fall td:first-child           { border-left: 3px solid var(--danger); }
.tabelle-table tr.row--relegation td:first-child     { border-left: 3px solid var(--danger); }

/* Zurückgezogene / aufgelöste Mannschaft */
.tabelle-table tr.row--terminated { opacity: .6; }

/* ── Spieler-Stats: Filter-Bar, Pills, Quote-Bar, Disc-Breakdown ───────── */
.ps-flag { margin-right: .2rem; }
.ps-disc { font-size: .7rem; color: var(--gray-400); margin-top: .1rem; white-space: nowrap; }
.ps-filter-bar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .4rem .6rem;
    margin-bottom: .9rem;
    padding-bottom: .75rem;
    border-bottom: 1px solid var(--gray-100);
}
.ps-filter-bar select {
    font-size: .8rem;
    padding: .3rem .6rem;
    border: 1px solid var(--gray-200);
    border-radius: 6px;
    background: #fff;
    color: var(--gray-700);
    cursor: pointer;
}
.ps-filter-pill {
    display: inline-flex;
    align-items: center;
    padding: 4px 10px;
    border-radius: 999px;
    font-size: .75rem;
    font-weight: 600;
    border: 1px solid var(--gray-200);
    background: #fff;
    color: var(--gray-600);
    cursor: pointer;
    transition: border-color .12s, color .12s;
    -webkit-tap-highlight-color: transparent;
}
.ps-filter-pill:hover  { border-color: var(--accent); color: var(--accent); }
.ps-filter-pill.active { background: var(--accent); border-color: var(--accent); color: #fff; }
.ps-sort-pill {
    display: inline-flex;
    align-items: center;
    padding: 4px 10px;
    border-radius: 999px;
    font-size: .75rem;
    font-weight: 600;
    border: 1px solid var(--gray-200);
    background: #fff;
    color: var(--gray-600);
    cursor: pointer;
    transition: border-color .12s, color .12s;
    -webkit-tap-highlight-color: transparent;
}
.ps-sort-pill:hover  { border-color: var(--accent); color: var(--accent); }
.ps-sort-pill.active { background: var(--accent); border-color: var(--accent); color: #fff; }
.ps-filter-group { display: inline-flex; gap: .2rem; }
.ps-filter-sep { width: 1px; background: var(--gray-200); align-self: stretch; margin: 0 .2rem; }
.ps-toggle-label {
    font-size: .78rem;
    color: var(--gray-500);
    display: flex;
    align-items: center;
    gap: .3rem;
    cursor: pointer;
    margin-left: auto;
}
.ps-quote-wrap { display: flex; align-items: center; gap: 6px; }
.ps-qbar { flex: 1; height: 5px; background: var(--gray-100); border-radius: 99px; overflow: hidden; min-width: 36px; max-width: 56px; }
.ps-qbar__fill { height: 100%; background: var(--accent); border-radius: 99px; }
.ps-pct { font-size: .8rem; font-weight: 600; white-space: nowrap; color: var(--gray-700); min-width: 2.8rem; }
.ps-diff { font-variant-numeric: tabular-nums; white-space: nowrap; }
.ps-diff--pos { color: var(--success); }
.ps-diff--neg { color: var(--danger); }
.ps-th { cursor: pointer; user-select: none; white-space: nowrap; }
.ps-th:hover { color: var(--accent); }
.ps-th.ps-sorted { color: var(--accent); }
.ps-sort-arrow { font-size: .65rem; opacity: .6; }
.ps-th.ps-sorted .ps-sort-arrow { opacity: 1; }
@media (max-width: 540px) {
    .ps-qbar { display: none; }
    .ps-toggle-label { margin-left: 0; }
}

/* Tendenz-Pfeile */
.arrow { font-size: .875rem; margin-left: .2em; }
.arrow--up         { color: var(--success); }
.arrow--down       { color: var(--danger); }
.arrow--relegation { color: var(--accent); }

/* Legende */
.tabelle-legende {
    display: flex;
    gap: 1rem;
    flex-wrap: wrap;
    font-size: .75rem;
    color: var(--gray-600);
    padding: .5rem 0;
}
.legend--rise       { color: var(--success); font-weight: 600; }
.legend--fall       { color: var(--danger);  font-weight: 600; }
.legend--relegation { color: var(--accent);  font-weight: 600; }

/* ── Begegnung / Spielbericht ──────────────────────────────── */

/* Kopfzeile */
.match-header {
    background: var(--white);
    border-radius: var(--radius);
    box-shadow: var(--shadow-sm);
    padding: 1.25rem 1.25rem 1rem;
    margin-bottom: 1.25rem;
}
.match-header-meta {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem .75rem;
    font-size: .8125rem;
    color: var(--gray-600);
    margin-bottom: .875rem;
    align-items: center;
}
.match-header-date { font-weight: 600; color: var(--gray-800); }
.match-header-teams {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    gap: .75rem;
    align-items: center;
    margin-bottom: .875rem;
}
.match-header-team--home { text-align: right; display: flex; flex-direction: column; align-items: flex-end; }
.match-header-team--guest { text-align: left; display: flex; flex-direction: column; align-items: flex-start; }
.match-header-team {
    font-size: 1.0625rem;
    font-weight: 700;
    color: var(--primary);
    line-height: 1.3;
}
.match-header-score {
    text-align: center;
    min-width: 5rem;
}
.score-big {
    font-size: 2rem;
    font-weight: 800;
    color: var(--primary);
    line-height: 1;
    display: block;
}
.score-totals {
    font-size: .75rem;
    color: var(--gray-500);
    margin-top: .35rem;
    display: flex;
    justify-content: center;
    gap: .35rem;
    flex-wrap: wrap;
}
.score-totals-sep { color: var(--gray-300); }
@media (max-width: 640px) {
    .score-totals { flex-direction: column; align-items: center; gap: .1rem; }
    .score-totals-sep { display: none; }
}
.team-logo-slot {
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: .375rem;
    border-radius: 6px;
    overflow: hidden;
}
.team-logo {
    display: block;
    width: 40px;
    height: 40px;
    object-fit: contain;
}
.team-logo-placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    background: #f1f5f9;
    border-radius: 6px;
    font-size: 1.375rem;
    line-height: 1;
}
.match-header-info {
    display: flex;
    align-items: center;
    gap: .5rem;
    font-size: .8125rem;
    color: var(--gray-600);
    border-top: 1px solid var(--gray-100);
    padding-top: .75rem;
}
.match-header-info__label {
    flex: 1;
    text-align: center;
}
.match-nav-arrow {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    font-size: 1rem;
    color: var(--accent);
    text-decoration: none;
    border: 1px solid var(--gray-200);
    border-radius: 6px;
    background: #fff;
    flex-shrink: 0;
    transition: background .15s, border-color .15s;
}
.match-nav-arrow:hover {
    background: var(--gray-100);
    border-color: var(--gray-300);
}
.match-nav-arrow--disabled {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    font-size: 1rem;
    color: var(--gray-300);
    border: 1px solid var(--gray-200);
    border-radius: 6px;
    background: var(--gray-50);
    flex-shrink: 0;
    cursor: default;
}

/* DSGVO-Hinweis */
.dsgvo-notice {
    background: #fffbea;
    border: 1px solid #fde68a;
    border-radius: var(--radius);
    padding: .625rem 1rem;
    font-size: .8125rem;
    color: #92400e;
    margin-bottom: 1rem;
}

/* Disziplinen-Tabelle */
.bericht-wrap { overflow-x: auto; margin-bottom: 1.25rem; }
.bericht-table {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
    background: var(--white);
    border-radius: var(--radius);
    box-shadow: var(--shadow-sm);
    overflow: hidden;
    font-size: .875rem;
}
.bericht-table th {
    padding: .5rem .75rem;
    font-size: .75rem;
    font-weight: 700;
    color: var(--gray-600);
    text-transform: uppercase;
    letter-spacing: .04em;
    border-bottom: 2px solid var(--gray-200);
    background: var(--gray-50);
    white-space: nowrap;
}
.bericht-table td {
    padding: .625rem .75rem;
    vertical-align: middle;
    border-bottom: 1px solid var(--gray-100);
}
.bericht-table tbody tr:last-child td { border-bottom: none; }
.disziplin-name {
    display: block;
    font-weight: 700;
    font-size: .75rem;
    color: var(--gray-500);
    text-transform: uppercase;
    letter-spacing: .04em;
    margin-bottom: .15rem;
}
.bericht-table .td-satz {
    text-align: center;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
    width: 22%;
}
.bericht-table .td-ergebnis {
    text-align: center;
    white-space: nowrap;
    width: 4rem;
    color: var(--gray-600);
    font-size: .8125rem;
}
.set-score {
    display: inline;
    font-size: .8125rem;
    color: var(--gray-700);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
.bericht-table { table-layout: fixed; }
.bericht-table .td-player { width: 39%; }
.bericht-table .td-player--home { text-align: right; }
.player-cell { display: flex; flex-direction: column; gap: .125rem; }
.td-player--home .player-cell { align-items: flex-end; }
.td-player--guest .player-cell { align-items: flex-start; }
.player-name { font-size: .875rem; line-height: 1.4; }
.beg-player-link { color: inherit; text-decoration: none; }
.beg-player-link:hover { color: var(--accent); text-decoration: underline; }
.name-short { display: none; }
@media (max-width: 640px) {
    .name-full  { display: none; }
    .name-short { display: inline; }
    .bericht-table td { padding: .5rem .4rem; }
    .bericht-table .td-player { width: 39%; }
    .bericht-table .td-satz   { width: 22%; }
    .set-score { display: block; text-align: center; }
}

/* Gewinner-Hervorhebung (explizite Klassen statt :first-of-type, da td-Mix) */
.bericht-table tr.won--home  .td-player--home  { color: var(--primary); font-weight: 600; }
.bericht-table tr.won--guest .td-player--guest { color: var(--primary); font-weight: 600; }

/* Satzzahlen-Hervorhebung wenn Satz gewonnen */
.set-score { color: var(--gray-700); }

/* Nationalitätsflagge */
.flag { display: inline-block; vertical-align: middle; margin: 0 .25em; line-height: 1; }
/* Twemoji rendert Flaggen als <img> – kein Descender-Space, kein Zeilenumbruch */
.flag img { height: 1em; width: auto; display: block; }

/* Ersatzspieler-Badge */
.badge--sub { background: #f3f4f6; color: var(--gray-600); border: 1px solid var(--gray-200); }

/* Bemerkungen unter Spielbericht */
.bericht-remarks {
    padding: .625rem 1rem;
    background: var(--gray-50);
    border-radius: var(--radius);
    border: 1px solid var(--gray-200);
}

/* Farb-Tokens für Auf-/Abstieg (falls noch nicht vorhanden) */
:root {
    --success: #16a34a;
    --danger:  #dc2626;
}

/* ── Spielergebnisse (unterhalb Tabelle) ────────────────── */
.section-heading {
    font-size: 1rem;
    font-weight: 600;
    color: var(--gray-800);
    margin: 2rem 0 .75rem;
    padding-bottom: .375rem;
    border-bottom: 2px solid var(--gray-200);
}

.ergebnisse-wrap { margin-bottom: 2rem; }

.ergebnisse-table {
    width: 100%;
    border-collapse: collapse;
    background: var(--white);
    border: 1px solid var(--gray-200);
    border-radius: var(--radius);
    overflow: hidden;
}
.ergebnisse-table thead th {
    padding: .4rem .75rem;
    background: var(--gray-50);
    border-bottom: 2px solid var(--gray-200);
    font-size: .75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--gray-600);
    white-space: nowrap;
}
.ergebnisse-table tbody tr { border-top: 1px solid var(--gray-100); }
.ergebnisse-table tbody tr:first-child { border-top: none; }
.ergebnisse-table td { padding: .5rem .75rem; vertical-align: middle; }
.ergebnisse-table tr.row--clickable { cursor: pointer; }
.ergebnisse-table tr.row--clickable:hover { background: #eef2ff; }
.ergebnisse-table .td-nr    { width: 3rem; text-align: center; }
.ergebnisse-table .td-status { width: 6rem; }
.ergebnisse-table .td-hall  { max-width: 12rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.score-placeholder { color: var(--gray-400); }
.ergebnisse-table .score-pt { font-weight: 400; }
.ergebnisse-table .score-pt.fw-bold { font-weight: 600; }
.score-link--live  { color: var(--green); }
.score-link--live:hover { color: var(--accent); }

/* Trennlinie zwischen gespielten und kommenden Spielen */
.ergebnisse-table tr.meetings-divider td {
    padding: .375rem .75rem;
    background: var(--gray-50);
    border-top: 2px solid var(--gray-200);
    font-size: .75rem;
    font-weight: 600;
    color: var(--gray-600);
    text-transform: uppercase;
    letter-spacing: .04em;
}



/* ── Mobile-Layout Begegnungen-Tabelle ───────────────────────── */
.fw-bold { font-weight: 600; }
.date-short-mob { display: none; }
.date-time-mob  { display: none; }

@media (max-width: 640px) {
    .ergebnisse-table thead { display: none; }

    /* Divider-Zeile: volle Breite */
    .ergebnisse-table tr.meetings-divider { display: block; }
    .ergebnisse-table tr.meetings-divider td { display: block; }

    /* Normale Zeilen: Card-Grid 3-spaltig */
    .ergebnisse-table tbody tr:not(.meetings-divider) {
        display: grid;
        grid-template-columns: 50px 1fr auto auto;
        grid-template-areas:
            "date home  score hall"
            "date guest score hall";
        align-items: center;
        padding: .375rem .5rem;
        gap: 0 .5rem;
    }
    .ergebnisse-table tbody tr:not(.meetings-divider) td { padding: 0; }

    .ergebnisse-table .td-nr,
    .ergebnisse-table .td-status { display: none; }

    .ergebnisse-table .td-date        { grid-area: date;  align-self: center; }
    .ergebnisse-table .td-team--home  { grid-area: home;  align-self: end;    padding-bottom: .1rem; font-size: .875rem; }
    .ergebnisse-table .td-team--guest { grid-area: guest; align-self: start;  padding-top: .1rem;    font-size: .875rem; }
    .ergebnisse-table .td-score       { grid-area: score; align-self: stretch; text-align: right;
                                        display: flex; flex-direction: column; justify-content: space-around; }
    .ergebnisse-table .td-score .score-link,
    .ergebnisse-table .td-score .score-link--live { display: flex; flex-direction: column;
                                        justify-content: space-around; height: 100%; }
    .ergebnisse-table .td-score .score-sep { display: none; }
    .ergebnisse-table .score-pt { font-weight: 400; }
    .ergebnisse-table .score-pt.fw-bold { font-weight: 600; }
    .ergebnisse-table .td-score .score-placeholder { align-self: center; }
    .ergebnisse-table .td-hall        { grid-area: hall;  align-self: center; display: block;
                                        font-size: .6875rem; color: var(--gray-500); line-height: 1.3;
                                        overflow: hidden; text-overflow: ellipsis; white-space: normal;
                                        max-width: none; text-align: right; }

    .date-long      { display: none; }
    .date-short-mob { display: block; font-size: .8125rem; color: var(--gray-700); font-weight: 500; line-height: 1.3; }
    .date-time-mob  { display: block; font-size: .75rem;   color: var(--gray-500); }
}

/* ── Vereinsseite ───────────────────────────────────────────── */
.verein-header {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    padding: 1.25rem;
    background: var(--white);
    border: 1px solid var(--gray-200);
    border-radius: var(--radius);
    box-shadow: var(--shadow-sm);
    margin-bottom: 1.5rem;
}
.verein-logo {
    flex-shrink: 0;
    width: 72px;
    height: 72px;
    object-fit: contain;
}
.verein-name { font-size: 1.25rem; font-weight: 700; color: var(--primary); margin-bottom: .125rem; }
.verein-city { font-size: .875rem; }

.verein-meta { display: flex; flex-wrap: wrap; gap: .25rem .75rem; margin-top: .375rem; }
.verein-meta__link { font-size: .8125rem; color: var(--primary); text-decoration: none; }
.verein-meta__link:hover { text-decoration: underline; }
.email-obf { color: var(--primary); text-decoration: none; cursor: pointer; }
.email-obf:hover { text-decoration: underline; }

.verein-hall { padding: .875rem 1rem; }
.verein-hall__name { font-weight: 600; margin-bottom: .2rem; }
.verein-hall__addr { font-size: .875rem; margin-bottom: .25rem; }
.verein-hall__courts { font-size: .8125rem; margin-top: .125rem; }
.verein-hall__remarks { font-size: .8125rem; margin-top: .375rem; white-space: pre-line; }
.verein-hall__badge {
    display: inline-block;
    font-size: .6875rem; font-weight: 600; text-transform: uppercase; letter-spacing: .03em;
    background: var(--primary); color: var(--white);
    border-radius: 3px; padding: .1rem .4rem;
    margin-left: .4rem; vertical-align: middle;
}
.verein-halls { display: grid; grid-template-columns: 1fr; gap: .625rem; }
.verein-halls > .verein-hall { margin-bottom: 0; }
@media (min-width: 640px) {
    .verein-halls { grid-template-columns: repeat(2, 1fr); }
}

/* ── Vereinsübersicht (vereine.php) ─────────────────────────────────────────── */
.verein-search-wrap { margin-bottom: 1rem; }
.verein-search-input {
    width: 100%; box-sizing: border-box;
    padding: .5rem .75rem;
    font-size: .9375rem;
    border: 2px solid var(--gray-200);
    border-radius: 6px;
    background: var(--white);
    color: var(--gray-800);
    outline: none;
    transition: border-color .15s;
}
.verein-search-input:focus { border-color: var(--primary); }
.verein-search-empty { text-align: center; color: var(--text-muted); padding: 1.5rem 0; margin: 0; }
.clubs-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: .75rem;
}
@media (min-width: 480px) {
    .clubs-grid { grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); }
}
.club-card {
    display: flex; flex-direction: column; align-items: center;
    text-align: center; gap: .5rem;
    padding: 1rem .75rem;
    background: var(--white);
    border: 1px solid var(--gray-200);
    border-radius: var(--radius);
    text-decoration: none; color: var(--text);
    transition: box-shadow var(--transition), border-color var(--transition);
}
.club-card:hover { box-shadow: 0 2px 8px rgba(0,0,0,.1); border-color: var(--primary); text-decoration: none; }
.club-card__logo { width: 48px; height: 48px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.club-card__logo img { max-width: 48px; max-height: 48px; object-fit: contain; }
.club-card__name { font-size: .875rem; font-weight: 600; line-height: 1.3; overflow-wrap: anywhere; }
.club-card__city { font-size: .75rem; margin-top: .1rem; }

/* ── Vereinsoffizielle ───────────────────────────────────────────────────────── */
.officials-list { list-style: none; }
.official-row {
    display: flex; flex-wrap: wrap; align-items: baseline;
    gap: .25rem .75rem;
    padding: .5rem 1rem;
    border-bottom: 1px solid var(--gray-100);
}
.officials-list li:last-child { border-bottom: none; }
.official-role { font-size: .8125rem; min-width: 12rem; flex-shrink: 0; }
.official-name { font-weight: 600; font-size: .875rem; }
.official-contact { font-size: .8125rem; color: var(--primary); text-decoration: none; }
.official-contact:hover { text-decoration: underline; }

.section-heading__sub {
    font-size: .8125rem;
    font-weight: 400;
    color: var(--gray-600);
    margin-left: .5rem;
}

/* ── Kader (verein.php) ──────────────────────────────────────────────────── */
.kader-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: .75rem;
    margin-bottom: 2rem;
}
@media (min-width: 640px) {
    .kader-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 960px) {
    .kader-grid { grid-template-columns: repeat(3, 1fr); }
}
.kader-card { padding: .875rem 1rem; }
.kader-card__title {
    font-weight: 600;
    font-size: .875rem;
    color: var(--gray-800);
    margin-bottom: .5rem;
}
.kader-league-btn {
    display: inline-flex;
    align-items: center;
    gap: .2rem;
    font-size: .6875rem;
    font-weight: 600;
    padding: .15rem .5rem;
    border-radius: 4px;
    border: 1px solid var(--accent);
    background: transparent;
    color: var(--accent);
    text-decoration: none;
    margin-bottom: .5rem;
    white-space: nowrap;
    transition: background .15s, color .15s;
}
.kader-league-btn::before {
    content: '↗';
    font-size: .625rem;
    line-height: 1;
}
.kader-league-btn:hover {
    background: var(--accent);
    color: var(--white);
    text-decoration: none;
}
.kader-league-btn--disabled {
    border-color: var(--gray-200);
    color: var(--gray-400);
    cursor: default;
    pointer-events: none;
}
.kader-league-btn--disabled::before { content: ''; }
.kader-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.kader-player {
    display: flex;
    align-items: center;
    gap: .3rem;
    font-size: .875rem;
    padding: .15rem 0;
}
.kader-player-link { color: inherit; text-decoration: none; }
.kader-player-link:hover { color: var(--accent); text-decoration: underline; }
.kader-sep {
    border: none;
    border-top: 1px solid var(--gray-200);
    margin: .5rem 0;
}

/* ── Vereinsrangliste Detail (pool.php) ──────────────────────────────────── */
.pool-table { width: 100%; border-collapse: collapse; }
.pool-th {
    font-size: .75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--gray-600);
    padding: .375rem 1rem;
    text-align: left;
    border-bottom: 1px solid var(--gray-100);
    background: var(--gray-50);
}
.pool-th--center, .pool-td--center { text-align: center; }
.pool-th--rang       { width: 1px; white-space: nowrap; }
.pool-th--mannschaft { width: 1px; white-space: nowrap; }
.pool-th--wtvrl  { width: 5rem; }
.pool-th--a      { width: 2.5rem; }
.pool-td {
    padding: .4rem 1rem;
    font-size: .875rem;
    border-bottom: 1px solid var(--gray-50);
    vertical-align: middle;
}
.pool-table tbody tr:last-child td { border-bottom: none; }
.pool-player-name { font-weight: 600; }
.pool-status-text  { margin-left: .25rem; }
.pool-legi-badge {
    display: inline;
    font-size: .72rem;
    color: var(--muted);
    margin-left: .3rem;
    font-weight: 400;
    white-space: nowrap;
}
.pool-status-mobile {
    display: block;
    font-size: .72rem;
    color: #b45309;
    margin-top: .15rem;
    line-height: 1.3;
}

.badge--warn { background: #f59e0b; color: #fff; }

.verein-teams {
    list-style: none;
    margin-bottom: 1.5rem;
    background: var(--white);
    border: 1px solid var(--gray-200);
    border-radius: var(--radius);
    overflow: hidden;
}
.verein-team { border-top: 1px solid var(--gray-100); }
.verein-team:first-child { border-top: none; }
.verein-team__link {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .625rem 1rem;
    color: var(--gray-800);
    text-decoration: none;
    transition: background var(--transition);
}
.verein-team__link:hover { background: #eef2ff; text-decoration: none; color: var(--primary); }
.verein-team__name { font-weight: 500; }
.verein-team__league { font-size: .8125rem; white-space: nowrap; }

/* Eigene Mannschaft in Ergebnistabelle hervorheben */
.td-team--own { font-weight: 600; }

/* ── Sporthallen-Karte + Vereinssuche (hallen.php) ──────────────────────── */

/* position+z-index:0 erzeugt Stacking Context → Leaflet-Z-Indizes bleiben unterhalb Header (z-index:100) */
.hallen-map {
    height: 600px;
    width: 100%;
    border-radius: var(--radius);
    overflow: hidden;
    position: relative;
    z-index: 0;
}

/* Admin-Info: Hallen ohne Koordinaten – dezent, rechtsbündig */
.hallen-map-info {
    text-align: right;
    font-size: .75rem;
    color: var(--gray-400);
    margin-bottom: .4rem;
}

/* Such-Abschnitt */
.hallen-search-section {
    margin-bottom: 1.25rem;
}
.hallen-search-section__sub {
    color: var(--gray-600);
    font-size: .9375rem;
    margin: .25rem 0 1rem;
}
.hallen-search-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: .5rem;
    max-width: 28rem;
}
.hallen-plz-input { width: 100%; }
.hallen-search-status {
    margin-top: .5rem;
    font-size: .875rem;
    color: var(--gray-600);
    min-height: 1.2em;
}

/* Ergebnis-Abschnitt */
.nearby-section {
    margin-top: 1.75rem;
}
.nearby-section__head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1rem;
}

/* Radius-Filter-Buttons */
.radius-btns {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem;
    margin-top: .5rem;
}

/* Benutzer-Standort-Marker auf der Karte */
.user-location-dot {
    width: 16px;
    height: 16px;
    border-radius: 50%;
    background: #2563eb;
    border: 3px solid var(--white);
    box-shadow: 0 0 0 2px #2563eb, 0 2px 6px rgba(37,99,235,.5);
}

/* ── Startseite (index.php) ─────────────────────────────────────────────── */

.home-hero {
    margin-bottom: 2rem;
    border-radius: 12px;
    overflow: hidden;
    background: #1a3a5c; /* Explizit dunkelblau – überschreibt sp-hero #fff */
}
.home-hero .staffel-hero__name {
    font-size: clamp(1.5rem, 4vw, 2.25rem);
    color: #fff; /* explizit weiß, kein Verlass auf Elternklasse */
}
.home-hero .staffel-hero__tag {
    color: rgba(255,255,255,.75); /* explizit – kein Verlass auf Elternklasse */
}
/* Stats-Bar ohne Seitenabstand, volle Breite */
.home-hero .sp-hero__bottom {
    padding: 0;
    gap: 0;
    margin-top: 0; /* kein Overlap ins Hero-Top (Standard -28px zurücksetzen) */
}
.home-hero .vc-stats-bar--hero {
    width: 100%;
    text-align: center;
    background: color-mix(in srgb, #1a3a5c 50%, #fff); /* 50% gedämpftes Blau des Hero */
}
@media (max-width: 640px) {
    .home-hero .vc-stats-bar--hero {
        display: grid;
        grid-template-columns: repeat(3, 1fr);
    }
    .home-hero .vc-stats-bar--hero .vc-stat {
        border-right: 1px solid rgba(255,255,255,.25);
        border-bottom: 1px solid rgba(255,255,255,.15);
    }
    .home-hero .vc-stats-bar--hero .vc-stat:nth-child(3),
    .home-hero .vc-stats-bar--hero .vc-stat:nth-child(6) {
        border-right: none;
    }
    .home-hero .vc-stats-bar--hero .vc-stat:nth-child(4),
    .home-hero .vc-stats-bar--hero .vc-stat:nth-child(5),
    .home-hero .vc-stats-bar--hero .vc-stat:nth-child(6) {
        border-bottom: none;
    }
}

.fed-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 1rem;
}

.fed-card {
    background: var(--white);
    border: 1px solid var(--gray-200);
    border-radius: var(--radius);
    padding: 1rem 1.125rem;
    display: block;
    color: var(--gray-800);
    text-decoration: none;
    transition: box-shadow var(--transition), border-color var(--transition);
    min-width: 0; /* verhindert Overflow aus Grid-Zelle */
}
.fed-card--active {
    border-color: #2d7a2d;
    box-shadow: 0 0 0 1px #2d7a2d;
}
.fed-card--active:hover {
    box-shadow: 0 4px 16px rgba(45,122,45,.2);
    text-decoration: none;
    color: var(--gray-800);
}
.fed-card--soon {
    background: #fffbe6;
    border-color: #e8e0c0;
    cursor: default;
}

.fed-card__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: .4rem;
    gap: .5rem;
}
.fed-card__nick {
    font-size: .8125rem;
    font-weight: 700;
    letter-spacing: .04em;
    color: var(--gray-600);
    text-transform: uppercase;
}
.fed-card--soon .fed-card__nick { color: #9a9070; }

.fed-card__logo {
    display: block;
    height: 44px;
    width: auto;
    max-width: 100%;
    object-fit: contain;
    margin: .5rem 0 .75rem;
}

.fed-badge {
    font-size: .6875rem;
    font-weight: 700;
    padding: .15rem .5rem;
    border-radius: 20px;
    text-transform: uppercase;
    letter-spacing: .05em;
    white-space: nowrap;
}
.fed-badge--active {
    background: #d1fae5;
    color: #166534;
}
.fed-badge--soon {
    background: #fef9c3;
    color: #854d0e;
}

.fed-card__name {
    font-size: .875rem;
    font-weight: 600;
    line-height: 1.35;
    margin-bottom: .2rem;
    color: var(--gray-800);
}
.fed-card--soon .fed-card__name { color: #7a7050; }

.fed-card__region {
    font-size: .8125rem;
    color: var(--gray-600);
    margin-bottom: .75rem;
}
.fed-card--soon .fed-card__region { color: #a09870; }

.fed-card__stats {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem .75rem;
    border-top: 1px solid #d1e8d1;
    padding-top: .65rem;
    margin-top: auto;
}
.fed-stat {
    font-size: .8125rem;
    color: #2d7a2d;
    font-weight: 500;
    white-space: nowrap;
}
.fed-stat__icon { margin-right: .15rem; }

/* fed-card mit Liga-Links (DBV): <div>-Wrapper, inneres <a> für Hauptbereich */
.fed-card--withliga { display: flex; flex-direction: column; }
.fed-card__body {
    display: block;
    color: var(--gray-800);
    text-decoration: none;
    flex: 1;
}
.fed-card__body:hover { color: var(--gray-800); text-decoration: none; }
.fed-card__liga {
    border-top: 1px solid #d1e8d1;
    padding-top: .65rem;
    margin-top: .75rem;
}

@media (max-width: 480px) {
    .fed-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 360px) {
    .fed-grid { grid-template-columns: 1fr; }
}

/* ── Cookie-Banner ───────────────────────────────────────────── */
.cookie-banner {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    background: var(--white);
    border-top: 1px solid var(--gray-200);
    box-shadow: 0 -2px 12px rgba(0,0,0,.1);
    padding: 1rem;
    z-index: 9999;
    display: flex;
    gap: 1rem;
    align-items: center;
    flex-wrap: wrap;
}
.cookie-banner__text {
    flex: 1;
    font-size: .875rem;
    color: var(--gray-700, #495057);
    min-width: 200px;
}
.cookie-banner__link {
    color: var(--accent);
    margin-left: .5rem;
    white-space: nowrap;
}
.cookie-banner__actions {
    display: flex;
    gap: .5rem;
    flex-shrink: 0;
}
.cookie-btn {
    padding: .4rem .9rem;
    border-radius: 4px;
    font-size: .875rem;
    font-weight: 600;
    cursor: pointer;
    border: none;
}
.cookie-btn--accept {
    background: var(--accent);
    color: var(--white);
}
.cookie-btn--accept:hover { background: var(--accent-dk); }
.cookie-btn--decline {
    background: var(--gray-100);
    color: var(--gray-800);
}
.cookie-btn--decline:hover { background: var(--gray-200); }
@media (max-width: 640px) {
    .cookie-banner { flex-direction: column; align-items: stretch; }
    .cookie-banner__actions { flex-direction: column; }
    .cookie-btn { width: 100%; text-align: center; padding: .6rem; }
}

/* ── Legal-Seiten (Impressum, Datenschutz) ───────────────────── */
.legal-card {
    max-width: 760px;
}
.legal-title {
    font-size: 1.5rem;
    font-weight: 700;
    margin-bottom: 1.5rem;
    color: var(--primary);
}
.legal-section {
    margin-bottom: 1.75rem;
    padding-bottom: 1.75rem;
    border-bottom: 1px solid var(--gray-100);
}
.legal-section:last-of-type {
    border-bottom: none;
    padding-bottom: 0;
}
.legal-section__heading {
    font-size: 1rem;
    font-weight: 700;
    margin-bottom: .75rem;
    color: var(--gray-800);
}
.legal-text {
    margin-bottom: .75rem;
    line-height: 1.65;
    color: var(--gray-800);
}
.legal-text:last-child { margin-bottom: 0; }
.legal-list {
    margin: .5rem 0 .75rem 1.25rem;
    line-height: 1.8;
}
.legal-date {
    margin-top: 1.5rem;
    font-size: .875rem;
}
.cookie-reset-btn {
    display: inline-block;
    margin-top: .25rem;
    padding: .4rem .9rem;
    background: var(--gray-100);
    color: var(--gray-800);
    border: 1px solid var(--gray-200);
    border-radius: 4px;
    font-size: .875rem;
    font-weight: 600;
    cursor: pointer;
}
.cookie-reset-btn:hover { background: var(--gray-200); }

/* ── Footer-Legal-Links ──────────────────────────────────────── */
.footer-legal { display: inline-flex; align-items: center; gap: .4rem; }
.footer-sep { color: var(--gray-400); }

/* ── Spieler-Profilseite (spieler.php) – sp-* Prefix ────────────────────── */

/* Hero-Karte */
.sp-hero {
    background: #fff;
    border: 0.5px solid #e5e7eb;
    border-radius: 12px;
    overflow: hidden;
    margin-bottom: 16px;
}
.sp-hero__top {
    background: var(--accent);
    padding: 1.5rem 2rem 3rem;
}
.sp-hero__tag {
    font-size: .6875rem;
    color: rgba(255,255,255,.7);
    letter-spacing: .06em;
    text-transform: uppercase;
    margin-bottom: 8px;
    text-shadow: 0 1px 2px rgba(0,0,0,.4);
}
.sp-hero__name {
    color: #fff;
    font-size: 28px;
    font-weight: 500;
    margin: 0;
    text-shadow: 0 0 1px rgba(0,0,0,.5), 0 1px 3px rgba(0,0,0,.3);
}
/* Web Push Subscribe-Button (nur sichtbar im Testmodus ?push=1) */
.bh-push-btn {
    display: inline-block;
    margin-top: .6rem;
    padding: .35rem .85rem;
    background: rgba(255,255,255,.15);
    color: #fff;
    border: 1px solid rgba(255,255,255,.4);
    border-radius: 999px;
    font-size: .85rem;
    font-weight: 500;
    cursor: pointer;
    -webkit-appearance: none;
    appearance: none;
    transition: background .15s ease;
}
.bh-push-btn:hover:not(:disabled) { background: rgba(255,255,255,.28); }
.bh-push-btn:disabled            { opacity: .6; cursor: default; }
.bh-push-btn[hidden]             { display: none; }
.sp-hero__bottom {
    display: flex;
    align-items: center;
    gap: 20px;
    padding: 0 2rem 1.25rem;
    margin-top: -28px;
}
.sp-hero__avatar {
    width: 64px;
    height: 64px;
    border-radius: 50%;
    background: #f9fafb;
    border: 3px solid #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 22px;
    font-weight: 500;
    color: var(--accent);
    flex-shrink: 0;
    overflow: hidden;
}
.sp-hero__avatar img { width: 100%; height: 100%; object-fit: contain; }
.sp-hero__avatar--club {
    width: 72px;
    height: 72px;
    font-size: 24px;
}
.sp-hero__meta {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    padding-top: 12px;
}
.sp-hero__id {
    margin-left: auto;
    font-size: .75rem;
    color: #6b7280;
    padding-top: 12px;
    white-space: nowrap;
}

/* Pills */
.sp-pill {
    font-size: .75rem;
    padding: 4px 12px;
    border-radius: 20px;
    border: 0.5px solid #d1d5db;
    color: #6b7280;
    background: #f9fafb;
    text-decoration: none;
    display: inline-block;
}
.sp-pill--club {
    background: #FAECE7;
    border-color: var(--accent);
    color: #8B1F14;
}
.sp-pill--club:hover { background: #f5d8d0; }
a.sp-pill--club { text-decoration: none; cursor: pointer; }

/* Vereinswechsel-Badge */
.sp-transfer-badge {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    flex-wrap: wrap;
}
.sp-transfer-arrow {
    font-size: .8rem;
    color: var(--accent);
    opacity: .7;
    font-weight: bold;
    flex-shrink: 0;
}

.sp-pill--league,
.sp-pill--sub {
    background: #FAECE7;
    border-color: var(--accent);
    color: #8B1F14;
}

/* ── 2-Spalten Layout ────────────────────────────────────────────── */
.sp-layout {
    display: grid;
    grid-template-columns: 280px 1fr;
    gap: 16px;
    align-items: start;
}

/* ── Sidebar ─────────────────────────────────────────────────────── */
.sp-sidebar { display: flex; flex-direction: column; gap: 16px; }
.sp-sidebar > .card { margin-bottom: 0; }

/* Zusammenfassung – 1px Trennlinien-Trick */
.sp-sum-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1px;
    background: #e5e7eb;
}
.sp-sum-cell {
    background: #fff;
    padding: 16px 0;
    text-align: center;
}
.sp-sum-num {
    font-size: 24px;
    font-weight: 500;
    color: #111827;
    display: block;
}
.sp-sum-num--red { color: var(--accent); }
.sp-sum-lbl {
    font-size: .75rem;
    color: #6b7280;
    display: block;
    margin-top: 3px;
}
.sp-hu-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 5px;
    width: 100%;
    padding: 9px 12px;
    border-top: 1px solid var(--border);
    background: none;
    color: var(--accent);
    font-size: .8rem;
    font-weight: 600;
    text-decoration: none;
    transition: background .15s;
}
.sp-hu-btn:hover {
    background: color-mix(in srgb, var(--accent) 8%, transparent);
    color: var(--accent);
    text-decoration: none;
}

/* Card-Header */
.sp-card-header {
    padding: 12px 1.25rem;
    border-bottom: 0.5px solid #e5e7eb;
    font-size: .875rem;
    font-weight: 500;
    color: #111827;
}

/* Stat-Zeilen (Disziplinen / Sätze) */
.sp-stat-row {
    display: grid;
    grid-template-columns: 36px 1fr 96px;
    align-items: center;
    gap: 10px;
    padding: 10px 1.25rem;
    border-bottom: 0.5px solid #e5e7eb;
}
.sp-stat-row:last-child { border-bottom: none; }
.sp-stat-row--wide-lbl { grid-template-columns: 3.5rem 1fr 96px; }
.sp-league-label {
    font-size: .6875rem;
    font-weight: 700;
    letter-spacing: .05em;
    text-transform: uppercase;
    color: var(--gray-500, #9ca3af);
    padding: .5rem 1.25rem .2rem;
    border-top: 0.5px solid #f3f4f6;
}
.sp-league-label:first-child { border-top: none; }
.sp-disc-badge {
    font-size: .75rem;
    font-weight: 500;
    background: #f9fafb;
    border: 0.5px solid #d1d5db;
    border-radius: 6px;
    padding: 3px 6px;
    text-align: center;
    color: #6b7280;
    white-space: nowrap;
}
.sp-fed-badge {
    font-size: .7rem;
    font-weight: 500;
    background: #eff6ff;
    border: 0.5px solid #bfdbfe;
    border-radius: 4px;
    padding: 2px 5px;
    color: #2563eb;
    white-space: nowrap;
    flex-shrink: 0;
}
.sp-bar-wrap {
    height: 5px;
    background: #f9fafb;
    border-radius: 3px;
    overflow: hidden;
}
.sp-bar-fill {
    height: 100%;
    border-radius: 3px;
    background: var(--accent);
}
.sp-bar-fill--low { background: #E24B4A; }
@media (max-width: 640px) {
    .sp-stat-row { display: none; }
}
.sp-stat-nums {
    font-size: .8125rem;
    color: #6b7280;
    text-align: right;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
    display: flex;
    align-items: center;
    gap: .35rem;
    justify-content: flex-end;
}
.sp-stat-pct {
    font-size: .7rem;
    color: #9ca3af;
    font-weight: 400;
}
.sp-stat-sep {
    color: #d1d5db;
    font-weight: 400;
}
.sp-stat-nums strong {
    font-size: .875rem;
    font-weight: 600;
    color: #111827;
}

/* ── Spielhistorie Haupt-Panel ───────────────────────────────────── */
.sp-main { display: flex; flex-direction: column; gap: .625rem; }
.sp-main > .card { margin-bottom: 0; }

/* Saison-Trenner in "Alle"-Ansicht */
.sp-season-divider {
    border-left: 3px solid var(--accent);
    padding: .45rem .75rem;
    margin: 1.25rem 0 .5rem;
    background: #fafafa;
    border-radius: 0 6px 6px 0;
}
.sp-season-divider__label {
    font-size: .875rem;
    font-weight: 700;
    color: var(--accent);
}
.sp-season-divider__stats {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .2rem;
    margin-top: 3px;
}
.sp-sstat { display: inline-flex; align-items: center; gap: .25rem; font-size: .75rem; color: #6b7280; }
.sp-sstat strong { color: #374151; font-weight: 600; }
.sp-season-divider__dot { color: #d1d5db; margin: 0 .15rem; font-size: .7rem; }

/* Section-Header (Letzte Spiele + Anzahl) */
.sp-section-header {
    padding: 12px 1.25rem;
    border-bottom: 0.5px solid #e5e7eb;
    display: flex;
    align-items: center;
    justify-content: space-between;
}
.sp-section-header__title { font-size: .875rem; font-weight: 500; color: #111827; }
.sp-section-header__count { font-size: .8125rem; color: #6b7280; }

/* Meeting-Gruppe (ein Spieltag) */
.sp-meeting { border-bottom: 0.5px solid #e5e7eb; }
.sp-meeting:last-child { border-bottom: none; }

/* Gruppen-Header */
.sp-group-header {
    padding: 8px 1.25rem;
    background: #f9fafb;
    display: flex;
    align-items: center;
    gap: 8px;
    border-bottom: 0.5px solid #e5e7eb;
}
.sp-group-date { font-size: .75rem; font-weight: 500; color: #6b7280; white-space: nowrap; flex-shrink: 0; }
.sp-date-dm, .sp-date-y { display: inline; }
.sp-group-dot { width: 3px; height: 3px; border-radius: 50%; background: #d1d5db; flex-shrink: 0; }
.sp-group-opponent { font-size: .75rem; color: #6b7280; min-width: 0; flex: 1; }
.sp-gopp-line { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sp-gopp-rows { display: none; flex-direction: column; gap: 1px; }
.sp-gopp-row { display: flex; justify-content: space-between; align-items: baseline; gap: .5rem; }
.sp-gopp-row span { min-width: 0; flex: 1; text-align: right; }
.sp-gopp-row strong { flex-shrink: 0; font-weight: 600; color: #374151; }
.sp-gopp-row--league { margin-top: 1px; justify-content: flex-end; }
.sp-gopp-league-sep { margin: 0 .2em; color: #d1d5db; }
.sp-league-tag { font-size: .6875rem; font-weight: 600; color: var(--accent); text-decoration: none; letter-spacing: .01em; }
.sp-league-tag:hover { text-decoration: underline; }
.sp-group-link {
    margin-left: auto;
    display: flex;
    align-items: center;
    color: #d1d5db;
    text-decoration: none;
}
.sp-group-link:hover { color: var(--accent); }

.sp-group-header--link {
    text-decoration: none;
    color: inherit;
    cursor: pointer;
    transition: background var(--transition);
}
.sp-group-header--link:hover {
    background: #f3f4f6;
    text-decoration: none;
    color: inherit;
}
.sp-group-header__link-icon {
    margin-left: auto;
    flex-shrink: 0;
    font-size: .8rem;
    color: #d1d5db;
    transition: color var(--transition), transform var(--transition);
}
.sp-group-header--link:hover .sp-group-header__link-icon {
    color: var(--accent);
    transform: translateX(2px);
}

/* Disziplin-Zeilen */
.sp-meeting-discs { display: flex; flex-direction: column; }
.sp-match-item {
    padding: 10px 1.25rem;
    border-bottom: 0.5px solid #e5e7eb;
    display: grid;
    grid-template-columns: 40px 1fr;
    gap: 12px;
    align-items: center;
    cursor: default;
    transition: background .1s;
}
.sp-match-item:last-child { border-bottom: none; }
.sp-match-item--link { cursor: pointer; }
.sp-match-item--link:hover { background: #f9fafb; }
.sp-match-disc {
    font-size: .6875rem;
    padding: 2px 7px;
    border-radius: 10px;
    background: #FAECE7;
    color: #8B1F14;
    border: 0.5px solid var(--accent);
    display: inline-block;
    white-space: nowrap;
    text-align: center;
    font-weight: 500;
}
.sp-match-disc--win {
    background: #d1fae5;
    color: #065f46;
    border-color: #10b981;
}
.sp-match-body {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 56px minmax(0, 1fr);
    align-items: center;
    gap: 12px;
}
.sp-side { display: flex; flex-direction: column; gap: 3px; align-items: flex-end; min-width: 0; }
.sp-side--away { align-items: flex-start; }
.sp-player {
    display: flex;
    align-items: center;
    gap: 5px;
    font-size: .8125rem;
    color: #111827;
    line-height: 1.3;
    flex-direction: row-reverse;
    min-width: 0;
}
.sp-player--away { flex-direction: row; }
.sp-player-name { min-width: 0; overflow-wrap: break-word; word-break: break-word; }
.sp-player-name--self { font-weight: 500; color: var(--accent); }
.sp-side--winner .sp-player-name { font-weight: 700; }
.sp-side--winner .sp-player-name--self { font-weight: 700; }
.sp-wo-label { font-size: .75rem; font-style: italic; color: #9ca3af; align-self: center; }
/* Desktop: voller Name sichtbar, Kurzname versteckt */
.sp-name-short { display: none; }
.sp-name-full  { display: inline; }
.sp-result-col {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1px;
}
.sp-set-score {
    display: flex;
    align-items: center;
    font-size: .8125rem;
    line-height: 1.5;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}
.sp-s { min-width: 20px; text-align: center; color: #6b7280; }
.sp-s--winner { font-weight: 600; color: #111827; }
.sp-colon { font-size: .75rem; color: #d1d5db; padding: 0 1px; }

/* ── Spieler: Fun Facts ────────────────────────────────────────── */
.sp-ff-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: .5rem 1rem;
    border-bottom: .5px solid #f3f4f6;
    font-size: .8125rem;
}
.sp-ff-label { color: #6b7280; font-size: .75rem; }
.sp-form-dots { display: flex; gap: 5px; align-items: center; }
.sp-form-dot {
    width: 11px; height: 11px;
    border-radius: 50%;
    display: inline-block;
}
.sp-form-dot--win  { background: #10b981; }
.sp-form-dot--loss { background: #f43f5e; }
.sp-ff-ha {
    display: flex;
    padding: .625rem 1rem;
    border-bottom: .5px solid #f3f4f6;
    gap: .5rem;
}
.sp-ff-ha-cell {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1px;
}
.sp-ff-ha-val  { font-size: 1.1rem; font-weight: 700; color: #111827; }
.sp-ff-ha-lbl  { font-size: .7rem; color: #6b7280; }
.sp-ff-ha-sub  { font-size: .7rem; color: #9ca3af; }
.sp-ff-ha-div  { width: 1px; background: #e5e7eb; margin: .25rem 0; }
.sp-ff-streak  { font-weight: 700; color: var(--accent); }
.sp-ff-best    { display: flex; align-items: center; gap: .4rem; }
.sp-ff-best-sub { font-size: .7rem; color: #9ca3af; }
.sp-ff-fav     { display: flex; flex-direction: column; align-items: flex-end; gap: .15rem; text-align: right; }
.sp-ff-fav-name { font-weight: 600; font-size: .85rem; color: inherit; text-decoration: none; }
.sp-ff-fav-name:hover { color: var(--accent); }
.sp-ff-fav-sub  { font-size: .7rem; color: #9ca3af; }

/* ── Spieler: Saison-Selector ──────────────────────────────────── */
.saison-sel {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .375rem;
    padding: .625rem .875rem;
    background: #fff;
    border: 0.5px solid #e5e7eb;
    border-radius: 8px;
    margin-bottom: 16px;
}
.saison-sel__tab {
    padding: .25rem .7rem;
    border: 0.5px solid #d1d5db;
    border-radius: 999px;
    font-size: .8rem;
    color: #6b7280;
    text-decoration: none;
    white-space: nowrap;
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    transition: background .12s, color .12s;
}
.saison-sel__tab:hover { background: #f9fafb; color: #111827; text-decoration: none; }
.saison-sel__tab--active {
    background: var(--accent);
    border-color: var(--accent);
    color: #fff;
    font-weight: 600;
}
.saison-sel__tab--active:hover { background: var(--accent-dk); color: #fff; }
.saison-sel__aktiv {
    font-size: .68rem;
    opacity: .75;
    font-weight: 400;
}
.saison-sel__hist-dot {
    font-size: .5rem;
    color: #d97706;
    vertical-align: super;
    margin-left: 2px;
    line-height: 1;
}
.saison-sel__tab--hist { color: #92400e; }
.saison-sel__tab--hist.saison-sel__tab--active { background: #d97706; }

/* ── Spieler-Profil Responsive ──────────────────────────────────── */
@media (max-width: 720px) {
    .sp-layout { grid-template-columns: 1fr; gap: .75rem; }
    .sp-sidebar { flex-direction: row; flex-wrap: wrap; gap: .75rem; }
    .sp-sidebar > * { flex: 1; min-width: 200px; }
    .sp-hero__top { padding: 1.25rem 1.25rem 2.5rem; }
    .sp-hero__bottom { padding: 0 1.25rem 1rem; }
    .sp-hero__name { font-size: 22px; }
    /* Mobile: Kurzname sichtbar, voller Name versteckt */
    .sp-name-full  { display: none; }
    .sp-name-short { display: inline; }
}
@media (max-width: 520px) {
    .saison-sel      { gap: .3rem; padding: .5rem .75rem; }
    .saison-sel__tab { font-size: .75rem; padding: .2rem .55rem; }
    .sp-hero__name   { font-size: 18px; }
    .sp-match-body   { gap: 6px; }
    /* Badge über Body stapeln, zentriert */
    .sp-match-item   { grid-template-columns: 1fr; gap: 5px; }
    .sp-match-disc   { justify-self: center; }
    /* Zwei-Zeilen Mannschaftsname */
    .sp-gopp-line  { display: none; }
    .sp-gopp-rows  { display: flex; }
    /* Datum umbrechen: 15.03. / 2026 */
    .sp-group-date { white-space: normal; text-align: center; line-height: 1.25; }
    .sp-date-dm, .sp-date-y { display: block; }
    /* Header vertikal zentrieren wenn zwei Zeilen sichtbar */
    .sp-group-header { align-items: center; }
    /* Sidebar-Karten immer untereinander – nie nebeneinander auf Smartphones */
    .sp-sidebar { flex-direction: column; }
    .sp-sidebar > * { min-width: 0; }
}

/* ── Saison-Block ──────────────────────────────────────────────── */
.season-block { margin-bottom: 1.25rem !important; }
.season-header {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .35rem .75rem;
    padding: .875rem 1rem .75rem 1.125rem;
    border-bottom: 1px solid var(--gray-200);
    margin-bottom: 0;
}
.season-badge {
    display: inline-block;
    background: var(--primary);
    color: #fff;
    font-size: .75rem;
    font-weight: 700;
    padding: .25rem .7rem;
    border-radius: 4px;
    line-height: 1.5;
    letter-spacing: .02em;
}
.season-header__club  { font-size: .875rem; color: var(--gray-600); }
.season-header__stats { font-size: .8125rem; margin-left: auto; }
.sep-dot              { color: var(--gray-400); margin: 0 .15rem; }

/* ── Section-Count-Badge ───────────────────────────────────────── */
.section-count {
    font-size: .8125rem;
    font-weight: 400;
    background: var(--gray-200);
    color: var(--gray-600);
    padding: .1rem .5rem;
    border-radius: 10px;
    vertical-align: middle;
}

/* ── Disziplin-Tags ────────────────────────────────────────────── */
.disc-tag {
    display: inline-block;
    padding: .2rem .5rem;
    border-radius: 4px;
    font-size: .6rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .06em;
    line-height: 1.6;
    white-space: nowrap;
}
.disc-tag--single { background: var(--blue-light);  color: var(--blue-text); }
.disc-tag--double { background: #ede9fe; color: #5b21b6; }
.disc-tag--mixed  { background: #fef3c7; color: #92400e; }

/* ── Match-Cards (ersetzt Tabelle) ─────────────────────────────── */
.matches-list {
    display: flex;
    flex-direction: column;
}
.match-card {
    display: grid;
    /* bar  date   disc  opp  sets   wl  */
    grid-template-columns: 3px 3.25rem 5.25rem 1fr auto 2.25rem;
    align-items: center;
    gap: 0 .75rem;
    padding: .625rem .875rem .625rem 0;
    border-bottom: 1px solid var(--gray-100);
    transition: background .1s;
    cursor: default;
}
.match-card:last-child { border-bottom: none; }
.match-card:hover { background: rgba(0,0,0,.018); }
.match-card--win  { background: rgba(22,163,74,.03); }
.match-card--loss { background: rgba(181,18,24,.025); }

/* Farbiger Balken links */
.mc-bar {
    align-self: stretch;
    border-radius: 0 2px 2px 0;
    min-height: 2.25rem;
}
.match-card--win  .mc-bar { background: #22c55e; }
.match-card--loss .mc-bar { background: var(--accent); }

/* Datum */
.mc-date {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    font-variant-numeric: tabular-nums;
    line-height: 1.2;
}
.mc-date__day {
    font-size: .875rem;
    font-weight: 700;
    color: var(--gray-700);
}
.mc-date__mon {
    font-size: .65rem;
    color: var(--gray-400);
    text-transform: uppercase;
    letter-spacing: .04em;
}

/* Disziplin */
.mc-disc { }

/* Gegner-Block */
.mc-opp { white-space: normal; min-width: 0; }
.mc-opp__partner {
    font-size: .7rem;
    color: var(--gray-400);
    margin-bottom: .2rem;
}
.mc-opp__player {
    display: flex;
    align-items: center;
    gap: .3rem;
    line-height: 1.6;
}
.mc-opp__name { font-weight: 600; color: var(--gray-800); font-size: .8125rem; }
.mc-opp__team { font-size: .7rem; color: var(--gray-400); margin-top: .15rem; }
.mc-opp__team-link { color: var(--gray-400); text-decoration: none; }
.mc-opp__team-link:hover { color: var(--primary); text-decoration: underline; }

/* Rang-Badge */
.rank-badge {
    display: inline-block;
    font-size: .6rem;
    color: var(--gray-500);
    background: var(--gray-100);
    border: 1px solid var(--gray-200);
    padding: .05rem .35rem;
    border-radius: 3px;
    font-weight: 700;
    flex-shrink: 0;
    font-variant-numeric: tabular-nums;
}

/* Satzergebnisse */
.mc-sets { white-space: nowrap; font-size: .8125rem; }
.set-pair {
    display: inline-flex;
    align-items: baseline;
    gap: .05rem;
    font-variant-numeric: tabular-nums;
}
.set-n       { font-weight: 500; color: var(--gray-400); min-width: 1.4rem; text-align: center; font-size: .8125rem; }
.set-n--win  { color: var(--gray-800); font-weight: 800; }
.set-colon   { color: var(--gray-300); font-size: .75rem; margin: 0 .05rem; }
.set-sep     { color: var(--gray-300); margin: 0 .3rem; font-size: .65rem; vertical-align: middle; }

/* W/L-Badge */
.mc-wl { display: flex; justify-content: center; }
.wl-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.625rem;
    height: 1.625rem;
    border-radius: 50%;
    font-size: .6rem;
    font-weight: 900;
    letter-spacing: .03em;
}
.wl-badge--win  { background: #dcfce7; color: #16a34a; box-shadow: 0 0 0 1.5px #bbf7d0; }
.wl-badge--loss { background: #fee2e2; color: #dc2626; box-shadow: 0 0 0 1.5px #fecaca; }

.result--win  { color: var(--green); }
.result--loss { color: var(--accent); }

/* ── Pool: Spieler-Link ────────────────────────────────────────── */
.pool-player-link { color: var(--primary); text-decoration: none; font-weight: 600; }
.pool-player-link:hover { text-decoration: underline; color: var(--accent); }

/* ── Responsive ────────────────────────────────────────────────── */
@media (max-width: 640px) {
    .season-header__stats { font-size: .75rem; }
}
@media (max-width: 480px) {
    .match-card           { grid-template-columns: 3px 2.75rem 4.5rem 1fr auto 2.25rem; gap: 0 .5rem; }
    .mc-date__day         { font-size: .8125rem; }
    .match-card           { padding-right: .625rem; }
    .mc-opp__name         { font-size: .75rem; }
    .mc-sets              { font-size: .75rem; }
    .set-n                { min-width: 1.2rem; font-size: .75rem; }
}


/* ── Hallen-Suche Mobile ─────────────────────────────────────────────────── */
@media (max-width: 640px) {
    .hallen-search-row       { max-width: 100%; }
    .nearby-section__head    { flex-direction: column; align-items: flex-start; }
}

/* ── Changelog ─────────────────────────────────────────────────── */
.cl-page-head { margin-bottom: 2.5rem; }
.cl-page-title { font-size: 1.75rem; font-weight: 800; color: var(--gray-900); margin: 0 0 .5rem; }
.cl-page-sub { font-size: .9375rem; color: var(--gray-500); margin: 0; }

.changelog { display: flex; flex-direction: column; gap: 0; max-width: 720px; }

.cl-version {
    padding: 1.5rem 0 1.5rem 1.5rem;
    border-left: 2px solid var(--gray-200);
    position: relative;
}
.cl-version::before {
    content: '';
    position: absolute;
    left: -5px;
    top: 1.75rem;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--gray-300);
    border: 2px solid #fff;
}
.cl-version--latest { border-left-color: var(--primary); }
.cl-version--latest::before { background: var(--primary); }

.cl-version__meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .4rem .6rem;
    margin-bottom: .6rem;
}
.cl-version__tag {
    font-size: .75rem;
    font-weight: 800;
    color: var(--primary);
    background: #fef2f2;
    padding: .2rem .55rem;
    border-radius: 4px;
    font-variant-numeric: tabular-nums;
    letter-spacing: .02em;
}
.cl-version--latest .cl-version__tag {
    background: var(--primary);
    color: #fff;
}
.cl-badge {
    font-size: .7rem;
    font-weight: 700;
    padding: .15rem .5rem;
    border-radius: 20px;
    letter-spacing: .04em;
    text-transform: uppercase;
}
.cl-badge--latest { background: #dcfce7; color: #15803d; }
.cl-version__date { font-size: .8125rem; color: var(--gray-400); }

.cl-version__title {
    font-size: 1.0625rem;
    font-weight: 700;
    color: var(--gray-800);
    margin: 0 0 .75rem;
}

.cl-version__list {
    margin: 0;
    padding: 0;
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: .45rem;
}
.cl-version__list li {
    font-size: .875rem;
    color: var(--gray-600);
    line-height: 1.55;
    display: flex;
    align-items: baseline;
    gap: .5rem;
    flex-wrap: wrap;
}
.cl-version__list li code {
    font-family: monospace;
    font-size: .8rem;
    background: var(--gray-100);
    padding: .1rem .3rem;
    border-radius: 3px;
    color: var(--gray-700);
}

.cl-tag {
    display: inline-block;
    font-size: .65rem;
    font-weight: 700;
    padding: .15rem .45rem;
    border-radius: 3px;
    text-transform: uppercase;
    letter-spacing: .04em;
    flex-shrink: 0;
    white-space: nowrap;
}
.cl-tag--new      { background: #dbeafe; color: #1d4ed8; }
.cl-tag--fix      { background: #fee2e2; color: #b91c1c; }
.cl-tag--improved { background: #fef9c3; color: #854d0e; }
@media (max-width: 600px) {
    .cl-page-head  { margin-bottom: 1.75rem; }
    .cl-page-title { font-size: 1.375rem; }
    .cl-page-sub   { font-size: .875rem; }
    .cl-version {
        padding: 1rem 0 1rem 1.1rem;
    }
    .cl-version__title {
        font-size: 1rem;
        margin-bottom: .6rem;
    }
    .cl-version__list li {
        align-items: flex-start;
        font-size: .8375rem;
    }
    .cl-tag {
        margin-top: .1rem; /* optisch bündig wenn Text umbricht */
    }
}

/* ═══════════════════════════════════════════════════════════════════════════════
   vc-*  –  Verein-Detailseite (verein.php)
   ═══════════════════════════════════════════════════════════════════════════════ */

/* Hero ─────────────────────────────────────────────────────────────────────── */
.vc-hero {
    padding: 0;
    overflow: hidden;
    margin-bottom: 1.25rem;
}
.vc-hero__accent {
    height: 6px;
    background: var(--accent);
}
.vc-hero__body {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    padding: 1.25rem 1.5rem 1rem;
}
.vc-hero__logo {
    width: 72px;
    height: 72px;
    object-fit: contain;
    flex-shrink: 0;
    border-radius: 6px;
}
.vc-hero__name {
    font-size: 1.35rem;
    font-weight: 700;
    margin: 0 0 .2rem;
    line-height: 1.2;
}
.vc-hero__city {
    font-size: .875rem;
    color: #6b7280;
    margin-bottom: .4rem;
}
.vc-hero__links {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem .75rem;
    align-items: center;
}
.vc-hero__link {
    font-size: .8125rem;
    color: var(--accent);
    text-decoration: none;
}
.vc-hero__link:hover { text-decoration: underline; }

/* Stats Bar ─────────────────────────────────────────────────────────────────── */
.vc-stats-bar {
    display: flex;
    border-top: 1px solid #f3f4f6;
    background: color-mix(in srgb, var(--accent) 6%, #fff);
}
.vc-stat {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: .65rem .5rem;
    border-right: 1px solid #f3f4f6;
}
.vc-stat:last-child { border-right: none; }
.vc-stat__val {
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--accent);
    line-height: 1;
}
.vc-stat__lbl {
    font-size: .7rem;
    color: #9ca3af;
    text-transform: uppercase;
    letter-spacing: .04em;
    margin-top: .2rem;
}

/* Stats-Bar unterhalb des Hero-Blocks */
.vc-stats-bar--hero {
    border-top: 1px solid rgba(0,0,0,.06);
    background: rgba(255,255,255,.25); /* Fallback für ältere iOS-Versionen */
    background: color-mix(in srgb, var(--accent) 50%, #fff);
}
.vc-stats-bar--hero .vc-stat__val { color: #fff; text-shadow: 0 0 1px rgba(0,0,0,.5), 0 1px 3px rgba(0,0,0,.3); }
.vc-stats-bar--hero .vc-stat__lbl { color: rgba(255,255,255,.75); text-shadow: 0 1px 2px rgba(0,0,0,.4); }
.vc-stats-bar--hero .vc-stat { border-right-color: rgba(255,255,255,.25); }

/* Nav-Variante: Hinrunde / Rückrunde als klickbare Tabs */
.vc-stats-bar--nav .vc-stat {
    text-decoration: none;
    cursor: pointer;
    background: transparent;
    border: none;
    transition: background .15s;
    justify-content: center;
    padding: .75rem 1rem;
}
.vc-stats-bar--nav .vc-stat__lbl {
    font-size: .8rem;
    font-weight: 500;
    letter-spacing: .03em;
    text-transform: uppercase;
    color: rgba(255,255,255,.6);
}
.vc-stats-bar--nav .vc-stat:hover {
    background: color-mix(in srgb, var(--accent) 65%, #fff);
}
.vc-stats-bar--nav .vc-stat--active {
    background: color-mix(in srgb, var(--accent) 70%, #000);
}
.vc-stats-bar--nav .vc-stat--active .vc-stat__lbl { color: #fff; font-weight: 700; }

/* Staffel Hero (tabelle.php) ──────────────────────────────────────────────── */
.staffel-hero .sp-hero__top { padding: .75rem 1.25rem 1.25rem; }
.staffel-hero__tag {
    font-size: .7rem;
    color: rgba(255,255,255,.7);
    text-align: center;
    letter-spacing: .04em;
    text-transform: uppercase;
    margin-bottom: .5rem;
    text-shadow: 0 1px 2px rgba(0,0,0,.4);
}
.staffel-hero__nav {
    display: flex;
    align-items: center;
}
.staffel-hero__arrow {
    color: rgba(255,255,255,.8);
    text-decoration: none;
    font-size: 1.25rem;
    padding: .2rem .5rem;
    border-radius: .25rem;
    transition: background .15s, color .15s;
    line-height: 1;
    flex-shrink: 0;
}
.staffel-hero__arrow:hover { background: rgba(255,255,255,.15); color: #fff; }
.staffel-hero__arrow--disabled { color: rgba(255,255,255,.25); cursor: default; }
.staffel-hero__name {
    color: #fff;
    font-size: 1.5rem;
    font-weight: 700;
    margin: 0;
    text-align: center;
    line-height: 1.2;
    flex: 1;
    text-shadow: 0 0 1px rgba(0,0,0,.5), 0 1px 3px rgba(0,0,0,.3);
}
@media (max-width: 480px) {
    .staffel-hero__name { font-size: 1.2rem; }
}

.staffel-hero__back {
    display: inline-block;
    color: rgba(255,255,255,.75);
    text-decoration: none;
    font-size: .75rem;
    font-weight: 500;
    padding: .2rem .5rem;
    border-radius: .25rem;
    transition: background .15s, color .15s;
    margin-bottom: .4rem;
}
.staffel-hero__back:hover { background: rgba(255,255,255,.15); color: #fff; }
.fed-bvrp .staffel-hero__back,
.fed-bwbv .staffel-hero__back { color: rgba(0,0,0,.55); }
.fed-bvrp .staffel-hero__back:hover,
.fed-bwbv .staffel-hero__back:hover { background: rgba(0,0,0,.08); color: #1a1a1a; }

/* Begegnung Hero ──────────────────────────────────────────────────────────── */
.beg-hero .sp-hero__top  { padding: .75rem 1.25rem 1rem; }
.beg-hero .sp-hero__bottom { margin-top: 0; padding: 1.25rem 1.25rem .875rem; justify-content: center; gap: 1.5rem; }

.beg-nav {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
}
.beg-nav__arrow {
    color: rgba(255,255,255,.8);
    text-decoration: none;
    font-size: 1.25rem;
    padding: .2rem .5rem;
    border-radius: .25rem;
    transition: background .15s, color .15s;
    line-height: 1;
    flex-shrink: 0;
}
.beg-nav__arrow:hover { background: rgba(255,255,255,.15); color: #fff; }
.beg-nav__arrow--disabled { color: rgba(255,255,255,.3); cursor: default; }
.beg-nav__label {
    color: rgba(255,255,255,.9);
    text-decoration: none;
    font-size: .78rem;
    text-align: center;
    line-height: 1.6;
    flex: 1;
    text-shadow: 0 1px 2px rgba(0,0,0,.4);
}
.beg-nav__label:hover { color: #fff; }
.beg-nav__hall {
    display: block;
    font-size: .72rem;
    color: rgba(255,255,255,.65);
    margin-top: .35rem;
}
.beg-nav__hall--link {
    text-decoration: none;
}
.beg-nav__hall--link:hover {
    color: #fff;
    text-decoration: underline;
}

/* SG-Doppellogos: zwei kleinere Avatare nebeneinander */
.beg-sg-logos {
    display: flex;
    align-items: center;
    gap: .25rem;
}
.beg-sg-logos__avatar.sp-hero__avatar--club {
    width: 48px;
    height: 48px;
    font-size: 16px;
}

.beg-team {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .4rem;
    flex: 1;
    min-width: 0;
    max-width: 160px;
    text-align: center;
    text-decoration: none;
    color: inherit;
    cursor: pointer;
}
.beg-team:hover .beg-team__name {
    text-decoration: underline;
}
.beg-team__name {
    font-size: .82rem;
    font-weight: 600;
    color: #1e293b;
    line-height: 1.2;
}
.beg-score {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .15rem;
    flex-shrink: 0;
}
.beg-score__val {
    font-size: 2.4rem;
    font-weight: 800;
    line-height: 1;
    color: #1e293b;
    letter-spacing: -.02em;
}
.beg-score__val--open { color: #94a3b8; }
.beg-score__note { font-size: .7rem; color: #94a3b8; }
.beg-hero .vc-stat__val { white-space: nowrap; }

/* Desktop: Groups sind transparent – Stats fließen normal nebeneinander */
.beg-stats-group { display: contents; }

/* Mobile: zwei Zeilen */
@media (max-width: 640px) {
    .beg-hero .vc-stats-bar--hero { flex-wrap: wrap; }
    .beg-stats-group {
        display: flex;
        flex: 0 0 100%;
        border-top: 1px solid rgba(255,255,255,.25);
    }
    .beg-stats-group:first-child { border-top: none; }
    .beg-stats-group .vc-stat { flex: 1; border-right-color: rgba(255,255,255,.25); }
    .beg-stats-group .vc-stat:last-child { border-right: none; }
    /* Mobile-Reihenfolge Gruppe 2: Beginn | Spieltag | Ende */
    .beg-stats-group:last-child .vc-stat:nth-child(1) { order: 2; } /* Spieltag → Mitte */
    .beg-stats-group:last-child .vc-stat:nth-child(2) { order: 1; } /* Beginn   → Links */
    .beg-stats-group:last-child .vc-stat:nth-child(3) { order: 3; } /* Ende     → Rechts */
}

@media (max-width: 480px) {
    .beg-hero .sp-hero__bottom { gap: 1rem; }
    .beg-team { max-width: 100px; }
    .beg-team__name { font-size: .72rem; }
    .beg-score__val { font-size: 1.9rem; }
    .beg-nav__label { font-size: .7rem; }
}

/* Icon in sp-pill Links */
.sp-pill__icon {
    width: 1em;
    height: 1em;
    vertical-align: -.1em;
    margin-right: .25em;
    flex-shrink: 0;
}
.sp-pill__icon--text {
    font-size: 1em;
    line-height: 1;
    display: inline;
}

/* Kapitän-Mail-Icon: Größe an Schrift anpassen */
.vc-kader-captain__mail { font-size: inherit; line-height: 1; }

/* Info-Grid: Ansprechpartner (breit) + Hallen (schmal) ──────────────────────── */
.vc-info-grid {
    display: grid;
    grid-template-columns: 1fr 300px;
    gap: 1.25rem;
    margin-bottom: .25rem;
}

/* Spielbetrieb-Trennlinie ───────────────────────────────────────────────────── */
.vc-section-divider {
    display: flex;
    align-items: center;
    gap: .6rem;
    margin: 1rem 0 .75rem;
    color: #9ca3af;
    font-size: .7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .1em;
}
.vc-section-divider::before,
.vc-section-divider::after {
    content: '';
    flex: 1;
    height: 1px;
    background: #e5e7eb;
}

/* Saison-Pills ────────────────────────────────────────────────────────────── */
.vc-season-pills {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem;
    margin: .5rem 0 .75rem;
    justify-content: center;
}
.vc-season-pill {
    display: inline-block;
    padding: .25rem .6rem;
    font-size: .72rem;
    font-weight: 600;
    border-radius: 999px;
    border: 1px solid #e5e7eb;
    color: #6b7280;
    text-decoration: none;
    transition: all .15s ease;
    white-space: nowrap;
}
.vc-season-pill:hover { border-color: var(--accent, #B51218); color: var(--accent, #B51218); }
.vc-season-pill--active {
    background: var(--accent, #B51218);
    border-color: var(--accent, #B51218);
    color: #fff;
    pointer-events: none;
}
.vc-season-pill--empty {
    opacity: .45;
}

/* 2-Spalten-Layout ─────────────────────────────────────────────────────────── */
.vc-layout {
    display: grid;
    grid-template-columns: 1fr 300px;
    gap: 1.25rem;
    align-items: start;
}
.vc-main   { display: flex; flex-direction: column; gap: 1.25rem; min-width: 0; }
.vc-sidebar { display: flex; flex-direction: column; gap: 1.25rem; min-width: 0; }

/* Card Header ──────────────────────────────────────────────────────────────── */
.vc-card__head {
    display: flex;
    align-items: baseline;
    gap: .5rem;
    padding: .85rem 1.25rem .65rem;
    border-bottom: 1px solid #f3f4f6;
}
.vc-card__title {
    font-size: .9rem;
    font-weight: 700;
    color: #111827;
}
.vc-card__sub {
    font-size: .75rem;
    color: #9ca3af;
}

/* Kader ────────────────────────────────────────────────────────────────────── */
.vc-kader-block {
    padding: .85rem 1.25rem;
    border-bottom: 1px solid #f3f4f6;
}
.vc-kader-block:last-child { border-bottom: none; }
.vc-kader-sep { border: none; border-top: 2px solid #e5e7eb; margin: .75rem 0; }
.vc-kader-captain {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .25rem .5rem;
    margin-top: .5rem;
    padding: .4rem .6rem;
    background: #f8fafc;
    border-radius: 6px;
    font-size: .8rem;
}
.vc-kader-captain__label {
    font-weight: 600;
    color: #6b7280;
    text-transform: uppercase;
    font-size: .7rem;
    letter-spacing: .04em;
    flex-basis: 100%;
}
.vc-kader-captain__name { color: #111827; font-weight: 500; }
.vc-kader-captain__contact { color: #6b7280; text-decoration: none; }
.vc-kader-captain__contact:hover { color: var(--accent); }
.vc-kader-captain__mail { font-size: inherit; line-height: 1; }
.vc-kader-block__head {
    display: flex;
    align-items: center;
    gap: .6rem;
    margin-bottom: .6rem;
    flex-wrap: wrap;
}
.vc-kader-block__nr {
    font-size: .8125rem;
    font-weight: 700;
    color: #374151;
}
.vc-liga-btn {
    font-size: .7rem;
    padding: .2rem .55rem;
    border-radius: 99px;
    background: color-mix(in srgb, var(--accent) 12%, transparent);
    color: var(--accent);
    text-decoration: none;
    white-space: nowrap;
    font-weight: 600;
}
.vc-liga-btn:hover { background: color-mix(in srgb, var(--accent) 20%, transparent); }
.vc-liga-btn--dim { background: #f3f4f6; color: #9ca3af; cursor: default; }
.vc-kader-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: .2rem .75rem;
}
.vc-kader-player {
    display: flex;
    align-items: center;
    gap: .35rem;
    font-size: .8125rem;
    min-width: 0;
}
.vc-kader-player__link {
    color: #111827;
    text-decoration: none;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.vc-kader-player__link:hover { color: var(--accent); text-decoration: underline; }

/* SG-Partner-Trennzeile im Kader ───────────────────────────────────────────── */
.vc-kader-sg-partner {
    display: flex;
    align-items: center;
    gap: .5rem;
    padding: .6rem 1.25rem .5rem;
    background: #f9fafb;
    border-top: 2px solid #e5e7eb;
    border-bottom: 1px solid #e5e7eb;
    font-size: .75rem;
    font-weight: 700;
    color: #6b7280;
    text-transform: uppercase;
    letter-spacing: .04em;
}
.vc-kader-sg-partner__logo { width: 22px; height: 22px; object-fit: contain; border-radius: 3px; flex-shrink: 0; }
.vc-kader-sg-partner__name { color: inherit; text-decoration: none; }
.vc-kader-sg-partner__name:hover { color: var(--accent); }

/* Team-Liste (Mannschaften + Jugend) ───────────────────────────────────────── */
.vc-team-list {
    list-style: none;
    padding: 0;
    margin: 0;
}
.vc-team-list li:not(:last-child) .vc-team-row {
    border-bottom: 1px solid #f9fafb;
}
.vc-team-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: .6rem 1.25rem;
    text-decoration: none;
    color: inherit;
    gap: .5rem;
}
.vc-team-row:hover { background: #f9fafb; }
.vc-team-row__name {
    font-size: .8375rem;
    font-weight: 600;
    color: #111827;
    min-width: 0;
}
.vc-team-row__league {
    font-size: .75rem;
    color: #9ca3af;
    white-space: nowrap;
    flex-shrink: 0;
}

/* Vereinsrangliste ─────────────────────────────────────────────────────────── */
.vc-pool-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: .55rem 1.25rem;
    border-bottom: 1px solid #f9fafb;
}
.vc-pool-row:last-child { border-bottom: none; }
.vc-pool-row__type {
    font-size: .8125rem;
    color: #374151;
    font-weight: 600;
}
.vc-pool-row__btns {
    display: flex;
    gap: .4rem;
}
.vc-pool-btn {
    font-size: .75rem;
    padding: .25rem .65rem;
    border-radius: 99px;
    border: 1px solid color-mix(in srgb, var(--accent) 40%, transparent);
    color: var(--accent);
    text-decoration: none;
    font-weight: 600;
    transition: background .15s;
}
.vc-pool-btn:hover {
    background: color-mix(in srgb, var(--accent) 10%, transparent);
}

/* Spielgemeinschaft ─────────────────────────────────────────────────────────── */
.vc-sg-partner {
    display: flex;
    align-items: center;
    gap: .9rem;
    padding: .75rem 1.25rem;
    border-bottom: 1px solid #f3f4f6;
}
.vc-sg-partner:last-child { border-bottom: none; }
.vc-sg-partner__logo-link {
    flex-shrink: 0;
}
.vc-sg-partner__logo {
    width: 40px;
    height: 40px;
    object-fit: contain;
    border-radius: 4px;
}
.vc-sg-partner__info {
    display: flex;
    flex-direction: column;
    gap: .15rem;
    min-width: 0;
}
.vc-sg-partner__name {
    font-size: .875rem;
    font-weight: 600;
    color: #111827;
    text-decoration: none;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.vc-sg-partner__name:hover { color: var(--accent); }
.vc-sg-partner__label {
    font-size: .75rem;
    color: #6b7280;
}

/* SG-Badge in Mannschaftsliste */
.vc-sg-badge {
    display: inline-block;
    font-size: .65rem;
    font-weight: 700;
    color: var(--accent);
    border: 1px solid var(--accent);
    border-radius: 3px;
    padding: 0 4px;
    line-height: 1.4;
    vertical-align: middle;
    margin-left: .3rem;
    letter-spacing: .03em;
}

/* Vereinfachter SG-Links-Block */
.vc-sg-links { display: flex; flex-direction: column; gap: 0; }
.vc-sg-link-row {
    display: flex;
    align-items: center;
    gap: .6rem;
    padding: .55rem .75rem;
    font-size: .875rem;
    font-weight: 600;
    color: #111827;
    text-decoration: none;
    border-bottom: 1px solid #f3f4f6;
}
.vc-sg-link-row:last-child { border-bottom: none; }
.vc-sg-link-row:hover { color: var(--accent); background: #f9fafb; }
.vc-sg-link-logo {
    width: 32px;
    height: 32px;
    object-fit: contain;
    border-radius: 3px;
    flex-shrink: 0;
}

/* SG-Zeile in Vereinsrangliste */
.vc-pool-row--sg .vc-pool-row__type {
    font-style: italic;
    color: #6b7280;
}

/* Kontakte ─────────────────────────────────────────────────────────────────── */
.vc-officials-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 0;
}
.vc-official {
    display: flex;
    gap: .85rem;
    padding: .85rem 1.25rem;
    border-bottom: 1px solid #f9fafb;
    border-right: 1px solid #f9fafb;
}
.vc-official:last-child { border-bottom: none; }
.vc-official__avatar {
    width: 36px;
    height: 36px;
    min-width: 36px;
    border-radius: 50%;
    background: color-mix(in srgb, var(--accent) 15%, #fff);
    color: var(--accent);
    font-size: .75rem;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    letter-spacing: .03em;
}
.vc-official__name {
    font-size: .8375rem;
    font-weight: 600;
    color: #111827;
}
.vc-official__role {
    font-size: .75rem;
    color: #9ca3af;
    margin-bottom: .2rem;
}
.vc-official__contact {
    font-size: .75rem;
    color: #6b7280;
}

/* Sporthallen ─────────────────────────────────────────────────────────────── */
.vc-hall {
    display: flex;
    gap: .75rem;
    padding: .85rem 1.25rem;
    border-bottom: 1px solid #f9fafb;
    align-items: flex-start;
}
.vc-hall:last-child { border-bottom: none; }
.vc-hall__badge {
    min-width: 36px;
    height: 36px;
    border-radius: 6px;
    background: #f3f4f6;
    color: #374151;
    font-size: .7rem;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    letter-spacing: .03em;
    flex-shrink: 0;
}
.vc-hall__name {
    font-size: .8375rem;
    font-weight: 600;
    color: #111827;
}
.vc-hall__name--main { color: var(--accent); }
.vc-hall__main-tag {
    display: inline-block;
    margin-left: .4rem;
    padding: .05rem .35rem;
    background: var(--accent);
    color: #fff;
    font-size: .65rem;
    font-weight: 600;
    border-radius: 3px;
    vertical-align: middle;
    text-transform: uppercase;
    letter-spacing: .04em;
}
.vc-hall__addr   { font-size: .75rem; color: #9ca3af; margin-top: .1rem; }
.vc-hall__courts { font-size: .7rem; color: #d1d5db; margin-top: .1rem; }
.vc-hall__remarks { font-size: .72rem; color: #9ca3af; margin-top: .15rem; font-style: italic; }

/* ── Mobile Accordion (Ansprechpartner & Hallen) ───────────────────────────── */
/* Desktop: wrapper transparent für Grid-Layout, Button versteckt */
.vc-mobile-more--grid { display: contents; }
.vc-mobile-more       { display: block; }
.vc-accordion-toggle  { display: none; }

@media (max-width: 640px) {
    .vc-mobile-more--grid              { display: none; }
    .vc-mobile-more--grid.is-open      { display: contents; }
    .vc-mobile-more                    { display: none; }
    .vc-mobile-more.is-open            { display: block; }
    .vc-accordion-toggle {
        display: flex;
        align-items: center;
        width: 100%;
        padding: .6rem 1rem;
        background: none;
        border: none;
        border-top: 1px solid var(--gray-100);
        font-size: .85rem;
        color: var(--accent);
        font-weight: 500;
        cursor: pointer;
        text-align: left;
        gap: .4rem;
    }
    .vc-accordion-toggle::after        { content: '▾'; margin-left: auto; font-size: .75rem; }
    .vc-accordion-toggle.is-open::after { content: '▴'; }
}

/* ── Universelles Accordion (alle Bildschirmgrößen, z.B. Hallen > 3) ────────── */
/* .vc-accordion-toggle bleibt mobile-only; --always zeigt auf allen Größen */
.vc-more                      { display: none; }
.vc-more.is-open              { display: block; }
.vc-accordion-toggle--always  { display: flex; align-items: center; width: 100%;
    padding: .6rem 1rem; background: none; border: none;
    border-top: 1px solid var(--gray-100); font-size: .85rem;
    color: var(--accent); font-weight: 500; cursor: pointer; text-align: left; gap: .4rem; }
.vc-accordion-toggle--always::after        { content: '▾'; margin-left: auto; font-size: .75rem; }
.vc-accordion-toggle--always.is-open::after { content: '▴'; }

/* Mobile ────────────────────────────────────────────────────────────────────── */
@media (max-width: 800px) {
    .vc-layout, .vc-info-grid { grid-template-columns: 1fr; }
    .vc-hero__logo { width: 52px; height: 52px; }
    .vc-hero__name { font-size: 1.1rem; }
    .vc-hero__body { padding: 1rem 1rem .75rem; gap: .85rem; }
    .vc-kader-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 480px) {
    .vc-kader-grid { grid-template-columns: 1fr; }
    .vc-stat__val  { font-size: 1.1rem; }
}

/* Wochenspielplan ────────────────────────────────────────────────────────── */
.woche-filter-bar {
    display: flex;
    flex-wrap: wrap;
    gap: .4rem .5rem;
    padding: .5rem 0 .75rem;
    align-items: center;
}
.wf-input {
    padding: .3rem .55rem;
    border: 1px solid var(--gray-300);
    border-radius: 6px;
    font-size: .8125rem;
    color: var(--gray-800);
    background: #fff;
    min-width: 0;
}
.wf-input:focus { outline: none; border-color: var(--accent); }
select.wf-input { flex: 0 0 auto; max-width: 200px; }
input.wf-input  { flex: 1 1 120px; }

.woche-day { margin-bottom: 1rem; }
.woche-day__head {
    font-size: .75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--gray-600);
    padding: .4rem 0 .3rem;
    border-bottom: 2px solid var(--gray-200);
    margin-bottom: .35rem;
    display: flex;
    justify-content: space-between;
    align-items: baseline;
}
.woche-day__count {
    font-size: .7rem;
    font-weight: 400;
    color: var(--gray-400);
    letter-spacing: 0;
    text-transform: none;
}
.woche-row {
    display: grid;
    grid-template-columns: 2.75rem 1fr;
    grid-template-rows: auto auto;
    gap: 0 .6rem;
    padding: .35rem .4rem;
    border-radius: 5px;
    transition: background .12s;
    border-bottom: 1px solid var(--gray-100);
}
.woche-row:last-child { border-bottom: none; }
.woche-row.row--clickable { cursor: pointer; }
.woche-row.row--clickable:hover { background: var(--gray-50); }
.woche-row.row--live { background: #fefce8; }
.woche-row__time {
    grid-row: 1 / 3;
    grid-column: 1;
    font-size: .75rem;
    font-weight: 600;
    color: var(--gray-500);
    align-self: center;
    white-space: nowrap;
}
.woche-row__match {
    grid-column: 2;
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    gap: .35rem;
    min-width: 0;
}
.woche-row__home {
    text-align: right;
    font-size: .8125rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
}
.woche-row__guest {
    text-align: left;
    font-size: .8125rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
}
.woche-row__home--win,
.woche-row__guest--win { font-weight: 700; color: var(--gray-900); }
.woche-row__score {
    font-size: .75rem;
    font-weight: 600;
    color: var(--gray-400);
    white-space: nowrap;
    text-align: center;
    min-width: 2.25rem;
}
.woche-row__score--done {
    color: var(--accent);
    font-weight: 700;
    font-size: .8125rem;
}
.woche-row__score--annulled {
    color: var(--gray-400);
    font-weight: 400;
    font-style: italic;
}
.woche-row__meta {
    grid-column: 2;
    font-size: .7rem;
    color: var(--gray-400);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
    margin-top: .05rem;
}
.woche-row__league { font-weight: 500; color: var(--gray-500); }
.woche-row__hall { margin-left: .25rem; }
.woche-empty {
    text-align: center;
    padding: 2.5rem 1rem;
    color: var(--gray-400);
    font-size: .9375rem;
}

/* =============================================================
   Feedback-Widget
   ============================================================= */

.fbk-trigger {
    position: fixed;
    bottom: 1.5rem;
    right: 1.5rem;
    z-index: 9999;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: #dc2626;
    color: #fff;
    border: none;
    cursor: pointer;
    box-shadow: 0 2px 10px rgba(0,0,0,.25);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform .15s, box-shadow .15s;
}
.fbk-trigger:hover {
    transform: scale(1.1);
    box-shadow: 0 4px 18px rgba(0,0,0,.3);
}

.fbk-panel {
    position: fixed;
    bottom: 5.5rem;
    right: 1.5rem;
    z-index: 9998;
    width: 340px;
    background: #fff;
    border-radius: 12px;
    box-shadow: 0 8px 32px rgba(0,0,0,.18);
    overflow: hidden;
    animation: fbk-slide-up .2s ease;
}
@keyframes fbk-slide-up {
    from { opacity: 0; transform: translateY(12px); }
    to   { opacity: 1; transform: translateY(0); }
}
@media (max-width: 400px) {
    .fbk-panel { right: .75rem; left: .75rem; width: auto; }
    .fbk-trigger { right: .75rem; bottom: .75rem; }
}

.fbk-panel__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: #dc2626;
    color: #fff;
    padding: .75rem 1rem;
}
.fbk-panel__title { font-weight: 600; font-size: .9375rem; }
.fbk-close {
    background: none;
    border: none;
    color: #fff;
    cursor: pointer;
    font-size: 1rem;
    line-height: 1;
    opacity: .8;
    padding: 0;
}
.fbk-close:hover { opacity: 1; }

.fbk-form {
    display: flex;
    flex-direction: column;
    gap: .75rem;
    padding: 1rem;
}

.fbk-type-row {
    display: flex;
    gap: .5rem;
}
.fbk-pill {
    flex: 1;
    cursor: pointer;
}
.fbk-pill input[type="radio"] { display: none; }
.fbk-pill span {
    display: block;
    text-align: center;
    padding: .45rem .5rem;
    border-radius: 6px;
    border: 1.5px solid #e5e7eb;
    font-size: .8125rem;
    font-weight: 500;
    color: #6b7280;
    transition: border-color .12s, background .12s, color .12s;
}
.fbk-pill input:checked + span {
    border-color: #dc2626;
    background: #fef2f2;
    color: #dc2626;
}

.fbk-textarea,
.fbk-input {
    width: 100%;
    border: 1.5px solid #e5e7eb;
    border-radius: 6px;
    padding: .5rem .625rem;
    font-size: .875rem;
    font-family: inherit;
    color: #111827;
    resize: vertical;
    box-sizing: border-box;
    transition: border-color .12s;
}
.fbk-textarea:focus,
.fbk-input:focus {
    outline: none;
    border-color: #dc2626;
}
.fbk-textarea { min-height: 90px; }

.fbk-file-label {
    display: block;
    border: 1.5px dashed #d1d5db;
    border-radius: 6px;
    padding: .5rem .625rem;
    font-size: .8125rem;
    color: #6b7280;
    cursor: pointer;
    text-align: center;
    transition: border-color .12s;
}
.fbk-file-label:hover { border-color: #dc2626; color: #dc2626; }
.fbk-file-input { display: none; }

.fbk-submit {
    background: #dc2626;
    color: #fff;
    border: none;
    border-radius: 6px;
    padding: .6rem 1rem;
    font-size: .9375rem;
    font-weight: 600;
    cursor: pointer;
    transition: background .12s;
}
.fbk-submit:hover:not(:disabled) { background: #b91c1c; }
.fbk-submit:disabled { opacity: .6; cursor: not-allowed; }

.fbk-success {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .35rem;
    padding: 1.5rem 1rem;
    text-align: center;
    color: #111827;
}
.fbk-success__icon { font-size: 2rem; }

/* ── Startseite: Trennlinie + Regions-Überschrift ──────────── */
.home-divider {
    border: none;
    border-top: 1px solid var(--gray-200);
    margin: 2rem 0 1.5rem;
}
.home-section-title {
    font-size: .8125rem;
    font-weight: 700;
    color: var(--gray-500);
    text-transform: uppercase;
    letter-spacing: .07em;
    margin: 0 0 .75rem;
}

/* ── Gruppen-Kacheln (.group-grid / .group-card) ──────────── */
.group-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: .75rem;
    margin-bottom: 2rem;
}
@media (max-width: 900px) {
    .group-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 480px) {
    .group-grid { grid-template-columns: repeat(2, 1fr); }
}

.group-card {
    background: var(--white);
    border: 1px solid var(--gray-200);
    border-top: 3px solid var(--group-accent, var(--gray-300));
    border-radius: 8px;
    padding: .875rem;
    display: flex;
    flex-direction: column;
    gap: .5rem;
}

.group-card__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .4rem;
}
/* Einheitliche Typografie-Ebenen:
   L1 .75rem/700 → Name, Stat
   L2 .7rem/400  → Clubs, Coming
   L3 .65rem/600 → Badge, Fed-Nick */
.group-card__name {
    font-size: .75rem;
    font-weight: 700;
    color: var(--gray-800);
    white-space: nowrap;
}
.group-card__badge {
    font-size: .65rem;
    font-weight: 600;
    padding: .1em .45em;
    border-radius: 999px;
    background: var(--gray-100);
    color: var(--gray-500);
    white-space: nowrap;
    flex-shrink: 0;
}
.group-card__badge--live {
    background: #e8f5e9;
    color: #2d7a2d;
}

.group-card__logos {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem;
    align-items: center;
}
.group-card__fed-link {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 6px;
    border: 1px solid var(--gray-200);
    background: var(--gray-50);
    padding: 4px;
    transition: box-shadow .15s;
    flex-shrink: 0;
}
.group-card__fed-link:hover {
    box-shadow: 0 2px 8px rgba(0,0,0,.15);
    text-decoration: none;
}
.group-card__fed-img {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}
.group-card__fed-nick {
    font-size: .65rem;
    font-weight: 600;
    color: var(--gray-700);
    text-align: center;
}
.group-card__coming {
    font-size: .7rem;
    color: var(--gray-400);
    line-height: 1.5;
}
.group-card__liga {
    display: flex;
    flex-direction: column;
    gap: .35rem;
    padding-top: .5rem;
    border-top: 1px solid var(--gray-100);
}
.group-card__liga-btn {
    display: block;
    font-size: .7rem;
    font-weight: 600;
    padding: .25rem .6rem;
    border-radius: 4px;
    background: color-mix(in srgb, var(--group-accent,#1565C0) 10%, white);
    color: var(--group-accent, #1565C0);
    border: 1px solid color-mix(in srgb, var(--group-accent,#1565C0) 25%, white);
    text-decoration: none;
    text-align: center;
    transition: background .15s;
}
.group-card__liga-btn:hover {
    background: color-mix(in srgb, var(--group-accent,#1565C0) 18%, white);
    text-decoration: none;
}
.group-card__stats-link--plain {
    cursor: default;
    pointer-events: none;
}
.group-card__liga-btn--archive {
    opacity: .7;
}
.group-card__liga-btn--tourn {
    background: #f9f7f0;
    color: #92400e;
    border-color: #fde68a;
}
.group-card__liga-btn--tourn:hover {
    background: #fef3c7;
}
.group-card__liga-hint {
    font-size: .65rem;
    color: var(--gray-400);
    align-self: center;
}
.group-card__clubs {
    font-size: .7rem;
    color: var(--gray-500);
}
.group-card--linked {
    border-color: var(--group-accent);
    box-shadow: 0 0 0 1px var(--group-accent);
    position: relative;
    cursor: pointer;
    transition: box-shadow .15s, transform .15s;
}
.group-card--linked::after {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: inherit;
    z-index: 0;
    cursor: pointer;
}
.group-card--linked:hover {
    box-shadow: 0 0 0 2px var(--group-accent), 0 4px 16px rgba(0,0,0,.12);
    transform: translateY(-2px);
}
.group-card--linked .group-card__fed-link,
.group-card--linked .group-card__stats-link,
.group-card--linked .group-card__name--link {
    position: relative;
    z-index: 1;
}
.group-card__name--link {
    color: var(--gray-800);
    text-decoration: none;
    font-size: .75rem;
    font-weight: 700;
}
.group-card__name--link:hover {
    color: var(--group-accent);
    text-decoration: none;
}
.group-card__stats-link {
    display: flex;
    flex-wrap: wrap;
    gap: .3rem .75rem;
    text-decoration: none;
    margin-top: .1rem;
}
.group-card__stat {
    font-size: .75rem;
    font-weight: 700;
    color: var(--group-accent);
}
.group-card__stats-link:hover .group-card__stat {
    text-decoration: underline;
}

/* ── Erklärbox (.badix-explainer) ─────────────────────────── */
.badix-explainer {
    margin-top: 2rem;
    background: var(--white);
    border-radius: var(--radius);
    box-shadow: var(--shadow-sm);
    padding: 1.5rem 1.5rem 1rem;
}
.badix-explainer__title {
    font-size: 1.125rem;
    font-weight: 700;
    color: var(--primary);
    margin: 0 0 1.25rem;
    padding-bottom: .75rem;
    border-bottom: 2px solid var(--gray-100);
}
.badix-explainer__grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 1.25rem 1.5rem;
}
.badix-explainer__block { padding-bottom: .5rem; }
.badix-explainer__icon {
    font-size: 1.5rem;
    margin-bottom: .375rem;
    line-height: 1;
}
.badix-explainer__block h3 {
    font-size: .9375rem;
    font-weight: 700;
    color: var(--primary);
    margin: 0 0 .375rem;
}
.badix-explainer__block p {
    font-size: .875rem;
    color: var(--gray-600);
    line-height: 1.6;
    margin: 0;
}
@media (max-width: 600px) {
    .badix-explainer__grid { grid-template-columns: 1fr; gap: 1rem; }
    .badix-explainer { padding: 1.25rem 1rem .75rem; }
}

/* ── Helle Verbandsfarben (BVRP #E6BD00, BWBV #F2C300) ────────────────────
   Weißer Text auf hellem Gelb ist unleserlich → auf diesen Verbänden
   dunkle Schrift verwenden wo var(--accent) als Hintergrund dient.       */
.fed-bvrp, .fed-bwbv {
    --accent-text:       #1a1a1a;
    --accent-text-muted: rgba(0,0,0,.55);
    --accent-text-faint: rgba(0,0,0,.38);
}

/* Begegnung Hero: Navigation + Stats */
.fed-bvrp .beg-nav__arrow,
.fed-bwbv .beg-nav__arrow            { color: rgba(0,0,0,.65); }
.fed-bvrp .beg-nav__arrow:hover,
.fed-bwbv .beg-nav__arrow:hover      { background: rgba(0,0,0,.08); color: #1a1a1a; }
.fed-bvrp .beg-nav__arrow--disabled,
.fed-bwbv .beg-nav__arrow--disabled  { color: rgba(0,0,0,.3); }
.fed-bvrp .beg-nav__label,
.fed-bwbv .beg-nav__label            { color: rgba(0,0,0,.8); text-shadow: none; }
.fed-bvrp .beg-nav__label:hover,
.fed-bwbv .beg-nav__label:hover      { color: #1a1a1a; }
.fed-bvrp .beg-nav__hall,
.fed-bwbv .beg-nav__hall             { color: rgba(0,0,0,.55); }

/* sp-hero__top (Spieler, BadiX, Staffel-Hero) */
.fed-bvrp .sp-hero__top,
.fed-bwbv .sp-hero__top              { color: #1a1a1a; }
.fed-bvrp .sp-hero__tag,
.fed-bwbv .sp-hero__tag              { color: rgba(0,0,0,.55); text-shadow: none; }
.fed-bvrp .sp-hero__name,
.fed-bwbv .sp-hero__name             { color: #1a1a1a; text-shadow: none; }

/* Stats-Bar (vc-stat Werte + Label auf Accent-Hintergrund) */
.fed-bvrp .sp-hero__bottom .vc-stat__val,
.fed-bwbv .sp-hero__bottom .vc-stat__val { color: #1a1a1a; }
.fed-bvrp .sp-hero__bottom .vc-stat__lbl,
.fed-bwbv .sp-hero__bottom .vc-stat__lbl { color: rgba(0,0,0,.55); }
.fed-bvrp .sp-hero__bottom .vc-stat__sep,
.fed-bwbv .sp-hero__bottom .vc-stat__sep { background: rgba(0,0,0,.2); }

/* Begegnung Score + Teamname */
.fed-bvrp .beg-score__val,
.fed-bwbv .beg-score__val            { color: #1a1a1a; }
.fed-bvrp .beg-score__sep,
.fed-bwbv .beg-score__sep            { color: rgba(0,0,0,.4); }
.fed-bvrp .beg-team__name,
.fed-bwbv .beg-team__name            { color: #1a1a1a; }

/* vc-stats-bar--hero hat explizit color:#fff gesetzt → spezifischer Override nötig */
.fed-bvrp .vc-stats-bar--hero .vc-stat__val,
.fed-bwbv .vc-stats-bar--hero .vc-stat__val { color: #1a1a1a; text-shadow: none; }
.fed-bvrp .vc-stats-bar--hero .vc-stat__lbl,
.fed-bwbv .vc-stats-bar--hero .vc-stat__lbl { color: rgba(0,0,0,.55); text-shadow: none; }
.fed-bvrp .vc-stats-bar--hero .vc-stat,
.fed-bwbv .vc-stats-bar--hero .vc-stat      { border-right-color: rgba(0,0,0,.15); }

/* ── Tabelle: schlichter Staffel-Kopf (tb-header) ─────────────────────────── */
.tb-header {
    background: #fff;
    border: 1px solid var(--gray-200);
    border-radius: var(--radius);
    margin-bottom: 1rem;
    overflow: hidden;
}
.tb-header__nav {
    display: flex;
    align-items: center;
    gap: .5rem;
    padding: .875rem 1rem;
}
.tb-header__arrow {
    color: var(--accent);
    font-size: 1.1rem;
    padding: .25rem .5rem;
    border-radius: 4px;
    text-decoration: none;
    flex-shrink: 0;
    transition: background .15s;
}
.tb-header__arrow:hover { background: var(--gray-100); text-decoration: none; }
.tb-header__arrow--disabled { color: var(--gray-300); cursor: default; }
.tb-header__title {
    flex: 1;
    text-align: center;
    min-width: 0;
}
.tb-header__title h1 {
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--gray-900);
    margin: 0 0 .15rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.tb-header__meta {
    font-size: .75rem;
    color: var(--gray-500);
}
.tb-header__tabs {
    display: flex;
    border-top: 1px solid var(--gray-200);
}
.tb-tab {
    flex: 1;
    padding: .5rem 1rem;
    font-size: .8125rem;
    font-weight: 500;
    color: var(--gray-600);
    background: none;
    border: none;
    border-right: 1px solid var(--gray-200);
    cursor: pointer;
    transition: background .15s, color .15s;
}
.tb-tab:last-child { border-right: none; }
.tb-tab:hover { background: var(--gray-50); color: var(--gray-900); }
.tb-tab--active {
    color: var(--accent);
    background: var(--gray-50);
    border-bottom: 2px solid var(--accent);
}

/* ── Tabelle: Tab-Leiste unterhalb des Hero ────────────────────────────────── */
.tb-tabs {
    display: flex;
    background: #fff;
    border: 1px solid var(--gray-200);
    border-radius: var(--radius);
    margin-bottom: 1rem;
    overflow: hidden;
}
.tb-tab {
    flex: 1;
    padding: .6rem .5rem;
    font-size: .8125rem;
    font-weight: 500;
    color: var(--gray-600);
    background: none;
    border: none;
    border-right: 1px solid var(--gray-200);
    cursor: pointer;
    transition: background .15s, color .15s;
    white-space: normal;
    line-height: 1.2;
    text-align: center;
}
.tb-tab:last-child { border-right: none; }
.tb-tab:hover { background: var(--gray-50); color: var(--gray-900); }
.tb-tab--active { color: var(--accent); font-weight: 600; background: var(--gray-50); }

/* vc-stats-bar--hero bei hellen Verbänden: weiße Schrift mit schwarzem Rand */
.fed-bvrp .vc-stats-bar--hero .vc-stat__val,
.fed-bwbv .vc-stats-bar--hero .vc-stat__val {
    color: #fff;
    text-shadow: -1px -1px 0 rgba(0,0,0,.7), 1px -1px 0 rgba(0,0,0,.7),
                 -1px  1px 0 rgba(0,0,0,.7), 1px  1px 0 rgba(0,0,0,.7);
}
.fed-bvrp .vc-stats-bar--hero .vc-stat__lbl,
.fed-bwbv .vc-stats-bar--hero .vc-stat__lbl {
    color: rgba(255,255,255,.9);
    text-shadow: 0 1px 2px rgba(0,0,0,.6);
}

/* staffel-hero__tag bei hellen Verbänden: schwarze Schrift */
.fed-bvrp .staffel-hero__tag,
.fed-bwbv .staffel-hero__tag { color: #1a1a1a; text-shadow: none; }

/* vc-stats-bar--hero Hintergrund bei hellen Verbänden: dunkles Semi-Transparent */
.fed-bvrp .vc-stats-bar--hero,
.fed-bwbv .vc-stats-bar--hero {
    background: rgba(0,0,0,.28);
    border-top-color: rgba(0,0,0,.15);
}
.fed-bvrp .vc-stats-bar--hero .vc-stat,
.fed-bwbv .vc-stats-bar--hero .vc-stat { border-right-color: rgba(255,255,255,.15); }

/* Revert: Hintergrund der Stats-Bar bei hellen Verbänden NICHT verändern */
.fed-bvrp .vc-stats-bar--hero,
.fed-bwbv .vc-stats-bar--hero {
    background: rgba(255,255,255,.25);
    background: color-mix(in srgb, var(--accent) 50%, #fff);
    border-top-color: rgba(0,0,0,.06);
}
.fed-bvrp .vc-stats-bar--hero .vc-stat,
.fed-bwbv .vc-stats-bar--hero .vc-stat { border-right-color: rgba(0,0,0,.12); }

/* Schrift dunkel (kein text-shadow, kein Weiß) */
.fed-bvrp .vc-stats-bar--hero .vc-stat__val,
.fed-bwbv .vc-stats-bar--hero .vc-stat__val { color: #1a1a1a; text-shadow: none; }
.fed-bvrp .vc-stats-bar--hero .vc-stat__lbl,
.fed-bwbv .vc-stats-bar--hero .vc-stat__lbl { color: rgba(0,0,0,.55); text-shadow: none; }

/* ── Statistik: Ganz enges Ding ────────────────────────────────────────────── */
.ff-tight-total {
    text-align: center;
    padding: 1rem 0 .75rem;
}
.ff-tight-total__num {
    display: block;
    font-size: 3rem;
    font-weight: 800;
    color: var(--accent);
    line-height: 1;
}
.ff-tight-total__lbl {
    font-size: .8rem;
    color: var(--gray-500);
    text-transform: uppercase;
    letter-spacing: .05em;
}
/* ── Statistik: Längstes Spiel ─────────────────────────────────────────────── */
.ff-longest-link {
    display: block;
    text-decoration: none;
    color: inherit;
    border-radius: 8px;
    padding: .5rem .25rem;
    transition: background .15s;
}
.ff-longest-link:hover { background: var(--gray-100); }
.ff-longest-teams {
    display: flex;
    align-items: center;
    gap: .5rem;
    margin-bottom: .6rem;
}
.ff-longest-team {
    flex: 1;
    min-width: 0;
    font-weight: 600;
    font-size: .85rem;
    color: var(--gray-800);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.ff-longest-team--right { text-align: right; }
.ff-longest-score {
    flex-shrink: 0;
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--accent);
    padding: .1rem .5rem;
    background: var(--gray-100);
    border-radius: 6px;
    white-space: nowrap;
}
.ff-longest-balls {
    text-align: center;
    padding-top: .5rem;
    border-top: 1px solid var(--gray-100);
}
.ff-longest-balls__num {
    display: block;
    font-size: 2.5rem;
    font-weight: 800;
    color: var(--accent);
    line-height: 1;
}
.ff-intl-total {
    margin-top: .85rem;
    padding-top: .75rem;
    border-top: 1px solid var(--gray-100);
    font-size: .8rem;
    color: var(--gray-500);
    line-height: 1.4;
}
.ff-intl-total strong { color: var(--gray-700); }

.ff-longest-balls__lbl {
    font-size: .75rem;
    color: var(--gray-500);
    text-transform: uppercase;
    letter-spacing: .05em;
}

/* ── Spielplan v2 ─────────────────────────────────────────────────────────── */

/* Liga-Akzentfarben (CSS custom property --lc für Randlinie + Liga-Label) */
.l-landes { --lc: #991B1B; }
.l-vbl    { --lc: #C8382A; }
.l-bol    { --lc: #2563EB; }
.l-bl     { --lc: #059669; }
.l-kl     { --lc: #D97706; }
.l-jugend { --lc: #7C3AED; }
.l-hobby  { --lc: #65A30D; }

/* View-Toggle ────────────────────────────────────────────────────────────── */
.sp-view-toggle {
    display: flex;
    border-bottom: 1px solid var(--gray-200);
}
.sp-vt-btn {
    flex: 1;
    padding: .6rem 1rem;
    border: none;
    background: transparent;
    font-size: .8125rem;
    font-weight: 500;
    color: var(--gray-600);
    cursor: pointer;
    border-bottom: 2px solid transparent;
    margin-bottom: -1px;
    transition: color .15s, border-color .15s;
}
.sp-vt-btn:hover { color: var(--accent); }
.sp-vt-btn--active {
    color: var(--accent);
    border-bottom-color: var(--accent);
    font-weight: 600;
}

/* Monat-Chips ────────────────────────────────────────────────────────────── */
.sp-monat-row {
    display: flex;
    gap: .375rem;
    padding: .5rem 1.25rem;
    overflow-x: auto;
    scrollbar-width: none;
    border-bottom: 1px solid var(--gray-200);
    -webkit-overflow-scrolling: touch;
}
.sp-monat-row::-webkit-scrollbar { display: none; }
.sp-monat-chip {
    flex-shrink: 0;
    padding: .25rem .7rem;
    border: 1px solid var(--gray-300);
    border-radius: 999px;
    background: #fff;
    font-size: .75rem;
    color: var(--gray-600);
    cursor: pointer;
    transition: background .15s, border-color .15s, color .15s;
    white-space: nowrap;
}
.sp-monat-chip:hover { border-color: var(--primary); color: var(--primary); }
.sp-monat-chip.active {
    background: var(--primary);
    border-color: var(--primary);
    color: #fff;
    font-weight: 600;
}

/* Filter-Zeilen ──────────────────────────────────────────────────────────── */
.sp-filters {
    border-bottom: 1px solid var(--gray-200);
}
.sp-filter-row {
    display: flex;
    align-items: center;
    gap: .5rem;
    padding: .4375rem 1.25rem;
    border-bottom: 1px solid var(--gray-200);
}
.sp-filter-row:last-child { border-bottom: none; }
.sp-filter-lbl {
    font-size: .6875rem;
    color: var(--gray-600);
    white-space: nowrap;
    min-width: 60px;
    font-weight: 500;
}
/* Stretch wf-input to fill filter row */
.sp-filter-sel {
    flex: 1;
    max-width: 100%;
    min-width: 0;
}

/* Kategorie-Pills (identisch zu Monat-Chips) ─────────────────────────────── */
.sp-kat-row {
    display: flex;
    gap: .375rem;
    padding: .5rem 1.25rem;
    overflow-x: auto;
    scrollbar-width: none;
    border-bottom: 1px solid var(--gray-200);
    -webkit-overflow-scrolling: touch;
}
.sp-kat-row::-webkit-scrollbar { display: none; }
.sp-kat-chip {
    flex-shrink: 0;
    padding: .25rem .7rem;
    border: 1px solid var(--gray-300);
    border-radius: 999px;
    background: #fff;
    font-size: .75rem;
    color: var(--gray-600);
    cursor: pointer;
    transition: background .15s, border-color .15s, color .15s;
    white-space: nowrap;
}
.sp-kat-chip:hover { border-color: var(--primary); color: var(--primary); }
.sp-kat-chip.active {
    background: var(--primary);
    border-color: var(--primary);
    color: #fff;
    font-weight: 600;
}

/* Treffer-Zähler ─────────────────────────────────────────────────────────── */
.sp-count-bar {
    padding: .35rem 1.25rem;
    font-size: .75rem;
    color: var(--gray-500);
    border-bottom: 1px solid var(--gray-200);
    background: var(--gray-50);
}

/* Vergangene-Toggle (Checkbox-Zeile) ─────────────────────────────────────── */
.sp-toggle-label {
    display: flex;
    align-items: center;
    gap: .4rem;
    font-size: .8125rem;
    color: var(--gray-600);
    cursor: pointer;
}
.sp-toggle-label input[type="checkbox"] {
    width: 1rem;
    height: 1rem;
    accent-color: var(--primary);
    cursor: pointer;
    flex-shrink: 0;
}

/* Filter-Aktionsleiste (Reset + ICS) ─────────────────────────────────────── */
.sp-filter-actions {
    display: flex;
    align-items: center;
    gap: .75rem;
    padding: .5rem 1.25rem;
    border-bottom: 1px solid var(--gray-200);
    background: var(--gray-50);
}
.sp-filter-actions[hidden] { display: none; }
.sp-reset-btn {
    padding: .3rem .75rem;
    border: 1px solid var(--gray-300);
    border-radius: 6px;
    background: #fff;
    font-size: .8125rem;
    color: var(--gray-700);
    cursor: pointer;
    transition: border-color .15s, color .15s;
}
.sp-reset-btn:hover { border-color: var(--accent); color: var(--accent); }
.sp-ics-link {
    font-size: .8125rem;
    color: var(--gray-500);
    text-decoration: none;
    margin-left: auto;
}
.sp-ics-link:hover { color: var(--primary); text-decoration: underline; }

/* [hidden] muss display-Deklarationen überschreiben (CSS-Spezifitätsproblem) */
.sp-match[hidden],
.sp-month-block[hidden],
.sp-day-sub[hidden] { display: none !important; }

/* Match-Zeilen ───────────────────────────────────────────────────────────── */
.sp-match {
    display: grid;
    grid-template-columns: 2.75rem 1fr auto;
    gap: .5rem;
    padding: .5625rem 1.25rem;
    border-bottom: 1px solid var(--gray-200);
    cursor: pointer;
    position: relative;
    transition: background .1s;
}
.sp-match:last-child { border-bottom: none; }
.sp-match:hover {
    background: color-mix(in srgb, var(--accent) 6%, #fff);
}
.sp-match::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 3px;
    border-radius: 0 2px 2px 0;
    background: var(--lc, var(--gray-300));
}
.sp-match__time {
    text-align: right;
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: .1rem;
}
.sp-match__hhmm {
    font-size: .8125rem;
    font-weight: 600;
    color: var(--gray-800);
    line-height: 1.1;
}
.sp-match__day {
    font-size: .625rem;
    color: var(--gray-600);
}
.sp-match__body {
    min-width: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: .15rem;
}
.sp-match__teams {
    display: flex;
    align-items: baseline;
    gap: .25rem;
    overflow: hidden;
}
.sp-match__home,
.sp-match__guest {
    font-size: .8125rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
}
.sp-match__home  { color: var(--gray-800); flex-shrink: 0; max-width: 42%; }
.sp-match__guest { color: var(--gray-600); flex: 1; }
.sp-match__vs {
    font-size: .625rem;
    color: var(--gray-400);
    flex-shrink: 0;
}
.sp-match__meta {
    display: flex;
    align-items: center;
    gap: .25rem;
    overflow: hidden;
}
a.sp-match__liga, .sp-match__liga {
    font-size: .625rem;
    font-weight: 500;
    color: var(--lc, var(--gray-600));
    text-decoration: none;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    flex-shrink: 1;
    min-width: 0;
}
.sp-match__hall {
    font-size: .625rem;
    color: var(--gray-400);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
    flex-shrink: 1;
}
.sp-match__hall::before { content: '·'; margin-right: .2rem; }
.sp-match__right {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    justify-content: center;
    gap: .2rem;
    flex-shrink: 0;
}
.sp-match__score {
    font-size: .875rem;
    font-weight: 700;
    color: var(--gray-800);
    white-space: nowrap;
}
.sp-match__badge-open {
    font-size: .625rem;
    font-weight: 500;
    color: var(--gray-400);
    text-transform: uppercase;
    letter-spacing: .04em;
}

/* Verein-Highlight bei Vereins-Filter */
.sp-hl-home  .sp-match__home  { color: var(--accent); font-weight: 700; }
.sp-hl-guest .sp-match__guest { color: var(--accent); font-weight: 700; }

/* Monats-Header ──────────────────────────────────────────────────────────── */
.sp-month-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: .4375rem 1.25rem;
    background: var(--gray-50);
    border-bottom: 1px solid var(--gray-200);
    border-top: 1px solid var(--gray-200);
}
.sp-month-block:first-child .sp-month-header { border-top: none; }
.sp-month-lbl {
    font-size: .6875rem;
    font-weight: 700;
    color: var(--gray-600);
    text-transform: uppercase;
    letter-spacing: .05em;
}
.sp-month-cnt {
    font-size: .6875rem;
    color: var(--gray-400);
}
.sp-month-block--done .sp-month-lbl::after {
    content: ' · Gespielt';
    font-weight: 400;
    color: var(--gray-400);
    text-transform: none;
    letter-spacing: 0;
}

/* Tages-Subheader ────────────────────────────────────────────────────────── */
.sp-day-sub {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: .3125rem 1.25rem .25rem;
    border-bottom: 1px solid var(--gray-200);
    background: #fff;
}
.sp-day-sub-lbl {
    font-size: .6875rem;
    color: var(--gray-600);
    font-weight: 500;
}
.sp-day-sub-lbl.today {
    color: var(--accent);
    font-weight: 700;
}
.sp-day-sub-cnt {
    font-size: .625rem;
    color: var(--gray-400);
}

/* Empty-State: uses existing .empty-state class */

/* Mobile: kompaktere Monat-Chips ─────────────────────────────────────────── */
@media (max-width: 480px) {
    .sp-monat-chip { padding: .2rem .55rem; }
    .sp-filter-lbl { min-width: 52px; }
    .sp-match { padding: .5rem .875rem; }
    .sp-match__home { max-width: 40%; }
}

/* ══════════════════════════════════════════════════════════════════
   SEARCH STRIP – globale Suche (Spieler + Vereine)
   Position: direkt nach dem fed-hero auf der Startseite
   ══════════════════════════════════════════════════════════════════ */

.search-strip {
    background: var(--card, #fff);
    border-bottom: 1px solid var(--border, #e2e8f0);
    padding: .875rem 1rem;
    margin-bottom: 1.25rem;
    position: relative;
    z-index: 50;
}
@media (min-width: 640px) {
    .search-strip {
        position: sticky;
        top: 52px; /* Navbar-Höhe */
        z-index: 50;
    }
}

.search-row {
    display: flex;
    gap: .5rem;
    max-width: 680px;
    margin: 0 auto;
}

.search-field-wrap {
    flex: 1;
    position: relative;
}

.search-field-icon {
    position: absolute;
    left: .8rem;
    top: 50%;
    transform: translateY(-50%);
    font-size: 1rem;
    color: #aaa;
    pointer-events: none;
    line-height: 1;
}

.search-field {
    width: 100%;
    background: var(--bg, #f8fafc);
    border: 1.5px solid var(--border, #e2e8f0);
    border-radius: var(--radius, 8px);
    color: var(--text, #1a1a2e);
    font-size: .9375rem;
    padding: .65rem .9rem .65rem 2.4rem;
    outline: none;
    transition: border-color .15s, background .15s;
    font-family: inherit;
}
.search-field::placeholder { color: #aaa; }
.search-field:focus {
    border-color: var(--accent, #2E75B6);
    background: #fff;
}
.search-field--page {
    font-size: 1rem;
    padding: .75rem .9rem .75rem 2.4rem;
}

.search-btn {
    background: var(--accent, #2E75B6);
    border: none;
    border-radius: var(--radius, 8px);
    color: #fff;
    font-size: .875rem;
    font-weight: 600;
    padding: 0 1.1rem;
    cursor: pointer;
    transition: opacity .15s;
    white-space: nowrap;
    flex-shrink: 0;
    font-family: inherit;
}
.search-btn:hover { opacity: .88; }

/* Dropdown ───────────────────────────────────────────────────────── */
.search-dropdown {
    display: none;
    position: absolute;
    top: calc(100% - 1px);
    left: 1rem;
    right: 1rem;
    max-width: 680px;
    margin: 0 auto;
    background: var(--card, #fff);
    border-radius: 0 0 var(--radius, 8px) var(--radius, 8px);
    border: 1px solid var(--border, #e2e8f0);
    border-top: none;
    box-shadow: 0 8px 24px rgba(0,0,0,.12);
    overflow: hidden;
    z-index: 300;
}
.search-dropdown.visible { display: block; }

.search-group-label {
    font-size: .6875rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .08em;
    color: var(--text-muted, #64748b);
    padding: .5rem .9rem .3rem;
    background: var(--bg, #f8fafc);
    border-bottom: 1px solid var(--border, #e2e8f0);
}

.search-result-item {
    display: flex;
    align-items: center;
    gap: .75rem;
    padding: .65rem .9rem;
    border-bottom: 1px solid var(--border, #e2e8f0);
    text-decoration: none;
    color: var(--text, #1a1a2e);
    transition: background .1s;
}
.search-result-item:last-of-type { border-bottom: none; }
.search-result-item:hover {
    background: color-mix(in srgb, var(--accent, #2E75B6) 8%, transparent);
}

.result-avatar {
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: color-mix(in srgb, var(--accent, #2E75B6) 12%, transparent);
    color: var(--accent, #2E75B6);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: .75rem;
    font-weight: 700;
    flex-shrink: 0;
    overflow: hidden;
}
.result-avatar--club {
    border-radius: var(--radius, 8px);
    background: #eef2ff;
    color: #4361ee;
}
.result-avatar--logo {
    background: #fff;
    padding: 2px;
}
.result-avatar img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.result-main {
    flex: 1;
    min-width: 0;
}
.result-name {
    font-weight: 600;
    font-size: .875rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.result-name mark {
    background: none;
    color: var(--accent, #2E75B6);
    font-weight: 700;
}
.result-sub {
    font-size: .75rem;
    color: var(--text-muted, #64748b);
    margin-top: 1px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.result-badge {
    font-size: .6875rem;
    padding: .15rem .5rem;
    border-radius: 20px;
    font-weight: 600;
    flex-shrink: 0;
}
.badge-player {
    background: color-mix(in srgb, var(--accent, #2E75B6) 12%, transparent);
    color: var(--accent, #2E75B6);
}
.badge-club {
    background: #eef2ff;
    color: #4361ee;
}
.badge-tournament {
    background: #fef9ee;
    color: #92650a;
}
.result-avatar--tournament {
    background: #fef9ee;
    font-size: 1rem;
}

.search-dropdown-footer {
    padding: .5rem .9rem;
    font-size: .75rem;
    color: var(--text-muted, #64748b);
    background: var(--bg, #f8fafc);
    border-top: 1px solid var(--border, #e2e8f0);
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.search-dropdown-footer a {
    color: var(--accent, #2E75B6);
    text-decoration: none;
    font-weight: 500;
}
.search-dropdown-footer a:hover { text-decoration: underline; }

.search-no-results {
    padding: 1.1rem .9rem;
    font-size: .875rem;
    color: var(--text-muted, #64748b);
    text-align: center;
}

/* Suchergebnisseite (suche.php) ─────────────────────────────────── */
.suche-form-wrap {
    max-width: 900px;
    margin: 0 auto 1.25rem;
    padding: 0 1rem;
}
.suche-form {
    display: flex;
    gap: .5rem;
}

.suche-section {
    max-width: 900px;
    margin: 0 auto 1.75rem;
    padding: 0 1rem;
}

/* Sektions-Header: Label + Trefferanzahl nebeneinander */
.suche-section__hd {
    display: flex;
    align-items: baseline;
    gap: .6rem;
    margin-bottom: .6rem;
}
.suche-section__label {
    font-size: .6875rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .08em;
    color: var(--text-muted, #64748b);
}
.suche-section__count {
    font-size: .75rem;
    color: var(--text-muted, #64748b);
}

/* Ergebnis-Container */
.suche-results {
    border: 1px solid var(--border, #e2e8f0);
    border-radius: var(--radius, 8px);
    overflow: hidden;
    background: var(--card, #fff);
}

/* 2-Spalten-Grid für Spieler + Vereine ab 600px */
.suche-results--grid {
    display: grid;
    grid-template-columns: 1fr;
}
@media (min-width: 600px) {
    .suche-results--grid {
        grid-template-columns: repeat(2, 1fr);
    }
    /* Linker Rand für gerade Items (rechte Spalte) */
    .suche-results--grid .suche-result-item:nth-child(even) {
        border-left: 1px solid var(--border, #e2e8f0);
    }
}

/* Ergebnis-Zeile im Vollseitenmodus – etwas größer als Dropdown */
.suche-section .suche-result-item {
    padding: .75rem 1rem;
    gap: .85rem;
}
.suche-section .result-avatar {
    width: 42px;
    height: 42px;
    font-size: .8125rem;
}
/* Farbige Avatare: hue kommt per --av-hue aus PHP */
.suche-section .result-avatar--player {
    background: hsl(var(--av-hue, 210), 55%, 92%);
    color: hsl(var(--av-hue, 210), 55%, 35%);
}
.suche-section .result-name {
    font-size: .9375rem;
    white-space: normal;          /* nicht abschneiden – Platz vorhanden */
}

/* Paginierung mit Seitenzahlen */
.suche-pager {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
    gap: .3rem;
    margin-top: .9rem;
    font-size: .875rem;
}
.suche-pager__btn {
    color: var(--accent, #2E75B6);
    text-decoration: none;
    font-weight: 500;
    min-width: 2rem;
    text-align: center;
    padding: .3rem .5rem;
    border: 1px solid var(--border, #e2e8f0);
    border-radius: var(--radius, 8px);
    transition: background .15s;
    line-height: 1.4;
}
.suche-pager__btn:hover { background: var(--bg, #f8fafc); }
.suche-pager__btn--active {
    background: var(--accent, #2E75B6);
    color: #fff;
    border-color: var(--accent, #2E75B6);
    cursor: default;
}
.suche-pager__prev,
.suche-pager__next { min-width: auto; padding: .3rem .7rem; }
.suche-pager__dots { color: var(--text-muted, #64748b); padding: .3rem .2rem; }

.suche-empty-hint {
    max-width: 900px;
    margin: 2rem auto;
    padding: 0 1rem;
    text-align: center;
    color: var(--text-muted, #64748b);
    font-size: .9375rem;
}

/* ── Turnier-Only Notice Banner ─────────────────────────────────────────────── */
.sp-tour-only-notice {
    display: flex;
    gap: .5rem;
    align-items: flex-start;
    background: #fffbeb;
    border-left: 3px solid #f59e0b;
    border-radius: 6px;
    padding: .6rem .9rem;
    font-size: .85rem;
    color: #78350f;
    margin: .75rem auto;
    max-width: var(--content-max-width, 960px);
}
.sp-tour-only-notice a { color: inherit; text-decoration: underline; }

/* ── Historischer Spieler Banner + Matches ─────────────────────────────────── */
.sp-hist-banner {
    display: flex;
    align-items: center;
    gap: .625rem;
    padding: .625rem 1rem;
    margin: 0 0 1rem;
    background: #fffbeb;
    border: 1px solid #fcd34d;
    border-radius: 8px;
    font-size: .8125rem;
    color: #92400e;
    line-height: 1.4;
}
.sp-hist-banner svg { flex-shrink: 0; color: #d97706; }

.sp-season-divider--hist {
    border-left-color: #d97706;
    background: #fffbeb;
    margin-top: 1.75rem;
}
.sp-season-divider--hist .sp-season-divider__label { color: #b45309; }

.sp-season-divider--year {
    border-left-color: var(--accent);
    background: color-mix(in srgb, var(--accent) 6%, #fff);
    margin-top: 1.75rem;
}
.sp-season-divider--year .sp-season-divider__label {
    font-size: 1rem;
    color: var(--accent);
}

.sp-season-divider--sub {
    border-left: 2px solid #e5e7eb;
    background: #f9fafb;
    margin: .75rem 0 .25rem;
    padding: .3rem .75rem;
    font-size: .75rem;
    font-weight: 600;
    color: #6b7280;
    border-radius: 0 4px 4px 0;
}

.sp-hist-card {
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    overflow: hidden;
    margin-bottom: .5rem;
    background: #fff;
}

.sp-meeting--hist .sp-group-header {
    background: #fefce8;
    border-bottom-color: #fde68a;
}
.sp-meeting--hist .sp-group-header--link:hover {
    background: #fef9c3;
}
.sp-meeting--hist .sp-group-date { color: #92400e; }
.sp-meeting--hist .sp-group-opponent { color: #78350f; }

/* Liga-Akzentstreifen links (gleich wie spielplan.php) */
.sp-meeting--hist {
    position: relative;
}
.sp-meeting--hist::before {
    content: '';
    position: absolute;
    left: 0; top: 0; bottom: 0;
    width: 3px;
    border-radius: 0 2px 2px 0;
    background: var(--lc, #d1d5db);
}
.sp-hist-sp { font-size: .8em; opacity: .65; font-weight: 400; }

/* ===================================================================
   hist_begegnung.php – Historischer Spielbericht (Archiv-Variante)
   Layout identisch zu begegnung.php, nur Akzentfarbe amber/braun via --accent.
   =================================================================== */

/* Archiv-Badge im beg-nav__label */
.beg-hist-badge {
    background: #d97706; color: #fff;
    font-size: .65rem; font-weight: 700; letter-spacing: .06em;
    padding: .1rem .45rem; border-radius: 3px; text-transform: uppercase;
    vertical-align: middle;
}

/* Disziplinen-Tabelle */
.hb-disc-card { padding: 0; overflow: hidden; }
.hb-disc-table {
    width: 100%; border-collapse: collapse; font-size: .875rem;
}
.hb-disc-table thead th {
    background: var(--gray-50); font-size: .7rem; font-weight: 600;
    color: var(--gray-500); letter-spacing: .04em; text-transform: uppercase;
    padding: .5rem .75rem; border-bottom: 1px solid var(--gray-200);
}
.hb-col-disc  { width: 3.5rem; text-align: center; }
.hb-col-home  { text-align: right; }
.hb-col-sets  { width: 10rem; text-align: center; white-space: nowrap; }
.hb-col-away  { text-align: left; }
.hb-col-won   { width: 1.5rem; text-align: center; }

.hb-disc-row td {
    padding: .6rem .75rem; border-bottom: 1px solid var(--gray-100);
    vertical-align: middle;
}
.hb-disc-row:last-of-type td { border-bottom: none; }
.hb-disc-row--home-win { background: rgba(16,185,129,.04); }
.hb-disc-row--away-win { background: rgba(239,68,68,.04); }

/* Disziplin-Badge */
.hb-disc-badge {
    display: inline-block; font-size: .7rem; font-weight: 700;
    padding: .15rem .4rem; border-radius: 3px;
    background: var(--gray-100); color: var(--gray-600);
    letter-spacing: .02em;
}

/* Satzergebnisse */
.hb-set-pair { display: inline-flex; align-items: center; gap: 1px; }
.hb-set-n    { font-size: .8rem; min-width: 1.4rem; text-align: center; padding: .1rem .25rem; border-radius: 2px; }
.hb-set-n--win { font-weight: 700; background: rgba(16,185,129,.12); color: #059669; }
.hb-set-sep  { font-size: .7rem; color: var(--gray-400); padding: 0 1px; }
.hb-set-dot  { font-size: .6rem; color: var(--gray-300); margin: 0 .25rem; }
.hb-walkover { font-size: .7rem; color: var(--gray-400); font-style: italic; }

/* Gewinner-Pfeil */
.hb-won-h { color: #059669; font-size: .7rem; }
.hb-won-g { color: #dc2626; font-size: .7rem; }

/* Spieler-Link */
.hb-player-link { color: inherit; text-decoration: none; border-bottom: 1px dotted var(--gray-300); }
.hb-player-link:hover { color: var(--accent); border-bottom-color: var(--accent); }
.hb-slash { color: var(--gray-400); margin: 0 .15rem; }

/* Tabellen-Fußzeile */
.hb-total-row td {
    padding: .6rem .75rem; background: var(--gray-50);
    font-size: .8rem; font-weight: 600; color: var(--gray-600);
    border-top: 2px solid var(--gray-200);
}
.hb-total-home { text-align: right; }
.hb-total-score { text-align: center; font-size: 1rem; color: var(--gray-800); }
.hb-total-away  { text-align: left; }

/* Archiv-Hinweis (alt – nicht mehr verwendet, Klasse bleibt für Rückwärtskompatibilität) */
.hb-hist-notice {
    text-align: center; font-size: .75rem; color: var(--gray-400);
    padding: .75rem 1rem 1.5rem; display: flex; align-items: center; justify-content: center; gap: .35rem;
}

/* Neuer Archiv-Hinweis unter dem Spielbericht */
.beg-archive-notice {
    display: flex; align-items: flex-start; gap: .5rem;
    margin: 1rem 0 1.5rem;
    padding: .6rem .9rem;
    background: #fef3c7;       /* amber-50 */
    border: 1px solid #fde68a; /* amber-200 */
    border-left: 3px solid #d97706; /* amber-600 */
    border-radius: 6px;
    font-size: .78rem; line-height: 1.5; color: #78350f; /* amber-900 */
}
.beg-archive-notice svg {
    flex-shrink: 0; margin-top: .1rem; color: #d97706;
}

/* Mobile */
@media (max-width: 600px) {
}

/* ── Historisches Archiv-Banner (tabelle.php + index.php) ──────────────────── */
.hist-banner {
    display: flex;
    align-items: center;
    gap: .6rem;
    background: #fef3c7;
    border: 1.5px solid #fbbf24;
    border-radius: 8px;
    padding: .6rem 1rem;
    font-size: .85rem;
    color: #92400e;
    margin-bottom: .75rem;
}
.hist-banner__icon { font-size: 1.1rem; flex-shrink: 0; }

/* ── Turnier-Toggle & Turnier-Karten (STAGING ONLY) ─────────────────────── */
.sp-src-toggle {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .375rem;
    padding: .625rem .875rem;
    background: #fff;
    border: 0.5px solid #e5e7eb;
    border-radius: 8px;
    margin-bottom: 1rem;
}
.sp-src-btn {
    padding: .25rem .7rem;
    border: 0.5px solid #d1d5db;
    border-radius: 999px;
    font-size: .8rem;
    color: #6b7280;
    text-decoration: none;
    white-space: nowrap;
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    transition: background .12s, color .12s;
}
.sp-src-btn:hover { background: #f9fafb; color: #111827; text-decoration: none; }
.sp-src-btn--active {
    background: var(--accent);
    border-color: var(--accent);
    color: #fff;
    font-weight: 600;
}
.sp-src-btn--active:hover { background: var(--accent-dk); color: #fff; }
.sp-src-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: #fff;
    color: var(--accent);
    border-radius: 999px;
    padding: 0 .45em;
    font-size: .75em;
    font-weight: 700;
    min-width: 1.4em;
    line-height: 1.6;
    box-shadow: 0 0 0 1.5px var(--accent);
}
.sp-src-btn--active .sp-src-badge {
    background: rgba(255,255,255,.25);
    color: #fff;
    box-shadow: 0 0 0 1.5px rgba(255,255,255,.5);
}
.sp-src-new {
    display: inline-block;
    background: #f59e0b;
    color: #fff;
    font-size: .65rem;
    font-weight: 700;
    border-radius: 3px;
    padding: 1px 4px;
    letter-spacing: .03em;
    text-transform: uppercase;
    line-height: 1.4;
}

.sp-tournament-card { padding: 0; overflow: hidden; }
.sp-tournament-header {
    display: flex;
    align-items: flex-start;
    gap: .75rem;
    padding: .875rem 1rem;
    background: #f8fafc;
    border-bottom: 1px solid #e2e8f0;
    position: relative;
    cursor: pointer;
}
.sp-tournament-badge {
    display: inline-block;
    background: var(--accent, #2E75B6);
    color: #fff;
    font-size: .7rem;
    font-weight: 700;
    padding: .15em .5em;
    border-radius: 3px;
    white-space: nowrap;
    margin-top: .1em;
}
.sp-tournament-info { display: flex; flex-direction: column; gap: .15rem; }
.sp-tournament-name { font-size: 1rem; }
.sp-tournament-name a { color: inherit; text-decoration: none; }
.sp-tournament-name a:hover { text-decoration: underline; }
/* Stretched link: interner Turnier-Link deckt gesamten Header ab */
.sp-tournament-name > a:first-child::after {
    content: '';
    position: absolute;
    inset: 0;
}
/* ↗ Extern-Link bleibt darüber klickbar */
.sp-tournament-name .tr-card__ext-icon { position: relative; z-index: 1; }
.sp-tournament-meta { font-size: .8125rem; color: var(--text-muted, #64748b); }

.sp-tournament-placement {
    padding: .75rem 1rem;
    border-bottom: 1px solid #f1f5f9;
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: .35rem .75rem;
}
.sp-tournament-placement:last-child { border-bottom: none; }
.sp-tournament-rank {
    font-weight: 700;
    font-size: .9375rem;
    color: var(--accent, #2E75B6);
    min-width: 4rem;
}
.sp-tournament-event {
    font-size: .875rem;
    background: #f1f5f9;
    padding: .1em .55em;
    border-radius: 3px;
}
.sp-tournament-partner { font-size: .875rem; color: var(--text-muted, #64748b); }
.sp-tournament-partner a { color: var(--accent, #2E75B6); }
.sp-tournament-partner-club { font-size: .8125rem; }

.sp-tournament-matches {
    width: 100%;
    margin-top: .4rem;
}
.sp-tournament-matches summary {
    font-size: .8125rem;
    font-weight: 600;
    color: var(--accent, #2E75B6);
    cursor: pointer;
    padding: .45rem 0 .3rem;
    list-style: none;
    display: block;
    width: 100%;
}
.sp-tournament-matches summary::before { content: '▶ '; font-size: .65em; vertical-align: .05em; }
.sp-tournament-matches[open] summary::before { content: '▼ '; }

.sp-tournament-match {
    margin-top: .4rem;
    padding: .5rem .75rem;
    border-left: 3px solid #dee2e6;
    background: #fafbfc;
    font-size: .8125rem;
    display: flex;
    flex-direction: column;
    gap: .15rem;
}
.sp-tournament-match--won  { border-left-color: #198754; }
.sp-tournament-match--lost { border-left-color: #dc3545; }
.sp-tournament-match--wo   { border-left-color: #ffc107; }
.sp-tournament-match-meta  { color: var(--text-muted, #64748b); display: flex; gap: .75rem; flex-wrap: wrap; }
.sp-tournament-draw        { font-weight: 600; }
.sp-tournament-match-opp   { color: #1a202c; }
.sp-tournament-opp-club    { color: var(--text-muted, #64748b); }
.sp-tournament-match-score { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
.sp-tournament-sets        { font-weight: 600; }
.sp-tournament-dur         { color: var(--text-muted, #64748b); }
.sp-tournament-result { font-size: .75rem; padding: .1em .5em; border-radius: 3px; font-weight: 700; }
.sp-tournament-result--won  { background: #d1fae5; color: #065f46; }
.sp-tournament-result--lost { background: #fee2e2; color: #991b1b; }
.sp-tournament-result--wo   { background: #fef3c7; color: #92400e; }

/* Gesamt-Ansicht: Trennstreifen zwischen Liga und Turnieren */
.sp-section-divider {
    display: flex; align-items: center; gap: .75rem;
    margin: 1rem 0 .5rem;
    color: var(--text-muted, #64748b);
    font-size: .75rem; font-weight: 600; text-transform: uppercase; letter-spacing: .05em;
}
.sp-section-divider::before,
.sp-section-divider::after { content: ''; flex: 1; height: 1px; background: #e5e7eb; }

/* Turnier: Match-Item ohne Badge → volle Breite */
.sp-tournament-card .sp-match-item {
    grid-template-columns: 1fr;
}
.sp-match-item--t-won  { border-left: 3px solid #198754; }
.sp-match-item--t-lost { border-left: 3px solid #dc3545; }
.sp-match-item--t-wo   { border-left: 3px solid #ffc107; }
/* Gruppe / KO-Runden: flaches hellgraues Pill */
.sp-match-disc--t-ko {
    background: #f1f5f9;
    color: #475569;
    border-color: transparent;
    border-radius: 99px;
    padding: .25rem .85rem;
    font-size: .75rem;
    font-weight: 500;
    white-space: nowrap;
}
/* Halbfinale / Finale: akzentfarben gefüllt */
.sp-match-disc--t-final {
    background: var(--accent, #2E75B6);
    color: #fff;
    border-color: transparent;
    border-radius: 99px;
    padding: .25rem .85rem;
    font-size: .75rem;
    font-weight: 700;
    white-space: nowrap;
}
.ff-medal         { font-size: 1.1rem; line-height: 1; flex-shrink: 0; }
.sp-t-rank        { font-weight: 700; color: var(--accent, #2E75B6); min-width: 4.5rem; }
.sp-t-event-badge { font-size: .8rem; background: #f1f5f9; padding: 1px 7px; border-radius: 3px; font-weight: 600; }
.sp-t-fed-badge   { font-size: .7rem; background: #e0f2fe; color: #0369a1; padding: 1px 6px; border-radius: 3px; font-weight: 600; white-space: nowrap; }
.sp-tournament-card--crossfed .sp-tournament-header { border-left: 3px solid #0369a1; }
.sp-t-partner     { font-size: .8125rem; color: var(--text-muted, #64748b); }
.sp-t-partner a   { color: var(--accent, #2E75B6); text-decoration: none; }
.sp-t-partner a:hover { text-decoration: underline; }
.sp-t-matches-details { border: none; }
.sp-t-matches-summary { cursor: pointer; font-size: .8125rem; color: var(--text-muted, #64748b);
                         padding: .4rem 1rem .5rem; list-style: none; user-select: none; }
.sp-t-matches-summary::-webkit-details-marker { display: none; }
.sp-t-matches-summary::before { content: '▶ '; font-size: .65rem; }
details[open] .sp-t-matches-summary::before { content: '▼ '; }
/* Phasen-Trennzeile innerhalb des Match-Blocks (Gruppe 1, Viertelfinale…) */
.sp-t-phase-header {
    display: flex; align-items: center; gap: .5rem;
    font-size: .6875rem; font-weight: 600;
    letter-spacing: .03em; color: var(--gray-600);
    padding: .5rem 1.25rem .15rem;
}
.sp-t-phase-header::before,
.sp-t-phase-header::after { content: ''; flex: 1; height: 1px; background: var(--gray-200); }

/* ── Turnierübersicht (turniere.php) ──────────────────────────────────────── */
.tr-year-pills {
    display: flex;
    flex-wrap: wrap;
    gap: .4rem;
    margin-bottom: 1rem;
}
.tr-year-pill {
    display: inline-block;
    padding: .3rem .85rem;
    border-radius: 999px;
    border: 1.5px solid #d1d5db;
    background: #fff;
    color: #374151;
    font-size: .85rem;
    font-weight: 500;
    text-decoration: none;
    transition: border-color .15s, background .15s, color .15s;
}
.tr-year-pill:hover { border-color: var(--accent); color: var(--accent); }
.tr-year-pill--active {
    background: var(--accent);
    border-color: var(--accent);
    color: #fff;
}
.tr-year-divider {
    font-size: .8rem;
    font-weight: 700;
    color: #6b7280;
    text-transform: uppercase;
    letter-spacing: .06em;
    padding: 1.25rem 0 .4rem;
    border-bottom: 1px solid #e5e7eb;
    margin-bottom: .75rem;
}
.tr-search-wrap {
    display: flex;
    align-items: center;
    gap: .6rem;
    margin-bottom: 1rem;
}
.tr-search {
    flex: 1;
    max-width: 360px;
    padding: .45rem .8rem;
    border: 1.5px solid #d1d5db;
    border-radius: 8px;
    font-size: .9rem;
    outline: none;
    transition: border-color .15s;
}
.tr-search:focus { border-color: var(--accent); }
.tr-search-count {
    font-size: .82rem;
    color: #9ca3af;
}

/* Turnier-Karte */
.tr-card {
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    margin-bottom: .75rem;
    overflow: hidden;
}
.tr-card__head {
    padding: .85rem 1rem .75rem;
}
.tr-card__meta {
    display: flex;
    flex-wrap: wrap;
    gap: .3rem .75rem;
    align-items: center;
    margin-bottom: .3rem;
}
.tr-card__date {
    font-size: .8rem;
    font-weight: 600;
    color: var(--accent);
    white-space: nowrap;
}
.tr-card__loc {
    font-size: .78rem;
    color: #6b7280;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 40ch;
}
.tr-card__title-row {
    display: flex;
    align-items: baseline;
    gap: .4rem;
    margin-bottom: .35rem;
}
.tr-card__name {
    font-size: .95rem;
    font-weight: 600;
    color: #111827;
    text-decoration: none;
    line-height: 1.35;
}
a.tr-card__name:hover { color: var(--accent); }
.tr-card__ext-icon {
    font-size: .75rem;
    color: #9ca3af;
    flex-shrink: 0;
}
.tr-card__stats {
    display: flex;
    flex-wrap: wrap;
    gap: .25rem .85rem;
    font-size: .78rem;
    color: #6b7280;
}

/* Ergebnisse-Details */
.tr-card__results { border-top: 1px solid #f3f4f6; }
.tr-card__results-toggle {
    cursor: pointer;
    padding: .5rem 1rem;
    font-size: .82rem;
    color: #6b7280;
    list-style: none;
    user-select: none;
    display: flex;
    align-items: center;
    gap: .3rem;
}
.tr-card__results-toggle::-webkit-details-marker { display: none; }
.tr-card__results-toggle::before {
    content: '▶';
    font-size: .65rem;
    transition: transform .15s;
}
.tr-card__results[open] .tr-card__results-toggle::before { transform: rotate(90deg); }
.tr-card__results-toggle:hover { color: var(--accent); }

.tr-results-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: .5rem 1rem;
    padding: .5rem 1rem 1rem;
}
.tr-evt__name {
    font-size: .75rem;
    font-weight: 700;
    color: #374151;
    text-transform: uppercase;
    letter-spacing: .03em;
    margin-bottom: .2rem;
}
.tr-evt__row {
    display: flex;
    align-items: baseline;
    gap: .3rem;
    font-size: .82rem;
    color: #374151;
    line-height: 1.35;
}
.tr-evt__medal { font-size: .9rem; flex-shrink: 0; }
.tr-evt__players a { color: #374151; text-decoration: none; }
.tr-evt__players a:hover { color: var(--accent); }

@media (max-width: 600px) {
    .tr-card__loc { max-width: 22ch; }
    .tr-results-grid { grid-template-columns: 1fr 1fr; }
}

/* ── tr-card: clickable head ─────────────────────────────────────────────── */
.tr-card__head--link {
    display: block;
    text-decoration: none;
    color: inherit;
    cursor: pointer;
}
.tr-card__head--link:hover { background: #f9fafb; }
.tr-card__head--link:hover .tr-card__name { color: var(--accent); }

/* ── turnier.php – Detail-Spielplan (.tm-*) ──────────────────────────────── */
.tm-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: .4rem;
    margin-bottom: .25rem;
}
.tm-tab {
    padding: .35rem .9rem;
    border-radius: 20px;
    border: 1.5px solid #d1d5db;
    font-size: .82rem;
    font-weight: 500;
    color: #374151;
    text-decoration: none;
    background: #fff;
    transition: background .15s, border-color .15s;
}
.tm-tab:hover { border-color: var(--accent); color: var(--accent); }
.tm-tab--active { background: var(--accent); border-color: var(--accent); color: #fff; }
.tm-tab--special { font-weight: 600; }
.tm-tab-sep {
    display: inline-block;
    width: 1px;
    background: #d1d5db;
    margin: .2rem .15rem;
    align-self: stretch;
}

/* Turnier-Hero: zweizeilige Stats-Bar (Datum+Ort / Disziplinen+Spieler+Matches) */
.tm-hero-stats { flex-direction: column; align-items: stretch; gap: 0; padding: 0; }
.tm-hero-stats__row { display: flex; }
.tm-hero-stats__row .vc-stat { flex: 1; }
.tm-hero-stats__divider {
    height: 1px;
    background: rgba(255,255,255,.2);
    margin: 0;
}

/* Turnier-Intro-Hinweis */
.tr-intro-note {
    background: color-mix(in srgb, var(--accent) 8%, #fff);
    border-left: 3px solid var(--accent);
    border-radius: 6px;
    padding: .75rem 1rem;
    font-size: .875rem;
    color: #374151;
    line-height: 1.55;
}
.tr-intro-note a { color: var(--accent); }

/* Turnier-Suche */
.tm-search-wrap { margin-bottom: 1rem; position: relative; display: flex; align-items: center; }
.tm-search-input {
    width: 100%;
    padding: .5rem .85rem;
    border: 1px solid #d1d5db;
    border-radius: 8px;
    font-size: .9rem;
    outline: none;
    box-sizing: border-box;
}
.tm-search-input { flex: 1; padding-right: 2.2rem; }
.tm-search-input:focus { border-color: var(--accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 15%, transparent); }
.tm-search-clear {
    position: absolute; right: .5rem;
    background: none; border: none; cursor: pointer;
    color: #9ca3af; font-size: .85rem; padding: .2rem .3rem;
    line-height: 1;
}
.tm-search-clear:hover { color: #374151; }
.tm-winner-grid mark, .tm-player-grid mark { background: #fef08a; color: inherit; border-radius: 2px; padding: 0 1px; font-style: normal; }

/* Winner-Tab */
.tm-winner-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: .75rem;
}
.tm-winner-card { padding: 0; overflow: hidden; }
.tm-winner-row {
    display: flex;
    align-items: baseline;
    gap: .5rem;
    padding: .4rem .9rem;
    border-bottom: 1px solid #f3f4f6;
    font-size: .875rem;
}
.tm-winner-row:last-child { border-bottom: none; }
.tm-winner-medal { font-size: 1.1rem; flex-shrink: 0; min-width: 1.6rem; text-align: center; }
.tm-winner-names { color: #111; }

/* Player-Tab */
.tm-player-count {
    font-size: .8rem;
    color: #6b7280;
    margin-bottom: .75rem;
}
.tm-player-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: .75rem;
}
.tm-player-card { padding: 0; overflow: hidden; }
.tm-group-header { display: flex; align-items: center; justify-content: space-between; gap: .4rem; }
.tm-club-logo { width: 22px; height: 22px; object-fit: contain; flex-shrink: 0; border-radius: 2px; }
.tm-group-header__name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tm-player-club-count {
    font-size: .72rem;
    font-weight: 600;
    background: var(--accent);
    color: #fff;
    border-radius: 20px;
    padding: .1rem .45rem;
    margin-left: .5rem;
    flex-shrink: 0;
}
.tm-player-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.tm-player-item {
    padding: .35rem .9rem;
    font-size: .875rem;
    border-bottom: 1px solid #f3f4f6;
    color: #374151;
}
.tm-player-item:last-child { border-bottom: none; }

.tm-phase-label {
    font-size: .7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .08em;
    color: #9ca3af;
    margin: 1.5rem 0 .5rem;
}
.tm-group-block {
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    overflow: hidden;
    margin-bottom: .75rem;
}
.tm-group-header {
    padding: .45rem .9rem;
    font-size: .78rem;
    font-weight: 700;
    text-align: center;
    background: #f3f4f6;
    color: #374151;
    border-bottom: 1px solid #e5e7eb;
}
.tm-group-header--ko {
    background: #eff6ff;
    color: #1d4ed8;
}
.tm-round-time {
    padding: .2rem .9rem;
    font-size: .72rem;
    color: #6b7280;
    background: #fafafa;
    border-bottom: 1px solid #f3f4f6;
}
.tm-round-sep td {
    padding: .25rem .9rem;
    font-size: .7rem;
    font-weight: 700;
    text-align: center;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: #9ca3af;
    background: #fafafa;
    border-bottom: 1px solid #f3f4f6;
}

/* Match row */
.tm-match {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    gap: .5rem;
    padding: .5rem .9rem;
    border-bottom: 1px solid #f3f4f6;
    min-height: 2.6rem;
}
.tm-match:last-child { border-bottom: none; }
.tm-match--t1 .tm-side:first-child { font-weight: 700; }
.tm-match--t2 .tm-side--right      { font-weight: 700; }

.tm-side {
    display: flex;
    flex-direction: column;
    gap: .1rem;
    font-size: .84rem;
    color: #374151;
    line-height: 1.3;
    min-width: 0;
}
.tm-side--right { text-align: right; }
.tm-side--w { font-weight: 700; }
.tm-player {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.tm-player a { color: inherit; text-decoration: none; }
.tm-player a:hover { color: var(--accent); text-decoration: underline; }

/* Score column */
.tm-score {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .2rem;
    flex-shrink: 0;
    min-width: 4rem;
}
.tm-set {
    display: flex;
    align-items: center;
    gap: .15rem;
    font-size: .8rem;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
.tm-set--wo { color: #9ca3af; font-style: italic; }
.tm-sw { font-weight: 700; }
.tm-colon { color: #9ca3af; }

/* Placements */
.tm-results-block {
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    overflow: hidden;
}
.tm-result-row {
    display: flex;
    align-items: baseline;
    gap: .75rem;
    padding: .5rem .9rem;
    border-bottom: 1px solid #f3f4f6;
    font-size: .88rem;
}
.tm-result-row:last-child { border-bottom: none; }
.tm-result-rank { font-size: 1.1rem; flex-shrink: 0; min-width: 2rem; }
.tm-result-ranknum { font-size: .78rem; font-weight: 600; color: #6b7280; }
.tm-result-names { color: #1f2937; }
.tm-result-names a { color: #1f2937; text-decoration: none; }
.tm-result-names a:hover { color: var(--accent); text-decoration: underline; }

@media (max-width: 600px) {
    .tm-match {
        grid-template-columns: 1fr auto 1fr;
        gap: .3rem;
        padding: .4rem .6rem;
        font-size: .8rem;
    }
    .tm-score { min-width: 3.5rem; }
    .tm-tab { font-size: .78rem; padding: .3rem .7rem; }
}

/* ══ data.php – Datentiefe & Quellen-Übersicht ══════════════════════════════ */

.dv-section { margin-top: 2.5rem; }
.dv-section + .dv-section {
    border-top: 1px solid var(--gray-200);
    padding-top: 2rem;
    margin-top: 2rem;
}
.dv-section__header {
    display: flex;
    align-items: center;
    gap: .75rem;
    margin-bottom: 1.25rem;
}
.dv-section__title { font-size: 1.15rem; font-weight: 700; color: var(--gray-800); flex: 1; }

/* Source badges */
.dv-source-badge {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .04em;
    padding: .22rem .6rem;
    border-radius: 12px;
    white-space: nowrap;
}
.dv-source-badge--nu   { background: #dbeafe; color: #1d4ed8; }
.dv-source-badge--tp   { background: #fef3c7; color: #92400e; }
.dv-source-badge--hist { background: #f5f0e8; color: #7a5c1e; }

/* Card grid */
.dv-card-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 1rem;
}
@media (max-width: 900px) { .dv-card-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 540px) { .dv-card-grid { grid-template-columns: 1fr; } }

/* Card */
.dv-card {
    background: #fff;
    border: 1px solid var(--gray-200);
    border-radius: var(--radius);
    padding: 1rem;
    display: flex;
    flex-direction: column;
    gap: .55rem;
}
.dv-card__name { font-weight: 700; font-size: .95rem; color: var(--gray-800); }
.dv-card__longname { line-height: 1.3; }
.dv-card__seasons { font-size: .8rem; color: var(--gray-600); }

/* Timeline */
.dv-timeline {
    position: relative;
    height: 7px;
    background: var(--gray-100);
    border-radius: 4px;
    margin: .1rem 0 0;
}
.dv-timeline__bar {
    position: absolute;
    top: 0;
    height: 100%;
    border-radius: 4px;
    opacity: .85;
    transition: width .3s ease;
}
.dv-timeline__labels {
    display: flex;
    justify-content: space-between;
    font-size: .64rem;
    color: var(--gray-400);
    margin-top: .2rem;
    margin-bottom: .1rem;
}

/* Level badges */
.dv-level-badges { display: flex; flex-wrap: wrap; gap: .3rem; }
.dv-level-badge {
    font-size: .7rem;
    font-weight: 700;
    padding: .12rem .45rem;
    border-radius: 10px;
    letter-spacing: .02em;
    line-height: 1.4;
}
.dv-level-badge--lo { background: var(--gray-200); color: var(--gray-700); }

/* Stats row */
.dv-stats { font-size: .8rem; color: var(--gray-600); }
.dv-stats strong { color: var(--gray-800); }

/* Tournament table */
.dv-tournament-table { width: 100%; border-collapse: collapse; font-size: .875rem; }
.dv-tournament-table th {
    text-align: left;
    padding: .55rem .85rem;
    border-bottom: 2px solid var(--gray-200);
    font-size: .75rem;
    font-weight: 700;
    color: var(--gray-600);
    text-transform: uppercase;
    letter-spacing: .05em;
}
.dv-tournament-table td { padding: .5rem .85rem; border-bottom: 1px solid var(--gray-100); }
.dv-tournament-table tfoot td { border-bottom: none; padding-top: .6rem; }
.dv-tournament-table tr:hover td { background: var(--gray-50); }
.dv-tt-name { font-weight: 600; color: var(--gray-800); display: flex; align-items: center; gap: .5rem; }
.dv-tt-count { font-weight: 700; color: var(--gray-800); }
.dv-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }

/* Explainer grid */
.dv-explainer-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1.25rem;
    margin-top: .5rem;
}
.dv-explainer {
    background: #fff;
    border: 1px solid var(--gray-200);
    border-radius: var(--radius);
    padding: 1rem 1.1rem;
    font-size: .875rem;
    line-height: 1.6;
    color: var(--gray-700);
    display: flex;
    flex-direction: column;
}
.dv-explainer p { margin: 0; }
@media (max-width: 720px) { .dv-explainer-grid { grid-template-columns: 1fr; } }

/* Legend */
.dv-legend {
    display: flex;
    align-items: center;
    gap: .5rem;
    flex-wrap: wrap;
    margin-top: 2rem;
    padding: .75rem 1rem;
    background: var(--gray-50);
    border-radius: var(--radius);
    font-size: .78rem;
    color: var(--gray-500);
}
.dv-legend__item { display: flex; align-items: center; gap: .3rem; }
.dv-legend__sep { color: var(--gray-300); }
.dv-section--info { margin-top: 2rem; border-top: none; }

/* ── Season Pills (nav-ux-konzept) ── */
.season-strip {
    position: relative;
    background: var(--white);
    border: 1px solid var(--gray-200);
    border-radius: var(--radius);
    margin-bottom: 1rem;
    overflow: hidden;
}
.season-pills {
    display: flex;
    gap: 6px;
    overflow-x: auto;
    scrollbar-width: none;
    padding: 10px 14px;
    -webkit-overflow-scrolling: touch;
}
.season-pills::-webkit-scrollbar { display: none; }
.season-pill {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 5px 11px;
    border-radius: 999px;
    font-size: .75rem;
    font-weight: 600;
    border: 1px solid var(--gray-200);
    background: var(--white);
    color: var(--gray-600);
    white-space: nowrap;
    text-decoration: none;
    flex-shrink: 0;
    transition: border-color 0.12s, color 0.12s;
    -webkit-tap-highlight-color: transparent;
}
.season-pill:hover { border-color: var(--accent); color: var(--accent); text-decoration: none; }
.season-pill.active {
    background: var(--accent);
    border-color: var(--accent);
    color: #fff;
    box-shadow: 0 1px 4px rgba(181,18,24,0.22);
}
.season-pill .live-dot {
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: currentColor;
    opacity: 0.75;
    flex-shrink: 0;
}
.season-pill-fade {
    position: absolute;
    right: 0;
    top: 0;
    bottom: 0;
    width: 44px;
    background: linear-gradient(to right, transparent, var(--white));
    pointer-events: none;
}

/* ── Home Strip (nav-ux-konzept) ── */
.home-strip {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 14px;
    height: 34px;
    background: rgba(0,0,0,0.38);
    text-decoration: none;
    border-bottom: 0.5px solid rgba(255,255,255,0.07);
    -webkit-tap-highlight-color: transparent;
}
.home-strip-left {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 10px;
    font-weight: 600;
    color: rgba(255,255,255,0.52);
    letter-spacing: 0.15px;
}
.home-strip-left strong { color: rgba(255,255,255,0.82); font-weight: 700; }
.home-strip-right {
    font-size: 9px;
    color: rgba(255,255,255,0.28);
    letter-spacing: 0.2px;
}

/* ══════════════════════════════════════════════════════════════════════════════
   Liga-Pyramide + Home-Section-Header (Startseite UX-Redesign)
   ══════════════════════════════════════════════════════════════════════════════ */

/* Liga-Stufendiagramm */
.liga-pyramid {
    display: flex;
    gap: 3px;
    margin: 0 0 32px;
    border-radius: var(--radius);
    overflow: hidden;
}
.pyramid-tier {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 10px 12px;
    text-decoration: none;
    cursor: pointer;
    transition: filter var(--transition);
    text-align: center;
}
.pyramid-tier:hover { filter: brightness(1.1); text-decoration: none; color: #fff; }
.pyramid-tier__level {
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .06em;
    opacity: .75;
    text-transform: uppercase;
}
.pyramid-tier__name { font-size: .88rem; font-weight: 700; line-height: 1.2; }
.pyramid-tier__sub  { font-size: .7rem; opacity: .65; margin-top: 2px; }

/* Breite signalisiert: L5+ ist die breite Basis mit vielen Verbänden */
.pyramid-tier--1 { flex: 0 0 130px; background: #1a3a5c; color: #fff; }
.pyramid-tier--2 { flex: 0 0 190px; background: #2d5986; color: #fff; }
.pyramid-tier--3 { flex: 1;         background: var(--accent); color: #fff; }

/* Abschnitts-Header mit Trennlinie */
.home-section {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 36px 0 16px;
}
.home-section__label {
    font-size: .7rem;
    font-weight: 700;
    letter-spacing: .09em;
    text-transform: uppercase;
    color: var(--gray-500);
    white-space: nowrap;
}
.home-section__level {
    font-size: .65rem;
    padding: 2px 7px;
    border-radius: 10px;
    font-weight: 700;
    background: var(--gray-100);
    color: var(--gray-600);
    white-space: nowrap;
}
.home-section__line {
    flex: 1;
    height: 1px;
    background: var(--gray-200);
}
.home-section__count {
    font-size: .7rem;
    color: var(--gray-400);
    white-space: nowrap;
}

/* Coming-Soon Landesverbands-Kachel */
.fed-card--coming {
    opacity: .38;
    pointer-events: none;
    filter: grayscale(.7);
}
.fed-card--coming .fed-card__badge {
    font-size: .65rem;
    font-weight: 600;
    background: var(--gray-200);
    color: var(--gray-500);
    border-radius: 4px;
    padding: 2px 6px;
    margin-top: 6px;
    display: inline-block;
    letter-spacing: .02em;
}

/* Mobile Anpassungen */
@media (max-width: 640px) {
    .liga-pyramid { gap: 2px; }
    .pyramid-tier--1 { flex: 0 0 78px; }
    .pyramid-tier--2 { flex: 0 0 110px; }
    .pyramid-tier { padding: 8px 6px; }
    .pyramid-tier__sub { display: none; }
    .pyramid-tier__name { font-size: .8rem; }
    .home-section { margin-top: 28px; }
}
