/*
 * GSV Spielplan & Mannschaften – konsolidierte Frontend-Regeln v1.6.0
 * Kaskade bereinigt, ohne Style-Prioritaeten, Reihenfolge der aktiven Regeln
 * oder HTML-Struktur zu aendern. Alle Aussenabstaende: Blocksy/Gutenberg.
 */

/* Gemeinsame Gestaltung */
.gsv-spielplan.gsv-spielplan,
.gsv-team-component.gsv-team-component,
.gsv-upcoming-games.gsv-upcoming-games {
    --gsv-ui-blue: #005A8C;
    --gsv-ui-ink: #17344b;
    --gsv-ui-muted: #637b8e;
    --gsv-ui-border: #dce5ed;
    --gsv-ui-tint: #eef7fc;
    --gsv-ui-tint-2: #f5f8fb;
    --gsv-ui-radius: 12px;
    font-family: inherit;
}

/*
 * Der Shortcode übernimmt EXAKT die von Blocksy definierte Inhaltsbreite.
 * Kein eigenes Pixel-Maximum, keine berechneten Viewport-Abstände und
 * weder Desktop- noch Mobil-Padding auf der äußeren Ebene.
 *
 * Ohne die Theme-Variablen gilt nur die vorhandene Elternbreite.
 * Die Werte kommen von Blocksy / dem Gutenberg-Inhaltscontainer.
 */
.gsv-spielplan.gsv-spielplan {
    width: var(--theme-block-width, 100%);
    max-width: var(--theme-block-max-width, 100%);
    min-width: 0;
    margin-left: auto;
    margin-right: auto;
    padding-left: 0;
    padding-right: 0;
    color: var(--gsv-ui-ink);
    box-sizing: border-box;
}
.gsv-spielplan.gsv-spielplan *,
.gsv-team-component.gsv-team-component *,
.gsv-upcoming-games.gsv-upcoming-games * {
    box-sizing: border-box;
}

/* Wochenleiste statt frei schwebender Pfeile */
.gsv-spielplan.gsv-spielplan .gsv-spielplan-head {
    width: 100%;
    max-width: 100%;
    margin: 0 0 12px;
    padding: 15px 18px;
    border: 1px solid var(--gsv-ui-border);
    border-radius: var(--gsv-ui-radius);
    background: #f4f9fc;
    gap: 14px;
}
.gsv-spielplan.gsv-spielplan .gsv-week-title strong {
    color: var(--gsv-ui-blue);
    font-size: 12px;
    letter-spacing: .06em;
}
.gsv-spielplan.gsv-spielplan .gsv-week-title span {
    color: var(--gsv-ui-ink);
    font-size: 19px;
    font-weight: 650;
}
.gsv-spielplan.gsv-spielplan .gsv-week-nav {
    width: 42px;
    height: 42px;
    border: 1px solid #c8dce8;
    border-radius: 9px;
    background: #fff;
    color: var(--gsv-ui-blue);
    font-size: 28px;
    box-shadow: 0 1px 2px rgba(10,47,73,.04);
}
.gsv-spielplan.gsv-spielplan .gsv-week-nav:hover,
.gsv-spielplan.gsv-spielplan .gsv-week-nav:focus-visible {
    color: #fff;
    border-color: var(--gsv-ui-blue);
    background: var(--gsv-ui-blue);
}
.gsv-spielplan.gsv-spielplan .gsv-floating-week-button {
    width: 38px;
    height: 38px;
    border-radius: 10px;
    font-size: 23px;
    background: rgba(0,90,140,.88);
    box-shadow: 0 3px 12px rgba(10,47,73,.15);
}

/* Ein zusammenhängendes Bedienpanel mit der gleichen Optik wie der Turnierplaner. */
.gsv-spielplan.gsv-spielplan .gsv-spielplan-controls {
    width: 100%;
    max-width: 100%;
    align-items: stretch;
    gap: 17px;
    margin: 0 0 28px;
    padding: 21px 23px;
    border: 1px solid var(--gsv-ui-border);
    border-radius: var(--gsv-ui-radius);
    background: #fff;
    box-shadow: 0 3px 14px rgba(10,47,73,.04);
}
.gsv-spielplan.gsv-spielplan .gsv-control-group--type,
.gsv-spielplan.gsv-spielplan .gsv-control-group--team {
    align-items: stretch;
}
.gsv-spielplan.gsv-spielplan .gsv-control-label,
.gsv-spielplan.gsv-spielplan .gsv-control-group--type .gsv-control-label,
.gsv-spielplan.gsv-spielplan .gsv-control-group--team .gsv-control-label {
    margin-bottom: 8px;
    color: var(--gsv-ui-ink);
    font-size: 12px;
    font-weight: 750;
    text-align: left;
}
.gsv-spielplan.gsv-spielplan .gsv-spielplan-filters {
    justify-content: flex-start;
    gap: 7px;
}
.gsv-spielplan.gsv-spielplan .gsv-spielplan-filters button {
    padding: 9px 14px;
    border-color: var(--gsv-ui-border);
    border-radius: 8px;
    background: #fff;
    font-size: 13px;
}
.gsv-spielplan.gsv-spielplan .gsv-spielplan-filters button.is-active {
    border-color: var(--gsv-ui-blue) !important;
    background: var(--gsv-ui-blue) !important;
    color: #fff !important;
}
.gsv-spielplan.gsv-spielplan .gsv-team-filter-row {
    width: 100%;
    gap: 10px;
}
.gsv-spielplan.gsv-spielplan .gsv-team-multi-toggle {
    height: 43px;
    border-radius: 8px;
    border-color: var(--gsv-ui-border);
    background: #fff;
}
.gsv-spielplan.gsv-spielplan .gsv-team-multi-menu {
    border-radius: 10px;
    border-color: var(--gsv-ui-border);
}
.gsv-spielplan.gsv-spielplan .gsv-download-button {
    width: 42px;
    height: 42px;
    min-width: 42px;
    min-height: 42px;
    border-radius: 8px;
    border-color: var(--gsv-ui-border);
}
.gsv-spielplan.gsv-spielplan .gsv-range-panel {
    padding: 17px 18px;
    border: 1px solid #e3ebf1;
    border-radius: 10px;
    background: var(--gsv-ui-tint-2);
}
.gsv-spielplan.gsv-spielplan .gsv-range-heading {
    text-align: left;
}
.gsv-spielplan.gsv-spielplan .gsv-range-fields {
    justify-content: flex-start;
}
.gsv-spielplan.gsv-spielplan .gsv-range-date-field input[type="date"] {
    border-radius: 8px;
}
.gsv-spielplan.gsv-spielplan .gsv-range-actions button,
.gsv-spielplan.gsv-spielplan .gsv-current-week-button {
    border-radius: 8px;
}

/* Alle Spielabschnitte bleiben innerhalb derselben Blocksy-Inhaltsbreite. */
.gsv-spielplan.gsv-spielplan .gsv-spielplan-list {
    width: 100%;
    min-width: 0;
    max-width: 100%;
}

/* Wochen-/Tagesabschnitte */
.gsv-spielplan.gsv-spielplan .gsv-day-heading  {
    margin: 25px 0 11px;
}

/* Spielkarte: Kopfzeile / gepolsterte Heim- und Gastfelder / Ergebnis */
.gsv-spielplan.gsv-spielplan .gsv-game {
    position: relative;
    display: block;
    width: 100%;
    margin: 0 0 11px;
    padding: 16px;
    border: 1px solid var(--gsv-ui-border);
    border-radius: var(--gsv-ui-radius);
    background: #fff;
    box-shadow: 0 2px 9px rgba(10,47,73,.035);
    transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease;
}
.gsv-spielplan.gsv-spielplan .gsv-game.is-last-visible-of-day {
    border-bottom: 1px solid var(--gsv-ui-border);
}
/* Spielkarte hebt sich hervor, ohne die Nachbarkarten zu verschieben. */
@media (hover:hover) and (pointer:fine) {
    .gsv-spielplan.gsv-spielplan .gsv-game:hover {
        z-index: 2;
        border-color: #80b6d4;
        box-shadow: 0 10px 26px rgba(0,90,140,.16), 0 3px 8px rgba(10,47,73,.08);
    }
}
@media (hover:hover) and (pointer:fine) and (min-width: 768px) and (prefers-reduced-motion: no-preference) {
    .gsv-spielplan.gsv-spielplan .gsv-game:hover {
        transform: translateY(-3px) scale(1.018);
    }
}
.gsv-spielplan.gsv-spielplan .gsv-game-time {
    position: absolute;
    top: 17px;
    left: 17px;
    display: inline-flex;
    align-items: center;
    margin: 0;
    color: var(--gsv-ui-blue);
    font-size: 14px;
    line-height: 1.55;
    font-weight: 750;
}
.gsv-spielplan.gsv-spielplan .gsv-game-time::after  {
    content: " Uhr";
    margin-left: 3px;
}
.gsv-spielplan.gsv-spielplan .gsv-game-meta  {
    min-height: 23px;
    margin: 0 0 12px;
    justify-content: flex-start;
    font-size: 12px;
}
.gsv-spielplan.gsv-spielplan .gsv-game-team-link,
.gsv-spielplan.gsv-spielplan .gsv-game-meta strong {
    color: var(--gsv-ui-blue);
    font-weight: 750;
}
.gsv-spielplan.gsv-spielplan .gsv-game-meta span {
    color: var(--gsv-ui-muted);
}
.gsv-spielplan.gsv-spielplan .gsv-game-teams  {
    display: grid;
    gap: 10px;
    align-items: stretch;
    font-size: 16px;
    line-height: 1.35;
    font-weight: 650;
}
.gsv-spielplan.gsv-spielplan .gsv-team-home.gsv-team-side,
.gsv-spielplan.gsv-spielplan .gsv-team-away.gsv-team-side  {
    position: relative;
    display: flex;
    align-items: center;
    min-width: 0;
    max-width: none;
    width: 100%;
    border: 1px solid #dae8f0;
    border-radius: 9px;
    text-align: left;
}
.gsv-spielplan.gsv-spielplan .gsv-team-home.gsv-team-side  {
    justify-content: flex-start;
}
.gsv-spielplan.gsv-spielplan .gsv-team-away.gsv-team-side  {
    justify-content: flex-end;
    text-align: right;
}
.gsv-spielplan.gsv-spielplan .gsv-team-home.gsv-team-side::before,
.gsv-spielplan.gsv-spielplan .gsv-team-away.gsv-team-side::before  {
    position: absolute;
    color: #7692a5;
    font-size: 10px;
    font-weight: 750;
    letter-spacing: .04em;
    line-height: 1;
}
.gsv-spielplan.gsv-spielplan .gsv-team-home.gsv-team-side::before { content: "HEIM"; left: 13px; }
.gsv-spielplan.gsv-spielplan .gsv-team-away.gsv-team-side::before { content: "GAST"; right: 13px; }
.gsv-spielplan.gsv-spielplan .gsv-team-name {
    min-width: 0;
    overflow-wrap: break-word;
    word-break: normal;
}
.gsv-spielplan.gsv-spielplan .gsv-team-logo {
    width: 29px;
    height: 29px;
    flex-basis: 29px;
}
.gsv-spielplan.gsv-spielplan .gsv-game-score,
.gsv-spielplan.gsv-spielplan .gsv-game-separator,
.gsv-spielplan.gsv-spielplan .gsv-game-status  {
    display: inline-flex;
    align-self: stretch;
    align-items: center;
    justify-content: center;
    justify-self: stretch;
    min-width: 0;
    margin: 0;
    border: 1px solid #dbe7ef;
    border-radius: 9px;
    background: #fff;
    text-align: center;
    box-sizing: border-box;
}
.gsv-spielplan.gsv-spielplan .gsv-game-score  {
    padding: 6px 14px;
}

