/* EJB Sportlerdatenbank – Eisbären-Farben: Dunkelblau / Weiß / Rot */
:root {
  --blue: #003366;
  --blue-light: #0a4f8f;
  --red: #c8102e;
  --bg: #f4f6f9;
  --border: #d8dee7;
}

* { box-sizing: border-box; }
body { margin: 0; font-family: -apple-system, "Segoe UI", Roboto, sans-serif; background: var(--bg); color: #1a1a2e; }
main { max-width: none; margin: 0 auto; padding: 20px 24px; }
a { color: var(--blue-light); text-decoration: none; }
a:hover { text-decoration: underline; }
h1 { font-size: 26px; } h2 { font-size: 18px; margin-top: 28px; }
.muted { color: #667; } .error { color: var(--red); font-weight: 600; }

/* Navigation */
.topnav { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 18px; background: var(--blue); color: #fff; padding: 5px 20px; border-bottom: 5px solid #d61126; /* CI-Rot aus dem EJB-Logo */
  /* Als Homescreen-App: nicht unter die iPhone-Statusleiste rutschen */
  padding-top: calc(5px + env(safe-area-inset-top));
  /* Kopfleiste bleibt beim Scrollen oben stehen */
  position: sticky; top: 0; z-index: 800; box-shadow: 0 2px 8px rgba(0,0,0,.15); }
.topnav a { color: #fff; }
.topnav .brand { font-weight: 700; font-size: 17px; display: flex; align-items: center; gap: 8px; white-space: nowrap; }
.nav-logo { height: 28px; width: auto; }
.topnav .spacer { flex: 1; }
.topnav .who { font-size: 13px; opacity: .85; }
.inline { display: inline; }
button.link { background: none; border: none; color: #fff; cursor: pointer; text-decoration: underline; font-size: 14px; }

/* Login */
.login-box { max-width: 380px; margin: 80px auto; background: #fff; padding: 32px; border-radius: 12px; box-shadow: 0 4px 16px rgba(0,0,0,.08); }
.login-box h1 { margin-top: 0; color: var(--blue); }
.login-logo { display: block; height: 100px; width: auto; margin: 0 auto 14px; }
.login-box { text-align: center; }
.login-box form { text-align: left; }
.login-box label { display: block; margin: 14px 0 4px; font-weight: 600; font-size: 14px; }
.login-box input { width: 100%; padding: 10px; border: 1px solid var(--border); border-radius: 8px; font-size: 15px; }
.login-box button[type=submit] { width: 100%; margin-top: 20px; }

/* Buttons */
.btn, button[type=submit] {
  display: inline-block; background: var(--blue); color: #fff; border: none;
  padding: 9px 16px; border-radius: 8px; font-size: 14px; cursor: pointer;
}
.btn:hover, button[type=submit]:hover { background: var(--blue-light); text-decoration: none; }
.btn-muted { background: #8a94a6; }
.btn-danger { background: var(--red); }

/* KPI-Kacheln */
.kpi-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 14px; margin: 20px 0; }
.kpi { background: #fff; border: 1px solid var(--border); border-left: 5px solid var(--blue); border-radius: 10px; padding: 16px; color: inherit; min-width: 0; }
.kpi span { overflow-wrap: anywhere; } /* lange Wörter (z. B. „Empfangsbestätigungen") brechen um statt über den Rand zu ragen */
.kpi:hover { box-shadow: 0 3px 10px rgba(0,0,0,.08); text-decoration: none; }
.kpi-statisch, .kpi-statisch:hover { box-shadow: none; cursor: default; } /* reine Anzeige-Kachel ohne Link (z. B. Kassenstand für Eltern) */
.kpi .num { display: block; font-size: 28px; font-weight: 700; color: var(--blue); }
.kpi-warn { border-left-color: #e6a700; } .kpi-warn .num { color: #b58300; }
.kpi-bad { border-left-color: var(--red); } .kpi-bad .num { color: var(--red); }

.two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.dashboard-training { background: #fff; border-radius: 10px; padding: 12px 16px; margin-bottom: 10px; box-shadow: 0 1px 4px rgba(0,0,0,.05); }
/* Desktop: die beiden Trainingspläne nebeneinander (mobil untereinander) */
.training-raster { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 10px; align-items: start; }
.training-raster .dashboard-training { margin-bottom: 0; }
.aenderungen-details { margin-top: 24px; color: #778; }
.aenderungen-details summary { cursor: pointer; font-size: 14px; }
.aenderungen-details table { margin-top: 8px; }
@media (max-width: 800px) { .two-col { grid-template-columns: 1fr; } }

/* Tabellen */
table { width: 100%; border-collapse: collapse; background: #fff; border-radius: 10px; overflow: hidden; box-shadow: 0 1px 4px rgba(0,0,0,.05); margin: 12px 0; }
th, td { padding: 9px 12px; text-align: left; border-bottom: 1px solid var(--border); font-size: 14px; }
th { background: var(--blue); color: #fff; font-weight: 600; }
tr:last-child td { border-bottom: none; }
tbody tr:hover { background: #f0f4fa; }
td.c, th.c { text-align: center; } td.r, th.r { text-align: right; } input.r { text-align: right; }
table.plain { box-shadow: none; } table.plain td { border-bottom: 1px solid #eee; }

/* Status-Tags */
.tag { padding: 2px 10px; border-radius: 20px; font-size: 12px; font-weight: 600; }
.tag-aktiv { background: #d9efd9; color: #1e6b1e; }
.tag-inaktiv { background: #eee; color: #666; }
.tag-archiviert { background: #f4dede; color: #8b2020; }
.tag-pay-bezahlt { background: #d9efd9; color: #1e6b1e; }
.tag-pay-offen, .tag-pay-teilweisebezahlt { background: #fdf1d2; color: #9a7400; }
.tag-pay-berfllig { background: #f4dede; color: var(--red); }
.tag-pay-storniert { background: #eee; color: #666; }

/* Beitragseinstellungen: breite Klassen-Spalte + Beitragsanzeige */
.beitrag-zeile-1 { grid-auto-flow: row; grid-template-columns: 2.2fr 1fr 1fr; }
@media (max-width: 700px) { .beitrag-zeile-1 { grid-template-columns: 1fr; } }
.beitrag-anzeige { display: block; margin-top: 4px; padding: 9px; font-size: 15px; font-weight: 700; color: var(--blue); background: #f0f4fa; border-radius: 8px; }

.zellen-sub { font-size: 12px; color: #667; }

/* Untere Tab-Leiste (nur Mobil sichtbar) */
.tabbar { display: none; }
#mehr-menue { display: none; }
@media (max-width: 800px) {
  .tabbar {
    display: grid; grid-template-columns: repeat(5, 1fr);
    position: fixed; left: 0; right: 0; bottom: 0; z-index: 900;
    background: #fff; border-top: 1px solid var(--border);
    /* Abstand zum iPhone-Balken (Home-Indikator), mindestens 12px */
    padding-bottom: max(env(safe-area-inset-bottom), 12px);
    box-shadow: 0 -2px 10px rgba(0,0,0,.06);
  }
  .tabbar a, .tabbar button {
    display: flex; flex-direction: column; align-items: center; gap: 2px;
    padding: 8px 0 6px; font-size: 11px; color: #667; text-decoration: none;
    background: none; border: none; font-family: inherit; cursor: pointer;
  }
  .tabbar .tab-icon { height: 22px; display: flex; align-items: center; justify-content: center; }
  .tabbar .tab-icon svg { display: block; }
  .tabbar .tab-aktiv { color: var(--blue); font-weight: 700; }
  #mehr-menue {
    display: block; position: fixed; right: 10px; bottom: calc(64px + max(env(safe-area-inset-bottom), 12px));
    z-index: 901; background: #fff; border-radius: 14px; box-shadow: 0 4px 24px rgba(0,0,0,.18);
    padding: 8px; min-width: 210px;
  }
  #mehr-menue[hidden] { display: none; }
  #mehr-menue a, #mehr-menue button {
    display: flex; align-items: center; gap: 12px; width: 100%; text-align: left; padding: 12px 14px; font-size: 15px;
    color: inherit; text-decoration: none; background: none; border: none; font-family: inherit;
    border-radius: 8px; cursor: pointer;
  }
  .mehr-icon { display: flex; color: var(--blue); }
  .mehr-icon svg { display: block; }
  #mehr-menue a:hover, #mehr-menue button:hover { background: #f0f4fa; }
  /* Oben nur noch die schlanke Markenzeile, Links wandern in die Tab-Leiste */
  .topnav a:not(.brand), .topnav .who, .topnav form, .topnav .spacer { display: none; }
  .topnav { justify-content: center; }
}

/* Mobile Darstellung (iPhone & Co.) */
@media (max-width: 800px) {
  .topnav { flex-wrap: wrap; gap: 6px 14px; padding: 8px 12px; row-gap: 4px; padding-top: calc(8px + env(safe-area-inset-top)); }
  .topnav .who { font-size: 11px; }
  main { padding: 12px; padding-bottom: calc(78px + max(env(safe-area-inset-bottom), 12px)); }
  /* Breite Tabellen scrollen in sich statt die Seite zu sprengen */
  table { display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .kpi-grid { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); }
  .page-head { flex-wrap: wrap; gap: 8px; }
  .form-grid { grid-template-columns: 1fr; }
  /* Detailzeilen: Beschriftung über dem Wert statt daneben */
  .grid-dl { grid-template-columns: 1fr; gap: 2px 0; }
  .grid-dl dt { margin-top: 8px; }
  .grid-dl dd { overflow-wrap: anywhere; }
}

/* Bild-Großansicht (Lightbox) */
#lightbox { position: fixed; inset: 0; background: rgba(0,10,30,.92); z-index: 1000; display: flex; align-items: center; justify-content: center; padding: 16px; }
#lightbox[hidden] { display: none; }
#lightbox img { max-width: 96vw; max-height: 90vh; border-radius: 10px; }
#lightbox-zu { position: absolute; top: 14px; right: 14px; width: 44px; height: 44px; border-radius: 50%; border: none; background: rgba(255,255,255,.15); color: #fff; font-size: 22px; cursor: pointer; }
#lightbox-zu:hover { background: var(--red); }

/* Infos (Teams-Stil) */
.infos-layout { display: grid; grid-template-columns: 240px 1fr; gap: 20px; align-items: start; }
@media (max-width: 800px) { .infos-layout { grid-template-columns: 1fr; } }
.kanal-liste { background: #fff; border-radius: 12px; padding: 14px; box-shadow: 0 1px 4px rgba(0,0,0,.05); }
.kanal-liste h2 { margin: 0 0 10px; font-size: 16px; }
.kanal { display: block; padding: 8px 10px; border-radius: 8px; color: inherit; margin-bottom: 2px; }
.kanal:hover { background: #f0f4fa; text-decoration: none; }
.kanal-aktiv { background: var(--blue); color: #fff; }
.kanal-aktiv:hover { background: var(--blue-light); }
.kanal-name { display: block; font-weight: 600; }
.kanal-hinweis { font-size: 11px; opacity: .7; }
.kanal-neu { margin-top: 12px; }
.kanal-neu summary, .kanal-einstellungen summary { cursor: pointer; font-weight: 600; color: var(--blue); }
.kanal-form { display: flex; flex-direction: column; gap: 8px; margin-top: 10px; font-size: 13px; }
.kanal-form input[type=text], .kanal-form input:not([type]) { padding: 8px; border: 1px solid var(--border); border-radius: 8px; }
.kanal-inhalt { background: #fff; border-radius: 12px; padding: 18px; box-shadow: 0 1px 4px rgba(0,0,0,.05); }
.kanal-kopf { display: flex; justify-content: space-between; align-items: start; gap: 12px; border-bottom: 1px solid var(--border); padding-bottom: 8px; }
.kanal-kopf h1 { margin: 0; font-size: 22px; }
.kanal-einstellungen { max-width: 320px; }
.beitrag { border-bottom: 1px solid #eef1f5; padding: 14px 0; }
.beitrag-kopf { display: flex; align-items: center; gap: 10px; margin-bottom: 4px; }
.beitrag-kopf .muted { font-size: 12px; }
.beitrag-text { white-space: pre-line; line-height: 1.5; }
.beitrag-loeschen { background: none; border: none; cursor: pointer; font-size: 13px; opacity: .5; }
.beitrag-loeschen:hover { opacity: 1; }
.antwort { margin: 10px 0 0 24px; padding: 8px 12px; background: #f5f7fa; border-left: 3px solid var(--border); border-radius: 0 8px 8px 0; }
.antwort-schreiben { margin: 8px 0 0 24px; font-size: 13px; }
.antwort-schreiben summary { cursor: pointer; color: var(--blue-light); }
.antwort-schreiben textarea, .beitrag-neu textarea { width: 100%; padding: 10px; border: 1px solid var(--border); border-radius: 8px; font-size: 14px; font-family: inherit; margin: 8px 0; box-sizing: border-box; }
.beitrag-neu { margin-top: 16px; border-top: 2px solid var(--border); padding-top: 14px; }
.beitrag-bilder { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.beitrag-bilder img { max-height: 160px; max-width: 240px; border-radius: 8px; display: block; }
.bild-dropzone { border: 2px dashed var(--border); border-radius: 10px; padding: 14px; text-align: center; color: #667; cursor: pointer; margin-bottom: 10px; font-size: 14px; }
.bild-dropzone:hover, .dropzone-aktiv { border-color: var(--blue); background: #f0f4fa; color: var(--blue); }
.bild-anzahl { font-weight: 600; color: #1e6b1e; }

/* Wohnungen */
.inventar-foto { height: 44px; width: auto; border-radius: 6px; display: block; }
.foto-link { display: inline-flex; align-items: center; gap: 8px; }
.foto-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 16px; margin-top: 16px; }
.foto-karte { background: #fff; border-radius: 12px; overflow: hidden; box-shadow: 0 1px 4px rgba(0,0,0,.08); }
.foto-karte img { width: 100%; height: 200px; object-fit: cover; display: block; }
.foto-karte-fuss { display: flex; justify-content: space-between; align-items: center; padding: 8px 12px; }
.foto-hinzufuegen { margin: 14px 0; }
.foto-knopf { font-size: 16px; padding: 14px 22px; cursor: pointer; display: inline-block; }
.foto-knopf input[type=file] { display: none; }
.foto-zelle { min-width: 130px; }
.wohnung-einstellungen { background: #fff; border-radius: 12px; padding: 12px 16px; margin-bottom: 14px; }
.wohnung-einstellungen summary { cursor: pointer; font-weight: 600; color: var(--blue); }

/* Lager */
.bestand-zelle { white-space: nowrap; }
.bestand-input { width: 52px; min-width: 52px; display: inline-block; text-align: center; }
tr.bestand-leer td { opacity: 0.55; }
.listen-hinweis { display: inline-block; background: #fff; border-left: 5px solid var(--blue); border-radius: 8px; padding: 10px 16px; font-size: 16px; font-weight: 700; color: var(--blue); box-shadow: 0 1px 4px rgba(0,0,0,.05); }
.listen-untertitel { margin: 28px 0 10px; font-size: 20px; color: var(--blue); }
.team-schalter { display: inline-flex; margin-right: 4px; }
.team-schalter select { background: rgba(255,255,255,.12); color: #fff; border: 1px solid rgba(255,255,255,.4);
  border-radius: 8px; padding: 3px 8px; font-size: 13px; font-weight: 600; cursor: pointer; }
.team-schalter select option { color: #1a1a2e; background: #fff; }
.sammel-details { margin-top: 32px; background: #fff; border: 1px solid var(--border); border-radius: 10px; padding: 12px 16px; }
.sammel-details summary { cursor: pointer; font-weight: 700; color: var(--blue); font-size: 16px; }
.sammel-details form { margin-top: 14px; }
.sammel-titel { margin: 18px 0 8px; }
.sammel-alle { display: block; margin-bottom: 8px; }
.sammel-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 6px 14px; }
.sammel-grid label { display: flex; align-items: center; gap: 6px; }
.mieter-wahl { min-width: 170px; }
.mieter-wahl summary { cursor: pointer; font-size: 13px; }
.mieter-liste { display: flex; flex-direction: column; align-items: flex-start; gap: 5px; padding: 8px 10px; margin-top: 4px; background: #fff; border: 1px solid var(--border); border-radius: 8px; width: 100%; box-sizing: border-box; }
.mieter-liste label { display: flex; align-items: baseline; gap: 7px; font-size: 13px; text-align: left; width: 100%; }
.mieter-liste label input { flex-shrink: 0; }
/* Formular-Regel „input = volle Breite" gilt nicht für die Häkchen der Mieter-Auswahl */
.form-grid .mieter-liste label input[type="checkbox"],
.mieter-liste label input[type="checkbox"] { display: inline-block; width: auto; margin: 0; }
.mieter-liste.offen { margin-top: 6px; }
.ablage-foto { height: 46px; width: auto; border-radius: 6px; vertical-align: middle; }
.listen-untertitel:first-of-type { margin-top: 8px; }
.rueckstand-info { font-size: 13px; font-weight: 600; color: var(--red); background: #f4dede; padding: 3px 12px; border-radius: 20px; margin-left: 10px; vertical-align: middle; }
.rueckstand-ok { font-size: 13px; font-weight: 600; color: #1e6b1e; background: #d9efd9; padding: 3px 12px; border-radius: 20px; margin-left: 10px; vertical-align: middle; }

.tag-btr-offen { background: #fdf1d2; color: #9a7400; }
.tag-btr-bezahlt { background: #d9efd9; color: #1e6b1e; }
.tag-btr-angemahnt { background: #f4dede; color: var(--red); }

.dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; }
.dot-ok { background: #2e9e2e; } .dot-warn { background: #e6a700; } .dot-bad { background: var(--red); }

/* Seitenkopf, Suche */
.page-head { display: flex; justify-content: space-between; align-items: center; }
.searchbar { display: flex; gap: 10px; align-items: center; margin: 10px 0; }
.searchbar input { padding: 9px 12px; border: 1px solid var(--border); border-radius: 8px; width: 260px; }

/* Profil */
.profile-head { display: flex; gap: 18px; align-items: center; background: #fff; padding: 18px; border-radius: 12px; box-shadow: 0 1px 4px rgba(0,0,0,.05); flex-wrap: wrap; }
.profile-head h1 { margin: 0 0 4px; }
.avatar { width: 104px; height: 104px; border-radius: 50%; background: var(--blue); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 32px; font-weight: 700; flex-shrink: 0; }
.passbild { height: 156px; width: auto; border-radius: 10px; border: 1px solid var(--border); flex-shrink: 0; box-shadow: 0 1px 4px rgba(0,0,0,.08); }
.list-passbild { height: 46px; width: auto; border-radius: 6px; display: block; margin: 0 auto; }
.list-avatar { width: 34px; height: 34px; border-radius: 50%; background: var(--blue); color: #fff; display: inline-flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 700; }
.passfoto-vorschau img { height: 72px; width: 72px; object-fit: cover; border-radius: 8px; border: 1px solid var(--border); }
.head-actions { margin-left: auto; display: flex; gap: 8px; flex-wrap: wrap; }

/* Detail-Listen */
.grid-dl { display: grid; grid-template-columns: 200px 1fr; gap: 6px 16px; background: #fff; padding: 16px; border-radius: 10px; margin: 12px 0; }
.grid-dl dt { font-weight: 600; color: #445; } .grid-dl dd { margin: 0; }

/* Formulare */
.form-zeilen { background: #fff; padding: 20px; border-radius: 12px; }
.form-zeilen label { font-size: 13px; font-weight: 600; color: #445; display: block; }
.form-zeilen input, .form-zeilen select { display: block; width: 100%; margin-top: 4px; padding: 9px; border: 1px solid var(--border); border-radius: 8px; font-size: 14px; box-sizing: border-box; }
.form-zeilen h3 { margin: 20px 0 10px; font-size: 15px; color: var(--blue); }
.form-zeilen .form-actions { display: flex; gap: 10px; margin-top: 18px; }
.form-zeile { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; gap: 14px; margin-bottom: 14px; }
.form-zeilen .checkbox-label { display: flex; align-items: center; gap: 8px; align-self: end; padding-bottom: 10px; }
.form-zeilen .checkbox-label input { width: 17px; height: 17px; margin: 0; }
@media (max-width: 700px) { .form-zeile { grid-auto-flow: row; } }

.form-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 14px; background: #fff; padding: 20px; border-radius: 12px; }
.form-grid label { font-size: 13px; font-weight: 600; color: #445; }
.form-grid input, .form-grid select { display: block; width: 100%; margin-top: 4px; padding: 9px; border: 1px solid var(--border); border-radius: 8px; font-size: 14px; }
.form-actions { grid-column: 1 / -1; display: flex; gap: 10px; margin-top: 8px; }

/* DEB-Logo neben Überschriften */
.mit-logo { display: flex; align-items: center; gap: 10px; }
.deb-logo { height: 36px; width: auto; }

/* Datei-Upload-Zeilen (Spielerpass/Einzellizenz) */
.datei-zeile { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; background: #fff; padding: 12px 16px; border-radius: 10px; margin: 0 0 8px; }
.upload-form { display: flex; align-items: center; gap: 8px; margin-left: auto; }
.upload-form input[type=file] { font-size: 13px; max-width: 220px; }
.upload-inline { margin: 6px 0 0; }
.upload-inline input[type=file] { max-width: 170px; font-size: 12px; }
.btn-klein { padding: 5px 10px; font-size: 12px; }

/* Direkt in der Tabelle bearbeitbare Zellen (Material) */
.zellen-input { width: 100%; min-width: 70px; padding: 5px 6px; border: 1px solid var(--border); border-radius: 6px; font-size: 13px; box-sizing: border-box; }
.zellen-kurz { min-width: 60px; max-width: 95px; }
/* Auf/Ab-Pfeile in schmalen Zahlenfeldern ausblenden, damit der Betrag voll sichtbar ist */
input[type="number"].zellen-kurz { -moz-appearance: textfield; appearance: textfield; }
input[type="number"].zellen-kurz::-webkit-outer-spin-button,
input[type="number"].zellen-kurz::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.aktionen-zelle { white-space: nowrap; }
.checkbox-zeile { display: flex; align-items: center; gap: 8px; font-size: 14px !important; padding-top: 22px; }
.checkbox-zeile input { width: 17px; height: 17px; margin: 0; }

/* Eigene Vorschlagsliste (Ersatz für fehlerhafte Safari-Datalist) */
.kombi-box {
  position: absolute; left: 0; right: 0; top: 100%; margin-top: 2px;
  background: #fff; border: 1px solid var(--border); border-radius: 8px;
  box-shadow: 0 6px 16px rgba(0,0,0,.18); z-index: 50; max-height: 190px; overflow-y: auto;
}
.kombi-eintrag { padding: 8px 12px; font-size: 14px; cursor: pointer; color: #1a1a2e; text-align: left; }
.kombi-eintrag:hover { background: #f0f4fa; }

/* CSS-Tabs (Radio-basiert, ohne JS) */
.tabs { margin-top: 20px; }
.tabs > input[type=radio] { display: none; }
/* Reiter in EINER Zeile, seitlich wischbar (wie in Apps üblich) */
.tab-zeile {
  display: flex; flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch;
  border-bottom: 1px solid var(--border);
  scrollbar-width: none;
  /* Wischen auf der Zeile wirkt nur seitlich, nicht zusätzlich hoch/runter */
  touch-action: pan-x;
  overscroll-behavior-x: contain;
}
.tab-zeile::-webkit-scrollbar { display: none; }
.tab-zeile label {
  flex: 0 0 auto; white-space: nowrap;
  padding: 8px 14px; cursor: pointer; font-size: 14px; font-weight: 600;
  color: #556; border-bottom: 3px solid transparent; margin-bottom: -1px;
}
.tab-zeile label:hover { color: var(--blue); }
.tabs > section { display: none; padding-top: 8px; }

.tabs:has(> #tab-stammdaten:checked) label[for=tab-stammdaten],
.tabs:has(> #tab-adressen:checked) label[for=tab-adressen],
.tabs:has(> #tab-eltern:checked) label[for=tab-eltern],
.tabs:has(> #tab-dokumente:checked) label[for=tab-dokumente],
.tabs:has(> #tab-pass:checked) label[for=tab-pass],
.tabs:has(> #tab-gesundheit:checked) label[for=tab-gesundheit],
.tabs:has(> #tab-notfall:checked) label[for=tab-notfall],
.tabs:has(> #tab-einverstaendnis:checked) label[for=tab-einverstaendnis],
.tabs:has(> #tab-material:checked) label[for=tab-material],
.tabs:has(> #tab-schlaeger:checked) label[for=tab-schlaeger],
.tabs:has(> #tab-zuzahlungen:checked) label[for=tab-zuzahlungen],
.tabs:has(> #tab-historie:checked) label[for=tab-historie],
.tabs:has(> #tab-beitraege:checked) label[for=tab-beitraege] {
  color: var(--blue); border-bottom-color: var(--red);
}

#tab-stammdaten:checked ~ #panel-stammdaten,
#tab-adressen:checked ~ #panel-adressen,
#tab-eltern:checked ~ #panel-eltern,
#tab-dokumente:checked ~ #panel-dokumente,
#tab-pass:checked ~ #panel-pass,
#tab-gesundheit:checked ~ #panel-gesundheit,
#tab-notfall:checked ~ #panel-notfall,
#tab-einverstaendnis:checked ~ #panel-einverstaendnis,
#tab-material:checked ~ #panel-material,
#tab-schlaeger:checked ~ #panel-schlaeger,
#tab-zuzahlungen:checked ~ #panel-zuzahlungen,
#tab-historie:checked ~ #panel-historie,
#tab-beitraege:checked ~ #panel-beitraege {
  display: block;
}

/* Bearbeitungsstand im Schriftverkehr */
.status-offen { background: #fde8e8; color: #b42318; }
.status-inBearbeitung { background: #fdf3d7; color: #935f00; }
.status-erledigt { background: #d9f2e2; color: #1a7f37; }
select.status-select { border-radius: 20px; font-weight: 600; text-align: center; }

/* Mitwachsende Textfelder (Betreff/Notizen im Schriftverkehr) */
textarea.zellen-text { min-width: 180px; resize: none; overflow: hidden; line-height: 1.45; font-family: inherit; }

/* ===== @-Erwähnungen ===== */
.erwaehnung { color: var(--blue-light); font-weight: 600; }
.erwaehnung-badge { background: var(--red); color: #fff; border-radius: 10px; padding: 0 6px; font-size: 12px; font-weight: 700; display: inline-block; min-width: 18px; line-height: 18px; text-align: center; }
.tab-icon { position: relative; }
.tab-punkt { position: absolute; top: -5px; right: -12px; background: var(--red); color: #fff; border-radius: 9px; font-size: 10px; line-height: 14px; min-width: 14px; padding: 0 3px; text-align: center; font-weight: 700; }
.kanal-punkt { display: inline-block; width: 9px; height: 9px; border-radius: 50%; background: var(--red); margin-left: 6px; vertical-align: middle; }
.erwaehnung-vorschlaege { border: 1px solid var(--border); background: #fff; border-radius: 8px; margin-top: 4px; box-shadow: 0 4px 10px rgba(0,0,0,.08); overflow: hidden; }
.erwaehnung-vorschlaege button { display: block; width: 100%; text-align: left; padding: 8px 12px; border: 0; background: none; font-size: 14px; cursor: pointer; }
.erwaehnung-vorschlaege button:hover { background: var(--bg); }

/* Übergabeprotokolle: dezente Verweise in einer Zeile statt grauer Knöpfe */
.protokoll-links { display: flex; gap: 6px; flex-wrap: nowrap; }
.protokoll-links a {
  display: inline-flex; align-items: center; gap: 4px; white-space: nowrap;
  padding: 5px 12px; border: 1px solid var(--border); border-radius: 20px;
  background: #fff; color: var(--blue); font-size: 13px; font-weight: 600;
}
.protokoll-links a:hover { border-color: var(--blue-light); background: #f0f4fa; text-decoration: none; }

/* Rechtstexte (Impressum, Datenschutz) */
.rechtstext { max-width: 720px; margin: 0 auto; background: #fff; border-radius: 12px; padding: 28px 32px; box-shadow: 0 2px 10px rgba(0,0,0,.06); }
.rechtstext h1 { color: var(--blue); }
.rechtstext h2 { color: var(--blue); font-size: 16px; margin-top: 24px; }
.rechtstext p, .rechtstext li { font-size: 14px; line-height: 1.6; }
.rechtslinks { margin-top: 10px; font-size: 12px; }
.rechtslinks a { color: #8a94a6; }

/* Gestapelte Tabelle (z. B. Eltern): am Desktop nur so breit wie der Inhalt,
   damit die Aktion-Spalte direkt hinter den Feldern steht */
@media (min-width: 801px) {
  .stapel-tabelle { width: 100%; }
  .stapel-tabelle th, .stapel-tabelle td { padding: 8px 7px; }
  .stapel-tabelle th { font-size: 13px; }
  /* Feste Spaltverteilung: Notizen nimmt den Rest, nichts wächst nach rechts */
  .stapel-tabelle td[data-label="Vorname"], .stapel-tabelle td[data-label="Nachname"] { width: 9%; min-width: 80px; }
  .stapel-tabelle td[data-label="Verhältnis"] { min-width: 185px; }
  .stapel-tabelle td[data-label="Mobil"] { width: 11%; min-width: 125px; }
  .stapel-tabelle td[data-label="E-Mail"] { width: 17%; min-width: 150px; }
  .stapel-tabelle td[data-label="Notizen"] { width: 26%; }
}
/* Mitwachsende Zellen-Felder (Eltern): mehrzeilig, wachsen nach unten */
textarea.zellen-wachsend { width: 100%; min-width: 0; resize: none; overflow: hidden; line-height: 1.4; font-family: inherit; }

/* Gestapelte Tabelle (z. B. Eltern): mobil ein Kasten je Zeile statt Seitwärts-Scrollen */
@media (max-width: 800px) {
  .stapel-tabelle { display: block; overflow: visible; background: none; box-shadow: none; }
  .stapel-tabelle thead { display: none; }
  .stapel-tabelle tbody { display: block; }
  .stapel-tabelle tr {
    display: grid; grid-template-columns: 1fr 1fr; gap: 10px 14px;
    background: #fff; border: 1px solid var(--border); border-radius: 10px;
    padding: 12px 14px; margin-bottom: 12px; box-shadow: 0 1px 4px rgba(0,0,0,.05);
  }
  .stapel-tabelle tr:hover { background: #fff; }
  .stapel-tabelle td { display: flex; flex-direction: column; gap: 3px; border: none; padding: 0; text-align: left; }
  .stapel-tabelle td::before { content: attr(data-label); font-size: 11px; font-weight: 700; color: #667; text-transform: uppercase; letter-spacing: .02em; }
  .stapel-tabelle td[data-label="Notfall"], .stapel-tabelle td[data-label="Sorgerecht"], .stapel-tabelle td[data-label="Abholung"] {
    flex-direction: row; align-items: center; gap: 8px;
  }
  .stapel-tabelle .zelle-breit { grid-column: 1 / -1; }
  .stapel-tabelle .aktionen-zelle { flex-direction: row; justify-content: flex-end; }
  .stapel-tabelle .aktionen-zelle::before { margin-right: auto; align-self: center; }
  .stapel-tabelle .zellen-input { width: 100% !important; }
}

/* PDF-Anhänge in Info-Beiträgen */
.beitrag-dateien { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.beitrag-dateien a {
  display: inline-flex; align-items: center; gap: 5px; max-width: 100%;
  padding: 6px 12px; border: 1px solid var(--border); border-radius: 20px;
  background: #fff; color: var(--blue); font-size: 13px; font-weight: 600;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.beitrag-dateien a:hover { border-color: var(--blue-light); background: #f0f4fa; text-decoration: none; }

/* Anhänge nachträglich verwalten (Infos) */
.anhang-verwalten { margin-top: 6px; }
.anhang-verwalten summary { font-size: 12px; color: #667; cursor: pointer; font-weight: 400; }
.anhang-bereich { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; padding: 8px 0 2px; }
.anhang-chip { display: inline-flex; align-items: center; gap: 4px; padding: 5px 12px;
  border: 1px solid var(--border); border-radius: 20px; background: #fff; color: var(--red);
  font-size: 13px; cursor: pointer; }
.anhang-chip:hover { border-color: var(--red); background: #fdf1f1; }
.anhang-neu { display: flex; gap: 8px; align-items: center; }
.anhang-neu input[type=file] { font-size: 12px; max-width: 230px; }

/* Zimmerbelegung Auswärtsfahrten */
.kpi-grid-schmal { margin-bottom: 0; grid-template-columns: repeat(auto-fill, minmax(200px, 340px)); }
/* Bereich Turniere: feste Reihen à 3 Kacheln (Pierre, 25.10.2026) */
.kpi-reihe { grid-template-columns: repeat(3, minmax(0, 1fr)); max-width: 1080px; margin: 20px 0 0; }
.kpi-reihe + .kpi-reihe { margin-top: 14px; }
.kpi-reihe-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); max-width: 1400px; }
@media (max-width: 960px) { .kpi-reihe-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 720px) { .kpi-reihe-4 { grid-template-columns: 1fr; } }
.kpi-reihe-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); max-width: 1500px; }
@media (max-width: 1200px) { .kpi-reihe-5 { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 720px) { .kpi-reihe-5 { grid-template-columns: 1fr; } }
/* Durchführungsbestimmungen (26.10.2026) */
.bd-doku { background: #fff; border: 1px solid var(--border); max-width: 860px; margin: 0 auto; box-shadow: 0 2px 10px rgba(0,0,0,.06); color: #111; }
.bd-kopf { background: #1b2a4e; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 10px 26px 10px 22px; }
.bd-logo { height: 68px; }
.bd-verein { color: #fff; font-weight: 900; font-size: 26px; letter-spacing: .5px; text-align: right; }
.bd-streifen { height: 9px; background: #e2001a; }
.bd-titelblock { display: grid; grid-template-columns: 110px 1fr 120px; align-items: center; gap: 16px; padding: 22px 36px 10px; }
.bd-partner { width: 100%; border-radius: 4px; }
.bd-titel { text-align: center; }
.bd-titel-1 { font-weight: 800; font-size: 20px; }
.bd-titel-2 { font-weight: 800; font-size: 18px; margin-top: 2px; }
.bd-titel-3 { color: #555; font-size: 13px; margin-top: 4px; }
.bd-inhalt { display: flex; flex-wrap: wrap; gap: 3px 12px; font-size: 12px; margin: 6px 36px 10px; padding: 8px 12px; background: #f4f6fa; border-radius: 8px; }
.bd-abschnitte { display: grid; grid-template-columns: 170px 1fr; gap: 10px 24px; margin: 10px 36px 24px; font-size: 14px; line-height: 1.45; }
.bd-abschnitte dt { font-weight: 700; text-decoration: underline; padding-top: 1px; }
.bd-abschnitte dd { margin: 0; }
.bd-abschnitte dd p, .bd-abschnitte dd ul { margin: 0 0 6px; }
.bd-abschnitte dd ul { padding-left: 18px; }
.bd-fuss-rot { background: #e2001a; color: #fff; font-weight: 700; font-size: 10px; letter-spacing: .6px; text-align: right; padding: 3px 26px; }
.bd-fuss-blau { background: #1b2a4e; min-height: 46px; display: flex; align-items: center; justify-content: center; gap: 22px; padding: 8px 26px; position: relative; }
.bd-fuss-blau img { height: 30px; background: #fff; border-radius: 3px; padding: 2px 4px; }
.bd-stand { position: absolute; right: 26px; bottom: 4px; color: #c9d0e0; font-size: 10px; }
@media (max-width: 640px) { .bd-kopf { padding: 8px 12px; } .bd-logo { height: 46px; } .bd-verein { font-size: 16px; } .bd-titelblock { grid-template-columns: 1fr; padding: 14px 16px 6px; } .bd-partner { width: 110px; margin: 0 auto; } .bd-abschnitte { grid-template-columns: 1fr; gap: 2px 0; margin: 10px 16px 20px; } .bd-abschnitte dd { margin-bottom: 10px; } }
@media print { .bd-doku { border: none; box-shadow: none; max-width: none; } .bd-kopf, .bd-streifen, .bd-fuss-rot, .bd-fuss-blau { -webkit-print-color-adjust: exact; print-color-adjust: exact; } .db-doku { display: none; } }
.db-doku { background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 20px 26px; max-width: 900px; line-height: 1.5; }
.db-titel { margin: 0 0 2px; font-size: 24px; }
.db-untertitel { margin: 0 0 14px; }
.db-inhalt { display: flex; flex-wrap: wrap; gap: 4px 14px; font-size: 13px; margin: 0 0 16px; padding: 8px 12px; background: #f4f6fa; border-radius: 8px; }
.db-abschnitt { margin: 0 0 14px; }
.db-abschnitt h2 { font-size: 17px; margin: 14px 0 4px; }
.db-abschnitt p, .db-abschnitt ul { margin: 4px 0; }
.db-status { display: flex; flex-wrap: wrap; gap: 12px 24px; align-items: center; justify-content: space-between; }
.db-edit { background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 10px 14px; margin: 0 0 10px; max-width: 1000px; }
.db-edit-neu { border-style: dashed; }
.db-edit-kopf { display: flex; gap: 8px; align-items: center; margin-bottom: 6px; }
.db-nr { font-weight: 700; color: #667; min-width: 24px; }
.db-edit-titel { flex: 1; font-size: 16px; font-weight: 700; padding: 6px 8px; border: 1px solid var(--border); border-radius: 8px; }
.db-edit-aktionen { display: flex; gap: 4px; }
.db-edit-text { width: 100%; padding: 8px; border: 1px solid var(--border); border-radius: 8px; font: inherit; font-size: 14px; line-height: 1.4; }
@media print { .db-doku { border: none; padding: 0; } .tp-kopf, .tp-nav, .jg-kopf { display: none !important; } }
/* Bereich Turniere: Block je Turnier (26.10.2026) */
.tb-block { margin: 26px 0 0; padding: 14px 16px 16px; background: #f4f6fa; border: 1px solid var(--border); border-radius: 14px; max-width: 1400px; }
.tb-titel { margin: 0 0 4px; font-size: 20px; }
.tb-titel .muted { font-size: 14px; font-weight: 400; }
.tb-reihe-titel { font-size: 12px; text-transform: uppercase; letter-spacing: .04em; margin-top: 10px; }
.tb-block .kpi-reihe { margin-top: 6px; }
.tb-alt { margin-top: 24px; }
.tb-alt summary { cursor: pointer; font-weight: 700; }
@media (max-width: 720px) { .kpi-reihe { grid-template-columns: 1fr; } }
.zimmer-spalten { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
@media (max-width: 800px) { .zimmer-spalten { grid-template-columns: 1fr; } }
.zimmer-spalte { background: #fff; border-radius: 12px; padding: 14px 18px 18px; box-shadow: 0 1px 4px rgba(0,0,0,.05); }
.zimmer-spalte h2 { margin-top: 4px; }
.zimmer-liste { display: flex; flex-wrap: wrap; gap: 8px; }
.zimmer-chip { display: inline-block; padding: 8px 14px; border: 1px solid var(--border); border-radius: 20px;
  background: #fff; color: var(--blue); font-size: 14px; font-weight: 600; cursor: pointer; }
.zimmer-chip:hover { border-color: var(--blue-light); background: #f0f4fa; }
.chip-doppel { background: #eaf1fa; border-color: #b9cee6; }
.chip-einzel { background: #fdf3d7; border-color: #e6d194; color: #6b5200; }

/* Zimmerbelegung: 12 Doppelzimmer-Boxen */
.zimmer-raster { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 12px; }
.zimmer-box { background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 10px 12px 12px;
  box-shadow: 0 1px 4px rgba(0,0,0,.05); cursor: pointer; display: flex; flex-direction: column; gap: 6px; }
.zimmer-box:hover { border-color: var(--blue-light); }
.zimmer-box.zimmer-voll { cursor: default; background: #f7f9fc; }
.zimmer-titel { font-size: 12px; font-weight: 700; color: #667; text-transform: uppercase; letter-spacing: .02em; }
.zimmer-platz-frei { border: 1px dashed var(--border); border-radius: 20px; padding: 7px 14px;
  color: #99a; font-size: 13px; text-align: center; }
.zimmer-box .zimmer-chip { width: 100%; }
.zimmer-box-einzel { cursor: pointer; margin-bottom: 8px; }
.chip-gewaehlt { background: var(--blue) !important; color: #fff !important; border-color: var(--blue) !important; }

/* Zimmerbelegung: Verwaltung + Sperren */
.zimmer-gesperrt { opacity: .55; cursor: not-allowed !important; background: #f2f2f4; }
.chip-fest { cursor: default; }
.zimmer-verwaltung { margin-top: 28px; background: #fff; border-radius: 12px; padding: 14px 18px; box-shadow: 0 1px 4px rgba(0,0,0,.05); }
.zimmer-verwaltung summary { cursor: pointer; font-weight: 600; color: var(--blue); }
.zimmer-verwaltung h3 { margin-bottom: 8px; }
.sperre-form { display: flex; flex-wrap: wrap; gap: 10px; align-items: end; }
.sperre-form label { font-size: 13px; font-weight: 600; color: #445; display: flex; flex-direction: column; gap: 4px; }
.sperre-form input { padding: 7px 9px; border: 1px solid var(--border); border-radius: 8px; font-size: 14px; }
.zimmer-verwaltung-tabelle { max-width: 560px; }

/* Zimmerbelegung: Druckansicht (PDF über den Druckdialog) */
.zimmer-druck { display: none; }
@media print {
  .nur-bildschirm, .no-print, .topnav, .tabbar, #mehr-menue { display: none !important; }
  .zimmer-druck { display: block; }
  body { background: #fff; }
  main { max-width: none; padding: 0; }
  .page-head h1 { color: #003366; border-bottom: 3px solid #003366; padding-bottom: 6px; margin-bottom: 4px; }
  .zimmer-druck .druck-stand { color: #555; font-size: 12px; margin-top: 0; }
  .zimmer-druck table { box-shadow: none; font-size: 13px; }
  .zimmer-druck th { background: #003366 !important; color: #fff !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .zimmer-druck tr { break-inside: avoid; }
  .zimmer-druck .druck-frei { font-size: 12px; }
  .zimmer-druck .druck-fuss { font-size: 10px; color: #777; margin-top: 12px; }
}

/* Belege (Quittungen/Rechnungen) */
.hinweis-ok { background: #e6f6ea; border: 1px solid #9ad2a8; color: #1c6b33;
  border-radius: 10px; padding: 10px 14px; font-weight: 600; }
.belege-auswertung, .belege-bereiche { max-width: 640px; }
.bereiche-spalten { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; max-width: 900px; }
@media (max-width: 800px) { .bereiche-spalten { grid-template-columns: 1fr; } }
.wj-wahl { margin: 6px 0 -6px; }
.wj-wahl label { font-size: 14px; font-weight: 600; color: #445; }
.wj-wahl select { margin-left: 6px; padding: 7px 9px; border: 1px solid var(--border); border-radius: 8px; font-size: 15px; }
.saldo-minus { color: #c22; }
.summen-zeile td { border-top: 2px solid var(--blue); }

/* Infos: Mitglieder-Kanäle */
.kanal-mitglieder summary { cursor: pointer; font-size: 13px; color: var(--blue); }
/* Ordentliches Spaltenraster: alle Namen bündig untereinander */
.kanal-mitglieder-liste { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
  gap: 7px 16px; padding: 10px 2px; max-height: 280px; overflow-y: auto; }
.kanal-mitglieder-liste label { display: flex; align-items: center; gap: 7px;
  font-size: 13px; font-weight: 400; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.kanal-mitglieder-liste input { flex: none; margin: 0; }

/* Belege: Ampel-Status */
.ampel-wahl { border-width: 2px !important; }
.ampel-gruen { border-color: #2e9e4f !important; background: #e6f6ea; }
.ampel-gelb { border-color: #e6a700 !important; background: #fdf4d8; }
.ampel-rot { border-color: #c8102e !important; background: #fae3e7; }
.ampel-blau { border-color: #0a4f8f !important; background: #e3edf8; }

/* Belege: Aufteilung (Splitbuchung) */
.teil-editor td { background: #f4f7fb; }
.teil-form { display: flex; flex-direction: column; gap: 8px; }
.teil-zeilen { display: flex; flex-direction: column; gap: 6px; }
.teil-zeile { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.teil-zeile input.teil-betrag { width: 110px; }
.teil-fuss { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.teil-summe.teil-rest { color: #b58300; font-weight: 700; }
.teil-hinweis { font-size: 13px; }
.teil-hinweis div { white-space: nowrap; }

/* Belege: zweizeilige Tabellen – Zweck/Notizen in voller Breite */
.beleg-textzeile td { background: #fafbfd; padding-top: 4px; }
tr:has(+ .beleg-textzeile) td { border-bottom: none; }
.beleg-textfelder { display: grid; grid-template-columns: 2fr 1fr; gap: 10px; }
.beleg-textfelder label { font-size: 12px; font-weight: 600; color: #667; display: block; }
.beleg-textfelder textarea { display: block; width: 100%; margin-top: 2px; resize: none; overflow: hidden;
  font-weight: 400; font-size: 14px; line-height: 1.35; }
@media (max-width: 800px) { .beleg-textfelder { grid-template-columns: 1fr; } }

/* Belege: mehrere Dateien je Beleg (09.11.2026) */
.beleg-dateiliste { display: block; font-size: 12px; font-weight: 400; margin-top: 4px; overflow-wrap: anywhere; }
td.beleg-dateien a { white-space: nowrap; }
.beleg-dateien-knoepfe { display: inline-flex; gap: 2px; }
.beleg-dateien-knoepfe sub { font-size: 9px; margin-left: 1px; }
.beleg-dateien-editor { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; font-size: 13px; }
.beleg-dateien-liste { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 4px 14px; }
.beleg-dateien-liste li { display: flex; align-items: center; gap: 4px; }
.beleg-dateien-nachreichen { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin-left: auto; }
.beleg-dateien-nachreichen label { font-size: 12px; font-weight: 600; color: #667; display: flex; align-items: center; gap: 6px; }
.beleg-dateien-nachreichen input[type=file] { font-size: 12px; max-width: 260px; }

/* Benutzerverwaltung: Team-Freischaltung als Häkchenliste */
.team-haken summary { cursor: pointer; font-size: 13px; white-space: nowrap; }
.team-haken-liste { display: flex; flex-wrap: wrap; gap: 4px 10px; padding: 6px 2px; max-width: 260px; }
.team-haken-liste label { font-size: 13px; white-space: nowrap; font-weight: 400; }
.team-haken-neu { max-width: none; margin-bottom: 8px; }

/* Datenauswahl: gespeicherte Tabellen */
.vorlagen-zeile { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-top: 10px;
  padding-top: 10px; border-top: 1px dashed var(--border); }
.vorlagen-zeile label { font-size: 13px; font-weight: 600; color: #445; display: flex; align-items: center; gap: 6px; }
.vorlagen-zeile select, .vorlagen-zeile input { padding: 7px 9px; border: 1px solid var(--border); border-radius: 8px; font-size: 14px; }
.vorlagen-zeile input { min-width: 220px; }
.vorlagen-trenner { flex-basis: 12px; }
@media print { .vorlagen-zeile { display: none; } }

/* Lagerauswertung (PDF über den Druckdialog) */
.lager-auswertung h2 { color: var(--blue); margin-top: 26px; }
.lager-auswertung .druck-stand { color: #556; font-size: 13px; }
.lager-auswertung .druck-fuss { font-size: 12px; color: #778; margin-top: 16px; }
@media print {
  .lager-auswertung table { box-shadow: none; font-size: 10px; }
  .lager-auswertung th, .lager-auswertung td { padding: 3px 6px; }
  .lager-auswertung th { background: #003366 !important; color: #fff !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .lager-auswertung tr { break-inside: avoid; }
  .lager-auswertung h2 { color: #003366; break-after: avoid; }
  .lager-auswertung h3 { break-after: avoid; }
  .lager-auswertung .druck-fuss { font-size: 10px; color: #777; }
}

/* Umfragen */
.umfragen-liste { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; }
.umfrage-karte { display: flex; flex-direction: column; gap: 4px; background: #fff; border: 1px solid var(--border);
  border-left: 5px solid var(--blue); border-radius: 10px; padding: 14px 16px; color: inherit; }
.umfrage-karte:hover { box-shadow: 0 3px 10px rgba(0,0,0,.08); text-decoration: none; }
.umfrage-karte.umfrage-zu { border-left-color: #8a94a6; opacity: .8; }
.umfrage-formular { background: #fff; border-radius: 12px; padding: 16px 18px; box-shadow: 0 1px 4px rgba(0,0,0,.05); max-width: 640px; }
.umfrage-formular label { display: block; font-weight: 600; font-size: 14px; color: #445; margin: 12px 0 4px; }
.umfrage-formular input, .umfrage-formular select { display: block; width: 100%; margin-top: 4px; padding: 9px;
  border: 1px solid var(--border); border-radius: 8px; font-size: 15px; font-weight: 400; }
.frage-block { border-top: 1px dashed var(--border); margin-top: 12px; padding-top: 4px; }
.antwort-bereich { background: #fff; border-radius: 12px; padding: 12px 18px; box-shadow: 0 1px 4px rgba(0,0,0,.05); margin-bottom: 18px; }
.antwort-bereich summary { cursor: pointer; font-weight: 600; color: var(--blue); }
.antwort-bereich .umfrage-formular { box-shadow: none; padding: 4px 0 8px; }
.umfrage-tabelle td, .umfrage-tabelle th { vertical-align: top; }
.zeile-offen td { color: #99a; }
@media print {
  .umfrage-tabelle { font-size: 11px; }
  .umfrage-tabelle th { background: #003366 !important; color: #fff !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .umfrage-tabelle tr { break-inside: avoid; }
}

/* Umfragen: Mehrfachauswahl */
.frage-mehrfach { margin: 12px 0 4px; }
.frage-mehrfach .frage-titel { display: block; font-weight: 600; font-size: 14px; color: #445; margin-bottom: 6px; }
.mehrfach-option { display: inline-flex !important; align-items: center; gap: 6px; margin: 2px 14px 2px 0 !important;
  font-weight: 400 !important; font-size: 14px !important; }
.umfrage-formular input[type=checkbox], .umfrage-formular input[type=radio] { width: auto; display: inline; margin: 0; }

/* Umfragen: Antworten-Liste mit Ja/Nein je Zeile */
.janein-zeile { display: flex; align-items: center; gap: 4px; padding: 6px 0; border-bottom: 1px dashed var(--border); }
.janein-zeile:last-child { border-bottom: none; }
.janein-antwort { flex: 1; font-size: 14px; }

/* Umfragen im Forms-Stil */
.umfrage-karte { padding: 0; overflow: hidden; border-left: 1px solid var(--border); }
.karte-kopf { display: flex; justify-content: center; align-items: center;
  background: linear-gradient(135deg, #002a55, #0a4f8f); padding: 22px 0; }
.karte-kopf img { height: 64px; width: auto; }
.karte-inhalt { display: flex; flex-direction: column; gap: 4px; padding: 14px 16px 16px; }
.karte-inhalt strong { font-size: 16px; color: #1a1a2e; }
.karte-antworten { font-weight: 600; color: var(--blue); font-size: 14px; }

.umfrage-hero { max-width: 760px; border-radius: 14px; overflow: hidden;
  box-shadow: 0 2px 10px rgba(0,0,0,.08); margin-bottom: 18px; background: #fff; }
.hero-blau { background: linear-gradient(135deg, #002a55, #0a4f8f); display: flex; justify-content: center; padding: 30px; }
.hero-blau img { height: 110px; width: auto; }
.hero-text { padding: 22px 30px; }
.hero-text h1 { color: var(--blue); margin: 0 0 8px; font-size: 30px; }
.hero-text p { color: #556; margin: 0; }

.antwort-bereich, .umfrage-formular { max-width: 760px; }
.antwort-bereich { background: none; box-shadow: none; padding: 0; }
.antwort-bereich summary { background: #fff; border-radius: 12px; padding: 12px 18px; box-shadow: 0 1px 4px rgba(0,0,0,.05); }
.antwort-bereich .umfrage-formular { background: none; }
.frage-karte { background: #fff; border-radius: 12px; padding: 16px 20px 18px; box-shadow: 0 1px 4px rgba(0,0,0,.05); margin: 12px 0; }
.frage-karte .frage-titel { font-size: 15px; }
/* Auswahl-Antworten untereinander (wie bei Forms) */
.frage-senkrecht .mehrfach-option { display: flex !important; margin: 8px 0 !important; }
@media print { .umfrage-hero .hero-blau { display: none; } }

/* Umfrage-Kacheln: kompakte Auswertung */
.karte-frage { font-size: 12px; font-weight: 700; color: #667; text-transform: uppercase; letter-spacing: .02em; margin-top: 6px; }
.karte-wert { font-size: 13px; color: #334; }

/* Umfrage-Kacheln: Fußzeile mit Tabellen-Knopf */
.umfrage-karte .karte-link { display: flex; flex-direction: column; color: inherit; }
.umfrage-karte .karte-link:hover { text-decoration: none; }
.umfrage-karte:hover { box-shadow: 0 3px 10px rgba(0,0,0,.08); }
.karte-fuss { padding: 0 16px 14px; margin-top: auto; }

/* Push-Benachrichtigungen */
.push-haken { display: inline-flex; align-items: center; gap: 6px; font-size: 14px; color: #445; margin-right: 12px; }
.push-haken input { width: 16px; height: 16px; }
#push-banner { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
#push-banner[hidden] { display: none; }

/* Anwesenheitsliste */
.anw-legende .anw-status { margin-right: 2px; }
.anw-kopf { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 8px; margin: 10px 0; }
.anw-tabs, .anw-nav { display: flex; align-items: center; gap: 6px; }
.anw-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.anw-tabelle { min-width: 640px; }
.anw-tabelle th, .anw-tabelle td { text-align: center; padding: 6px 4px; }
.anw-tabelle th:first-child, .anw-tabelle td:first-child { text-align: left; white-space: nowrap; padding-left: 10px; }
.anw-tabelle th.anw-we { color: #b06060; }
.anw-tabelle .anw-heute { background: #fff8dd; }
.anw-summe { color: #666; font-size: 12px; }
.anw-zelle { width: 30px; height: 30px; border: 1px solid #d5d5d5; border-radius: 6px;
  background: #fff; cursor: pointer; font-weight: 700; font-size: 13px; padding: 0; }
.anw-status { display: inline-block; min-width: 22px; text-align: center; border-radius: 6px;
  font-weight: 700; font-size: 13px; padding: 2px 4px; }
.anw-x { background: #e6f6ea; color: #217a38; border-color: #2e9e4f; }
.anw-k { background: #fdecea; color: #b3261e; border-color: #d9534f; }
.anw-n { background: #e8f0fe; color: #1a56b8; border-color: #4a7fd6; }
.anw-klein { font-size: 11px; }
.anw-klein .anw-k, .anw-klein .anw-n { background: none; padding: 0; min-width: 0; }
.anw-konfig { margin: 16px 0; }
.anw-konfig summary { cursor: pointer; font-weight: 600; }
.anw-gruppe td { background: #eef2f6; color: #46586b; font-weight: 700; font-size: 12px;
  text-transform: uppercase; letter-spacing: .4px; padding: 4px 10px; }
.anw-gruppen-titel { margin: 12px 0 4px; font-weight: 700; font-size: 13px; color: #46586b; }

/* Lieferscheine */
.lief-neu { margin: 10px 0 18px; }
.lief-neu summary { cursor: pointer; font-weight: 600; }
.lief-form { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 10px 16px;
  align-items: end; background: #fff; border-radius: 10px; padding: 14px; margin-top: 10px;
  box-shadow: 0 1px 4px rgba(0,0,0,.05); }
.lief-form label { display: flex; flex-direction: column; gap: 4px; font-size: 14px; font-weight: 600; }
.lief-form input, .lief-form select, .lief-form textarea { padding: 7px 8px; border: 1px solid var(--border);
  border-radius: 6px; font-size: 14px; font-family: inherit; }
.lief-tabelle .lief-unvollstaendig td { background: #fff4e5; }
.lief-dateien { font-size: 13px; }
.lief-datei { display: flex; align-items: center; gap: 4px; white-space: nowrap; }
.lief-datei-x { border: none; background: none; color: #b3261e; cursor: pointer; font-size: 12px; padding: 0 2px; }
.lief-nachreichen { display: inline-block; margin-top: 2px; }
.lief-nachreichen label { cursor: pointer; }
.fehlt-feld { display: flex; flex-direction: column; gap: 6px; grid-column: 1 / -1; }
.fehlt-titel { font-size: 14px; font-weight: 600; }
.fehlt-zeilen { display: flex; flex-direction: column; gap: 4px; }
.fehlt-zeile { display: flex; gap: 6px; }
.fehlt-zeile input[name="fmenge"] { width: 70px; flex: none; }
.fehlt-zeile input[name="fartikel"] { flex: 1; min-width: 140px; }
.fehlt-editor { display: flex; flex-direction: column; gap: 4px; align-items: flex-start; min-width: 220px; }
.fehlt-feld .fehlt-plus, .fehlt-editor .fehlt-plus { align-self: flex-start; }
.lief-bearbeiter { font-size: 12px; color: #666; }
.lief-bearbeiter span { display: block; white-space: nowrap; }
.trikot-ausgabe { display: flex; gap: 4px; align-items: center; }
.trikot-ausgabe select { max-width: 150px; padding: 5px 6px; border: 1px solid var(--border); border-radius: 6px; font-size: 13px; }
.trikot-ausgabe input { width: 60px; padding: 5px 6px; border: 1px solid var(--border); border-radius: 6px; font-size: 13px; }
.kpi-nur-text { display: flex; align-items: center; }
.kpi-nur-text span { font-weight: 600; }
.groessen-block { grid-column: 1 / -1; display: flex; flex-direction: column; gap: 6px; }
.groessen-titel { font-size: 14px; font-weight: 600; }
.groessen-zeilen { display: flex; flex-direction: column; gap: 4px; }
.groessen-zeile { display: flex; gap: 6px; }
.groessen-zeile input[name="ggroesse"] { width: 180px; }
.groessen-zeile input[name="gmenge"] { width: 90px; }
.groessen-block .groesse-plus { align-self: flex-start; }
/* Lager: Bezeichnung immer vollständig lesbar */
.zellen-input[name="item_name"] { min-width: 130px; }
/* Lager: Such- und Filterleiste */
.lager-filter { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 12px 0; }
.lager-filter input[type="search"] { flex: 1; min-width: 240px; padding: 8px 10px; border: 1px solid var(--border); border-radius: 8px; font-size: 14px; }
.lager-filter select { padding: 7px 8px; border: 1px solid var(--border); border-radius: 8px; font-size: 14px; }
.lager-filter .filter-haken { display: flex; align-items: center; gap: 5px; font-size: 14px; white-space: nowrap; cursor: pointer; }
.lager-tabelle textarea[name="besteller"], .lager-tabelle textarea[name="notes"] { min-width: 95px; }
.trikot-ausgabe .uebergabe-sportler { max-width: 170px; }
/* Lager: Übergabe zweizeilig (oben Mannschaft + Person, darunter Menge + Knopf) */
.uebergabe-zweizeilig { display: grid; grid-template-columns: 84px minmax(96px, 1fr); gap: 4px; align-items: center; }
.uebergabe-zweizeilig select, .uebergabe-zweizeilig .uebergabe-sportler { width: 100%; max-width: none; min-width: 0; }
.uebergabe-zweizeilig input[name="menge"] { width: 60px; }
.uebergabe-zweizeilig .btn { justify-self: start; }
/* Lagertabellen nutzen die volle Breite (Notizen bekommen den Rest) und scrollen nur bei Platzmangel in sich */
.lager-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; margin: 12px 0; }
.lager-scroll table.lager-tabelle { margin: 0; min-width: 100%; }
.lager-tabelle td:has(> textarea[name="notes"]) { width: 100%; }
.lager-tabelle textarea[name="notes"] { min-width: 180px; }
.lager-tabelle textarea[name="besteller"] { min-width: 90px; }
.lager-tabelle input[name="size"].zellen-kurz { min-width: 68px; }
.lager-tabelle td:has(> .zubuchen) { white-space: nowrap; }
/* Empfangsbestätigung (29.10.2026): Sportlerseite /bestaetigung, Leitungsliste, Profilspalte */
.mb-box { background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 12px 16px; }
.mb-liste { list-style: none; margin: 0; padding: 0; }
.mb-teil { padding: 8px 0; border-bottom: 1px solid #eee; }
.mb-teil.mb-beanstandet { background: #fff4e5; }
.mb-haken { display: flex; gap: 10px; align-items: flex-start; cursor: pointer; }
.mb-haken input { width: 22px; height: 22px; margin-top: 2px; flex: none; }
.mb-beanstanden-box { margin: 4px 0 0 32px; font-size: 13px; }
.mb-beanstanden-box summary { color: #b26a00; cursor: pointer; }
.mb-beanstanden { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.mb-beanstanden input { flex: 1 1 220px; padding: 6px 8px; border: 1px solid var(--border); border-radius: 6px; font-size: 14px; }
.mb-abschluss { margin-top: 12px; display: flex; flex-direction: column; gap: 10px; }
.mb-einstellung { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 10px 16px; margin: 10px 0 16px; font-size: 14px; }
.mb-aus { color: #b3261e; font-weight: 700; }
.mb-kurzliste { margin: 0; padding-left: 16px; font-size: 13px; }
.mb-flag { color: #b3261e; font-weight: 600; }
tr.mb-zeile-beanstandet td { background: #fff4e5; }
.mb-zelle { font-size: 12px; white-space: nowrap; }
.mb-us { display: block; max-width: 140px; max-height: 44px; border: 1px solid #ddd; border-radius: 4px; background: #fff; margin-top: 3px; }
tr[data-gesperrt="1"] td { background: #f1f6f1; }
tr[data-gesperrt="1"] .zellen-input { border-color: transparent; background: transparent; }
/* Schläger-Wunschmodell (Sportlerprofil, Reiter Schläger) */
.sw-box { background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 12px 16px; margin: 0 0 14px; }
.sw-zeile { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; padding: 6px 0; }
.sw-zeile + .sw-zeile { border-top: 1px solid #eee; }
.sw-zweck { min-width: 90px; }
.sw-form { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.sw-form input, .sw-form select { padding: 6px 8px; border: 1px solid var(--border); border-radius: 6px; font-size: 13px; }
.sw-form input[name="model"] { width: 160px; } .sw-form .sw-kurz { width: 118px; } .sw-form input[name="notiz"] { width: 150px; }
.sw-status { font-size: 12px; } .sw-ok { color: #1b7f3b; } .sw-offen { color: #b26a00; }
/* Schlägerausgabe (Lager → Schlägerausgabe) */
.sa-kopf { display: flex; flex-wrap: wrap; gap: 14px; align-items: center; background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 10px 16px; margin-bottom: 12px; font-size: 14px; }
.sa-kopf input[type="date"] { padding: 6px 8px; border: 1px solid var(--border); border-radius: 6px; margin-left: 6px; }
.sa-tabelle td, .sa-tabelle th { padding: 7px 8px; font-size: 13px; vertical-align: middle; }
.sa-tabelle select { max-width: 340px; font-size: 13px; padding: 5px 6px; border: 1px solid var(--border); border-radius: 6px; }
.sa-anz { width: 56px; text-align: center; padding: 5px; border: 1px solid var(--border); border-radius: 6px; }
.sa-wunsch { white-space: nowrap; }
.sa-gruen { color: #1b7f3b; font-weight: 600; } .sa-rot { color: #b3261e; font-weight: 600; } .sa-offen { color: #b26a00; }
tr.sa-fehlt td { background: #fff4e5; } tr.sa-leer td { color: #777; }
.sa-bedarf td, .sa-bedarf th { font-size: 13px; }
/* Aktion: Rückgabe ans Hauptlager in eigener Zeile unter Speichern/Löschen – spart gut 130 px Breite */
.lager-tabelle .aktionen-zelle .rg-hauptlager { display: flex; margin-top: 4px; }
.zubuchen { display: flex; gap: 4px; align-items: center; justify-content: center; }
.zubuchen input { width: 64px; padding: 5px 6px; border: 1px solid var(--border); border-radius: 6px; font-size: 13px; }

/* Bestellverwaltung */
.status-tabs { display: flex; flex-wrap: wrap; gap: 6px; margin: 10px 0; }
.status-badge { display: inline-block; padding: 2px 8px; border-radius: 999px; font-size: 12px; font-weight: 600; background: #eef2f6; white-space: nowrap; }
.status-bestellt, .status-offen { background: #fff3cd; color: #7a5b00; }
.status-teilgeliefert { background: #e8f0fe; color: #1a56b8; }
.status-geliefert, .status-erledigt { background: #e6f6ea; color: #217a38; }
.status-storniert, .status-abgelehnt { background: #fdecea; color: #b3261e; }
.r { text-align: right; }
.pos-zeilen { display: flex; flex-direction: column; gap: 4px; margin-top: 12px; }
.pos-zeile { display: grid; grid-template-columns: 110px minmax(150px, 1.4fr) 1fr 1fr 80px 100px 80px 1fr; gap: 6px; align-items: center; }
.pos-zeile.pos-mit-preis { grid-template-columns: 110px minmax(150px, 1.4fr) 1fr 1fr 80px 100px 80px 110px; }
.pos-kopf span { font-size: 12px; font-weight: 600; color: #46586b; }
.pos-zeile input, .pos-zeile select { padding: 6px 7px; border: 1px solid var(--border); border-radius: 6px; font-size: 13px; min-width: 0; }
.pos-aktionen { display: flex; gap: 10px; align-items: center; margin-top: 10px; flex-wrap: wrap; }
.best-form, .best-kopf { background: #fff; border-radius: 10px; padding: 14px; box-shadow: 0 1px 4px rgba(0,0,0,.05); margin-top: 10px; }
.best-kopf { display: grid; }
.bedarf-aktion { display: flex; gap: 12px; align-items: end; flex-wrap: wrap; margin: 8px 0 18px; }
.bedarf-aktion label { display: flex; flex-direction: column; gap: 4px; font-size: 14px; font-weight: 600; }
.bedarf-aktion input, .bedarf-aktion select { padding: 7px 8px; border: 1px solid var(--border); border-radius: 6px; font-size: 14px; }
.hinweis-ok { background: #e6f6ea; border: 1px solid #2e9e4f; border-radius: 10px; padding: 10px 14px; margin: 10px 0; display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.lief-unterschrift { font-size: 13px; white-space: nowrap; }
.lief-unterschrift span { display: block; margin-bottom: 3px; }
/* Lieferschein-Druck + Unterschrift */
.ls-kopf td { padding: 4px 10px 4px 0; }
.ls-pad { display: flex; flex-direction: column; gap: 8px; margin: 10px 0; }
.ls-pad label { font-weight: 600; font-size: 14px; display: flex; flex-direction: column; gap: 4px; max-width: 360px; }
.ls-pad input { padding: 8px 10px; border: 1px solid var(--border); border-radius: 8px; font-size: 15px; }
#us-canvas { width: 100%; max-width: 700px; height: auto; background: #fff; border: 2px dashed #9aa7b8; border-radius: 10px; touch-action: none; cursor: crosshair; }
.ls-pad-knoepfe { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.ls-unterschrift-fertig img { max-width: 420px; width: 100%; border-bottom: 1px solid #333; }
.ls-unterschrift-linie { margin-top: 40px; }
.print-only { display: none; }
@media print { .print-only { display: block; } .no-print { display: none !important; } }
@media (max-width: 900px) { .pos-zeile, .pos-zeile.pos-mit-preis { grid-template-columns: 1fr 1fr; } .pos-kopf { display: none; } }
.fehlt-editor .fehlt-artikel { min-width: 280px; }
.fehlt-editor .fehlt-zeile input[name="fmenge"] { width: 64px; }
/* „Was fehlt" nur bei unvollständigen Lieferungen zeigen (display:flex würde hidden sonst aushebeln) */
.fehlt-editor[hidden] { display: none; }
/* Lieferschein-Tabelle: passt ohne Querscrollen ins Fenster – feste schmale Spalten links,
   Notizen bekommen den Rest, „Bearbeitet von" bricht um */
.lief-tabelle th, .lief-tabelle td { padding: 9px 8px; }
.lief-tabelle input[type="date"].zellen-input { width: 132px; min-width: 0; }
.lief-tabelle td:nth-child(2) .zellen-input { min-width: 110px; }
.lief-tabelle td:nth-child(3) .zellen-input { min-width: 0; width: 96px; }
.lief-tabelle td:nth-child(4) .zellen-input { min-width: 0; width: 84px; }
.lief-tabelle .fehlt-editor .fehlt-artikel { min-width: 170px; }
.lief-tabelle td:nth-child(5):has(.fehlt-editor[hidden]) { min-width: 0; width: 1%; white-space: nowrap; }
.lief-tabelle td:nth-child(6) { min-width: 200px; width: 32%; }
.lief-tabelle td:nth-child(6) textarea.zellen-wachsend { min-width: 180px; }
.lief-bearbeiter { max-width: 150px; }
.lief-bearbeiter span { white-space: normal; }
.lief-tabelle input[type="date"].zellen-input { width: 124px; }
.lief-tabelle td:nth-child(4) .zellen-input { width: 76px; }
/* „Was fehlt": Felder teilen sich die Spaltenbreite statt eine Mindestbreite zu erzwingen */
.lief-tabelle td:nth-child(5):not(:has(.fehlt-editor[hidden])) { width: 20%; min-width: 200px; }
.lief-tabelle .fehlt-editor, .lief-tabelle .fehlt-editor .fehlt-zeile { min-width: 0; width: 100%; }
.lief-tabelle .fehlt-editor .fehlt-artikel { min-width: 0; flex: 1; }
.lief-tabelle .fehlt-editor .fehlt-zeile input[name="fmenge"] { width: 52px; }
/* Speichern/Löschen untereinander, spart Breite */
.lief-tabelle td:last-child { width: 1%; }
.lief-tabelle td:last-child form.inline { display: block; margin-top: 4px; }
/* Mitwachsende Felder nie flacher als eine Zeile (auch wenn beim Laden versteckt) */
textarea.zellen-wachsend { min-height: 30px; }
.team-badge { display: inline-block; padding: 2px 8px; border-radius: 999px; font-size: 12px; font-weight: 600; background: #e8f0fe; color: #1a56b8; white-space: nowrap; vertical-align: middle; }
td .team-badge { margin-top: 3px; }
.schlaeger-zeile input[name="sflex"], .schlaeger-zeile input[name="scurve"] { width: 120px; }
.schlaeger-zeile select[name="sbieg"] { padding: 6px 7px; border: 1px solid var(--border); border-radius: 6px; font-size: 13px; }
.schlaeger-zeile input[name="smenge"] { width: 90px; }
/* Hersteller/Modell/Farbe: Breite folgt dem Inhalt (JS setzt width in ch) */
.lager-tabelle input[name="manufacturer"], .lager-tabelle input[name="model"], .lager-tabelle input[name="color"] { min-width: 0; }
.lager-tabelle input[name="color"] { max-width: none; }
/* Besondere Jahrgänge in der Sportlerübersicht (U15: 2014, U17: 2010) */
tr.jahrgang-rot td, tr.jahrgang-rot td a { color: #c0392b; }

/* Neu-laden-Knopf für den App-Modus (Dock/Homescreen, ohne Browser-Leiste) */
.nav-reload { background: rgba(255, 255, 255, .15); color: #fff; border: none; border-radius: 50%;
  width: 30px; height: 30px; font-size: 17px; line-height: 1; cursor: pointer; flex-shrink: 0; }
.nav-reload:hover { background: rgba(255, 255, 255, .3); }
.nav-reload.dreht { animation: nav-reload-drehung .8s linear infinite; }
@keyframes nav-reload-drehung { to { transform: rotate(360deg); } }

/* Benutzerverwaltung: alle Spalten vollständig lesbar, Team-Spalte darf umbrechen */
/* Benutzerverwaltung: ganze Breite nutzen, alle Spalten ohne seitliches Scrollen */
.haupt-breit { max-width: none; }
.benutzer-scroll { overflow-x: auto; }
.benutzer-tabelle { width: 100%; font-size: 13px; }
.benutzer-tabelle th, .benutzer-tabelle td { padding: 6px 6px; }
.benutzer-tabelle td:nth-child(1) { white-space: nowrap; font-size: 12px; }
.benutzer-tabelle td:nth-child(2) .zellen-input { min-width: 130px; }
.benutzer-tabelle td:nth-child(3) .zellen-input { min-width: 120px; }
.benutzer-tabelle td:nth-child(4) .zellen-input { min-width: 120px; }
.benutzer-tabelle td:nth-child(5) { min-width: 110px; max-width: 170px; }
.benutzer-tabelle td:nth-child(6), .benutzer-tabelle td:nth-child(7), .benutzer-tabelle td:nth-child(8) { white-space: nowrap; }
.benutzer-tabelle .aktionen-zelle { white-space: normal; min-width: 120px; }
.benutzer-tabelle .aktionen-zelle .btn-klein { padding: 3px 6px; margin: 1px; }
.benutzer-tabelle .team-haken summary { white-space: normal; line-height: 1.4; }

/* Umfrage: Auswertung auf einen Blick */
.auswertung-blick { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 12px; margin: 8px 0 20px; }
.auswertung-block { background: #fff; border-radius: 10px; padding: 12px 14px; box-shadow: 0 1px 4px rgba(0,0,0,.05); }
.auswertung-titel { font-weight: 600; margin-bottom: 6px; }
.auswertung-tabelle { margin: 0; box-shadow: none; }
.auswertung-tabelle td { padding: 4px 6px; border-bottom: none; font-size: 14px; }
.auswertung-option { width: 45%; }
.auswertung-balken { width: 40%; }
.auswertung-balken .balken { height: 12px; background: var(--blue); border-radius: 6px; min-width: 2px; }
.auswertung-zahl { white-space: nowrap; }
.auswertung-text { font-size: 14px; padding: 2px 0; }
@media print { .auswertung-blick { display: block; } .auswertung-block { break-inside: avoid; margin-bottom: 10px; } }

/* Umfrage: Teilnehmer-Häkchenliste */
.teilnehmer-knoepfe { display: flex; gap: 6px; margin: 4px 0 8px; }
.teilnehmer-haken { display: flex; flex-wrap: wrap; gap: 4px 14px; align-items: center; }
.teilnehmer-haken label { font-size: 14px; font-weight: 400; white-space: nowrap; }
.teilnehmer-gruppe { flex-basis: 100%; font-weight: 600; font-size: 13px; color: #445; margin-top: 8px; }

/* Trainingskalender (Bereich Trainer) */
.kal-kopf { display: flex; flex-direction: column; gap: 10px; margin: 8px 0 14px; }
.kal-nav { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.kal-titel { margin-left: 6px; }
.kal-filter { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.kal-chip { display: inline-flex; align-items: center; gap: 4px; padding: 3px 10px; border-radius: 999px; font-size: 13px; font-weight: 600; cursor: pointer; border: 2px solid var(--farbe); background: var(--farbe); color: #fff; }
.kal-chip input { accent-color: #fff; margin: 0; }
.kal-chip-aus { background: #fff; color: var(--farbe); }
.kal-woche { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 8px; }
.kal-tag { background: #fff; border: 1px solid var(--border); border-radius: 10px; padding: 8px; min-height: 120px; }
.kal-tag header { display: flex; justify-content: space-between; align-items: center; font-size: 13px; margin-bottom: 6px; padding-bottom: 4px; border-bottom: 1px solid var(--border); }
.kal-tag header a { text-decoration: none; }
.kal-heute { border-color: var(--blue); box-shadow: 0 0 0 2px rgba(26, 86, 184, .15); }
.kal-heute header strong { color: var(--blue); }
.kal-leer { text-align: center; margin: 12px 0; }
.kal-termin { display: block; margin: 0 0 6px; padding: 6px 8px; border-radius: 8px; border-left: 5px solid var(--farbe); background: color-mix(in srgb, var(--farbe) 12%, #fff); color: inherit; text-decoration: none; font-size: 13px; line-height: 1.35; }
.kal-termin:hover { background: color-mix(in srgb, var(--farbe) 22%, #fff); }
.kal-zeit { display: block; font-weight: 700; }
.kal-team { display: inline-block; font-weight: 700; color: var(--farbe); margin-right: 4px; }
.kal-art { display: inline-block; }
.kal-info { display: block; font-size: 12px; color: #556; }
@media (max-width: 1000px) { .kal-woche { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px) { .kal-woche { grid-template-columns: 1fr; } .kal-tag { min-height: 0; } }

/* Benutzerverwaltung: Übersicht + Filter */
.bn-uebersicht { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 10px 0; }
.bn-chip { display: inline-flex; align-items: center; gap: 6px; padding: 5px 11px; border-radius: 999px; border: 1px solid var(--border); background: #fff; font-size: 13px; cursor: pointer; color: inherit; }
.bn-chip b { background: #eef1f6; border-radius: 999px; padding: 0 7px; font-weight: 700; }
.bn-chip:hover { border-color: var(--blue); }
.bn-chip-aktiv { background: var(--blue); color: #fff; border-color: var(--blue); }
.bn-chip-aktiv b { background: rgba(255,255,255,.25); }
.bn-chip-rot:not(.bn-chip-aktiv) { border-color: var(--red); color: var(--red); }
.bn-chip-gelb:not(.bn-chip-aktiv) { border-color: #e0a300; color: #9a6b00; }
.bn-chip-trenner { width: 1px; height: 22px; background: var(--border); margin: 0 4px; }
.bn-filter { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 6px 0 4px; }
.bn-filter input, .bn-filter select { padding: 7px 9px; border: 1px solid var(--border); border-radius: 8px; font-size: 14px; background: #fff; }
.bn-filter input { min-width: 220px; flex: 1 1 220px; max-width: 360px; }
.bn-sort { cursor: pointer; user-select: none; white-space: nowrap; }
.bn-sort:hover { color: var(--blue); }
.bn-pfeil { font-size: 10px; margin-left: 2px; }

/* Lager: Ausgabe an Einzelpersonen */
.personen-ausgabe > summary { font-size: 16px; }
.personen-form { margin-bottom: 12px; }
.personen-form select { display: block; width: 100%; margin-top: 4px; padding: 9px; border: 1px solid var(--border); border-radius: 8px; font-size: 14px; }

/* Dashboard: Trainingszeiten der Mannschaft */
.tz-block { background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 14px 18px; margin: 18px 0; }
.tz-block h2 { margin: 0 0 8px; }
/* Trainingszeiten: Wochenraster (Desktop) bzw. Tagesliste (Handy) */
.tz-woche { margin-bottom: 14px; }
.tz-woche h3 { margin: 4px 0 8px; font-size: 15px; color: #445; }
.tz-summe { font-size: 13px; font-weight: 400; }
.tz-raster { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 6px; }
.tz-tagspalte { background: #fafbfd; border: 1px solid var(--border); border-radius: 8px; padding: 6px; min-width: 0; }
.tz-tagkopf { font-size: 12px; font-weight: 700; color: #334; padding: 0 2px 4px; border-bottom: 1px solid var(--border); margin-bottom: 6px; white-space: nowrap; }
.tz-heute-marke { background: var(--red); color: #fff; font-size: 10px; padding: 1px 6px; border-radius: 999px; margin-left: 4px; vertical-align: middle; }
.tz-tag-heute { border-color: var(--blue); box-shadow: 0 0 0 2px rgba(0, 51, 102, .12); }
.tz-tag-heute .tz-tagkopf { color: var(--blue); }
.tz-tag-vorbei { opacity: .55; }
.tz-leer { color: #aab; text-align: center; padding: 6px 0; font-size: 13px; }
.tz-termin { position: relative; display: block; padding: 6px 7px; border-left: 4px solid var(--blue); background: #eef3fb; border-radius: 6px; margin-bottom: 5px; font-size: 12px; line-height: 1.3; }
.tz-tag { display: none; }
.tz-zeit { display: block; font-weight: 700; color: var(--blue); white-space: nowrap; font-size: 13px; }
.tz-info { display: block; color: #445; overflow-wrap: anywhere; }
.tz-heute { background: #e3ecfb; }
.tz-vorbei { opacity: .6; }
.tz-spiel { border: 2px solid #d4a017; border-left-width: 5px; border-left-color: #d4a017; background: #fff8e1; }
.tz-spiel .tz-zeit { color: #8a6500; }
.tz-sonder { border-left-color: #8e44ad; background: #f7f1fa; }
.tz-sonder .tz-zeit { color: #8e44ad; }
/* Rückmeldung: auf dem Desktop als kleines Fenster über der Karte, auf dem Handy im Fluss */
.tz-rueck { display: block; margin-top: 4px; }
@media (min-width: 801px) {
  .tz-rueck[open] .tz-pop { position: absolute; left: 0; top: 100%; z-index: 30; min-width: 300px; max-width: 420px; background: #fff; border: 1px solid var(--border); border-radius: 10px; box-shadow: 0 8px 24px rgba(0,0,0,.18); padding: 10px 12px; font-size: 13px; }
  .tz-tagspalte:nth-child(n+5) .tz-rueck[open] .tz-pop { left: auto; right: 0; }
}
@media (max-width: 800px) { .tz-raster { grid-template-columns: 1fr; gap: 8px; } .tz-tag-leer { display: none; } .tz-termin { font-size: 14px; } .tz-zeit { font-size: 15px; } }
.tz-athletik { border-left-color: #2e7d32; background: #f1f8f2; }
.tz-athletik .tz-zeit { color: #2e7d32; }
.tz-legende { font-size: 13px; font-weight: 400; margin-left: 8px; }

/* Zimmerbelegung: Vier- und Dreibettzimmer + Verwaltungsraster */
.chip-vierbett { background: #e8f5e9; border-color: #a5d6a7; color: #1b5e20; }
.chip-dreibett { background: #f3e5f5; border-color: #ce93d8; color: #4a148c; }
.zimmer-verwaltung-raster { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 0 20px; align-items: start; }
.zimmer-verwaltung-raster .zimmer-verwaltung-tabelle { max-width: none; }

/* Urlaubsplanung */
.ur-jahr { display: flex; gap: 6px; }
.ur-warn { color: #935f00; font-weight: 600; }
.ur-minus { color: var(--red); }
.ur-entscheiden { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.ur-entscheiden .zellen-input { min-width: 160px; flex: 1 1 160px; }
.ur-konto { display: flex; flex-direction: column; gap: 4px; padding: 6px 0; text-align: left; }
.ur-konto label { font-size: 12px; font-weight: 600; }
.ur-badge-geplant { background: #eef2f6; color: #445; }
.ur-badge-beantragt { background: #fdf3d7; color: #935f00; }
.ur-badge-genehmigt { background: #d9f2e2; color: #1a7f37; }
.ur-badge-abgelehnt { background: #fde8e8; color: #b42318; }
.ur-badge-zurueckgezogen { background: #eee; color: #888; text-decoration: line-through; }
tr.ur-zurueckgezogen td, tr.ur-abgelehnt td { opacity: .6; }

.kal-abschnitt { margin: 18px 0 8px; }
.kal-abschnitt h2 { margin: 0; }

/* Kontenverwaltung je Mannschaft */
.kt-tabelle td { vertical-align: top; }
.kt-konto { display: flex; flex-direction: column; gap: 4px; }
.kt-konto.kt-gesperrt { opacity: .6; }
.kt-neu { display: flex; gap: 6px; align-items: center; }
.kt-neu .zellen-input { min-width: 200px; }

/* Teilnahme-Rückmeldung */
.tz-rueck { position: relative; font-size: 16px; }
.tz-rueck summary { cursor: pointer; list-style: none; padding: 0 4px; }
.tz-rueck summary::-webkit-details-marker { display: none; }
.tz-rueck-form { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-top: 6px; font-size: 13px; }
.tz-rueck-form .zellen-input { min-width: 180px; flex: 1 1 180px; }
.tz-rueck-liste ul { margin: 6px 0 0; padding-left: 18px; font-size: 13px; font-weight: 400; }
.tz-abgesagt { border-left-color: var(--red) !important; background: #fdf0f0 !important; }
.tz-abgesagt .tz-zeit { text-decoration: line-through; color: #b42318; }
.tz-ok { font-size: 16px; }
.kal-absagen { display: inline-block; background: #fde8e8; color: #b42318; border-radius: 999px; padding: 0 6px; font-size: 11px; font-weight: 700; }

.tz-rueck-liste li { margin: 2px 0; } .tz-rueck-liste li form { margin-left: 4px; }

/* Anwesenheitsliste: Zu-/Absagen Training */
.anw-titel2 { margin: 26px 0 6px; }
.anw-training th.anw-athletik { color: #2e7d32; }
.anw-ja { color: #1a7f37; opacity: .55; }
.anw-training .anw-status.anw-k { cursor: help; }
.anw-summenzeile td { border-top: 2px solid var(--border); }

/* Daumen hoch (grün) / runter (rot) als farbige Symbole statt Emoji */
.daumen { display: inline-block; width: 18px; height: 18px; vertical-align: -3px; background-repeat: no-repeat; background-position: center; background-size: contain; }
.daumen-hoch { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='%231a7f37' d='M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-2z'/></svg>"); }
.daumen-runter { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='%23d61126' d='M15 3H6c-.83 0-1.54.5-1.84 1.22l-3.02 7.05c-.09.23-.14.47-.14.73v2c0 1.1.9 2 2 2h6.31l-.95 4.57-.03.32c0 .41.17.79.44 1.06L9.83 23l6.59-6.59c.36-.36.58-.86.58-1.41V5c0-1.1-.9-2-2-2zm4 0v12h4V3h-4z'/></svg>"); }
.tz-rueck summary .daumen { width: 22px; height: 22px; }
.btn .daumen { vertical-align: -4px; }
.anw-ja .daumen { opacity: .45; }
.anw-training .anw-status.anw-k { background: none; border: none; }

.anw-gruende { margin: 8px 0 4px; font-size: 14px; }
.anw-gruende summary { cursor: pointer; font-weight: 600; }
.anw-gruende ul { list-style: none; padding: 0; margin: 6px 0 0; }
.anw-gruende-termin { margin-top: 6px; }
.anw-gruende-eintrag { padding-left: 14px; }

/* Auswertung Zu-/Absagen */
.aw-filter { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px; background: #fff; padding: 12px 16px; border-radius: 12px; margin-bottom: 12px; }
.aw-filter label { font-size: 13px; font-weight: 600; display: flex; flex-direction: column; gap: 3px; }
.aw-filter input, .aw-filter select { padding: 7px 9px; border: 1px solid var(--border); border-radius: 8px; font-size: 14px; }
.aw-stand { color: #556; font-size: 14px; }
.aw-kopf { display: flex; gap: 24px; align-items: center; flex-wrap: wrap; background: #fff; border-radius: 12px; padding: 16px 20px; margin-bottom: 18px; }
.aw-kuchen { width: 150px; flex: 0 0 150px; } .kuchen { width: 100%; height: auto; }
.aw-kennzahlen { display: flex; flex-wrap: wrap; gap: 8px 28px; align-items: flex-end; }
.aw-kz .num { display: block; font-size: 28px; font-weight: 700; color: var(--blue); }
.aw-kz span:last-child { font-size: 13px; color: #556; }
.aw-kennzahlen p { flex-basis: 100%; }
.aw-legende { display: inline-block; width: 12px; height: 12px; border-radius: 3px; vertical-align: -1px; }
.aw-balken { background: #fff; border-radius: 12px; padding: 12px 16px; }
.aw-zeile { display: grid; grid-template-columns: 180px 1fr 50px; gap: 10px; align-items: center; padding: 4px 0; border-bottom: 1px solid #f0f2f5; }
.aw-name { font-size: 14px; text-decoration: none; color: inherit; } .aw-name:hover { color: var(--blue); }
.aw-bar { display: flex; height: 20px; border-radius: 5px; overflow: hidden; background: #eef1f6; font-size: 11px; font-weight: 700; color: #fff; }
.aw-bar-zu { background: #1a7f37; text-align: right; padding-right: 5px; line-height: 20px; }
.aw-bar-ab { background: #d61126; text-align: left; padding-left: 5px; line-height: 20px; }
.aw-quote { text-align: right; font-weight: 700; font-size: 13px; } .aw-warn { color: #d61126; }
.aw-termine { display: flex; flex-wrap: wrap; gap: 6px; }
.aw-termin { font-size: 12px; padding: 3px 8px; border-radius: 999px; border: 1px solid; }
.aw-termin-zu { background: #e6f6ea; color: #1a7f37; border-color: #a5d6a7; }
.aw-termin-ab { background: #fdecea; color: #b42318; border-color: #f2b8b5; }
.aw .druck-fuss { font-size: 11px; color: #778; margin-top: 16px; }
@media (max-width: 700px) { .aw-zeile { grid-template-columns: 110px 1fr 44px; } }
@media print {
  .aw .no-print { display: none !important; }
  .aw-kopf, .aw-balken, .aw-filter { box-shadow: none; border: 1px solid #ddd; }
  .aw-bar-zu, .aw-bar-ab, .aw-termin, .aw-legende { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .aw-zeile { break-inside: avoid; }
}
.kpi .num .daumen { width: 24px; height: 24px; vertical-align: -3px; }

/* Rückmelde-Feld: geöffnet über die volle Breite, Summary bleibt klickbar zum Einklappen */
.tz-rueck[open] > summary { display: inline-block; margin-bottom: 4px; }
.tz-rueck summary:hover { background: rgba(0,0,0,.06); border-radius: 6px; }
.tz-zu { margin-left: auto; }
/* Kein filter beim Hover: der würde einen Stapelkontext erzeugen und das Rückmelde-Fenster hinter die nächste Spalte legen */
.tz-klickbar { cursor: pointer; } .tz-klickbar:hover { box-shadow: inset 0 0 0 100px rgba(0,0,0,.035); }
.tz-termin:has(details[open]) { z-index: 40; }
.tz-rueck[open] { position: relative; z-index: 40; }

.tz-zaehler { white-space: nowrap; font-size: 13px; font-weight: 700; }
.tz-zu-zahl { color: #1a7f37; } .tz-ab-zahl { color: #d61126; }
.tz-zaehler .tz-null { opacity: .35; }

/* Kachel Anwesenheitsliste: Zu-/Absagen je Position */
.tz-kachel { display: block; margin-bottom: 4px; }
/* Kompakt: passt bei bis zu 4 Trainings in die normale Kachelhöhe (drei Positionszeilen à 15px) */
.tz-kachel-zeile { display: grid; grid-template-columns: 62px 26px 26px 26px 26px; align-items: center; font-size: 12px; font-weight: 700; line-height: 1.15; }
.tz-kachel-kopf span { font-size: 9px; font-weight: 600; color: #556; text-align: right; padding-right: 4px; line-height: 1.1; }
.tz-kachel-kopf .daumen { width: 10px; height: 10px; }
.tz-kachel-zeit { font-size: 11px; font-weight: 600; color: #334; white-space: nowrap; }
.tz-kachel-gruppe { font-size: 9px; margin-left: 2px; }
.tz-kachel .tz-zu-zahl, .tz-kachel .tz-ab-zahl { text-align: right; padding-right: 4px; }
.tz-kachel .tz-zu-zahl { color: #1a7f37; }
.tz-kachel .daumen { width: 16px; height: 16px; }

/* Anwesenheitsliste: „Heute"-Spalte – Kopfzelle bleibt dunkel (kein Weiß auf Gelb), nur Zellen hell hinterlegt */
.anw-tabelle th.anw-heute { background: #2a6fd6; color: #fff; box-shadow: inset 0 -4px 0 #ffcc33; }
.anw-tabelle td.anw-heute { background: #f5f9ff; }

/* Freikarten DNL */
.fk-spiele { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0 14px; }
.fk-vorbei { opacity: .55; }
.fk-kopf { background: #fff; border-radius: 12px; padding: 14px 18px; margin-bottom: 14px; display: flex; flex-wrap: wrap; justify-content: space-between; gap: 14px; align-items: center; }
.fk-stats { display: flex; flex-wrap: wrap; gap: 6px 26px; }
.fk-stat .num { display: block; font-size: 26px; font-weight: 700; color: var(--blue); line-height: 1.1; }
.fk-stat span:last-child { font-size: 13px; color: #556; }
.fk-box { background: #fff; border-radius: 12px; padding: 14px 18px; margin-bottom: 14px; }
.fk-box h2 { margin-top: 0; }
.fk-aktionen { display: flex; flex-wrap: wrap; gap: 6px; }
.fk-rot td { color: #8a3b3b; }
.fk-zuteilen { display: inline-flex; gap: 4px; align-items: center; }
.fk-mini { display: flex; flex-direction: column; gap: 4px; padding: 6px 0; min-width: 170px; text-align: left; }
.fk-mini select, .fk-mini input { font-size: 13px; padding: 4px 6px; border: 1px solid var(--border); border-radius: 6px; }
.fk-gaeste .fk-gast { display: block; width: 100%; max-width: 420px; margin-top: 4px; padding: 8px 9px; border: 1px solid var(--border); border-radius: 8px; font-size: 14px; }
.fk-mini .fk-gast { max-width: none; }

/* Freikarten-Tickets mit QR-Code */
.tk-seite { max-width: 560px; margin: 0 auto; }
.tk-karte { background: #fff; border: 2px solid var(--blue); border-radius: 14px; overflow: hidden; break-inside: avoid; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.tk-kopf { display: flex; align-items: center; gap: 12px; background: var(--blue); color: #fff; padding: 10px 14px; border-bottom: 4px solid #d61126; font-size: 13px; }
.tk-kopf strong { font-size: 18px; letter-spacing: 2px; }
.tk-logo { height: 40px; width: auto; background: #fff; border-radius: 8px; padding: 3px; }
.tk-inhalt { display: flex; gap: 12px; padding: 14px; align-items: center; }
.tk-text { flex: 1; min-width: 0; }
.tk-spiel { font-weight: 700; font-size: 16px; color: var(--blue); }
.tk-datum { color: #445; margin-bottom: 10px; }
.tk-gast { font-size: 22px; font-weight: 800; line-height: 1.15; overflow-wrap: anywhere; }
.tk-von { color: #556; font-size: 13px; margin-top: 2px; }
.tk-eingeloest { margin-top: 8px; color: #1a7f37; font-weight: 700; }
.tk-qr { width: 150px; flex-shrink: 0; }
.tk-qr svg { display: block; width: 100%; height: auto; }
.tk-fuss { border-top: 1px dashed var(--border); padding: 8px 14px; font-size: 12px; color: #445; }
.tk-aktionen { display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; margin: 10px 0; }
.tk-raster { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 16px; }
.tk-meldung { background: #fff; border-radius: 14px; padding: 24px; text-align: center; border-top: 6px solid var(--red); }
@media (max-width: 420px) { .tk-qr { width: 120px; } .tk-gast { font-size: 19px; } }
@media print { .tk-raster { grid-template-columns: 1fr 1fr; gap: 10mm 6mm; } .tk-seite { max-width: 120mm; } }

/* Einlass-Kontrolle */
.kasse-erg { border-radius: 16px; padding: 28px 20px 22px; text-align: center; color: #fff; max-width: 640px; margin: 0 auto; }
.kasse-erg h1 { font-size: 34px; margin: 4px 0 10px; letter-spacing: 1px; color: #fff; }
.kasse-gruen { background: #1a7f37; } .kasse-rot { background: #b3131f; } .kasse-gelb { background: #a86400; }
.kasse-zeichen { font-size: 72px; line-height: 1; font-weight: 800; }
.kasse-gast { font-size: 28px; font-weight: 800; margin: 6px 0; overflow-wrap: anywhere; }
.kasse-auftrag { font-size: 20px; font-weight: 700; margin-top: 14px; }
.kasse-knoepfe { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; margin-top: 18px; }
.kasse-knoepfe .btn { background: #fff; color: #1a1a2e; }
.kasse-drin td { background: #eaf6ec; }
.kasse-tabelle td { padding-top: 10px; padding-bottom: 10px; }

/* Ticket im Hochformat: Einzelansicht für den Gast immer, in Übersichten auf schmalen Bildschirmen */
.tk-seite { max-width: 400px; }
.tk-seite .tk-inhalt { flex-direction: column; text-align: center; gap: 16px; padding: 18px 16px; }
.tk-seite .tk-qr { width: min(270px, 72vw); }
.tk-seite .tk-gast { font-size: 26px; }
.tk-seite .tk-spiel { font-size: 18px; }
.tk-seite .tk-fuss { text-align: center; }
@media (max-width: 600px) {
  .tk-raster { grid-template-columns: 1fr; }
  .tk-raster .tk-inhalt { flex-direction: column; text-align: center; gap: 14px; }
  .tk-raster .tk-qr { width: min(250px, 70vw); }
  .tk-raster .tk-fuss { text-align: center; }
}
@media print { .tk-seite { max-width: 95mm; } }

/* Freikarten: Zeile antippen → Bearbeitung direkt darunter (bleibt auch am Handy sichtbar) */
tr.fk-zeile { cursor: pointer; }
tr.fk-zeile:hover td, tr.fk-zeile.fk-offen td { background: #eef3fa; }
tr.fk-edit > td { background: #f6f9fd; border-left: 4px solid var(--blue); padding: 12px; }
.fk-edit-form { position: sticky; left: 12px; display: flex; flex-direction: column; gap: 8px; width: min(520px, calc(100vw - 72px)); text-align: left; }
.fk-edit-wahl { display: flex; flex-wrap: wrap; gap: 8px 16px; }
.fk-edit-wahl label { display: flex; flex-direction: column; font-size: 13px; font-weight: 600; gap: 3px; }
.fk-edit-wahl select { font-size: 15px; padding: 7px 8px; border: 1px solid var(--border); border-radius: 8px; background: #fff; }
.fk-edit-form .fk-gast { max-width: none; margin-top: 0; font-size: 15px; }
.fk-edit-knoepfe { display: flex; gap: 6px; }
.fk-gast[hidden] { display: none !important; }

/* Einlass: Scanner in der Seite (Vollbild) */
.kasse-scan-knopf { font-size: 18px; padding: 14px 22px; width: 100%; max-width: 420px; }
#scan-ebene { position: fixed; inset: 0; z-index: 2000; background: #000; }
#scan-ebene[hidden] { display: none; }
#scan-video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
#scan-rahmen { position: absolute; left: 50%; top: 45%; width: min(70vw, 320px); aspect-ratio: 1; transform: translate(-50%, -50%); border: 4px solid rgba(255,255,255,.9); border-radius: 22px; box-shadow: 0 0 0 100vmax rgba(0,0,0,.35); }
#scan-hinweis { position: absolute; left: 0; right: 0; top: calc(45% + min(35vw, 160px) + 18px); text-align: center; color: #fff; font-size: 16px; margin: 0; text-shadow: 0 1px 4px #000; }
#scan-leiste { position: absolute; left: 0; right: 0; bottom: 0; display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 14px 16px calc(14px + env(safe-area-inset-bottom)); background: rgba(0,0,0,.55); color: #fff; font-size: 16px; font-weight: 700; }
#scan-leiste .btn { background: #fff; color: #1a1a2e; }
#scan-ergebnis { position: absolute; inset: 0; z-index: 2; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; color: #fff; padding: 24px; }
#scan-ergebnis[hidden] { display: none; }
#scan-ergebnis h1 { color: #fff; font-size: 34px; margin: 4px 0 10px; }

/* Personalplanung */
.pp-punkt { display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-right: 6px; vertical-align: baseline; }
.pp-rot { background: #c8102e; } .pp-gelb { background: #e0a100; } .pp-gruen { background: #1a7f37; }
tr.pp-offen td { color: #8a3b3b; background: #fdf3f3; }
tr.pp-abgesagt td { color: #889; text-decoration: line-through; }
tr.pp-abgesagt td:last-child, tr.pp-abgesagt td:nth-last-child(2) { text-decoration: none; }
.pp-kasse input.zellen-input { width: 96px; text-align: right; font-size: 16px; padding: 8px; }
.pp-kasse td { padding-top: 8px; padding-bottom: 8px; }
.fk-edit-wahl input { font-size: 15px; padding: 7px 8px; border: 1px solid var(--border); border-radius: 8px; }

/* Trainingskalender: abgesagte und freigegebene Zeiten */
.kal-marke { display: block; font-size: 11px; font-weight: 800; letter-spacing: .4px; margin-bottom: 2px; }
.kal-marke-frei { color: #1a7f37; } .kal-marke-aus { color: var(--red); } .kal-marke-neu { color: #1a7f37; font-weight: 700; letter-spacing: 0; }
.kal-termin.kal-frei { border: 2px dashed #1a7f37; border-left-width: 5px; background: #eaf6ec; }
.kal-termin.kal-abgesagt { background: #f1f2f4; border-left-color: #9aa3ad; color: #889; }
.kal-termin.kal-abgesagt .kal-zeit, .kal-termin.kal-abgesagt .kal-team, .kal-termin.kal-abgesagt .kal-art { text-decoration: line-through; color: #889; }
.kal-status { border-left: 6px solid var(--blue); }
.kal-status-freigegeben { border-left-color: #1a7f37; background: #f3faf4; }
.kal-status-abgesagt { border-left-color: var(--red); background: #fdf5f5; }
.tz-termin.tz-faellt-aus .tz-zeit, .tz-termin.tz-faellt-aus .tz-info { text-decoration: line-through; color: #889; }
.tz-ausfall { color: var(--red); font-weight: 700; font-size: 13px; }
.tz-sonder { border-left-color: #8e44ad; background: #f7f1fa; }
.tz-sonder .tz-zeit { color: #8e44ad; }

/* Anträge Trainingsstätten / Räume */
.ra-status { display: inline-block; padding: 2px 10px; border-radius: 999px; font-size: 12px; font-weight: 700; color: #fff; background: var(--f, #667); white-space: nowrap; }
.ra-stand { border-left: 6px solid var(--blue); }
.ra-doppel, .ra-vier { display: flex; gap: 6px; align-items: center; }
.ra-doppel input { width: 110px; } .ra-vier input { width: 70px; }
.ra-haken { display: flex; align-items: center; gap: 8px; font-weight: 600; }
.ra-haken input { width: auto; }
#ra-zeiten { display: flex; flex-direction: column; gap: 6px; }
.ra-zeile { display: grid; grid-template-columns: 1.3fr 1fr 150px 90px 90px 40px; gap: 6px; align-items: center; }
.ra-zeile input { padding: 7px 8px; border: 1px solid var(--border); border-radius: 8px; font-size: 14px; min-width: 0; }
.ra-kopf span { font-size: 12px; font-weight: 700; color: #556; }
#ra-form textarea { width: 100%; padding: 8px 10px; border: 1px solid var(--border); border-radius: 8px; font: inherit; }
@media (max-width: 700px) { .ra-zeile { grid-template-columns: 1fr 1fr; } .ra-kopf { display: none; } .ra-zeile input[type=date] { grid-column: 1 / -1; } }

/* Trainingsgruppen */
.kal-gruppe { color: #8e44ad; font-weight: 600; }
.tz-gruppe { color: #8e44ad; font-weight: 600; }
.tg-tabelle td { padding-top: 6px; padding-bottom: 6px; }
.kal-gruppen-box { background: #f7f1fa; border-radius: 8px; padding: 10px 12px; }
#kal-zusatz, #kal-ausgeschlossen { width: 100%; font-size: 14px; }
.tz-notiz { color: #1a2233; font-weight: 700; }
.kal-notiz { color: #1a2233; font-weight: 600; }

/* Schlüsselverwaltung: Bestandstabelle – Bereich breit, Bestand schmal, Notizen wachsen nach unten */
.sk-bestand td:nth-child(1) .zellen-input { min-width: 230px; }
.sk-bestand td:nth-child(3) .zellen-input { min-width: 150px; }
.sk-bestand td:nth-child(4) .zellen-input { min-width: 0; width: 52px; max-width: 52px; text-align: center; }
.sk-bestand td:nth-child(4), .sk-bestand td:nth-child(5), .sk-bestand td:nth-child(6) { white-space: nowrap; }
.sk-bestand td:nth-child(8) { min-width: 220px; }
.sk-bestand textarea.zellen-wachsend { min-width: 200px; }
/* Schlüsselverwaltung: Ausgaben – Inhaber und Notizen brauchen Platz, Anzahl schmal */
.sk-ausgaben td:nth-child(1) { min-width: 170px; }
.sk-ausgaben td:nth-child(2) .zellen-input { min-width: 170px; }
.sk-ausgaben td:nth-child(3) .zellen-input { min-width: 110px; }
.sk-ausgaben td:nth-child(4) .zellen-input { min-width: 130px; }
.sk-ausgaben td:nth-child(5) .zellen-input { min-width: 0; width: 52px; max-width: 52px; text-align: center; }
.sk-ausgaben td:nth-child(8) { min-width: 140px; }
.sk-ausgaben td:nth-child(9) { min-width: 220px; }
.sk-ausgaben textarea.zellen-wachsend { min-width: 200px; }
.sk-ausgaben td:nth-child(10) { white-space: nowrap; }
/* Wohnungsseite: Schlüsselbestand aus der Schlüsselverwaltung */
.sk-wohnung td:nth-child(3), .sk-wohnung td:nth-child(4), .sk-wohnung td:nth-child(5) { white-space: nowrap; }
.sk-wohnung td:nth-child(6) { min-width: 180px; }
.sk-wohnung td:nth-child(7) { min-width: 180px; font-size: 12px; }

/* Unterlagen-Checkliste (Sportlerprofil) und Seite Mannschaftsleiter / Turniere */
.ul-box { background: #fff; border: 1px solid var(--border); border-radius: 10px; padding: 14px 16px; margin-bottom: 18px; }
.ul-tabelle td { vertical-align: middle; }
.ul-tabelle td:first-child { width: 36px; }
.ul-tabelle input[type="checkbox"] { width: 18px; height: 18px; }
.ul-tabelle td:nth-child(3) { width: 170px; }
.ul-fehlt td:nth-child(2) strong { color: var(--red); }
.ul-ok td:nth-child(2) strong { color: #1e7e34; }
.ul-warnung { color: var(--red); font-weight: 700; }
.ul-turnier { margin: 3px 0; }
.ul-turnier-form { margin-top: 10px; }
.ul-punkt { color: var(--red); font-weight: 700; white-space: nowrap; }
.ml-tabelle td { vertical-align: top; }
.ml-datum { white-space: nowrap; }
.ml-team { display: inline-block; padding: 2px 10px; border-radius: 999px; color: #fff; font-weight: 700; font-size: 13px; background: var(--farbe, #1a56b8); }
.ml-ok { color: #1e7e34; font-weight: 600; }
.ml-warnung { color: var(--red); font-weight: 700; cursor: pointer; }
.ml-fehlt td { background: #fff6f6; }
.ml-details summary { list-style: none; }
.ml-details summary::-webkit-details-marker { display: none; }
.ml-namen { margin: 6px 0 0; padding-left: 18px; }
.ml-namen li { margin: 2px 0; }
.ml-monat { margin: 18px 0 6px; color: var(--blue); }
.listen-hinweis.ml-warn { border-left-color: var(--red); color: var(--red); }
.kal-vollmacht { color: var(--red); font-weight: 700; }

/* Zuzahlungskonten */
.zz-nav { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin: 4px 0 16px; }
.zz-nav a { padding: 7px 12px; border-radius: 999px; background: #fff; border: 1px solid var(--border); color: inherit; font-weight: 600; font-size: 14px; }
.zz-nav a:hover { text-decoration: none; border-color: var(--blue); }
.zz-nav a.zz-an { background: var(--blue); border-color: var(--blue); color: #fff; }
.zz-nur-lesen { margin-left: auto; font-size: 13px; }
.zz-scroll { overflow-x: auto; }
.zz-tabelle td, .zz-tabelle th, .zz-matrix td, .zz-matrix th { white-space: nowrap; }
td.r, th.r { text-align: right; }
.zz-offen { color: var(--red); } .zz-guthaben { color: #1e7e34; } .zz-null { color: #667; font-weight: 400; }
.zz-tabelle tfoot th, .zz-blatt-tabelle tfoot th { border-top: 2px solid var(--border); background: #f4f6fa; color: inherit; }
.zz-kennzahlen { margin-bottom: 6px; }
.zz-monate .zellen-input { min-width: 260px; }
.zz-push { font-size: 13px; margin-right: 4px; white-space: nowrap; }
.zz-monatswahl { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin: 8px 0 14px; }
.zz-monat { padding: 4px 10px; border-radius: 8px; border: 1px solid var(--border); background: #fff; color: inherit; font-size: 13px; font-weight: 600; }
.zz-monat.zz-leer { color: #99a; font-weight: 400; }
.zz-monat.zz-an { background: var(--blue); border-color: var(--blue); color: #fff; }
.zz-posten td:nth-child(1) .zellen-input { min-width: 220px; }
.zz-posten td:nth-child(2) .zellen-input { min-width: 170px; }
.zz-betrag { min-width: 0 !important; width: 96px; text-align: right; }
.zz-matrix-kopf { vertical-align: bottom; min-width: 92px; }
.zz-matrix-titel { display: block; font-weight: 700; white-space: normal; max-width: 130px; margin: 0 auto; }
.zz-matrix-kopf .muted { display: block; color: #cfd8ea; font-weight: 400; }
.zz-matrix-knoepfe { display: block; margin-top: 4px; }
.zz-matrix-knoepfe .btn { padding: 2px 6px; font-size: 11px; }
.zz-matrix td { padding-top: 4px; padding-bottom: 4px; }
.zz-name { position: sticky; left: 0; background: #fff; z-index: 1; font-weight: 600; }
.zz-zelle { width: 66px; padding: 5px 4px; text-align: center; border: 1px solid var(--border); border-radius: 6px; font-size: 13px; }
.zz-zelle.zz-x { background: #eaf6ec; border-color: #9bd3a5; font-weight: 700; }
.zz-zelle.zz-ind { background: #fff6dd; border-color: #e6c25a; font-weight: 700; }
.zz-zahlungen td:nth-child(2) .zellen-input { min-width: 180px; }
.zz-zahlungen td:nth-child(4) .zellen-input { min-width: 150px; }
.zz-zahlungen td:nth-child(5) .zellen-input { min-width: 200px; }
/* Abrechnungsblatt */
.zz-blatt { background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 22px 24px; margin: 0 auto 22px; max-width: 760px; }
.zz-blatt-kopf { display: flex; gap: 16px; align-items: center; border-bottom: 3px solid var(--blue); padding-bottom: 12px; margin-bottom: 8px; }
.zz-blatt-kopf h2 { margin: 0 0 4px; } .zz-blatt-kopf p { margin: 0; font-size: 16px; }
.zz-logo { width: 62px; height: auto; }
.zz-blatt h3 { margin: 18px 0 6px; color: var(--blue); font-size: 15px; }
.zz-blatt-tabelle { width: 100%; box-shadow: none; }
.zz-blatt-tabelle th, .zz-blatt-tabelle td { padding: 6px 10px; }
.zz-saldo { margin-top: 18px; }
.zz-ergebnis td { font-size: 18px; padding: 12px 10px; }
.zz-ergebnis-offen td { background: #fdeceb; color: var(--red); }
.zz-ergebnis-ok td { background: #eaf6ec; color: #1e7e34; }
.zz-eingaenge { margin-top: 12px; font-size: 14px; } .zz-eingaenge summary { cursor: pointer; font-weight: 600; }
.zz-blatt-fuss { margin-top: 16px; border-top: 1px solid var(--border); padding-top: 10px; font-size: 14px; }
.zz-blatt-fuss p { margin: 2px 0; } .zz-frist { font-weight: 700; color: var(--red); margin-bottom: 6px !important; }
@media print {
  .keindruck, .zz-nav, .zz-monatswahl { display: none !important; }
  .zz-blatt { border: none; border-radius: 0; padding: 0; margin: 0; max-width: none; page-break-after: always; break-after: page; }
  .zz-blatt:last-of-type { page-break-after: auto; break-after: auto; }
  .zz-eingaenge { display: none; }
  .zz-ergebnis-offen td, .zz-ergebnis-ok td { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}
/* Zuzahlung: Filterzeile der Zahlungseingänge */
.zz-filter { display: flex; flex-wrap: wrap; gap: 10px 12px; align-items: flex-end; background: #fff; border: 1px solid var(--border); border-radius: 10px; padding: 12px 14px; margin: 8px 0 12px; }
.zz-filter label { display: flex; flex-direction: column; gap: 3px; font-size: 12px; font-weight: 600; color: #445; }
.zz-filter select, .zz-filter input { padding: 7px 8px; border: 1px solid var(--border); border-radius: 8px; font-size: 14px; min-width: 150px; background: #fff; }
.zz-filter input[type="search"] { min-width: 210px; }
.zz-filter-knoepfe { display: flex; gap: 6px; }
@media (max-width: 700px) { .zz-filter label, .zz-filter select, .zz-filter input { width: 100%; min-width: 0; } .zz-filter label { flex: 1 1 100%; } }
@media print { .zz-filter { display: none !important; } }
/* Änderungsanträge / Datenprüfung */
.ae-bestaetigen { display: flex; gap: 14px; align-items: center; justify-content: space-between; flex-wrap: wrap; }
.ae-form .ae-zeile { grid-auto-flow: row; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); }
.ae-untertitel { margin: 6px 0 4px; font-weight: 600; color: #445; font-size: 13px; }
.ae-tabelle td, .ae-liste td { vertical-align: top; }
.ae-tabelle td:nth-child(4), .ae-tabelle td:nth-child(5) { min-width: 140px; word-break: break-word; }
.ae-markiert td { background: #fff6dd; }
/* Nutzungsregeln (Kenntnisnahme beim ersten Anmelden) */
.regeln-seite { max-width: 760px; }
.regeln-liste li { margin: 0 0 10px; line-height: 1.5; }
.regeln-form { background: #fff; border: 1px solid var(--border); border-radius: 10px; padding: 16px 18px; margin-top: 18px; }
.regeln-haken { display: flex; gap: 12px; align-items: flex-start; font-size: 15px; cursor: pointer; }
.regeln-haken input { width: 20px; height: 20px; margin-top: 2px; flex: 0 0 auto; }
/* Turnierportal (tp-*) */
.tp-kopf { display: flex; align-items: center; gap: 18px; margin: 6px 0 10px; }
.tp-logo { width: 96px; height: 96px; object-fit: contain; }
.tp-titel { margin: 0 0 4px; font-size: 26px; }
.tp-zeitraum { color: #556; font-size: 15px; }
.tp-nav .tp-nav-leitung { border-style: dashed; }
.tp-nav .tp-nav-zurueck { margin-left: auto; border: none; background: none; font-weight: 400; }
.tp-info { display: grid; grid-template-columns: minmax(0, 2fr) minmax(260px, 1fr); gap: 18px; margin-top: 12px; }
@media (max-width: 800px) { .tp-info { grid-template-columns: 1fr; } }
.tp-info-text { background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 18px 22px; line-height: 1.55; }
.tp-info-text p { margin: 0 0 12px; }
/* Öffentlicher Besucherbereich /t/<slug> (02.11.2026) */
.tpo-leiste { display: flex; align-items: center; gap: 10px; background: var(--blue); color: #fff; border-radius: 10px; padding: 8px 14px; margin: 0 0 12px; font-weight: 700; }
.tpo-leiste img { height: 28px; }
.tpo-leiste span { font-weight: 400; opacity: .85; font-size: 13px; }
.tpo-fuss { text-align: center; color: #667; font-size: 13px; padding: 24px 16px 32px; }
.tpo-fuss img { height: 22px; vertical-align: middle; margin-right: 6px; }
.tpo-fuss a { color: inherit; text-decoration: underline; }
.tp-anfahrt { margin-top: 18px; border-top: 1px solid var(--border); padding-top: 12px; }
.tp-anfahrt h2 { margin: 0 0 8px; font-size: 20px; }
.tp-anfahrt-text { white-space: pre-line; }
.tp-anfahrt img { max-width: 100%; border: 1px solid var(--border); border-radius: 10px; margin-top: 12px; display: block; }
.tp-oeff-box { display: flex; flex-wrap: wrap; gap: 18px; align-items: flex-start; background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 14px 16px; margin-bottom: 14px; }
.tp-oeff-qr { width: 180px; height: 180px; border: 1px solid var(--border); border-radius: 10px; background: #fff; }
.tp-oeff-url { font-family: ui-monospace, Menlo, Consolas, monospace; font-size: 15px; background: #eef2fa; padding: 6px 10px; border-radius: 8px; display: inline-block; word-break: break-all; }
.tp-box { background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 14px 16px; margin-bottom: 14px; }
.tp-box-titel { font-size: 12px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: #667; margin-bottom: 8px; }
.tp-anhang { display: inline-block; background: var(--blue); color: #fff; border-radius: 999px; padding: 4px 12px; font-size: 13px; margin: 0 6px 6px 0; }
.tp-anhang:hover { background: var(--blue-light); text-decoration: none; }
.tp-teamliste a { display: flex; align-items: center; gap: 8px; padding: 4px 0; color: inherit; }
.tp-team-logo { width: 28px; height: 28px; object-fit: contain; vertical-align: middle; flex: 0 0 auto; }
.tp-logo-leer { display: inline-flex; align-items: center; justify-content: center; font-size: 16px; opacity: .5; }
.tp-galerie { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 12px; margin-top: 16px; }
.tp-galerie-bild { display: block; text-align: center; font-size: 12px; color: #445; }
.tp-galerie-bild img { width: 100%; border-radius: 8px; border: 1px solid var(--border); display: block; margin-bottom: 4px; }
.tp-sponsoren { background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 14px 18px; margin-top: 18px; }
.tp-sponsoren-reihe { display: flex; flex-wrap: wrap; gap: 18px; align-items: center; }
.tp-sponsoren-reihe img { height: 56px; max-width: 160px; object-fit: contain; }
.tp-suche { display: flex; gap: 8px; margin: 4px 0 12px; }
.tp-suche input { flex: 1 1 200px; max-width: 360px; padding: 8px 10px; border: 1px solid var(--border); border-radius: 8px; font-size: 14px; }
.tp-tag { background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 10px 14px; margin-bottom: 12px; }
.tp-tag > summary { font-weight: 700; font-size: 16px; cursor: pointer; }
.tp-tag-titel { margin: 18px 0 8px; font-size: 16px; }
.tp-raster { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 10px; margin-top: 10px; }
.tp-karte { background: #fafbfd; border: 1px solid var(--border); border-radius: 10px; padding: 8px 10px; font-size: 14px; }
.tp-karte.tp-beendet { background: #f1f4f9; }
.tp-karte-kopf { display: flex; justify-content: space-between; gap: 8px; font-size: 11px; color: #667; margin-bottom: 4px; }
.tp-karte-mitte { display: flex; align-items: center; gap: 8px; }
.tp-teams { flex: 1 1 auto; min-width: 0; }
.tp-team { display: flex; align-items: center; gap: 6px; padding: 2px 0; }
.tp-team span:last-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tp-zeit { font-weight: 700; font-size: 16px; color: var(--blue); white-space: nowrap; }
.tp-ergebnis { display: flex; flex-direction: column; align-items: flex-end; font-weight: 800; font-size: 17px; color: var(--blue); line-height: 1.6; }
.tp-karte-fuss { font-size: 11px; color: #667; margin-top: 4px; }
.tp-sonder { background: #fff7e6; border-color: #f1dcb0; }
.tp-sonder-text { flex: 1 1 auto; display: flex; align-items: center; gap: 6px; font-weight: 600; color: #7a5a1a; }
.tp-tabelle-block { margin-bottom: 24px; }
.tp-tabelle-scroll { overflow-x: auto; }
.tp-tabelle td, .tp-tabelle th { padding: 7px 10px; white-space: nowrap; }
.tp-tabelle .tp-pkt { background: #eef2fa; }
.tp-tabelle th.tp-pkt { background: var(--blue-light); }
.tp-team-zelle { display: flex; align-items: center; gap: 8px; white-space: nowrap; }
.tp-runde-spiele { margin-top: 6px; }
.tp-runde-spiele > summary { cursor: pointer; color: var(--blue); font-weight: 600; }
.tp-teamwahl { display: flex; flex-wrap: wrap; gap: 8px; margin: 4px 0 14px; }
.tp-teamchip { display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; border-radius: 999px; background: #fff; border: 1px solid var(--border); color: inherit; font-size: 14px; }
.tp-teamchip:hover { border-color: var(--blue); text-decoration: none; }
.tp-teamchip-an { background: var(--blue); border-color: var(--blue); color: #fff; }
.tp-eingabe td, .tp-eingabe th { padding: 6px 8px; }
.tp-tore { width: 60px; padding: 6px; font-size: 16px; text-align: center; border: 1px solid var(--border); border-radius: 6px; }
.tp-zeile-beendet { background: #f3f6fb; }
.tp-verwaltung td, .tp-verwaltung th { padding: 6px 8px; vertical-align: middle; }
.tp-neu-zeile { background: #f6f8fc; }
.tp-datei-klein { font-size: 11px; max-width: 160px; }
.tp-vorschau { height: 44px; max-width: 90px; object-fit: contain; }
.tp-zeile-form { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; background: #fff; border: 1px solid var(--border); border-radius: 10px; padding: 10px 14px; margin: 10px 0; }
.tp-los-leiste { font-size: 13px; justify-content: space-between; }
.tp-zeile-form input, .tp-zeile-form select { padding: 6px 8px; border: 1px solid var(--border); border-radius: 6px; font-size: 13px; }
.tp-form textarea { display: block; width: 100%; margin-top: 4px; padding: 9px; border: 1px solid var(--border); border-radius: 8px; font-size: 14px; font-family: inherit; }
.tp-form .zelle-breit { grid-column: 1 / -1; }
.tp-form .tp-haken { display: flex; align-items: center; gap: 8px; align-self: end; }
.tp-form .tp-haken input { width: auto; display: inline; margin: 0; }
.tp-spielform { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px; background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 14px 16px; }
.tp-spielform label { font-size: 12px; font-weight: 600; color: #445; display: block; }
.tp-spielform input, .tp-spielform select { display: block; margin-top: 3px; padding: 7px 8px; border: 1px solid var(--border); border-radius: 6px; font-size: 14px; min-width: 120px; }
.tp-spielform .tp-nur-spiel, .tp-spielform .tp-nur-sonder { display: contents; }
.tp-spielform[data-art="sonder"] .tp-nur-spiel, .tp-spielform:not([data-art="sonder"]) .tp-nur-sonder { display: none; }
.tp-sonder-zeile { background: #fff9ee; }
.tp-kachel .num { line-height: 1; }
.tp-kachel-logo { height: 40px; width: 40px; object-fit: contain; vertical-align: middle; }
@media (max-width: 600px) { .tp-eingabe td:nth-child(3), .tp-eingabe th:nth-child(3), .tp-eingabe td:nth-child(2), .tp-eingabe th:nth-child(2) { display: none; } .tp-kopf { align-items: flex-start; } .tp-logo { width: 64px; height: 64px; } .tp-titel { font-size: 20px; } }

/* Jahrgänge Mannschaften (jg-*) */
.jg-kopf { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; }
.jg-kopf h1 { margin: 0; }
.jg-kopf-rechts { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.jg-kopf-rechts select { padding: 6px 8px; border: 1px solid var(--border); border-radius: 6px; font-size: 14px; }
.jg-scroll { overflow-x: auto; }
.jg-tabelle { font-size: 11px; table-layout: fixed; width: 100%; min-width: 900px; }
.jg-tabelle th, .jg-tabelle td { padding: 2px 3px; vertical-align: top; border-right: 1px solid #e3e6ec; overflow-wrap: anywhere; }
.jg-tabelle th { font-size: 12px; }
.jg-tabelle th:first-child { width: 92px; position: sticky; left: 0; z-index: 1; }
.jg-tabelle td.jg-label { font-weight: 600; background: #f3f5f9; position: sticky; left: 0; z-index: 1; }
.jg-tabelle th:last-child { width: 56px; }
.jg-tabelle td.jg-summe { font-weight: 700; background: #eef2fa; }
.jg-tabelle input, .jg-tabelle textarea { width: 100%; box-sizing: border-box; border: 1px solid transparent; border-radius: 4px; padding: 2px 3px; font: inherit; font-size: 11px; background: transparent; }
.jg-tabelle input:hover, .jg-tabelle textarea:hover { border-color: var(--border); background: #fff; }
.jg-tabelle input:focus, .jg-tabelle textarea:focus { border-color: var(--blue); background: #fff; outline: none; }
.jg-tabelle input[readonly], .jg-tabelle textarea[readonly] { pointer-events: none; }
.jg-zahl { text-align: center; max-width: 64px; }
.jg-kurz { text-align: center; }
.jg-text { resize: none; overflow: hidden; line-height: 1.35; min-height: 22px; }
.jg-text-mitte { text-align: center; }
.jg-fett td, .jg-fett-input { font-weight: 700; }
.jg-fett td { background: #fafbfd; }
.jg-mannschaft td { background: #e8eef9; font-size: 14px; }
.jg-block td { background: #f6f8fc; }
.jg-blockname { margin-top: 2px; }
.jg-bereich { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 3px; margin-top: 4px; font-size: 10px; }
.jg-bereich .jg-zahl { width: 46px; max-width: 46px; padding: 1px 2px; font-size: 10px; border-color: var(--border); background: #fff; }
.jg-bereich .btn-klein { padding: 1px 5px; font-size: 10px; }
.jg-db td { font-style: italic; }
.jg-db td.jg-abw { color: #b58300; font-weight: 700; }
.jg-fuss { display: flex; flex-wrap: wrap; align-items: center; gap: 14px; margin: 12px 0; }
.jg-neu > summary { cursor: pointer; color: var(--blue); font-weight: 600; }
.jg-neu-zeilen { margin-top: 6px; }
@media print {
  @page { size: A4 landscape; margin: 6mm; }
  .jg-scroll { overflow: visible; }
  .jg-tabelle { min-width: 0; width: 100%; font-size: 6.5px; }
  .jg-tabelle th { font-size: 7px; }
  .jg-tabelle th, .jg-tabelle td { padding: 1px 2px; border: 1px solid #ccc; }
  .jg-tabelle th:first-child, .jg-tabelle td.jg-label { position: static; width: 60px; }
  .jg-tabelle th:last-child, .jg-tabelle td.jg-summe { width: 30px; }
  .jg-tabelle input, .jg-tabelle textarea { font-size: 6.5px; border: none; padding: 0 1px; height: auto !important; line-height: 1.25; }
  .jg-mannschaft td { font-size: 8px; }
  .jg-bereich, .jg-fuss, .jg-kopf-rechts { display: none !important; }
  main { padding: 0; }
}

/* Sportlerübersicht: Schulspalte */
.schule-zelle { font-size: 13px; max-width: 260px; }
.schule-kontakt { font-size: 11.5px; line-height: 1.35; margin-top: 2px; }
/* Datenaufnahme (Neuer Sportler / Bearbeiten): nummerierte Abschnitte */
.form-abschnitte { background: transparent; padding: 0; }
.form-abschnitt { background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 16px 20px 6px; margin-bottom: 14px; }
.form-abschnitte h3 { margin: 0 0 14px; font-size: 16px; display: flex; align-items: center; gap: 10px; }
.abschnitt-nr { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; border-radius: 50%; background: var(--blue); color: #fff; font-size: 13px; font-weight: 700; flex: 0 0 auto; }
.form-untertitel { font-size: 13px; font-weight: 700; color: #556; margin: 4px 0 8px; }
.form-zeile-halb { grid-template-columns: 1fr 1fr; grid-auto-flow: row; max-width: 60%; }
.form-zeile-foto { grid-template-columns: 1fr auto; grid-auto-flow: row; align-items: end; }
.form-abschnitte .form-actions { background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 14px 20px; margin-top: 0; }
.eltern-spalten { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-bottom: 10px; }
.eltern-karte { background: #f7f9fc; border: 1px solid var(--border); border-radius: 10px; padding: 12px 14px 0; }
.eltern-karte .form-zeile { margin-bottom: 12px; }
@media (max-width: 700px) { .form-zeile-halb { max-width: none; grid-template-columns: 1fr; } .eltern-spalten { grid-template-columns: 1fr; } .form-zeile-foto { grid-template-columns: 1fr; } }
/* Profil Stammdaten: nummerierte Abschnitte wie in der Datenaufnahme */
.profil-abschnitte { display: grid; grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); gap: 14px; margin: 8px 0 12px; }
.profil-abschnitt { background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 14px 18px 6px; }
.profil-abschnitt h3 { margin: 0 0 6px; font-size: 15px; display: flex; align-items: center; gap: 10px; }
.profil-abschnitt .grid-dl { grid-template-columns: 150px 1fr; padding: 6px 0; margin: 0; background: transparent; border-radius: 0; }
.profil-abschnitt .grid-dl dd { overflow-wrap: anywhere; }

/* Materialrückgaben */
.rg-haken { width: 18px; height: 18px; }
.rg-haken-label { display: flex; align-items: center; gap: 6px; font-size: 12px; margin: 4px 0; white-space: nowrap; }
.rg-haken-label input { width: 15px; height: 15px; margin: 0; }
.rg-tabelle td { vertical-align: top; }
.rg-direkt { display: inline-flex; align-items: center; gap: 3px; }
.rg-direkt select { width: 110px; }
.rg-hauptlager { display: inline-flex; align-items: center; gap: 3px; }
.rg-hauptlager input { width: 52px; padding: 4px; border: 1px solid var(--border); border-radius: 6px; font-size: 12px; }

/* Materialausgabe Off-Ice (ma-*) */
.ma-wrap { overflow: visible; }
@media (max-width: 1100px) { .ma-wrap { overflow-x: auto; } }
.ma-tabelle { font-size: 12px; width: 100%; overflow: visible; border-radius: 0; }
.ma-tabelle thead th { position: sticky; top: var(--nav-h, 0px); z-index: 3; box-shadow: 0 2px 0 rgba(0,0,0,.08); }
.ma-tabelle thead th:first-child { left: 0; z-index: 4; }
.ma-tabelle th, .ma-tabelle td { padding: 3px 4px; border-right: 1px solid #e3e6ec; white-space: nowrap; }
.ma-tabelle th { font-size: 12px; }
.ma-name { font-weight: 600; position: sticky; left: 0; background: #fff; z-index: 1; min-width: 160px; }
.ma-zelle { min-width: 64px; }
.ma-groesse { width: 42px; padding: 3px 4px; border: 1px solid var(--border); border-radius: 5px; font-size: 12px; text-align: center; text-transform: uppercase; }
.ma-haken { width: 17px; height: 17px; vertical-align: middle; margin-left: 3px; }
.ma-ausgegeben { background: #e8f5e9; }
.ma-fertig { color: #1e7e34; font-weight: 700; }
.ma-undo { border: none; background: none; cursor: pointer; color: #889; font-size: 12px; padding: 0 2px; }
.ma-undo:hover { color: var(--red); }
.ma-trenner td { background: #eef1f6; font-weight: 700; font-size: 12px; }
.ma-bedarf td { font-size: 11px; vertical-align: top; }
.ma-bedarf td span { display: block; }
.ma-bedarf td:first-child { font-weight: 700; }
.ma-offen td { color: #b58300; }
@media print { .ma-tabelle { font-size: 9px; } .ma-groesse { border: none; } .ma-haken { display: none; } .ma-name { position: static; } @page { size: A4 landscape; margin: 8mm; } }

/* Pflicht-Rückmeldung (U10/U11/U13): gelber Punkt = noch keine Zu-/Absage */
.punkt-gelb { display: inline-block; width: 18px; height: 18px; border-radius: 50%; background: #f5c400; border: 2px solid #d9a800; vertical-align: -3px; box-sizing: border-box; }
.tz-rueck summary .punkt-gelb { width: 22px; height: 22px; }
.tz-kachel-kopf .punkt-gelb { width: 10px; height: 10px; border-width: 1px; }
.tz-offen-zahl { color: #9a6b00; font-weight: 700; }
.tz-null { opacity: .35; }
.anw-offen .punkt-gelb { width: 14px; height: 14px; }
.tz-kachel.tz-pflicht .tz-kachel-zeile { grid-template-columns: 62px 26px 26px 26px 26px 26px; }

/* Mannschaftskasse */
.mk-tabelle td.r, .mk-tabelle th.r { white-space: nowrap; }
.mk-minus { color: var(--red); }

/* Auswärtsfahrt im Dashboard: neuester Beitrag aus dem Info-Kanal „Auswärtsfahrten" */
.af-block { background: #fff; border: 1px solid var(--border); border-left: 5px solid var(--blue); border-radius: 12px; padding: 12px 18px 14px; margin: 6px 0 18px; }
.af-vorbei-block { border-left-color: #999; }
.af-kopf { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.af-kopf h2 { margin: 0; }
.af-marke { font-size: 12px; font-weight: 700; color: #fff; background: #1a7f37; border-radius: 999px; padding: 2px 8px; vertical-align: middle; }
.af-marke-grau { background: #888; }
.af-text { margin: 8px 0 10px; font-size: 15px; }
.af-bild { display: block; margin: 0 0 10px; }
.af-bild img { display: block; width: 100%; height: auto; border: 1px solid var(--border); border-radius: 8px; }
.af-pdf-link { margin: 6px 0; }
.af-pdf { width: 100%; height: 70vh; min-height: 420px; border: 1px solid var(--border); border-radius: 8px; background: #f6f6f6; }
.af-ende { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 10px; font-size: 13px; }
.af-ende input[type=date] { padding: 3px 6px; }
.af-leer { margin: 12px 0; font-size: 13px; }
@media print { .af-pdf { display: none; } }

/* Mannschaftsmeldung (Turnierportal) */
.tm-seite { max-width: 1000px; margin: 0 auto; }
.tm-kopf h1 { margin: 2px 0 6px; }
.tm-turnier { margin: 0 0 4px; }
.tm-status { border: 1px solid var(--border); border-left: 5px solid var(--blue); border-radius: 10px; padding: 10px 14px; margin: 12px 0; background: #fff; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.tm-status-gruen { border-left-color: #1a7f37; }
.tm-status-rot { border-left-color: var(--red); }
.tm-abschnitt { background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 12px 16px; margin: 14px 0; }
.tm-abschnitt h2 { margin: 0 0 8px; font-size: 18px; }
.tm-zaehler { font-size: 13px; font-weight: 400; }
.tm-tabelle { width: 100%; border-collapse: collapse; font-size: 14px; }
.tm-tabelle th, .tm-tabelle td { padding: 6px 8px; border-bottom: 1px solid var(--border); text-align: left; vertical-align: middle; }
.tm-tabelle th { background: #f4f6fa; font-size: 12px; text-transform: uppercase; letter-spacing: .03em; color: #445; }
.tm-tabelle tr[data-art] { cursor: pointer; }
.tm-tabelle tr.tm-aktiv td { background: #eef4ff; }
.tm-tabelle tr.tm-unvollstaendig td { background: #fff8e6; }
.tm-fehlt { color: #b00020; font-size: 12px; font-weight: 700; margin-left: 4px; }
.tm-aktion { white-space: nowrap; }
.tm-form { margin-top: 12px; padding-top: 10px; border-top: 1px dashed var(--border); }
.tm-form-titel { margin: 0 0 8px; font-size: 15px; }
.tm-felder { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 8px 10px; align-items: end; }
.tm-felder label { display: flex; flex-direction: column; font-size: 12px; color: #445; gap: 3px; }
.tm-felder input, .tm-felder select { padding: 7px 8px; font-size: 15px; border: 1px solid var(--border); border-radius: 8px; }
.tm-felder .form-actions { margin: 0; }
.tm-felder-klein input, .tm-felder-klein select { font-size: 13px; padding: 5px 6px; }
.tm-abschluss { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin: 16px 0; }
.tm-fuss { font-size: 13px; }
.tm-einstellungen { background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 10px 16px; margin: 10px 0 14px; }
.tm-einstellungen summary { cursor: pointer; font-weight: 700; }
.tm-uebersicht { width: 100%; border-collapse: collapse; font-size: 14px; background: #fff; }
.tm-uebersicht th, .tm-uebersicht td { padding: 8px; border-bottom: 1px solid var(--border); text-align: left; vertical-align: top; }
.tm-uebersicht th { background: #f4f6fa; font-size: 12px; text-transform: uppercase; letter-spacing: .03em; color: #445; }
.tm-ampel { display: inline-block; width: 11px; height: 11px; border-radius: 50%; vertical-align: middle; margin-right: 2px; }
.tm-ampel-grau { background: #bbb; } .tm-ampel-gelb { background: #f0b400; } .tm-ampel-gruen { background: #1a7f37; }
.tm-v { display: flex; justify-content: space-between; gap: 8px; align-items: center; flex-wrap: wrap; padding: 4px 0; border-bottom: 1px dotted var(--border); }
.tm-v-gesperrt { opacity: .6; }
.tm-v-aktionen { display: flex; gap: 4px; flex-wrap: wrap; }
.tm-v-neu summary { cursor: pointer; font-size: 13px; }
.tm-druck-team { margin-bottom: 18px; }
/* Kaderliste + Kontaktblock des Ansprechpartners (25.10.2026) */
.tm-tabelle tr.tm-staff td { color: #334; background: #f7f8fb; }
.tm-check { flex-direction: row !important; align-items: flex-start; gap: 8px; grid-column: 1 / -1; font-size: 14px !important; line-height: 1.4; }
.tm-check input { width: 18px; height: 18px; margin-top: 2px; flex: none; }
.tm-ws-ja { color: #1a7f37; } .tm-ws-nein { color: #b00020; }
.tm-pflicht { color: #b00020; }
/* Assistent „Neues Turnier anlegen" (25.10.2026) */
.wz-schritte { display: flex; gap: 10px; list-style: none; padding: 0; margin: 10px 0 14px; flex-wrap: wrap; }
.wz-schritte li { display: flex; align-items: center; gap: 8px; padding: 6px 12px; border: 1px solid var(--border); border-radius: 999px; background: #fff; font-size: 14px; color: #667; cursor: pointer; }
.wz-schritte li span { display: inline-flex; width: 24px; height: 24px; align-items: center; justify-content: center; border-radius: 50%; background: #e6e9ef; font-weight: 700; font-size: 13px; }
.wz-schritte li.wz-an { border-color: var(--blue); color: var(--blue); font-weight: 700; }
.wz-schritte li.wz-an span { background: var(--blue); color: #fff; }
.wz-schritte li.wz-fertig span { background: #1a7f37; color: #fff; }
.wz-team { display: grid; grid-template-columns: 32px 1fr auto; gap: 10px; align-items: start; background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 10px 12px; margin-bottom: 8px; }
.wz-team-nr { font-weight: 700; color: #667; padding-top: 24px; }
.wz-team-felder { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 8px; }
.wz-team-felder label { display: flex; flex-direction: column; font-size: 12px; font-weight: 600; color: #445; }
.wz-team-felder input, .wz-team-felder select { padding: 7px 8px; font-size: 14px; border: 1px solid var(--border); border-radius: 8px; margin-top: 3px; }
.wz-team .wz-entfernen { margin-top: 22px; }
.wz-nav { display: flex; gap: 10px; margin: 16px 0; }
.wz-spaeter-box { background: #fff; border: 1px dashed var(--border); border-radius: 12px; padding: 12px 16px; }
#wz-jetzt[hidden], .wz-spaeter-box[hidden], #wz-mail-zeile[hidden] { display: none !important; }
.btn[hidden], .wz-schritt[hidden] { display: none !important; }
.wz-zusammenfassung { background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 12px 16px; }
.wz-zusammenfassung h2 { margin: 0 0 4px; }
@media (max-width: 600px) { .wz-team { grid-template-columns: 24px 1fr; } .wz-team .wz-entfernen { grid-column: 2; margin-top: 0; justify-self: end; } }
/* Anmeldungen-Übersicht (25.10.2026) */
.tm-anmeldungen td { font-size: 13px; line-height: 1.45; }
.tm-anmeldungen .tm-ap-eintrag { padding: 4px 0; border-bottom: 1px dotted var(--border); }
.tm-anmeldungen .tm-ap-eintrag:last-of-type { border-bottom: none; }
.tm-anmeldungen tr.tm-zeile-warn td:first-child { border-left: 4px solid #f0b400; }
.tm-anmeldungen .tm-aktionen { white-space: nowrap; }
.tm-anmeldungen .tm-aktionen .btn, .tm-anmeldungen .tm-aktionen form { display: block; margin: 0 0 4px; }
.tm-anmeldungen .tm-v-aktionen { margin-top: 4px; }
.tp-leitung-kacheln { margin: 6px 0 14px; }
.tag-gp { background: #e8f0fe; color: #1a3d8f; }
.tp-tore-hz { opacity: .85; background: #f7f8fb; }
/* Essensbestellung & Abrechnung (26.10.2026) */
.tm-essen-tag { border-top: 1px dashed var(--border); padding-top: 10px; margin-top: 10px; }
.tm-essen-tag:first-of-type { border-top: none; margin-top: 0; padding-top: 0; }
.tm-essen-titel { margin: 0 0 6px; font-size: 15px; }
.tm-essen-tabelle { max-width: 520px; }
.tm-essen-tabelle input { width: 80px; padding: 6px; font-size: 15px; border: 1px solid var(--border); border-radius: 8px; text-align: center; }
.tm-essen-extra { margin-top: 8px; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); }
.tm-essen-extra .tm-essen-bem { grid-column: 1 / -1; }
.tm-essen-summe { margin: 10px 0 0; }
.te-tabelle td, .te-tabelle th { font-size: 13px; }
.te-tabelle tfoot th { background: #f4f6fa; }
.te-bezahlt td { background: #f2faf4; }
.te-zahlung { display: flex; gap: 4px; align-items: center; flex-wrap: wrap; justify-content: center; }
.te-zahlung input { padding: 5px 6px; font-size: 13px; border: 1px solid var(--border); border-radius: 6px; }
/* Spielplan-Generator (25.10.2026) */
.gen-grid { margin-bottom: 0; }
.gen-tage td, .gen-tage th { padding: 4px 8px; }
.gen-tage input[type="time"] { padding: 5px 6px; font-size: 14px; border: 1px solid var(--border); border-radius: 6px; }
.gen-warn { color: #8a4b00; }
.gen-vorschau td { font-size: 13px; }
.gen-vorschau tr.gen-phase-2 td, .gen-vorschau tr.gen-phase-4 td { background: #f7f8fb; }
.gen-vorschau tr.gen-phase-3 td, .gen-vorschau tr.gen-phase-5 td { background: #fff8e6; }
/* Größenschlüssel Trainer (26.10.2026) */
.gs-tabelle .ma-name { min-width: 200px; }
.gs-gruen a, .gs-gruen { color: #1a7f37; font-weight: 700; }
.gs-mark { border: none; background: none; cursor: pointer; color: #1a7f37; font-size: 13px; margin-left: 4px; padding: 0 2px; }
@media print { .gs-gruen a { color: #1a7f37 !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; } }
.la-groessen { display: block; font-size: 12px; margin-top: 3px; }
/* Mittagspausen (25.10.2026) */
.tpa-box { border-left: 4px solid #e07b00; }
.tpa-tag { font-size: 12px; margin-top: 6px; }
.tpa-zeile { padding: 3px 0; font-size: 14px; }
.tpa-formulare { margin-bottom: 14px; }
.tpa-tabelle { margin-bottom: 14px; }
.tp-raster + .tpa-box { margin-top: 10px; }
.tp-gp-hinweis { background: #fff; border: 1px solid var(--border); border-left: 5px solid #1a3d8f; border-radius: 10px; padding: 10px 14px; margin: 0 0 14px; display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
@media print { .seitenumbruch { page-break-before: always; } .tm-abschnitt { border: none; padding: 0; } .tm-tabelle tr[data-art] { cursor: default; } }

.tr-material td { font-size: 13px; }

/* Lagerverwaltung: Ausgabe an Person (mehrere Artikel auf einmal) */
.la-kopf label[hidden] { display: none; }
.la-kopf { display: grid; grid-template-columns: 180px minmax(240px, 1fr) 170px; gap: 10px 14px; align-items: end; background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 12px 16px; margin-bottom: 14px; }
.la-kopf label { display: flex; flex-direction: column; gap: 3px; font-size: 12px; color: #445; }
.la-kopf select, .la-neu input, .la-neu select { padding: 7px 8px; font-size: 15px; border: 1px solid var(--border); border-radius: 8px; }
.la-neu { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 8px; padding: 10px; border: 1px dashed var(--border); border-radius: 10px; background: #f8fafc; }
.la-neu .muted { grid-column: 1 / -1; font-size: 12px; }
.la-suche { display: flex; align-items: center; gap: 12px; margin: 4px 0 8px; }
.la-suche input { flex: 1; max-width: 420px; padding: 7px 10px; border: 1px solid var(--border); border-radius: 8px; }
.la-kat { margin: 14px 0 4px; font-size: 16px; }
.la-tabelle { width: 100%; border-collapse: collapse; background: #fff; font-size: 14px; }
.la-tabelle th, .la-tabelle td { padding: 6px 8px; border-bottom: 1px solid var(--border); text-align: left; }
.la-tabelle th { background: #f4f6fa; font-size: 12px; text-transform: uppercase; letter-spacing: .03em; color: #445; }
.la-zeile { cursor: pointer; }
.la-zeile.la-an td { background: #eef7ee; }
.la-check { width: 18px; height: 18px; }
.la-menge { width: 64px; padding: 4px 6px; }
.la-fuss { position: sticky; bottom: 0; background: #fff; border-top: 1px solid var(--border); padding: 10px 0; margin-top: 12px; display: flex; align-items: center; gap: 12px; }
@media (max-width: 700px) { .la-kopf { grid-template-columns: 1fr; } }

.us-groesse { font-size: 11px; margin-left: 4px; white-space: nowrap; }
.la-notiz { width: 100%; min-width: 160px; padding: 4px 6px; font-size: 13px; }
.la-preis { padding: 4px 6px; font-size: 13px; border: 1px solid var(--border); border-radius: 6px; width: 150px; }
.la-kopf #la-preis-alle { padding: 7px 8px; font-size: 14px; border: 1px solid var(--border); border-radius: 8px; }
.sa-preis { padding: 5px 6px; font-size: 13px; border: 1px solid var(--border); border-radius: 6px; width: 150px; }
.ma-preis-wahl { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; margin-right: 10px; }
.ma-preis-wahl input { padding: 6px 8px; font-size: 14px; border: 1px solid var(--border); border-radius: 8px; width: 200px; }
.ma-weitere td { font-size: 13px; vertical-align: top; }
.ma-weitere .ma-name { position: static; }
.ma-notiz { font-weight: 700; color: #9a6b00; }

/* Rückgaben ans Hauptlager (Meldung + Bestätigung) */
.lr-tabelle td { font-size: 13px; vertical-align: middle; }
.rg-hauptlager select { font-size: 12px; padding: 2px 4px; max-width: 110px; }

/* Zuzahlung: Ausnahmen je Abrechnungsmonat */
.zz-tabelle tr.zz-ausgenommen td { background: #fff6e5; }
.zz-blatt-ausgenommen { opacity: .75; }

/* Umfrage: Frist (Datum/Uhrzeit) sichtbar oben, jederzeit änderbar */
.frist-box { display: flex; flex-wrap: wrap; gap: 10px 14px; align-items: end; background: #fff; border-left: 5px solid var(--blue); border-radius: 8px; padding: 10px 16px; margin: 0 0 12px; box-shadow: 0 1px 4px rgba(0,0,0,.05); }
.frist-box.frist-zu { border-left-color: var(--red); }
.frist-box .frist-status { flex-basis: 100%; font-size: 16px; font-weight: 700; color: var(--blue); }
.frist-box.frist-zu .frist-status { color: var(--red); }
.frist-box label { font-size: 13px; font-weight: 600; color: #445; display: flex; flex-direction: column; gap: 4px; }
.frist-box input { padding: 7px 9px; border: 1px solid var(--border); border-radius: 8px; font-size: 14px; }
.frist-box .frist-tipp { flex-basis: 100%; font-size: 12px; }
@media print { .frist-box { display: none; } }

/* Umfrage bearbeiten: Kopfzeile je Frage mit Entfernen-Knopf */
.frage-kopf { display: flex; align-items: center; gap: 10px; margin-top: 10px; }
.frage-kopf .frage-nr { font-weight: 700; color: var(--blue); }
.frage-kopf .frage-weg { margin-left: auto; }

/* Umfrage: Hinweis zur Auswertung (Änderungen an der Bestellung o. ä.) */
.umfrage-aenderung { display: flex; flex-direction: column; gap: 4px; background: #fff7e0; border-left: 5px solid #e0a800; border-radius: 8px; padding: 12px 16px; margin: 14px 0; box-shadow: 0 1px 4px rgba(0,0,0,.05); }
.umfrage-aenderung-titel { font-size: 13px; font-weight: 700; color: #8a6400; text-transform: uppercase; letter-spacing: .03em; }
.umfrage-aenderung-text { font-size: 18px; font-weight: 700; color: #5a4300; white-space: pre-line; }
.karte-aenderung { display: block; background: #fff7e0; border-left: 4px solid #e0a800; border-radius: 6px; padding: 6px 10px; margin: 6px 0; font-size: 13px; font-weight: 700; color: #5a4300; white-space: pre-line; }
.umfrage-formular textarea { display: block; width: 100%; margin-top: 4px; padding: 9px; border: 1px solid var(--border); border-radius: 8px; font: inherit; font-size: 15px; resize: vertical; }
@media print { .umfrage-aenderung { break-inside: avoid; } }

/* Umfrage: Ersatzregeln („X ausverkauft → Y") – Kennzeichnung geänderter Bestellungen */
.auswertung-aenderung { background: #fff7e0; border-left: 4px solid #e0a800; border-radius: 6px; padding: 6px 10px; margin: 6px 0 8px; font-size: 13px; font-weight: 600; color: #5a4300; }
.auswertung-aenderung s, .auswertung-option s, .antwort-geaendert s, .ersatz-zeile s { color: #b3261e; }
.aenderung-zahl { font-size: 12px; color: #8a6400; font-weight: 600; }
.zeile-ersetzt .auswertung-option { color: #777; }
.antwort-geaendert { display: inline-block; background: #fff7e0; border-radius: 4px; padding: 0 5px; color: #5a4300; font-weight: 600; }
.ersatz-form { margin-top: 8px; font-size: 13px; }
.ersatz-form summary { cursor: pointer; font-weight: 600; color: #8a6400; }
.ersatz-form select { padding: 7px 9px; border: 1px solid var(--border); border-radius: 8px; font-size: 14px; max-width: 260px; }
.ersatz-form .sperre-form { margin-top: 8px; }
.ersatz-zeile { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: center; margin-top: 6px; }
@media print { .antwort-geaendert { background: none; } }

/* Gastkader: Sportler aus anderen Mannschaften (rot = spielt nach oben, blau = nach unten) */
tr.gast-hoch td, tr.gast-hoch td a { color: #c0392b; }
tr.gast-runter td, tr.gast-runter td a { color: #1a56b8; }
.gast-badge { display: inline-block; padding: 1px 8px; border-radius: 20px; font-size: 11px; font-weight: 600; white-space: nowrap; vertical-align: middle; margin-left: 4px; }
.gast-badge-hoch { background: #f9dcd8; color: #c0392b; }
.gast-badge-runter { background: #dbe6f8; color: #1a56b8; }
.gast-badge-neutral { background: #eee; color: #555; }
.gast-aktionen { white-space: nowrap; }
.gast-aktionen form { margin-right: 4px; }
.gast-neu { background: #fff; border: 1px solid var(--border); border-radius: 10px; padding: 12px 16px; margin: 14px 0 22px; }
.gast-neu h3 { margin: 0 0 8px; }
.gast-neu-zeile { display: flex; flex-wrap: wrap; gap: 10px 16px; align-items: flex-end; }
.gast-neu-zeile label { display: flex; flex-direction: column; gap: 4px; font-size: 14px; }
.gast-neu-zeile select, .gast-neu-zeile input { padding: 7px 9px; border: 1px solid var(--border); border-radius: 8px; font-size: 14px; max-width: 320px; }
.gast-einstellung { margin: 18px 0; display: flex; flex-wrap: wrap; gap: 8px 14px; align-items: center; }
.gast-einstellung h3 { width: 100%; margin: 0; }
.gast-wechsel { display: inline-flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.gast-wechsel select { padding: 6px 8px; border: 1px solid var(--border); border-radius: 8px; font-size: 14px; }
.kpi .kpi-gaeste { font-size: 12px; opacity: .8; }
@media print { tr.gast-hoch td, tr.gast-runter td { color: inherit; } }
.hinweis-warn { background: #fdf1d2; border: 1px solid #e0b84a; color: #7a5a00; border-radius: 10px; padding: 10px 14px; margin: 10px 0; }
.gast-kopf { margin-top: 4px; }

/* Trainingsgruppen 2.0 */
.tg-karten { display: grid; grid-template-columns: repeat(auto-fill, minmax(360px, 1fr)); gap: 14px; margin-bottom: 14px; }
.tg-karte { background: #fff; border-radius: 12px; padding: 12px 16px 14px; border-top: 5px solid var(--blue); }
.tg-karte-kopf h2 { margin: 0 0 4px; font-size: 18px; display: flex; align-items: center; gap: 8px; }
.tg-meta { display: block; font-size: 13px; color: #556; }
.tg-punkt { display: inline-block; width: 12px; height: 12px; border-radius: 50%; margin-right: 6px; vertical-align: middle; }
.tg-chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 10px 0; }
.tg-chip { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border: 2px solid var(--blue); border-radius: 20px; background: #fff; font-size: 14px; }
.tg-chip-klein { padding: 1px 8px; font-size: 12px; border-width: 1.5px; margin: 1px 0; }
.tg-chip-extern { border-style: dashed; }
.tg-chip-aus { border-color: #bbb; color: #888; }
.tg-chip small { font-size: 11px; }
.tg-chip .gast-badge { margin-left: 0; }
.tg-x { border: 0; background: none; cursor: pointer; color: #999; font-size: 12px; padding: 0 2px; line-height: 1; }
.tg-x:hover { color: var(--red); }
.tg-zeile { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.tg-zeile select { padding: 6px 8px; border: 1px solid var(--border); border-radius: 8px; font-size: 14px; max-width: 320px; }
.tg-details { width: 100%; margin-top: 4px; }
.tg-details summary { cursor: pointer; font-size: 13px; color: #556; }
.tg-form { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 10px 16px; margin-top: 8px; }
.tg-form label { display: flex; flex-direction: column; gap: 4px; font-size: 14px; }
.tg-form input, .tg-form select { padding: 7px 9px; border: 1px solid var(--border); border-radius: 8px; font-size: 14px; }
.tg-form input[type=color] { padding: 2px; height: 36px; width: 60px; }
.tg-form fieldset { grid-column: 1 / -1; border: 1px solid var(--border); border-radius: 10px; padding: 8px 12px; display: flex; flex-wrap: wrap; gap: 6px 16px; }
.tg-form fieldset legend { font-size: 13px; color: #556; padding: 0 4px; }
.tg-form > div { grid-column: 1 / -1; }
.tg-haken { display: inline-flex; align-items: center; gap: 6px; font-weight: 500; font-size: 14px; }
.tg-haken input { width: auto; }
.tg-filter { display: flex; flex-wrap: wrap; gap: 10px 18px; align-items: flex-end; margin-bottom: 10px; }
.tg-filter label { display: flex; flex-direction: column; gap: 4px; font-size: 13px; color: #556; }
.tg-filter select { padding: 6px 8px; border: 1px solid var(--border); border-radius: 8px; font-size: 14px; }
.tg-block-kopf { display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; }
.tg-block-kopf h2 { margin: 0; display: flex; align-items: center; gap: 6px; }
.tg-uebersicht td { vertical-align: top; }
.tg-uebersicht details summary { cursor: pointer; }
.kal-gruppe-chip { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border: 2px solid var(--blue); border-radius: 20px; font-size: 13px; font-weight: 600; cursor: pointer; }
.kal-gruppe-chip input { width: auto; margin: 0; }
@media print { .tg-filter, .no-print { display: none !important; } .tg-uebersicht details { open: true; } .tg-block { break-inside: avoid; } }
.kal-trainer-chip { border-color: #556; font-weight: 500; }

/* Siegerehrung / Gesamtauswertung (08.11.2026) */
.tps-leiste { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 10px 14px; margin-bottom: 14px; }
.tps-h2 { margin: 22px 0 10px; font-size: 20px; }
.tps-podest { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; align-items: end; margin: 8px 0 18px; }
.tps-stufe { background: #fff; border: 1px solid var(--border); border-radius: 14px; padding: 16px 12px 14px; text-align: center; }
.tps-stufe-1 { border-color: #d4af37; background: linear-gradient(180deg, #fff9e3, #fff); padding-top: 26px; }
.tps-stufe-2 { border-color: #a8a8a8; background: linear-gradient(180deg, #f4f4f4, #fff); }
.tps-stufe-3 { border-color: #cd7f32; background: linear-gradient(180deg, #fbeee2, #fff); }
.tps-medaille { font-size: 40px; line-height: 1; }
.tps-stufe-1 .tps-medaille { font-size: 56px; }
.tps-podest-logo { width: 72px; height: 72px; object-fit: contain; margin: 10px auto 6px; display: block; }
.tps-stufe-1 .tps-podest-logo { width: 96px; height: 96px; }
.tps-podest-name { font-weight: 800; font-size: 18px; color: var(--blue); }
.tps-stufe-1 .tps-podest-name { font-size: 22px; }
.tps-podest-platz { font-weight: 700; margin-top: 2px; }
.tps-podest-info { font-size: 12px; margin-top: 4px; }
.tps-tabelle .tps-platz { font-weight: 800; font-size: 16px; white-space: nowrap; }
.tps-tabelle tr.tps-top td { background: #fffbea; }
.tps-tabelle td.tps-klein, .tps-klein { font-size: 12.5px; color: #556; white-space: normal; }
.tps-karten { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 12px; }
.tps-karten .tp-box { margin-bottom: 0; }
.tps-zahl { font-size: 34px; font-weight: 800; color: var(--blue); line-height: 1.1; }
.tps-eintrag { padding: 4px 0; display: flex; align-items: center; gap: 8px; }
.tps-eintrag + .tps-eintrag { border-top: 1px dashed var(--border); }
.tps-eintrag.tp-team-zelle { white-space: normal; }
.tps-eintrag > span { min-width: 0; overflow-wrap: anywhere; }
.tps-gruppen { display: grid; grid-template-columns: 1fr; gap: 12px; }
.tps-gruppe { width: 100%; }
.tps-gruppe td, .tps-gruppe th { padding: 5px 8px; font-size: 13.5px; }
.tps-gruppe td.tp-team-zelle { white-space: normal; width: 100%; }
.tps-print-kopf { display: none; }
@media (max-width: 640px) { .tps-podest { grid-template-columns: 1fr; } .tps-stufe-1 { order: -1; } }
@media print {
  .tps-print-kopf { display: flex; align-items: center; gap: 14px; margin-bottom: 10px; }
  .tps-print-kopf img { width: 64px; height: 64px; object-fit: contain; }
  .tps-print-titel { font-size: 22px; font-weight: 800; }
  .tps-podest, .tps-stufe, .tp-box, .tps-tabelle tr { break-inside: avoid; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .tps-h2 { margin-top: 14px; font-size: 16px; }
  .tps-karten { grid-template-columns: repeat(3, 1fr); }
  .tp-raster { grid-template-columns: repeat(3, 1fr); }
  .tps-gruppen { grid-template-columns: 1fr; }
  .tp-tabelle td, .tp-tabelle th { padding: 4px 6px; font-size: 12px; }
}
