/* Design-Tokens — hell, ruhig, eine Akzentfarbe, viel Luft. */
:root {
  --farbe-text: #1d1d1f;
  --farbe-text-leise: #6e6e73;
  --farbe-text-sehr-leise: #aeaeb2;
  --farbe-grund: #ffffff;
  --farbe-flaeche: #f5f5f7;
  --farbe-flaeche-tief: #ebebed;
  --farbe-linie: #d2d2d7;
  --farbe-linie-leise: #e8e8ed;
  --farbe-akzent: #0071e3;
  --farbe-akzent-leise: #e8f2fd;
  --farbe-erfolg: #1b7f3b;
  --farbe-warnung: #b45309;
  --farbe-fehler: #d70015;

  --abstand-1: 4px;
  --abstand-2: 8px;
  --abstand-3: 12px;
  --abstand-4: 16px;
  --abstand-5: 24px;
  --abstand-6: 32px;
  --abstand-7: 48px;
  --abstand-8: 64px;

  --schrift: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  --text-xs: 0.75rem;
  --text-sm: 0.875rem;
  --text-md: 1rem;
  --text-lg: 1.25rem;
  --text-xl: 1.75rem;
  --text-2xl: 2.125rem;

  --radius: 12px;
  --radius-sm: 8px;
  --feld-eingabe-hoehe: 2.75rem;
  --breite-inhalt: 920px;
  --breite-schmal: 26rem;
  --breite-formular: 36rem;
  --breite-erfassen-formular: 24rem;
  --schatten-karte: 0 1px 3px rgba(0, 0, 0, 0.04);
  --uebergang: 160ms ease;
}

* { box-sizing: border-box; }

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

body {
  margin: 0;
  font-family: var(--schrift);
  font-size: var(--text-md);
  line-height: 1.55;
  color: var(--farbe-text);
  background: var(--farbe-grund);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

a { color: var(--farbe-akzent); text-decoration: none; transition: color var(--uebergang); }
a:hover { color: #0077ed; }

h1, h2, h3 {
  font-weight: 600;
  line-height: 1.2;
  margin: 0 0 var(--abstand-3);
  letter-spacing: -0.02em;
}
h1 { font-size: var(--text-xl); font-weight: 650; }
h2 { font-size: var(--text-lg); margin-top: var(--abstand-7); }
h2:first-child { margin-top: 0; }
h3 { font-size: var(--text-md); margin-top: var(--abstand-5); }

p { margin: 0 0 var(--abstand-4); }

/* Typografie-Hilfen */
.text-leise { color: var(--farbe-text-leise); }
.text-intro { color: var(--farbe-text-leise); font-size: var(--text-sm); max-width: 38rem; line-height: 1.6; }

/* Kopf / Navigation */
.kopf {
  border-bottom: 1px solid var(--farbe-linie-leise);
  background: rgba(255, 255, 255, 0.88);
  backdrop-filter: saturate(180%) blur(16px);
  -webkit-backdrop-filter: saturate(180%) blur(16px);
  position: sticky;
  top: 0;
  z-index: 100;
}
.kopf-inhalt {
  max-width: var(--breite-inhalt);
  margin: 0 auto;
  padding: var(--abstand-3) var(--abstand-5);
  display: flex;
  align-items: center;
  gap: var(--abstand-4);
  flex-wrap: wrap;
}
.marke {
  display: inline-flex;
  align-items: center;
  gap: var(--abstand-2);
  font-weight: 600;
  font-size: var(--text-md);
  color: var(--farbe-text);
  letter-spacing: -0.02em;
  flex-shrink: 0;
}
.marke:hover { text-decoration: none; color: var(--farbe-text); }
.marke-logo {
  display: block;
  width: 2.75rem;
  height: 3rem;
  object-fit: contain;
  flex-shrink: 0;
}
.marke-text { line-height: 1.2; }

.nav-haupt {
  display: flex;
  align-items: center;
  gap: var(--abstand-1);
  flex: 1;
}
.nav-haupt a {
  color: var(--farbe-text-leise);
  font-size: var(--text-sm);
  font-weight: 500;
  padding: var(--abstand-2) var(--abstand-3);
  border-radius: var(--radius-sm);
  transition: background var(--uebergang), color var(--uebergang);
}
.nav-haupt a:hover { color: var(--farbe-text); text-decoration: none; background: var(--farbe-flaeche); }
.nav-haupt a.aktiv { color: var(--farbe-text); background: var(--farbe-flaeche); }
.nav-haupt a.nav-aktion {
  color: var(--farbe-akzent);
  border: 1px solid var(--farbe-linie);
  background: var(--farbe-grund);
}
.nav-haupt a.nav-aktion:hover {
  background: var(--farbe-akzent-leise);
  border-color: transparent;
  color: var(--farbe-akzent);
}
.nav-haupt a.nav-aktion.aktiv {
  background: var(--farbe-akzent);
  border-color: var(--farbe-akzent);
  color: #fff;
}

.nav-rechts {
  margin-left: auto;
  display: flex;
  gap: var(--abstand-2);
  align-items: center;
  flex-wrap: wrap;
}
.nav-mehr { position: relative; }
.nav-mehr summary {
  list-style: none;
  cursor: pointer;
  font-size: var(--text-sm);
  font-weight: 500;
  color: var(--farbe-text-leise);
  padding: var(--abstand-2) var(--abstand-3);
  border-radius: var(--radius-sm);
  transition: background var(--uebergang), color var(--uebergang);
}
.nav-mehr summary::-webkit-details-marker { display: none; }
.nav-mehr summary:hover { color: var(--farbe-text); background: var(--farbe-flaeche); }
.nav-mehr[open] summary { color: var(--farbe-text); background: var(--farbe-flaeche); }
.nav-mehr-menu {
  position: absolute;
  right: 0;
  top: calc(100% + var(--abstand-2));
  min-width: 11rem;
  background: var(--farbe-grund);
  border: 1px solid var(--farbe-linie-leise);
  border-radius: var(--radius);
  box-shadow: 0 12px 40px rgba(0, 0, 0, 0.1);
  padding: var(--abstand-2);
  display: flex;
  flex-direction: column;
  gap: 2px;
  z-index: 200;
}
.nav-mehr-menu a {
  font-size: var(--text-sm);
  color: var(--farbe-text-leise);
  padding: var(--abstand-2) var(--abstand-3);
  border-radius: var(--radius-sm);
  transition: background var(--uebergang), color var(--uebergang);
}
.nav-mehr-menu a:hover { text-decoration: none; background: var(--farbe-flaeche); color: var(--farbe-text); }
.nav-mehr-menu a.aktiv { color: var(--farbe-text); font-weight: 600; }
.nav-logout { display: inline; margin: 0; }
.btn-ghost {
  background: transparent;
  border-color: transparent;
  color: var(--farbe-text-leise);
  box-shadow: none;
}
.btn-ghost:hover { background: var(--farbe-flaeche); color: var(--farbe-text); }

/* Ranglisten-Steuerung */
.ranglisten-kopf {
  --ranglisten-kopf-hoehe: 2.375rem;
  display: flex;
  align-items: center;
  gap: var(--abstand-3);
  margin-bottom: var(--abstand-6);
}
.ranglisten-kopf-gruppe {
  display: flex;
  align-items: center;
  gap: var(--abstand-3);
  flex: 1 1 auto;
  min-width: 0;
}
.ranglisten-kopf-aktionen {
  flex: 0 0 auto;
  margin-left: auto;
  display: flex;
  align-items: center;
}
.ranglisten-kopf .teilen-menu {
  flex-shrink: 0;
}
.ranglisten-kopf .teilen-menu summary.teilen-menu-trigger {
  width: var(--ranglisten-kopf-hoehe);
  height: var(--ranglisten-kopf-hoehe);
  min-width: var(--ranglisten-kopf-hoehe);
  background: var(--farbe-flaeche);
  border-radius: var(--radius);
}
.ranglisten-steuerung {
  margin-bottom: var(--abstand-6);
}
.ranglisten-leiste {
  display: flex;
  align-items: center;
  gap: var(--abstand-3);
  flex-wrap: wrap;
  min-width: 0;
}
.ranglisten-pills {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  padding: 3px;
  background: var(--farbe-flaeche);
  border-radius: var(--radius);
  flex: 0 0 auto;
}
.ranglisten-kopf .ranglisten-modus,
.ranglisten-kopf .ranglisten-nav,
.ranglisten-kopf .nav-pills {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  margin: 0;
  padding: 0;
  background: transparent;
  border-radius: 0;
}
.ranglisten-kopf .ranglisten-modus a,
.ranglisten-kopf .ranglisten-nav a,
.ranglisten-kopf .nav-pills a {
  flex: 0 1 auto;
  text-align: center;
  min-width: 4.25rem;
  height: 2rem;
  padding-top: 0;
  padding-bottom: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
}
.ranglisten-kopf .saison-kontext--leiste {
  flex: 0 0 auto;
}
.ranglisten-kopf .saison-wechsel {
  height: var(--ranglisten-kopf-hoehe);
  min-height: var(--ranglisten-kopf-hoehe);
  box-sizing: border-box;
  padding-top: 0;
  padding-bottom: 0;
  display: inline-flex;
  align-items: center;
  border-radius: var(--radius);
  background-color: var(--farbe-flaeche);
}
.ranglisten-kopf .saison-wechsel:hover,
.ranglisten-kopf .saison-wechsel:focus {
  background-color: var(--farbe-grund);
}
.ranglisten-leiste-trenner {
  width: 1px;
  align-self: stretch;
  min-height: 1.25rem;
  margin: 4px var(--abstand-1);
  background: var(--farbe-linie-leise);
  flex-shrink: 0;
}
.ranglisten-pills-trenner {
  width: 1px;
  align-self: stretch;
  min-height: 1.25rem;
  margin: 4px var(--abstand-1);
  background: var(--farbe-linie-leise);
  flex-shrink: 0;
}
.ranglisten-steuerung .ranglisten-modus,
.ranglisten-steuerung .ranglisten-nav,
.ranglisten-steuerung .nav-pills {
  display: inline-flex;
  gap: 2px;
  margin: 0;
  padding: 0;
  background: transparent;
  border-radius: 0;
}
.ranglisten-steuerung .ranglisten-modus a,
.ranglisten-steuerung .ranglisten-nav a,
.ranglisten-steuerung .nav-pills a {
  flex: 0 1 auto;
  text-align: center;
  min-width: 4.5rem;
}
.saison-kontext--leiste {
  flex-shrink: 0;
}
.saison-wechsel {
  appearance: none;
  font: inherit;
  font-size: var(--text-sm);
  font-weight: 600;
  color: var(--farbe-text);
  border: none;
  border-radius: calc(var(--radius) - 3px);
  background: var(--farbe-flaeche);
  padding: 7px 1.75rem 7px var(--abstand-4);
  cursor: pointer;
  line-height: 1.25;
  transition: background var(--uebergang), box-shadow var(--uebergang);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%236e6e73' d='M3 4.5 6 7.5 9 4.5'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 0.55rem center;
}
.saison-wechsel:hover,
.saison-wechsel:focus {
  outline: none;
  background-color: var(--farbe-grund);
  box-shadow: var(--schatten-karte);
}

.nav-pills,
.ranglisten-modus,
.ranglisten-nav,
.klassen-nav {
  display: inline-flex;
  gap: 2px;
  margin-bottom: var(--abstand-5);
  padding: 3px;
  background: var(--farbe-flaeche);
  border-radius: var(--radius);
}
.ranglisten-modus {
  background: var(--farbe-flaeche-tief);
}
.nav-pills a,
.ranglisten-modus a,
.ranglisten-nav a,
.klassen-nav a {
  font-size: var(--text-sm);
  font-weight: 500;
  color: var(--farbe-text-leise);
  padding: 7px var(--abstand-4);
  border-radius: calc(var(--radius) - 3px);
  white-space: nowrap;
  line-height: 1.25;
  transition: background var(--uebergang), color var(--uebergang), box-shadow var(--uebergang);
}
.nav-pills a:hover,
.ranglisten-modus a:hover,
.ranglisten-nav a:hover,
.klassen-nav a:hover { text-decoration: none; color: var(--farbe-text); }
.nav-pills a.aktiv,
.ranglisten-modus a.aktiv,
.ranglisten-nav a.aktiv,
.klassen-nav a.aktiv {
  background: var(--farbe-grund);
  color: var(--farbe-text);
  box-shadow: var(--schatten-karte);
}
.ranglisten-modus a,
.ranglisten-nav a {
  font-weight: 400;
}
.ranglisten-modus a.aktiv,
.ranglisten-nav a.aktiv {
  font-weight: 600;
}

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Inhalt */
.inhalt {
  max-width: var(--breite-inhalt);
  margin: 0 auto;
  padding: var(--abstand-7) var(--abstand-5) var(--abstand-8);
}
.inhalt--zentriert {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding-top: var(--abstand-8);
}

.seiten-kopf {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--abstand-4);
  flex-wrap: wrap;
  margin-bottom: var(--abstand-6);
  padding-bottom: var(--abstand-5);
  border-bottom: 1px solid var(--farbe-linie-leise);
}
.seiten-kopf h1 { margin: 0; }
.seiten-kopf-aktionen {
  display: flex;
  align-items: center;
  gap: var(--abstand-3);
  flex-wrap: wrap;
}
.seiten-kopf--ohne-linie {
  border-bottom: none;
  padding-bottom: 0;
  margin-bottom: var(--abstand-4);
}
.seiten-kopf--mit-saison .saison-kontext {
  order: -1;
  flex: 1 1 100%;
  margin-bottom: var(--abstand-1);
}
.seiten-kopf--spieltag {
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--abstand-4);
  border-bottom: none;
  padding-bottom: 0;
  margin-bottom: var(--abstand-5);
}