.gsv-spielplan.gsv-spielplan .gsv-game-separator {
    padding: 0 12px;
    color: #9cafbd;
    font-size: 22px;
    opacity: 1;
}
.gsv-spielplan.gsv-spielplan .gsv-game-status {
    padding: 7px 8px;
    color: #506172;
    background: #f9fbfd;
    font-size: 10px;
    letter-spacing: .015em;
    white-space: normal;
    overflow-wrap: anywhere;
}
.gsv-spielplan.gsv-spielplan .gsv-game-venue  {
    margin: 12px 0 0;
    padding: 11px 0 0;
    border-top: 1px solid #edf1f4;
    color: var(--gsv-ui-muted);
    font-size: 12px;
    line-height: 1.45;
}
.gsv-spielplan.gsv-spielplan .gsv-game-link  {
    margin-top: 7px;
    color: var(--gsv-ui-blue);
    font-size: 12px;
    font-weight: 650;
}
.gsv-spielplan.gsv-spielplan .gsv-spielplan-endbar {
    height: 4px;
    margin-top: 10px;
    border-radius: 4px;
    background: var(--gsv-ui-blue);
}
.gsv-spielplan.gsv-spielplan .gsv-no-games,
.gsv-spielplan.gsv-spielplan .gsv-no-filter-games {
    padding: 24px;
    border: 1px solid var(--gsv-ui-border);
    border-radius: 10px;
    background: var(--gsv-ui-tint-2);
    color: var(--gsv-ui-muted);
}

/* Mannschaften: letzte und nächste Spiele im gleichen Kartenraster */
.gsv-team-component.gsv-team-component .gsv-team-match-card,
.gsv-team-component.gsv-team-component .gsv-team-carousel-card  {
    border: 1px solid var(--gsv-ui-border);
    border-radius: var(--gsv-ui-radius);
    box-shadow: 0 2px 9px rgba(10,47,73,.035);
}
.gsv-team-component.gsv-team-component .gsv-team-carousel-card {
    padding: 17px;
}
.gsv-team-component.gsv-team-component .gsv-team-carousel-head {
    min-height: 34px;
    margin-bottom: 12px;
    border-bottom: 1px solid #e9eff3;
    padding-bottom: 12px;
}
.gsv-team-component.gsv-team-component .gsv-team-carousel-title {
    color: var(--gsv-ui-blue);
    letter-spacing: .03em;
    font-size: 13px;
}
.gsv-team-component.gsv-team-component .gsv-team-carousel-button {
    width: 29px;
    height: 29px;
    border-radius: 8px;
}
.gsv-team-component.gsv-team-component .gsv-team-match-date {
    color: var(--gsv-ui-blue);
    font-weight: 750;
    font-size: 14px;
}
.gsv-team-component.gsv-team-component .gsv-team-match-competition {
    margin-bottom: 13px;
    color: var(--gsv-ui-muted);
    font-size: 12px;
}
.gsv-team-component.gsv-team-component .gsv-team-match-pairing {
    display: grid;
    grid-template-columns: minmax(0,1fr) minmax(70px,auto) minmax(0,1fr);
    align-items: stretch;
    gap: 8px;
    width: 100%;
}
.gsv-team-component.gsv-team-component .gsv-team-match-home,
.gsv-team-component.gsv-team-component .gsv-team-match-away  {
    display: flex;
    position: relative;
    justify-content: center;
    align-items: center;
    min-height: 81px;
    min-width: 0;
    padding: 26px 10px 10px;
    border: 1px solid #d6e7f1;
    border-radius: 9px;
    text-align: center;
    line-height: 1.3;
    font-size: 14px;
    font-weight: 650;
}

.gsv-team-component.gsv-team-component .gsv-team-match-home::before,
.gsv-team-component.gsv-team-component .gsv-team-match-away::before {
    position: absolute;
    top: 8px;
    color: #7692a5;
    font-size: 10px;
    font-weight: 750;
    line-height: 1;
    letter-spacing: .035em;
}
.gsv-team-component.gsv-team-component .gsv-team-match-home::before { content: "HEIM"; left: 10px; }
.gsv-team-component.gsv-team-component .gsv-team-match-away::before { content: "GAST"; right: 10px; }
.gsv-team-component.gsv-team-component .gsv-team-match-home .gsv-match-club,
.gsv-team-component.gsv-team-component .gsv-team-match-away .gsv-match-club  {
    display: inline-flex;
    justify-content: center;
    align-items: center;
}
.gsv-team-component.gsv-team-component .gsv-team-match-middle {
    display: flex;
    align-self: stretch;
    justify-self: stretch;
    min-height: 81px;
    margin: 0;
    border: 1px solid #dbe7ef;
    border-radius: 9px;
    background: #fff;
}
.gsv-team-component.gsv-team-component .gsv-team-match-score,
.gsv-team-component.gsv-team-component .gsv-team-match-status,
.gsv-team-component.gsv-team-component .gsv-team-match-separator {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 0;
    margin: 0;
    padding: 7px 9px;
    border-radius: 8px;
    font-size: 20px;
    font-weight: 800;
}


.gsv-team-component.gsv-team-component .gsv-team-match-status {
    background: #f9fbfd;
    color: #52687b;
    font-size: 10px;
    letter-spacing: .012em;
    white-space: normal;
    overflow-wrap: anywhere;
}
.gsv-team-component.gsv-team-component .gsv-team-match-separator {
    color: #9cafbd;
    font-size: 20px;
    font-weight: 400;
}
.gsv-team-component.gsv-team-component .gsv-team-match-venue {
    margin-top: 12px;
    padding-top: 11px;
    border-top: 1px solid #edf1f4;
    color: var(--gsv-ui-muted);
    font-size: 12px;
}
.gsv-team-component.gsv-team-component .gsv-team-match-link {
    margin-top: 7px;
    color: var(--gsv-ui-blue);
    font-size: 12px;
}
.gsv-team-component.gsv-team-component .gsv-team-carousel-track { min-height: 0; }
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide { padding: 4px 4px 0; }

/* Spielankündigungen und Jugend-Übersichten */
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-games-grid { gap: 13px; }
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game {
    grid-template-columns: 77px minmax(0,1fr);
    border: 1px solid var(--gsv-ui-border);
    border-radius: var(--gsv-ui-radius);
    background: #fff;
    box-shadow: 0 2px 10px rgba(10,47,73,.035);
    overflow: hidden;
}
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-date  {
    padding: 14px 8px;
    border-right: 1px solid #c8deec;
}

.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-content {
    padding: 14px;
}
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-topline { margin-bottom: 10px; }
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-badge {
    border: 1px solid #dae8f0;
    border-radius: 7px;
    background: #eef7fc;
    color: var(--gsv-ui-blue);
}
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-badge--live {
    border-color: #f5ccca;
    background: #fff0f0;
    color: #b42318;
}
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-clubs {
    gap: 5px;
    color: var(--gsv-ui-ink);
}
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-club  {
    padding: 9px 10px;
    border: 1px solid #e0eaf1;
    border-radius: 8px;
    /* Gegner ist immer hellgrau – unabhängig von Heim/Auswärts. */
    background: var(--gsv-ui-tint-2);
    color: var(--gsv-ui-ink) !important;
    font-size: 14px;
}
/* GSV/JSG immer hellblau, auch wenn die eigene Mannschaft unten steht. */
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-club--own {
    background: var(--gsv-ui-tint);
    font-weight: 750;
}
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-vs {
    font-size: 11px;
    text-align: center;
    color: #8da1ae;
}
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-venue {
    margin-top: 11px;
    padding-top: 10px;
    border-top-color: #e9eff3;
    color: var(--gsv-ui-muted);
}
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-games-all {
    font-weight: 700;
}

