.table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }

/* ── Standardtabelle mit Umbruch (Build 193) ──────────────────────────────
   Die Vorlage für jede Tabelle, deren Zellen längeren Text tragen können.
   Voraussetzung: eine <colgroup> gibt die Spaltenbreiten vor.

   Warum fest statt automatisch: bei table-layout:auto bestimmt der längste
   Inhalt die Spaltenbreite. Eine einzige lange Bemerkung zieht die Spalte
   dann quer über den Bildschirm — und begrenzt man sie, ragt der Inhalt
   stattdessen heraus. Mit festem Layout gilt allein die colgroup, und der
   Text bricht darin um.

   Die Tabelle steht bewusst nicht auf width:100%: sie gehört in einen
   .table-wrap und darf so breit werden, wie ihre Spalten es verlangen. */
.app-table {
  table-layout: fixed;
  /* separate statt collapse: nur so lassen sich einzelne Zeilen mit runden
     Ecken hervorheben (.app-row-highlight). Ohne Abstand sieht es aus wie
     collapse, nur dass Ränder nicht zusammengelegt werden. */
  border-collapse: separate;
  border-spacing: 0;
}
.app-table th,
.app-table td {
  white-space: normal;
  overflow-wrap: anywhere;
  vertical-align: top;
}
table { width: 100%; border-collapse: collapse; font-size: 0.9rem; }
thead th {
  background: var(--color-primary);
  color: #fff;
  padding: 10px 12px;
  text-align: left;
  font-weight: 600;
  white-space: nowrap;
}
tbody tr { border-bottom: 1px solid var(--color-border); }
tbody tr:last-child { border-bottom: none; }
tbody tr:hover { background: rgba(45,90,39,0.04); }
tbody td { padding: 10px 12px; vertical-align: top; }
.table-actions { display: flex; gap: 6px; }
.table-actions button { padding: 5px 10px; font-size: 0.82rem; }
.empty-state {
  text-align: center;
  padding: 40px 16px;
  color: var(--color-text-muted);
  font-size: 0.95rem;
}

