:root {
    --bg: #0f1419;
    --surface: #1a2332;
    --surface2: #243044;
    --text: #e8eef5;
    --muted: #8fa3bf;
    --accent: #3b82f6;
    --accent2: #22c55e;
    --danger: #ef4444;
    --warning: #f59e0b;
    --border: #2d3f58;
}

:root[data-contrast="high"] {
    --bg: #ffffff;
    --surface: #ffffff;
    --surface2: #f0f0f0;
    --text: #000000;
    --muted: #1a1a1a;
    --accent: #0000cc;
    --accent2: #006600;
    --danger: #cc0000;
    --warning: #664400;
    --border: #000000;
}

* { box-sizing: border-box; }
body {
    margin: 0;
    font-family: "Segoe UI", system-ui, sans-serif;
    background: var(--bg);
    color: var(--text);
    line-height: 1.5;
}

a { color: var(--accent); text-decoration: none; }
a:hover { text-decoration: underline; }

.app-shell { display: grid; grid-template-columns: 220px 1fr; min-height: 100vh; }
.sidebar {
    background: var(--surface);
    border-right: 1px solid var(--border);
    padding: 1rem;
    display: flex;
    flex-direction: column;
}
.brand { display: flex; gap: .75rem; align-items: center; margin-bottom: 1.5rem; position: relative; }
.brand-mark {
    width: 40px; height: 40px; border-radius: 8px;
    background: linear-gradient(135deg, var(--accent), #1d4ed8);
    display: grid; place-items: center; font-weight: 800;
    overflow: hidden; flex-shrink: 0;
}
.brand-mark--crest {
    background: #fff;
    border: 1px solid var(--border);
}
.brand-mark--logo {
    background: #000;
    border: 1px solid #111;
}
.brand-logo {
    width: 100%; height: 100%; object-fit: cover; display: block;
}
.club-icon-brand {
    width: 32px; height: 32px; object-fit: contain; display: block;
}
.brand-lockup {
    margin: 0 auto 1rem;
    max-width: 220px;
}
.brand-lockup-img {
    display: block;
    width: 100%;
    height: auto;
}
.brand-lockup-img--light,
.brand-lockup-img[hidden] { display: none !important; }
.brand-lockup--hero,
.brand-lockup--auth {
    margin: 0 auto 1.15rem;
}
.club-cell {
    display: inline-flex; align-items: center; gap: .5rem; flex-wrap: wrap;
}
.club-cell-name { line-height: 1.2; }
.club-type-badge {
    display: inline-block;
    padding: .1rem .4rem;
    border-radius: 4px;
    font-size: .62rem;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
    line-height: 1.3;
    vertical-align: middle;
    flex-shrink: 0;
}
.club-type-badge--manager {
    background: rgba(59, 130, 246, .18);
    color: #93c5fd;
    border: 1px solid rgba(59, 130, 246, .35);
}
.club-type-badge--ki {
    background: rgba(148, 163, 184, .12);
    color: #94a3b8;
    border: 1px solid rgba(148, 163, 184, .25);
}
.club-icon {
    width: 24px; height: 24px; object-fit: contain; flex-shrink: 0;
}
.club-icon--menu { width: 20px; height: 20px; }
.club-icon--report-ev { width: 18px; height: 18px; }
.brand-switch {
    border: none; color: inherit; cursor: pointer; font: inherit;
    transition: transform .15s ease, box-shadow .15s ease;
}
.brand-switch:hover { transform: scale(1.05); box-shadow: 0 0 0 2px rgba(59, 130, 246, .35); }
.club-switch-menu {
    position: absolute; top: calc(100% + .35rem); left: 0; z-index: 20;
    min-width: 170px; padding: .5rem;
    background: var(--surface2); border: 1px solid var(--border); border-radius: 8px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, .35);
}
.club-switch-label {
    display: block; padding: .25rem .5rem .5rem;
    font-size: .7rem; text-transform: uppercase; letter-spacing: .04em; color: var(--muted);
}
.club-switch-option {
    width: 100%; padding: .45rem .65rem; border-radius: 6px;
    border: 1px solid transparent; background: transparent;
    color: var(--text); font: inherit; text-align: left; cursor: pointer;
    display: flex; align-items: center; gap: .5rem;
}
.club-switch-option:hover { background: var(--surface); }
.club-switch-option.is-active {
    background: rgba(59, 130, 246, .18); border-color: rgba(59, 130, 246, .45); font-weight: 600;
}
[x-cloak] { display: none !important; }
.sidebar-nav { display: flex; flex-direction: column; gap: .25rem; }
.sidebar-nav-link {
    display: flex; align-items: center; gap: .6rem;
    padding: .5rem .75rem; border-radius: 6px; color: var(--text);
    text-decoration: none;
}
.sidebar-nav-link:hover { background: var(--surface2); text-decoration: none; }
.sidebar-nav-link.is-active {
    background: rgba(59, 130, 246, .15);
    border: 1px solid rgba(59, 130, 246, .35);
    font-weight: 600;
}
.nav-icon {
    width: 20px; height: 20px; object-fit: contain; flex-shrink: 0;
    opacity: .95;
}
.sidebar-nav-link.is-active .nav-icon {
    filter: brightness(1.15) saturate(1.1);
}
.nav-icon-fallback {
    width: 20px; height: 20px; flex-shrink: 0;
    display: grid; place-items: center;
    border-radius: 5px;
    background: var(--surface2);
    border: 1px solid var(--border);
    font-size: .68rem; font-weight: 700; color: var(--muted);
    line-height: 1;
}
.sidebar-nav-link.is-active .nav-icon-fallback {
    background: rgba(59, 130, 246, .25);
    border-color: rgba(59, 130, 246, .45);
    color: var(--text);
}
.sidebar-nav-link--logout {
    margin-top: .5rem;
    padding-top: .75rem;
    border-top: 1px solid var(--border);
    color: var(--muted);
}

.contrast-toggle {
    margin-top: .75rem;
    padding-top: .75rem;
    border-top: 1px solid var(--border);
}
.contrast-toggle-label {
    display: block;
    margin-bottom: .35rem;
    font-size: .7rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--muted);
}
.contrast-toggle .view-toggle {
    width: 100%;
}
.contrast-toggle .view-toggle-btn {
    flex: 1;
    text-align: center;
}
.contrast-toggle--auth {
    position: fixed;
    top: 1rem;
    right: 1rem;
    z-index: 10;
    margin: 0;
    padding: .65rem .75rem;
    border: 1px solid var(--border);
    border-radius: 8px;
    background: var(--surface);
    max-width: calc(100vw - 2rem);
}
.contrast-toggle--auth .view-toggle {
    width: auto;
}

.main { padding: 1rem 1.25rem; }
.page-banner {
    position: relative;
    height: 140px;
    margin: -1rem -1.25rem 1rem;
    border-radius: 0 0 12px 12px;
    overflow: hidden;
    background: var(--surface2) center / cover no-repeat;
    background-image: var(--banner-image);
    border-bottom: 1px solid var(--border);
}
.page-banner-overlay {
    position: absolute; inset: 0;
    display: flex; align-items: flex-end;
    padding: 1rem 1.25rem;
    background: linear-gradient(to top, rgba(15, 20, 25, .92) 0%, rgba(15, 20, 25, .35) 55%, transparent 100%);
}
.page-banner-title {
    margin: 0;
    font-size: 1.5rem;
    font-weight: 700;
    text-shadow: 0 2px 12px rgba(0, 0, 0, .45);
}
.topbar {
    position: sticky;
    top: 0;
    z-index: 40;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: .75rem 1rem;
    margin: -1rem -1.25rem 1rem;
    padding: .75rem 1.25rem;
    background: var(--surface);
    border-radius: 0;
    border: none;
    border-bottom: 1px solid var(--border);
    box-shadow: 0 4px 16px rgba(0, 0, 0, .18);
}
.topbar-meta {
    display: flex;
    flex-wrap: wrap;
    gap: .65rem 1rem;
    font-size: .88rem;
    color: var(--muted);
}
.topbar-treasury {
    margin-left: auto;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: .1rem;
    padding: .45rem .9rem;
    border-radius: 8px;
    border: 1px solid rgba(34, 197, 94, .4);
    background: rgba(34, 197, 94, .14);
    flex-shrink: 0;
}
.topbar-treasury-label {
    font-size: .68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--muted);
}
.topbar-treasury-amount {
    font-size: 1.35rem;
    font-weight: 800;
    line-height: 1.1;
    color: var(--accent2);
    font-variant-numeric: tabular-nums;
}
.topbar-treasury--debt {
    border-color: rgba(239, 68, 68, .45);
    background: rgba(239, 68, 68, .14);
}
.topbar-treasury--debt .topbar-treasury-amount {
    color: var(--danger);
}

.topbar-coins {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: .1rem;
    padding: .45rem .9rem;
    border-radius: 8px;
    border: 1px solid rgba(234, 179, 8, .45);
    background: rgba(234, 179, 8, .14);
    flex-shrink: 0;
    text-decoration: none;
    color: inherit;
}
.topbar-coins .topbar-treasury-amount {
    color: #ca8a04;
}

.shop-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 1rem;
}
.shop-card {
    border: 1px solid var(--border, #d4d4d4);
    border-radius: 10px;
    padding: 1rem 1.1rem;
    display: flex;
    flex-direction: column;
    gap: .45rem;
}
.shop-card h4 {
    margin: 0;
}
.shop-card--active {
    border-color: rgba(34, 197, 94, .5);
    background: rgba(34, 197, 94, .08);
}
.shop-card--soon {
    opacity: .92;
}
.shop-card--pack .btn-unzer {
    margin-top: .25rem;
}
.btn-unzer {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    background: #ff005a;
    border-color: #ff005a;
    color: #fff;
}
.btn-unzer:disabled {
    opacity: .72;
    color: #fff;
    background: #ff005a;
    border-color: #ff005a;
}
.unzer-mark--btn {
    padding: .15rem .4rem;
    border-radius: 5px;
}
.unzer-mark--btn img {
    height: 16px;
}
.shop-price {
    font-weight: 700;
    margin: 0;
}
.shop-price-eur {
    font-weight: 600;
    color: var(--muted);
}
.shop-card--merch {
    padding: .75rem .75rem 1rem;
}
.shop-merch-preview {
    aspect-ratio: 1492 / 1054;
    width: 100%;
    height: auto;
    border-radius: 8px;
    overflow: hidden;
    background: #2a3038;
    margin: 0 0 .15rem;
}
.shop-merch-photo {
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: center;
    display: block;
}
.shop-merch-mark {
    box-shadow: 0 6px 16px rgba(0, 0, 0, .28);
}
.shop-hint {
    margin: 0;
    font-size: .85rem;
}
.shop-plans {
    list-style: none;
    margin: .35rem 0 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: .4rem;
}
.shop-plan-form {
    display: grid;
    grid-template-columns: 1fr auto auto;
    align-items: center;
    gap: .55rem;
    margin: 0;
}
.shop-plan-label {
    font-size: .92rem;
}
.shop-plan-price {
    font-size: .92rem;
    white-space: nowrap;
}
.shop-card .btn:hover {
    text-decoration: none;
}
.shop-card--locked {
    opacity: .88;
}
.shop-card--locked .shop-merch-preview {
    filter: grayscale(.15);
}
.shop-checkout-preview {
    max-width: 42rem;
}
.shop-checkout-form {
    max-width: 32rem;
}
.shop-checkout-form.is-sending {
    pointer-events: none;
    opacity: .72;
}
.shop-checkout-form h4 {
    margin: 1.1rem 0 .35rem;
}
.shop-checkout-city {
    display: grid;
    grid-template-columns: 7rem 1fr;
    gap: .75rem;
}
.shop-checkout-form .checkbox-row {
    align-items: flex-start;
}
.shop-checkout-form .checkbox-row input {
    width: auto;
    margin-top: .25rem;
}
.shop-card--rename {
    max-width: 28rem;
}
.shop-rename-form {
    margin: .15rem 0 0;
}
.shop-rename-form .btn {
    margin-top: .15rem;
}
.rename-diff {
    list-style: none;
    margin: .35rem 0 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: .35rem;
}
.rename-diff li {
    margin: 0;
    font-size: .92rem;
}
.rename-diff span {
    display: block;
    font-size: .78rem;
    color: var(--muted);
}
.rename-changed strong,
.rename-changed {
    font-weight: 700;
}
.inbox-tabs {
    display: flex;
    gap: 1rem;
    margin: .75rem 0 0;
}
.inbox-tabs a {
    text-decoration: none;
    font-weight: 600;
}
.inbox-tabs a.is-active {
    text-decoration: underline;
}
.inbox-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.inbox-row {
    margin: 0;
    border-bottom: 1px solid var(--border, #d4d4d4);
}
.inbox-row a {
    display: grid;
    grid-template-columns: minmax(7rem, 12rem) 1fr auto;
    gap: .75rem;
    padding: .65rem 0;
    text-decoration: none;
    color: inherit;
    align-items: baseline;
}
.inbox-row--unread .inbox-subject {
    font-weight: 700;
}
.inbox-peer {
    font-size: .9rem;
}

.version-switch-form {
    margin: 0;
}

.version-switch {
    display: inline-flex;
    align-items: center;
    gap: .55rem;
    padding: .55rem 1rem;
    border: 2px solid transparent;
    border-radius: 999px;
    font: inherit;
    font-size: .92rem;
    font-weight: 700;
    line-height: 1;
    cursor: pointer;
    transition: transform .15s ease, box-shadow .15s ease, filter .15s ease;
    box-shadow: 0 2px 12px rgba(0, 0, 0, .25);
}

.version-switch:hover {
    transform: translateY(-1px);
    filter: brightness(1.08);
}

.version-switch:active {
    transform: translateY(0);
}

.version-switch--v1 {
    color: #fff;
    background: linear-gradient(135deg, #6366f1, #3b82f6);
    border-color: rgba(129, 140, 248, .55);
}

.version-switch--v2 {
    color: #fff;
    background: linear-gradient(135deg, #f59e0b, #d97706);
    border-color: rgba(251, 191, 36, .55);
}

.version-switch-icon {
    font-size: 1.05rem;
    opacity: .95;
}

.version-switch-label {
    display: inline-flex;
    align-items: baseline;
    gap: .35rem;
}

.version-switch-hint {
    font-size: .72rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .04em;
    opacity: .88;
}

.version-switch-form--topbar {
    flex-shrink: 0;
}

.version-switch-form--brand {
    margin-top: .55rem;
}

.version-switch--brand {
    width: 100%;
    justify-content: center;
    padding: .5rem .85rem;
    font-size: .82rem;
}

.version-switch-form--sidebar {
    margin-bottom: .15rem;
}

.version-switch--sidebar {
    width: 100%;
    justify-content: flex-start;
    border: 0;
    border-radius: 8px;
    background: transparent;
    color: var(--muted);
    box-shadow: none;
    padding: .55rem .65rem;
}

.version-switch--sidebar.version-switch--v1,
.version-switch--sidebar.version-switch--v2 {
    background: transparent;
    border-color: transparent;
    color: var(--muted);
}

.version-switch--sidebar:hover {
    transform: none;
    filter: none;
    color: var(--accent);
    background: rgba(59, 130, 246, .08);
}

@media (max-width: 640px) {
    .topbar-treasury,
    .topbar-coins {
        order: -1;
        width: 100%;
        align-items: center;
        margin-left: 0;
    }

    .version-switch-form--topbar {
        order: 0;
        width: 100%;
    }

    .version-switch--topbar {
        width: 100%;
        justify-content: center;
    }
}

.card {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 10px;
    padding: 1rem 1.25rem;
}
.card.inner { background: var(--surface2); }
.mt { margin-top: 1rem; }

/* —— Stadion —— */
.stadium-page { display: flex; flex-direction: column; gap: 1rem; }

.stadium-header {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 1rem;
    align-items: flex-start;
}
.stadium-lead { margin: .35rem 0 0; max-width: 52ch; font-size: .9rem; line-height: 1.5; }
.stadium-kpi-grid { flex: 1 1 320px; max-width: 100%; }
.stadium-kpi--ok { color: var(--accent2); }
.stadium-kpi--muted { color: var(--muted); }
.stadium-section-title { margin: 0 0 .35rem; font-size: 1rem; }

.stadium-visual {
    position: relative;
    margin: 0;
    border-radius: 10px;
    overflow: hidden;
    border: 1px solid var(--border);
    background: var(--surface2);
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .03);
}
.stadium-visual-img {
    display: block;
    width: 100%;
    height: auto;
    max-height: 300px;
    object-fit: cover;
    object-position: center 55%;
}
.stadium-visual-caption {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    padding: .65rem 1rem;
    font-size: .88rem;
    color: var(--muted);
    background: var(--surface);
    border-top: 1px solid var(--border);
}
.stadium-level-badge {
    flex-shrink: 0;
    padding: .2rem .55rem;
    border-radius: 999px;
    font-size: .75rem;
    font-weight: 600;
    color: #fff;
    background: var(--club-primary, var(--accent));
}

.stadium-fill { margin-top: .75rem; }
.stadium-fill-bar {
    height: 8px;
    border-radius: 999px;
    background: var(--surface2);
    border: 1px solid var(--border);
    overflow: hidden;
}
.stadium-fill-bar-inner {
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, var(--club-primary, var(--accent)), var(--accent2));
    transition: width .35s ease;
}
.stadium-fill-caption { margin: .45rem 0 0; font-size: .78rem; }

.stadium-bonus-bar {
    list-style: none;
    padding: .75rem 0 0;
    margin: .75rem 0 0;
    display: flex;
    flex-wrap: wrap;
    gap: .65rem 1.25rem;
    border-top: 1px solid var(--border);
    font-size: .82rem;
    color: var(--muted);
}
.stadium-bonus-bar strong { color: var(--text); }

.stadium-main-grid {
    display: grid;
    grid-template-columns: 1.15fr 1fr;
    gap: 1rem;
    align-items: start;
}
.ticket-prices-card--wide { grid-column: 1 / -1; }

/* —— Geländeplan —— */
.stadium-plan-card { overflow: hidden; }
.stadium-plan-sub { margin: 0 0 .85rem; font-size: .82rem; }
.stadium-plan {
    background:
        radial-gradient(ellipse 80% 60% at 50% 45%, rgba(34, 120, 60, .12), transparent 70%),
        linear-gradient(180deg, rgba(15, 23, 42, .95), rgba(8, 14, 28, .98));
    border: 1px solid rgba(148, 163, 184, .18);
    border-radius: 12px;
    padding: .85rem;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .04);
}
.stadium-plan-grid {
    display: grid;
    grid-template-columns: 1fr 1.65fr 1fr;
    grid-template-rows: auto auto auto auto;
    grid-template-areas:
        "fac-nw north fac-ne"
        "west pitch east"
        "fac-sw south fac-se"
        "infra-light fac-s infra-cert";
    gap: .45rem;
    min-height: 300px;
}
.stadium-plan-grid > .stadium-slot:nth-child(1) { grid-area: fac-nw; }
.stadium-plan-grid > .stadium-slot:nth-child(2) { grid-area: north; }
.stadium-plan-grid > .stadium-slot:nth-child(3) { grid-area: fac-ne; }
.stadium-plan-grid > .stadium-slot:nth-child(4) { grid-area: west; }
.stadium-plan-grid > .stadium-slot:nth-child(5) { grid-area: pitch; }
.stadium-plan-grid > .stadium-slot:nth-child(6) { grid-area: east; }
.stadium-plan-grid > .stadium-slot:nth-child(7) { grid-area: fac-sw; }
.stadium-plan-grid > .stadium-slot:nth-child(8) { grid-area: south; }
.stadium-plan-grid > .stadium-slot:nth-child(9) { grid-area: fac-se; }
.stadium-plan-grid > .stadium-slot:nth-child(10) { grid-area: infra-light; }
.stadium-plan-grid > .stadium-slot:nth-child(11) { grid-area: fac-s; }
.stadium-plan-grid > .stadium-slot:nth-child(12) { grid-area: infra-cert; }

.stadium-slot {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: .12rem;
    padding: .45rem .35rem;
    border: 1px solid rgba(148, 163, 184, .22);
    border-radius: 8px;
    background: rgba(15, 23, 42, .78);
    text-align: center;
    min-height: 54px;
    text-decoration: none;
    color: inherit;
    transition: border-color .15s, background .15s, transform .12s, box-shadow .15s;
}
a.stadium-slot:hover {
    border-color: var(--club-primary, var(--accent));
    background: rgba(30, 41, 59, .92);
    transform: translateY(-1px);
}
a.stadium-slot:focus-visible {
    outline: 2px solid var(--club-primary, var(--accent));
    outline-offset: 2px;
}
.stadium-slot--empty { visibility: hidden; min-height: 0; padding: 0; border: none; pointer-events: none; }
.stadium-slot--pitch {
    background:
        repeating-linear-gradient(
            90deg,
            rgba(34, 120, 60, .42) 0,
            rgba(34, 120, 60, .42) 12px,
            rgba(22, 101, 52, .42) 12px,
            rgba(22, 101, 52, .42) 24px
        );
    border-color: rgba(74, 222, 128, .35);
    min-height: 110px;
    pointer-events: none;
}
.stadium-pitch-label {
    font-size: .68rem;
    letter-spacing: .14em;
    color: rgba(187, 247, 208, .9);
    font-weight: 700;
}
.stadium-pitch-track {
    width: 72%;
    height: 52%;
    border: 2px solid rgba(255, 255, 255, .35);
    border-radius: 3px;
    margin-top: .2rem;
    box-shadow: inset 0 0 0 1px rgba(239, 68, 68, .35);
}
.stadium-slot-emoji { font-size: .95rem; line-height: 1; opacity: .9; }
.stadium-slot-name { font-size: .66rem; font-weight: 600; color: #e2e8f0; line-height: 1.2; }
.stadium-slot-state { font-size: .58rem; color: var(--muted); line-height: 1.2; }
.stadium-slot-dots { display: flex; gap: 3px; margin-top: .12rem; }
.stadium-slot-dots i {
    width: 5px; height: 5px; border-radius: 50%;
    background: rgba(100, 116, 139, .55);
}
.stadium-slot-dots i.is-on { background: var(--club-primary, var(--accent)); }
.stadium-slot-max {
    font-size: .52rem; font-weight: 700; letter-spacing: .08em;
    color: rgba(74, 222, 128, .92); margin-top: .08rem;
}

.stadium-slot--tribune.stadium-slot--lvl-0 {
    background: rgba(15, 23, 42, .5);
    border-style: dashed;
    opacity: .7;
    min-height: 40px;
}
.stadium-slot--tribune.stadium-slot--lvl-1 { min-height: 50px; border-color: rgba(148, 163, 184, .45); }
.stadium-slot--tribune.stadium-slot--lvl-2 {
    min-height: 62px;
    border-color: color-mix(in srgb, var(--club-primary, var(--accent)) 55%, transparent);
    background: rgba(30, 41, 59, .88);
}
.stadium-slot--tribune.stadium-slot--lvl-3 {
    min-height: 72px;
    border-color: var(--club-primary, var(--accent));
    background: color-mix(in srgb, var(--club-primary, var(--accent)) 18%, rgba(15, 23, 42, .9));
}

.stadium-slot--facility { min-height: 46px; background: rgba(30, 27, 15, .68); border-color: rgba(245, 158, 11, .22); }
.stadium-slot--facility.stadium-slot--lvl-0 { opacity: .5; border-style: dotted; }
.stadium-slot--facility.stadium-slot--lvl-1,
.stadium-slot--facility.stadium-slot--lvl-2 { border-color: rgba(245, 158, 11, .55); }

.stadium-slot--infra { min-height: 42px; background: rgba(15, 30, 45, .82); }
.stadium-slot--infra.stadium-slot--lvl-0 { opacity: .55; }
.stadium-slot--infra.stadium-slot--lvl-1 {
    border-color: rgba(96, 165, 250, .65);
    box-shadow: 0 0 14px rgba(59, 130, 246, .12);
}
.stadium-slot--upgradeable {
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--club-primary, var(--accent)) 35%, transparent);
}
.stadium-slot--upgradeable .stadium-slot-name::after {
    content: ' ↑';
    color: var(--club-primary, var(--accent));
    font-weight: 700;
}
.stadium-slot--complete { border-color: rgba(74, 222, 128, .35); }