@media (max-width: 900px) {
    .gsv-spielplan.gsv-spielplan .gsv-game-teams { grid-template-columns: minmax(0,1fr) minmax(75px,auto) minmax(0,1fr); }
    .gsv-spielplan.gsv-spielplan .gsv-team-home.gsv-team-side,
    .gsv-spielplan.gsv-spielplan .gsv-team-away.gsv-team-side { padding-left: 10px; padding-right: 10px; font-size: 14px; }
}

/* Mobile Geräte: lange Jugend-Teamnamen bekommen volle Breite statt schmaler Spalten. */
@media (max-width: 689px) {
    .gsv-spielplan.gsv-spielplan { padding: 0; }
    
    
    
    
    
    
    
    .gsv-spielplan.gsv-spielplan .gsv-range-fields { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); }
    .gsv-spielplan.gsv-spielplan .gsv-range-heading { text-align: left; }
    .gsv-spielplan.gsv-spielplan .gsv-download-button {
        width: 37px; min-width: 37px; height: 40px; min-height: 40px;
    }
    .gsv-spielplan.gsv-spielplan .gsv-day-heading  {
    margin: 20px 0 10px;
}
    .gsv-spielplan.gsv-spielplan .gsv-game { padding: 12px; margin-bottom: 9px; }
    .gsv-spielplan.gsv-spielplan .gsv-game-time  {
    justify-content: flex-start;
    text-align: left;
}
    .gsv-spielplan.gsv-spielplan .gsv-game-content { text-align: left; }
    .gsv-spielplan.gsv-spielplan .gsv-game-meta  {
    margin-bottom: 10px;
}
    .gsv-spielplan.gsv-spielplan .gsv-game-teams,
    .gsv-spielplan.gsv-spielplan .gsv-game-teams.is-scheduled  {
    display: grid;
    justify-items: stretch;
    gap: 6px;
    font-size: 14px;
}
    .gsv-spielplan.gsv-spielplan .gsv-team-home.gsv-team-side,
    .gsv-spielplan.gsv-spielplan .gsv-team-away.gsv-team-side  {
    width: 100%;
    max-width: none;
    margin: 0;
    justify-content: flex-start;
    text-align: left;
    font-size: 14px;
}
    .gsv-spielplan.gsv-spielplan .gsv-team-away.gsv-team-side {
        justify-content: flex-end;
        text-align: right;
    }
    .gsv-spielplan.gsv-spielplan .gsv-game-score,
    .gsv-spielplan.gsv-spielplan .gsv-game-separator,
    .gsv-spielplan.gsv-spielplan .gsv-game-status  {
    min-width: 0;
    width: min(100%,136px);
    margin: 0 auto;
    padding: 5px 8px;
    justify-self: center;
    font-size: 18px;
}
    .gsv-spielplan.gsv-spielplan .gsv-game-status { font-size: 10px; }
    .gsv-spielplan.gsv-spielplan .gsv-game-venue  {
    padding-top: 9px;
    margin: 10px 0 0;
    font-size: 11px;
}
    .gsv-spielplan.gsv-spielplan .gsv-game-link  {
    margin-top: 6px;
    font-size: 11px;
}
    .gsv-team-component.gsv-team-component .gsv-team-carousel-card { padding: 14px; }
    .gsv-team-component.gsv-team-component .gsv-team-carousel-head { margin-bottom: 9px; }
    .gsv-team-component.gsv-team-component .gsv-team-match-pairing {
        grid-template-columns: minmax(0,1fr);
        gap: 6px;
    }
    .gsv-team-component.gsv-team-component .gsv-team-match-home,
    .gsv-team-component.gsv-team-component .gsv-team-match-away {
        min-height: 58px;
        max-width: none;
        width: 100%;
        margin: 0;
        padding: 23px 10px 9px;
    }
    .gsv-team-component.gsv-team-component .gsv-team-match-middle {
        justify-self: center;
        align-self: center;
        min-height: 42px;
        width: min(100%,136px);
    }
    .gsv-team-component.gsv-team-component .gsv-team-match-score,
    .gsv-team-component.gsv-team-component .gsv-team-match-status,
    .gsv-team-component.gsv-team-component .gsv-team-match-separator {
        font-size: 18px;
        min-height: 40px;
    }
    .gsv-team-component.gsv-team-component .gsv-team-match-status { font-size: 10px; }
    .gsv-team-component.gsv-team-component .gsv-team-match-venue { margin-top: 10px; }
    .gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game {
        grid-template-columns: 70px minmax(0,1fr);
    }
    .gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-content { padding: 11px; }
    .gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-club { padding: 8px 9px; font-size: 13px; }
}

@media (prefers-reduced-motion: reduce) {
    .gsv-spielplan.gsv-spielplan .gsv-game { transition: none; }
}


/* ================================================================
   v1.3.2 – gezielte Anpassungen nach Seitenkontrolle
   - Auswärts-Heimmannschaften nicht mehr automatisch blau
   - Ergebnisse wie vor dem Redesign mit kräftiger Ergebnisfläche
   - Desktop-Navigation unten, auf Mobilgeräten bisherige Pfeile
   - mobile Filter ohne Umbruch, kompakter KW-Kopf
   - dunkelblauer Datumstreifen bei Spielankündigungen
   - Mannschafts-Slider: früheres neutrales Layout mit Logos innen
   ================================================================ */

/* Immer die vereinseigene Mannschaft hellblau markieren –
   unabhängig vom Heimrecht. data-home wird von der Spielplanlogik
   fuer das jeweilige GSV-/JSG-Team gesetzt: 1=heim, 0=auswaerts. */
.gsv-spielplan.gsv-spielplan .gsv-team-home.gsv-team-side,
.gsv-spielplan.gsv-spielplan .gsv-team-away.gsv-team-side {
    background: #f7f9fb;
    border-color: #e1e9ef;
}
.gsv-spielplan.gsv-spielplan .gsv-game[data-home="1"] .gsv-team-home.gsv-team-side,
.gsv-spielplan.gsv-spielplan .gsv-game[data-home="0"] .gsv-team-away.gsv-team-side {
    background: #eaf5fb;
    border-color: #bddbec;
}