/* ── Marker list ──────────────────────────────────────── */
.mt-toolbar {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  flex-wrap: wrap;
}
.mk-wrap {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  max-width: 100%;
}
.mk-table {
  width: 100%;
  min-width: 400px;
  border-collapse: collapse;
  font-size: 0.83rem;
  table-layout: fixed;
}
.mk-th {
  background: var(--color-primary);
  color: #fff;
  padding: 5px 7px;
  text-align: left;
  font-weight: 600;
  white-space: nowrap;
  user-select: none;
}
.mk-th-act { text-align: center; }
.mk-sortable { cursor: pointer; }
.mk-sortable::after {
  content: ' ↕';
  opacity: 0.4;
  font-size: 0.7em;
}
.mk-sortable[data-dir="asc"]::after  { content: ' ↑'; opacity: 1; }
.mk-sortable[data-dir="desc"]::after { content: ' ↓'; opacity: 1; }
.mk-filter-row td {
  padding: 3px 5px;
  background: var(--color-surface, #eff3ee);
  border-bottom: 2px solid var(--color-border);
}
.mk-fi {
  width: 100%;
  box-sizing: border-box;
  padding: 2px 5px;
  font-size: 0.77rem;
  border: 1px solid var(--color-border);
  border-radius: 3px;
  background: #fff;
  color: var(--color-text);
}
.mk-row { border-bottom: 1px solid rgba(255,255,255,0.07); }
.mk-row:last-child { border-bottom: none; }
.mk-row:hover { background: rgba(255,255,255,0.04); }
.mk-td {
  padding: 4px 6px;
  vertical-align: middle;
  overflow: hidden;
}
.mk-name {
  display: block;
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.mk-desc {
  display: block;
  font-size: 0.72rem;
  color: var(--color-text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  margin-top: 1px;
}
.mk-td-status {
  font-size: 0.77rem;
  color: var(--color-text-muted);
  white-space: nowrap;
}
.mk-td-desc {
  font-size: 0.77rem;
  color: var(--color-text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.mk-td-work {
  font-size: 0.77rem;
  text-align: center;
  white-space: nowrap;
}
.mk-td-coords {
  font-size: 0.72rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  color: var(--color-text-muted);
  cursor: default;
}
.mk-td-act {
  padding: 3px 4px;
  text-align: center;
  white-space: nowrap;
}
.mk-badge {
  display: inline-block;
  padding: 1px 6px;
  border-radius: 999px;
  font-size: 0.71rem;
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
  box-sizing: border-box;
  vertical-align: middle;
}
.mk-work {
  color: #b87800;
  font-size: 0.8em;
}
.mk-icon-btn, .mk-del-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  padding: 0;
  background: none;
  border: 1px solid transparent;
  border-radius: 5px;
  cursor: pointer;
  color: var(--color-text-muted);
  vertical-align: middle;
  transition: background 0.12s, border-color 0.12s, color 0.12s;
}
.mk-icon-btn:hover {
  background: rgba(45,90,39,0.1);
  border-color: rgba(45,90,39,0.2);
  color: var(--color-primary);
}
.mk-del-btn:hover {
  background: rgba(200,0,0,0.07);
  border-color: rgba(200,0,0,0.2);
  color: #b00;
}
.mk-empty {
  text-align: center;
  padding: 24px;
  color: var(--color-text-muted);
  font-size: 0.9rem;
}
.mk-lock-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  opacity: 0.3;
  color: var(--color-text-muted);
  vertical-align: middle;
}

/* ── Benutzerverwaltung Tabelle (Build 87) ────────────────── */
.bv-filter-bar {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  margin-bottom: 10px;
}
.bv-filter-btn {
  font-size: 0.8rem;
  padding: 4px 12px;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  background: var(--color-surface2);
  color: var(--color-text-muted);
  cursor: pointer;
  transition: background 0.12s, color 0.12s, border-color 0.12s;
}
.bv-filter-btn:hover  { background: rgba(74,138,66,0.1); color: var(--color-text); }
.bv-filter-btn.active { background: var(--color-primary); color: #fff; border-color: var(--color-primary); }

.bv-wrap  { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.bv-table {
  min-width: 920px;
  border-collapse: collapse;
  font-size: 0.81rem;
  width: 100%;
}

/* Spaltenköpfe */
.bv-th {
  background: var(--color-primary);
  color: #fff;
  padding: 6px 8px;
  text-align: left;
  font-weight: 600;
  white-space: nowrap;
  user-select: none;
}
.bv-th-perm {
  /* Vertikaler Text — spart horizontale Breite bei 9 Perm-Spalten */
  writing-mode: vertical-rl;
  transform: rotate(180deg);
  text-align: left;
  white-space: nowrap;
  padding: 8px 5px;
  min-height: 80px;
  font-size: 0.72rem;
  font-weight: 500;
  cursor: default;
}
.bv-th-admin {
  writing-mode: vertical-rl;
  transform: rotate(180deg);
  text-align: left;
  white-space: nowrap;
  padding: 8px 5px;
  min-height: 60px;
  font-size: 0.76rem;
  cursor: default;
}
.bv-th-actions { text-align: center; min-width: 90px; }
.bv-th-status  { min-width: 100px; }
.bv-th-name    { min-width: 130px; }
.bv-th-email   { min-width: 150px; }

/* Zeilen */
.bv-row { border-bottom: 1px solid var(--color-border); transition: background 0.1s; }
.bv-row:last-child { border-bottom: none; }
.bv-row:hover { background: rgba(255,255,255,0.025); }
.bv-row-dirty { box-shadow: inset 3px 0 0 var(--color-accent); }
.bv-row-pending      { background: rgba(196,162,58,0.05); }
.bv-row-rejected     { opacity: 0.58; }
.bv-row-deactivated  { opacity: 0.45; background: rgba(80,80,80,0.06); }

/* Zellen */
.bv-td {
  padding: 5px 7px;
  vertical-align: middle;
  color: var(--color-text);
}
.bv-td-perm   { text-align: center; width: 34px; padding: 4px 2px; }
.bv-td-status { white-space: nowrap; }
.bv-td-actions { text-align: center; white-space: nowrap; min-width: 90px; }

/* Eingabefeld Name */
.bv-name-inp {
  font-size: 0.81rem;
  padding: 3px 6px;
  border-radius: 4px;
  min-width: 95px;
  width: 100%;
  box-sizing: border-box;
  background: var(--color-surface2);
  border: 1px solid var(--color-border);
  color: var(--color-text);
}
.bv-name-inp:focus { outline: 2px solid var(--color-primary); border-color: transparent; }

/* Checkboxen */
.bv-perm-chk-elem, .bv-perm-chk {
  accent-color: var(--color-primary);
  width: 15px;
  height: 15px;
  display: block;
  margin: 0 auto;
}
.bv-admin-chk { accent-color: var(--color-accent); }

/* Speichern-Button */
.bv-save-btn {
  font-size: 0.78rem;
  padding: 3px 10px;
  white-space: nowrap;
}
.bv-save-btn:disabled { opacity: 0.35; cursor: default; }

/* Schnell-Aktionsbuttons (Freigeben/Ablehnen) */
.bv-quick-btn {
  font-size: 0.73rem;
  padding: 2px 8px;
  border-radius: 3px;
  line-height: 1.4;
}

/* ── Diagnoseseite (Build 90) ─────────────────────────────────────────────── */
.diag-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 10px 14px;
}
.diag-row {
  display: flex;
  align-items: baseline;
  gap: 6px;
  font-size: 0.88rem;
  line-height: 1.5;
}
.diag-row code {
  font-family: monospace;
  font-size: 0.85rem;
  color: var(--color-text);
}
.diag-ok      { opacity: 1; }
.diag-warn    { color: var(--color-accent); }
.diag-missing { color: var(--color-danger); }
.diag-error   { color: var(--color-danger); }

/* ── Audit-Log-Tabelle (Build 110) ───────────────────────── */
.audit-tbl {
  min-width: 620px;
  font-size: 0.82rem;
}
.audit-tbl-details {
  max-width: 240px;
  word-break: break-word;
  font-size: 0.80rem;
  line-height: 1.5;
}
.audit-tbl-id {
  font-size: 0.72rem;
  color: var(--color-text-muted);
  font-family: monospace;
}

/* ── Abschuss-Tabelle (Build 108 / TODO-042+043) ──────────── */
.abschuss-tbl {
  min-width: 780px;
  font-size: 0.82rem;
}
.abschuss-tbl-bem {
  max-width: 140px;
  word-break: break-word;
  font-size: 0.80rem;
  color: var(--color-text-muted);
}
/* Eigene Zeile: roter Linksrand + dezenter Hintergrund */
tbody tr.abschuss-row-own td:first-child {
  border-left: 4px solid var(--color-danger);
  padding-left: 8px;
}
tbody tr.abschuss-row-own {
  background: rgba(var(--color-danger-rgb), 0.04);
}
tbody tr.abschuss-row-own:hover {
  background: rgba(var(--color-danger-rgb), 0.08);
}

/* ── Jagdstatistik-Tabelle (Build 149/150/164) ────────────── */
/* Die Tabellen sitzen in .app-card (components.css) wie die Karten im
   Jagdkalender. Der globale Tabellenkopf mit vollflächigem Jagdgrün wäre
   darin zu dominant — hier deshalb zurückgenommen auf eine gedämpfte
   Beschriftung mit Trennlinie. */
.jst-tbl thead th {
  background: transparent;
  color: var(--color-text-muted);
  font-weight: 600;
  border-bottom: 1px solid var(--color-border);
}
/* Karte: etwas mehr Luft zwischen den Auswertungen als der 8px-Standard */
.jst-card { margin-bottom: 14px; }
.jst-card .app-card-body { padding: 0 10px 4px; }
.jst-leer {
  color: var(--color-text-muted);
  font-size: 0.85rem;
  padding: 10px 2px;
  margin: 0;
}

/* Kein min-width: die Tabelle soll auch auf schmalen Displays passen.
   Revier/Soll/Ist schrumpfen auf Inhaltsbreite (width:1%), die
   Fortschritts-Spalte bekommt den gesamten Rest (width:100%). */
.jst-tbl {
  width: 100%;
  font-size: 0.85rem;
  table-layout: auto;
}
.jst-tbl thead th {
  padding: 7px 6px;
  font-size: 0.78rem;
}
.jst-tbl tbody td,
.jst-tbl tfoot td {
  padding: 3px 6px;
  vertical-align: middle;
}
.jst-tbl th:first-child,
.jst-tbl td:first-child {
  width: 1%;
  white-space: nowrap;
  padding-left: 10px;
}
.jst-tbl .jst-num {
  text-align: right;
  white-space: nowrap;
  width: 1%;
}
.jst-tbl thead th.jst-num { text-align: right; }

/* Balkenspalte: nimmt den verbleibenden Platz, Balken randlos bündig */
.jst-tbl th.jst-bar-cell,
.jst-tbl td.jst-bar-cell { width: 100%; }
.jst-tbl td.jst-bar-cell { padding: 0 0 0 8px; }
.jst-tbl th.jst-bar-cell { padding: 7px 6px 7px 8px; }

/* Zeilentrenner nur unter den Textspalten — die Balken bilden dadurch
   eine durchgehende Säule ohne Abstände (Build 150). */
.jst-tbl tbody tr { border-bottom: none; }
.jst-tbl tbody td:not(.jst-bar-cell) { border-bottom: 1px solid var(--color-border); }

/* Soll-Eingabe: kompakt, rechtsbündig, ohne Wählpfeile */
.jst-soll-input {
  width: 42px;
  padding: 3px 5px;
  font-size: 0.85rem;
  text-align: right;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  background: var(--color-surface);
  color: var(--color-text);
  -moz-appearance: textfield;
  appearance: textfield;
}
.jst-soll-input::-webkit-outer-spin-button,
.jst-soll-input::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}
.jst-soll-input:focus {
  outline: none;
  border-color: var(--color-primary-light);
}
.jst-soll-input:disabled { opacity: 0.5; }

/* Fallwild-Anteil im Ist-Wert */
.jst-fallwild {
  font-size: 0.74rem;
  color: var(--color-text-muted);
}

/* Total-Zeile */
.jst-tbl tfoot tr.jst-total td {
  font-weight: 700;
  border-top: 2px solid var(--color-border);
  background: rgba(255, 255, 255, 0.04);
}

/* Sammelzeile für Meldungen ohne Revier */
.jst-tbl tbody tr.jst-row-unassigned td { color: var(--color-text-muted); font-style: italic; }

/* ── Fortschrittsbalken (Build 151) ───────────────────────── */
/* Alle Zeilen teilen sich eine Skala: der Total-Wert füllt die volle
   Breite, die Reviere bleiben proportional kürzer.
   Zwei Ebenen übereinander:
     Spur    — blassgrün über die Soll-Länge, blassrot darüber hinaus
     Füllung — kräftig grün bis zum Soll, danach kräftig rot
   Volle Zeilenhöhe, keine Rundung: die Balken sitzen nahtlos aufeinander. */
.jst-bar {
  position: relative;
  height: 30px;
  background: rgba(0, 0, 0, 0.22);
}
.jst-bar-track,
.jst-bar-fill {
  position: absolute;
  inset: 0;
  display: flex;
}
/* Spur — der Plan */
.jst-track-soll { background: rgba(var(--color-success-rgb), 0.22); }
.jst-track-over { flex: 1; background: rgba(var(--color-danger-rgb), 0.16); }
/* Füllung — das Ist */
.jst-fill-soll { background: var(--color-success); }
.jst-fill-over { background: var(--color-danger); }
.jst-track-soll,
.jst-fill-soll,
.jst-fill-over { transition: width 0.25s ease; }

/* ── Balken aus Revier-Segmenten (Build 157) ──────────────── */
/* Verwendet in der Jäger-Auswertung: ein Balken je Jäger, farblich nach
   Revier aufgeteilt. Die Farben sind qualitativ unterscheidbar und auf
   dem dunklen Untergrund ausreichend hell. */
.jst-stack {
  display: flex;
  height: 30px;
  background: rgba(0, 0, 0, 0.22);
}
.jst-seg { height: 100%; transition: width 0.25s ease; }

.jst-rev-0 { background: #4caf50; }  /* Bellikon     — grün    */
.jst-rev-1 { background: #4a9fd8; }  /* Bergdietikon — blau    */
.jst-rev-2 { background: #e0912a; }  /* Killwangen   — orange  */
.jst-rev-3 { background: #b07cd8; }  /* Remetschwil  — violett */
.jst-rev-4 { background: #d9534f; }  /* Spreitenbach — rot     */
.jst-rev-x { background: #7a9e7d; }  /* ohne Zuordnung         */

/* ── Altersklassen-Tabelle (Build 162/163) ────────────────── */
/* Zwei Geschlechtergruppen nebeneinander, je Soll · Ist · Balken.
   table-layout: fixed mit colgroup: die vier Zahlenspalten und die
   Klassenspalte bekommen feste Breiten, die beiden Balkenspalten teilen
   sich den Rest zu exakt gleichen Teilen. Mit automatischem Layout
   verteilte der Browser den Platz ungleich zugunsten der ersten Gruppe. */
.jst-tbl-alter {
  table-layout: fixed;
  min-width: 470px;
}
.jst-tbl-alter col.jst-c-klasse { width: 100px; }
.jst-tbl-alter col.jst-c-soll   { width: 58px; }
.jst-tbl-alter col.jst-c-ist    { width: 40px; }
/* Die allgemeine 100%-Regel für Balkenzellen hier aushebeln —
   die Breite kommt aus der colgroup. */
.jst-tbl.jst-tbl-alter th.jst-bar-cell,
.jst-tbl.jst-tbl-alter td.jst-bar-cell { width: auto; min-width: 0; }
/* Trennlinie vor jeder Geschlechtergruppe */
.jst-tbl-alter .jst-grp-start { border-left: 1px solid var(--color-border); }
.jst-tbl-alter .jst-grp-head {
  text-align: center;
  font-size: 0.78rem;
}
/* Kopfzeile der Untergruppe etwas ruhiger */
.jst-tbl-alter thead tr:nth-child(2) th {
  font-weight: 500;
  font-size: 0.74rem;
}

/* ── Wildarten-Matrix (Build 160) ─────────────────────────── */
/* Reviere als schmale Zahlenspalten; die Wildart-Spalte nimmt den Rest. */
.jst-tbl-arten th:first-child,
.jst-tbl-arten td:first-child { width: auto; }
.jst-tbl-arten .jst-num { padding-left: 4px; padding-right: 8px; }
/* Nullwerte zurücknehmen, damit die belegten Zellen auffallen */
.jst-null { color: var(--color-text-muted); opacity: 0.5; }
/* Total-Spalte abgesetzt */
.jst-tbl-arten .jst-total-col {
  font-weight: 700;
  border-left: 1px solid var(--color-border);
}

/* ── Jagdkalender-Bearbeitung (Build 168/169) ─────────────── */
/* Tabelle mit direkt editierbaren Feldern — nur für Admins sichtbar.
   table-layout: fixed mit colgroup: sonst reisst das breiteste Eingabefeld
   die Spalte auf und drängt die übrigen Felder aus der Zelle. */
.jzk-tbl {
  table-layout: fixed;
  min-width: 640px;
  font-size: 0.85rem;
}
.jzk-tbl col.jzk-c-name { width: 165px; }
.jzk-tbl col.jzk-c-per  { width: 210px; }
.jzk-tbl col.jzk-c-act  { width: 44px;  }

.jzk-tbl thead th { padding: 7px 8px; font-size: 0.78rem; }
.jzk-tbl tbody td { padding: 7px 8px; vertical-align: top; }

.jzk-tbl input[type="text"],
.jzk-tbl textarea {
  width: 100%;
  padding: 4px 6px;
  font-size: 0.84rem;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  background: var(--color-surface);
  color: var(--color-text);
  box-sizing: border-box;
}
.jzk-tbl textarea { resize: vertical; font-family: inherit; min-height: 46px; }
.jzk-tbl input:focus,
.jzk-tbl textarea:focus { outline: none; border-color: var(--color-primary-light); }

/* Periodenzeile: von – bis – entfernen.
   Die Breitenangabe muss die 100%-Regel oben überstimmen, daher .jzk-tbl davor. */
.jzk-periode {
  display: flex;
  align-items: center;
  gap: 5px;
  margin-bottom: 5px;
}
.jzk-tbl .jzk-periode input[type="text"] {
  width: 74px;
  flex: 0 0 74px;
  text-align: center;
  font-variant-numeric: tabular-nums;
}
.jzk-dash { color: var(--color-text-muted); flex-shrink: 0; }

.jzk-per-del,
.jzk-per-add,
.jzk-del {
  background: transparent;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  color: var(--color-text-muted);
  cursor: pointer;
  padding: 2px 6px;
  font-size: 0.75rem;
  line-height: 1.4;
  flex-shrink: 0;
}
.jzk-per-del:hover, .jzk-del:hover { color: var(--color-danger); border-color: var(--color-danger); }
.jzk-per-add:hover { color: var(--color-primary); border-color: var(--color-primary); }
.jzk-per-add { margin-top: 4px; }

/* Abgeleiteter Anzeigetext — zeigt, was in der Kartenansicht erscheint */
.jzk-hint {
  font-size: 0.73rem;
  color: var(--color-text-muted);
  font-variant-numeric: tabular-nums;
}
.jzk-note { font-size: 0.78rem; color: var(--color-text-muted); margin-top: 10px; line-height: 1.5; }

/* ── Kontakte (Build 172) ─────────────────────────────────── */
.kt-suche {
  width: 100%;
  box-sizing: border-box;
  padding: 7px 10px;
  margin-bottom: 12px;
  font-size: 0.88rem;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  color: var(--color-text);
}
.kt-suche:focus { outline: none; border-color: var(--color-primary-light); }

/* Gruppenkopf: .app-section-head + .section-label + .app-section-count.
   .kt-gruppe/.kt-anzahl waren eine dritte Nachbildung davon (Build 201). */

.kt-card { margin-bottom: 8px; }
/* Eigener Eintrag: blauer Linksrand, analog zur eigenen Zeile im Abschussmodul */
.kt-card-own { border-left: 3px solid var(--color-primary-light); }
.kt-name { font-weight: 600; font-size: 0.92rem; }
.kt-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 5px;
  margin-top: 4px;
  font-size: 0.76rem;
  color: var(--color-text-muted);
}

/* Kontaktzeilen: Label links, Wert rechts — auf schmalen Displays untereinander */
.kt-row {
  display: flex;
  gap: 8px;
  padding: 4px 0;
  font-size: 0.85rem;
  border-bottom: 1px solid rgba(255,255,255,0.04);
}
.kt-row:last-child { border-bottom: none; }
.kt-row-lbl { color: var(--color-text-muted); flex: 0 0 108px; }
.kt-link { color: var(--color-primary-light); text-decoration: none; }
.kt-link:hover { text-decoration: underline; }
.kt-zusatz { color: var(--color-text-muted); font-size: 0.78rem; }
.kt-vakant { color: var(--color-warning); font-style: italic; }
.kt-leer   { font-size: 0.82rem; color: var(--color-text-muted); padding: 6px 0; }
.kt-hint   { font-size: 0.78rem; color: var(--color-text-muted); margin-top: 10px; line-height: 1.5; }

.kt-self-btn {
  margin-top: 8px;
  padding: 4px 10px;
  font-size: 0.8rem;
  background: transparent;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  color: var(--color-text-muted);
  cursor: pointer;
}
.kt-self-btn:hover { color: var(--color-primary-light); border-color: var(--color-primary-light); }

/* Selbstpflege-Formular */
.kt-feld { margin-bottom: 8px; }
.kt-feld label {
  display: block;
  font-size: 0.76rem;
  color: var(--color-text-muted);
  margin-bottom: 2px;
}
.kt-feld input {
  width: 100%;
  box-sizing: border-box;
  padding: 5px 7px;
  font-size: 0.85rem;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  background: var(--color-surface);
  color: var(--color-text);
}
.kt-feld input:focus { outline: none; border-color: var(--color-primary-light); }
.kt-selbst-actions { display: flex; gap: 8px; margin-top: 10px; }

/* Admin-Tabelle */
.kt-tbl { table-layout: fixed; min-width: 880px; font-size: 0.83rem; }
.kt-tbl col.kt-c-name   { width: 130px; }
.kt-tbl col.kt-c-typ    { width: 120px; }
.kt-tbl col.kt-c-gebiet { width: 150px; }
.kt-tbl col.kt-c-chk    { width: 62px;  }
.kt-tbl col.kt-c-act    { width: 44px;  }
.kt-tbl thead th { padding: 7px 6px; font-size: 0.76rem; }
.kt-tbl tbody td { padding: 5px 6px; vertical-align: top; }
.kt-tbl .kt-num  { text-align: center; }
.kt-tbl input[type="text"],
.kt-tbl select {
  width: 100%;
  box-sizing: border-box;
  padding: 3px 5px;
  font-size: 0.82rem;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  background: var(--color-surface);
  color: var(--color-text);
}
.kt-tbl input:focus, .kt-tbl select:focus { outline: none; border-color: var(--color-primary-light); }
.kt-offen { color: var(--color-text-muted); font-size: 0.78rem; font-style: italic; }

.kt-amt-tag {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  margin: 0 3px 3px 0;
  padding: 1px 5px;
  border-radius: 3px;
  background: rgba(196,162,58,0.16);
  color: var(--color-accent);
  font-size: 0.74rem;
  white-space: nowrap;
}
.kt-amt-del, .kt-amt-add, .kt-del {
  background: transparent;
  border: 1px solid transparent;
  color: inherit;
  cursor: pointer;
  padding: 0 3px;
  font-size: 0.72rem;
  line-height: 1.3;
}
.kt-amt-add {
  border-color: var(--color-border);
  border-radius: 4px;
  color: var(--color-text-muted);
  padding: 2px 6px;
}
.kt-amt-add:hover { color: var(--color-primary); border-color: var(--color-primary); }
.kt-amt-del:hover, .kt-del:hover { color: var(--color-danger); }
.kt-tbl col.kt-c-konto { width: 165px; }
.kt-tbl .kt-konto {
  width: 100%;
  box-sizing: border-box;
  padding: 3px 5px;
  font-size: 0.8rem;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  background: var(--color-surface);
  color: var(--color-text);
  cursor: pointer;
}
.kt-tbl .kt-konto:focus { outline: none; border-color: var(--color-primary-light); }