/* —— Bauten-Karten —— */
.stadium-build-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 1rem;
    margin-top: .75rem;
}
.stadium-build-card {
    background: var(--surface2);
    border: 1px solid var(--border);
    border-radius: 10px;
    padding: 1rem;
    display: flex;
    flex-direction: column;
    gap: .65rem;
    scroll-margin-top: 5rem;
    transition: border-color .15s, box-shadow .15s;
}
.stadium-build-card:target {
    border-color: var(--club-primary, var(--accent));
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--club-primary, var(--accent)) 40%, transparent);
}
.stadium-build-card--tribune { border-left: 3px solid color-mix(in srgb, var(--club-primary, var(--accent)) 70%, transparent); }
.stadium-build-card--infra { border-left: 3px solid rgba(96, 165, 250, .55); }
.stadium-build-card--facility { border-left: 3px solid rgba(245, 158, 11, .55); }
.stadium-build-card--ready { border-color: rgba(34, 197, 94, .35); }
.stadium-build-card--max { opacity: .94; }
.stadium-build-card-top { display: flex; gap: .75rem; align-items: flex-start; }
.stadium-build-emoji { font-size: 1.5rem; line-height: 1; }
.stadium-build-card-meta h4 { margin: 0 0 .15rem; font-size: 1rem; }
.stadium-build-status { margin: 0; font-size: .8rem; color: var(--muted); line-height: 1.35; }
.stadium-build-effects {
    list-style: none;
    margin: 0;
    padding: .45rem .65rem;
    border-radius: 6px;
    background: rgba(15, 23, 42, .35);
    font-size: .78rem;
    color: var(--muted);
    display: flex;
    flex-wrap: wrap;
    gap: .35rem .65rem;
}
.stadium-build-effects li::before { content: '· '; color: var(--accent2); }
.stadium-build-next {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    justify-content: space-between;
    gap: .65rem;
    margin-top: auto;
    padding-top: .25rem;
}
.stadium-build-next-info { flex: 1 1 160px; }
.stadium-build-next-label {
    display: block;
    font-size: .68rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--muted);
    margin-bottom: .15rem;
}
.stadium-build-next-info strong { display: block; font-size: .92rem; }
.stadium-build-next-effects { margin: .25rem 0 0; font-size: .76rem; line-height: 1.4; }
.stadium-build-blocked { font-size: .8rem; }
.stadium-build-complete { margin: 0; font-size: .82rem; }

@media (max-width: 900px) {
    .stadium-main-grid { grid-template-columns: 1fr; }
}

.personal-header {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 1rem;
    align-items: flex-start;
}
.personal-overview-stats { margin: 0; }
.personal-bonus-bar {
    display: flex;
    flex-wrap: wrap;
    gap: .65rem 1.25rem;
    margin: .5rem 0 0;
    padding: 0;
    list-style: none;
    font-size: .85rem;
    color: var(--muted);
}
.personal-bonus-bar strong { color: var(--text); }
.personal-hint { margin: 0; font-size: .88rem; line-height: 1.55; max-width: 72ch; }

.staff-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 1rem;
    margin-top: .75rem;
}
.staff-card {
    background: var(--surface2);
    border: 1px solid var(--border);
    border-radius: 10px;
    padding: 1rem;
    display: flex;
    flex-direction: column;
    gap: .65rem;
}
.staff-card--vacant { opacity: .92; }
.staff-card--hired { border-color: rgba(34, 197, 94, .4); }
.staff-card--sport { border-left: 3px solid rgba(59, 130, 246, .55); }
.staff-card--media { border-left: 3px solid rgba(236, 72, 153, .45); }
.staff-card--betrieb { border-left: 3px solid rgba(234, 179, 8, .45); }
.staff-card-top { display: flex; gap: .75rem; align-items: flex-start; }
.staff-card-emoji { font-size: 1.6rem; line-height: 1; }
.staff-card-meta h4 { margin: 0 0 .2rem; font-size: 1rem; }
.staff-status-label { margin: 0; font-size: .8rem; color: var(--muted); line-height: 1.35; }
.staff-bonus-tag {
    display: inline-block;
    font-size: .75rem;
    font-weight: 600;
    padding: .2rem .5rem;
    border-radius: 999px;
    background: rgba(59, 130, 246, .12);
    color: var(--text);
    align-self: flex-start;
}
.staff-card-stats { margin: 0; }
.staff-card-action { margin-top: auto; padding-top: .25rem; }
.staff-hired-badge {
    display: inline-block;
    font-size: .82rem;
    font-weight: 600;
    color: #22c55e;
}
.staff-blocked { font-size: .8rem; }

.stadium-payment-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: .75rem;
    margin: 1rem 0;
}
.stadium-payment-option {
    display: flex;
    gap: .75rem;
    align-items: flex-start;
    padding: .9rem 1rem;
    border: 1px solid var(--border, #2a3340);
    border-radius: 10px;
}
.stadium-payment-option.is-selected {
    border-color: #1ecad3;
    box-shadow: inset 0 0 0 1px #1ecad3;
}
.stadium-payment-option--unzer.is-selected {
    border-color: #ff005a;
    box-shadow: inset 0 0 0 1px #ff005a;
}
.stadium-payment-option-body {
    display: flex;
    flex-direction: column;
    gap: .25rem;
}
.stadium-payment-option-body em {
    font-style: normal;
    font-weight: 600;
    font-size: .85rem;
}

.unzer-mark {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: #fff;
    border-radius: 8px;
    padding: .35rem .7rem;
    line-height: 0;
}
.unzer-mark img {
    display: block;
    width: auto;
    height: 28px;
    object-fit: contain;
}
.unzer-mark--kasse img { height: 32px; }
.unzer-mark--shop img { height: 34px; }

.shop-unzer-head {
    display: flex;
    gap: 1rem;
    align-items: flex-start;
}
.shop-unzer-head h3 { margin: 0 0 .25rem; }
.shop-unzer-head p { margin: 0; }
.shop-unzer-methods { margin: .65rem 0 0; }
@media (max-width: 640px) {
    .shop-unzer-head {
        flex-direction: column;
    }
}

.ticket-prices-card { overflow: hidden; }
.ticket-prices-header { margin-bottom: .75rem; }
.ticket-prices-header h3 { margin: 0 0 .25rem; }
.ticket-prices-lead { margin: 0; font-size: .82rem; }
.ticket-prices-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: 1rem;
    margin-bottom: 1rem;
}
.ticket-preview {
    margin: .5rem 0 1rem;
    padding: .85rem 1rem;
    border-radius: 8px;
    background: var(--surface2);
    border: 1px solid var(--border);
}
.ticket-preview--neutral { border-style: dashed; }
.ticket-preview-title {
    margin: 0 0 .65rem;
    font-size: .92rem;
    display: flex;
    align-items: center;
    gap: .5rem;
}
.ticket-preview-badge {
    font-size: .65rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    padding: .15rem .45rem;
    border-radius: 999px;
    background: rgba(245, 158, 11, .18);
    color: var(--warning);
    border: 1px solid rgba(245, 158, 11, .35);
}
.ticket-preview-stats {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: .55rem;
}
.ticket-preview-stats li {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    align-items: baseline;
    font-size: .88rem;
}
.ticket-preview-stats span { color: var(--muted); }
.ticket-preview-stats strong { text-align: right; }
.ticket-preview-delta {
    font-style: normal;
    font-weight: 600;
    margin-left: .25rem;
}
.ticket-preview-delta.is-up { color: var(--accent2); }
.ticket-preview-delta.is-down { color: var(--danger); }
.ticket-preview-delta.is-neutral { color: var(--muted); }
.ticket-preview-note { margin: .65rem 0 0; font-size: .78rem; line-height: 1.45; }

.grid-2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1rem; }

h1, h2, h3 { margin-top: 0; }
.muted { color: var(--muted); }
.big { font-size: 1.25rem; font-weight: 600; }
.hint { font-size: .85rem; margin-top: 1rem; }

.btn {
    display: inline-block; padding: .5rem 1rem; border-radius: 6px;
    border: 1px solid var(--border); background: var(--surface2);
    color: var(--text); cursor: pointer; font: inherit;
}
.btn-primary { background: var(--accent); border-color: #2563eb; color: #fff; }
.btn-danger { background: #991b1b; border-color: #7f1d1d; color: #fff; }
.btn-danger:hover { background: #b91c1c; }
.btn-block { display: block; width: 100%; text-align: center; }
.btn-small { padding: .35rem .65rem; font-size: .85rem; }

.form label { display: block; margin-bottom: .75rem; }
.form input, .form select, .form textarea {
    width: 100%; margin-top: .25rem; padding: .5rem;
    border-radius: 6px; border: 1px solid var(--border);
    background: var(--bg); color: var(--text);
}
.form-inline { display: flex; gap: .5rem; align-items: end; flex-wrap: wrap; }
.form-inline input { width: auto; min-width: 100px; }

.data-table { width: 100%; border-collapse: collapse; font-size: .9rem; }
.data-table th, .data-table td { padding: .5rem; border-bottom: 1px solid var(--border); text-align: left; }
.data-table tr.highlight { background: rgba(59, 130, 246, .12); }

.stats { list-style: none; padding: 0; margin: 0; }
.stats li { display: flex; justify-content: space-between; padding: .35rem 0; border-bottom: 1px solid var(--border); }

.dash-checklist {
    list-style: none;
    padding: 0;
    margin: .85rem 0 0;
    display: grid;
    gap: .45rem;
}

.dash-checklist li {
    display: flex;
    align-items: baseline;
    gap: .5rem;
    font-size: .9rem;
    line-height: 1.35;
}

.dash-checklist li.is-done {
    color: var(--text);
}

.dash-checklist li.is-pending {
    color: var(--muted);
}

.dash-checklist li.is-done .dash-check-icon {
    color: #86efac;
}

.dash-checklist li.is-pending .dash-check-icon {
    color: var(--muted);
}

.dash-check-icon {
    flex-shrink: 0;
    width: 1rem;
    text-align: center;
    font-weight: 700;
}

.alert { padding: .75rem 1rem; border-radius: 6px; margin-bottom: 1rem; }
.alert-error { background: rgba(239,68,68,.15); border: 1px solid var(--danger); }
.alert-success { background: rgba(34,197,94,.15); border: 1px solid var(--accent2); }
.alert-warning { background: rgba(245,158,11,.15); border: 1px solid var(--warning); }

.auth-main { min-height: 100vh; display: grid; place-items: center; padding: 1rem; }
.auth-card { max-width: 400px; width: 100%; }

.lineup-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: .75rem; }

/* —— Aufstellung —— */
.lineup-page h2 { margin-bottom: .25rem; }

.lineup-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid var(--border);
}

.lineup-toolbar-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: end;
    gap: .5rem;
}

.lineup-formation-label {
    display: grid;
    gap: .35rem;
    font-size: .85rem;
    margin: 0;
}

.lineup-formation-picker {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem;
}