/* Kräftiges Ergebnisfeld statt weißer Box. */
.gsv-spielplan.gsv-spielplan .gsv-game-score {
    background: #005A8C;
    border-color: #005A8C;
    color: #fff;
    font-weight: 800;
    font-size: 25px;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
.gsv-spielplan.gsv-spielplan .gsv-game-score--live {
    background: #b42318;
    border-color: #b42318;
    color: #fff;
}

/* Wochenwechsel bei Desktop nach der eigentlichen Liste. */
.gsv-spielplan.gsv-spielplan .gsv-bottom-week-nav {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    margin-top: 17px;
    padding: 0;
}
.gsv-spielplan.gsv-spielplan .gsv-bottom-week-link {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    gap: 8px;
    min-height: 39px;
    padding: 7px 15px;
    border: 1px solid #cadce7;
    border-radius: 9px;
    background: #fff;
    color: #005A8C;
    font-size: 13px;
    font-weight: 700;
    text-decoration: none !important;
    transition: background .15s ease, border-color .15s ease;
}
.gsv-spielplan.gsv-spielplan .gsv-bottom-week-link span {
    font-size: 23px;
    font-weight: 500;
    line-height: 1;
}
.gsv-spielplan.gsv-spielplan .gsv-bottom-week-link:hover,
.gsv-spielplan.gsv-spielplan .gsv-bottom-week-link:focus-visible {
    background: #eaf5fb;
    border-color: #8dbedb;
    color: #005A8C;
}
@media (min-width: 690px) {
    .gsv-spielplan.gsv-spielplan .gsv-floating-week-nav,
    .gsv-spielplan.gsv-spielplan .gsv-floating-week-nav.is-visible {
        display: none !important;
    }
}

/* Spielankündigungen: Datum wieder satt blau mit weißer Schrift. */
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-date {
    background: #005A8C;
    border-right-color: #005A8C;
    color: #fff;
}
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-time {
    border-top-color: rgba(255,255,255,.35);
}

/* Teamseiten: Kartenraster wie v1.3.1, mit dem aktuellen ruhigen
   Kartenhintergrund. Vereinswappen jeweils innen zur Ergebnisbox hin. */
.gsv-team-component.gsv-team-component .gsv-team-match-card,
.gsv-team-component.gsv-team-component .gsv-team-carousel-card {
    background: #FBFCFD;
    border-color: #DCE4EA;
}

/* Die GSV-/JSG-Mannschaft hervorheben, nicht pauschal das Heimteam. */
.gsv-team-component.gsv-team-component .gsv-team-match-home,
.gsv-team-component.gsv-team-component .gsv-team-match-away {
    background: #f5f8fa;
    border-color: #dce6ed;
}
.gsv-team-component.gsv-team-component .gsv-team-match-own {
    background: #eaf5fb;
    border-color: #bddbec;
}

/* Namen bleiben auf ihrer Seite der mittigen Ergebnisbox;
   nur die Logos rücken an deren Innenseite. */
.gsv-team-component.gsv-team-component .gsv-team-match-home .gsv-match-club,
.gsv-team-component.gsv-team-component .gsv-team-match-away .gsv-match-club {
    flex-wrap: wrap;
    gap: 7px;
}
.gsv-team-component.gsv-team-component .gsv-team-match-home .gsv-match-club-name { order: 1; }
.gsv-team-component.gsv-team-component .gsv-team-match-home .gsv-match-club-logo { order: 2; }
.gsv-team-component.gsv-team-component .gsv-team-match-away .gsv-match-club-logo { order: 0; }
.gsv-team-component.gsv-team-component .gsv-team-match-away .gsv-match-club-name { order: 1; }

/* Kräftiges Ergebnisfeld wie vor der Layout-Änderung. */
.gsv-team-component.gsv-team-component .gsv-team-match-score {
    background: #005A8C;
    color: #fff;
    font-variant-numeric: tabular-nums;
}
.gsv-team-component.gsv-team-component .gsv-team-match-score--live {
    background: #b42318;
    color: #fff;
}

@media (max-width: 689px) {
    /* Keine zusätzlichen Außenabstände: weiterhin Blocksy. */
    .gsv-spielplan.gsv-spielplan .gsv-spielplan-head {
        grid-template-columns: 32px minmax(0,1fr) 32px;
        gap: 6px;
        padding: 7px 10px;
        margin-bottom: 8px;
    }
    .gsv-spielplan.gsv-spielplan .gsv-week-nav {
        width: 32px;
        height: 32px;
        font-size: 22px;
    }
    .gsv-spielplan.gsv-spielplan .gsv-week-title strong {
        font-size: 11px;
        line-height: 1.2;
    }
    .gsv-spielplan.gsv-spielplan .gsv-week-title span {
        margin-top: 2px;
        font-size: 13px;
        line-height: 1.2;
    }
    .gsv-spielplan.gsv-spielplan .gsv-spielplan-controls {
        gap: 10px;
        padding: 12px;
        margin-bottom: 16px;
    }
    .gsv-spielplan.gsv-spielplan .gsv-control-group--type {
        width: 100%;
        min-width: 0;
    }
    .gsv-spielplan.gsv-spielplan .gsv-control-label,
    .gsv-spielplan.gsv-spielplan .gsv-control-group--type .gsv-control-label,
    .gsv-spielplan.gsv-spielplan .gsv-control-group--team .gsv-control-label {
        margin-bottom: 5px;
    }
    .gsv-spielplan.gsv-spielplan .gsv-spielplan-filters {
        display: grid;
        grid-template-columns: repeat(3, minmax(0,1fr));
        width: 100%;
        gap: 5px;
        flex-wrap: nowrap;
    }
    .gsv-spielplan.gsv-spielplan .gsv-spielplan-filters button {
        width: 100%;
        min-width: 0;
        padding: 8px 2px;
        font-size: clamp(9px, 2.65vw, 11px);
        line-height: 1.15;
        white-space: nowrap;
        letter-spacing: -.015em;
    }
    .gsv-spielplan.gsv-spielplan .gsv-team-multi-toggle {
        height: 39px;
    }
    .gsv-spielplan.gsv-spielplan .gsv-range-panel {
        padding: 10px;
    }
    .gsv-spielplan.gsv-spielplan .gsv-range-heading {
        margin-bottom: 6px;
    }
    .gsv-spielplan.gsv-spielplan .gsv-game-score  {
    width: min(100%, 140px);
    font-size: 23px;
}
    /* Auf Mobil bleibt die bisherige mitfliegende Navigation erhalten. */
    
}


/* ==================================================================
   v1.3.5 – Spielplan Mobil: Navigation und kompaktere Spielkarten
   - Wochenwechsel nur oben und am unteren Ende, keine Floating-Pfeile
   - Uhrzeit / Mannschaft / Liga in einer Zeile
   - Uhr in exakt derselben Typografie wie die Zeit
   - flachere Heim-/Gastfelder, ohne Teamnamen abzuschneiden
   ================================================================== */

/* Einheitliche Typografie für die ausgeschriebene Uhrzeit. */
.gsv-spielplan.gsv-spielplan .gsv-game-time::after {
    color: inherit;
    font-size: inherit;
    font-weight: inherit;
    line-height: inherit;
}

@media (max-width: 689px) {
    /* Pfeile nicht mehr über einzelnen Spielen schweben lassen. */
    .gsv-spielplan.gsv-spielplan .gsv-floating-week-nav,
    .gsv-spielplan.gsv-spielplan .gsv-floating-week-nav.is-visible {
        display: none !important;
    }

    /* Untere Wochen-Navigation wie auf dem Desktop, mobil angepasst. */
    .gsv-spielplan.gsv-spielplan .gsv-bottom-week-nav {
        display: flex;
        justify-content: space-between;
        align-items: stretch;
        gap: 8px;
        margin-top: 15px;
    }
    .gsv-spielplan.gsv-spielplan .gsv-bottom-week-link {
        flex: 1 1 0;
        min-width: 0;
        min-height: 38px;
        padding: 7px 8px;
        gap: 4px;
        font-size: clamp(10px, 2.9vw, 12px);
        white-space: nowrap;
    }
    .gsv-spielplan.gsv-spielplan .gsv-bottom-week-link span {
        font-size: 20px;
    }

    /* Die Zeit links und die Team-/Wettbewerbsinformation rechts
       teilen sich dieselbe Kopfzeile, ohne das HTML zu verändern. */
    .gsv-spielplan.gsv-spielplan .gsv-game {
        position: relative;
    }
    .gsv-spielplan.gsv-spielplan .gsv-game-time {
        position: absolute;
        top: 13px;
        left: 12px;
        display: inline-flex;
        align-items: center;
        height: 18px;
        margin: 0;
        font-size: 12px;
        font-weight: 750;
        line-height: 18px;
        white-space: nowrap;
    }
    .gsv-spielplan.gsv-spielplan .gsv-game-meta  {
    flex-wrap: nowrap;
    align-items: center;
    min-height: 18px;
    min-width: 0;
    margin: 0 0 10px;
    font-size: 12px;
    line-height: 18px;
}
    .gsv-spielplan.gsv-spielplan .gsv-game-meta .gsv-game-team-link,
    .gsv-spielplan.gsv-spielplan .gsv-game-meta strong {
        flex: 0 0 auto;
        white-space: nowrap;
        font-size: 12px;
    }
    .gsv-spielplan.gsv-spielplan .gsv-game-meta span {
        flex: 0 1 auto;
        min-width: 0;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
        font-size: 11px;
    }

    /* Etwas weniger Höhe und Luft in den Mannschaftsfeldern.
       Lange Vereinsnamen dürfen die Felder weiterhin vergrößern. */
    .gsv-spielplan.gsv-spielplan .gsv-team-home.gsv-team-side,
    .gsv-spielplan.gsv-spielplan .gsv-team-away.gsv-team-side  {
    gap: 7px;
}
    .gsv-spielplan.gsv-spielplan .gsv-team-home.gsv-team-side::before,
    .gsv-spielplan.gsv-spielplan .gsv-team-away.gsv-team-side::before {
        top: 6px;
    }
    .gsv-spielplan.gsv-spielplan .gsv-team-logo {
        width: 24px;
        height: 24px;
        flex-basis: 24px;
        object-fit: contain;
    }
}

/* ==================================================================
   v1.3.5 – Mannschafts-Slider: Vereinswappen zentriert über dem Namen
   Nur Letzte/Nächste Spiele; Spielplan und Spielankündigungen unverändert.
   ================================================================== */


.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-home .gsv-match-club-logo,
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-away .gsv-match-club-logo  {
    order: 0;
}
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-home .gsv-match-club-name,
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-away .gsv-match-club-name  {
    order: 1;
}

/* ==================================================================
   v1.3.5 – Großer Spielplan Desktop: Mannschaften nah am Ergebnis.
   Die Mannschafts-Slider werden ab v1.3.6 separat zentriert.
   ================================================================== */
@media (min-width: 690px) {
    /* Großer Wochen-Spielplan: Teamnamen/Logos an den Ergebnisblock. */
    .gsv-spielplan.gsv-spielplan .gsv-game-teams .gsv-team-home.gsv-team-side {
        justify-content: flex-end;
        text-align: right;
    }
    .gsv-spielplan.gsv-spielplan .gsv-game-teams .gsv-team-away.gsv-team-side {
        justify-content: flex-start;
        text-align: left;
    }

}

/* ==================================================================
   v1.3.6 – Mannschafts-Slider: beide Vereinsseiten wirklich zentrieren.
   Vereinswappen stehen weiterhin über dem Mannschaftsnamen.
   Unabhängig von Heim/Gast; Desktop und Mobile.
   ================================================================== */

.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-home .gsv-match-club,
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-away .gsv-match-club  {
    margin-inline: auto;
}


/* Mobile Spielplan: Heim- und Gastmannschaft als Gruppe mittig ausrichten.
   Keine Änderung an Ergebnis, Status, HEIM-/GAST-Labeln oder Desktop. */
@media (max-width: 689px) {
    .gsv-spielplan.gsv-spielplan .gsv-game-teams .gsv-team-home.gsv-team-side,
    .gsv-spielplan.gsv-spielplan .gsv-game-teams .gsv-team-away.gsv-team-side {
        justify-content: center;
        text-align: center;
    }
    .gsv-spielplan.gsv-spielplan .gsv-game-teams .gsv-team-home.gsv-team-side .gsv-team-name,
    .gsv-spielplan.gsv-spielplan .gsv-game-teams .gsv-team-away.gsv-team-side .gsv-team-name {
        text-align: center;
    }
}


/* ==================================================================
   v1.3.7 – Mannschaften in den Spielankündigungen zentrieren.
   Wappen und Name bleiben gemeinsam in einer Zeile (mit Umbruch
   nur im Namen, falls nötig). Auch ohne Wappen mittig ausrichten.
   ================================================================== */
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-club {
    display: flex;
    justify-content: center;
    align-items: center;
    text-align: center;
}
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-club .gsv-match-club {
    display: inline-flex;
    flex: 0 1 auto;
    max-width: 100%;
    min-width: 0;
    align-items: center;
    justify-content: center;
    gap: 7px;
    margin-inline: auto;
    text-align: center;
}
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-club .gsv-match-club-name {
    min-width: 0;
    text-align: center;
    overflow-wrap: break-word;
}

/* Nur die Mannschaft, deren Spiele wir anzeigen, zusätzlich fett.
   Markierung aus data-home: 1 = eigener Verein links, 0 = rechts.
   Andere Teamnamen bleiben in ihrer bisherigen Schriftstärke. */


/* Bilddateien von FUSSBALL.DE besitzen teils eingebettete weiße Ränder.
   Multiply macht Weiß auf den hellen Karten optisch unsichtbar, ohne
   das Logo selbst herunterzuladen, zu beschneiden oder neu zu speichern.
   Nicht auf ganze Mannschaftsfelder anwenden. Bei Logos mit weißen
   Innenflächen können diese leicht die Hintergrundfarbe annehmen. */
.gsv-spielplan.gsv-spielplan img.gsv-team-logo,
.gsv-upcoming-games.gsv-upcoming-games img.gsv-match-club-logo,
.gsv-team-component.gsv-team-component img.gsv-match-club-logo {
    mix-blend-mode: multiply;
    background: transparent;
    border: 0;
    box-shadow: none;
}


/* ==================================================================
   v1.3.8 – Mannschafts-Slider (Letzte/Nächste Spiele)
   HEIM/GAST und das Vereinslogo bilden eine kompakte obere Zeile.
   Der Mannschaftsname steht unabhängig von der Spielseite wirklich
   zentriert im Feld. Nur die eigene Mannschaft wird fett dargestellt.
   Keine Änderung am großen Spielplan und den Jugend-Spielankündigungen.
   ================================================================== */
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-home,
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-away  {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-width: 0;
    padding: 25px 9px 8px;
    text-align: center;
    font-weight: 400;
}
/* Seitenlabel bleibt außen oben; das Logo steht gleich daneben. */
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-home::before,
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-away::before {
    top: 8px;
}
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-home .gsv-match-club,
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-away .gsv-match-club {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: center;
    width: 100%;
    max-width: 100%;
    margin: 0;
    gap: 0;
    text-align: center;
}
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-home .gsv-match-club-logo,
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-away .gsv-match-club-logo  {
    position: absolute;
    display: block;
    flex: none;
    object-fit: contain;
}


.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-home .gsv-match-club-name,
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-away .gsv-match-club-name {
    display: block;
    flex: 1 1 auto;
    width: 100%;
    min-width: 0;
    margin: 0;
    color: #34465b;
    font-size: 14px;
    font-weight: 400;
    line-height: 1.25;
    text-align: center;
    overflow-wrap: anywhere;
}
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-own .gsv-match-club-name {
    font-weight: 700;
}
/* Den feinen Trenner vor dem Spielort entfernen, den Abstand erhalten. */
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-venue {
    border-top: 0;
    padding-top: 0;
    margin-top: 10px;
}
/* Ergebnis und die beiden Mannschaftsfelder gleich hoch halten. */

@media (max-width: 689px) {
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-home,
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-away  {
    padding-bottom: 7px;
}
    
}


/* ==================================================================
   v1.3.9 – Wettbewerb oben mittig in Spielankündigungen.
   Der Platz für Mannschaft und Badge bleibt stets erhalten.
   Nur bereits vorhandene, gecachte Wettbewerbsnamen verwenden.
   ================================================================== */
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-topline {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr) minmax(0, 1fr);
    align-items: center;
    column-gap: 7px;
}
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-topline .gsv-upcoming-game-team {
    justify-self: start;
    min-width: 0;
    text-align: left;
}
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-competition {
    display: block;
    min-width: 0;
    color: #768b9e;
    font-size: 11px;
    font-weight: 500;
    line-height: 1.25;
    text-align: center;
    overflow-wrap: anywhere;
}
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-topline .gsv-upcoming-game-badge {
    justify-self: end;
    min-width: 0;
}