.zurueck {
  margin: 0 0 var(--abstand-5);
  font-size: var(--text-sm);
}
.zurueck a { color: var(--farbe-text-leise); }
.zurueck a:hover { color: var(--farbe-akzent); }

.abschnitt { margin-bottom: var(--abstand-7); }
.abschnitt-titel {
  font-size: var(--text-xs);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--farbe-text-leise);
  margin: 0 0 var(--abstand-4);
}

/* Saison-Kontext (nur auf saisonbezogenen Seiten) */
.saison-kontext .ts-wrapper { min-width: 5rem; }
.saison-kontext .ts-control {
  font: inherit;
  font-size: var(--text-2xl);
  font-weight: 600;
  letter-spacing: -0.02em;
  min-height: auto;
  padding: 0 !important;
  border: none !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  color: var(--farbe-text);
}
.ranglisten-steuerung .saison-kontext .ts-control {
  font-size: var(--text-md);
}
.seiten-kopf--mit-saison .saison-kontext .ts-control {
  font-size: var(--text-xl);
  color: var(--farbe-text-leise);
}
.saison-kontext .ts-wrapper.dropdown-active .ts-control,
.saison-kontext .ts-wrapper.focus .ts-control {
  color: var(--farbe-text) !important;
  box-shadow: none !important;
}
.verwaltung-gruppe + .verwaltung-gruppe {
  margin-top: var(--abstand-7);
}
.verwaltung-gruppe .karten-raster h3 {
  font-size: var(--text-md);
  margin: 0 0 var(--abstand-2);
}

/* Tabellen */
.tabelle-kasten {
  border: 1px solid var(--farbe-linie-leise);
  border-radius: var(--radius);
  overflow: hidden;
  background: var(--farbe-grund);
  box-shadow: var(--schatten-karte);
}
.tabelle-kasten table { margin: 0; }