.lineup-formation-saved {
    color: var(--accent, #60a5fa);
}

.lineup-formation-btn.is-active {
    background: var(--accent, #60a5fa);
    border-color: var(--accent, #60a5fa);
    color: #fff;
}

.lineup-formation-label select {
    min-width: 110px;
    padding: .45rem .6rem;
    border-radius: 6px;
    border: 1px solid var(--border);
    background: var(--bg);
    color: var(--text);
    font: inherit;
}

.lineup-save-inline {
    display: inline-flex;
    margin: 0;
}

.lineup-board-layout {
    display: grid;
    grid-template-columns: minmax(148px, 168px) auto minmax(300px, 1fr);
    gap: .75rem;
    align-items: start;
}

.lineup-sidebar {
    display: grid;
    gap: .5rem;
    align-content: start;
    padding: .5rem .55rem;
    border: 1px solid var(--border);
    border-radius: 10px;
    background: var(--surface2);
    height: min(68vh, 720px);
    max-height: min(68vh, 720px);
    overflow: hidden;
}

.lineup-sidebar--bench {
    grid-template-rows: auto minmax(0, 1fr);
}

.lineup-sidebar--squad {
    min-width: 0;
    grid-template-rows: auto auto minmax(0, 1fr);
}

.lineup-sidebar--bench .lineup-bench-slots--vertical,
.lineup-sidebar--squad .lineup-squad-tiles {
    overflow-y: auto;
    min-height: 0;
    padding-right: .2rem;
    overscroll-behavior: contain;
}

.lineup-center {
    min-width: 0;
    width: fit-content;
    max-width: 100%;
}

.lineup-layout {
    display: grid;
    gap: 1rem;
    align-items: start;
}

.lineup-board-wrap {
    display: grid;
    gap: 1rem;
    min-width: 0;
}

.lineup-pitch {
    position: relative;
    aspect-ratio: 68 / 105;
    height: min(68vh, 720px);
    width: min(calc(min(68vh, 720px) * 68 / 105), 100%);
    max-height: min(68vh, 720px);
    margin: 0;
    border-radius: 12px;
    overflow: hidden;
    border: 2px solid rgba(255, 255, 255, .12);
    background-color: #1a5c32;
    background-image:
        var(--lineup-pitch-image, none),
        repeating-linear-gradient(
            90deg,
            rgba(255, 255, 255, .03) 0,
            rgba(255, 255, 255, .03) 8%,
            transparent 8%,
            transparent 16%
        ),
        linear-gradient(180deg, #1f6b3a 0%, #1a5c32 45%, #174f2d 100%);
    background-size: cover, auto, auto;
    background-position: center;
    box-shadow: inset 0 0 80px rgba(0, 0, 0, .25);
}

.lineup-pitch-markings {
    position: absolute;
    inset: 0;
    pointer-events: none;
}

.lineup-pitch-box {
    position: absolute;
    left: 22%;
    right: 22%;
    height: 16%;
    border: 2px solid rgba(255, 255, 255, .35);
}

.lineup-pitch-box--top { top: 0; border-top: none; }
.lineup-pitch-box--bottom { bottom: 0; border-bottom: none; }

.lineup-pitch-circle {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 18%;
    aspect-ratio: 1;
    border: 2px solid rgba(255, 255, 255, .35);
    border-radius: 50%;
    transform: translate(-50%, -50%);
}

.lineup-pitch-line--half {
    position: absolute;
    left: 0;
    right: 0;
    top: 50%;
    height: 0;
    border-top: 2px solid rgba(255, 255, 255, .35);
}

.lineup-slot {
    position: absolute;
    transform: translate(-50%, -50%);
    display: grid;
    place-items: center;
    z-index: 2;
}

.lineup-slot--pitch {
    width: 78px;
    height: 102px;
}

.lineup-slot--bench {
    position: relative;
    transform: none;
    width: 100%;
    height: 44px;
    min-width: 0;
    min-height: 44px;
}

.lineup-slot-pos {
    position: absolute;
    top: -1.1rem;
    left: 50%;
    transform: translateX(-50%);
    font-size: .62rem;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, .75);
    text-shadow: 0 1px 4px rgba(0, 0, 0, .5);
    pointer-events: none;
}

.lineup-slot--bench .lineup-slot-pos { display: none; }

.lineup-slot.is-dragover {
    filter: drop-shadow(0 0 8px rgba(59, 130, 246, .8));
}

.lineup-slot.is-wrong-pos .lineup-player-chip {
    box-shadow: 0 0 0 2px var(--warning);
}

.lineup-slot-empty {
    display: grid;
    place-items: center;
    width: 78px;
    height: 88px;
    border: 2px dashed rgba(255, 255, 255, .28);
    border-radius: 10px;
    color: rgba(255, 255, 255, .45);
    font-size: 1.25rem;
    background: rgba(0, 0, 0, .15);
}

.lineup-slot--bench .lineup-slot-empty {
    width: 100%;
    height: 100%;
    min-height: 44px;
    font-size: 1rem;
}

.lineup-player-chip {
    position: relative;
    box-sizing: border-box;
    border-radius: 8px;
    border: 1px solid rgba(255, 255, 255, .2);
    background: rgba(15, 20, 25, .88);
    backdrop-filter: blur(4px);
    cursor: grab;
    user-select: none;
    overflow: visible;
}

.lineup-player-chip:active { cursor: grabbing; }

.lineup-photo-badge-wrap {
    position: relative;
    display: inline-block;
    flex-shrink: 0;
}

.lineup-photo-badge-wrap .lineup-status-badge {
    top: -2px;
    right: -2px;
    z-index: 4;
}

.lineup-photo-badge-wrap--tile .lineup-status-badge {
    top: -3px;
    right: -3px;
}

.lineup-player-chip--pitch {
    width: 78px;
    padding: .18rem;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: .12rem;
}

.lineup-player-chip.is-unavailable {
    opacity: .45;
    filter: grayscale(1);
}

.lineup-player-chip--bench {
    display: grid;
    grid-template-columns: 28px minmax(0, 1fr) 14px;
    align-items: center;
    gap: .3rem;
    width: 100%;
    height: 100%;
    min-height: 44px;
    padding: .22rem .3rem;
}

.lineup-player-photo {
    position: relative;
    flex-shrink: 0;
    border-radius: 5px;
    overflow: hidden;
    background: #111;
}

.lineup-status-badge {
    position: absolute;
    top: 1px;
    right: 1px;
    z-index: 2;
    pointer-events: none;
    box-shadow: 0 1px 2px rgba(0, 0, 0, .55);
}

.lineup-status-badge--yellow,
.lineup-status-badge--red {
    width: 11px;
    height: 14px;
    border-radius: 1px;
    border: 1px solid rgba(0, 0, 0, .35);
}

.lineup-photo-badge-wrap--tile .lineup-status-badge--yellow,
.lineup-photo-badge-wrap--tile .lineup-status-badge--red {
    width: 10px;
    height: 12px;
}

.lineup-photo-badge-wrap--tile .lineup-status-badge--injury,
.lineup-photo-badge-wrap--tile .lineup-status-badge--ban {
    width: 11px;
    height: 11px;
}

.lineup-status-badge--yellow {
    background: linear-gradient(145deg, #fef08a 0%, #eab308 100%);
}

.lineup-status-badge--red {
    background: linear-gradient(145deg, #fca5a5 0%, #dc2626 100%);
}

.lineup-status-badge--injury {
    width: 12px;
    height: 12px;
    border-radius: 50%;
    background: #ea580c;
    border: 1px solid rgba(0, 0, 0, .35);
}

.lineup-status-badge--injury::before,
.lineup-status-badge--injury::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    background: #fff;
    border-radius: 1px;
}

.lineup-status-badge--injury::before {
    width: 1.5px;
    height: 6px;
    transform: translate(-50%, -50%);
}

.lineup-status-badge--injury::after {
    width: 6px;
    height: 1.5px;
    transform: translate(-50%, -50%);
}

.lineup-status-badge--ban {
    width: 12px;
    height: 12px;
    border-radius: 50%;
    background: #dc2626;
    border: 1px solid rgba(0, 0, 0, .35);
}

.lineup-status-badge--ban::before {
    content: '×';
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 10px;
    font-weight: 800;
    line-height: 1;
    color: #fff;
}

.player-photo .lineup-status-badge--yellow,
.player-photo .lineup-status-badge--red {
    width: 8px;
    height: 10px;
}

.player-photo .lineup-status-badge--injury,
.player-photo .lineup-status-badge--ban {
    width: 10px;
    height: 10px;
}

.player-photo .lineup-status-badge--injury::before {
    height: 5px;
}

.player-photo .lineup-status-badge--injury::after {
    width: 5px;
}

.lineup-player-photo--pitch {
    width: 58px;
    height: 70px;
    margin: 0 auto;
}

.lineup-player-photo--sm {
    width: 28px;
    height: 34px;
    min-width: 28px;
    min-height: 34px;
    margin: 0;
}

.lineup-player-photo--tile {
    width: 24px;
    height: 30px;
    min-width: 24px;
    min-height: 30px;
    margin: 0 auto;
}

.lineup-player-photo.is-fallback {
    background: linear-gradient(160deg, #1a2332 0%, #0f1419 100%);
}

.lineup-player-photo img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: top center;
}

.lineup-player-photo.is-fallback img { display: none; }

.lineup-player-text {
    min-width: 0;
    width: 100%;
}

.lineup-player-name {
    display: block;
    font-size: .62rem;
    font-weight: 700;
    line-height: 1.15;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.lineup-player-meta {
    display: block;
    font-size: .56rem;
    line-height: 1.15;
    color: var(--muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.lineup-player-malus {
    display: block;
    font-size: .54rem;
    font-weight: 700;
    color: #fca5a5;
    line-height: 1.1;
}

.lineup-player-chip--bench .lineup-player-text {
    text-align: left;
}

.lineup-player-chip--pitch .lineup-player-text {
    text-align: center;
}

.lineup-player-chip--pitch .lineup-player-meta {
    white-space: normal;
    line-height: 1.2;
    font-size: .54rem;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.lineup-player-chip--bench .lineup-player-name {
    font-size: .68rem;
}

.lineup-player-chip--bench .lineup-player-meta {
    font-size: .58rem;
}

.lineup-player-clear {
    position: absolute;
    top: .1rem;
    right: .1rem;
    width: 1rem;
    height: 1rem;
    padding: 0;
    border: none;
    border-radius: 4px;
    background: rgba(0, 0, 0, .45);
    color: #fff;
    font-size: .75rem;
    line-height: 1;
    cursor: pointer;
    opacity: 0;
    transition: opacity .12s ease;
}

.lineup-player-chip:hover .lineup-player-clear { opacity: 1; }

.lineup-player-chip--bench .lineup-player-clear {
    position: static;
    opacity: .55;
}

.lineup-bench-row {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    align-items: stretch;
}

.lineup-bench {
    flex: 1;
    min-width: 0;
    padding: .85rem;
    border: 1px solid var(--border);
    border-radius: 10px;
    background: var(--surface2);
}

.lineup-bench-title {
    margin: 0 0 .65rem;
    font-size: .82rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--muted);
}

.lineup-bench-slots {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: .5rem;
}

.lineup-bench-slots--vertical {
    display: flex;
    flex-direction: column;
    gap: .5rem;
}

.lineup-save-bar {
    display: grid;
    gap: .65rem;
    margin-top: .15rem;
    padding-top: .85rem;
    border-top: 1px solid var(--border);
}

.lineup-save-summary {
    display: grid;
    gap: .2rem;
    font-size: .82rem;
}

.lineup-save-strength {
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.lineup-top-split {
    display: grid;
    grid-template-columns: 1fr;
    gap: .85rem;
    margin-bottom: 1rem;
}
.lineup-top-split.has-coach {
    grid-template-columns: 1fr 1fr;
    align-items: stretch;
}

.lineup-strength-bar {
    display: grid;
    gap: .65rem;
    margin-bottom: 0;
    padding: .85rem 1rem;
    border-radius: 10px;
    border: 1px solid var(--border);
    background: rgba(255, 255, 255, .03);
}

.lineup-coach-panel {
    display: grid;
    align-content: start;
    gap: .45rem;
    padding: .85rem 1rem;
    border-radius: 10px;
    border: 1px solid rgba(234, 179, 8, .45);
    background: rgba(234, 179, 8, .08);
}
.lineup-coach-panel.is-on {
    border-color: rgba(234, 179, 8, .65);
    background: rgba(234, 179, 8, .14);
}
.lineup-coach-panel.is-off {
    border-style: dashed;
}
.lineup-coach-head {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: .4rem .75rem;
}
.lineup-coach-status {
    font-size: .78rem;
    font-weight: 600;
    color: #ca8a04;
}
.lineup-coach-copy { margin: 0; line-height: 1.4; }

.lineup-strength-main {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: .75rem 1.25rem;
}

.lineup-strength-main .lineup-save-summary {
    margin-left: auto;
    font-size: .82rem;
}

.lineup-strength-label {
    font-size: .78rem;
    font-weight: 600;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--muted);
}

.lineup-strength-value {
    font-size: 1.5rem;
    font-variant-numeric: tabular-nums;
}

.lineup-strength--high .lineup-strength-value { color: #22c55e; }
.lineup-strength--mid .lineup-strength-value { color: #eab308; }
.lineup-strength--low .lineup-strength-value { color: #ef4444; }

.lineup-strength-meter {
    height: .4rem;
    border-radius: 999px;
    background: var(--border);
    overflow: hidden;
}

.lineup-strength-meter-fill {
    display: block;
    height: 100%;
    border-radius: 999px;
    transition: width .25s ease;
}

.lineup-strength--high .lineup-strength-meter-fill { background: #22c55e; }
.lineup-strength--mid .lineup-strength-meter-fill { background: #eab308; }
.lineup-strength--low .lineup-strength-meter-fill { background: #ef4444; }

.lineup-strength-details {
    display: flex;
    flex-wrap: wrap;
    gap: .75rem 1.25rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.lineup-strength-details li {
    display: grid;
    gap: .1rem;
    font-size: .78rem;
}

.lineup-strength-details span {
    color: var(--muted);
}

.lineup-strength-details strong {
    font-variant-numeric: tabular-nums;
}

.lineup-strength-warn { color: #ef4444; }

.lineup-squad-tiles-title,
.lineup-squad-list-head h3 {
    margin: 0;
    font-size: .82rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--muted);
}

.lineup-squad-tiles-hint {
    margin: -.35rem 0 .15rem;
    font-size: .72rem;
}

.lineup-squad-tiles {
    display: grid;
    grid-template-columns: repeat(3, minmax(92px, 1fr));
    gap: .35rem;
    align-content: start;
}

.lineup-squad-tile-group {
    display: contents;
}

.lineup-squad-tile-group-title {
    grid-column: 1 / -1;
    margin: .35rem 0 .15rem;
    font-size: .66rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--muted);
}

.lineup-squad-tile-group:first-child .lineup-squad-tile-group-title {
    margin-top: 0;
}

.lineup-squad-tile {
    display: grid;
    gap: .15rem;
    align-content: start;
    justify-items: center;
    min-height: 66px;
    padding: .3rem .22rem .38rem;
    border-radius: 6px;
    border: 1px solid var(--border);
    background: var(--surface);
    cursor: grab;
    user-select: none;
    text-align: center;
    transition: opacity .12s ease, border-color .12s ease;
}

.lineup-squad-tile:active { cursor: grabbing; }

.lineup-squad-tile.is-assigned {
    opacity: .45;
    border-style: dashed;
}

.lineup-squad-tile.is-low-fitness {
    border-color: rgba(245, 158, 11, .45);
}

/* Gesperrt/Verletzt: nicht einsetzbar, deshalb nicht ziehbar und deutlich abgesetzt. */
.lineup-squad-tile.is-unavailable {
    opacity: .5;
    cursor: not-allowed;
    border-color: rgba(239, 68, 68, .5);
    border-style: dashed;
    background: rgba(239, 68, 68, .06);
    filter: grayscale(.7);
}

.lineup-squad-tile.is-unavailable:active { cursor: not-allowed; }

.lineup-squad-tile-ban {
    margin: 0;
    width: 100%;
    font-size: .58rem;
    line-height: 1.35;
    font-weight: 700;
    color: var(--danger);
    text-align: center;
}

.lineup-squad-tile-meta {
    display: grid;
    gap: .1rem;
    width: 100%;
    min-width: 0;
    font-size: .52rem;
    line-height: 1.25;
    padding-bottom: .05rem;
}

.lineup-squad-tile-meta strong {
    font-size: .58rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.lineup-squad-tile-stats {
    margin: 0;
    width: 100%;
    font-size: .58rem;
    line-height: 1.35;
    color: var(--muted);
    text-align: center;
}

.lineup-squad-list-section {
    margin-top: 1.5rem;
    padding-top: 1.5rem;
    border-top: 1px solid var(--border);
}

.lineup-squad-list-head {
    margin-bottom: 1rem;
}

.lineup-squad-list-head p {
    margin: .2rem 0 0;
    font-size: .78rem;
}

.lineup-squad-row {
    cursor: grab;
    user-select: none;
}

.lineup-squad-row:active { cursor: grabbing; }

.lineup-squad-row.is-assigned {
    opacity: .45;
}

.lineup-squad-row.is-low-fitness td,
.lineup-squad-row.is-low-fitness th {
    background: rgba(245, 158, 11, .06);
}

.lineup-squad-row.is-unavailable {
    cursor: not-allowed;
    opacity: .55;
}

.lineup-squad-row.is-unavailable td,
.lineup-squad-row.is-unavailable th {
    background: rgba(239, 68, 68, .07);
}

.lineup-squad-panel {
    padding: .85rem;
    border: 1px solid var(--border);
    border-radius: 10px;
    background: var(--surface2);
}

.lineup-squad-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: .75rem;
}

.lineup-squad-head h3 { margin: 0 0 .15rem; font-size: .95rem; }
.lineup-squad-head p { margin: 0 0 .75rem; font-size: .78rem; }

.lineup-squad-group + .lineup-squad-group {
    margin-top: 0;
    padding-top: 0;
    border-top: none;
}

.lineup-squad-group-title {
    margin: 0 0 .45rem;
    font-size: .72rem;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--muted);
}

.lineup-squad-list { display: grid; gap: .35rem; }

.lineup-squad-item {
    display: grid;
    grid-template-columns: 36px 1fr;
    gap: .5rem;
    align-items: center;
    padding: .4rem .45rem;
    border-radius: 8px;
    border: 1px solid var(--border);
    background: var(--surface);
    cursor: grab;
    user-select: none;
    transition: opacity .12s ease, border-color .12s ease;
}

.lineup-squad-item:active { cursor: grabbing; }

.lineup-squad-item.is-assigned {
    opacity: .45;
    border-style: dashed;
}

.lineup-squad-item.is-low-fitness {
    border-color: rgba(245, 158, 11, .45);
}

.lineup-squad-item-meta {
    display: grid;
    gap: .1rem;
    min-width: 0;
    font-size: .72rem;
}

.lineup-squad-item-meta strong {
    font-size: .78rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

@media (max-width: 1024px) {
    .lineup-board-layout {
        grid-template-columns: minmax(136px, 152px) auto minmax(260px, 1fr);
    }

    .lineup-sidebar--squad {
        grid-column: 1 / -1;
        height: auto;
        max-height: min(50vh, 420px);
        grid-template-rows: auto auto minmax(0, 1fr);
    }

    .lineup-sidebar--bench {
        height: min(58vh, 560px);
        max-height: min(58vh, 560px);
    }

    .lineup-bench-slots--vertical {
        display: grid;
        grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    }

    .lineup-squad-tiles {
        grid-template-columns: repeat(4, minmax(88px, 1fr));
    }

    .lineup-toolbar-actions { width: 100%; }
    .lineup-strength-main .lineup-save-summary { margin-left: 0; width: 100%; }
    .lineup-top-split.has-coach { grid-template-columns: 1fr; }
}

@media (max-width: 640px) {
    .lineup-board-layout {
        grid-template-columns: 1fr;
    }

    .lineup-sidebar--bench,
    .lineup-sidebar--squad {
        height: auto;
        max-height: none;
    }

    .lineup-sidebar--squad {
        grid-column: auto;
    }

    .lineup-squad-tiles {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }

    .lineup-pitch {
        height: auto;
        width: 100%;
        max-height: 58vh;
    }
    .lineup-slot--pitch { width: 68px; height: 92px; }
    .lineup-player-chip--pitch { width: 68px; }
    .lineup-player-photo--pitch { width: 52px; height: 64px; }
    .lineup-slot-empty { width: 68px; height: 78px; }
    .lineup-bench-slots--vertical { grid-template-columns: 1fr; }
    .lineup-strength-details { gap: .5rem .75rem; }
}

.fan-segments { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid var(--border); }

.fan-segments-title {
    margin: 0 0 .65rem;
    font-size: .82rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--muted);
}

.fan-segments-list em {
    font-style: normal;
    font-size: .78em;
    color: var(--muted);
    font-weight: 400;
}

.fan-stats-compact .fan-segments { margin-top: .75rem; padding-top: .75rem; }

.stats.compact li { padding: .25rem 0; font-size: .85rem; }

.slider-grid { display: grid; gap: 1rem; }
.preset-row { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: 1rem; }
.news-list { list-style: none; padding: 0; }
.news-list li { padding: .5rem 0; border-bottom: 1px solid var(--border); }
.news-list span { display: block; color: var(--muted); font-size: .9rem; }

@media (max-width: 768px) {
    .app-shell { grid-template-columns: 1fr; }
    .sidebar { border-right: none; border-bottom: 1px solid var(--border); }
    .sidebar-nav { flex-direction: row; flex-wrap: wrap; }
    .contrast-toggle--sidebar { flex: 1 1 100%; }
    .page-banner { height: 110px; margin-top: 0; }
    .page-banner-title { font-size: 1.2rem; }
}

.squad-page h2 { margin-bottom: 0; }

.squad-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: .75rem 1rem;
    margin-bottom: 1.25rem;
}

.view-toggle {
    display: inline-flex;
    padding: 3px;
    border-radius: 8px;
    border: 1px solid var(--border);
    background: var(--bg);
}

.view-toggle-btn {
    border: none;
    background: transparent;
    color: var(--muted);
    font: inherit;
    font-size: .85rem;
    padding: .35rem .75rem;
    border-radius: 6px;
    cursor: pointer;
}

.view-toggle-btn.is-active {
    background: var(--surface2);
    color: var(--text);
    font-weight: 600;
}

.squad-view { display: block; }
.squad-page:not(.squad-mode-list) .squad-view-list { display: none; }
.squad-page.squad-mode-list .squad-view-grid { display: none; }

.squad-group + .squad-group {
    margin-top: 1.25rem;
    padding-top: 1.25rem;
    border-top: 1px solid var(--border);
}

.squad-group-head {
    display: flex;
    align-items: center;
    gap: .5rem;
    margin-bottom: .75rem;
    padding-bottom: .5rem;
    border-bottom: 1px solid var(--border);
    font-size: .78rem;
    font-weight: 600;
    letter-spacing: .05em;
    text-transform: uppercase;
    color: var(--muted);
}

.squad-group-count {
    display: inline-grid;
    place-items: center;
    min-width: 1.35rem;
    height: 1.35rem;
    padding: 0 .35rem;
    border-radius: 999px;
    background: var(--surface2);
    font-size: .72rem;
    color: var(--text);
}

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

.player-card {
    display: grid;
    grid-template-columns: 88px 1fr;
    gap: .75rem;
    padding: .75rem;
    border: 1px solid var(--border);
    border-radius: 10px;
    background: rgba(255,255,255,.02);
}

.player-photo {
    position: relative;
    flex-shrink: 0;
    width: 88px;
    height: 110px;
    border-radius: 8px;
    overflow: hidden;
    background: #111;
}

.player-photo--sm {
    width: 36px;
    height: 44px;
    border-radius: 5px;
}

.player-photo.is-fallback {
    background: linear-gradient(160deg, #1a2332 0%, #0f1419 100%);
}

.player-photo img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: top center;
}

.player-photo.is-fallback img {
    display: none;
}

.player-meta { display: grid; gap: .2rem; font-size: .85rem; }
.player-meta strong { font-size: .95rem; }

.squad-list-wrap {
    overflow-x: auto;
    border: 1px solid var(--border);
    border-radius: 8px;
}

.squad-list {
    width: 100%;
    border-collapse: collapse;
    font-size: .82rem;
    white-space: nowrap;
}

.squad-list thead th {
    position: sticky;
    top: 0;
    z-index: 1;
    padding: .55rem .5rem;
    text-align: left;
    font-size: .72rem;
    font-weight: 600;
    letter-spacing: .03em;
    text-transform: uppercase;
    color: var(--muted);
    background: var(--surface2);
    border-bottom: 1px solid var(--border);
}

.squad-list th abbr,
.data-table th abbr {
    text-decoration: none;
    cursor: help;
    border-bottom: 1px dotted currentColor;
}

.squad-list tbody td,
.squad-list tbody th {
    padding: .45rem .5rem;
    border-bottom: 1px solid rgba(45, 63, 88, .55);
    vertical-align: middle;
    font-weight: 400;
}

.squad-list tbody tr:last-child td,
.squad-list tbody tr:last-child th {
    border-bottom: none;
}

.squad-list tbody tr:hover {
    background: rgba(255, 255, 255, .02);
}

.squad-list-photo {
    width: 44px;
    padding-right: 0;
}

.squad-list-name {
    text-align: left;
    font-weight: 600;
    color: var(--text);
    min-width: 9rem;
    white-space: normal;
}

/* —— Trainingskalender (Outlook-Stil) —— */
.training-page h2 { margin-bottom: .25rem; }

.cal-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid var(--border);
}

.cal-range { margin: .25rem 0 0; font-size: .88rem; }

.cal-match-chip {
    display: grid;
    gap: .15rem;
    padding: .65rem .85rem;
    border-radius: 8px;
    border: 1px solid rgba(239, 68, 68, .35);
    background: rgba(239, 68, 68, .08);
    font-size: .82rem;
    min-width: 220px;
}

.cal-match-label {
    font-size: .68rem;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: #fca5a5;
}

.cal-match-chip strong { font-size: .95rem; }

.cal-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 280px;
    gap: 1rem;
    align-items: start;
}

.cal-summary-wrap {
    margin-bottom: 1rem;
    padding: .85rem 1rem;
    border: 1px solid var(--border);
    border-radius: 8px;
    background: var(--surface2);
}

/* ===== Profil-Automatik (Wochenplanung) ===== */
.cal-automation {
    margin-bottom: 1rem;
    border: 1px solid rgba(59, 130, 246, .35);
    border-radius: 10px;
    background: linear-gradient(135deg, rgba(59, 130, 246, .12) 0%, rgba(59, 130, 246, .04) 100%);
    box-shadow: 0 0 0 1px rgba(59, 130, 246, .08);
    overflow: hidden;
}
.cal-automation.is-collapsed {
    border-style: dashed;
    border-width: 2px;
    background: linear-gradient(135deg, rgba(59, 130, 246, .18) 0%, rgba(59, 130, 246, .07) 100%);
}
.cal-automation-toggle {
    display: grid;
    grid-template-columns: auto auto 1fr auto;
    align-items: center;
    gap: .75rem;
    width: 100%;
    margin: 0;
    padding: .95rem 1rem;
    border: none;
    background: transparent;
    color: inherit;
    text-align: left;
    font: inherit;
    cursor: pointer;
    transition: background .15s ease;
}
.cal-automation-toggle:hover,
.cal-automation-toggle:focus-visible {
    background: rgba(59, 130, 246, .1);
    outline: none;
}
.cal-automation-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 2.5rem;
    padding: .2rem .45rem;
    border-radius: 6px;
    background: var(--accent, #3b82f6);
    color: #fff;
    font-size: .65rem;
    font-weight: 800;
    letter-spacing: .04em;
    text-transform: uppercase;
}
.cal-automation-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 8px;
    background: rgba(59, 130, 246, .2);
    border: 1px solid rgba(59, 130, 246, .35);
    font-size: 1.1rem;
    line-height: 1;
}
.cal-automation-toggle-main {
    display: grid;
    gap: .2rem;
    min-width: 0;
}
.cal-automation-title-row {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: .45rem .65rem;
}
.cal-automation-title {
    font-size: 1.02rem;
    font-weight: 700;
}
.cal-automation-hint {
    font-size: .78rem;
    font-weight: 600;
    color: var(--accent, #60a5fa);
}
.cal-automation-sub {
    margin: 0;
    font-size: .78rem;
    color: var(--muted);
    line-height: 1.35;
}
.cal-automation-teaser {
    margin: .15rem 0 0;
    font-size: .8rem;
    color: var(--text);
    line-height: 1.35;
}
.cal-automation-teaser em {
    font-style: normal;
    font-weight: 700;
    color: var(--accent, #93c5fd);
}
.cal-automation-chevron {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    border-radius: 999px;
    background: rgba(59, 130, 246, .22);
    border: 1px solid rgba(59, 130, 246, .45);
    color: var(--accent, #93c5fd);
    font-size: .85rem;
    transition: transform .2s ease, background .15s ease;
}
.cal-automation.is-collapsed .cal-automation-chevron {
    animation: cal-automation-pulse 2s ease-in-out infinite;
}
.cal-automation-chevron.is-open {
    transform: rotate(180deg);
    animation: none;
}
@keyframes cal-automation-pulse {
    0%, 100% { box-shadow: 0 0 0 0 rgba(59, 130, 246, .35); }
    50% { box-shadow: 0 0 0 6px rgba(59, 130, 246, 0); }
}
.cal-automation-body {
    margin: 0;
    padding: 0 1rem 1rem;
    border-top: 1px solid rgba(59, 130, 246, .2);
}

.cal-profile-chips {
    display: flex; flex-wrap: wrap; align-items: center; gap: .55rem .5rem;
    margin-bottom: .85rem;
    padding: .4rem .4rem .15rem 0;
}
.cal-profile-group-label { font-size: .72rem; color: var(--muted); font-weight: 700; }
.cal-profile-group-label--own { margin-left: .5rem; }
.cal-profile-chip {
    display: inline-flex; align-items: center; gap: .3rem;
    padding: .28rem .6rem;
    font-size: .78rem;
    border: 1px solid var(--border);
    border-radius: 999px;
    background: var(--surface);
    color: var(--text);
    cursor: pointer;
    transition: border-color .15s, background .15s;
}
.cal-profile-chip:hover { border-color: var(--accent); }
.cal-profile-chip--saved {
    position: relative;
    padding-right: 1.15rem;
}
.cal-profile-chip--saved > button:first-child {
    background: none; border: none; color: inherit; cursor: pointer; font-size: .78rem; padding: 0;
}
.cal-profile-del {
    position: absolute;
    top: -.35rem;
    right: -.35rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.05rem;
    height: 1.05rem;
    padding: 0;
    border: 1px solid var(--border);
    border-radius: 999px;
    background: var(--surface2);
    color: var(--muted);
    font-size: .72rem;
    line-height: 1;
    cursor: pointer;
    box-shadow: 0 1px 3px rgba(0, 0, 0, .25);
}
.cal-profile-del:hover {
    background: #ef4444;
    border-color: #ef4444;
    color: #fff;
}
.cal-profile-chip.is-active {
    border-color: var(--accent);
    background: rgba(59, 130, 246, .18);
    font-weight: 600;
}

.cal-assistant-panel {
    border-color: rgba(234, 179, 8, .45);
    background: rgba(234, 179, 8, .08);
}
.cal-assistant-panel.is-on {
    border-color: rgba(234, 179, 8, .65);
    background: rgba(234, 179, 8, .14);
}
.cal-assistant-panel.is-off {
    border-style: dashed;
    border-color: rgba(234, 179, 8, .45);
}
.cal-assistant-head {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: .45rem .75rem;
}
.cal-assistant-head .cal-summary-title { margin: 0; }
.cal-assistant-status {
    font-size: .78rem;
    font-weight: 600;
    color: #ca8a04;
}
.cal-assistant-missing { margin: .45rem 0 0; line-height: 1.4; }

.cal-weights-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: .4rem .85rem;
    margin-bottom: .75rem;
}
.cal-weight-row {
    display: flex; align-items: center; gap: .4rem;
    font-size: .8rem;
}
.cal-weight-label { flex: 1; min-width: 0; }
.cal-weight-input {
    width: 3.6rem;
    padding: .2rem .35rem;
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--surface);
    color: var(--text);
    text-align: right;
    font-size: .8rem;
}
.cal-weight-unit { color: var(--muted); font-size: .75rem; }

.cal-automation-foot {
    display: flex; flex-wrap: wrap; align-items: baseline; gap: .75rem;
    margin-bottom: .75rem;
    padding-top: .5rem;
    border-top: 1px dashed var(--border);
}
.cal-weight-total { font-weight: 700; font-size: .82rem; }
.cal-weight-total.is-off { color: var(--warning); }
.cal-dist-preview { font-size: .76rem; line-height: 1.4; }
.cal-dist-total { opacity: .7; }

.cal-automation-actions {
    display: flex; flex-wrap: wrap; align-items: center; gap: .5rem;
}
.cal-profile-name {
    padding: .32rem .55rem;
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--surface);
    color: var(--text);
    font-size: .82rem;
    min-width: 10rem;
}
.cal-automation-note { margin: .6rem 0 0; font-size: .72rem; }
.cal-hidden-form { display: none; }

.cal-summary-title {
    margin: 0 0 .55rem;
    font-size: .82rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--muted);
}

.cal-summary-scroll { overflow-x: auto; }

.cal-summary-table {
    width: 100%;
    border-collapse: collapse;
    font-size: .82rem;
    white-space: nowrap;
}

.cal-summary-table th,
.cal-summary-table td {
    padding: .4rem .55rem;
    text-align: right;
    border-bottom: 1px solid var(--border);
}

.cal-summary-table th:first-child,
.cal-summary-table td:first-child { text-align: left; }

.cal-summary-table th {
    font-size: .7rem;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--muted);
    font-weight: 600;
}

.cal-summary-note { margin: .45rem 0 0; font-size: .72rem; }

.cal-role-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
    gap: .75rem;
    margin-top: .5rem;
}

.cal-role-card {
    padding: .65rem .75rem;
    border: 1px solid var(--border);
    border-radius: .5rem;
    background: var(--surface-2, rgba(255,255,255,.03));
}

.cal-role-warn { color: #f87171; font-weight: 600; }

.cal-individual-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    margin: .65rem 0 1rem;
}

.cal-individual-focus {
    display: flex;
    align-items: center;
    gap: .5rem;
}

.cal-individual-picked {
    margin: 0;
    font-size: .85rem;
}

.cal-individual-group {
    margin-top: 0;
}

.cal-individual-list tbody tr.cal-individual-row {
    cursor: pointer;
}

.cal-individual-list tbody tr.cal-individual-row.is-selected td,
.cal-individual-list tbody tr.cal-individual-row.is-selected th {
    background: rgba(74, 222, 128, .08);
}

.cal-individual-list tbody tr.cal-individual-row.is-low-fitness td,
.cal-individual-list tbody tr.cal-individual-row.is-low-fitness th {
    background: rgba(245, 158, 11, .06);
}

.cal-individual-list tbody tr.cal-individual-row.is-selected.is-low-fitness td,
.cal-individual-list tbody tr.cal-individual-row.is-selected.is-low-fitness th {
    background: rgba(74, 222, 128, .12);
}

.cal-individual-check {
    width: 2rem;
    text-align: center;
}

.cal-individual-status {
    display: inline-block;
    margin-left: .4rem;
    padding: .05rem .4rem;
    border-radius: 999px;
    background: rgba(248, 113, 113, .18);
    color: #f87171;
    font-size: .68rem;
    font-weight: 600;
    letter-spacing: .02em;
    text-transform: uppercase;
    white-space: nowrap;
}

.report-ev-team { font-size: .85em; }

.league-highlight-clubs {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .35rem;
    margin: .35rem 0;
}

.delta-up { color: #4ade80; }
.delta-down { color: #f87171; }
.delta-neutral { color: var(--muted); }

.cal-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: .25rem;
    margin-top: .5rem;
}

.cal-tab {
    border: 1px solid var(--border);
    background: var(--bg);
    color: var(--muted);
    font: inherit;
    font-size: .72rem;
    padding: .3rem .5rem;
    border-radius: 6px;
    cursor: pointer;
}

.cal-tab.is-active {
    background: rgba(59, 130, 246, .18);
    border-color: rgba(59, 130, 246, .45);
    color: var(--text);
    font-weight: 600;
}

.cal-preview {
    margin-top: .5rem;
    padding: .65rem .75rem;
    border-radius: 8px;
    border: 1px solid var(--border);
    background: var(--surface);
}

.cal-preview h4 { margin: 0 0 .45rem; font-size: .88rem; }

.cal-preview-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: .25rem;
}

.cal-preview-list li {
    display: flex;
    justify-content: space-between;
    gap: .75rem;
    font-size: .78rem;
    color: var(--muted);
}

.cal-preview-list strong { font-weight: 600; }

.cal-day-head.is-sunday:not(.is-match) { opacity: .55; }

.cal-cell.is-free-day {
    background: repeating-linear-gradient(
        -45deg,
        var(--bg),
        var(--bg) 5px,
        rgba(255, 255, 255, .02) 5px,
        rgba(255, 255, 255, .02) 10px
    );
}

.cal-free-label {
    display: grid;
    place-items: center;
    height: 100%;
    min-height: 56px;
    font-size: .78rem;
    color: var(--muted);
    font-style: italic;
}

.cal-event--friendly {
    border-left-color: #6366f1;
    background: rgba(99, 102, 241, .18);
}

.cal-palette-item.cal-event--friendly { border-left-color: #6366f1; background: rgba(99, 102, 241, .12); }

.cal-palette-item {
    padding: .5rem .6rem;
}

.cal-palette-hint { display: none; }

.cal-layout--dnd {
    grid-template-columns: 220px minmax(0, 1fr);
}

.cal-palette {
    position: sticky;
    top: 1rem;
    display: grid;
    gap: .85rem;
    padding: .85rem;
    border: 1px solid var(--border);
    border-radius: 8px;
    background: var(--surface2);
    max-height: calc(100vh - 6rem);
    overflow-y: auto;
}

.cal-palette-head h3 { margin: 0 0 .15rem; font-size: .95rem; }
.cal-palette-head p { margin: 0; font-size: .78rem; }

.cal-palette-group h4 {
    margin: 0 0 .45rem;
    font-size: .72rem;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--muted);
}

.cal-palette-list { display: grid; gap: .4rem; }

.cal-palette-item {
    display: grid;
    gap: .1rem;
    padding: .45rem .55rem;
    border-radius: 6px;
    border-left: 3px solid var(--accent);
    background: rgba(59, 130, 246, .12);
    cursor: grab;
    user-select: none;
    transition: transform .1s ease, box-shadow .12s ease;
}

.cal-palette-item:active { cursor: grabbing; transform: scale(.98); }
.cal-palette-item:hover { box-shadow: 0 0 0 1px rgba(255,255,255,.08); }

.cal-palette-title { font-size: .82rem; font-weight: 600; }
.cal-palette-hint { font-size: .68rem; color: var(--muted); line-height: 1.25; }

.cal-palette-foot {
    min-height: 10.5rem;
}

.cal-palette-tip { margin: 0; font-size: .72rem; line-height: 1.35; }

.cal-board-wrap { min-width: 0; }

.cal-save-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-top: .85rem;
    padding-top: .85rem;
    border-top: 1px solid var(--border);
}

.cal-save-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem;
}

.cal-cell.is-droppable { min-height: 72px; }

.cal-cell.is-dragover {
    background: rgba(59, 130, 246, .14);
    box-shadow: inset 0 0 0 2px rgba(59, 130, 246, .45);
}

.cal-drop-hint {
    display: grid;
    place-items: center;
    height: 100%;
    min-height: 56px;
    border: 1px dashed rgba(143, 163, 191, .35);
    border-radius: 4px;
    color: var(--muted);
    font-size: 1.1rem;
}

.cal-event {
    position: relative;
    padding-right: 1.25rem;
}

.cal-event-clear {
    position: absolute;
    top: .15rem;
    right: .15rem;
    width: 1.1rem;
    height: 1.1rem;
    padding: 0;
    border: none;
    border-radius: 4px;
    background: rgba(0, 0, 0, .35);
    color: #fff;
    font-size: .85rem;
    line-height: 1;
    cursor: pointer;
    opacity: 0;
    transition: opacity .12s ease;
}

.cal-event:hover .cal-event-clear { opacity: 1; }

.cal-event--fanfest { border-left-color: #f97316; background: rgba(249, 115, 22, .18); }
.cal-event--social { border-left-color: #38bdf8; background: rgba(56, 189, 248, .15); }
.cal-event--autograph { border-left-color: #fb7185; background: rgba(251, 113, 133, .15); }
.cal-event--open_training { border-left-color: #2dd4bf; background: rgba(45, 212, 191, .15); }
.cal-event--youth_day { border-left-color: #a78bfa; background: rgba(167, 139, 250, .15); }
.cal-event--sponsor_event { border-left-color: #eab308; background: rgba(234, 179, 8, .18); }
.cal-event--sponsor_meeting { border-left-color: #ca8a04; background: rgba(202, 138, 4, .16); }
.cal-event--sponsor_presentation { border-left-color: #facc15; background: rgba(250, 204, 21, .18); }
.cal-event--sponsor_hospitality { border-left-color: #fde047; background: rgba(253, 224, 71, .14); }
.cal-event--sponsor_contract { border-left-color: #a16207; background: rgba(161, 98, 7, .18); }
.cal-event--press { border-left-color: #94a3b8; background: rgba(148, 163, 184, .15); }

.cal-palette-item.cal-event--fanfest { border-left-color: #f97316; background: rgba(249, 115, 22, .12); }
.cal-palette-item.cal-event--social { border-left-color: #38bdf8; background: rgba(56, 189, 248, .12); }
.cal-palette-item.cal-event--autograph { border-left-color: #fb7185; background: rgba(251, 113, 133, .12); }
.cal-palette-item.cal-event--open_training { border-left-color: #2dd4bf; background: rgba(45, 212, 191, .12); }
.cal-palette-item.cal-event--youth_day { border-left-color: #a78bfa; background: rgba(167, 139, 250, .12); }
.cal-palette-item.cal-event--sponsor_event { border-left-color: #eab308; background: rgba(234, 179, 8, .12); }
.cal-palette-item.cal-event--sponsor_meeting { border-left-color: #ca8a04; background: rgba(202, 138, 4, .1); }
.cal-palette-item.cal-event--sponsor_presentation { border-left-color: #facc15; background: rgba(250, 204, 21, .12); }
.cal-palette-item.cal-event--sponsor_hospitality { border-left-color: #fde047; background: rgba(253, 224, 71, .1); }
.cal-palette-item.cal-event--sponsor_contract { border-left-color: #a16207; background: rgba(161, 98, 7, .12); }
.cal-palette-item.cal-event--press { border-left-color: #94a3b8; background: rgba(148, 163, 184, .12); }

@media (max-width: 1024px) {
    .cal-layout,
    .cal-layout--dnd { grid-template-columns: 1fr; }
    .cal-palette { position: static; max-height: none; }
    .cal-detail { position: static; }
}

.cal-board {
    display: grid;
    gap: 1rem;
    border: 1px solid var(--border);
    border-radius: 8px;
    overflow: hidden;
    background: var(--bg);
}

.cal-week {
    border-bottom: 1px solid var(--border);
}

.cal-week:last-child { border-bottom: none; }

.cal-week-label {
    padding: .35rem .65rem;
    font-size: .72rem;
    font-weight: 600;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--muted);
    background: var(--surface2);
    border-bottom: 1px solid var(--border);
}

.cal-grid {
    display: grid;
    grid-template-columns: 52px repeat(7, minmax(0, 1fr));
    grid-template-rows: auto 1fr 1fr;
}

.cal-axis-head {
    grid-row: 1;
    border-right: 1px solid var(--border);
    border-bottom: 1px solid var(--border);
    background: var(--surface2);
}

.cal-day-head {
    grid-row: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: .1rem;
    padding: .45rem .25rem;
    border-right: 1px solid var(--border);
    border-bottom: 1px solid var(--border);
    background: var(--surface2);
    min-height: 52px;
}

.cal-day-head:last-child { border-right: none; }

.cal-day-head--pad { background: var(--surface); opacity: .35; }

.cal-day-head.is-today {
    background: rgba(59, 130, 246, .18);
    box-shadow: inset 0 -2px 0 var(--accent);
}

.cal-day-head.is-outside { color: var(--muted); opacity: .65; }

.cal-day-head.is-match {
    background: rgba(239, 68, 68, .12);
    box-shadow: inset 0 -2px 0 var(--danger);
}

.cal-weekday {
    font-size: .68rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--muted);
}

.cal-date-num {
    font-size: 1.05rem;
    font-weight: 700;
    line-height: 1;
}

.cal-axis {
    grid-column: 1;
    border-right: 1px solid var(--border);
    border-bottom: 1px solid var(--border);
    background: var(--surface);
}

.cal-time {
    display: flex;
    align-items: flex-start;
    justify-content: flex-end;
    padding: .35rem .45rem 0 0;
    font-size: .72rem;
    color: var(--muted);
    min-height: 72px;
}

.cal-cell {
    position: relative;
    min-height: 72px;
    padding: .25rem;
    border-right: 1px solid var(--border);
    border-bottom: 1px solid var(--border);
    background: var(--surface);
}

.cal-cell:last-child,
.cal-day-head:last-child {
    border-right: none;
}

.cal-cell--pad {
    background: repeating-linear-gradient(
        -45deg,
        var(--surface),
        var(--surface) 4px,
        rgba(255, 255, 255, .02) 4px,
        rgba(255, 255, 255, .02) 8px
    );
    opacity: .35;
}

.cal-cell.is-outside {
    background: var(--bg);
    opacity: .55;
}

.cal-cell.is-today {
    background: rgba(59, 130, 246, .06);
}

.cal-cell.is-clickable {
    cursor: default;
}

.cal-cell.is-clickable:hover {
    background: inherit;
}

.cal-cell.is-selected {
    box-shadow: none;
}

.cal-event {
    display: grid;
    gap: .1rem;
    height: 100%;
    min-height: 56px;
    padding: .35rem .45rem;
    border-radius: 4px;
    border-left: 3px solid var(--accent);
    background: rgba(59, 130, 246, .18);
    font-size: .74rem;
    line-height: 1.25;
    overflow: hidden;
}

.cal-event-time {
    font-size: .65rem;
    color: var(--muted);
}

.cal-event-title { font-weight: 600; }

.cal-event-meta {
    font-size: .68rem;
    color: var(--muted);
}

.cal-event--empty {
    border-left-color: var(--border);
    background: rgba(255, 255, 255, .03);
    color: var(--muted);
    font-style: italic;
}

.cal-event--match {
    border-left-color: var(--danger);
    background: rgba(239, 68, 68, .18);
    color: #fecaca;
}

.cal-event--fitness { border-left-color: #3b82f6; background: rgba(59, 130, 246, .18); }
.cal-event--attack { border-left-color: #f97316; background: rgba(249, 115, 22, .18); }
.cal-event--defense { border-left-color: #22c55e; background: rgba(34, 197, 94, .18); }
.cal-event--tactics { border-left-color: #a855f7; background: rgba(168, 85, 247, .18); }
.cal-event--setpieces { border-left-color: #eab308; background: rgba(234, 179, 8, .18); }
.cal-event--recovery { border-left-color: #14b8a6; background: rgba(20, 184, 166, .18); }
.cal-event--activation { border-left-color: #60a5fa; background: rgba(96, 165, 250, .14); }
.cal-event--teamspirit { border-left-color: #ec4899; background: rgba(236, 72, 153, .18); }

.cal-detail {
    position: sticky;
    top: 1rem;
    padding: 1rem;
    border: 1px solid var(--border);
    border-radius: 8px;
    background: var(--surface2);
}

.cal-detail-head h3 { margin-bottom: .25rem; font-size: 1rem; }

.cal-detail-form { display: grid; gap: .85rem; margin-top: .75rem; }

.cal-block-form {
    display: grid;
    gap: .55rem;
    padding: .75rem;
    border-radius: 8px;
    border: 1px solid var(--border);
    background: var(--surface);
}

.cal-block-form h4 {
    margin: 0 0 .15rem;
    font-size: .82rem;
    color: var(--muted);
    text-transform: uppercase;
    letter-spacing: .04em;
}

.cal-block-form label { margin: 0; font-size: .85rem; }

.cal-detail-hint { margin: .75rem 0 0; font-size: .85rem; }

@media (max-width: 1024px) {
    .cal-layout { grid-template-columns: 1fr; }
    .cal-detail { position: static; }
}

@media (max-width: 768px) {
    .cal-grid {
        grid-template-columns: 40px repeat(7, minmax(0, 1fr));
    }

    .cal-event-title { font-size: .65rem; }
    .cal-event-meta { display: none; }
    .cal-date-num { font-size: .9rem; }
}

/* —— Taktik —— */
.tactics-page h2 { margin-bottom: .25rem; }

.tac-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1.25rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid var(--border);
}

.tac-lead { margin: .25rem 0 0; font-size: .88rem; max-width: 36rem; }

.tac-formation-chip {
    display: grid;
    gap: .1rem;
    padding: .65rem .85rem;
    border-radius: 8px;
    border: 1px solid rgba(59, 130, 246, .35);
    background: rgba(59, 130, 246, .08);
    font-size: .82rem;
    color: inherit;
    text-decoration: none;
    min-width: 180px;
    transition: background .15s ease, border-color .15s ease;
}

.tac-formation-chip:hover {
    background: rgba(59, 130, 246, .14);
    border-color: rgba(59, 130, 246, .55);
    text-decoration: none;
}

.tac-formation-label {
    font-size: .68rem;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: #93c5fd;
}

.tac-formation-chip strong { font-size: 1.15rem; }

.tac-formation-link {
    font-size: .72rem;
    color: var(--muted);
}

.tac-layout {
    display: grid;
    grid-template-columns: 260px minmax(0, 1fr);
    gap: 1.25rem;
    align-items: start;
}

.tac-section-title {
    margin: 0 0 .65rem;
    font-size: .72rem;
    font-weight: 600;
    letter-spacing: .05em;
    text-transform: uppercase;
    color: var(--muted);
}

.tac-sidebar {
    position: sticky;
    top: 1rem;
    display: grid;
    gap: 1rem;
}

.tac-presets { display: grid; gap: .45rem; }

.tac-preset {
    display: flex;
    align-items: center;
    gap: .65rem;
    padding: .65rem .75rem;
    border-radius: 8px;
    border: 1px solid var(--border);
    background: var(--surface2);
    color: var(--text);
    font: inherit;
    text-align: left;
    cursor: pointer;
    border-left-width: 3px;
    transition: background .12s ease, border-color .12s ease, transform .1s ease;
}

.tac-preset:hover { transform: translateY(-1px); background: rgba(255, 255, 255, .03); }
.tac-preset.is-active {
    background: rgba(59, 130, 246, .12);
    border-color: rgba(59, 130, 246, .45);
    box-shadow: 0 0 0 1px rgba(59, 130, 246, .15);
}

.tac-preset--blue { border-left-color: #3b82f6; }
.tac-preset--orange { border-left-color: #f97316; }
.tac-preset--green { border-left-color: #22c55e; }
.tac-preset--red { border-left-color: #ef4444; }

.tac-preset-label { font-size: .88rem; font-weight: 600; }
.tac-preset-hint { font-size: .72rem; color: var(--muted); line-height: 1.35; }

.tac-preview {
    padding: .85rem;
    border: 1px solid var(--border);
    border-radius: 8px;
    background: var(--surface2);
}

.tac-mod {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: .75rem;
    margin-bottom: .35rem;
}

.tac-mod-label { font-size: .82rem; color: var(--muted); }

.tac-mod-value {
    font-size: 1.35rem;
    font-weight: 700;
    line-height: 1;
}

.tac-mod-value.is-positive { color: #4ade80; }
.tac-mod-value.is-negative { color: #f87171; }

.tac-mod-hint { margin: 0 0 .65rem; font-size: .72rem; line-height: 1.35; }

.tac-tags {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem;
}

.tac-tag {
    display: inline-block;
    padding: .2rem .5rem;
    border-radius: 999px;
    font-size: .72rem;
    font-weight: 600;
    background: color-mix(in srgb, var(--accent) 14%, var(--surface2));
    border: 1px solid color-mix(in srgb, var(--accent) 38%, var(--border));
    color: color-mix(in srgb, var(--accent) 72%, var(--text));
}

:root[data-contrast="high"] .tac-tag {
    background: #dbeafe;
    border-color: #2563eb;
    color: #1e3a8a;
}

.tac-sliders { display: grid; gap: 1.25rem; }

.tac-slider-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: .75rem;
}

.tac-slider-card {
    display: grid;
    gap: .45rem;
    padding: .85rem;
    border: 1px solid var(--border);
    border-radius: 10px;
    background: rgba(255, 255, 255, .02);
    margin: 0;
    cursor: default;
}

.tac-slider-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .5rem;
}

.tac-slider-label { font-size: .88rem; font-weight: 600; }

.tac-slider-value {
    display: inline-grid;
    place-items: center;
    min-width: 2rem;
    padding: .15rem .45rem;
    border-radius: 6px;
    font-size: .82rem;
    font-weight: 700;
    background: color-mix(in srgb, var(--tac-color) 18%, transparent);
    color: var(--tac-color);
    border: 1px solid color-mix(in srgb, var(--tac-color) 35%, transparent);
}

.tac-slider-track {
    position: relative;
    height: 1.35rem;
    display: flex;
    align-items: center;
}

.tac-slider-fill {
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    height: 6px;
    border-radius: 999px;
    background: linear-gradient(90deg, color-mix(in srgb, var(--tac-color) 55%, transparent), var(--tac-color));
    pointer-events: none;
    max-width: 100%;
}

.tac-slider-track input[type="range"] {
    position: relative;
    z-index: 1;
    width: 100%;
    margin: 0;
    height: 1.35rem;
    background: transparent;
    -webkit-appearance: none;
    appearance: none;
    cursor: pointer;
}

.tac-slider-track input[type="range"]::-webkit-slider-runnable-track {
    height: 6px;
    border-radius: 999px;
    background: var(--bg);
    border: 1px solid var(--border);
}

.tac-slider-track input[type="range"]::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 16px;
    height: 16px;
    margin-top: -6px;
    border-radius: 50%;
    background: var(--tac-color);
    border: 2px solid var(--surface);
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--tac-color) 50%, transparent);
}

.tac-slider-track input[type="range"]::-moz-range-track {
    height: 6px;
    border-radius: 999px;
    background: var(--bg);
    border: 1px solid var(--border);
}

.tac-slider-track input[type="range"]::-moz-range-thumb {
    width: 16px;
    height: 16px;
    border-radius: 50%;
    background: var(--tac-color);
    border: 2px solid var(--surface);
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--tac-color) 50%, transparent);
}

.tac-slider-scale {
    display: flex;
    justify-content: space-between;
    font-size: .68rem;
    color: var(--muted);
}

.tac-slider-hint {
    margin: 0;
    font-size: .72rem;
    color: var(--muted);
    line-height: 1.35;
}

.tac-save-bar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    margin-top: 1.25rem;
    padding-top: 1rem;
    border-top: 1px solid var(--border);
}

.tac-save-note { margin: 0; font-size: .82rem; }

@media (max-width: 900px) {
    .tac-layout { grid-template-columns: 1fr; }
    .tac-sidebar { position: static; }
}

@media (max-width: 768px) {
    .tac-slider-grid { grid-template-columns: 1fr; }
    .tac-formation-chip { width: 100%; }
}

/* —— Sponsoren —— */
.sponsors-page { --sponsor-gold: #eab308; }

.sponsors-header {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 1rem;
    align-items: flex-start;
}
.sponsors-header h2 { margin: 0 0 .35rem; }
.sponsors-overview-stats { margin: 0; min-width: min(100%, 420px); }

.sponsors-visual-grid {
    display: grid;
    grid-template-columns: 1fr 1.2fr;
    gap: 1rem;
    margin-top: 1rem;
}
.sponsor-preview h3 { margin: 0 0 .75rem; font-size: 1rem; }

.jersey-mock { display: flex; flex-direction: column; align-items: center; gap: .75rem; }
.jersey-body {
    position: relative;
    width: 140px;
    height: 180px;
    border-radius: 12px 12px 8px 8px;
    background: linear-gradient(160deg, var(--club-primary, var(--accent)) 0%, color-mix(in srgb, var(--club-primary, var(--accent)) 55%, #000) 100%);
    box-shadow: inset 0 -20px 40px rgba(0,0,0,.25), 0 8px 24px rgba(0,0,0,.35);
    display: grid;
    place-items: center;
}
.jersey-body::before,
.jersey-body::after {
    content: '';
    position: absolute;
    top: 0;
    width: 28px;
    height: 48px;
    background: color-mix(in srgb, var(--club-primary, var(--accent)) 70%, #fff 30%);
    border-radius: 0 0 6px 6px;
}
.jersey-body::before { left: 8px; transform: skewX(-8deg); }
.jersey-body::after { right: 8px; transform: skewX(8deg); }
.jersey-logo {
    max-width: 72%;
    max-height: 42px;
    object-fit: contain;
    filter: drop-shadow(0 2px 4px rgba(0,0,0,.4));
    z-index: 1;
}
.jersey-logo-fallback {
    z-index: 1;
    font-size: .65rem;
    font-weight: 700;
    text-align: center;
    padding: 0 .5rem;
    text-transform: uppercase;
    letter-spacing: .04em;
}
.jersey-number {
    position: absolute;
    bottom: 18px;
    font-size: 2rem;
    font-weight: 800;
    opacity: .35;
}
.jersey-caption { margin: 0; font-size: .85rem; text-align: center; }

.board-strip {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: .5rem;
    padding: .75rem;
    border-radius: 8px;
    background: linear-gradient(180deg, #1a3d1a 0%, #0f2810 40%, #1a3d1a 100%);
    border: 1px solid rgba(34, 197, 94, .25);
    min-height: 88px;
    align-items: center;
}
.board-panel {
    background: rgba(0,0,0,.55);
    border: 1px solid rgba(255,255,255,.12);
    border-radius: 4px;
    min-height: 52px;
    display: grid;
    place-items: center;
    padding: .35rem .5rem;
}
.board-panel img {
    max-width: 100%;
    max-height: 36px;
    object-fit: contain;
}
.board-panel span { font-size: .7rem; font-weight: 600; text-align: center; color: var(--muted); }
.board-panel--vacant {
    border-style: dashed;
    border-color: rgba(234, 179, 8, .35);
    background: rgba(0, 0, 0, .25);
}
.board-vacant-label { font-size: .62rem !important; line-height: 1.25; color: #eab308 !important; }
.board-panel--empty { grid-column: 1 / -1; color: var(--muted); font-size: .85rem; }

.sponsor-prep-banner {
    border-color: rgba(234, 179, 8, .28);
    background: linear-gradient(135deg, rgba(234, 179, 8, .08), transparent);
}
.sponsor-prep-banner h3 { margin-top: 0; }

.sponsor-slot-pick + .sponsor-slot-pick {
    margin-top: 1.25rem;
    padding-top: 1.25rem;
    border-top: 1px solid rgba(148, 163, 184, .15);
}
.sponsor-slot-pick h4 {
    margin: 0 0 .65rem;
    font-size: .95rem;
}

.sponsor-candidate-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: .75rem;
    margin-top: .75rem;
}
.sponsor-candidate-card {
    border: 1px solid rgba(148, 163, 184, .18);
    border-radius: 10px;
    padding: .85rem;
    background: rgba(15, 23, 42, .35);
}
.sponsor-candidate-top {
    display: flex;
    gap: .65rem;
    align-items: center;
    margin-bottom: .5rem;
}
.sponsor-candidate-logo {
    width: 56px;
    height: 32px;
    object-fit: contain;
    flex-shrink: 0;
}
.sponsor-candidate-card h4 { margin: 0 0 .15rem; font-size: .92rem; }
.sponsor-assign-form { margin-top: .45rem; }
.sponsor-assign-form .btn { width: 100%; }

.sponsor-card--empty {
    border-style: dashed;
    border-color: rgba(148, 163, 184, .25);
    opacity: .92;
}
.sponsor-logo-wrap--empty {
    background: rgba(148, 163, 184, .08);
}

.sponsor-deal-model-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: .75rem;
    margin-top: .75rem;
}
.sponsor-deal-model-card {
    border: 1px solid rgba(148, 163, 184, .18);
    border-radius: 10px;
    padding: .85rem;
    background: rgba(15, 23, 42, .35);
}
.sponsor-deal-model-card--fest { border-color: rgba(148, 163, 184, .35); }
.sponsor-deal-model-card--heim { border-color: rgba(59, 130, 246, .28); }
.sponsor-deal-model-card--sieger { border-color: rgba(234, 179, 8, .28); }
.sponsor-deal-model-head {
    display: flex;
    gap: .6rem;
    align-items: center;
    margin-bottom: .45rem;
}
.sponsor-deal-model-emoji { font-size: 1.5rem; line-height: 1; }
.sponsor-deal-model-short {
    display: block;
    font-size: .72rem;
    color: var(--muted);
    margin-top: .1rem;
}
.sponsor-deal-model-traits {
    list-style: none;
    margin: .65rem 0 0;
    padding: 0;
    font-size: .78rem;
}
.sponsor-deal-model-traits li + li { margin-top: .35rem; }
.sponsor-deal-model-traits span {
    color: var(--muted);
    margin-right: .25rem;
}

.sponsor-deal-badge {
    display: inline-flex;
    align-items: center;
    gap: .25rem;
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .02em;
    text-transform: uppercase;
    padding: .15rem .45rem;
    border-radius: 999px;
    margin: .15rem 0;
}
.sponsor-deal-badge--fest { background: rgba(148, 163, 184, .16); color: #cbd5e1; }
.sponsor-deal-badge--heim { background: rgba(59, 130, 246, .16); color: #93c5fd; }
.sponsor-deal-badge--sieger { background: rgba(234, 179, 8, .16); color: #fde68a; }

.sponsor-payout-stats li {
    display: grid;
    gap: .1rem;
}
.sponsor-payout-note {
    display: block;
    font-size: .68rem;
    line-height: 1.25;
}
.sponsor-estimate-row {
    margin-top: .25rem;
    padding-top: .35rem;
    border-top: 1px dashed rgba(148, 163, 184, .2);
}

.sponsor-candidate-card--fest { border-color: rgba(148, 163, 184, .22); }
.sponsor-candidate-card--heim { border-color: rgba(59, 130, 246, .22); }
.sponsor-candidate-card--sieger { border-color: rgba(234, 179, 8, .22); }

@media (max-width: 900px) {
    .sponsor-deal-model-grid { grid-template-columns: 1fr; }
}
.board-hint { margin: .65rem 0 0; font-size: .82rem; }

.sponsor-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 1rem;
    margin-top: .75rem;
}
.sponsor-card {
    background: var(--surface2);
    border: 1px solid var(--border);
    border-radius: 10px;
    padding: 1rem;
    display: flex;
    flex-direction: column;
    gap: .75rem;
}
.sponsor-card--jersey { border-color: rgba(234, 179, 8, .45); }
.sponsor-card--board { border-color: rgba(59, 130, 246, .35); }
.sponsor-card--stadium { border-color: rgba(34, 197, 94, .35); }
.sponsor-card--training { border-color: rgba(168, 85, 247, .35); }
.sponsor-card--digital { border-color: rgba(236, 72, 153, .35); }

.sponsor-card-top { display: flex; gap: .85rem; align-items: flex-start; }
.sponsor-logo-wrap {
    width: 88px;
    height: 52px;
    flex-shrink: 0;
    background: rgba(0,0,0,.25);
    border: 1px solid var(--border);
    border-radius: 6px;
    display: grid;
    place-items: center;
    overflow: hidden;
}
.sponsor-logo { max-width: 92%; max-height: 44px; object-fit: contain; }
.sponsor-logo-placeholder { font-size: 1.5rem; }
.sponsor-card-meta h4 { margin: .25rem 0 .15rem; font-size: 1rem; }
.sponsor-tagline { margin: 0; font-size: .82rem; font-style: italic; }
.sponsor-placement { margin: .35rem 0 0; font-size: .75rem; color: var(--muted); }
.sponsor-category-badge {
    display: inline-block;
    font-size: .72rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--muted);
}

.sponsor-card-stats { margin: 0; }
.sponsor-satisfaction-head {
    display: flex;
    justify-content: space-between;
    font-size: .82rem;
    margin-bottom: .35rem;
}
.sponsor-satisfaction-bar {
    height: 6px;
    border-radius: 999px;
    background: rgba(255,255,255,.08);
    overflow: hidden;
}
.sponsor-satisfaction-bar i {
    display: block;
    height: 100%;
    border-radius: 999px;
    background: var(--warning);
}
.sponsor-satisfaction-bar i.is-good { background: var(--accent2); }
.sponsor-satisfaction-bar i.is-ok { background: var(--warning); }
.sponsor-satisfaction-bar i.is-low { background: var(--danger); }
.sponsor-satisfaction-head strong.is-good { color: var(--accent2); }
.sponsor-satisfaction-head strong.is-ok { color: var(--warning); }
.sponsor-satisfaction-head strong.is-low { color: var(--danger); }

.sponsor-category-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: .75rem;
    margin-top: .75rem;
}
.sponsor-category-item {
    background: var(--surface2);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: .85rem;
}
.sponsor-category-emoji { font-size: 1.35rem; display: block; margin-bottom: .25rem; }
.sponsor-category-item strong { display: block; margin-bottom: .25rem; }
.sponsor-category-item p { margin: 0 0 .35rem; font-size: .82rem; }
.sponsor-category-placement {
    font-size: .72rem;
    color: var(--muted);
    text-transform: uppercase;
    letter-spacing: .03em;
}

@media (max-width: 900px) {
    .sponsors-visual-grid { grid-template-columns: 1fr; }
}

/* —— LIGEON (Lizenzen) —— */
.ligeon-page { --ligeon-accent: #6366f1; }

.ligeon-header {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem 1.5rem;
    justify-content: space-between;
    align-items: flex-start;
}

.ligeon-header h2 { margin: 0 0 .35rem; }
.ligeon-overview-stats { margin: 0; min-width: min(100%, 480px); }
.ligeon-no-license { margin: 0; max-width: 280px; text-align: right; }

.ligeon-apply-banner {
    display: flex;
    flex-wrap: wrap;
    gap: .75rem 1rem;
    align-items: center;
    justify-content: space-between;
    border-color: rgba(99, 102, 241, .45);
    background: rgba(99, 102, 241, .08);
}

.ligeon-apply-banner p { margin: 0; }
.ligeon-intro { margin: 0 0 1rem; max-width: 62ch; }

.ligeon-license-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 1rem;
}

.ligeon-license-card {
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 1rem;
    background: rgba(255, 255, 255, .02);
    display: flex;
    flex-direction: column;
    gap: .75rem;
}

.ligeon-license-card.is-active {
    border-color: rgba(99, 102, 241, .55);
    box-shadow: 0 0 0 1px rgba(99, 102, 241, .15);
}

.ligeon-license-card.is-ready:not(.is-active) {
    border-color: rgba(34, 197, 94, .4);
}

.ligeon-license-card.is-locked { opacity: .88; }

.ligeon-license-head {
    display: flex;
    gap: .75rem;
    justify-content: space-between;
    align-items: flex-start;
}

.ligeon-license-head h4 { margin: 0 0 .2rem; font-size: 1rem; }
.ligeon-license-head p { margin: 0; font-size: .82rem; }

.ligeon-badge {
    flex-shrink: 0;
    font-size: .68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    padding: .2rem .45rem;
    border-radius: 999px;
    background: rgba(255, 255, 255, .08);
    color: var(--muted);
}

.ligeon-badge--active {
    background: rgba(99, 102, 241, .22);
    color: #a5b4fc;
}

.ligeon-badge--ready {
    background: rgba(34, 197, 94, .18);
    color: var(--accent2);
}

.ligeon-benefits { margin: 0; }

.ligeon-requirements h5 {
    margin: 0 0 .45rem;
    font-size: .78rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--muted);
}

.ligeon-req-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: .35rem;
}

.ligeon-req-list li {
    display: grid;
    grid-template-columns: 1.1rem 1fr auto;
    gap: .35rem .5rem;
    align-items: center;
    font-size: .84rem;
}

.ligeon-req-list li.is-met { color: var(--text); }
.ligeon-req-list li.is-open { color: var(--muted); }
.ligeon-req-list li.is-met .ligeon-req-icon { color: var(--accent2); }
.ligeon-req-list li.is-open .ligeon-req-icon { color: var(--muted); }

.ligeon-req-value {
    font-size: .78rem;
    font-variant-numeric: tabular-nums;
}

.ligeon-card-apply { margin-top: auto; padding-top: .25rem; }

.ligeon-hint-list {
    margin: 0;
    padding-left: 1.1rem;
    display: flex;
    flex-direction: column;
    gap: .45rem;
}

.ligeon-hint-list li { font-size: .9rem; }

@media (max-width: 700px) {
    .ligeon-no-license { text-align: left; max-width: none; }
}

/* —— Liga dashboard —— */
.grid-3 {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 1rem;
}

.league-hero-head h2 { margin: 0 0 .25rem; }

.league-filters {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem 1.5rem;
    margin-top: 1rem;
}

.league-filter-group {
    display: flex;
    flex-direction: column;
    gap: .35rem;
}

.league-filter-label {
    font-size: .72rem;
    font-weight: 600;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--muted);
}

.league-filter-summary {
    margin: .75rem 0 0;
    font-size: .85rem;
}

.league-section-title {
    margin: 0 0 .75rem;
    font-size: .92rem;
}

.league-section-head {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    margin-bottom: .75rem;
}

.league-section-head h2 { margin: 0; }

.league-kpi-grid {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
    gap: .75rem;
}

.league-kpi-grid li {
    padding: .65rem .75rem;
    border-radius: 8px;
    border: 1px solid var(--border);
    background: var(--surface2);
}

.league-kpi-grid span {
    display: block;
    font-size: .72rem;
    color: var(--muted);
    text-transform: uppercase;
    letter-spacing: .03em;
    margin-bottom: .25rem;
}

.league-kpi-grid strong { font-size: 1.25rem; }

.league-highlight-main { margin: 0 0 .35rem; }

.league-highlight-score {
    margin: 0 0 .35rem;
    font-size: 1.75rem;
    font-weight: 700;
    letter-spacing: .05em;
}

.league-mini-stat p { margin: 0 0 .25rem; }

.league-matchday-nav {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
}

.league-stats-table td strong { font-variant-numeric: tabular-nums; }

.league-tabs {
    margin-top: 1rem;
    margin-bottom: .5rem;
    flex-wrap: wrap;
}

.league-matchday-filters .league-filters {
    margin-top: 0;
}

.league-matchday-form {
    margin: 0;
}

.league-matchday-select {
    min-width: 9rem;
    padding: .45rem .65rem;
    border-radius: var(--radius-sm, 6px);
    border: 1px solid var(--border, rgba(255,255,255,.12));
    background: var(--surface-2, rgba(0,0,0,.2));
    color: inherit;
    font: inherit;
}

.league-team-link {
    color: inherit;
    text-decoration: none;
}

.league-team-link:hover .club-cell-name {
    text-decoration: underline;
}

.league-back-link {
    margin: 0 0 .5rem;
    font-size: .9rem;
}

.league-back-link a {
    color: var(--accent, #7dd3fc);
    text-decoration: none;
}

.league-back-link a:hover {
    text-decoration: underline;
}

.league-overview-table .league-team-link {
    display: inline-block;
}

.league-squad-table th,
.league-squad-table td {
    white-space: nowrap;
}

.card-stat-yellow { color: #eab308; font-weight: 600; }

/* —— Finanzen —— */
.finance-hero-head h2 { margin: 0 0 .25rem; }

.finance-tabs {
    margin-top: 1rem;
    margin-bottom: .5rem;
}

.finance-filters { margin-top: .75rem; }

.finance-month-toggle {
    flex-wrap: wrap;
    max-width: 100%;
}

.view-toggle-btn.is-static {
    cursor: default;
    pointer-events: none;
}

.finance-kpi-grid { margin-top: .5rem; }

.finance-positive { color: #22c55e; font-weight: 600; }

.finance-negative { color: #ef4444; font-weight: 600; }

.finance-guv-grid,
.finance-bilanz-grid {
    align-items: start;
}

.finance-total-row td {
    border-top: 1px solid var(--border);
    padding-top: .65rem;
}

.finance-guv-result {
    max-width: 28rem;
}

.finance-detail {
    display: block;
    font-size: .78rem;
    font-weight: 400;
    margin-top: .15rem;
}

.finance-bilanz-note {
    font-size: .82rem;
    max-width: 42rem;
}

.finance-verdict {
    margin-top: .75rem;
    padding: .85rem 1rem;
    border-radius: 8px;
    border-left: 4px solid var(--muted);
    background: var(--surface2);
}

.finance-verdict-title {
    margin: 0 0 .2rem;
    font-size: 1.15rem;
    font-weight: 650;
}

.finance-verdict-hint { margin: 0; }

.finance-verdict--good { border-left-color: #22c55e; }
.finance-verdict--warn { border-left-color: #f59e0b; }
.finance-verdict--bad { border-left-color: #ef4444; }
.finance-verdict--empty { border-left-color: var(--muted); }

.finance-auswertung-empty { max-width: 36rem; }

.finance-chart-card { min-width: 0; }

.finance-chart-lead {
    margin: 0 0 .75rem;
    font-size: .85rem;
}

.finance-chart-wrap {
    position: relative;
    height: 16rem;
}

.finance-chart-wrap--donut { height: 14rem; }

.finance-auswertung-grid { align-items: start; }

.finance-share-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}

.finance-share-label {
    margin: 0 0 .4rem;
    font-size: .85rem;
    font-weight: 600;
}

.finance-runway {
    margin-top: 1rem;
    padding-top: .85rem;
    border-top: 1px solid var(--border);
}

.finance-runway p { margin: 0 0 .35rem; }

@media (max-width: 720px) {
    .finance-share-grid { grid-template-columns: 1fr; }
    .finance-chart-wrap { height: 13rem; }
}

/* —— Fankultur —— */
.fankultur-hero-head h2 { margin: 0 0 .25rem; }

.fankultur-kpi-grid { margin-top: 1rem; }

.fankultur-mood--high { color: #22c55e; }

.fankultur-mood--mid { color: #eab308; }

.fankultur-mood--low { color: #ef4444; }

.fankultur-mood-bar {
    height: .45rem;
    border-radius: 999px;
    background: var(--border);
    overflow: hidden;
}

.fankultur-mood-bar-fill {
    height: 100%;
    border-radius: 999px;
    background: currentColor;
    transition: width .3s ease;
}

.fankultur-mood-bar-fill.fankultur-mood--high { background: #22c55e; }

.fankultur-mood-bar-fill.fankultur-mood--mid { background: #eab308; }

.fankultur-mood-bar-fill.fankultur-mood--low { background: #ef4444; }

.fankultur-section-head {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: .75rem;
}

.fankultur-action-card {
    display: block;
    cursor: pointer;
    transition: border-color .15s ease;
}

.fankultur-action-card:has(input:checked) {
    border-color: var(--accent, #3b82f6);
}

.fankultur-action-card input {
    margin-right: .35rem;
}

.fankultur-action-card strong {
    display: block;
    margin-bottom: .25rem;
}

.fankultur-links a {
    color: var(--accent, #3b82f6);
}

.fankultur-info-list {
    list-style: none;
    margin: 1rem 0 0;
    padding: 0;
    display: grid;
    gap: 1rem;
}

.fankultur-info-list li strong {
    display: block;
    margin-bottom: .2rem;
}

.fankultur-links-list {
    list-style: none;
    margin: .75rem 0 0;
    padding: 0;
    display: grid;
    gap: .45rem;
}

.fankultur-links-list a {
    color: var(--accent, #3b82f6);
}

.card-stat-red { color: #ef4444; font-weight: 600; }

.form-badges {
    display: inline-flex;
    gap: .2rem;
}

.form-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.25rem;
    height: 1.25rem;
    border-radius: 4px;
    font-size: .65rem;
    font-weight: 700;
    line-height: 1;
}

.form-badge-w { background: rgba(34, 197, 94, .2); color: #4ade80; }
.form-badge-d { background: rgba(148, 163, 184, .2); color: #cbd5e1; }
.form-badge-l { background: rgba(239, 68, 68, .2); color: #f87171; }

.view-toggle-btn {
    text-decoration: none;
    display: inline-block;
}

@media (max-width: 700px) {
    .league-filters { flex-direction: column; }
}

/* —— Matchday report —— */
.matchday-report-hero {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
}

.matchday-report-hero h2 { margin: 0 0 .25rem; }

.matchday-report-kpis {
    display: flex;
    flex-wrap: wrap;
    gap: .75rem;
}

.matchday-kpi {
    padding: .5rem .75rem;
    border-radius: 8px;
    border: 1px solid var(--border);
    background: var(--surface2);
    min-width: 140px;
}

.matchday-kpi span {
    display: block;
    font-size: .72rem;
    color: var(--muted);
    text-transform: uppercase;
    letter-spacing: .03em;
}

.matchday-kpi strong { font-size: 1rem; }

.matchday-section summary {
    cursor: pointer;
    list-style: none;
    padding: 0;
}

.matchday-section summary::-webkit-details-marker { display: none; }

.matchday-section summary h3 {
    margin: 0;
    font-size: 1rem;
    display: inline;
}

.matchday-section summary::before {
    content: '▸ ';
    color: var(--muted);
}

.matchday-section[open] summary::before { content: '▾ '; }

.matchday-section-body {
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid var(--border);
}

.matchday-scoreline {
    font-size: 1.1rem;
    margin: 0 0 .75rem;
}

.debug-kv {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: .35rem;
}

.debug-kv li {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    font-size: .88rem;
    color: var(--muted);
}

.debug-kv strong { color: var(--text); }

.debug-tag {
    display: inline-block;
    margin: .15rem .25rem .15rem 0;
    padding: .15rem .4rem;
    border-radius: 4px;
    background: var(--surface2);
    border: 1px solid var(--border);
    font-size: .75rem;
}

.event-timeline {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: .4rem;
}

.event-timeline-item {
    display: grid;
    grid-template-columns: 3rem 5rem 1fr;
    gap: .5rem;
    align-items: center;
    padding: .4rem .5rem;
    border-radius: 6px;
    background: var(--surface2);
    font-size: .88rem;
}

.event-minute {
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    color: var(--muted);
}

.event-goal { border-left: 3px solid #22c55e; }
.event-yellow { border-left: 3px solid #eab308; }
.event-substitution { border-left: 3px solid #0ea5e9; }
.event-red { border-left: 3px solid #ef4444; }

.delta-positive { color: #4ade80; font-weight: 600; }
.delta-negative { color: #f87171; font-weight: 600; }
.delta-neutral { color: var(--muted); }

/* —— Balance test —— */
.balance-test-actions {
    display: flex;
    flex-wrap: wrap;
    gap: .75rem;
    margin-top: 1rem;
}

.balance-test-status {
    margin: .75rem 0 0;
    font-size: .85rem;
}

.balance-compare-table td:nth-child(n+2) {
    font-variant-numeric: tabular-nums;
}

.sim-overlay {
    position: fixed;
    inset: 0;
    z-index: 2000;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(8, 12, 20, .78);
    backdrop-filter: blur(4px);
}

.sim-overlay[hidden] {
    display: none !important;
}

.sim-overlay__panel {
    width: min(24rem, calc(100vw - 2rem));
    padding: 1.75rem 1.5rem;
    border-radius: 12px;
    background: var(--surface, #151b28);
    border: 1px solid rgba(255, 255, 255, .1);
    box-shadow: 0 16px 48px rgba(0, 0, 0, .45);
    text-align: center;
}

.sim-overlay__title {
    margin: .85rem 0 .35rem;
    font-size: 1.15rem;
}

.sim-overlay__message {
    margin: 0;
    color: var(--text, #e8edf5);
}

.sim-overlay__hint {
    margin: .85rem 0 0;
    font-size: .82rem;
}

.sim-overlay__spinner {
    width: 2.75rem;
    height: 2.75rem;
    margin: 0 auto;
    border: 3px solid rgba(255, 255, 255, .12);
    border-top-color: var(--accent, #60a5fa);
    border-radius: 50%;
    animation: sim-overlay-spin .8s linear infinite;
}

@keyframes sim-overlay-spin {
    to { transform: rotate(360deg); }
}

.balance-test-overlay {
    position: fixed;
    inset: 0;
    z-index: 2000;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(8, 12, 20, .72);
    backdrop-filter: blur(4px);
}

.balance-test-overlay[hidden] {
    display: none !important;
}

.balance-test-overlay__panel {
    width: min(24rem, calc(100vw - 2rem));
    padding: 1.5rem;
    border-radius: 12px;
    background: var(--surface, #151b28);
    border: 1px solid rgba(255, 255, 255, .08);
    text-align: center;
}

.balance-test-overlay__title {
    margin: .75rem 0 .35rem;
    font-size: 1.1rem;
}

.balance-test-overlay__message {
    margin: 0 0 1rem;
    color: var(--text, #e8edf5);
}

.balance-test-overlay__hint {
    margin: .75rem 0 0;
    font-size: .82rem;
}

.balance-test-spinner {
    width: 2.5rem;
    height: 2.5rem;
    margin: 0 auto;
    border: 3px solid rgba(255, 255, 255, .12);
    border-top-color: var(--accent, #60a5fa);
    border-radius: 50%;
    animation: balance-test-spin .8s linear infinite;
}

@keyframes balance-test-spin {
    to { transform: rotate(360deg); }
}

/* --- Kontakt / Feedback (global) --- */
.contact-widget {
    position: fixed;
    right: 1rem;
    bottom: 1rem;
    z-index: 1800;
}

.contact-fab {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    padding: .65rem .9rem;
    border-radius: 999px;
    border: 1px solid rgba(96, 165, 250, .45);
    background: linear-gradient(180deg, rgba(37, 99, 235, .95), rgba(29, 78, 216, .95));
    color: #fff;
    font: inherit;
    font-size: .88rem;
    font-weight: 600;
    box-shadow: 0 8px 24px rgba(0, 0, 0, .35);
    cursor: pointer;
}

.contact-fab:hover {
    filter: brightness(1.06);
}

.contact-fab__icon {
    font-size: 1rem;
    line-height: 1;
}

.contact-overlay {
    position: fixed;
    inset: 0;
    z-index: 2100;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    background: rgba(8, 12, 20, .72);
    backdrop-filter: blur(2px);
}

.contact-panel {
    width: min(32rem, calc(100vw - 2rem));
    max-height: calc(100vh - 2rem);
    overflow: auto;
    padding: 1.25rem 1.25rem 1.1rem;
    border-radius: 12px;
    border: 1px solid rgba(255, 255, 255, .08);
    background: var(--panel, #111827);
    box-shadow: 0 16px 48px rgba(0, 0, 0, .45);
}

.contact-panel__header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: .75rem;
    margin-bottom: .75rem;
}

.contact-panel__title {
    margin: 0;
    font-size: 1.15rem;
}

.contact-panel__subtitle {
    margin: .25rem 0 0;
    font-size: .85rem;
}

.contact-panel__close {
    flex: 0 0 auto;
    width: 2rem;
    height: 2rem;
    border: 0;
    border-radius: 8px;
    background: rgba(255, 255, 255, .06);
    color: inherit;
    font-size: 1.35rem;
    line-height: 1;
    cursor: pointer;
}

.contact-context {
    margin: .75rem 0 1rem;
    padding: .65rem .75rem;
    border-radius: 8px;
    background: rgba(255, 255, 255, .04);
    font-size: .88rem;
}

.contact-context__label {
    display: block;
    margin-bottom: .15rem;
    font-size: .75rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    opacity: .7;
}

.contact-form__actions {
    display: flex;
    justify-content: flex-end;
    gap: .5rem;
    margin-top: .25rem;
}

@media (max-width: 520px) {
    .contact-fab__label {
        display: none;
    }

    .contact-fab {
        width: 3rem;
        height: 3rem;
        justify-content: center;
        padding: 0;
        border-radius: 50%;
    }
}

.balance-test-progress {
    height: .45rem;
    border-radius: 999px;
    background: rgba(255, 255, 255, .08);
    overflow: hidden;
}

.balance-test-progress__bar {
    height: 100%;
    background: linear-gradient(90deg, #3b82f6, #60a5fa);
    transition: width .35s ease;
}

body.balance-test-running {
    overflow: hidden;
}

/* —— Dauer-Simulation —— */
.dauer-simulation-controls {
    display: flex;
    flex-wrap: wrap;
    gap: .75rem;
    align-items: center;
    margin-top: 1rem;
}

.sticky-controls {
    position: sticky;
    top: .5rem;
    z-index: 100;
    padding: .75rem;
    border-radius: 8px;
    background: rgba(21, 27, 40, .95);
    border: 1px solid rgba(255, 255, 255, .08);
}

.dauer-sim-status {
    margin-top: .75rem;
    font-size: .85rem;
}

.dauer-simulation-report .matchday-section summary h3 {
    display: inline;
    margin: 0;
}

.dauer-sim-player-table {
    font-size: .78rem;
    white-space: nowrap;
}

.table-scroll {
    overflow-x: auto;
}

.checkbox-row {
    display: flex;
    align-items: center;
    gap: .5rem;
}

.balance-trace-table-wrap {
    overflow-x: auto;
    margin-top: 1rem;
}

.balance-trace-table {
    font-size: .85rem;
}

.balance-trace-table td,
.balance-trace-table th {
    white-space: nowrap;
}

.balance-trace-training,
.balance-trace-match {
    max-width: 14rem;
    white-space: normal;
}

.balance-trace-detail-row td {
    padding: 0;
    border-top: none;
    background: rgba(0, 0, 0, .15);
}

.balance-trace-detail-row details {
    padding: .75rem 1rem;
}

.balance-trace-detail-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
    gap: 1rem;
}

.balance-trace-attrs {
    columns: 2;
    column-gap: 1.5rem;
}

.balance-trace-final {
    margin: 1rem 0 0;
    font-size: .85rem;
}

/* —— Planned features —— */
.sidebar-nav-link--meta {
    margin-top: .5rem;
    padding-top: .75rem;
    border-top: 1px solid rgba(255, 255, 255, .06);
    font-size: .9rem;
    color: var(--muted);
}

.sidebar-nav-link--meta.is-active,
.sidebar-nav-link--meta:hover {
    color: var(--text);
}

.planned-intro h2,
.planned-section h2,
.planned-done h2 {
    margin-top: 0;
}

.planned-updated {
    margin-bottom: 0;
    font-size: .85rem;
}

.planned-sections {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    margin-top: 1rem;
}

.planned-section-intro {
    margin-top: -.25rem;
}

.planned-list {
    list-style: none;
    margin: 1rem 0 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.planned-item {
    padding: 1rem;
    border-radius: 10px;
    background: rgba(0, 0, 0, .18);
    border: 1px solid rgba(255, 255, 255, .05);
}

.planned-item-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: .75rem;
    margin-bottom: .35rem;
}

.planned-item h3 {
    margin: 0;
    font-size: 1rem;
}

.planned-item p {
    margin: 0;
    color: var(--muted);
    line-height: 1.5;
}

.planned-badge {
    flex-shrink: 0;
    padding: .2rem .55rem;
    border-radius: 999px;
    font-size: .72rem;
    font-weight: 600;
    letter-spacing: .02em;
    text-transform: uppercase;
}

.planned-badge--soon {
    background: rgba(59, 130, 246, .2);
    color: #93c5fd;
}

.planned-badge--progress {
    background: rgba(234, 179, 8, .18);
    color: #fde047;
}

.planned-badge--discuss {
    background: rgba(168, 85, 247, .18);
    color: #d8b4fe;
}

.planned-badge--v2 {
    background: rgba(148, 163, 184, .15);
    color: #cbd5e1;
}

.planned-badge--done {
    background: rgba(34, 197, 94, .18);
    color: #86efac;
}

.planned-checklist {
    margin: .75rem 0 0;
    padding-left: 1.25rem;
    color: var(--muted);
    line-height: 1.6;
}

.planned-checklist li + li {
    margin-top: .35rem;
}

/* ── Völkischer Trier Freund — 90er-Zeitung ── */

.newspaper-wrap {
    margin: -1rem -1.5rem 0;
    padding: 1.5rem;
    background: #2a2520;
}

.newspaper {
    max-width: 960px;
    margin: 0 auto;
    padding: 1.25rem 1.5rem 1rem;
    background: #f4f0e6;
    color: #111;
    font-family: "Times New Roman", Times, Georgia, serif;
    box-shadow: 0 8px 32px rgba(0, 0, 0, .45);
    border: 1px solid #ccc;
}

.newspaper-masthead-meta {
    display: flex;
    justify-content: space-between;
    font-size: .72rem;
    text-transform: uppercase;
    letter-spacing: .06em;
    border-bottom: 1px solid #111;
    padding-bottom: .35rem;
    margin-bottom: .5rem;
}

.newspaper-title {
    margin: 0;
    text-align: center;
    font-size: clamp(2rem, 4.5vw, 3rem);
    font-weight: 900;
    letter-spacing: .04em;
    line-height: 1;
    text-transform: uppercase;
}

.newspaper-subtitle {
    text-align: center;
    margin: .35rem 0 .75rem;
    font-size: .78rem;
    font-style: italic;
    color: #333;
}

.newspaper-masthead-rule {
    height: 3px;
    background: #111;
    margin-bottom: 2px;
}

.newspaper-masthead-rule::after {
    content: "";
    display: block;
    height: 1px;
    background: #111;
    margin-top: 3px;
}

.newspaper-masthead-band {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: .5rem;
    font-size: .68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .05em;
    padding: .35rem 0;
    border-bottom: 2px solid #111;
    margin-bottom: 1rem;
}

.newspaper-masthead-band-center {
    flex: 1;
    text-align: center;
}

/* Haupt-Grid: Berichte links, Pflicht-Boxen rechts */
.newspaper-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 210px;
    gap: 1.25rem;
    align-items: start;
}

.newspaper-main {
    min-width: 0;
}

/* Zwei Spielberichte nebeneinander */
.newspaper-match-reports {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
    padding-bottom: 1rem;
    border-bottom: 2px solid #111;
}

.newspaper-report {
    display: flex;
    flex-direction: column;
    min-width: 0;
    padding: 0 .15rem;
    border-right: 1px solid #bbb;
}

.newspaper-report:last-child {
    border-right: none;
    padding-right: 0;
    padding-left: .15rem;
}

.newspaper-report-photo {
    margin: 0 0 .5rem;
    order: -1;
}

.newspaper-report-photo img,
.newspaper-report-photo .newspaper-photo-placeholder {
    display: block;
    width: 100%;
    height: 110px;
    object-fit: cover;
    border: 1px solid #666;
}

.newspaper-report-photo img {
    filter: grayscale(100%) contrast(1.12);
}

.newspaper-report-photo figcaption {
    font-size: .6rem;
    font-style: italic;
    color: #555;
    margin-top: .2rem;
}

.newspaper-kicker {
    margin: 0 0 .2rem;
    font-size: .68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .07em;
    color: #444;
}

.newspaper-report-headline {
    margin: 0 0 .35rem;
    font-size: 1.05rem;
    font-weight: 900;
    line-height: 1.2;
}

.newspaper-score {
    margin: 0 0 .4rem;
    font-size: 1.75rem;
    font-weight: 900;
    letter-spacing: .08em;
    text-align: center;
    line-height: 1;
    border-top: 1px solid #999;
    border-bottom: 1px solid #999;
    padding: .25rem 0;
}

.newspaper-body {
    margin: 0;
    font-size: .82rem;
    line-height: 1.45;
    text-align: justify;
    hyphens: auto;
}

.newspaper-quote {
    margin: .65rem 0 .25rem;
    padding: .45rem .6rem;
    border-left: 3px solid #333;
    font-family: Georgia, 'Times New Roman', serif;
    font-size: .88rem;
    font-style: italic;
    line-height: 1.4;
    color: #222;
}

.newspaper-quote-meta {
    margin: 0 0 .35rem;
    font-size: .68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: #555;
}

.newspaper-report-meta {
    margin: .4rem 0 0;
    font-size: .68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: #555;
}

.newspaper-photo-placeholder {
    background:
        repeating-linear-gradient(
            45deg,
            #d8d4cc 0,
            #d8d4cc 2px,
            #c8c4bc 2px,
            #c8c4bc 4px
        );
    position: relative;
}

.newspaper-photo-placeholder::after {
    content: "FOTO";
    position: absolute;
    inset: 0;
    display: grid;
    place-items: center;
    font-size: .7rem;
    font-weight: 700;
    letter-spacing: .2em;
    color: #666;
}

/* 2–3 Kurzmeldungen unten, ohne Bilder */
.newspaper-extras {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .85rem;
    margin-top: 1rem;
    padding-top: .75rem;
}

.newspaper-extra {
    min-width: 0;
    border-top: 3px solid #111;
    padding-top: .45rem;
}

.newspaper-extra-headline {
    margin: 0 0 .3rem;
    font-size: .92rem;
    font-weight: 900;
    line-height: 1.2;
}

/* Sidebar: Tabelle + Torschützen */
.newspaper-sidebar {
    display: flex;
    flex-direction: column;
    gap: .85rem;
    position: sticky;
    top: .5rem;
}

.newspaper-box {
    border: 2px solid #111;
    padding: .5rem .55rem;
}

.newspaper-box-title {
    margin: 0 0 .45rem;
    font-size: .72rem;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: .06em;
    text-align: center;
    border-bottom: 1px solid #111;
    padding-bottom: .25rem;
}

.newspaper-standings {
    width: 100%;
    border-collapse: collapse;
    font-size: .66rem;
}

.newspaper-standings th,
.newspaper-standings td {
    padding: .12rem .15rem;
    border-bottom: 1px dotted #aaa;
}

.newspaper-standings th {
    font-size: .6rem;
    text-transform: uppercase;
    border-bottom: 1px solid #111;
}

.newspaper-standings tr.is-own {
    font-weight: 700;
    background: rgba(0, 0, 0, .07);
}

.newspaper-standings tr.is-trier td:nth-child(2) {
    font-weight: 700;
}

.newspaper-scorers {
    margin: 0;
    padding-left: 1rem;
    font-size: .7rem;
    line-height: 1.45;
}

.newspaper-scorers li span {
    display: block;
    font-size: .62rem;
    color: #555;
}

.newspaper-footer {
    margin-top: 1rem;
    padding-top: .65rem;
    border-top: 3px double #111;
    text-align: center;
    font-size: .62rem;
    color: #555;
    line-height: 1.5;
}

.newspaper-footer-note {
    margin: .25rem 0 0;
    font-style: italic;
}

@media (max-width: 780px) {
    .newspaper-wrap {
        margin: -1rem -.75rem 0;
        padding: .75rem;
    }

    .newspaper {
        padding: 1rem;
    }

    .newspaper-layout {
        grid-template-columns: 1fr;
    }

    .newspaper-sidebar {
        position: static;
        order: -1;
    }

    .newspaper-match-reports {
        grid-template-columns: 1fr;
    }

    .newspaper-report {
        border-right: none;
        border-bottom: 1px solid #bbb;
        padding: 0 0 1rem;
    }

    .newspaper-report:last-child {
        border-bottom: none;
        padding-bottom: 0;
    }

    .newspaper-extras {
        grid-template-columns: 1fr;
    }

    .newspaper-masthead-band {
        flex-direction: column;
        text-align: center;
    }
}

/* —— Hoher Kontrast (Schwarz auf Weiß) —— */
:root[data-contrast="high"] a {
    color: #0000cc;
    text-decoration: underline;
}
:root[data-contrast="high"] a:hover {
    color: #000;
}
:root[data-contrast="high"] .brand-mark {
    background: #fff;
    border: 2px solid #000;
    color: #000;
}
:root[data-contrast="high"] .brand-lockup-img--dark { display: none !important; }
:root[data-contrast="high"] .brand-lockup-img--light { display: block !important; }
:root[data-contrast="high"] .brand-switch:hover {
    box-shadow: 0 0 0 2px #000;
}
:root[data-contrast="high"] .sidebar-nav-link.is-active {
    background: #000;
    color: #fff;
    border: 2px solid #000;
}
:root[data-contrast="high"] .sidebar-nav-link.is-active .nav-icon {
    filter: brightness(0) invert(1);
}
:root[data-contrast="high"] .sidebar-nav-link.is-active .nav-icon-fallback {
    background: #fff;
    color: #000;
    border: 2px solid #fff;
}
:root[data-contrast="high"] .club-switch-option.is-active {
    background: #000;
    color: #fff;
    border: 2px solid #000;
}
:root[data-contrast="high"] .page-banner-overlay {
    background: linear-gradient(to top, rgba(255, 255, 255, .95) 0%, rgba(255, 255, 255, .75) 55%, transparent 100%);
}
:root[data-contrast="high"] .page-banner-title {
    color: #000;
    text-shadow: none;
}
:root[data-contrast="high"] .btn,
:root[data-contrast="high"] .view-toggle-btn {
    border: 2px solid #000;
}
:root[data-contrast="high"] .btn-primary {
    background: #000;
    border-color: #000;
    color: #fff;
}
:root[data-contrast="high"] .view-toggle-btn.is-active {
    background: #000;
    color: #fff;
}
:root[data-contrast="high"] .alert-error,
:root[data-contrast="high"] .alert-success,
:root[data-contrast="high"] .alert-warning {
    background: #fff;
    border-width: 2px;
    color: #000;
}
:root[data-contrast="high"] .data-table tr.highlight {
    background: #e8e8e8;
    outline: 2px solid #000;
}
:root[data-contrast="high"] .form input,
:root[data-contrast="high"] .form select,
:root[data-contrast="high"] .form textarea {
    border-width: 2px;
    background: #fff;
}
:root[data-contrast="high"] .card,
:root[data-contrast="high"] .topbar,
:root[data-contrast="high"] .view-toggle,
:root[data-contrast="high"] .sidebar,
:root[data-contrast="high"] .club-switch-menu {
    border-width: 2px;
}
:root[data-contrast="high"] .topbar {
    border-bottom: 2px solid #000;
    box-shadow: none;
}
:root[data-contrast="high"] .stadium-level-badge {
    background: #000;
    color: #fff;
    border: 2px solid #000;
}
:root[data-contrast="high"] .stadium-plan {
    background: #fff;
    border: 2px dashed #000;
}
:root[data-contrast="high"] :focus-visible {
    outline: 3px solid #000;
    outline-offset: 2px;
}

:root[data-contrast="high"] .sponsor-deal-badge,
:root[data-contrast="high"] .sponsor-deal-badge--fest,
:root[data-contrast="high"] .sponsor-deal-badge--heim,
:root[data-contrast="high"] .sponsor-deal-badge--sieger {
    background: #fff;
    border: 2px solid #000;
    color: #000;
}
:root[data-contrast="high"] .sponsor-deal-model-card {
    background: #fff;
    border: 2px solid #000;
}
:root[data-contrast="high"] .sponsor-deal-model-card--fest,
:root[data-contrast="high"] .sponsor-deal-model-card--heim,
:root[data-contrast="high"] .sponsor-deal-model-card--sieger {
    border-color: #000;
}
:root[data-contrast="high"] .sponsor-candidate-card--fest,
:root[data-contrast="high"] .sponsor-candidate-card--heim,
:root[data-contrast="high"] .sponsor-candidate-card--sieger {
    border-color: #000;
    border-width: 2px;
}
:root[data-contrast="high"] .topbar-treasury {
    background: #fff;
    border: 2px solid #000;
}
:root[data-contrast="high"] .topbar-treasury-amount {
    color: #000;
}
:root[data-contrast="high"] .topbar-treasury--debt .topbar-treasury-amount {
    color: #cc0000;
}
:root[data-contrast="high"] .topbar-treasury-label {
    color: #000;
}
:root[data-contrast="high"] .version-switch--topbar,
:root[data-contrast="high"] .version-switch--brand {
    background: #fff;
    color: #000;
    border: 2px solid #000;
    box-shadow: none;
}
:root[data-contrast="high"] .version-switch--topbar.version-switch--v1,
:root[data-contrast="high"] .version-switch--topbar.version-switch--v2,
:root[data-contrast="high"] .version-switch--brand.version-switch--v1,
:root[data-contrast="high"] .version-switch--brand.version-switch--v2 {
    background: #fff;
    color: #000;
}

/* Aufstellung — Hoher Kontrast */
:root[data-contrast="high"] .lineup-player-chip {
    background: #fff;
    border: 2px solid #000;
    color: #000;
    backdrop-filter: none;
}
:root[data-contrast="high"] .lineup-player-name,
:root[data-contrast="high"] .lineup-player-chip--bench .lineup-player-name {
    color: #000;
}
:root[data-contrast="high"] .lineup-player-meta {
    color: #333;
}
:root[data-contrast="high"] .lineup-player-malus {
    color: #cc0000;
}
:root[data-contrast="high"] .lineup-player-photo,
:root[data-contrast="high"] .lineup-player-photo.is-fallback {
    background: #fff;
    border: 1px solid #000;
}
:root[data-contrast="high"] .lineup-player-clear {
    background: #fff;
    border: 1px solid #000;
    color: #000;
    opacity: 1;
}
:root[data-contrast="high"] .lineup-slot-empty {
    background: #fff;
    border: 2px dashed #000;
    color: #000;
}
:root[data-contrast="high"] .lineup-slot-pos {
    color: #000;
    text-shadow: none;
    background: #fff;
    padding: 0 .25rem;
    border: 1px solid #000;
    border-radius: 3px;
}
:root[data-contrast="high"] .lineup-sidebar,
:root[data-contrast="high"] .lineup-bench {
    background: #fff;
    border: 2px solid #000;
}
:root[data-contrast="high"] .lineup-squad-tile,
:root[data-contrast="high"] .lineup-squad-item {
    background: #fff;
    border: 2px solid #000;
}
:root[data-contrast="high"] .lineup-squad-tile-meta strong,
:root[data-contrast="high"] .lineup-squad-item-meta strong {
    color: #000;
}
:root[data-contrast="high"] .lineup-squad-tile-stats {
    color: #333;
}
:root[data-contrast="high"] .lineup-pitch {
    border: 2px solid #000;
}
:root[data-contrast="high"] .lineup-strength--high .lineup-strength-value { color: #006600; }
:root[data-contrast="high"] .lineup-strength--mid .lineup-strength-value { color: #664400; }
:root[data-contrast="high"] .lineup-strength--low .lineup-strength-value { color: #cc0000; }
:root[data-contrast="high"] .lineup-strength-warn { color: #cc0000; }
:root[data-contrast="high"] .unavailable-chip.is-yellow-ban { color: #664400; border-color: #000; background: #fef08a; }
:root[data-contrast="high"] .unavailable-chip.is-red-ban { color: #cc0000; border-color: #000; background: #fecaca; }
:root[data-contrast="high"] .unavailable-chip.is-injured { color: #664400; border-color: #000; }

/* Geplante Features (Roadmap-Seite) */
.planned-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 1rem;
    margin-top: .75rem;
}
.planned-card {
    border: 1px solid var(--border);
    border-left-width: 3px;
    border-radius: var(--radius);
    padding: .9rem 1rem;
    background: rgba(255, 255, 255, .02);
}
.planned-card.is-progress { border-left-color: #3b82f6; }
.planned-card.is-ready { border-left-color: #22c55e; }
.planned-card.is-idea { border-left-color: #a1a1aa; }
.planned-card.is-bug { border-left-color: #ef4444; background: rgba(239, 68, 68, .04); }
.planned-bugs-intro { margin-bottom: 1rem; max-width: 72ch; }
.planned-card.is-bug .planned-badge { background: rgba(239, 68, 68, .15); color: #fca5a5; border-color: rgba(239, 68, 68, .35); }
.planned-card-head {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: .6rem;
    margin-bottom: .4rem;
}
.planned-card-head h4 { margin: 0; }
.planned-badge {
    flex-shrink: 0;
    font-size: .66rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    padding: .2rem .45rem;
    border-radius: 6px;
    background: var(--surface2);
    color: var(--muted);
    border: 1px solid var(--border);
}
.planned-card.is-progress .planned-badge { background: rgba(59, 130, 246, .15); color: #93c5fd; border-color: rgba(59, 130, 246, .35); }
.planned-card.is-ready .planned-badge { background: rgba(34, 197, 94, .15); color: #86efac; border-color: rgba(34, 197, 94, .35); }
.planned-later-list {
    list-style: none;
    padding: 0;
    margin: .5rem 0 0;
    display: grid;
    gap: .1rem;
}
.planned-later-list li {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    align-items: baseline;
    padding: .5rem 0;
    border-bottom: 1px solid var(--border);
}
.planned-later-list li:last-child { border-bottom: none; }
.planned-subhead {
    margin: 1rem 0 .35rem;
    font-size: .95rem;
    font-weight: 600;
    color: var(--text-muted, #a1a1aa);
}
.planned-done-list {
    list-style: none;
    padding: 0;
    margin: .5rem 0 0;
    display: grid;
    gap: .35rem;
}
.planned-done-list li { display: flex; gap: .5rem; align-items: center; color: var(--muted); }
.planned-done-intro { margin-bottom: 1rem; max-width: 72ch; }
.planned-release-group {
    padding: .85rem 0;
    border-bottom: 1px solid var(--border);
}
.planned-release-group:last-child { border-bottom: none; padding-bottom: 0; }
.planned-release-head {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .45rem .65rem;
    margin: 0 0 .55rem;
    font-size: .95rem;
    font-weight: 700;
}
.planned-release-head time { color: var(--text); }
.planned-release-head > span:not(.planned-badge) { color: var(--muted); font-weight: 600; }
.planned-badge-mail {
    background: rgba(234, 179, 8, .12);
    color: #fde68a;
    border-color: rgba(234, 179, 8, .35);
}
.planned-badge-sent {
    background: rgba(34, 197, 94, .12);
    color: #86efac;
    border-color: rgba(34, 197, 94, .35);
}
.planned-item-link {
    margin-left: .25rem;
    color: var(--accent);
    text-decoration: none;
    font-weight: 700;
}
.planned-item-link:hover { text-decoration: underline; }
.admin-mail-form {
    display: grid;
    gap: .75rem;
}
.admin-mail-mega {
    align-items: flex-start;
    padding: .75rem 1rem;
    border: 1px solid rgba(245, 158, 11, .45);
    background: rgba(245, 158, 11, .1);
    border-radius: var(--radius);
}
.admin-mail-mega-badge {
    display: inline-block;
    margin-left: .35rem;
    padding: .05rem .4rem;
    border-radius: 999px;
    background: #f59e0b;
    color: #111;
    font-size: .68rem;
    font-weight: 800;
    letter-spacing: .04em;
    vertical-align: .1em;
}
.admin-mail-picker {
    display: grid;
    gap: .75rem;
}
.admin-mail-picker-release {
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: .75rem 1rem;
    background: rgba(0, 0, 0, .15);
}
.admin-mail-picker-release h3 {
    margin: 0 0 .45rem;
    font-size: .92rem;
}
.admin-mail-item {
    display: flex;
    align-items: flex-start;
    gap: .5rem;
    padding: .28rem 0;
    font-size: .88rem;
    cursor: pointer;
}
.admin-mail-item input {
    margin-top: .22rem;
    flex-shrink: 0;
}
.admin-mail-picker-hint {
    margin: 0;
    font-size: .82rem;
}
.admin-mail-picker-hint code {
    font-size: .8em;
}
.admin-mail-preview summary {
    cursor: pointer;
    color: var(--accent);
    font-weight: 600;
}
.admin-mail-preview-body {
    margin-top: .75rem;
    padding: .85rem 1rem;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    background: rgba(0, 0, 0, .2);
    white-space: pre-wrap;
    word-break: break-word;
    font-size: .82rem;
    line-height: 1.45;
    max-height: 24rem;
    overflow: auto;
}
.planned-check {
    display: inline-grid;
    place-items: center;
    width: 18px; height: 18px;
    flex-shrink: 0;
    border-radius: 50%;
    background: rgba(34, 197, 94, .15);
    color: #22c55e;
    font-size: .72rem;
    font-weight: 700;
}

/* Ausfälle (Sperren/Verletzungen) auf der Aufstellungsseite */
.lineup-unavailable {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem;
    margin: .5rem 0 1rem;
    padding: .6rem .8rem;
    border-radius: var(--radius);
    background: rgba(239, 68, 68, .08);
    border: 1px solid rgba(239, 68, 68, .25);
    font-size: .9rem;
}
.unavailable-chip {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    padding: .2rem .5rem;
    border-radius: 6px;
    font-size: .8rem;
    font-weight: 600;
    border: 1px solid var(--border);
    background: var(--surface2);
}
.unavailable-chip.is-yellow-ban { color: #fde047; border-color: rgba(234, 179, 8, .55); background: rgba(234, 179, 8, .08); }
.unavailable-chip.is-red-ban { color: #fca5a5; border-color: rgba(239, 68, 68, .4); background: rgba(239, 68, 68, .08); }
.unavailable-chip.is-injured { color: #fdba74; border-color: rgba(249, 115, 22, .4); }

/* Transfermarkt */
.transfer-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; flex-wrap: wrap; }
.transfer-treasury { text-align: right; flex-shrink: 0; }
.transfer-treasury span { display: block; font-size: .75rem; color: var(--muted); }
.transfer-treasury strong { font-size: 1.15rem; }
.transfer-hint { margin-top: 0; font-size: .85rem; }
.transfer-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: .75rem; margin-top: .5rem; }
.transfer-card { border: 1px solid var(--border); border-radius: var(--radius); padding: .7rem .8rem; background: rgba(255,255,255,.02); }
.transfer-card-head { display: flex; align-items: center; gap: .5rem; }
.transfer-card-head strong { flex: 1; }
.transfer-pos { font-size: .68rem; font-weight: 700; padding: .12rem .35rem; border-radius: 5px; background: var(--surface2); border: 1px solid var(--border); color: var(--muted); }
.transfer-ovr { font-weight: 700; font-size: 1rem; }
.transfer-card-meta { font-size: .78rem; margin: .35rem 0 .55rem; }
.transfer-card-action { display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.transfer-fee { font-size: .8rem; color: var(--muted); }
.transfer-sell-list { overflow-x: auto; }
.transfer-tag { font-size: .65rem; font-weight: 700; padding: .1rem .35rem; border-radius: 5px; margin-left: .35rem; background: rgba(59,130,246,.15); color: #93c5fd; }
.transfer-tag--out { background: rgba(239,68,68,.15); color: #fca5a5; }
.data-table .num { text-align: right; }

/* Spielbericht */
.report-hero { text-align: center; }
.report-comp { font-size: .8rem; margin-bottom: .75rem; }
.report-score { display: flex; align-items: center; justify-content: center; gap: 1.5rem; }
.report-team { display: flex; flex-direction: column; align-items: center; gap: .4rem; flex: 1; max-width: 40%; }
.report-crest { width: 56px; height: 56px; object-fit: contain; }
.report-team span { font-weight: 600; text-align: center; }
.report-result { font-size: 2.4rem; font-weight: 800; letter-spacing: .05em; }
.report-result span { margin: 0 .2rem; color: var(--muted); }
.report-timeline { list-style: none; padding: 0; margin: .5rem 0 0; display: grid; gap: .3rem; }
.report-ev { display: flex; align-items: center; gap: .6rem; padding: .35rem .5rem; border-radius: 6px; background: rgba(255,255,255,.02); }
.report-ev--away { flex-direction: row-reverse; text-align: right; background: rgba(59,130,246,.05); }
.report-ev-min { font-variant-numeric: tabular-nums; font-weight: 700; color: var(--muted); min-width: 2.5rem; }
.report-ev-badge { font-size: .75rem; font-weight: 700; padding: .1rem .4rem; border-radius: 5px; border: 1px solid var(--border); white-space: nowrap; }
.report-ev-text { flex: 1; min-width: 0; }
.report-ev-player {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    max-width: 100%;
}
.report-ev-player--away { flex-direction: row-reverse; }
.report-ev-player > span:last-child { min-width: 0; }
.ev-goal { background: rgba(34,197,94,.15); }
.ev-red { background: rgba(239,68,68,.15); }
.ev-injury { background: rgba(249,115,22,.12); }
.report-stats { display: grid; gap: .3rem; margin-top: .5rem; }
.report-stat-row { display: grid; grid-template-columns: 3rem 1fr 3rem; align-items: center; padding: .3rem 0; border-bottom: 1px solid var(--border); }
.report-stat-label { text-align: center; color: var(--muted); font-size: .9rem; }
.report-stat-h { font-weight: 700; text-align: left; }
.report-stat-a { font-weight: 700; text-align: right; }

/* Rheinlandpokal */
.pokal-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; flex-wrap: wrap; }
.pokal-winner { text-align: right; }
.pokal-winner span { display: block; font-size: .75rem; color: var(--muted); }
.pokal-winner strong { font-size: 1.1rem; }
/* minmax(0, 1fr) statt 1fr: sonst ist die Mindestbreite einer Spalte der
   längste Vereinsname, die Spalten können nicht schrumpfen und das Raster
   erzwingt ein eigenes Scrollfenster im Panel. Deshalb auch kein overflow-x. */
.pokal-bracket { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
/* Flex-Spalte statt height:100% auf den Paarungen: 100% hätte sich auf die
   ganze Spalte *inklusive* Überschrift bezogen — der Block wäre um genau die
   Titelhöhe unten aus der Karte gelaufen. flex:1 nimmt korrekt den Rest. */
.pokal-round { display: flex; flex-direction: column; min-width: 0; }
.pokal-round-title { font-size: .8rem; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); margin: 0 0 .6rem; }
.pokal-round-ties { display: grid; gap: 1rem; align-content: space-around; flex: 1; }
.admin-export-form {
    display: flex;
    flex-wrap: wrap;
    align-items: end;
    gap: .75rem;
}

.admin-export-label {
    display: grid;
    gap: .25rem;
    font-size: .85rem;
}

.pokal-tie { border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; background: rgba(255,255,255,.02); }
.pokal-tie--link {
    display: block;
    color: inherit;
    text-decoration: none;
    transition: border-color .15s ease, transform .15s ease, box-shadow .15s ease;
}
.pokal-tie--link:hover {
    border-color: var(--accent, #60a5fa);
    box-shadow: 0 0 0 1px rgba(96, 165, 250, .25);
    transform: translateY(-1px);
}
.pokal-tie-report-hint {
    display: block;
    padding: .35rem .65rem .55rem;
    font-size: .78rem;
    color: var(--accent, #60a5fa);
    border-top: 1px solid var(--border);
    background: rgba(96, 165, 250, .06);
}
.report-pens {
    display: block;
    margin-top: .25rem;
    font-size: .85rem;
    font-weight: 600;
    opacity: .85;
}
.pokal-side { display: flex; justify-content: space-between; align-items: center; gap: .5rem; padding: .5rem .7rem; border-bottom: 1px solid var(--border); }
.pokal-side:last-child { border-bottom: none; }
.pokal-side.is-winner { background: rgba(34,197,94,.12); font-weight: 700; }
.pokal-side.is-own .pokal-team { color: #93c5fd; }
.pokal-side.is-human .pokal-team { color: #93c5fd; }
/* Der Name darf umbrechen, die Ziffern nicht schrumpfen — sonst schiebt ein
   langer Vereinsname die Paarung wieder über die Spaltenbreite hinaus. */
.pokal-team { font-size: .9rem; flex: 1; min-width: 0; overflow-wrap: anywhere; hyphens: auto; }
.pokal-goals { font-variant-numeric: tabular-nums; font-weight: 700; min-width: 1.5rem; text-align: right; flex-shrink: 0; }
.pokal-goals small { color: var(--muted); font-weight: 500; }
/* Bewusst 3 → 1: ein Turnierbaum liest sich links nach rechts. Zwei Spalten
   würden Viertel-/Halbfinale nebeneinander und das Finale darunter setzen. */
@media (max-width: 720px) { .pokal-bracket { grid-template-columns: 1fr; } }

.pokal-round-date { display: block; font-size: .7rem; color: var(--muted); font-weight: 500; margin-top: .15rem; }

/* ── Saison-Finale & Fazit ───────────────────────────────────────────── */
.finale-hero { border-left: 4px solid var(--accent); }
.finale-hero.tone-great { border-left-color: var(--accent2); }
.finale-hero.tone-good { border-left-color: var(--accent); }
.finale-hero.tone-ok { border-left-color: var(--warning); }
.finale-hero.tone-bad { border-left-color: var(--danger); }
.finale-eyebrow { text-transform: uppercase; letter-spacing: .06em; font-size: .72rem; color: var(--muted); margin: 0 0 .35rem; }
.finale-headline { margin: 0 0 .35rem; font-size: 1.7rem; }
.finale-lead { margin: 0 0 1rem; color: var(--text); }
.finale-hero-facts { display: flex; flex-wrap: wrap; gap: 1.5rem; }
.finale-fact { display: flex; flex-direction: column; font-size: .78rem; color: var(--muted); }
.finale-fact strong { font-size: 1.5rem; color: var(--text); font-variant-numeric: tabular-nums; line-height: 1.1; }
.finale-fact-cup strong { color: var(--warning); }
.finale-note { margin: 1rem 0 0; }

.finale-goal { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; flex-wrap: wrap; }
.finale-goal-label { font-size: 1.1rem; font-weight: 600; }
.finale-goal-result { font-size: .82rem; font-weight: 700; padding: .25rem .6rem; border-radius: 999px; border: 1px solid var(--border); }
.finale-goal-great { color: var(--accent2); border-color: var(--accent2); }
.finale-goal-good { color: var(--accent); border-color: var(--accent); }
.finale-goal-ok { color: var(--warning); border-color: var(--warning); }
.finale-goal-bad { color: var(--danger); border-color: var(--danger); }
.finale-sat-head { display: flex; justify-content: space-between; margin-bottom: .3rem; font-size: .85rem; }
.finale-sat-head strong.is-good { color: var(--accent2); }
.finale-sat-head strong.is-ok { color: var(--warning); }
.finale-sat-head strong.is-low { color: var(--danger); }
.finale-sat-bar { height: 10px; background: var(--surface2); border-radius: 999px; overflow: hidden; }
.finale-sat-bar i { display: block; height: 100%; border-radius: 999px; }
.finale-sat-bar i.is-good { background: var(--accent2); }
.finale-sat-bar i.is-ok { background: var(--warning); }
.finale-sat-bar i.is-low { background: var(--danger); }

.finale-derby-summary { font-size: 1rem; margin: 0 0 .75rem; }
.finale-derby-legs { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .4rem; }
.finale-derby-leg { display: flex; align-items: center; justify-content: space-between; gap: .75rem; padding: .5rem .7rem; border-radius: 8px; background: var(--surface2); border-left: 3px solid var(--border); }
.finale-derby-leg.is-w { border-left-color: var(--accent2); }
.finale-derby-leg.is-l { border-left-color: var(--danger); }
.finale-derby-leg.is-d { border-left-color: var(--warning); }
.finale-derby-md { font-size: .72rem; color: var(--muted); min-width: 3rem; }
.finale-derby-match { font-variant-numeric: tabular-nums; }
.finale-derby-flag { font-size: .78rem; color: var(--muted); }

.finale-champ-head { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; flex-wrap: wrap; margin-bottom: .5rem; }
.finale-champ { font-size: .9rem; color: var(--muted); }
.finale-champ strong { color: var(--text); }

.finale-cup { font-size: 1rem; line-height: 1.6; }
.finale-cup-win strong { color: var(--warning); }

.finale-stat-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.finale-stat-list li { display: flex; justify-content: space-between; gap: 1rem; padding: .5rem 0; border-bottom: 1px solid var(--border); flex-wrap: wrap; }
.finale-stat-list li:last-child { border-bottom: none; }
.finale-stat-key { color: var(--muted); font-size: .85rem; }
.finale-stat-val { text-align: right; font-variant-numeric: tabular-nums; }

.finale-cta { border-left: 4px solid var(--accent2); }
.season-rollover-actions { display: flex; align-items: center; gap: .75rem; flex-wrap: wrap; }
.season-rollover-actions form { margin: 0; }

/* ── Liga persönlicher: Saison-Story ─────────────────────────────────── */
.season-story { border-left: 4px solid var(--border); }
.season-story.tone-great { border-left-color: var(--accent2); }
.season-story.tone-good { border-left-color: var(--accent); }
.season-story.tone-ok { border-left-color: var(--warning); }
.season-story.tone-bad { border-left-color: var(--danger); }
.season-story.tone-neutral { border-left-color: var(--muted); }
.season-story.is-compact { padding-top: .9rem; padding-bottom: .9rem; }

.season-story-top { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: .5rem; }
.season-story-chip { display: inline-flex; align-items: center; gap: .4rem; font-size: .8rem; font-weight: 700; padding: .25rem .6rem; border-radius: 999px; border: 1px solid var(--border); }
.season-story-chip.tone-great { color: var(--accent2); border-color: var(--accent2); }
.season-story-chip.tone-good { color: var(--accent); border-color: var(--accent); }
.season-story-chip.tone-ok { color: var(--warning); border-color: var(--warning); }
.season-story-chip.tone-bad { color: var(--danger); border-color: var(--danger); }
.season-story-rank { font-size: 1.1rem; font-weight: 700; font-variant-numeric: tabular-nums; }
.season-story-rank .muted { font-weight: 400; font-size: .85rem; }

.season-story-headline { font-size: 1.25rem; font-weight: 700; margin: .1rem 0 .4rem; }
.season-story.is-compact .season-story-headline { font-size: 1.05rem; }
.season-story-goal { margin: 0 0 .6rem; font-size: .9rem; font-weight: 600; }
.season-story-goal.tone-great { color: var(--accent2); }
.season-story-goal.tone-good { color: var(--accent); }
.season-story-goal.tone-ok { color: var(--warning); }
.season-story-goal.tone-bad { color: var(--danger); }

.season-story-facts { display: flex; flex-wrap: wrap; gap: .4rem .9rem; align-items: baseline; }
.season-story-fact { font-size: .85rem; color: var(--muted); }
.season-story-fact strong { color: var(--text); font-variant-numeric: tabular-nums; }
.season-story-fact-good { color: var(--accent2); }
.season-story-fact-good strong { color: var(--accent2); }
.season-story-fact-bad { color: var(--danger); }
.season-story-fact-bad strong { color: var(--danger); }

.season-story-extra { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem; margin-top: .75rem; }
.season-story-form { display: inline-flex; align-items: center; gap: .5rem; font-size: .82rem; }
.season-story-momentum { font-size: .82rem; font-weight: 700; padding: .2rem .55rem; border-radius: 999px; border: 1px solid var(--border); }
.season-story-momentum.tone-great { color: var(--accent2); border-color: var(--accent2); }
.season-story-momentum.tone-bad { color: var(--danger); border-color: var(--danger); }
.season-story-momentum-line { margin: .5rem 0 0; font-size: .82rem; font-weight: 700; }
.season-story-momentum-line.tone-great { color: var(--accent2); }
.season-story-momentum-line.tone-bad { color: var(--danger); }

.season-story-derby { display: flex; flex-wrap: wrap; align-items: center; gap: .3rem .8rem; margin-top: .75rem; padding-top: .6rem; border-top: 1px solid var(--border); font-size: .85rem; }
.season-story-derby-label { font-weight: 700; }

/* ── Hand-SVG-Icon-Set (Bauten + Taktik-Presets) ─────────────────────── */
.fm-icon { display: block; width: 100%; height: 100%; }

/* Taktik-Preset-Karten: Icon links, in Ton-Farbe */
.tac-preset-icon { flex: 0 0 auto; display: inline-flex; width: 22px; height: 22px; color: var(--muted); }
.tac-preset-text { display: grid; gap: .12rem; min-width: 0; }
.tac-preset--blue .tac-preset-icon { color: #3b82f6; }
.tac-preset--orange .tac-preset-icon { color: #f97316; }
.tac-preset--green .tac-preset-icon { color: #22c55e; }
.tac-preset--red .tac-preset-icon { color: #ef4444; }

/* Stadion-Geländeplan + Build-Karten: Emoji-Grid → Sprites */
.stadium-slot-emoji { display: inline-flex; width: 24px; height: 24px; opacity: .95; }
.stadium-build-emoji { display: inline-flex; width: 30px; height: 30px; }
.stadium-slot--tribune .stadium-slot-emoji { color: #3b82f6; }
.stadium-slot--infra .stadium-slot-emoji { color: #f59e0b; }
.stadium-slot--facility .stadium-slot-emoji { color: #22c55e; }
.stadium-build-card--tribune .stadium-build-emoji { color: #3b82f6; }
.stadium-build-card--infra .stadium-build-emoji { color: #f59e0b; }
.stadium-build-card--facility .stadium-build-emoji { color: #22c55e; }

/* ── Tagesrhythmus: Spielabschnitt-Hub + Fortschritt ─────────────────── */
.segment-hub { border-left: 4px solid var(--accent2); }
.segment-head { display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.segment-badge { font-size: .72rem; font-weight: 700; padding: .2rem .55rem; border-radius: 999px; border: 1px solid var(--border); }
.segment-badge--cup { color: var(--warning); border-color: var(--warning); }
.segment-badge--league { color: var(--accent); border-color: var(--accent); }
.segment-badge--cup { color: #1ecad3; border-color: #1ecad3; }
.segment-title { font-size: 1.05rem; font-weight: 700; margin: .35rem 0 .15rem; }
.segment-note { font-size: .85rem; margin: .1rem 0 0; }
.segment-progress { margin-top: .9rem; }
.segment-progress-head { display: flex; justify-content: space-between; gap: 1rem; font-size: .8rem; color: var(--muted); margin-bottom: .35rem; }
.segment-progress-head strong { color: var(--text); font-variant-numeric: tabular-nums; }
.segment-progress-bar { height: 8px; background: var(--surface2); border-radius: 999px; overflow: hidden; }
.segment-progress-bar i { display: block; height: 100%; background: var(--accent2); border-radius: 999px; transition: width .3s ease; }
.segment-play { margin-top: 1rem; }
.segment-play .btn { font-size: 1rem; padding: .6rem 1.2rem; }

/* ============================================================
   Navigation: Gruppen + Handlungsbedarf-Badges
   ============================================================ */
.sidebar-nav-group {
    margin: 1.1rem 0 .3rem;
    padding: 0 .75rem;
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .09em;
    text-transform: uppercase;
    color: var(--muted);
    opacity: .7;
}
.sidebar-nav-group:first-child { margin-top: .5rem; }

.sidebar-nav-link { position: relative; }
.sidebar-nav-link > span:not(.nav-badge):not(.nav-icon-fallback) { flex: 1; min-width: 0; }

.nav-badge {
    flex-shrink: 0;
    min-width: 1.25rem;
    padding: .05rem .35rem;
    border-radius: 999px;
    background: rgba(34, 197, 94, .18);
    border: 1px solid rgba(34, 197, 94, .4);
    color: var(--accent2);
    font-size: .7rem;
    font-weight: 700;
    line-height: 1.4;
    text-align: center;
    font-variant-numeric: tabular-nums;
}
.nav-badge--blocking {
    background: rgba(239, 68, 68, .18);
    border-color: rgba(239, 68, 68, .45);
    color: var(--danger);
}

/* Meta-Fußzeile: gedämpft, mit einem einzigen Trenner statt einem pro Link. */
.sidebar-nav-meta {
    display: flex;
    flex-direction: column;
    gap: .25rem;
    margin-top: 1.25rem;
    padding-top: .75rem;
    border-top: 1px solid var(--border);
}
.sidebar-nav-meta .sidebar-nav-link { font-size: .85rem; color: var(--muted); }
.sidebar-nav-meta .sidebar-nav-link:hover,
.sidebar-nav-meta .sidebar-nav-link.is-active { color: var(--text); }
.sidebar-nav-meta .nav-icon { opacity: .6; }
.sidebar-nav-meta .sidebar-nav-link.is-active .nav-icon { opacity: .95; }
/* Trenner der Einzel-Links aufheben — der sitzt jetzt am Container. */
.sidebar-nav-meta .sidebar-nav-link--meta,
.sidebar-nav-meta .sidebar-nav-link--logout {
    margin-top: 0;
    padding-top: .5rem;
    border-top: 0;
}

/* ============================================================
   "Was liegt an?" — Handlungsbedarf
   ============================================================ */
.attention-card { display: flex; flex-direction: column; }
.attention-card--blocking { border-color: rgba(239, 68, 68, .35); }

.attention-head {
    display: flex; align-items: baseline; justify-content: space-between;
    gap: .75rem; flex-wrap: wrap;
}
.attention-head h2 { margin: 0; }

.attention-count {
    font-size: .78rem; font-weight: 600; color: var(--muted);
    padding: .15rem .5rem; border-radius: 999px;
    background: var(--surface2); border: 1px solid var(--border);
}
.attention-count--blocking {
    color: var(--danger);
    background: rgba(239, 68, 68, .12);
    border-color: rgba(239, 68, 68, .35);
}
.attention-count--clear {
    color: var(--accent2);
    background: rgba(34, 197, 94, .12);
    border-color: rgba(34, 197, 94, .35);
}

.attention-empty {
    display: flex; align-items: center; gap: .6rem;
    margin: 1rem 0 0; color: var(--muted);
}
.attention-empty-mark {
    width: 1.6rem; height: 1.6rem; flex-shrink: 0;
    display: grid; place-items: center; border-radius: 50%;
    background: rgba(34, 197, 94, .15);
    color: var(--accent2); font-weight: 700;
}

.attention-list { list-style: none; margin: .9rem 0 0; padding: 0; display: flex; flex-direction: column; gap: .1rem; }
.attention-item {
    display: flex; align-items: center; gap: .7rem;
    padding: .5rem .6rem; border-radius: 7px;
    border-left: 3px solid transparent;
}
.attention-item:hover { background: var(--surface2); }

.attention-mark {
    width: 1.5rem; height: 1.5rem; flex-shrink: 0;
    display: grid; place-items: center; border-radius: 50%;
    font-size: .8rem; font-weight: 700; line-height: 1;
}
.attention-link { flex: 1; min-width: 0; display: block; color: var(--text); text-decoration: none; }
.attention-link:hover { text-decoration: none; }
.attention-link strong { display: block; font-size: .92rem; font-weight: 600; }
.attention-link:hover strong { color: var(--accent); }
.attention-detail { display: block; font-size: .78rem; color: var(--muted); margin-top: .1rem; }

.attention-level {
    flex-shrink: 0; font-size: .68rem; color: var(--muted);
    text-transform: uppercase; letter-spacing: .05em;
    opacity: .65; white-space: nowrap;
}

.attention-item--blocking { border-left-color: var(--danger); }
.attention-item--blocking .attention-mark { background: rgba(239, 68, 68, .18); color: var(--danger); }
.attention-item--warning { border-left-color: var(--warning); }
.attention-item--warning .attention-mark { background: rgba(245, 158, 11, .18); color: var(--warning); }
.attention-item--money { border-left-color: var(--accent2); }
.attention-item--money .attention-mark { background: rgba(34, 197, 94, .18); color: var(--accent2); }
.attention-item--info { border-left-color: var(--accent); }
.attention-item--info .attention-mark { background: rgba(59, 130, 246, .18); color: var(--accent); }

/* ============================================================
   Dashboard-Zonen
   ============================================================ */
/* Ergebnis-Hero direkt nach "Abschnitt spielen": Wappen — Ergebnis — Wappen,
   Farbcodierung nach Sieg/Niederlage/Unentschieden aus eigener Sicht. */
.result-hero {
    --hero-accent: var(--muted);
    position: relative;
    margin-bottom: 1rem;
    padding: 1.1rem 1.25rem 1.25rem;
    border: 1px solid var(--border);
    border-left: 4px solid var(--hero-accent);
    border-radius: var(--radius);
    background: var(--surface);
    text-align: center;
    overflow: hidden;
}
.result-hero::before {
    content: "";
    position: absolute; inset: 0;
    background: var(--hero-accent);
    opacity: .07;
    pointer-events: none;
}
.result-hero--win { --hero-accent: var(--accent2); }
.result-hero--loss { --hero-accent: var(--danger); }
.result-hero--draw { --hero-accent: var(--warning); }
.result-hero > * { position: relative; }

.result-hero-static {
    margin-bottom: 1rem;
    padding: 1.1rem 1.25rem;
    border: 1px solid var(--border);
    border-left: 4px solid var(--accent);
    border-radius: var(--radius);
    background: var(--surface);
    text-align: center;
}
.result-hero-static .big { font-size: 1.35rem; margin: .5rem 0; }
.result-hero-static .dash-more { display: inline-block; margin-top: .65rem; }

.result-hero-label {
    margin: 0 0 .5rem;
    font-size: .68rem; font-weight: 700;
    letter-spacing: .1em; text-transform: uppercase;
    color: var(--muted);
}
.result-hero-score {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    gap: .75rem;
    max-width: 30rem;
    margin: 0 auto;
}
.result-hero-team {
    display: flex; flex-direction: column; align-items: center; gap: .35rem;
    min-width: 0;
}
.result-hero-crest-wrap {
    width: 52px; height: 52px;
    display: flex; align-items: center; justify-content: center;
}
.result-hero-crest { max-width: 52px; max-height: 52px; object-fit: contain; }
.result-hero-name {
    font-size: .82rem; font-weight: 600; line-height: 1.2;
    overflow-wrap: anywhere;
}
.result-hero-team.is-own .result-hero-name { color: var(--text); font-weight: 800; }
.result-hero-team:not(.is-own) .result-hero-name { color: var(--muted); }

.result-hero-figures { display: flex; flex-direction: column; align-items: center; gap: .15rem; }
.result-hero-goals {
    font-size: 2.1rem; font-weight: 800; line-height: 1;
    color: var(--text); white-space: nowrap;
}
.result-hero-goals i { margin: 0 .15rem; font-style: normal; color: var(--muted); }
.result-hero-pens { font-size: .7rem; color: var(--muted); }

.result-hero-verdict {
    margin: .75rem 0 0;
    font-size: 1.05rem; font-weight: 800;
    letter-spacing: .02em;
    color: var(--hero-accent);
}
.result-hero-detail {
    margin: .35rem 0 0;
    font-size: .78rem; color: var(--muted);
}
.result-hero-link { margin-top: .85rem; }

.dash-zone-title {
    margin: 1.75rem 0 .6rem;
    font-size: .72rem; font-weight: 700;
    letter-spacing: .12em; text-transform: uppercase;
    color: var(--muted); opacity: .75;
}
.dash-zone-title:first-of-type { margin-top: .25rem; }

.dash-zone-now { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; align-items: start; }
.dash-zone-around { display: grid; grid-template-columns: 1.4fr 1fr; gap: 1rem; align-items: start; margin-top: .5rem; }
.dash-side-stack { display: flex; flex-direction: column; gap: 1rem; }

.dash-standings-head {
    display: flex; align-items: baseline; justify-content: space-between;
    gap: .75rem; margin-bottom: .5rem;
}
.dash-standings-head h2 { margin: 0; }
.dash-more { font-size: .8rem; color: var(--muted); text-decoration: none; white-space: nowrap; }
.dash-more:hover { color: var(--accent); }

@media (max-width: 900px) {
    .dash-zone-now,
    .dash-zone-around { grid-template-columns: 1fr; }
}

/* Mobil: die Seitenleiste wird zur Zeile — Gruppentitel und Meta-Block
   brechen dann jeweils voll um, damit die Gruppierung lesbar bleibt. */
@media (max-width: 768px) {
    .sidebar-nav-group { flex: 1 1 100%; margin: .6rem 0 .1rem; padding: 0; }
    .sidebar-nav-meta { flex: 1 1 100%; flex-direction: row; flex-wrap: wrap; margin-top: .75rem; }
}

/* —— Admin: Account-Verwaltung —— */
.admin-accounts-create-summary {
    cursor: pointer;
    font-weight: 600;
    margin-bottom: .75rem;
}

.admin-accounts-list-title {
    margin: 1.5rem 0 .75rem;
}

.admin-user-list {
    display: grid;
    gap: 1rem;
}

.admin-user-card {
    padding: 1rem 1.1rem;
    border-radius: 10px;
    border: 1px solid rgba(255, 255, 255, .08);
    background: rgba(0, 0, 0, .12);
}

.admin-user-card--banned { border-color: #7f1d1d; opacity: .92; }
.admin-user-card--protected {
    border-color: rgba(59, 130, 246, .25);
}
.admin-user-badge--banned { background: #991b1b; color: #fff; }
.admin-user-ban-reason { margin: .5rem 0 0; font-size: .88rem; }
.admin-user-ban-input { min-width: 10rem; max-width: 14rem; }

.admin-user-card-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: .75rem;
}

.admin-user-name {
    font-size: 1.05rem;
}

.admin-user-badge {
    display: inline-block;
    margin-left: .45rem;
    padding: .1rem .45rem;
    border-radius: 999px;
    font-size: .7rem;
    font-weight: 600;
    vertical-align: middle;
}

.admin-user-badge--protected {
    background: rgba(59, 130, 246, .2);
    color: #93c5fd;
}

.admin-user-badge--self {
    background: rgba(16, 185, 129, .18);
    color: #6ee7b7;
}

.admin-user-role {
    font-size: .8rem;
    padding: .2rem .55rem;
    border-radius: 999px;
    background: rgba(255, 255, 255, .06);
    color: var(--muted);
}

.admin-user-role.is-admin {
    background: rgba(59, 130, 246, .18);
    color: #93c5fd;
}

.admin-user-meta {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(8rem, 1fr));
    gap: .75rem 1.25rem;
    margin: 0 0 1rem;
}

.admin-user-meta dt {
    font-size: .72rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--muted);
    margin-bottom: .15rem;
}

.admin-user-meta dd {
    margin: 0;
    font-weight: 600;
}

.admin-user-email-form {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: .65rem;
    margin-bottom: 1rem;
}

.admin-user-email-form label {
    flex: 1 1 14rem;
    margin: 0;
}

.admin-user-actions-label {
    display: block;
    font-size: .72rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--muted);
    margin-bottom: .45rem;
}

.admin-user-actions-row {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    align-items: center;
}

.admin-user-action-form {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .45rem;
    margin: 0;
}

.admin-user-action-form--password {
    flex: 1 1 100%;
    padding-top: .35rem;
    border-top: 1px solid rgba(255, 255, 255, .06);
    margin-top: .25rem;
}

.admin-user-password-input {
    min-width: 11rem;
    flex: 1 1 12rem;
}

.admin-user-action-form--danger {
    margin-left: auto;
}

@media (max-width: 640px) {
    .admin-user-action-form--danger {
        margin-left: 0;
        flex: 1 1 100%;
    }
}

/* ============================================================
   Sprint 10: Liveticker, Erfolge, Pressekonferenz, Angebote,
   Historie, Spieler der Saison
   ============================================================ */

/* --- Liveticker im Ergebnis-Hero --- */
.match-ticker {
    margin-top: 1rem;
    text-align: left;
    background: rgba(0, 0, 0, .18);
    border-radius: 10px;
    padding: .75rem .9rem;
}

.match-ticker-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: .4rem;
}

.match-ticker-title {
    font-size: .72rem;
    text-transform: uppercase;
    letter-spacing: .08em;
    opacity: .75;
}

.match-ticker.is-done .match-ticker-skip {
    display: none !important;
}

.match-ticker-list {
    list-style: none;
    margin: 0;
    padding: 0;
    max-height: 16rem;
    overflow-y: auto;
}

.match-ticker-item {
    display: flex;
    gap: .6rem;
    align-items: baseline;
    padding: .28rem .35rem;
    border-radius: 6px;
    font-size: .92rem;
}

.match-ticker.is-replaying .match-ticker-item {
    display: none;
}

.match-ticker.is-replaying .match-ticker-item.is-shown {
    display: flex;
    animation: ticker-in .35s ease-out;
}

@keyframes ticker-in {
    from { opacity: 0; transform: translateY(6px); }
    to { opacity: 1; transform: none; }
}

.match-ticker-minute {
    flex: 0 0 2.2rem;
    font-variant-numeric: tabular-nums;
    font-weight: 700;
    opacity: .8;
}

.match-ticker-item--goal { background: rgba(255, 255, 255, .10); font-weight: 600; }
.match-ticker-item--goal .match-ticker-text::before { content: '⚽ '; }
.match-ticker-item--yellow .match-ticker-text::before { content: '🟨 '; }
.match-ticker-item--red .match-ticker-text::before { content: '🟥 '; }
.match-ticker-item--injury .match-ticker-text::before { content: '🚑 '; }
.match-ticker-item--substitution { opacity: .8; }
.match-ticker-item--substitution .match-ticker-text::before { content: '🔁 '; }

.result-hero-verdict.is-hidden { visibility: hidden; }

.result-hero.is-goal-flash .result-hero-goals {
    animation: goal-flash .6s ease-out;
}

@keyframes goal-flash {
    0% { transform: scale(1); }
    35% { transform: scale(1.18); }
    100% { transform: scale(1); }
}

/* --- Erfolge --- */
.achievement-progress {
    font-size: .85rem;
    color: var(--muted);
}

.achievement-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(17rem, 1fr));
    gap: .8rem;
}

.achievement-card {
    display: flex;
    gap: .8rem;
    align-items: flex-start;
    background: var(--card, rgba(255, 255, 255, .04));
    border: 1px solid rgba(255, 255, 255, .08);
    border-radius: 12px;
    padding: .9rem;
}

.achievement-card.is-locked {
    opacity: .55;
    filter: saturate(.4);
}

.achievement-icon {
    font-size: 1.6rem;
    line-height: 1;
}

.achievement-title { display: block; }

.achievement-desc {
    margin: .2rem 0 0;
    font-size: .85rem;
}

.achievement-meta {
    margin: .3rem 0 0;
    font-size: .78rem;
    color: var(--accent, #ffd166);
}

.achievement-banner {
    border: 1px solid rgba(255, 209, 102, .5);
    background: linear-gradient(135deg, rgba(255, 209, 102, .14), rgba(255, 209, 102, .04));
    margin-bottom: 1rem;
}

.achievement-banner-list {
    list-style: none;
    margin: .4rem 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: .5rem 1.2rem;
}

/* --- Pressekonferenz --- */
.press-banner {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    flex-wrap: wrap;
    margin-bottom: 1rem;
}

.press-banner-text {
    display: flex;
    flex-direction: column;
    gap: .15rem;
}

.press-question {
    margin: .8rem 0;
    padding: .8rem 1rem;
    border-left: 3px solid var(--accent, #ffd166);
    background: rgba(255, 255, 255, .04);
    font-size: 1.05rem;
    font-style: italic;
}

.press-options {
    display: grid;
    gap: .6rem;
    grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
}

.press-option { margin: 0; }

.press-option-btn {
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    gap: .3rem;
    text-align: left;
    padding: .8rem .9rem;
    border-radius: 10px;
    border: 1px solid rgba(255, 255, 255, .14);
    background: rgba(255, 255, 255, .05);
    color: inherit;
    cursor: pointer;
    font: inherit;
    transition: border-color .15s, background .15s;
}

.press-option-btn:hover {
    border-color: var(--accent, #ffd166);
    background: rgba(255, 255, 255, .09);
}

.press-option-btn .muted {
    font-size: .85rem;
    font-style: italic;
}

/* --- Eingehende Transferangebote --- */
.offer-list {
    display: flex;
    flex-direction: column;
    gap: .6rem;
}

.offer-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
    padding: .7rem .9rem;
    border: 1px solid rgba(255, 209, 102, .35);
    border-radius: 10px;
    background: rgba(255, 209, 102, .06);
}

.offer-card-info,
.offer-card-bid {
    display: flex;
    flex-direction: column;
    gap: .15rem;
}

.offer-card-info { min-width: 12rem; }

.offer-amount { font-size: 1.1rem; }

.offer-premium { font-size: .78rem; }
.offer-premium.is-up { color: #7ed491; }
.offer-premium.is-down { color: #e08585; }

.offer-card-actions {
    display: flex;
    gap: .5rem;
    align-items: center;
}

.offer-card-actions form { margin: 0; }

/* --- Spieler der Saison --- */
.league-mvp-card .league-mvp-name {
    font-size: 1.35rem;
    font-weight: 700;
    margin: .2rem 0 0;
}

/* --- Sprint 11: Liga-Auszeichnungen & Pokalvitrine --- */
.trophy-shelf {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    margin-top: .5rem;
}

.trophy-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    min-width: 7.5rem;
    padding: .85rem 1rem;
    border: 1px solid var(--border-subtle, rgba(255,255,255,.08));
    border-radius: .5rem;
    background: var(--surface-raised, rgba(255,255,255,.03));
    text-align: center;
}

.trophy-img {
    width: 5.5rem;
    height: 5.5rem;
    object-fit: contain;
    margin-bottom: .35rem;
    filter: drop-shadow(0 6px 14px rgba(0,0,0,.35));
}

.trophy-icon {
    font-size: 2rem;
    line-height: 1;
    margin-bottom: .35rem;
}

.trophy-count {
    font-size: 1.1rem;
    font-weight: 700;
    margin-top: .15rem;
}

.trophy-sub {
    font-size: .75rem;
    margin-top: .2rem;
}

.trophy-pending-banner {
    border-color: rgba(192, 138, 69, .35);
    background: rgba(192, 138, 69, .08);
}

.awards-section-head {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
}

.awards-md-picker {
    display: flex;
    align-items: center;
    gap: .5rem;
    margin: 0;
}

.awards-md-picker select {
    min-width: 5rem;
}

.matchday-award-card {
    display: flex;
    gap: .75rem;
    align-items: flex-start;
    padding: .85rem 1rem;
    border: 1px solid var(--border-subtle, rgba(255,255,255,.08));
    border-radius: .5rem;
    background: var(--surface-raised, rgba(255,255,255,.03));
}

.matchday-award-icon {
    font-size: 1.75rem;
    line-height: 1;
    flex-shrink: 0;
}

.matchday-awards-banner {
    border-left: 3px solid var(--accent, #c9a227);
}

.matchday-awards-list {
    list-style: none;
    padding: 0;
    margin: .5rem 0 0;
    display: flex;
    flex-direction: column;
    gap: .45rem;
}

.matchday-awards-list li {
    display: flex;
    gap: .5rem;
    align-items: flex-start;
}

.newspaper-potm-box {
    border-top: 2px solid #1a1a1a;
    padding-top: .75rem;
}

.newspaper-potm-kicker {
    font-size: .72rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    margin: 0 0 .25rem;
    color: #666;
}

.newspaper-potm-name {
    font-family: Georgia, 'Times New Roman', serif;
    font-size: 1.05rem;
    font-weight: 700;
    margin: 0;
}

/* --- Sprint 12: Scouting, Rest des Spieltags, Vertraege --- */
.opponent-scout-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
}

.opponent-scout-match {
    font-size: 1.05rem;
    margin: .35rem 0 0;
}

.opponent-scout-scorers,
.opponent-scout-out {
    list-style: none;
    padding: 0;
    margin: .35rem 0 0;
}

.opponent-scout-tip {
    font-size: .92rem;
    color: var(--text-muted, #aaa);
}

.matchday-rest h2 {
    margin-bottom: .5rem;
}

.cal-scout-link {
    display: inline-block;
    margin-left: .75rem;
    font-size: .85rem;
}

.contract-table .contract-renew-form {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem;
    align-items: center;
    margin: 0;
}

.contract-input {
    max-width: 7rem;
    font-size: .85rem;
}

.lineup-status-badge--youth {
    background: #3a5a8a;
}

.lineup-status-badge--youth::after {
    content: 'J';
    font-size: .65rem;
    font-weight: 700;
    color: #fff;
}

/* ============================================================
   Saisonprognose & Tippspiel (/prognose)
   ============================================================ */

.prognose-columns {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 1rem;
    align-items: start;
}

@media (max-width: 900px) {
    .prognose-columns { grid-template-columns: 1fr; }
}

.prognose-form {
    display: flex;
    flex-direction: column;
    gap: .85rem;
    margin-top: .75rem;
    max-width: 420px;
}

.prognose-field {
    display: flex;
    flex-direction: column;
    gap: .3rem;
    font-size: .92rem;
}

.prognose-field em { font-style: normal; font-size: .82rem; }

.prognose-tip-list {
    list-style: none;
    padding: 0;
    margin: .75rem 0 0;
    display: flex;
    flex-direction: column;
    gap: .4rem;
}

.prognose-tip-list li {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    padding: .45rem .6rem;
    background: rgba(255, 255, 255, .03);
    border: 1px solid var(--border);
    border-radius: 6px;
}

.prognose-club-cell {
    display: flex;
    align-items: center;
    gap: .45rem;
}

.prognose-crest {
    width: 18px;
    height: 18px;
    object-fit: contain;
    flex-shrink: 0;
}

.prognose-press-table .num,
.prognose-reckoning-table .num { text-align: right; white-space: nowrap; }

.prognose-delta.is-up { color: var(--accent2, #22c55e); }
.prognose-delta.is-down { color: var(--danger, #ef4444); }

.prognose-press-review {
    font-size: .9rem;
    padding: .5rem .65rem;
    border-left: 3px solid var(--accent, #3b82f6);
    background: rgba(59, 130, 246, .07);
    border-radius: 0 6px 6px 0;
}

.prognose-reckoning .prognose-grade {
    font-size: 1.15rem;
    margin: .35rem 0 .25rem;
}

.prognose-reckoning .prognose-grade strong { font-size: 1.6rem; }

.prognose-reckoning-table .is-hit { color: var(--accent2, #22c55e); font-weight: 600; }
.prognose-reckoning-table .is-miss { color: var(--text-muted, #aaa); }

.prognose-bonus {
    display: block;
    font-size: .8rem;
    color: var(--accent2, #22c55e);
}

.prognose-history {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: .35rem;
}

/* ============================================================
   V2: kompaktere Sidebar-Navigation (Nav-Überarbeitung, AI B).
   Greift nur mit .sidebar-nav--v2 — V1 bleibt unverändert.
   ============================================================ */
.sidebar-nav--v2 { gap: .1rem; }
.sidebar-nav--v2 .sidebar-nav-link {
    padding: .3rem .6rem;
    font-size: .85rem;
    gap: .5rem;
}
.sidebar-nav--v2 .nav-icon,
.sidebar-nav--v2 .nav-icon-fallback {
    width: 16px;
    height: 16px;
}
.sidebar-nav--v2 .nav-icon-fallback { font-size: .58rem; }
.sidebar-nav--v2 .sidebar-nav-group {
    margin: .7rem 0 .15rem;
    font-size: .6rem;
    letter-spacing: .08em;
}
.sidebar-nav--v2 .sidebar-nav-group:first-child { margin-top: .3rem; }
.sidebar-nav--v2 .sidebar-nav-meta { margin-top: .6rem; gap: .05rem; }
.sidebar-nav--v2 .sidebar-nav-meta .sidebar-nav-link { font-size: .78rem; padding: .26rem .6rem; }

/* --- V2 Spieler-Avatare (procedural SVG) --- */
.player-avatar {
    display: flex;
    align-items: stretch;
    justify-content: center;
    width: 100%;
    height: 100%;
    line-height: 0;
}
.player-avatar-svg {
    width: 100%;
    height: 100%;
    display: block;
}
.lineup-player-photo .player-avatar,
.player-photo .player-avatar {
    background: linear-gradient(180deg, #1e293b 0%, #0f172a 100%);
}
.lineup-player-photo.is-fallback .player-avatar,
.player-photo.is-fallback .player-avatar {
    display: none;
}

/* --- V2 Trikot-Editor --- */
.kit-editor-layout {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1.5rem;
    align-items: start;
}
.kit-editor-form h3 { margin: 0 0 .75rem; font-size: 1rem; }
.kit-editor-form input[type="color"] {
    width: 100%;
    height: 2.75rem;
    padding: .15rem;
    border-radius: 6px;
    border: 1px solid var(--border, rgba(255,255,255,.12));
    background: transparent;
    cursor: pointer;
}
.kit-preview-grid {
    display: flex;
    gap: 1.25rem;
    flex-wrap: wrap;
    justify-content: center;
}
.kit-preview-card {
    margin: 0;
    text-align: center;
}
.kit-preview-card figcaption {
    margin-top: .5rem;
    font-size: .85rem;
    color: var(--muted, #94a3b8);
}
.player-avatar--kit-preview {
    width: 96px;
    height: 120px;
    margin: 0 auto;
    border-radius: 8px;
    overflow: hidden;
    background: linear-gradient(180deg, #1e293b 0%, #0f172a 100%);
    box-shadow: 0 6px 20px rgba(0,0,0,.35);
}
.kit-preview-hint { margin: 1rem 0 0; font-size: .85rem; }
@media (max-width: 768px) {
    .kit-editor-layout { grid-template-columns: 1fr; }
}

/* --- V2 Nationalitäts-Flaggen + Kader-Karten --- */
.player-nat {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    vertical-align: middle;
    line-height: 1;
}
.player-nat-flag {
    display: inline-flex;
    align-items: center;
    flex-shrink: 0;
    line-height: 0;
}
.player-nat-flag .player-nat-svg {
    display: block;
    width: 18px;
    height: 12px;
    border-radius: 1px;
    box-shadow: 0 0 0 1px rgba(0,0,0,.25);
}
.player-nat-code {
    font-size: .78em;
    letter-spacing: .03em;
    opacity: .85;
    line-height: 1;
}
.lineup-squad-tile-meta .player-nat-flag {
    margin-right: .2rem;
    vertical-align: middle;
}
.lineup-squad-tile-meta strong {
    display: inline-flex;
    align-items: center;
    gap: .2rem;
}
.player-avatar--sm {
    width: 40px;
    height: 50px;
    flex-shrink: 0;
    border-radius: 6px;
    overflow: hidden;
}
.player-avatar--squad {
    width: 56px;
    height: 70px;
    flex-shrink: 0;
    border-radius: 8px;
    overflow: hidden;
    background: linear-gradient(180deg, #1e293b 0%, #0f172a 100%);
}
.squad-page-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    margin-bottom: 1rem;
}
.squad-page-head h3 { margin: 0; font-size: 1rem; }
.squad-page-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: .75rem;
}
.squad-player-card {
    display: flex;
    gap: .75rem;
    align-items: flex-start;
    padding: .65rem .75rem;
    border-radius: 8px;
    background: rgba(255,255,255,.03);
    border: 1px solid rgba(255,255,255,.06);
}
.squad-player-card-name {
    margin: 0 0 .2rem;
    font-size: .92rem;
    line-height: 1.25;
}
.squad-player-card-meta {
    margin: 0 0 .25rem;
    font-size: .78rem;
}
.squad-player-card-value {
    margin: 0;
    font-size: .8rem;
    font-weight: 600;
}
.dashboard-squad-head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: .75rem;
}
.dashboard-squad-head .league-section-title { margin: 0; }
.dashboard-squad-grid {
    display: flex;
    flex-wrap: wrap;
    gap: .65rem;
}
.dashboard-squad-card {
    display: flex;
    align-items: center;
    gap: .55rem;
    padding: .45rem .65rem;
    border-radius: 8px;
    background: rgba(255,255,255,.04);
    border: 1px solid rgba(255,255,255,.07);
    min-width: 180px;
}
.dashboard-squad-card-body {
    display: flex;
    flex-direction: column;
    gap: .1rem;
    font-size: .82rem;
}
.dashboard-squad-card-body strong { font-size: .88rem; }
.dashboard-squad-foot { margin: .75rem 0 0; font-size: .85rem; }

/* V2 Landing (Startseite) */
.auth-main:has(.landing-page) { align-items: flex-start; padding: 1.5rem 1rem 3rem; }
.landing-page { width: 100%; max-width: 960px; margin: 0 auto; display: flex; flex-direction: column; gap: 1.25rem; }
.landing-hero { text-align: center; padding: 2rem 1.5rem; }
.landing-kicker { text-transform: uppercase; letter-spacing: .08em; font-size: .75rem; opacity: .7; margin: 0 0 .5rem; }
.landing-hero h1 { margin: 0 0 .75rem; font-size: clamp(1.35rem, 4vw, 2rem); line-height: 1.25; }
.landing-lead { max-width: 36rem; margin: 0 auto 1.25rem; }
.landing-cta { font-size: 1.05rem; padding: .65rem 1.4rem; }
.landing-login { margin: 1rem 0 0; font-size: .9rem; }
.landing-features { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1rem; }
.landing-feature-card h2 { margin-top: 0; font-size: 1.05rem; }
.landing-feature-card ul { margin: .5rem 0 0; padding-left: 1.2rem; color: var(--muted, #94a3b8); }
.landing-register { scroll-margin-top: 1rem; }
.landing-form { max-width: 420px; }
.landing-form .btn-lg { width: 100%; margin-top: .5rem; }
.legal-consent {
    display: flex;
    align-items: flex-start;
    gap: .5rem;
    font-size: .9rem;
    margin: .75rem 0 .25rem;
}
.legal-consent input { margin-top: .25rem; flex-shrink: 0; }

.legal-footer {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem 1rem;
    font-size: .8rem;
}
.legal-footer a { color: var(--muted); }
.legal-footer a:hover,
.legal-footer a[aria-current="page"] { color: var(--text); }
.legal-footer--sidebar {
    margin-top: .65rem;
    padding-top: .55rem;
    border-top: 1px solid var(--border);
}
.legal-footer--auth {
    margin-top: 1.5rem;
    justify-content: center;
}
.legal-page { max-width: 42rem; width: 100%; }
.legal-page h1 { margin-top: 0; }
.legal-page h2 { margin: 1.4rem 0 .4rem; font-size: 1.05rem; }
.legal-kicker { margin-top: 0; }
.legal-address {
    font-style: normal;
    line-height: 1.55;
}
.legal-list { margin: .35rem 0 0; padding-left: 1.2rem; }
.auth-main:has(.legal-page) {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    padding: 1.5rem 1rem 3rem;
}

/* V2 Account */
.account-page { display: flex; flex-direction: column; gap: 1rem; }
.account-hero { display: flex; flex-direction: column; gap: 1.25rem; }
.account-kicker { text-transform: uppercase; letter-spacing: .08em; font-size: .72rem; opacity: .7; margin: 0 0 .35rem; }
.account-hero h2 { margin: 0; }
.account-stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: .75rem 1rem;
    margin: 0;
}
.account-stats dt { font-size: .72rem; text-transform: uppercase; letter-spacing: .04em; color: var(--muted, #94a3b8); margin: 0; }
.account-stats dd { margin: .15rem 0 0; font-weight: 600; }
.account-hero-actions { display: flex; flex-wrap: wrap; gap: .5rem; margin: 0; }
.account-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 1rem;
}
.account-section h3 { margin-top: 0; font-size: 1.05rem; }
.account-link-list { margin: .5rem 0 0; padding-left: 1.2rem; }
.account-section--danger { border-color: #7f1d1d; }
.account-section--logout { display: flex; align-items: center; justify-content: center; min-height: 5rem; }