/* v1.3.9 – In den Mannschafts-Slidern bleibt das Wappen trotz
   kompakter Feldhöhe mittig über dem ebenfalls zentrierten Namen.
   HEIM/GAST stehen wie bisher in den äußeren oberen Ecken. */
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-home .gsv-match-club-logo,
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-away .gsv-match-club-logo  {
    margin: 0;
}
@media (max-width: 689px) {
    .gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-topline {
        grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr) auto;
        gap: 5px;
    }
    .gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-competition {
        font-size: 10px;
    }
}


/* =====================================================================
   v1.3.10 – Große Spielübersicht etwas kompakter, ohne die vom Theme
   gelieferten Außenabstände oder die bisherigen Layouts zu verändern.
   Lange Mannschaftsnamen dürfen nach wie vor umbrechen.
   ===================================================================== */
.gsv-spielplan.gsv-spielplan .gsv-day-heading {
    padding-block: 8px;
    padding-inline: 14px;
}
.gsv-spielplan.gsv-spielplan .gsv-team-home.gsv-team-side,
.gsv-spielplan.gsv-spielplan .gsv-team-away.gsv-team-side {
    min-height: 68px;
    padding: 20px 11px 8px;
    gap: 7px;
}
.gsv-spielplan.gsv-spielplan .gsv-team-home.gsv-team-side::before,
.gsv-spielplan.gsv-spielplan .gsv-team-away.gsv-team-side::before {
    top: 7px;
}
.gsv-spielplan.gsv-spielplan .gsv-game-score,
.gsv-spielplan.gsv-spielplan .gsv-game-separator,
.gsv-spielplan.gsv-spielplan .gsv-game-status {
    min-height: 68px;
}

/* =====================================================================
   v1.3.10 – Mannschafts-Slider: Das gesamte Ergebnisfeld dunkelblau.
   Nur fertige Ergebnisse bekommen diese Fläche; LIVE, Sonderstatus
   und noch nicht angesetzte Ergebnisse bleiben in bisheriger Optik.
   ===================================================================== */
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-middle:has(> .gsv-team-match-score:not(.gsv-team-match-score--live)) {
    background: #005A8C;
    border-color: #005A8C;
}
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-middle > .gsv-team-match-score:not(.gsv-team-match-score--live) {
    flex: 1 1 auto;
    align-self: stretch;
    width: 100%;
    min-width: 0;
    min-height: 100%;
    margin: 0;
    padding: 7px 3px;
    border-radius: 8px;
    background: transparent;
    color: #fff;
    font-size: 26px;
    font-weight: 800;
    line-height: 1.1;
    white-space: nowrap;
}
/* Logos mittig oberhalb der Namen, mit etwas mehr Präsenz. */
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-home .gsv-match-club-logo,
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-away .gsv-match-club-logo {
    top: 4px;
    left: 50%;
    right: auto;
    width: 24px;
    height: 24px;
    transform: translateX(-50%);
}
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-home,
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-away  {
    min-height: 68px;
}
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-middle {
    min-height: 68px;
}

@media (max-width: 689px) {
    
    .gsv-spielplan.gsv-spielplan .gsv-team-home.gsv-team-side,
    .gsv-spielplan.gsv-spielplan .gsv-team-away.gsv-team-side {
        min-height: 55px;
        padding: 18px 9px 6px;
    }
    .gsv-spielplan.gsv-spielplan .gsv-game-score,
    .gsv-spielplan.gsv-spielplan .gsv-game-separator,
    .gsv-spielplan.gsv-spielplan .gsv-game-status {
        min-height: 39px;
    }
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-home,
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-away {
        min-height: 63px;
        padding-top: 28px;
    }
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-middle {
        min-height: 43px;
    }
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-middle > .gsv-team-match-score:not(.gsv-team-match-score--live) {
        font-size: 24px;
    }
}


/* =====================================================================
   v1.3.11 – Kopfzeile und Zusatzinformationen im großen Spielplan.
   Uhrzeit links, eigene Mannschaftskategorie mittig, Wettbewerb rechts.
   Die CSS-Regeln gelten nur im großen Spielplan (nicht in den Slidern).
   ===================================================================== */
.gsv-spielplan.gsv-spielplan .gsv-game-meta {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    align-items: center;
    width: 100%;
    min-width: 0;
    padding: 0;
    gap: 6px 8px;
    text-align: center;
}
/* Die erste Spalte bleibt für die links positionierte Uhrzeit frei. */
.gsv-spielplan.gsv-spielplan .gsv-game-meta > .gsv-game-team-link,
.gsv-spielplan.gsv-spielplan .gsv-game-meta > strong {
    grid-column: 2;
    justify-self: center;
    min-width: 0;
    max-width: 100%;
    font-family: inherit;
    font-size: 14px;
    font-weight: 750;
    line-height: 1.55;
    text-align: center;
    overflow-wrap: break-word;
    white-space: normal;
}
.gsv-spielplan.gsv-spielplan .gsv-game-meta > span {
    grid-column: 3;
    justify-self: end;
    min-width: 0;
    max-width: 100%;
    font-size: 12px;
    line-height: 1.4;
    text-align: right;
    white-space: normal;
    overflow-wrap: break-word;
    text-overflow: clip;
}
.gsv-spielplan.gsv-spielplan .gsv-game-venue {
    text-align: center;
}
.gsv-spielplan.gsv-spielplan .gsv-game-link {
    display: block;
    width: fit-content;
    max-width: 100%;
    margin: 7px auto 0;
    text-align: center;
}
@media (max-width: 689px) {
    .gsv-spielplan.gsv-spielplan .gsv-game-meta {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        padding: 0;
        gap: 4px;
        justify-content: stretch;
        text-align: center;
    }
    .gsv-spielplan.gsv-spielplan .gsv-game-meta > .gsv-game-team-link,
    .gsv-spielplan.gsv-spielplan .gsv-game-meta > strong {
        flex: initial;
        font-size: 12px;
        font-weight: 750;
        line-height: 18px;
        white-space: normal;
    }
    .gsv-spielplan.gsv-spielplan .gsv-game-meta > span {
        flex: initial;
        font-size: 11px;
        line-height: 1.25;
        white-space: normal;
        overflow: visible;
        text-overflow: clip;
    }
    .gsv-spielplan.gsv-spielplan .gsv-game-venue {
        max-width: none;
        text-align: center;
    }
    .gsv-spielplan.gsv-spielplan .gsv-game-link {
        display: block;
        width: fit-content;
        max-width: 100%;
        margin: 6px auto 0;
        text-align: center;
    }
}