table { width: 100%; border-collapse: collapse; font-size: var(--text-sm); }
thead th {
  text-align: left;
  font-weight: 600;
  color: var(--farbe-text-leise);
  font-size: var(--text-xs);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  padding: var(--abstand-3) var(--abstand-4);
  background: var(--farbe-flaeche);
  border-bottom: 1px solid var(--farbe-linie-leise);
}
thead th a { color: inherit; font-weight: inherit; }
thead th a:hover { color: var(--farbe-text); text-decoration: none; }
tbody td {
  padding: var(--abstand-3) var(--abstand-4);
  border-bottom: 1px solid var(--farbe-linie-leise);
  vertical-align: middle;
}
tbody tr:last-child td { border-bottom: none; }
tbody tr:hover td { background: rgba(245, 245, 247, 0.6); }

.zahl {
  text-align: right;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
thead th.zahl,
tbody td.zahl,
tfoot td.zahl {
  text-align: right;
}
thead th.zelle-aktionen,
tbody td.zelle-aktionen {
  width: 1%;
  min-width: 4.75rem;
  white-space: nowrap;
  text-align: right;
}
.zahl-wert {
  font-size: var(--text-md);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  color: var(--farbe-text);
}
table.abrechnung-tabelle {
  table-layout: fixed;
}
table.abrechnung-tabelle col.abrechnung-zahl {
  width: 5.5rem;
}
table.abrechnung-tabelle th.zahl,
table.abrechnung-tabelle td.zahl {
  text-align: right;
}
table.abrechnung-tabelle tbody th[scope="row"] {
  text-align: left;
  font-weight: 500;
  font-size: var(--text-sm);
  text-transform: none;
  letter-spacing: normal;
  color: var(--farbe-text-leise);
  background: transparent;
  border-bottom: 1px solid var(--farbe-linie-leise);
  padding: var(--abstand-3) var(--abstand-4);
  vertical-align: middle;
}
table.abrechnung-tabelle tfoot th[scope="row"] {
  text-align: left;
  font-weight: 600;
  font-size: var(--text-sm);
  text-transform: none;
  letter-spacing: normal;
  color: var(--farbe-text);
  background: var(--farbe-flaeche);
  border-bottom: none;
  padding: var(--abstand-3) var(--abstand-4);
  vertical-align: middle;
}
tfoot td {
  padding: var(--abstand-3) var(--abstand-4);
  vertical-align: middle;
}
table.abrechnung-tabelle tfoot td {
  background: var(--farbe-flaeche);
}
tfoot tr.abrechnung-zwischensumme td,
tbody tr.abrechnung-zwischensumme td,
tbody tr.abrechnung-zwischensumme th {
  border-top: 1px solid var(--farbe-linie-leise);
  font-weight: 500;
  color: var(--farbe-text-leise);
  background: var(--farbe-flaeche);
}
tfoot tr.abrechnung-summe th,
tfoot tr.abrechnung-summe td {
  border-top: 1px solid var(--farbe-rand);
  font-weight: 600;
  background: var(--farbe-flaeche);
}
tfoot tr.abrechnung-summe:hover th,
tfoot tr.abrechnung-summe:hover td,
tbody tr.abrechnung-zwischensumme:hover td,
tbody tr.abrechnung-zwischensumme:hover th,
tbody tr.abrechnung-team-kopf:hover td {
  background: var(--farbe-flaeche);
}
tr.abrechnung-team-kopf td {
  padding-top: var(--abstand-4);
  font-weight: 600;
  font-size: var(--text-sm);
  color: var(--farbe-text-leise);
  background: var(--farbe-flaeche);
  border-top: 1px solid var(--farbe-linie-leise);
}
tbody tr.abrechnung-team-kopf:first-child td {
  border-top: none;
  padding-top: var(--abstand-3);
}
.rang {
  width: 3ch;
  font-size: var(--text-md);
  font-weight: 600;
  color: var(--farbe-text);
  font-variant-numeric: tabular-nums;
}
.rang-geteilt::before { content: "= "; color: var(--farbe-text-leise); font-weight: 500; }

/* Spieltag-Steuerung */
.spieltag-bereich {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--abstand-2);
  min-width: 0;
}

.spieltag-leiste {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  padding: 3px;
  background: var(--farbe-flaeche);
  border-radius: var(--radius);
  width: 13.5rem;
  max-width: 100%;
  flex: 0 0 auto;
  height: var(--ranglisten-kopf-hoehe, 2.375rem);
  box-sizing: border-box;
}
.ranglisten-kopf .spieltag-leiste {
  margin: 0;
}
.ranglisten-kopf .spieltag-pfeil {
  width: 2rem;
  height: 2rem;
}
.spieltag-datum {
  display: flex;
  flex: 1;
  min-width: 0;
  margin: 0;
}
.spieltag-datum .ts-wrapper { width: 100%; flex: 1; min-width: 0; }
.spieltag-datum .ts-control {
  font: inherit;
  font-size: var(--text-sm) !important;
  font-weight: 600 !important;
  line-height: 1.25;
  min-height: 2rem !important;
  height: 2rem !important;
  padding: 0 var(--abstand-3) !important;
  border: none !important;
  border-radius: calc(var(--radius) - 3px) !important;
  background: var(--farbe-grund) !important;
  box-shadow: var(--schatten-karte) !important;
  text-align: center;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
}
.spieltag-datum .ts-control input { display: none !important; }
.spieltag-datum .ts-control:hover { color: var(--farbe-akzent); }
.spieltag-pfeil {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  border-radius: calc(var(--radius) - 3px);
  color: var(--farbe-text-leise);
  font-size: 1.125rem;
  line-height: 1;
  flex-shrink: 0;
  transition: background var(--uebergang), color var(--uebergang), box-shadow var(--uebergang);
}
.spieltag-pfeil:hover { text-decoration: none; background: var(--farbe-grund); color: var(--farbe-text); box-shadow: var(--schatten-karte); }
.spieltag-pfeil--leer { opacity: 0.25; pointer-events: none; }
.spieltag-meta {
  margin: 0;
  font-size: var(--text-xs);
  color: var(--farbe-text-leise);
  line-height: 1.5;
}

/* Teilen-Menü */
.teilen-menu {
  position: relative;
  flex-shrink: 0;
  align-self: center;
}
/* Im Spieltag-Kopf am Datums-Navigator ausrichten (Leiste: 2rem Inhalt + 2×3px Rahmenluft) */
.seiten-kopf--spieltag .teilen-menu {
  align-self: flex-start;
  margin-top: 3px;
}
.teilen-menu summary.teilen-menu-trigger {
  list-style: none;
  width: 2rem;
  height: 2rem;
  min-width: 2rem;
  padding: 0;
  border: none;
  background: transparent;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: calc(var(--radius) - 3px);
  color: var(--farbe-text-leise);
  transition: background var(--uebergang), color var(--uebergang), box-shadow var(--uebergang);
}
.teilen-menu summary.teilen-menu-trigger:hover {
  background: var(--farbe-grund);
  color: var(--farbe-text);
  box-shadow: var(--schatten-karte);
}
.teilen-menu summary.teilen-menu-trigger .icon-download {
  width: 1.25rem;
  height: 1.25rem;
  display: block;
  flex-shrink: 0;
}
.teilen-menu summary::-webkit-details-marker { display: none; }
.teilen-menu-list {
  position: absolute;
  right: 0;
  top: calc(100% + var(--abstand-2));
  min-width: 9rem;
  background: var(--farbe-grund);
  border: 1px solid var(--farbe-linie-leise);
  border-radius: var(--radius);
  box-shadow: 0 12px 40px rgba(0, 0, 0, 0.1);
  padding: var(--abstand-2);
  display: flex;
  flex-direction: column;
  gap: 2px;
  z-index: 50;
}
.teilen-menu-list a {
  font-size: var(--text-sm);
  color: var(--farbe-text-leise);
  padding: var(--abstand-2) var(--abstand-3);
  border-radius: var(--radius-sm);
  transition: background var(--uebergang), color var(--uebergang);
}
.teilen-menu-list a:hover { text-decoration: none; background: var(--farbe-flaeche); color: var(--farbe-text); }

