:root {
    --lsc-primary: #0d6efd;
    --lsc-sidebar-width: 260px;
    --lsc-bg: #f4f6f9;
    --lsc-surface: #ffffff;
    --lsc-text: #1b1f24;
    --lsc-text-muted: #6c757d;
    --lsc-border: #e3e6ea;
    --lsc-sidebar-bg: #14181f;
    --lsc-sidebar-text: #c6cbd2;
    color-scheme: light;
}

[data-theme="dark"] {
    --lsc-bg: #12151b;
    --lsc-surface: #1b2028;
    --lsc-text: #e7eaee;
    --lsc-text-muted: #9aa2ad;
    --lsc-border: #2a2f3a;
    --lsc-sidebar-bg: #0c0e13;
    --lsc-sidebar-text: #c6cbd2;
    color-scheme: dark;
}

* { box-sizing: border-box; }

body {
    background-color: var(--lsc-bg);
    color: var(--lsc-text);
    font-family: "Segoe UI", Roboto, Arial, sans-serif;
    transition: background-color .2s ease, color .2s ease;
}

a { color: var(--lsc-primary); }

.lsc-sidebar {
    width: var(--lsc-sidebar-width);
    min-height: 100vh;
    background: var(--lsc-sidebar-bg);
    color: var(--lsc-sidebar-text);
    position: fixed;
    top: 0; left: 0; bottom: 0;
    overflow-y: auto;
    z-index: 1030;
    transition: transform .2s ease;
}

.lsc-sidebar .brand {
    padding: 1.1rem 1.25rem;
    font-weight: 700;
    color: #fff;
    border-bottom: 1px solid rgba(255,255,255,.08);
    display: flex;
    align-items: center;
    gap: .6rem;
}

.lsc-sidebar .nav-link {
    color: var(--lsc-sidebar-text);
    padding: .55rem 1.25rem;
    border-left: 3px solid transparent;
    font-size: .92rem;
}
.lsc-sidebar .nav-link:hover,
.lsc-sidebar .nav-link.active {
    background: rgba(255,255,255,.06);
    color: #fff;
    border-left-color: var(--lsc-primary);
}
.lsc-sidebar .nav-header {
    padding: .8rem 1.25rem .25rem;
    font-size: .7rem;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: #6b7280;
}

.lsc-content {
    margin-left: var(--lsc-sidebar-width);
    padding: 1.5rem;
    min-height: 100vh;
}

.lsc-topbar {
    background: var(--lsc-surface);
    border-bottom: 1px solid var(--lsc-border);
    padding: .75rem 1.5rem;
    margin-left: var(--lsc-sidebar-width);
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.card, .lsc-card {
    background: var(--lsc-surface);
    color: var(--lsc-text);
    border: 1px solid var(--lsc-border);
    border-radius: .6rem;
}
.card-header, .card-footer {
    background-color: transparent;
    color: var(--lsc-text);
    border-color: var(--lsc-border);
}
.card-body, .card-title, .card-text { color: var(--lsc-text); }
.text-muted, .card .small.text-muted { color: var(--lsc-text-muted) !important; }
h1, h2, h3, h4, h5, h6 { color: var(--lsc-text); }

.stat-card {
    border-radius: .8rem;
    padding: 1.25rem;
    background: var(--lsc-surface);
    border: 1px solid var(--lsc-border);
}
.stat-card .stat-value { font-size: 1.8rem; font-weight: 700; }
.stat-card .stat-label { color: var(--lsc-text-muted); font-size: .85rem; }

table { color: var(--lsc-text); }
.table > :not(caption) > * > * { background-color: transparent; color: var(--lsc-text); }

.badge-rank { color: #fff; font-weight: 500; }

@media (max-width: 991px) {
    .lsc-sidebar { transform: translateX(-100%); }
    .lsc-sidebar.show { transform: translateX(0); }
    .lsc-content, .lsc-topbar { margin-left: 0; }
}

/* -------------------------------------------------------------
   Formulare & Komponenten: erzwungene Kontraste, damit in Light-
   und Dark-Theme nie helle Schrift auf hellem / dunkle auf
   dunklem Hintergrund landet.
------------------------------------------------------------- */
.form-control, .form-select, textarea {
    background-color: var(--lsc-surface) !important;
    color: var(--lsc-text) !important;
    border-color: var(--lsc-border) !important;
}
.form-control:focus, .form-select:focus {
    background-color: var(--lsc-surface) !important;
    color: var(--lsc-text) !important;
    border-color: var(--lsc-primary) !important;
    box-shadow: 0 0 0 .2rem rgba(13,110,253,.2);
}
.form-control::placeholder { color: var(--lsc-text-muted); opacity: 1; }
.form-control:disabled, .form-select:disabled, .form-control[readonly] {
    background-color: var(--lsc-bg) !important;
    color: var(--lsc-text-muted) !important;
    opacity: 1;
}
.form-label, .form-check-label { color: var(--lsc-text); }
.form-text { color: var(--lsc-text-muted); }
.input-group-text {
    background-color: var(--lsc-bg);
    color: var(--lsc-text);
    border-color: var(--lsc-border);
}

.modal-content {
    background-color: var(--lsc-surface);
    color: var(--lsc-text);
    border-color: var(--lsc-border);
}
.modal-header, .modal-footer { border-color: var(--lsc-border); }

.dropdown-menu {
    background-color: var(--lsc-surface);
    color: var(--lsc-text);
    border-color: var(--lsc-border);
}
.dropdown-item { color: var(--lsc-text); }
.dropdown-item:hover, .dropdown-item:focus {
    background-color: var(--lsc-bg);
    color: var(--lsc-text);
}

.list-group-item {
    background-color: var(--lsc-surface);
    color: var(--lsc-text);
    border-color: var(--lsc-border);
}
.list-group-item.active {
    background-color: var(--lsc-primary);
    border-color: var(--lsc-primary);
    color: #fff;
}
.list-group-item-action:hover { background-color: var(--lsc-bg); color: var(--lsc-text); }

.nav-tabs { border-color: var(--lsc-border); }
.nav-tabs .nav-link { color: var(--lsc-text-muted); }
.nav-tabs .nav-link.active {
    background-color: var(--lsc-surface);
    color: var(--lsc-text);
    border-color: var(--lsc-border) var(--lsc-border) var(--lsc-surface);
}

.accordion-item, .accordion-body {
    background-color: var(--lsc-surface);
    color: var(--lsc-text);
    border-color: var(--lsc-border);
}
.accordion-button {
    background-color: var(--lsc-surface);
    color: var(--lsc-text);
}
.accordion-button:not(.collapsed) {
    background-color: var(--lsc-bg);
    color: var(--lsc-text);
    box-shadow: none;
}

.pagination .page-link {
    background-color: var(--lsc-surface);
    color: var(--lsc-text);
    border-color: var(--lsc-border);
}
.pagination .page-item.active .page-link {
    background-color: var(--lsc-primary);
    border-color: var(--lsc-primary);
    color: #fff;
}

.card-footer, .card-header { border-color: var(--lsc-border); }