/* ================================================================
   v1.3.11 – Nur eigene GSV-/JSG-Mannschaft fett.
   Die Schriftstärke der Gegner darf nicht von der Grundregel
   der gesamten Spielpaarung geerbt werden.
   ================================================================ */
.gsv-spielplan.gsv-spielplan .gsv-game .gsv-game-teams .gsv-team-side .gsv-team-name {
    font-weight: 400;
}
.gsv-spielplan.gsv-spielplan .gsv-game[data-home="1"] .gsv-team-home.gsv-team-side .gsv-team-name,
.gsv-spielplan.gsv-spielplan .gsv-game[data-home="0"] .gsv-team-away.gsv-team-side .gsv-team-name {
    font-weight: 800;
}


/* =====================================================================
   v1.3.12 – Datumstrenner klarer von den Spielkarten absetzen.
   Nur optische Anpassung: kein Einfluss auf Spiellogik, Inhalte oder
   Blocksy-Inhaltsbreite und horizontale Außenabstände.
   ===================================================================== */

@media (max-width: 689px) {
    
}


/* =====================================================================
   v1.3.13 – Eindeutige Tagesabschnitte und dezentere Ergebnisanzeige.
   Nur Darstellung im großen Spielplan. Blocksy bestimmt unverändert
   die Inhaltsbreite und sämtliche horizontalen Außenabstände.
   ===================================================================== */
.gsv-spielplan.gsv-spielplan .gsv-day-heading {
    margin-top: 30px;
    margin-bottom: 14px;
    padding: 10px 14px;
    border: 1px solid #005A8C;
    border-left: 6px solid #003e63;
    border-radius: 8px;
    background: #005A8C;
    color: #fff;
    font-size: 13px;
    font-weight: 800;
    letter-spacing: .035em;
    box-shadow: none;
}
/* Nur echte Ergebnisse verkleinern – LIVE behält seine rote Statusfarbe,
   „–“, Absetzungen und andere Sonderstatus werden nicht verändert. */
.gsv-spielplan.gsv-spielplan .gsv-game-teams {
    grid-template-columns: minmax(0, 1fr) 78px minmax(0, 1fr);
}
.gsv-spielplan.gsv-spielplan .gsv-game-teams .gsv-game-score {
    align-self: center;
    justify-self: stretch;
    width: 100%;
    min-width: 0;
    min-height: 46px;
    height: 46px;
    padding: 5px 7px;
    font-size: 21px;
    line-height: 1;
    border-radius: 8px;
}
@media (max-width: 900px) and (min-width: 690px) {
    .gsv-spielplan.gsv-spielplan .gsv-game-teams {
        grid-template-columns: minmax(0, 1fr) 75px minmax(0, 1fr);
    }
}
@media (max-width: 689px) {
    .gsv-spielplan.gsv-spielplan .gsv-day-heading {
        margin-top: 24px;
        margin-bottom: 12px;
        padding: 9px 11px;
        border-left-width: 5px;
        font-size: 12px;
    }
    .gsv-spielplan.gsv-spielplan .gsv-game-teams,
    .gsv-spielplan.gsv-spielplan .gsv-game-teams.is-scheduled {
        grid-template-columns: minmax(0, 1fr);
    }
    .gsv-spielplan.gsv-spielplan .gsv-game-teams .gsv-game-score {
        width: min(100%, 94px);
        min-height: 34px;
        height: 34px;
        justify-self: center;
        padding: 3px 7px;
        font-size: 18px;
        border-radius: 7px;
    }
}


/* =====================================================================
   v1.3.14 – Status statt Seitenlabels, Sonderstatus mit genügend Platz.
   Die Karten behalten ihre bisherigen Hintergrundfarben und Blocksy
   bestimmt weiterhin die Inhaltsbreite/Außenabstände.
   ===================================================================== */

/* Großer Spielplan: keine HEIM/GAST-Marken mehr in den Teamfeldern. */
.gsv-spielplan.gsv-spielplan .gsv-game-teams .gsv-team-home::before,
.gsv-spielplan.gsv-spielplan .gsv-game-teams .gsv-team-away::before {
    content: none !important;
    display: none !important;
}
/* Ohne obere Labels brauchen die Mannschaftsfelder weniger Leerraum. */
.gsv-spielplan.gsv-spielplan .gsv-game-teams .gsv-team-home.gsv-team-side,
.gsv-spielplan.gsv-spielplan .gsv-game-teams .gsv-team-away.gsv-team-side {
    padding-top: 9px;
    padding-bottom: 9px;
    min-height: 54px;
}
/* Nur bei Sonderstatus den Ergebnisbereich verbreitern. */
.gsv-spielplan.gsv-spielplan .gsv-game-teams.has-status-label {
    grid-template-columns: minmax(0,1fr) 132px minmax(0,1fr);
}
.gsv-spielplan.gsv-spielplan .gsv-game-teams.has-status-label .gsv-game-status {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    width: 100%;
    min-width: 0;
    min-height: 46px;
    padding: 8px 4px;
    font-size: 11px;
    line-height: 1.2;
    white-space: nowrap;
    word-break: normal;
    overflow-wrap: normal;
    text-align: center;
}

/* Mannschafts-Slider: Standort in die Datumszeile, nicht in die Teambox. */
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-home::before,
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-away::before {
    content: none !important;
    display: none !important;
}
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-date {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 4fr) minmax(0, 1fr);
    align-items: center;
    gap: 4px;
    width: 100%;
    text-align: center;
}
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-date-text {
    grid-column: 2;
    grid-row: 1;
    min-width: 0;
    justify-self: center;
    text-align: center;
}
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-date-location {
    grid-row: 1;
    font-size: 11px;
    font-weight: 650;
    color: #57768b;
    white-space: nowrap;
}
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-date--last .gsv-team-match-date-location {
    grid-column: 1;
    justify-self: start;
    text-align: left;
}
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-date--next .gsv-team-match-date-location {
    grid-column: 3;
    justify-self: end;
    text-align: right;
}
/* Die Logos stehen weiterhin zentriert über den Mannschaftsnamen. */
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-home,
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-away {
    padding-top: 30px;
    padding-bottom: 7px;
}

/* Spielankündigungen auf Übersichtsseiten: Spielort mittig. */
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-venue {
    text-align: center;
}

@media (max-width: 689px) {
    .gsv-spielplan.gsv-spielplan .gsv-game-teams.has-status-label,
    .gsv-spielplan.gsv-spielplan .gsv-game-teams.has-status-label.is-cancelled {
        grid-template-columns: minmax(0,1fr);
    }
    .gsv-spielplan.gsv-spielplan .gsv-game-teams.has-status-label .gsv-game-status {
        width: min(100%, 132px);
        min-height: 34px;
        margin: 0 auto;
        font-size: 10px;
    }
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-date {
        grid-template-columns: minmax(40px,1fr) minmax(0,4fr) minmax(40px,1fr);
        gap: 2px;
        font-size: 12px;
    }
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-date-location {
        font-size: 10px;
    }
}

/* v1.6.1: NUR Logos mit echter Transparenz ohne Multiply anzeigen.
   Lokale Originale mit weißem Hintergrund behalten die frühere CSS-Kaschierung. */
.gsv-spielplan.gsv-spielplan img.gsv-team-logo.gsv-optimized-logo,
.gsv-upcoming-games.gsv-upcoming-games img.gsv-match-club-logo.gsv-optimized-logo,
.gsv-team-component.gsv-team-component img.gsv-match-club-logo.gsv-optimized-logo,
.gsv-spielplan.gsv-spielplan img.gsv-team-logo.gsv-alpha-logo,
.gsv-upcoming-games.gsv-upcoming-games img.gsv-match-club-logo.gsv-alpha-logo,
.gsv-team-component.gsv-team-component img.gsv-match-club-logo.gsv-alpha-logo {
    mix-blend-mode: normal;
    background: transparent;
}


/* =====================================================================
   v2.1.11 – Feinabstimmung Spielplan und Mannschafts-Spielkarten.
   Die Korrektur betrifft ausschliesslich die inneren Team-/Ergebnisfelder;
   Seitenbreiten und Aussenabstaende bestimmt weiterhin Blocksy.
   ===================================================================== */

/* Wochen-Spielplan: Wappen und Teamname sind eine mittig ausgerichtete
   horizontale Einheit – auch bei zwei- oder dreizeiligen Teamnamen. */