/* Responsive Ranglisten */
.rangliste-karten {
  list-style: none;
  margin: 0;
  padding: 0;
  display: none;
}
.rang-karte {
  display: flex;
  align-items: center;
  gap: var(--abstand-3);
  padding: var(--abstand-3) var(--abstand-4);
  border-bottom: 1px solid var(--farbe-linie-leise);
}
.rang-karte:last-child { border-bottom: none; }
.rang-karte-platz {
  flex-shrink: 0;
  width: 2rem;
  font-size: var(--text-md);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--farbe-text);
  text-align: center;
}
.rang-karte-haupt { flex: 1; min-width: 0; }
.rang-karte-name {
  display: block;
  font-weight: 500;
  color: var(--farbe-text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.rang-karte-meta {
  display: block;
  font-size: var(--text-xs);
  color: var(--farbe-text-leise);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.rang-karte-werte {
  flex-shrink: 0;
  text-align: right;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 2px;
}
.rang-karte--ruhig { opacity: 0.72; }
.rang-karte--ruhig .rang-karte-name { color: var(--farbe-text-leise); }

.zeile-ruhig td { color: var(--farbe-text-leise); }
.zeile-ruhig .zahl-wert { color: var(--farbe-text-leise); font-weight: 500; }
.zeile-ruhig .name { color: var(--farbe-text-leise); }

/* Delta / Veränderung */
.zahl-delta { font-size: var(--text-xs); font-weight: 500; }
.delta { font-variant-numeric: tabular-nums; white-space: nowrap; }
.delta-hoch { color: var(--farbe-erfolg); }
.delta-runter { color: var(--farbe-fehler); }
.delta-gleich { color: var(--farbe-text-sehr-leise); }
.delta-neu { color: var(--farbe-akzent); font-weight: 600; }

/* HTMX-Übergänge */
.inhalt.inhalt-abblendend { opacity: 0.7; transition: opacity 120ms ease; }
.inhalt.inhalt-ein { animation: inhalt-ein 220ms ease-out; }
.zeile-bewegung.highlight-ein,
.rang-karte--bewegung.highlight-ein {
  animation: zeile-highlight 450ms ease-out both;
}

@keyframes inhalt-ein {
  from { opacity: 0.85; transform: translateY(4px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes zeile-highlight {
  0% { background: var(--farbe-akzent-leise); }
  100% { background: transparent; }
}

/* Karten */
.karte {
  background: var(--farbe-grund);
  border: 1px solid var(--farbe-linie-leise);
  border-radius: var(--radius);
  padding: var(--abstand-6);
  margin-bottom: var(--abstand-5);
  box-shadow: var(--schatten-karte);
}
.karte h2 { margin-top: 0; font-size: var(--text-lg); }
.karte--schmal { max-width: var(--breite-schmal); width: 100%; }
.karte--formular { max-width: var(--breite-formular); width: 100%; }
.karte-link {
  display: block;
  color: inherit;
  text-decoration: none;
  transition: border-color var(--uebergang), box-shadow var(--uebergang), transform var(--uebergang);
}
.karte-link:hover {
  text-decoration: none;
  border-color: var(--farbe-linie);
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.06);
  transform: translateY(-1px);
}
.karte-link p { color: var(--farbe-text-leise); font-size: var(--text-sm); margin-bottom: 0; }

/* Leerzustand */
.leer {
  text-align: center;
  color: var(--farbe-text-leise);
  font-size: var(--text-sm);
  padding: var(--abstand-8) var(--abstand-5);
  background: var(--farbe-flaeche);
  border-radius: var(--radius);
  border: 1px dashed var(--farbe-linie);
}

/* Buttons */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--abstand-2);
  font: inherit;
  font-size: var(--text-sm);
  font-weight: 500;
  padding: var(--abstand-2) var(--abstand-4);
  border-radius: 980px;
  border: 1px solid var(--farbe-linie);
  background: var(--farbe-grund);
  color: var(--farbe-text);
  cursor: pointer;
  transition: background var(--uebergang), border-color var(--uebergang), color var(--uebergang), box-shadow var(--uebergang);
  white-space: nowrap;
}
.btn:hover { background: var(--farbe-flaeche); text-decoration: none; }
.btn-primaer {
  background: var(--farbe-akzent);
  border-color: var(--farbe-akzent);
  color: #fff;
}
.btn-primaer:hover { background: #0077ed; border-color: #0077ed; color: #fff; }
.btn-klein { font-size: var(--text-xs); padding: 5px var(--abstand-3); }
.btn-warnung { background: var(--farbe-warnung); color: #fff; border-color: var(--farbe-warnung); }
.btn-warnung:hover { background: #92400e; border-color: #92400e; color: #fff; }
.btn-warnung-leise { color: var(--farbe-warnung); border-color: transparent; background: transparent; }
.btn-warnung-leise:hover { background: #fff7ed; color: #92400e; }
.btn-gefahr { color: var(--farbe-fehler); border-color: transparent; background: transparent; }
.btn-gefahr:hover { background: #fff0f1; color: var(--farbe-fehler); }

/* In-place Lösch-Bestätigung */
.loeschen-bestaetigen {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  vertical-align: middle;
  width: 1.875rem;
  height: 1.875rem;
  flex-shrink: 0;
}
.loeschen-bestaetigen--aktiv {
  z-index: 3;
}
.loeschen-trigger {
  position: relative;
  z-index: 1;
  flex-shrink: 0;
  opacity: 1;
  transform: scale(1);
  transition:
    opacity 140ms ease,
    transform 200ms ease,
    color var(--uebergang),
    background var(--uebergang);
}
.loeschen-bestaetigen--aktiv .loeschen-trigger {
  opacity: 0;
  transform: scale(0.86);
  pointer-events: none;
}
.loeschen-confirm {
  position: absolute;
  right: 0;
  top: 0;
  width: 5.25rem;
  height: 1.875rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 1px;
  padding: 1px;
  border: 1px solid var(--farbe-linie-leise);
  border-radius: var(--radius-sm);
  background: var(--farbe-grund);
  box-shadow: var(--schatten-karte);
  opacity: 0;
  transform: scale(0.92);
  transform-origin: right center;
  pointer-events: none;
  transition:
    opacity 180ms ease 40ms,
    transform 220ms cubic-bezier(0.22, 1, 0.36, 1) 20ms;
}
.loeschen-bestaetigen--aktiv .loeschen-confirm {
  opacity: 1;
  transform: scale(1);
  pointer-events: auto;
}
.loeschen-formular { margin: 0; display: inline-flex; }
.btn-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.875rem;
  height: 1.875rem;
  padding: 0;
  border: none;
  border-radius: calc(var(--radius-sm) - 2px);
  background: transparent;
  color: var(--farbe-text-leise);
  cursor: pointer;
  transition: background var(--uebergang), color var(--uebergang), box-shadow var(--uebergang);
  text-decoration: none;
  flex-shrink: 0;
}
.btn-icon .icon {
  width: 1rem;
  height: 1rem;
  flex-shrink: 0;
}
.btn-icon:hover { background: var(--farbe-grund); color: var(--farbe-text); box-shadow: var(--schatten-karte); }
.btn-icon--loeschen { color: var(--farbe-fehler); }
.btn-icon--loeschen:hover { background: #fff0f1; color: var(--farbe-fehler); box-shadow: none; }
.btn-icon--abbrechen { color: var(--farbe-text-leise); }
.btn-icon--bearbeiten { color: var(--farbe-text-leise); }
.btn-icon--bearbeiten:hover { color: var(--farbe-akzent); }
.btn-icon--uebernehmen { color: var(--farbe-text-leise); }
.btn-icon--uebernehmen:hover { color: var(--farbe-akzent); }
.btn-icon--details { color: var(--farbe-text-leise); }
.btn-icon--details:hover { color: var(--farbe-akzent); }
.loeschen-confirm .btn-icon--loeschen:hover { background: #fff0f1; box-shadow: none; }
/* Suchauswahl (Tom Select) */
.feld .ts-wrapper { width: 100%; }
.feld .ts-control {
  font: inherit;
  font-size: var(--text-sm);
  display: flex;
  align-items: center;
  flex-wrap: nowrap !important;
  overflow: hidden;
  height: var(--feld-eingabe-hoehe);
  min-height: var(--feld-eingabe-hoehe);
  line-height: 1.25;
  padding: 0 var(--abstand-4) !important;
  border: 1px solid var(--farbe-linie) !important;
  border-radius: var(--radius-sm) !important;
  background: var(--farbe-grund) !important;
  box-shadow: none !important;
  transition: border-color var(--uebergang), box-shadow var(--uebergang);
}
.feld .ts-wrapper.dropdown-active .ts-control,
.feld .ts-wrapper.focus .ts-control {
  border-color: var(--farbe-akzent) !important;
  box-shadow: 0 0 0 3px var(--farbe-akzent-leise) !important;
}
.feld .ts-wrapper.single .ts-control > input {
  min-width: 0 !important;
}
.feld .ts-control .item,
.team-slot-eingabe .ts-control .item {
  color: var(--farbe-text);
}
.feld .ts-wrapper.single.has-items:not(.dropdown-active) .ts-control .item,
.team-slot-eingabe .ts-wrapper.single.has-items:not(.dropdown-active) .ts-control .item {
  flex: 1 1 auto;
  min-width: 0;
  max-width: 100%;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  display: block;
}
.feld .ts-wrapper:not(.has-items) .ts-control .item,
.team-slot-eingabe .ts-wrapper:not(.has-items) .ts-control .item {
  color: var(--farbe-text-sehr-leise);
}
/* Geschlossen: nur Auswahl, kein Suchfeld */
.feld .ts-wrapper.has-items:not(.dropdown-active) .ts-control > input {
  display: none !important;
}
/* Geöffnet mit Auswahl: volle Breite zum Suchen, Chip ausblenden */
.feld .ts-wrapper.single.has-items.dropdown-active .ts-control .item,
.team-slot-eingabe .ts-wrapper.single.has-items.dropdown-active .ts-control .item {
  display: none !important;
}
.feld .ts-wrapper.single.has-items.dropdown-active .ts-control > input,
.team-slot-eingabe .ts-wrapper.single.has-items.dropdown-active .ts-control > input {
  display: inline-block !important;
  position: static;
  width: 100% !important;
  flex: 1 1 auto;
  min-width: 0 !important;
  max-width: none !important;
  opacity: 1;
  padding: 0;
  margin: 0 !important;
}
/* Kein Blink-Cursor im geschlossenen Suchfeld (ohne Auswahl) */
.feld .ts-wrapper:not(.dropdown-active):not(.has-items) .ts-control > input {
  position: absolute;
  width: 1px;
  opacity: 0;
  padding: 0;
  margin: 0;
  border: 0;
  caret-color: transparent;
}
.feld .ts-wrapper.single.such-select--ohne-suche .ts-control > input,
.feld .ts-wrapper .ts-control > input[readonly] {
  display: none !important;
}
.feld .ts-dropdown {
  border: 1px solid var(--farbe-linie-leise);
  border-radius: var(--radius-sm);
  box-shadow: 0 12px 40px rgba(0, 0, 0, 0.1);
  font-size: var(--text-sm);
  margin-top: var(--abstand-1);
  z-index: 2000;
}
body > .ts-dropdown {
  position: absolute;
  z-index: 2000;
}
.modal .ts-dropdown {
  z-index: 1;
  max-height: min(16rem, 40vh);
  overflow: auto;
}
.feld .ts-wrapper,
.team-slot-eingabe .ts-wrapper {
  position: relative;
  width: 100%;
}
.feld .ts-dropdown .option {
  padding: var(--abstand-2) var(--abstand-3);
}
.feld .ts-dropdown .option.active {
  background: var(--farbe-akzent-leise);
  color: var(--farbe-akzent);
}
.feld .ts-dropdown .option:hover,
.feld .ts-dropdown .option.selected {
  background: var(--farbe-flaeche);
  color: var(--farbe-text);
}
.suchauswahl-leer {
  padding: var(--abstand-3);
  color: var(--farbe-text-leise);
  font-size: var(--text-sm);
}
select.such-select { display: none; }
select.team-slot-person option:disabled { color: var(--farbe-text-sehr-leise); }
.zelle-aktionen { overflow: visible; white-space: nowrap; }
.aktionen-leiste {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: var(--abstand-1);
  flex-wrap: nowrap;
}

@media (prefers-reduced-motion: reduce) {
  .loeschen-bestaetigen,
  .loeschen-trigger,
  .loeschen-confirm {
    transition: none;
  }
}

.export-links { display: flex; gap: var(--abstand-2); align-items: center; }
.form-inline { display: inline; margin: 0; }

/* Formulare */
.feld { margin-bottom: var(--abstand-5); }
.feld label {
  display: block;
  font-size: var(--text-sm);
  font-weight: 500;
  margin-bottom: var(--abstand-2);
  color: var(--farbe-text);
}
.pflicht { color: var(--farbe-fehler); margin-left: 0.15em; }
.feld input:not([type="checkbox"]):not([type="radio"]):not([type="search"]),
.feld select,
.feld textarea {
  font: inherit;
  width: 100%;
  padding: 0 var(--abstand-4);
  border: 1px solid var(--farbe-linie);
  border-radius: var(--radius-sm);
  background: var(--farbe-grund);
  color: var(--farbe-text);
  transition: border-color var(--uebergang), box-shadow var(--uebergang);
}
.feld input:not([type="checkbox"]):not([type="radio"]):not([type="search"]),
.feld select {
  height: var(--feld-eingabe-hoehe);
  min-height: var(--feld-eingabe-hoehe);
  line-height: 1.25;
}
.feld textarea {
  min-height: calc(var(--feld-eingabe-hoehe) * 2);
  padding: var(--abstand-3) var(--abstand-4);
  line-height: 1.5;
}
.feld input:focus,
.feld select:focus,
.feld textarea:focus {
  outline: none;
  border-color: var(--farbe-akzent);
  box-shadow: 0 0 0 3px var(--farbe-akzent-leise);
}
.feld .hinweis { font-size: var(--text-xs); color: var(--farbe-text-leise); margin-top: var(--abstand-2); line-height: 1.5; }
.feld-fehler { color: var(--farbe-fehler); font-size: var(--text-xs); margin-top: var(--abstand-2); }
.formular-fehler-liste {
  margin: 0;
  padding-left: 1.1rem;
  line-height: 1.5;
}
.formular-fehler-liste li + li { margin-top: var(--abstand-1); }
.feld-reihe { display: flex; gap: var(--abstand-4); flex-wrap: wrap; }
.feld-reihe > .feld { flex: 1; min-width: 8rem; }
.feld--wachstum { flex: 1; min-width: 8rem; }
.feld-reihe--ende { align-items: flex-end; }

.form-aktionen {
  margin-top: var(--abstand-6);
  padding-top: var(--abstand-5);
  border-top: 1px solid var(--farbe-linie-leise);
  display: flex;
  gap: var(--abstand-3);
  flex-wrap: wrap;
  align-items: center;
}
.form-aktionen--trennung { margin-top: var(--abstand-5); }

/* Meldungen */
.meldung {
  padding: var(--abstand-3) var(--abstand-4);
  border-radius: var(--radius-sm);
  margin-bottom: var(--abstand-4);
  font-size: var(--text-sm);
  line-height: 1.5;
}
.meldung-erfolg { background: #f0fdf4; color: var(--farbe-erfolg); }
.meldung-fehler { background: #fff0f1; color: var(--farbe-fehler); }
.meldung-warnung { background: #fffbeb; color: var(--farbe-warnung); }
.meldung-info { background: var(--farbe-akzent-leise); color: var(--farbe-akzent); }
.stechen-hinweis a { color: inherit; font-weight: 600; text-decoration: underline; }
.stechen-hinweis a:hover { text-decoration: none; }

/* Toasts */
.toast-stapel {
  position: fixed;
  top: var(--abstand-5);
  right: var(--abstand-5);
  z-index: 1000;
  display: flex;
  flex-direction: column;
  gap: var(--abstand-3);
  max-width: min(22rem, calc(100vw - 2 * var(--abstand-5)));
  pointer-events: none;
}
.toast {
  pointer-events: auto;
  display: flex;
  align-items: flex-start;
  gap: var(--abstand-3);
  padding: var(--abstand-3) var(--abstand-4);
  border-radius: var(--radius);
  font-size: var(--text-sm);
  line-height: 1.45;
  background: var(--farbe-grund);
  border: 1px solid var(--farbe-linie-leise);
  box-shadow: 0 12px 40px rgba(0, 0, 0, 0.12);
  animation: toast-ein 200ms ease-out;
}
.toast-aus { animation: toast-aus 150ms ease-in forwards; }
.toast-text { flex: 1; }
.toast-schliessen {
  flex-shrink: 0;
  font: inherit;
  font-size: 1.125rem;
  line-height: 1;
  padding: 0;
  border: none;
  background: none;
  color: inherit;
  opacity: 0.45;
  cursor: pointer;
}
.toast-schliessen:hover { opacity: 1; }
.toast-erfolg { border-left: 3px solid var(--farbe-erfolg); }
.toast-fehler { border-left: 3px solid var(--farbe-fehler); }
.toast-warnung { border-left: 3px solid var(--farbe-warnung); }
.toast-info { border-left: 3px solid var(--farbe-akzent); }

@keyframes toast-ein {
  from { opacity: 0; transform: translateY(-0.35rem) scale(0.98); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes toast-aus {
  from { opacity: 1; transform: translateY(0); }
  to { opacity: 0; transform: translateY(-0.35rem); }
}

/* Trend (Legacy Export) */
.trend { font-variant-numeric: tabular-nums; font-size: var(--text-xs); font-weight: 500; }
.trend-hoch { color: var(--farbe-erfolg); }
.trend-runter { color: var(--farbe-fehler); }
.trend-gleich { color: var(--farbe-text-sehr-leise); }
.trend-neu { color: var(--farbe-akzent); }

.chip {
  display: inline-block;
  font-size: var(--text-xs);
  font-weight: 500;
  padding: 2px var(--abstand-2);
  border-radius: 980px;
  background: var(--farbe-flaeche);
  color: var(--farbe-text-leise);
  vertical-align: middle;
}
.chip--erledigt { background: #f0fdf4; color: var(--farbe-erfolg); }
.chip--warnung { background: #fff7ed; color: #c2410c; }

/* Team-Formular */
.karte--team { max-width: 40rem; }
.karte--team .karte-kopf {
  display: flex;
  align-items: center;
  gap: var(--abstand-3);
  margin-bottom: var(--abstand-5);
}
.karte--team .karte-kopf h2 { margin: 0; }
.karte--team .feld-reihe { margin-bottom: var(--abstand-2); }

.team-abschnitt {
  margin-top: var(--abstand-6);
  padding-top: var(--abstand-5);
  border-top: 1px solid var(--farbe-linie-leise);
}
.team-abschnitt-titel {
  margin: 0 0 var(--abstand-4);
  font-size: var(--text-sm);
  font-weight: 600;
  color: var(--farbe-text-leise);
  letter-spacing: 0.01em;
}

.team-slots-raster {
  --team-spalten: 1.75rem minmax(0, 1fr) 9.5rem 2.75rem;
  display: grid;
  grid-template-columns: var(--team-spalten);
  column-gap: var(--abstand-3);
  row-gap: var(--abstand-2);
  align-items: center;
}
.team-slots-raster--mit-gewehr {
  --team-spalten: 1.75rem minmax(0, 1fr) 8.25rem 8.25rem 2.75rem;
}

.team-slots-spalten {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: subgrid;
  align-items: end;
  margin-bottom: var(--abstand-1);
  font-size: var(--text-xs);
  font-weight: 500;
  color: var(--farbe-text-leise);
}

.team-slots {
  display: contents;
}

.team-slot {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: subgrid;
  align-items: center;
}
.team-slot[hidden] {
  display: none;
}

.team-slot-zeile {
  display: contents;
}

.team-slot-nr {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.75rem;
  height: 1.75rem;
  font-size: var(--text-xs);
  font-weight: 600;
  color: var(--farbe-text-leise);
  background: var(--farbe-flaeche);
  border-radius: 980px;
}

.team-slot-eingabe { min-width: 0; }
.team-slot-eingabe .feld-fehler { margin-top: var(--abstand-1); }
.team-slot-eingabe .ts-wrapper,
.team-slot-eingabe .ts-control {
  width: 100%;
}
.team-slot-eingabe .ts-control {
  font: inherit;
  font-size: var(--text-sm);
  display: flex;
  align-items: center;
  flex-wrap: nowrap !important;
  overflow: hidden;
  height: var(--feld-eingabe-hoehe);
  min-height: var(--feld-eingabe-hoehe);
  line-height: 1.25;
  padding: 0 var(--abstand-4) !important;
  border: 1px solid var(--farbe-linie) !important;
  border-radius: var(--radius-sm) !important;
  background: var(--farbe-grund) !important;
  box-shadow: none !important;
  transition: border-color var(--uebergang), box-shadow var(--uebergang);
}
.team-slot-eingabe .ts-wrapper.dropdown-active .ts-control,
.team-slot-eingabe .ts-wrapper.focus .ts-control {
  border-color: var(--farbe-akzent) !important;
  box-shadow: 0 0 0 3px var(--farbe-akzent-leise) !important;
}
.team-slot-eingabe .ts-wrapper.single .ts-control > input {
  min-width: 0 !important;
}
.team-slot-klasse--inaktiv .ts-wrapper {
  pointer-events: none;
}
.team-slot-klasse--inaktiv .ts-control {
  background: var(--farbe-flaeche) !important;
  border-color: var(--farbe-linie-leise) !important;
  color: var(--farbe-text-sehr-leise);
}
.team-slot-klasse--fest .ts-control {
  background: var(--farbe-flaeche) !important;
  border-color: var(--farbe-linie-leise) !important;
  color: var(--farbe-text);
}
.team-slot-klasse--offen .ts-control {
  border-color: var(--farbe-akzent) !important;
  box-shadow: 0 0 0 3px var(--farbe-akzent-leise) !important;
}

.team-slots-raster:not(.team-slots-raster--mit-gewehr) .team-slot-gewehrart,
.team-slots-raster:not(.team-slots-raster--mit-gewehr) .team-slots-spalte-gewehr {
  display: none;
}
.team-slot-gewehrart--aus {
  visibility: hidden;
  pointer-events: none;
}

.team-slot-zeile--gesperrt {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: 1.75rem minmax(0, 1fr) auto auto;
  column-gap: var(--abstand-3);
  align-items: center;
  padding: var(--abstand-2) 0;
  font-size: var(--text-sm);
}
.team-slot-zeile--gesperrt .team-slot-nr {
  background: var(--farbe-flaeche-tief);
}

.team-slot-zeile .team-person-neu {
  width: var(--feld-eingabe-hoehe);
  height: var(--feld-eingabe-hoehe);
  min-width: var(--feld-eingabe-hoehe);
  padding: 0;
  border: 1px solid var(--farbe-linie);
  border-radius: var(--radius-sm);
  font-size: 1.25rem;
  line-height: 1;
  color: var(--farbe-text-leise);
  background: var(--farbe-grund);
  justify-self: end;
}
.team-slot-zeile .team-person-neu:hover {
  color: var(--farbe-akzent);
  border-color: var(--farbe-akzent);
  background: var(--farbe-akzent-leise);
}

.slot-gesperrt-name { font-weight: 600; }
.slot-gesperrt-meta { color: var(--farbe-text-leise); }

@media (max-width: 540px) {
  .team-slots-raster,
  .team-slots-raster--mit-gewehr {
    --team-spalten: 1.75rem minmax(0, 1fr) 2.75rem;
  }
  .team-slots-spalten .team-slots-spalte-klasse,
  .team-slots-spalten .team-slots-spalte-gewehr,
  .team-slots-raster .team-slot-klasse,
  .team-slots-raster .team-slot-gewehrart {
    display: none;
  }
  .team-slot-zeile--gesperrt {
    grid-template-columns: 1.75rem minmax(0, 1fr) auto;
  }
}

/* Modal */
html.modal-offen,
body.modal-offen {
  overflow: hidden;
}
body.modal-offen {
  position: fixed;
  width: 100%;
}
.modal {
  border: none;
  border-radius: var(--radius);
  padding: 0;
  width: min(100vw - 2rem, 28rem);
  max-height: calc(100vh - 2rem);
  overflow: auto;
  overscroll-behavior: contain;
  box-shadow: 0 24px 64px rgba(0, 0, 0, 0.18);
  background: var(--farbe-grund);
}
.modal--breit { width: min(100vw - 2rem, 42rem); }
.modal::backdrop { background: rgba(0, 0, 0, 0.35); }
.modal-inhalt { padding: var(--abstand-5); }
.modal-kopf {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--abstand-3);
  margin-bottom: var(--abstand-4);
}
.modal-kopf h2 {
  font-size: var(--text-md);
  margin: 0;
}
.modal-formular .form-aktionen {
  margin-top: var(--abstand-4);
}

/* Bestätigungs-Modal */
.confirm-modal {
  width: min(100vw - 2rem, 24rem);
}
.confirm-modal-inhalt {
  padding: var(--abstand-5);
  text-align: center;
}
.confirm-modal-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.75rem;
  height: 2.75rem;
  margin: 0 auto var(--abstand-4);
  border-radius: 999px;
  background: #fff7ed;
  color: var(--farbe-warnung);
}
.confirm-modal[data-variant="gefahr"] .confirm-modal-icon {
  background: #fff0f1;
  color: var(--farbe-fehler);
}
.confirm-modal-icon .icon {
  width: 1.375rem;
  height: 1.375rem;
}
.confirm-modal-inhalt h2 {
  font-size: var(--text-md);
  margin: 0 0 var(--abstand-3);
}
.confirm-modal-frage {
  margin: 0 0 var(--abstand-3);
  font-size: var(--text-sm);
  line-height: 1.5;
}
.confirm-modal-hinweis {
  margin: 0 0 var(--abstand-5);
  font-size: var(--text-xs);
  line-height: 1.55;
  text-align: left;
  padding: var(--abstand-3) var(--abstand-4);
  border-radius: var(--radius-sm);
  background: var(--farbe-flaeche);
}
.confirm-modal-aktionen {
  display: flex;
  gap: var(--abstand-3);
  justify-content: stretch;
}
.confirm-modal-aktionen .btn {
  flex: 1;
  justify-content: center;
}

.fuss {
  border-top: 1px solid var(--farbe-linie-leise);
  color: var(--farbe-text-sehr-leise);
  font-size: var(--text-xs);
  margin-top: auto;
}
.fuss-inhalt {
  max-width: var(--breite-inhalt);
  margin: 0 auto;
  padding: var(--abstand-6) var(--abstand-5);
  display: flex;
  gap: var(--abstand-5);
  flex-wrap: wrap;
}
.fuss a { color: var(--farbe-text-sehr-leise); }
.fuss a:hover { color: var(--farbe-text-leise); }

.htmx-indicator { opacity: 0; transition: opacity var(--uebergang); font-size: var(--text-xs); color: var(--farbe-text-leise); }
.htmx-request .htmx-indicator { opacity: 1; }

/* Verwaltung */
.karten-raster {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr));
  gap: var(--abstand-4);
}
.karten-raster .karte { margin-bottom: 0; height: 100%; }
.karten-raster .karte h2 { font-size: var(--text-md); margin-bottom: var(--abstand-2); }
.karten-raster .karte h3 {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--abstand-1) var(--abstand-2);
}

.listen-filter {
  display: flex;
  gap: var(--abstand-3);
  margin-bottom: var(--abstand-5);
  flex-wrap: wrap;
  align-items: center;
}
.listen-filter input[type="search"] {
  flex: 1;
  min-width: 12rem;
  height: var(--feld-eingabe-hoehe);
  min-height: var(--feld-eingabe-hoehe);
  box-sizing: border-box;
  font: inherit;
  font-size: var(--text-sm);
  line-height: 1.25;
  padding: 0 var(--abstand-4);
  border: 1px solid var(--farbe-linie);
  border-radius: 980px;
  background: var(--farbe-flaeche);
  transition: border-color var(--uebergang), box-shadow var(--uebergang);
}
.listen-filter select {
  height: var(--feld-eingabe-hoehe);
  min-height: var(--feld-eingabe-hoehe);
  box-sizing: border-box;
  font: inherit;
  font-size: var(--text-sm);
  line-height: 1.25;
  padding: 0 2.25rem 0 var(--abstand-4);
  border: 1px solid var(--farbe-linie);
  border-radius: 980px;
  background-color: var(--farbe-flaeche);
  color: var(--farbe-text);
  min-width: 11rem;
  max-width: 100%;
  flex-shrink: 0;
  cursor: pointer;
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236e6e73' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right var(--abstand-3) center;
  background-size: 0.75rem;
  transition: border-color var(--uebergang), box-shadow var(--uebergang), background-color var(--uebergang);
}
.listen-filter input[type="search"]:focus,
.listen-filter select:focus {
  outline: none;
  border-color: var(--farbe-akzent);
  box-shadow: 0 0 0 3px var(--farbe-akzent-leise);
  background-color: var(--farbe-grund);
}
.listen-filter .btn {
  flex-shrink: 0;
  height: var(--feld-eingabe-hoehe);
  min-height: var(--feld-eingabe-hoehe);
  padding: 0 var(--abstand-5);
  font-size: var(--text-sm);
}
.listen-wrap { max-height: 70vh; overflow-y: auto; }
.listen-info { color: var(--farbe-text-sehr-leise); font-size: var(--text-xs); margin-top: var(--abstand-3); }
.sort-aktiv { color: var(--farbe-text); }

/* Änderungsprotokoll – Vollbild */
.protokoll-kopf {
  margin-bottom: var(--abstand-4);
}
.protokoll-tabelle {
  min-height: 0;
}
body.protokoll-vollbild {
  overflow: hidden;
}
.protokoll-ansicht--vollbild {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: flex;
  flex-direction: column;
  max-width: none;
  margin: 0;
  padding: var(--abstand-4) var(--abstand-5) var(--abstand-5);
  background: var(--farbe-grund);
}
.protokoll-ansicht--vollbild .protokoll-nur-normal {
  display: none;
}
.protokoll-ansicht--vollbild .protokoll-kopf {
  flex-shrink: 0;
  margin-bottom: var(--abstand-3);
  padding-bottom: 0;
  border-bottom: none;
}
.protokoll-ansicht--vollbild .protokoll-filter {
  flex-shrink: 0;
  margin-bottom: var(--abstand-4);
}
.protokoll-ansicht--vollbild .protokoll-tabelle {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
}
.protokoll-ansicht--vollbild .protokoll-liste {
  flex: 1;
  max-height: none;
  min-height: 0;
}
.protokoll-ansicht--vollbild .protokoll-liste thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: var(--farbe-flaeche);
  box-shadow: 0 1px 0 var(--farbe-linie-leise);
}
.protokoll-ansicht--vollbild .listen-info {
  flex-shrink: 0;
  margin-top: var(--abstand-3);
}

/* Legacy */
.nav { display: flex; gap: var(--abstand-4); flex-wrap: wrap; align-items: center; }
.nav a { color: var(--farbe-text-leise); font-size: var(--text-sm); }
.nav a.aktiv { color: var(--farbe-text); font-weight: 600; }

/* Erfassen – Zwei-Spalten-Layout (schmales Formular, breite Liste) */
.erfassen-layout {
  display: grid;
  grid-template-columns: minmax(17rem, var(--breite-erfassen-formular)) minmax(0, 1fr);
  gap: var(--abstand-7);
  align-items: start;
}
.erfassen-formular-spalte {
  position: sticky;
  top: var(--abstand-5);
  max-width: var(--breite-erfassen-formular);
}
.erfassen-liste-spalte {
  min-width: 0;
}
.erfassen-liste-abschnitt .abschnitt-titel {
  margin-top: 0;
  margin-bottom: var(--abstand-3);
}

.erfassen-leer {
  margin: 0;
  padding: var(--abstand-4) 0;
  color: var(--farbe-text-leise);
  font-size: var(--text-sm);
  line-height: 1.5;
}
.erfassen-leer[hidden] {
  display: none;
}
.erfassen-leer-titel {
  display: block;
  font-weight: 500;
  color: var(--farbe-text);
  margin-bottom: var(--abstand-1);
}
.erfassen-leer-text {
  display: block;
  color: var(--farbe-text-leise);
}
.erfassen-liste:has(#letzte-karten:empty) .erfassen-karten {
  display: none;
}

#erfassen-form .feld {
  margin-bottom: var(--abstand-3);
}
#erfassen-form .feld-reihe > .feld {
  margin-bottom: 0;
}
#erfassen-form .feld label {
  margin-bottom: var(--abstand-1);
  font-size: var(--text-xs);
}
#erfassen-form .feld--datum {
  flex: 0 0 8.75rem;
  min-width: 8.75rem;
}
#erfassen-form .feld--person {
  flex: 1;
  min-width: 0;
}
#erfassen-form .erfassen-schuetze-zeile {
  margin-bottom: var(--abstand-4);
}
#erfassen-form #erfassen-team-feld {
  margin-bottom: var(--abstand-3);
}
#erfassen-form .ts-control {
  min-height: 2.5rem !important;
  height: 2.5rem !important;
}
#erfassen-form .feld input:not([type="checkbox"]):not([type="radio"]):not([type="search"]),
#erfassen-form .feld select {
  height: 2.5rem;
  min-height: 2.5rem;
}

.erfassen-abschnitt + .erfassen-abschnitt {
  margin-top: var(--abstand-4);
  padding-top: 0;
}
.erfassen-abschnitt-titel {
  margin: 0 0 var(--abstand-2);
  font-size: var(--text-xs);
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--farbe-text-leise);
}
#erfassen-form .erfassen-abschnitt-titel {
  font-size: var(--text-xs);
  margin-top: 0;
}
.erfassen-kontext {
  margin: 0 0 var(--abstand-3);
  padding: var(--abstand-2) var(--abstand-3);
  border-radius: var(--radius-sm);
  background: var(--farbe-akzent-leise);
  color: var(--farbe-akzent);
  font-size: var(--text-xs);
  font-weight: 500;
  line-height: 1.4;
}
.erfassen-kontext[hidden] {
  display: none;
}
@media (min-width: 901px) {
  .erfassen-kontext {
    display: none !important;
  }
}
.erfassen-team-laden {
  margin: 0 0 var(--abstand-2);
  font-size: var(--text-xs);
  color: var(--farbe-text-leise);
}
.erfassen-team-feld--laden .ts-wrapper,
.erfassen-team-feld--laden select {
  opacity: 0.55;
  pointer-events: none;
}
.erfassen-ergebnis-felder {
  margin-top: var(--abstand-3);
}
.erfassen-ergebnis-felder input {
  font-size: var(--text-md);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  text-align: right;
  height: 2.75rem;
  min-height: 2.75rem;
  padding: 0 var(--abstand-3);
}
#erfassen-form .form-aktionen--kompakt {
  margin-top: var(--abstand-4);
  padding-top: 0;
  border-top: none;
}
.erfassen-liste .erfassen-aktionen {
  display: inline-flex;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: center;
  gap: 0;
}
.erfassen-karten {
  list-style: none;
  margin: 0;
  padding: 0;
  border: 1px solid var(--farbe-linie-leise);
  border-radius: var(--radius);
  overflow: hidden;
  background: var(--farbe-grund);
  box-shadow: var(--schatten-karte);
}
.erfassen-karte-aktionen {
  flex-shrink: 0;
}
.erfassen-eintrag-neu {
  animation: erfassen-eintrag-neu 2.2s ease-out;
}
@keyframes erfassen-eintrag-neu {
  0% { background: var(--farbe-akzent-leise); }
  35% { background: var(--farbe-akzent-leise); }
  100% { background: transparent; }
}

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