.gsv-spielplan.gsv-spielplan .gsv-game-teams .gsv-team-home.gsv-team-side,
.gsv-spielplan.gsv-spielplan .gsv-game-teams .gsv-team-away.gsv-team-side {
    display: flex;
    align-items: center;
    min-height: 58px;
    padding-top: 9px;
    padding-bottom: 9px;
    gap: 9px;
}
.gsv-spielplan.gsv-spielplan .gsv-game-teams .gsv-team-name {
    display: block;
    min-width: 0;
    margin: 0;
    line-height: 1.35;
    align-self: center;
}
.gsv-spielplan.gsv-spielplan .gsv-game-teams img.gsv-team-logo {
    display: block;
    flex: 0 0 36px;
    width: 36px;
    height: 36px;
    max-width: 36px;
    max-height: 36px;
    margin: 0;
    object-fit: contain;
    align-self: center;
}

/* Letzte / nächste Spiele: Wappen nicht mehr absolut über den Namen legen.
   Beide bilden eine gemeinsame mittig ausgerichtete Spalte: gleich viel
   Luft zwischen Wappen/Oberkante und Mannschaftsname/Unterkante. */
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-home,
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-away {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 80px;
    padding: 8px 9px;
}
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-home .gsv-match-club,
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-away .gsv-match-club {
    display: flex;
    flex-direction: column;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: center;
    gap: 5px;
    width: 100%;
    max-width: 100%;
    min-width: 0;
    margin: 0 auto;
    text-align: center;
}
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-home img.gsv-match-club-logo,
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-away img.gsv-match-club-logo {
    position: static;
    top: auto;
    left: auto;
    right: auto;
    bottom: auto;
    order: 0;
    flex: 0 0 32px;
    width: 32px;
    height: 32px;
    max-width: 32px;
    max-height: 32px;
    margin: 0;
    transform: none;
    object-fit: contain;
}
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-home .gsv-match-club-name,
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-away .gsv-match-club-name {
    order: 1;
    flex: 0 1 auto;
    width: 100%;
    min-width: 0;
    margin: 0;
    line-height: 1.25;
    text-align: center;
    overflow-wrap: anywhere;
}

/* Team-Slider: Ergebnis-Badge wie im Wochen-Spielplan (78 × 46 px),
   nicht mehr in der vollen Hoehe der beiden Mannschaftsfelder. */
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-pairing {
    grid-template-columns: minmax(0, 1fr) 78px minmax(0, 1fr);
    gap: 8px;
    align-items: stretch;
}
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-middle {
    display: flex;
    align-items: center;
    justify-content: center;
    align-self: center;
    justify-self: center;
    flex: none;
    width: 78px;
    min-width: 0;
    max-width: 100%;
    height: 46px;
    min-height: 46px;
    border-radius: 8px;
}
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-middle > .gsv-team-match-score,
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-middle > .gsv-team-match-score:not(.gsv-team-match-score--live) {
    display: flex;
    align-items: center;
    justify-content: center;
    flex: 1 1 auto;
    align-self: stretch;
    width: 100%;
    height: 100%;
    min-height: 0;
    margin: 0;
    padding: 5px 3px;
    border-radius: 7px;
    font-size: 21px;
    font-weight: 800;
    line-height: 1;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}
/* Absetzungen und laengere Statusmeldungen duerfen mehr Breite belegen. */
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-pairing:has(.gsv-team-match-status) {
    grid-template-columns: minmax(0, 1fr) minmax(78px, auto) minmax(0, 1fr);
}
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-middle:has(> .gsv-team-match-status) {
    width: auto;
    min-width: 78px;
    max-width: 140px;
    height: auto;
    min-height: 46px;
    background: #fff;
}
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-middle > .gsv-team-match-status {
    max-width: 100%;
    white-space: normal;
    overflow-wrap: anywhere;
}

/* Mobile Stapelung beibehalten; keine uebermaessig hohen Badge-Flaechen. */
@media (max-width: 689px) {
    .gsv-spielplan.gsv-spielplan .gsv-game-teams img.gsv-team-logo {
        flex-basis: 33px;
        width: 33px;
        height: 33px;
        max-width: 33px;
        max-height: 33px;
    }
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-pairing {
        grid-template-columns: minmax(0, 1fr);
        gap: 6px;
    }
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-pairing:has(.gsv-team-match-status) {
        grid-template-columns: minmax(0, 1fr);
    }
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-home,
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-away {
        min-height: 76px;
        padding: 7px 9px;
    }
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-middle {
        min-height: 40px;
        height: 40px;
    }
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-middle > .gsv-team-match-score,
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-middle > .gsv-team-match-score:not(.gsv-team-match-score--live) {
        font-size: 19px;
    }
}


/* =====================================================================
   v2.1.14 – Mannschafts-Slider: klare Logo-/Namenshierarchie und
   gleich hohe Inhaltsbereiche bei Spielen mit/ohne Adresse oder Link.
   Nur "Letzte Spiele" / "Nächste Spiele", kein Eingriff in den Spielplan.
   ===================================================================== */
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-home img.gsv-match-club-logo,
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-away img.gsv-match-club-logo {
    flex: 0 0 44px;
    width: 44px;
    height: 44px;
    max-width: 44px;
    max-height: 44px;
}
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-home .gsv-match-club-name,
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-away .gsv-match-club-name {
    font-size: 15px;
    line-height: 1.3;
}
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-home,
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-away {
    min-height: 112px;
    padding: 10px 9px;
}
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-home .gsv-match-club,
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-away .gsv-match-club {
    gap: 6px;
}

@media (min-width: 690px) {
    /* Gleiches Raster auch ohne Fussball.de-Link bzw. Spielort.
       So beginnt die Paarung in beiden nebeneinanderliegenden Karten
       auf exakt der gleichen vertikalen Position. */
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide {
        display: grid;
        grid-template-columns: minmax(0, 1fr);
        grid-template-rows: minmax(25px,auto) minmax(22px,auto) minmax(112px,auto) minmax(19px,auto) minmax(19px,auto);
        align-items: center;
        align-content: start;
        justify-items: stretch;
        padding: 10px 4px 4px;
        row-gap: 0;
    }
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-date {
        grid-row: 1;
        align-self: center;
        margin: 0;
    }
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-competition {
        grid-row: 2;
        align-self: center;
        margin: 0;
    }
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-pairing {
        grid-row: 3;
        margin: 0;
    }
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-venue {
        grid-row: 4;
        min-height: 27px;
        margin: 0;
        padding: 10px 0 0;
        line-height: 1.3;
        border: 0;
    }
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-link {
        grid-row: 5;
        min-height: 19px;
        margin: 0;
        padding: 2px 0 0;
        line-height: 1.3;
    }
}

@media (max-width: 689px) {
    /* Die Datumszeile braucht Mobil nur noch das Datum selbst. */
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-date-location {
        display: none !important;
    }
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-date {
        display: block;
        text-align: center;
    }
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-date-text {
        display: block;
        width: 100%;
        text-align: center;
    }
    /* Ohne Venue/Link keinen leeren Platz; Hoehe wechselt zum aktiven Slide. */
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-venue--empty,
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-link--empty {
        display: none !important;
    }
    .gsv-team-component.gsv-team-component .gsv-team-carousel-track {
        align-items: flex-start;
    }
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide {
        height: auto;
        align-self: flex-start;
        justify-content: flex-start;
    }
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-home img.gsv-match-club-logo,
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-away img.gsv-match-club-logo {
        flex-basis: 42px;
        width: 42px;
        height: 42px;
        max-width: 42px;
        max-height: 42px;
    }
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-home,
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-away {
        min-height: 91px;
        padding: 8px 9px;
    }
}

/* v2.1.15 – Nur das Polster in den Mannschaftsfeldern reduzieren,
   die Logo- und Schriftgrößen aus v2.1.14 unverändert lassen. */
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-home,
.gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-away {
    min-height: 86px;
    padding: 5px 8px;
}
@media (min-width: 690px) {
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide {
        grid-template-rows: minmax(25px,auto) minmax(22px,auto) minmax(86px,auto) minmax(27px,auto) minmax(19px,auto);
        padding-top: 7px;
    }
}
@media (max-width: 689px) {
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-home,
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-away {
        min-height: 80px;
        padding: 5px 8px;
    }
}


/* ================================================================
   v2.1.95 - Mobile Mannschafts-Spielkarten
   Spezifitaet auf derselben Ebene wie die bestehenden Designregeln.
   Desktop/Tablet unveraendert.
   ================================================================ */
@media (max-width: 689px) {
    /* Titel, Navigation und Spielzaehler muessen eine Zeile bilden. */
    .gsv-team-component.gsv-team-component .gsv-team-carousel-head {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 8px;
        min-height: 29px;
        margin-bottom: 7px;
        padding: 0 0 6px;
    }
    .gsv-team-component.gsv-team-component .gsv-team-carousel-title {
        flex: 0 1 auto;
        min-width: 0;
        margin: 0;
        line-height: 1.3;
    }
    .gsv-team-component.gsv-team-component .gsv-team-carousel-nav {
        position: static;
        display: inline-flex;
        flex: 0 0 auto;
        align-items: center;
        gap: 5px;
        margin-left: auto;
        transform: none;
    }
    /* Link-Größe auch gegen die alte doppelte Selektor-Spezifitaet. */
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-link {
        margin-top: 3px;
        padding: 0;
        font-size: 10px;
        line-height: 1.2;
    }
    .gsv-team-component.gsv-team-component .gsv-team-table-source {
        margin-top: 6px;
    }
    .gsv-team-component.gsv-team-component .gsv-team-table-source a {
        font-size: 10px;
        line-height: 1.2;
    }
    /* Weniger Leerraum unterhalb der Spielpaarung. */
    .gsv-team-component.gsv-team-component .gsv-team-carousel-slide .gsv-team-match-venue {
        margin-top: 5px;
        padding-top: 0;
        border-top: 0;
        font-size: 11px;
        line-height: 1.25;
    }
    .gsv-team-component.gsv-team-component .gsv-team-carousel-card {
        padding: 11px 13px;
    }
}


/* =====================================================================
   v2.1.99 – Nächste Spiele auf Übersichtsseiten
   Ausschließlich [gsv_naechste_spiele] (Fußball / Herren / Junioren).
   Großes Desktop: bisheriges zweispaltiges Kartenraster.
   Unter 1200px: früher einspaltig, damit lange Vereinsnamen genug
   Raum haben. Keine Änderungen am Spielplan und Team-Karussell.
   Die Seiten-Außenabstände bleiben ausschließlich bei Blocksy.
   ===================================================================== */
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-games-grid {
    gap: 12px;
}
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-content {
    padding: 12px 13px;
}
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-topline {
    margin-bottom: 8px;
}
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-clubs {
    gap: 4px;
}
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-club {
    padding: 8px 9px;
}
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-venue {
    margin-top: 8px;
    padding-top: 8px;
    line-height: 1.35;
}

@media screen and (max-width: 1199px) {
    .gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-games-grid {
        grid-template-columns: minmax(0, 1fr);
    }
}

@media screen and (max-width: 690px) {
    .gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-content {
        padding: 11px;
    }
}


/* =====================================================================
   v2.1.101 – Spielort auf den Übersichtsseiten als Google-Maps-Link.
   Der Text bleibt auf Desktop und Mobil identisch zur bisherigen Ansicht.
   ===================================================================== */
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-venue-link {
    display: inline-block;
    max-width: 100%;
    color: inherit !important;
    text-decoration: none;
    text-underline-offset: 2px;
    overflow-wrap: anywhere;
}
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-venue-link:hover,
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-venue-link:focus-visible {
    color: var(--gsv-ui-blue) !important;
    text-decoration: underline;
}
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-venue-link:focus-visible {
    outline: 2px solid var(--gsv-ui-blue);
    outline-offset: 3px;
    border-radius: 2px;
}


/* =====================================================================
   v2.1.102 – Mobile Spielankündigungen und feste Mannschaftsfarben
   Auf schmalen Smartphones liegt das Datum über dem Spiel. So bleiben
   Mannschaftsnamen und Google-Maps-Adresse über die volle Breite lesbar.
   Betrifft nur [gsv_naechste_spiele], nicht den vollständigen Spielplan.
   ===================================================================== */
@media screen and (max-width: 540px) {
    .gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game {
        grid-template-columns: minmax(0, 1fr);
    }
    .gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-date {
        flex-direction: row;
        justify-content: flex-start;
        align-items: center;
        gap: 6px;
        padding: 9px 13px;
        border-right: 0;
        border-bottom: 1px solid #005A8C;
        text-align: left;
    }
    .gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-weekday,
    .gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-month {
        margin: 0;
        font-size: 12px;
        line-height: 1.2;
    }
    .gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-day {
        font-size: 18px;
        line-height: 1;
    }
    .gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-time {
        margin: 0 0 0 auto;
        padding: 0 0 0 12px;
        border-top: 0;
        border-left: 1px solid rgba(255,255,255,.28);
        font-size: 13px;
        white-space: nowrap;
    }
    .gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-content {
        padding: 12px;
    }
    .gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-topline {
        grid-template-columns: minmax(0, 1fr) auto;
        grid-template-areas:
            "team badge"
            "competition competition";
        column-gap: 10px;
        row-gap: 3px;
        margin-bottom: 9px;
    }
    .gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-topline .gsv-upcoming-game-team {
        grid-area: team;
        align-self: center;
    }
    .gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-topline .gsv-upcoming-game-badge {
        grid-area: badge;
        align-self: center;
    }
    .gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-competition {
        grid-area: competition;
        justify-self: start;
        font-size: 11px;
        text-align: left;
    }
    .gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-club {
        padding: 9px 10px;
        font-size: 13px;
    }
}


/* =====================================================================
   v2.1.104 – Mannschaftsart und Liga wieder untereinander, mit sehr
   geringem Zeilenabstand. Badge bleibt rechts oben. Ausschließlich
   [gsv_naechste_spiele]; restliche Plugin-Ansichten unverändert.
   ===================================================================== */
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-topline {
    grid-template-columns: minmax(0, 1fr) max-content;
    grid-template-areas:
        "team badge"
        "competition badge";
    column-gap: 10px;
    row-gap: 0;
    align-items: start;
}
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-topline .gsv-upcoming-game-team {
    grid-area: team;
    line-height: 1.2;
    margin: 0;
}
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-competition {
    grid-area: competition;
    justify-self: start;
    align-self: start;
    text-align: left;
    line-height: 1.15;
    margin: 0;
}
.gsv-upcoming-games.gsv-upcoming-games .gsv-upcoming-game-topline .gsv-upcoming-game-badge {
    grid-area: badge;
    align-self: start;
}


/* =====================================================================
   v2.1.105 – Platzsparender Spielplan-Filter auf breiten Ansichten
   Der komplette Spielplan benutzt zwei statt drei Bedienzeilen:
   oben Spieltyp und Mannschaftsauswahl, darunter der Zeitraum.
   Auf schmalen Screens bleibt die bekannte vertikale Anordnung.
   Keine eigenen Aussenabstaende: weiterhin Blocksy/Gutenberg.
   ===================================================================== */
@media screen and (min-width: 920px) {
    .gsv-spielplan.gsv-spielplan .gsv-spielplan-head {
        padding: 9px 15px;
    }
    .gsv-spielplan.gsv-spielplan .gsv-week-nav {
        width: 38px;
        height: 38px;
        font-size: 25px;
    }
    .gsv-spielplan.gsv-spielplan .gsv-week-title span {
        font-size: 17px;
    }
    .gsv-spielplan.gsv-spielplan .gsv-spielplan-controls {
        display: grid;
        grid-template-columns: max-content minmax(0, 1fr);
        align-items: end;
        column-gap: 22px;
        row-gap: 13px;
        padding: 15px 18px;
        margin-bottom: 20px;
    }
    .gsv-spielplan.gsv-spielplan .gsv-control-group--type,
    .gsv-spielplan.gsv-spielplan .gsv-control-group--team {
        min-width: 0;
        align-items: stretch;
    }
    .gsv-spielplan.gsv-spielplan .gsv-spielplan-filters button {
        min-height: 43px;
    }
    .gsv-spielplan.gsv-spielplan .gsv-team-filter-row {
        width: 100%;
        max-width: none;
    }
    .gsv-spielplan.gsv-spielplan .gsv-range-panel {
        grid-column: 1 / -1;
        display: flex;
        align-items: center;
        gap: 16px;
        padding: 9px 12px;
    }
    .gsv-spielplan.gsv-spielplan .gsv-range-heading {
        flex: 0 0 auto;
        margin: 0;
        white-space: nowrap;
    }
    .gsv-spielplan.gsv-spielplan .gsv-range-fields {
        display: flex;
        flex: 1 1 auto;
        width: auto;
        min-width: 0;
        justify-content: flex-start;
        align-items: center;
        flex-wrap: wrap;
        gap: 10px;
    }
}


/* =====================================================================
   v2.1.109 – Einheitlicher Hover-Rahmen für Mannschaftstabellen
   Eine durchgehende Kontur statt einzelner Zellschatten.
   ===================================================================== */
@media (hover: hover) and (pointer: fine) {
    .gsv-team-table-scroll > .gsv-team-table tbody tr {
        position: relative;
        transition: box-shadow .2s ease, transform .2s ease;
    }
    .gsv-team-table-scroll > .gsv-team-table tbody tr > td {
        transition: background-color .2s ease;
    }
    .gsv-team-table-scroll > .gsv-team-table tbody tr:hover {
        z-index: 2;
        box-shadow: 0 3px 8px rgba(0, 90, 140, .16);
    }
    .gsv-team-table-scroll > .gsv-team-table tbody tr:hover > td {
        background-color: #edf5fa;
        border-bottom-color: transparent !important;
        box-shadow: none;
    }
    .gsv-team-table-scroll > .gsv-team-table tbody tr:hover::after {
        content: "";
        position: absolute;
        inset: 0;
        box-sizing: border-box;
        border: 1px solid #91c2df;
        pointer-events: none;
        z-index: 3;
    }
    .gsv-team-table-scroll > .gsv-team-table tbody tr.gsv-team-table-own:hover > td {
        background-color: #d2e9f6;
        border-bottom-color: transparent !important;
    }
    .gsv-team-table-scroll > .gsv-team-table tbody tr.gsv-team-table-own:hover > td:first-child {
        box-shadow: inset 3px 0 0 #0078B8;
    }
}
@media (hover: hover) and (pointer: fine) and (min-width: 768px) and (prefers-reduced-motion: no-preference) {
    .gsv-team-table-scroll > .gsv-team-table tbody tr:hover {
        transform: translateY(-1px) scaleY(1.12);
    }
    /* Die letzte Zeile wächst nach oben, damit ihre Unterkante sichtbar bleibt. */
    .gsv-team-table-scroll > .gsv-team-table tbody tr:last-child:hover {
        transform-origin: bottom center;
        transform: scaleY(1.12);
    }
}
@media (prefers-reduced-motion: reduce) {
    .gsv-team-table-scroll > .gsv-team-table tbody tr,
    .gsv-team-table-scroll > .gsv-team-table tbody tr > td {
        transition: none;
    }
}