@media (min-width: 641px) {
  .ranglisten-kopf,
  .ranglisten-kopf-gruppe {
    flex-wrap: nowrap;
  }
}

@media (max-width: 640px) {
  .inhalt { padding: var(--abstand-6) var(--abstand-4) var(--abstand-7); }
  .kopf-inhalt { padding: var(--abstand-3) var(--abstand-4); gap: var(--abstand-2) var(--abstand-3); }
  .nav-haupt { order: 3; width: 100%; }
  .nav-rechts { margin-left: auto; }
  h1 { font-size: 1.375rem; }
  thead th, tbody td { padding: var(--abstand-2) var(--abstand-3); }
  .ranglisten-kopf {
    flex-wrap: wrap;
    gap: var(--abstand-2);
  }
  .ranglisten-kopf-gruppe {
    flex: 1 1 calc(100% - 2.75rem);
    flex-wrap: wrap;
    gap: var(--abstand-2);
    min-width: 0;
  }
  .ranglisten-kopf-aktionen {
    order: -1;
    margin-left: auto;
  }
  .ranglisten-kopf .ranglisten-pills {
    flex: 1 1 auto;
    min-width: 0;
  }
  .ranglisten-kopf .ranglisten-modus,
  .ranglisten-kopf .ranglisten-nav,
  .ranglisten-kopf .nav-pills {
    display: inline-flex;
    flex: 1 1 auto;
  }
  .ranglisten-kopf .ranglisten-modus a,
  .ranglisten-kopf .ranglisten-nav a,
  .ranglisten-kopf .nav-pills a {
    flex: 1;
    min-width: 0;
  }
  .ranglisten-kopf .spieltag-leiste {
    flex: 1 1 100%;
    width: 100%;
  }
  .ranglisten-steuerung .ranglisten-leiste {
    width: 100%;
  }
  .ranglisten-steuerung .ranglisten-pills {
    flex: 1 1 auto;
    min-width: 0;
  }
  .ranglisten-steuerung .ranglisten-modus,
  .ranglisten-steuerung .ranglisten-nav,
  .ranglisten-steuerung .nav-pills {
    display: inline-flex;
    flex: 1 1 auto;
  }
  .ranglisten-steuerung .ranglisten-modus a,
  .ranglisten-steuerung .ranglisten-nav a,
  .ranglisten-steuerung .nav-pills a {
    flex: 1;
    min-width: 0;
  }
  .nav-pills.klassen-nav,
  .klassen-nav {
    display: flex;
    max-width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    /* Ausblenden am rechten Rand als Hinweis, dass weitere Tabs folgen */
    -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 1.75rem), transparent);
    mask-image: linear-gradient(90deg, #000 calc(100% - 1.75rem), transparent);
  }
  .nav-pills.klassen-nav::-webkit-scrollbar,
  .klassen-nav::-webkit-scrollbar { display: none; }
  .seiten-kopf--spieltag {
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--abstand-3);
  }
  .spieltag-bereich {
    flex: 1 1 12rem;
    min-width: 0;
    width: auto;
  }
  .spieltag-leiste { width: 100%; }
  .spieltag-datum .ts-control { font-size: var(--text-sm) !important; }
  .teilen-menu { align-self: center; flex-shrink: 0; }
  .rangliste-responsiv .rangliste-tabelle { display: none; }
  .rangliste-responsiv .rangliste-karten { display: block; }
  .karten-raster { grid-template-columns: 1fr; }
}
