/* DPHDMS — Baseline-CSS.
 * Ziel: schlank, ruhig, Tastatur-freundlich, AA-Kontrast.
 * Kein Framework. Memory project-llm-freundlich: direkt lesbar.
 * Memory project-fluessige-ux: keine Animationen, die UX blockieren.
 */

:root {
  --bg: #fafaf8;
  --fg: #1a1a1a;
  --muted: #555;
  --border: #d4d4d0;
  --accent: #0b4f6c;     /* AA-Kontrast gegen --bg */
  --accent-soft: #e6eff3;
  --warn: #b04a00;
  --mark-bg: #fff3a8;
  --shadow: 0 1px 2px rgba(0, 0, 0, 0.06);
  --radius: 6px;
  --space: 1rem;
}

/* Profil-Farbschemata (Nutzer-Wahl im Profil). Überschreiben NUR die
   Akzentfarbe — Hintergrund/Text/Border bleiben, damit der AA-Kontrast (BITV)
   gewahrt ist. Gesetzt via data-farbschema am <html> (base.html, aus
   user.farbschema). „standard" = :root oben (Petrol). Alle Akzente sind dunkel
   genug für AA gegen den hellen Grund UND für weiße Schrift auf Akzent-Buttons. */
:root[data-farbschema="waldgruen"] {
  --accent: #1f6b3a;
  --accent-soft: #e4f0e8;
}
:root[data-farbschema="bordeaux"] {
  --accent: #8a2333;
  --accent-soft: #f4e8ea;
}
:root[data-farbschema="anthrazit"] {
  --accent: #37424d;
  --accent-soft: #e9ecef;
}

* { box-sizing: border-box; }

html, body {
  margin: 0;
  padding: 0;
  background: var(--bg);
  color: var(--fg);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI",
               "Liberation Sans", sans-serif;
  font-size: 16px;
  line-height: 1.5;
}

/* Tastatur-Fokus deutlich sichtbar — Memory project-barrierefreiheit. */
:focus-visible {
  outline: 3px solid var(--accent);
  outline-offset: 2px;
  border-radius: 4px;
}

a {
  color: var(--accent);
  text-decoration: underline;
  text-underline-offset: 2px;
}

a:hover { text-decoration: none; }

.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;
}

/* Skip-Link (BITV-Baseline): sichtbar nur bei Tastatur-Fokus,
 * springt direkt in den Hauptbereich. */
.skip-link {
  position: absolute;
  top: -3rem;
  left: 0.5rem;
  background: var(--accent);
  color: white;
  padding: 0.5rem 1rem;
  border-radius: 0 0 var(--radius) var(--radius);
  z-index: 100;
  transition: top 0.15s;
}

.skip-link:focus { top: 0; outline: 3px solid white; }

/* ── Top-Navigation ─────────────────────────────────────────── */
.topnav {
  display: flex;
  align-items: center;
  gap: var(--space);
  padding: 0.6rem var(--space);
  background: white;
  border-bottom: 1px solid var(--border);
  box-shadow: var(--shadow);
}

/* Kompaktes Kürzel oben links (Nutzer-Wunsch „nur UKS."): nimmt minimal Platz;
   der eigentliche Home-Einstieg ist der „🏠 Start"-Nav-Punkt neben „Mappe". */
.topnav-left .brand {
  text-decoration: none;
  color: var(--fg);
  font-weight: 700;
  font-size: 0.95rem;
  letter-spacing: 0.02em;
}
.topnav-left .brand:hover,
.topnav-left .brand:focus-visible {
  text-decoration: underline;
  text-underline-offset: 0.15em;
}

.topnav-search {
  flex: 0 1 24rem;
  display: flex;
  gap: 0.25rem;
}

@media (max-width: 72rem) {
  /* Bei schmaleren Viewports zwei Zeilen, damit die Chips
     nicht in das Such-Feld umbrechen. */
  .topnav { flex-wrap: wrap; }
  .topnav-search { flex-basis: 100%; order: 1; }
  .topnav-zeitraum { order: 2; }
  .topnav-right { order: 0; margin-left: auto; }
}

/* T14: kleines Label vor den Chips macht die Verb-Funktion klar
   ("im Zeitraum suchen" statt "abstrakter Filter"). */
.topnav-zeitraum-label {
  font-size: 0.85rem;
  color: var(--muted);
  margin-right: 0.15rem;
}
@media (max-width: 600px) {
  .topnav-zeitraum-label { display: none; }
}

.topnav-search-input {
  position: relative;
  flex: 1;
  display: flex;
}
.topnav-search input[type="search"] {
  flex: 1;
  padding: 0.4rem 0.6rem;
  padding-right: 2rem;
  font-size: 1rem;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: white;
  color: var(--fg);
}
/* T13-6: Reset-Kreuz */
.topnav-search-clear {
  position: absolute;
  right: 0.4rem;
  top: 50%;
  transform: translateY(-50%);
  background: transparent;
  border: 0;
  color: var(--muted);
  text-decoration: none;
  font-size: 1.2rem;
  line-height: 1;
  padding: 0.05rem 0.35rem;
  border-radius: 999px;
  cursor: pointer;
}
.topnav-search-clear:hover {
  background: var(--accent-soft);
  color: var(--accent);
  text-decoration: none;
}
.topnav-achse {
  display: inline-flex;
  gap: 0.15rem;
  font-size: 0.8rem;
  margin-left: 0.4rem;
  padding-left: 0.4rem;
  border-left: 1px solid var(--border);
}

.topnav-search button {
  border: 1px solid var(--border);
  background: var(--accent-soft);
  color: var(--accent);
  padding: 0.4rem 0.6rem;
  border-radius: var(--radius);
  cursor: pointer;
}

.topnav-right {
  color: var(--muted);
  font-size: 0.9rem;
  display: flex;
  align-items: center;
  gap: 0.75rem;
}

.admin-link {
  text-decoration: none;
  font-size: 1.15rem;
  color: var(--muted);
  padding: 0.15rem 0.4rem;
  border-radius: var(--radius);
}
.admin-link:hover { color: var(--accent); background: var(--accent-soft); }

/* Logout-Button rechts in der Top-Nav (T17+) */
.topnav-logout { margin: 0; padding: 0; display: inline-block; }
.topnav-logout-button {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  background: var(--bg);
  border: 1px solid var(--border);
  color: var(--muted);
  font-size: 0.85rem;
  font-family: inherit;
  cursor: pointer;
  padding: 0.25rem 0.6rem;
  border-radius: var(--radius);
}
.topnav-logout-button:hover {
  color: var(--accent);
  background: var(--accent-soft);
  border-color: var(--accent-soft);
}
.topnav-logout-text { font-size: 0.85rem; }

/* ── Admin-Übersicht ────────────────────────────────────────── */
.admin h1 { margin: 0 0 0.5rem; }
.admin-intro { color: var(--muted); margin-bottom: 1.5rem; }

/* Mandanten-Kürzel-Form auf der Admin-Übersicht (Kopf-Label, z.B. „UKS."). */
.admin-mandant {
  margin: 0 0 1.5rem;
  padding: 0.85rem 1rem;
  background: var(--accent-soft);
  border: 1px solid var(--border);
  border-radius: var(--radius);
}
.admin-mandant h2 { font-size: 1.05rem; margin: 0 0 0.5rem; }
.admin-mandant-form {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
}
.admin-mandant-form input {
  width: 8rem;
  padding: 0.3rem 0.5rem;
  border: 1px solid var(--border);
  border-radius: var(--radius);
}
.admin-mandant-form .admin-hinweis { flex-basis: 100%; margin: 0; }

.admin-kacheln {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
  gap: 1rem;
}

.admin-kachel {
  background: white;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 1rem 1.25rem;
  box-shadow: var(--shadow);
}

.admin-kachel h2 { font-size: 1.05rem; margin: 0 0 0.5rem; }
.admin-kachel h2 a { text-decoration: none; color: var(--accent); }
.admin-kachel h2 a:hover { text-decoration: underline; }

.admin-zahl {
  font-size: 1.75rem;
  font-weight: 600;
  margin: 0.2rem 0;
}

.admin-hinweis {
  color: var(--muted);
  font-size: 0.9rem;
  margin: 0;
}

.admin-breadcrumb {
  color: var(--muted);
  font-size: 0.9rem;
  margin: 0 0 0.5rem;
}
.admin-breadcrumb a { color: var(--muted); text-decoration: none; }
.admin-breadcrumb a:hover { color: var(--accent); }

.admin-tabelle {
  width: 100%;
  border-collapse: collapse;
  background: white;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: var(--shadow);
}
.admin-tabelle th, .admin-tabelle td {
  text-align: left;
  padding: 0.5rem 0.75rem;
  border-bottom: 1px solid var(--border);
}
.admin-tabelle th {
  background: var(--accent-soft);
  color: var(--accent);
  font-size: 0.9rem;
}
.admin-tabelle tr:last-child td { border-bottom: none; }
.admin-tabelle code {
  font-family: ui-monospace, monospace;
  background: var(--bg);
  padding: 0.05rem 0.4rem;
  border-radius: 3px;
}

.admin-form {
  background: white;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 1.25rem;
  box-shadow: var(--shadow);
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  max-width: 50rem;
}

.admin-form input[type="text"],
.admin-form textarea,
.admin-form select {
  width: 100%;
  padding: 0.4rem 0.5rem;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  font-size: 0.95rem;
  background: white;
  font-family: inherit;
}

.admin-form input[disabled] { color: var(--muted); background: var(--bg); }

/* E-029.1 (2026-05-30): Verbund-Support-Modus.
   Banner ueber der Top-Nav, klar gelb-getoent, damit der Verbund-
   Admin nie vergisst, in welchem Mandanten er gerade agiert. */
.verbund-support-banner {
  background: #fff8e1;
  border-bottom: 2px solid #f0c14b;
  padding: 0.5rem 1rem;
  color: #5b4500;
  font-size: 0.95rem;
}
.verbund-support-banner strong {
  color: #4a3700;
}
.verbund-support-banner a {
  color: #4a3700;
  margin-left: 0.75rem;
  text-decoration: underline;
}

.verbund-switcher-link {
  margin-left: 0.85rem;
  padding: 0.2rem 0.55rem;
  font-size: 0.9rem;
  color: var(--muted);
  border: 1px dashed var(--border);
  border-radius: var(--radius);
  text-decoration: none;
  white-space: nowrap;
}
.verbund-switcher-link:hover {
  color: var(--text);
  border-style: solid;
  background: var(--bg);
}

/* Mandanten-Switcher-Seite. */
.verbund-switcher .verbund-mandanten-liste {
  list-style: none;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  margin: 1rem 0;
}
.verbund-mandant {
  background: white;
  border: 1px solid var(--border);
  border-radius: var(--radius);
}
.verbund-mandant-aktiv {
  border-color: var(--accent);
  background: #f0f5ff;
}
.verbund-mandant-link {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  padding: 0.65rem 1rem;
  text-decoration: none;
  color: var(--text);
}
.verbund-mandant-link:hover {
  background: var(--bg);
}
.verbund-mandant-name { font-weight: 600; }
.verbund-mandant-slug {
  color: var(--muted);
  font-family: ui-monospace, monospace;
  font-size: 0.9rem;
}
.verbund-mandant-marker {
  color: var(--accent);
  font-size: 1.1rem;
}

/* Phase B.3 (2026-05-30): strukturierte Form-Felder im Aktentyp-
   Editor — Fieldsets gruppieren Themen (Upload-Grenzen, Retention,
   Governance, Module), Inline-Rows fuer kompakte Trigger+Dauer-Paare,
   Radio/Checkbox-Zeilen mit Label-Hinweis daneben. Memory
   ``project_admin_muss_es_lieben``: Form soll Erleichterung sein,
   kein Suchspiel im JSON. */
.admin-form .form-fieldset {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 0.75rem 1rem 1rem;
  margin: 0.25rem 0;
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
}
.admin-form .form-fieldset > legend {
  font-weight: 600;
  font-size: 0.95rem;
  color: var(--text);
  padding: 0 0.4rem;
}
.admin-form .form-row-inline {
  display: flex;
  gap: 1rem;
  flex-wrap: wrap;
  align-items: flex-end;
}
.admin-form .form-row-inline > div {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}
.admin-form .radio-zeile,
.admin-form .checkbox-zeile {
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
  padding: 0.15rem 0;
  cursor: pointer;
}
.admin-form .radio-zeile input,
.admin-form .checkbox-zeile input {
  width: auto;
  margin: 0;
}
.admin-form .form-hinweis-inline {
  color: var(--muted);
  font-size: 0.9rem;
}

.admin-json {
  font-family: ui-monospace, monospace;
  font-size: 0.85rem;
  white-space: pre;
}
.admin-json-err { border-color: var(--warn); background: #fff4ec; }

.admin-json-block {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 0.5rem 0.75rem;
  background: var(--bg);
}
.admin-json-block summary {
  cursor: pointer;
  color: var(--muted);
  font-size: 0.9rem;
}
.admin-json-block[open] summary { color: var(--fg); margin-bottom: 0.5rem; }

.form-hinweis {
  color: var(--muted);
  font-size: 0.85rem;
  margin: 0.25rem 0 0;
}
.form-fehler {
  color: var(--warn);
  font-size: 0.85rem;
  margin: 0.25rem 0 0;
}

.link-secondary { color: var(--muted); text-decoration: none; }
.link-secondary:hover { text-decoration: underline; }

.admin-gruppe { margin-bottom: 1.5rem; }
.admin-gruppe-titel {
  font-size: 1.05rem;
  margin: 0 0 0.5rem;
  display: flex;
  align-items: baseline;
  justify-content: space-between;
}

.td-trunc {
  max-width: 18rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.mitglieder-liste {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 0.5rem 0.75rem;
}

.admin-json-beispiel {
  background: var(--bg);
  font-size: 0.8rem;
  padding: 0.5rem;
  border-radius: var(--radius);
  white-space: pre;
  overflow: auto;
}

/* ── Aktentyp-Tabs (T7-6) ───────────────────────────────────── */
.aktentyp-tabs {
  background: white;
  border-bottom: 1px solid var(--border);
  padding: 0 var(--space);
  display: flex;
  gap: 0.25rem;
  overflow-x: auto;
}

.aktentyp-tabs .tab {
  display: inline-block;
  padding: 0.5rem 0.9rem;
  border-bottom: 2px solid transparent;
  color: var(--muted);
  text-decoration: none;
  font-size: 0.95rem;
  white-space: nowrap;
  margin-bottom: -1px;  /* überlappt mit der Border */
}

.aktentyp-tabs .tab:hover {
  color: var(--fg);
  text-decoration: none;
  border-bottom-color: var(--border);
}

.aktentyp-tabs .tab-aktiv {
  color: var(--accent);
  border-bottom-color: var(--accent);
  font-weight: 600;
}

/* Tab ohne Partnerakte — sichtbar, aber klick-tot. Hinweis via
   ``title``/``aria-label`` im Markup. */
.aktentyp-tabs .tab-leer {
  color: var(--border);
  cursor: not-allowed;
  font-style: italic;
}
.aktentyp-tabs .tab-leer:hover {
  border-bottom-color: transparent;
  color: var(--border);
}

/* ── Zeitraum-Chips (T13-2: inline in Top-Nav) ────────────── */
.topnav-zeitraum {
  display: flex;
  gap: 0.3rem;
  flex-wrap: wrap;
  align-items: center;
}

/* Schmaler Achsen-Umschalter unter der Top-Nav, nur Such-Seite. */
.zeitraum-achse-bar {
  background: white;
  border-bottom: 1px solid var(--border);
  padding: 0.3rem var(--space);
  display: flex;
  gap: 0.4rem;
  align-items: center;
  font-size: 0.85rem;
}

.chip-zeitraum {
  /* T14: Chips sind jetzt ``<button type="submit">`` in der
     Such-Form. ``appearance: none`` schaltet alle Browser-Button-
     Defaults ab (Border-Style, Font, Padding-Berechnung, Focus-
     Ring) — danach kann das Chip-Styling sauber drüber. */
  appearance: none;
  -webkit-appearance: none;
  margin: 0;
  display: inline-block;
  padding: 0.2rem 0.7rem;
  border: 1px solid var(--border);
  border-radius: 999px;
  color: var(--muted);
  background: var(--bg);
  text-decoration: none;
  font-family: inherit;
  font-size: 0.85rem;
  font-weight: normal;
  line-height: 1.4;
  white-space: nowrap;
  cursor: pointer;
}
.chip-zeitraum:hover {
  color: var(--fg);
  background: white;
  text-decoration: none;
}

.chip-zeitraum-aktiv {
  background: var(--accent);
  color: white;
  border-color: var(--accent);
  font-weight: 600;
}
.chip-zeitraum-aktiv:hover { color: white; background: var(--accent); }

.zeitraum-achse {
  display: flex;
  gap: 0.4rem;
  align-items: center;
  font-size: 0.85rem;
  margin-left: auto;
}
.zeitraum-achse-label { color: var(--muted); }
.achse-link {
  padding: 0.15rem 0.6rem;
  border-radius: var(--radius);
  color: var(--muted);
  text-decoration: none;
}
.achse-link:hover { color: var(--accent); text-decoration: none; }
.achse-aktiv {
  background: var(--accent-soft);
  color: var(--accent);
  font-weight: 600;
}

/* ── Hauptbereich ───────────────────────────────────────────── */
.main-content {
  max-width: 64rem;
  margin: 0 auto;
  padding: 1.5rem var(--space);
}

/* ── Startseite ─────────────────────────────────────────────── */
.startseite {
  margin-top: 4rem;
  text-align: center;
}

/* Offene-Rollen-Anträge-Banner (S4): als abgesetzte Accent-Pill über dem
   Suchfeld, mit klarem Abstand — sonst klebt es am großen Suchfeld. */
.antraege-banner {
  display: inline-block;
  margin: 0 auto 2.5rem;
  padding: 0.5rem 1.1rem;
  background: var(--accent-soft);
  border: 1px solid var(--accent);
  border-radius: 999px;
  font-size: 0.95rem;
}
.antraege-banner a {
  font-weight: 600;
  color: var(--accent);
}

/* Onboarding-Anstoß für Erstnutzer (leere „Zuletzt"-Historie): dezenter
   Hinweis + wiederverwendete Zeitraum-Chips (Makro _macros/zeitraum_chips),
   zentriert unter dem Suchfeld. */
.onboarding-tipp {
  max-width: 42rem;
  margin: 0 auto 2.5rem;
  padding: 1rem 1.25rem;
  background: var(--accent-soft);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  text-align: center;
}
.onboarding-tipp-text {
  margin: 0;
  color: var(--fg);
  font-size: 0.95rem;
  line-height: 1.7;
}
/* Onboarding: der einzelne „Letzte 30 Tage"-Chip fließt INLINE direkt hinter
   dem Einladungstext (Nutzer-Wunsch „an den Text, nicht neue Zeile"). */
.onboarding-tipp-text,
.onboarding-zeitraum {
  display: inline;
}
.onboarding-zeitraum {
  margin-left: 0.4rem;
}
.onboarding-zeitraum .chip-zeitraum {
  white-space: nowrap;
  vertical-align: baseline;
}

/* E-033-Ausbau: „Neuer Umlauf"-Einstieg (Umlauf-Korb) + Schritt-2-Hinweis (Cover). */
.profil-neuer-umlauf {
  margin: 0.75rem 0 0;
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}
.umlauf-neu-cta {
  align-self: flex-start;
  padding: 0.3rem 0.8rem;
  border: 1px solid var(--accent);
  border-radius: var(--radius);
  font-weight: 600;
  color: var(--accent);
  text-decoration: none;
}
.umlauf-neu-cta:hover { background: var(--accent); color: #fff; text-decoration: none; }
.neuer-umlauf-hinweis {
  margin: 0 0 0.75rem;
  padding: 0.5rem 0.9rem;
  background: var(--accent-soft);
  border: 1px solid var(--accent);
  border-radius: var(--radius);
  font-size: 0.95rem;
}

/* E-033 Phase 4: „Meine Umläufe"-Hub — Linsen-Tabs + Status-Filter + Übersicht. */
.umlauf-tabs {
  display: flex;
  gap: 0.25rem;
  flex-wrap: wrap;
  border-bottom: 1px solid var(--border);
  margin: 1rem 0 0.5rem;
}
.umlauf-tab {
  padding: 0.4rem 0.9rem;
  color: var(--muted);
  text-decoration: none;
  border-bottom: 2px solid transparent;
}
.umlauf-tab:hover { color: var(--fg); text-decoration: none; }
.umlauf-tab-aktiv { color: var(--accent); font-weight: 600; border-bottom-color: var(--accent); }
.umlauf-statusfilter { display: flex; gap: 0.4rem; margin: 0 0 1rem; }
.chip-status {
  padding: 0.15rem 0.7rem;
  border: 1px solid var(--border);
  border-radius: 999px;
  color: var(--muted);
  font-size: 0.85rem;
  text-decoration: none;
}
.chip-status:hover { color: var(--fg); text-decoration: none; }
.chip-status-aktiv { background: var(--accent); color: #fff; border-color: var(--accent); font-weight: 600; }
.umlauf-uebersicht-zeile .umlauf-korb-fortschritt,
.umlauf-korb-grund,
.umlauf-korb-erledigt-am { color: var(--muted); font-size: 0.85rem; }
.umlauf-korb-woher { color: var(--muted); font-size: 0.85rem; }

/* L1: woher + Abzeichner-Kette (Vertrauenssignal für Vielzeichner) — wer hat
   schon gezeichnet, wer ist dran, „Sie" hervorgehoben. Reine Anzeige. */
.umlauf-kette {
  list-style: none;
  margin: 0.35rem 0 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem 0.5rem;
  font-size: 0.85rem;
}
.umlauf-kette-glied {
  display: inline-flex;
  align-items: baseline;
  gap: 0.25rem;
  padding: 0.05rem 0.4rem;
  border-radius: var(--radius);
  background: var(--accent-soft);
}
.umlauf-kette-glied.umlauf-kette-erledigt { background: transparent; color: var(--muted); }
.umlauf-kette-ich { background: var(--accent); color: #fff; font-weight: 600; }
.umlauf-kette-ich .umlauf-kette-aktion { color: #fff; }
.umlauf-kette-aktion { color: var(--muted); }
.umlauf-kette-haken { color: var(--ok, #2e7d32); font-weight: 700; }

/* L1 Schritt 2: Vielzeichner-Triage — zweispaltig (Desktop), einspaltig mobil.
   Links die Schlange, rechts Thema/Herkunft/Kette/Dokument/Abzeichnen. */
.umlauf-triage {
  display: grid;
  grid-template-columns: minmax(14rem, 22rem) 1fr;
  gap: 1rem;
  align-items: start;
}
.umlauf-triage-liste {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}
.umlauf-triage-item {
  display: block;
  text-decoration: none;
  color: var(--fg);
  padding: 0.5rem 0.7rem;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: white;
}
.umlauf-triage-item:hover { border-color: var(--accent); }
.umlauf-triage-item.umlauf-korb-gesperrt { color: var(--muted); }
.umlauf-triage-thema { display: block; font-weight: 600; }
.umlauf-triage-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  font-size: 0.85rem;
  color: var(--muted);
  margin-top: 0.15rem;
}
.umlauf-triage-detail {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: white;
  padding: 1rem;
  min-height: 20rem;
}
.umlauf-triage-leer { color: var(--muted); }
.umlauf-detail-thema { margin: 0 0 0.25rem; font-size: 1.2rem; }
.umlauf-detail-woher { color: var(--muted); font-size: 0.9rem; margin: 0 0 0.75rem; }
.umlauf-detail-kette { margin-bottom: 1rem; }
.umlauf-detail-embed {
  width: 100%;
  height: 28rem;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--accent-soft);
}
.umlauf-detail-dok-aktion {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  flex-wrap: wrap;
  margin: 0.5rem 0 1rem;
}
.umlauf-detail-aktion { border-top: 1px solid var(--border); padding-top: 0.75rem; }
.umlauf-freitext { width: 100%; box-sizing: border-box; resize: vertical; min-height: 2.5rem; }

/* ADR-0008: Rückfrage-Schleife / Kenntnis-Kopie (Disclosure am eigenen Schritt). */
.umlauf-einfuegen { margin-top: 1rem; border-top: 1px solid var(--border); padding-top: 0.75rem; }
.umlauf-einfuegen > summary { cursor: pointer; font-weight: 600; }
.umlauf-einfuegen-form { display: flex; flex-direction: column; gap: 0.5rem; margin-top: 0.75rem; }
.umlauf-einfuegen-form select,
.umlauf-einfuegen-form textarea { width: 100%; }

/* ADR-0007: Identitäts-Trennung — „für [Name]" markiert Schritte, die nicht
   bei mir, sondern bei jemandem liegen, den ich vertrete. */
.umlauf-vertretung-badge {
  background: var(--accent);
  color: #fff;
  border-radius: var(--radius);
  padding: 0 0.4rem;
  font-size: 0.78rem;
  font-weight: 600;
}
.umlauf-detail-vertretung {
  color: var(--accent);
  font-weight: 600;
  font-size: 0.9rem;
  margin: 0 0 0.5rem;
}

@media (max-width: 56rem) {
  .umlauf-triage { grid-template-columns: 1fr; }
  .umlauf-detail-embed { height: 60vh; }
}

.suchzeile {
  display: flex;
  gap: 0.5rem;
  justify-content: center;
  margin-bottom: 0.75rem;
}

.suchzeile input[type="search"] {
  flex: 1;
  max-width: 36rem;
  font-size: 1.25rem;
  padding: 0.75rem 1rem;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: white;
}

.suchzeile button {
  font-size: 1rem;
  padding: 0.75rem 1.5rem;
  border-radius: var(--radius);
  border: 1px solid var(--accent);
  background: var(--accent);
  color: white;
  cursor: pointer;
}

.suchhinweis {
  color: var(--muted);
  margin: 0 0 2rem;
}

/* ── „Zuletzt bearbeitet" ───────────────────────────────────── */
.zuletzt {
  max-width: 36rem;
  margin: 2rem auto 0;
  text-align: left;
}

.zuletzt h2 {
  font-size: 1rem;
  color: var(--muted);
  font-weight: 500;
  border-bottom: 1px solid var(--border);
  padding-bottom: 0.4rem;
  margin: 0 0 0.5rem;
}

/* ── Login-Seite ────────────────────────────────────────────── */
.login {
  max-width: 56rem;
  margin: 2rem auto 0;
}
.login-kopf { text-align: center; margin-bottom: 1.5rem; }
.login-kopf h1 { margin: 0 0 0.25rem; font-size: 1.5rem; }
.login-sub { margin: 0; color: var(--muted); font-size: 0.95rem; }
.login-slogan { margin: 0.5rem 0 0; color: var(--accent); font-size: 0.9rem; font-weight: 600; }

.login-fehler {
  background: #fff4e0;
  border: 1px solid var(--warn, #b04a00);
  color: var(--warn, #b04a00);
  border-radius: var(--radius);
  padding: 0.65rem 0.9rem;
  margin-bottom: 1rem;
  text-align: center;
}

.login-alternativen {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr));
  gap: 1.25rem;
  align-items: start;
}

.login-alt {
  background: white;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 1.25rem;
  box-shadow: var(--shadow);
}
.login-alt h2 { margin: 0 0 0.4rem; font-size: 1.05rem; }
.login-alt-erklaerung {
  color: var(--muted);
  font-size: 0.9rem;
  margin: 0 0 1rem;
  min-height: 2.6em;  /* Höhen-Sync der zwei Karten */
}
.login-alt-shib { border-top: 3px solid var(--accent); }

.login-alt-button {
  display: inline-block;
  text-decoration: none;
  background: var(--accent);
  color: white;
  border-radius: var(--radius);
  padding: 0.55rem 1.1rem;
  font-weight: 500;
}
.login-alt-button:hover {
  background: var(--accent);
  filter: brightness(0.95);
  text-decoration: none;
}
.login-alt-disabled {
  background: var(--border);
  color: var(--muted);
  cursor: not-allowed;
}
.login-alt-disabled:hover {
  background: var(--border);
  filter: none;
}
.login-alt-hinweis {
  color: var(--muted);
  font-size: 0.85rem;
  font-style: italic;
  margin: 0.5rem 0 0;
}

.login-form { display: flex; flex-direction: column; gap: 0.7rem; }
.login-form .form-row { display: flex; flex-direction: column; gap: 0.2rem; }
.login-form label { font-size: 0.85rem; color: var(--muted); }
.login-form input[type="text"],
.login-form input[type="password"] {
  max-width: 18rem;
  padding: 0.45rem 0.55rem;
  font-size: 0.95rem;
  border: 1px solid var(--border);
  border-radius: var(--radius);
}
.login-form input:focus {
  outline: 2px solid var(--accent-soft);
  border-color: var(--accent);
}
.login-submit {
  align-self: flex-start;
  margin-top: 0.5rem;
  background: var(--accent);
  color: white;
  border: 0;
  padding: 0.55rem 1.4rem;
  font-size: 0.95rem;
  font-weight: 500;
  border-radius: var(--radius);
  cursor: pointer;
}
.login-submit:hover { filter: brightness(0.95); }

.login-bestand {
  text-align: center;
  margin: 1.5rem auto 0;
  font-size: 0.85rem;
  color: var(--muted);
}
.login-bestand strong {
  color: var(--text, #222);
  font-weight: 500;
}
.login-bestand-stand { white-space: nowrap; }

/* Dezenter Login-Footer: Rückweg zur Hochschul-Auswahl + Sprach-Umschalter. */
.login-fuss {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
  gap: 0.6rem 1.5rem; margin: 1.75rem auto 0; padding-top: 1.25rem;
  border-top: 1px solid var(--border);
}
.login-zurueck { color: var(--muted); text-decoration: none; font-size: 0.85rem; }
.login-zurueck:hover { color: var(--accent); text-decoration: underline; }
.login-zurueck:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.login-sprachwahl { display: flex; flex-wrap: wrap; gap: 0.15rem 0.6rem; align-items: baseline; }
.login-sprachwahl-link { color: var(--muted); text-decoration: none; font-size: 0.82rem; }
.login-sprachwahl-link:hover { color: var(--accent); text-decoration: underline; }
.login-sprachwahl-aktiv { color: var(--text, #222); font-weight: 700; font-size: 0.82rem; }
.login-sprachwahl-link:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

.zuletzt-liste {
  list-style: none;
  margin: 0;
  padding: 0;
}

.zuletzt-liste li {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  padding: 0.45rem 0;
  border-bottom: 1px dotted var(--border);
}

.zuletzt-liste li:last-child { border-bottom: none; }

.zuletzt-titel { color: var(--accent); }

.zuletzt-zeit {
  color: var(--muted);
  font-size: 0.9rem;
  white-space: nowrap;
}

.zuletzt-leer {
  color: var(--muted);
  margin: 0;
  font-style: italic;
}

/* ── Footer ─────────────────────────────────────────────────── */
.footer {
  margin-top: 4rem;
  padding: 1rem var(--space);
  color: var(--muted);
  font-size: 0.85rem;
  text-align: center;
  border-top: 1px solid var(--border);
}
.footer-trenner { margin: 0 .15rem; }
.footer-link { color: inherit; text-decoration: underline; }
.footer-link:hover { text-decoration: none; }

/* ── Such-Highlights ────────────────────────────────────────── */
mark { background: var(--mark-bg); padding: 0 0.1em; }

/* ── Such-Ergebnisse ────────────────────────────────────────── */
.suche-ergebnisse h1 {
  font-size: 1.25rem;
  font-weight: 500;
  margin: 0 0 1rem;
}

.suche-ergebnisse h1 em {
  color: var(--accent);
  font-style: normal;
  font-weight: 600;
}

.suche-count {
  color: var(--muted);
  font-size: 0.95rem;
  font-weight: 400;
  margin-left: 0.5rem;
}

/* T22 Filter-Block (Anker + Range). Zwei Zeilen, jede mit
   Label + Eingabe-Bereich; Aktionen rechts unten. Generoeses
   Spacing — Layout-Beschwerde "Geburtsdatum eng dran". */
.suche-filter-block {
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
  background: white;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 0.85rem 1rem;
  margin: 0.75rem 0 1.5rem;
}

/* Label LINKS neben der Eingabe (nicht drueber) — feste Spalten-
   breite fuer Label, Eingabe nimmt den Rest. nowrap, damit es
   keine ungewollten Umbrueche gibt; auf engen Viewports kann
   flex-wrap das von Hand brechen. */
.suche-filter-zeile {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  flex-wrap: nowrap;
}

.suche-filter-label {
  flex: 0 0 9rem;
  font-weight: 500;
  color: var(--text);
}

.suche-filter-eingabe {
  position: relative;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex: 1 1 auto;
  min-width: 0;
}

.suche-filter-range-eingabe {
  gap: 0.6rem;
}

.suche-filter-aktionen {
  display: flex;
  gap: 0.75rem;
  align-items: center;
  margin-top: 0.4rem;
  padding-top: 0.25rem;
  border-top: 1px solid var(--border);
}

/* T22 Multi-Range: ``+ Filter`` rechts. Visuell sekundaer
   (Outline statt Filled) — Anwenden bleibt der Hauptknopf. */
.suche-filter-plus {
  background: transparent;
  border: 1px dashed var(--border);
  color: var(--text);
  padding: 0.3rem 0.75rem;
  border-radius: var(--radius);
  cursor: pointer;
  font: inherit;
}

.suche-filter-plus:hover {
  border-style: solid;
  background: var(--bg);
}

/* T22 ``x``-Loeschen je Zeile — diskret rechts, sichtbar
   nur weil Hover-Highlight es klar abhebt. */
.suche-filter-zeile-entfernen {
  background: transparent;
  border: none;
  color: var(--muted);
  font-size: 1.25rem;
  line-height: 1;
  padding: 0.1rem 0.5rem;
  cursor: pointer;
  border-radius: var(--radius);
}

.suche-filter-zeile-entfernen:hover {
  color: var(--text);
  background: var(--bg);
}

/* T22 Autocomplete-Dropdown — schwebt unter dem Eingabefeld,
   ueberdeckt nichts (Layout-Push waere stoerend), schliesst
   sich bei Aussen-Klick (siehe suche-anker-autocomplete.js). */
.anker-vorschlaege-container {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  z-index: 10;
}

.anker-vorschlaege {
  list-style: none;
  margin: 0.15rem 0 0;
  padding: 0.25rem 0;
  background: white;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  max-height: 18rem;
  overflow-y: auto;
}

.anker-vorschlaege li {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  padding: 0.35rem 0.75rem;
  cursor: pointer;
}

.anker-vorschlaege li:hover,
.anker-vorschlaege li:focus {
  background: var(--bg);
  outline: none;
}

.anker-vorschlag-wert {
  font-family: var(--mono, monospace);
  color: var(--text);
}

.anker-vorschlag-titel {
  color: var(--muted);
}

.treffer-liste {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.treffer-karte {
  background: white;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 0.75rem 1rem;
  box-shadow: var(--shadow);
}

/* Personenbezogene Akten DERSELBEN Person als eine Einheit. BEWUSST dezent
   (der Nutzer will, dass die Gruppe nicht stark zusaetzlich hervorragt): nur
   ein dezenter Kopf „Name · ID" + ein duenner linker Faden ueber die
   Akten-Karten — kein Kasten, kein farbiger Hintergrund. Gilt auch bei einer
   einzelnen Akte. */
.person-gruppe {
  list-style: none;
  padding-left: 0.75rem;
  border-left: 2px solid var(--border);
}
.person-gruppe-kopf {
  margin: 0 0 0.4rem;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.5rem;
}
/* Name so prominent wie ein normaler Treffer-Titel, aber nur EINMAL pro
   Person (Link aufs Personen-Hauptakte). */
.person-gruppe-name {
  font-weight: 600;
  font-size: 1.05rem;
  text-decoration: none;
}
.person-gruppe-name:hover { text-decoration: underline; }
.person-gruppe-id { color: var(--muted); font-size: 0.85rem; }
.person-gruppe-akten {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
/* In der Einheit fuehrt jede Karte mit dem Aktentyp als verlinktem Chip
   (unter dem Namen, nicht daneben). */
.chip-akte-link { text-decoration: none; }
.chip-akte-link:hover { background: var(--accent); color: white; }

.treffer-akte-titel {
  font-weight: 600;
  font-size: 1.05rem;
  text-decoration: none;
}

.treffer-akte-titel:hover { text-decoration: underline; }

/* T18-Counter: Kopfzeile der Karte — Titel + Aktentyp links,
   Counter rechts. */
.treffer-karte-kopf {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.5rem;
}
.treffer-karte-counter {
  margin-left: auto;
  font-size: 0.85rem;
  color: var(--muted);
  white-space: nowrap;
}
.treffer-counter-link {
  color: var(--accent);
  text-decoration: none;
  font-weight: 500;
}
.treffer-counter-link:hover { text-decoration: underline; }
.treffer-counter-sep { margin: 0 0.25rem; opacity: 0.6; }
.treffer-counter-gesamt { color: var(--muted); }

.treffer-dokumente {
  list-style: none;
  padding-left: 1.25rem;
  margin: 0.5rem 0 0;
  border-left: 2px solid var(--accent-soft);
}

.treffer-dokumente li {
  padding: 0.4rem 0 0.4rem 0.75rem;
}

.treffer-dokumente li + li {
  border-top: 1px dotted var(--border);
}

.treffer-weitere { margin-top: 0.5rem; }
.treffer-weitere summary {
  color: var(--muted);
  font-size: 0.85rem;
  cursor: pointer;
  padding: 0.25rem 0;
}
.treffer-weitere summary:hover { color: var(--accent); }
.treffer-weitere[open] summary { color: var(--accent); }

.treffer-dok-titel { font-weight: 500; }

.treffer-snippet {
  margin: 0.25rem 0 0;
  color: var(--muted);
  font-size: 0.95rem;
}

.chip {
  display: inline-block;
  font-size: 0.8rem;
  padding: 0.05rem 0.5rem;
  border-radius: 999px;
  background: var(--accent-soft);
  color: var(--accent);
  margin-left: 0.4rem;
}

.chip-dokumenttyp {
  background: #f1ece2;
  color: #6a4f1f;
}

.treffer-leer {
  color: var(--muted);
  margin: 2rem 0;
}

.suche-intent {
  color: var(--muted);
  font-size: 0.9rem;
  font-weight: 400;
  margin-left: 0.5rem;
}

.direkt-sprung {
  background: var(--accent-soft);
  border: 2px solid var(--accent);
  border-radius: var(--radius);
  padding: 0.75rem 1rem;
  margin-bottom: 1rem;
}

.banner {
  border-radius: var(--radius);
  padding: 0.75rem 1rem;
  margin-bottom: 1rem;
  line-height: 1.4;
}

.banner-warn {
  background: #fff7e0;
  border: 1px solid #d9a900;
  color: #604200;
}

.banner-tipp {
  background: #eef6ff;
  border: 1px solid #5a8fd6;
  color: #234269;
}

.banner-tipp code {
  background: #fff;
  padding: 0 0.25rem;
  border-radius: 3px;
}

/* Tab-Counter neben dem Aktentyp-Namen */
.tab-zahl {
  font-size: 0.85em;
  color: var(--muted);
  margin-left: 0.25rem;
  font-variant-numeric: tabular-nums;
}

.tab-aktiv .tab-zahl {
  color: inherit;
  opacity: 0.7;
}

/* "+ N weitere laden"-Block am Ende der Treffer-Liste */
.treffer-mehr-laden {
  margin: 1.2rem 0 0.5rem 0;
  text-align: center;
}

.btn-mehr-laden {
  display: inline-block;
  padding: 0.5rem 1.1rem;
  border: 1px solid var(--accent, #4361ee);
  background: #fff;
  color: var(--accent, #4361ee);
  border-radius: var(--radius);
  text-decoration: none;
  font-weight: 600;
}

.btn-mehr-laden:hover {
  background: var(--accent-soft, #eef2ff);
}

.treffer-mehr-hinweis {
  display: block;
  margin-top: 0.5rem;
  color: var(--muted);
  font-size: 0.9rem;
}

.banner-grund {
  display: inline-block;
  margin-left: 0.5rem;
  font-family: var(--mono, ui-monospace, monospace);
  font-size: 0.8rem;
  color: var(--muted);
}

/* ── Admin/Suchindex ────────────────────────────────────── */

.suchindex-ampel {
  list-style: none;
  margin: 0 0 1.5rem 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 0.75rem;
}

.suchindex-ampel-item {
  background: var(--surface, #fff);
  border: 1px solid var(--border, #ddd);
  border-radius: var(--radius);
  padding: 0.75rem 1rem;
  display: flex;
  flex-direction: column;
}

.suchindex-ampel-item .suchindex-label {
  font-size: 0.85rem;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.02em;
}

.suchindex-ampel-item .suchindex-wert {
  font-size: 1.5rem;
  font-weight: 600;
  margin: 0.1rem 0;
}

.suchindex-ampel-item .suchindex-hinweis {
  font-size: 0.85rem;
  color: var(--muted);
}

.suchindex-cluster-green { border-left: 4px solid #1f9d55; }
.suchindex-cluster-yellow { border-left: 4px solid #d9a900; background: #fff7e0; }
.suchindex-cluster-red { border-left: 4px solid #c03030; background: #fff0f0; }
.suchindex-warn { border-left: 4px solid #d9a900; background: #fff7e0; }

.suchindex-detail-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 1rem;
  margin-top: 1rem;
}

.suchindex-detail {
  background: var(--surface, #fff);
  border: 1px solid var(--border, #ddd);
  border-radius: var(--radius);
  padding: 0.75rem 1rem;
}

.suchindex-detail h2 {
  margin: 0 0 0.5rem 0;
  font-size: 1rem;
  color: var(--muted);
}

.suchindex-kv {
  margin: 0;
  display: grid;
  grid-template-columns: max-content 1fr;
  gap: 0.25rem 0.75rem;
}

.suchindex-kv dt { font-weight: 600; color: var(--muted); }
.suchindex-kv dd { margin: 0; }

.suchindex-tp {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.9rem;
}

.suchindex-tp th, .suchindex-tp td {
  padding: 0.25rem 0.5rem;
  text-align: left;
}

.suchindex-tp th.num, .suchindex-tp td.num {
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.suchindex-tp thead th {
  border-bottom: 1px solid var(--border, #ddd);
  color: var(--muted);
  font-weight: 600;
}

.suchindex-tp-belastet td, .suchindex-tp-belastet th {
  background: #fff7e0;
}

.suchindex-gemessen {
  margin-top: 1rem;
  font-size: 0.85rem;
}

.admin-breadcrumb {
  font-size: 0.9rem;
  color: var(--muted);
  margin-bottom: 0.5rem;
}

.admin-breadcrumb a { color: var(--muted); }

.direkt-sprung-label {
  display: block;
  font-size: 0.85rem;
  color: var(--accent);
  font-weight: 600;
  margin-bottom: 0.25rem;
  text-transform: uppercase;
  letter-spacing: 0.02em;
}

.direkt-sprung-link {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  font-size: 1.1rem;
  text-decoration: none;
  color: var(--fg);
}

.direkt-sprung-link strong { color: var(--accent); text-decoration: underline; }
.direkt-sprung-link:hover strong { text-decoration: none; }

.direkt-sprung-anker {
  color: var(--muted);
  font-size: 0.9rem;
  font-family: ui-monospace, monospace;
}

.treffer-akten-direkt {
  background: #fffaee;
  border: 1px solid #f3deba;
  border-radius: var(--radius);
  padding: 0.75rem 1rem;
  margin-bottom: 1rem;
}

.treffer-akten-direkt h2 {
  font-size: 1rem;
  margin: 0 0 0.5rem;
  color: var(--warn);
}

.treffer-direkt-liste {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}

.treffer-direkt-karte {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-wrap: wrap;
}

.treffer-match-info {
  color: var(--muted);
  font-size: 0.85rem;
}

/* ── Akten-Cover ────────────────────────────────────────────── */
.akten-cover { display: flex; flex-direction: column; gap: 1.5rem; }

.identitaet {
  background: white;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 1.25rem 1.5rem;
  box-shadow: var(--shadow);
}

.identitaet h1 {
  margin: 0 0 0.5rem;
  font-size: 1.5rem;
  display: inline;
  margin-right: 0.75rem;
}

.aktenzeichen {
  color: var(--muted);
  font-size: 0.95rem;
}

.anker-liste {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  padding: 0;
  margin: 0.75rem 0 0;
}

.anker {
  background: var(--accent-soft);
  color: var(--accent);
  border-radius: var(--radius);
  padding: 0.2rem 0.6rem;
  font-size: 0.9rem;
  border: 1px solid transparent;
}

.anker-primaer {
  border: 1px solid var(--accent);
  font-weight: 600;
}

.anker-typ {
  color: var(--muted);
  margin-right: 0.4rem;
  font-variant: small-caps;
}

/* Akten-Signale */
.signale {
  background: white;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 1rem 1.5rem;
  box-shadow: var(--shadow);
}

.cover-felder {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
  gap: 0.75rem 1.5rem;
  margin: 0;
}

.cover-feld { margin: 0; }
.cover-feld dt {
  color: var(--muted);
  font-size: 0.85rem;
  margin-bottom: 0.15rem;
}
.cover-feld dd { margin: 0; font-weight: 500; }
.cover-feld-large dd { font-size: 1.15rem; }
.cover-feld-small dd { font-size: 0.95rem; color: var(--muted); }

/* E-031: Deckel-Reiter — prominente Stammdaten-Gruppen (Personalakte).
   Bewusst auffälliger als die dezenten Dokument-Register-Header: accent-
   getönter Balken mit Akzent-Kante, gut sichtbar. */
.cover-reiter {
  margin: 1.1rem 0 0.5rem;
  padding: 0.3rem 0.6rem;
  font-size: 0.9rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  color: var(--accent);
  background: var(--accent-soft);
  border-left: 3px solid var(--accent);
  border-radius: var(--radius);
}
.cover-reiter:first-child { margin-top: 0; }
.cover-feld-leer { color: var(--muted); font-style: italic; }

.aktendicke {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin-top: 1rem;
}
.aktendicke-label { color: var(--muted); font-size: 0.9rem; min-width: 6rem; }
.aktendicke-balken {
  flex: 1;
  height: 10px;
  background: var(--accent-soft);
  border-radius: 6px;
  overflow: hidden;
}
.aktendicke-fuellung {
  height: 100%;
  background: var(--accent);
  transition: width 0.4s ease;
}
.aktendicke-zahl {
  color: var(--muted);
  font-size: 0.9rem;
  min-width: 7rem;
  text-align: right;
}

/* Beteiligte */
.beteiligte {
  background: white;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 1rem 1.5rem;
  box-shadow: var(--shadow);
}
.beteiligte h2 { font-size: 1rem; margin: 0 0 0.5rem; color: var(--muted); }
.beteiligte ul { list-style: none; padding: 0; margin: 0; }
.beteiligte li { display: flex; gap: 0.75rem; padding: 0.2rem 0; }
.beteiligten-rolle { color: var(--muted); min-width: 8rem; }
.beteiligten-name { font-weight: 500; }
.beteiligten-leer { color: var(--muted); font-style: italic; }

/* T13-3: Zwei-Spalten-Akten-Cover.
   Links Akten-Kontext, rechts Dokumente. Bei schmalem Viewport
   eine Spalte (Mobile-First-Fallback).
   ``main.main-content`` selbst hat schon eine max-width — wir
   können hier breit nutzen, aber müssen die main-content-max
   etwas erhöhen, damit die zwei Spalten Platz haben. */
.akten-cover-2col {
  display: grid;
  grid-template-columns: minmax(18rem, 22rem) 1fr;
  gap: 1.25rem;
  align-items: start;
}

.cover-info,
.cover-info-wrapper { display: flex; flex-direction: column; gap: 0.75rem; }
.cover-info .identitaet h1 { font-size: 1.15rem; }

/* T13-4 (neu): „Zur Akte"-Rücksprung im Dokument-Viewer — eigene, klar
   markierte Fläche statt Inline-Pfeil vor dem Titel. ``display:flex`` +
   ``width:fit-content`` macht es zu einer eigenen, kompakten Zeile ÜBER dem
   Titel (kein Umbruch des Aktentyp-Chips), größeres Klickziel als der frühere
   Pfeil, BITV-konform (Linktext „Zur Akte" + sichtbarer Fokus-Ring). */
.zur-akte {
  display: flex;
  width: fit-content;
  align-items: center;
  gap: 0.4rem;
  margin: 0 0 0.6rem;
  padding: 0.3rem 0.7rem;
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--accent);
  background: var(--accent-soft);
  border-radius: var(--radius);
  text-decoration: none;
}
.zur-akte:hover { background: var(--accent); color: white; }
.zur-akte:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.zur-akte-pfeil { font-size: 1.1em; line-height: 1; }

/* Aktentyp-Chips DERSELBEN Person im Identitäts-Kopf (Cover + Viewer).
   Die AKTUELLE Akte ist gefüllt/dunkel = „hier stehst du" — konsistent mit
   den aktiven Chips im übrigen UI (chip-zeitraum-aktiv / chip-dt-aktiv).
   Die anderen Akten sind helle, klickbare Links (Hover dunkelt an); KEIN
   Extra-Pfeil nötig, weil die dunkle aktuelle Akte die Lage schon markiert. */
.chip-aktuell {
  background: var(--accent);
  color: white;
  font-weight: 600;
}
.chip-wechsel {
  text-decoration: none;
  border: 1px solid transparent;
}
.chip-wechsel:hover { background: var(--accent); color: white; }
.chip-wechsel:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.cover-info .aktenpuls { margin: 0.25rem 0 0.5rem; }
.cover-info .aktenpuls .puls-item { padding: 0.3rem 0.55rem; font-size: 0.85rem; }
.cover-info .puls-label { font-size: 0.65rem; }

.cover-dokumente { min-width: 0; /* sonst sprengt der Baum die Spalte */ }

/* T13-4: Sidebar-Dokumenten-Liste im Viewer */
.sidebar-dokumente {
  background: white;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 0.75rem;
  box-shadow: var(--shadow);
}
.sidebar-dokumente-titel {
  margin: 0 0 0.5rem;
  font-size: 0.95rem;
}
.sidebar-dokumente .dokument-zeile { font-size: 0.85rem; padding: 0.25rem 0; }
.sidebar-dokumente .dokumente-in-gruppe { padding-left: 0.5rem; }

/* Aktives Dokument in der Sidebar-Liste */
.dokument-zeile-aktiv {
  background: var(--accent-soft);
  border-left: 3px solid var(--accent);
  padding-left: 0.3rem !important;
}
.dokument-zeile-aktiv .dokument-titel {
  font-weight: 600;
  color: var(--accent);
}

/* Akten-Details ausklappbar */
.signale-toggle {
  background: white;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 0;
  box-shadow: var(--shadow);
}
.signale-toggle summary {
  list-style: none;
  cursor: pointer;
  padding: 0.5rem 0.75rem;
  font-size: 0.9rem;
  color: var(--muted);
}
.signale-toggle summary::-webkit-details-marker { display: none; }
.signale-toggle summary::before {
  content: "▶";
  font-size: 0.7em;
  margin-right: 0.4rem;
  color: var(--muted);
}
.signale-toggle[open] summary::before { content: "▼"; }
.signale-toggle[open] summary { border-bottom: 1px solid var(--border); }
.signale-toggle .signale { padding: 0.5rem 0.75rem 0.75rem; margin: 0; }
.aktendicke-zahl-inline { color: var(--muted); }

@media (max-width: 70rem) {
  .akten-cover-2col {
    grid-template-columns: 1fr;
  }
}

/* Breiterer Main-Bereich speziell für den 2-Spalten-Cover. */
.main-content:has(.akten-cover-2col) {
  max-width: 84rem;
}

/* T10-5/6: Aktenpuls-Stripe */
.aktenpuls {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin: 0.75rem 0 1rem;
}
.puls-item {
  background: white;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 0.35rem 0.7rem;
  font-size: 0.9rem;
  display: flex;
  flex-direction: column;
  gap: 0.1rem;
  box-shadow: var(--shadow);
}
.puls-label {
  font-size: 0.75rem;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.03em;
}
.puls-wert {
  color: var(--fg);
  font-weight: 500;
}
.puls-warn {
  border-left: 3px solid var(--warn, #d97706);
  background: #fff8e6;
}
.puls-warn .puls-wert { color: var(--warn, #d97706); }
.puls-deadline {
  border-left: 3px solid var(--accent);
}

/* T13-6: Aktenpuls-Item als Link (Letzter Eingang → Dokument). */
.puls-item-link {
  text-decoration: none;
  color: inherit;
  cursor: pointer;
}
.puls-item-link:hover {
  border-color: var(--accent);
  background: var(--accent-soft);
  text-decoration: none;
}
.puls-item-link:hover .puls-wert { color: var(--accent); }

/* T13-6: Treffer-Karte für direkt gefundene Akte (ohne Volltext-
   Trefferdokumente) bekommt einen dezenten Indikator links. */
.treffer-karte-direkt {
  border-left: 3px solid var(--accent-soft);
}

/* T10-1: Wiedervorlagen-Sektion */
.wiedervorlagen {
  background: #fff8e6;
  border: 1px solid #f5d77a;
  border-left: 3px solid var(--warn, #d97706);
  border-radius: var(--radius);
  padding: 0.75rem 1rem;
  margin-bottom: 1rem;
  box-shadow: var(--shadow);
}
.wiedervorlagen h2 {
  margin: 0 0 0.5rem;
  font-size: 1rem;
  display: flex;
  align-items: center;
  gap: 0.4rem;
}
.wv-icon { font-size: 1.15rem; }
.wv-count { color: var(--muted); font-weight: 400; font-size: 0.9rem; }
.wv-liste { list-style: none; padding: 0; margin: 0; }
.wv-eintrag {
  display: grid;
  grid-template-columns: 6rem 1fr;
  gap: 0.6rem;
  padding: 0.25rem 0;
  font-size: 0.95rem;
}
.wv-datum {
  font-family: ui-monospace, monospace;
  color: var(--muted);
}
.wv-eintrag.wv-faellig .wv-datum {
  color: var(--warn, #d97706);
  font-weight: 600;
}
.wv-inhalt { color: var(--fg); }

/* T12-7 / F-024: „überfällig"-Badge zusätzlich zur Farbe. */
.wv-badge {
  display: inline-block;
  margin-left: 0.25rem;
  padding: 0.05rem 0.5rem;
  border: 1px solid var(--warn, #b04a00);
  color: var(--warn, #b04a00);
  font-size: 0.8rem;
  font-weight: 600;
  border-radius: 999px;
}

.viewer-attribute-titel {
  font-size: 0.95rem;
  margin: 1rem 0 0.5rem;
  padding-top: 0.75rem;
  border-top: 1px dashed var(--border);
  color: var(--muted);
}

/* T12-7 / F-037: Baum-Gruppen-h3 muss als pille rendern, nicht
   als h3-Default-Größe. */
h3.dok-gruppe-name {
  margin: 0;
  font-size: 1rem;
  font-weight: 500;
  display: inline;
}

/* T12-3: Vermerke-Block (sichtbar, nicht versteckt) */
.vermerke-block {
  background: white;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 0.75rem 1rem;
  margin-bottom: 1rem;
  box-shadow: var(--shadow);
}
.vermerke-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 0.5rem;
  gap: 0.5rem;
  flex-wrap: wrap;
}
.vermerke-header h2 { margin: 0; font-size: 1rem; }
.v-count { color: var(--muted); font-weight: 400; font-size: 0.9rem; }

.vermerk-toggle summary {
  list-style: none;
  cursor: pointer;
  display: inline-block;
  padding: 0.25rem 0.7rem;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--bg);
  color: var(--accent);
  font-size: 0.85rem;
  font-weight: 500;
}
.vermerk-toggle summary::-webkit-details-marker { display: none; }
.vermerk-toggle summary:hover { background: var(--accent-soft); }
.vermerk-toggle[open] summary { background: var(--accent-soft); margin-bottom: 0.5rem; }
.vermerk-toggle[open] .vermerk-form {
  margin-top: 0.5rem;
  padding-top: 0.75rem;
  border-top: 1px dashed var(--border);
}

.vermerke-aelter {
  margin-top: 0.5rem;
}
.vermerke-aelter summary {
  cursor: pointer;
  color: var(--muted);
  font-size: 0.85rem;
  padding: 0.25rem 0;
}
.vermerke-aelter[open] summary { color: var(--fg); }

/* T10: Dokumente-Bereich (alleinstehend) */
.dokumente-bereich {
  background: white;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 1rem 1.25rem;
  box-shadow: var(--shadow);
}
.dokumente-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 0.75rem;
  gap: 0.5rem;
  flex-wrap: wrap;
}
.dokumente-header h2 { margin: 0; font-size: 1.05rem; }
.dok-count { color: var(--muted); font-weight: 400; font-size: 0.9rem; }
/* „Diese aufklappen"-Icon im Dokumente-Header: klappt alle Dokumenttyp-
   Gruppen DIESER Akte auf/zu (JS baum-aufklappen.js). Icon zustandsabhängig
   per aria-expanded (⊞ = alle auf, ⊟ = alle zu). */
.baum-aufklapp {
  flex: none;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--bg);
  color: var(--accent);
  cursor: pointer;
  padding: 0.15rem 0.45rem;
  font-size: 1rem;
  line-height: 1;
}
.baum-aufklapp:hover { background: var(--accent-soft); }
.baum-aufklapp::before { content: "⊞"; }
.baum-aufklapp[aria-expanded="true"]::before { content: "⊟"; }
/* Technischer Rollen-Slug neben dem lesbaren display_name (dezent). */
.rolle-slug { color: var(--muted); font-size: 0.85rem; font-weight: 400; margin-left: 0.4rem; }

/* T10-4: Dokumenttyp-Filter-Chips innerhalb der Akte */
.dokumenttyp-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  padding: 0.5rem 0;
  margin-bottom: 0.75rem;
  border-bottom: 1px dashed var(--border);
}
.chip-dt {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.2rem 0.7rem;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--bg);
  color: var(--muted);
  text-decoration: none;
  font-size: 0.85rem;
  /* In der schmalen Cover-Spalte können Dokumenttyp-Namen lang
     werden (z.B. „Hochschulzugangsberechtigung"). Wir lassen den
     Chip umbrechen statt aus der Spalte ragen — ``nowrap`` raus,
     ``max-width: 100%`` und ``overflow-wrap: anywhere`` schützen
     gegen Wörter ohne Trennstelle. */
  max-width: 100%;
  overflow-wrap: anywhere;
}
.chip-dt:hover { color: var(--fg); background: white; text-decoration: none; }
.chip-dt-aktiv {
  background: var(--accent);
  color: white;
  border-color: var(--accent);
  font-weight: 500;
}
.chip-dt-aktiv:hover { color: white; background: var(--accent); }
.chip-dt .chip-count {
  font-variant-numeric: tabular-nums;
  font-size: 0.8em;
  opacity: 0.7;
}

/* ADR-0005: Studiengang-Facette — 2. Filterachse, sitzt ÜBER den
   Dokumenttyp-Chips. Optisch abgesetzt (eckige Pillen statt runder),
   damit die beiden Achsen (Studiengang vs. Dokumenttyp) nicht
   verschwimmen. „beendet" gedimmt, „Allgemein" als nicht-klickbare
   gestrichelte Pille. */
.studiengang-facette {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  padding: 0.4rem 0 0.5rem;
  margin-bottom: 0.4rem;
}
.chip-sg {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.2rem 0.7rem;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: var(--bg);
  color: var(--muted);
  text-decoration: none;
  font-size: 0.85rem;
  max-width: 100%;
  overflow-wrap: anywhere;
}
.chip-sg:hover { color: var(--fg); background: white; text-decoration: none; }
.chip-sg-aktiv {
  background: var(--accent);
  color: white;
  border-color: var(--accent);
  font-weight: 500;
}
.chip-sg-aktiv:hover { color: white; background: var(--accent); }
.chip-sg-beendet { opacity: 0.68; font-style: italic; }
.chip-sg-beendet.chip-sg-aktiv { opacity: 1; }
.sg-beendet-mark { font-size: 0.75em; opacity: 0.85; }
.chip-sg-rest {
  border-style: dashed;
  cursor: default;
  font-style: italic;
}
.chip-sg .chip-count {
  font-variant-numeric: tabular-nums;
  font-size: 0.8em;
  opacity: 0.7;
}

/* ADR-0005: Studiengang-Chip mit ausklappbarem Detail. Der Chip filtert,
   das angedockte ▾ klappt ein kleines Detail-Panel (Fachsemester etc.) auf. */
.sg-chip-group {
  position: relative;
  display: inline-flex;
  align-items: stretch;
}
.chip-sg-ingruppe { border-radius: 6px 0 0 6px; }
.sg-detail { display: inline-flex; }
.sg-detail-toggle {
  display: inline-flex;
  align-items: center;
  cursor: pointer;
  list-style: none;
  padding: 0 0.45rem;
  border: 1px solid var(--border);
  border-left: none;
  border-radius: 0 6px 6px 0;
  background: var(--bg);
  color: var(--muted);
  font-size: 0.8rem;
  line-height: 1;
}
.sg-detail-toggle::-webkit-details-marker { display: none; }
.sg-detail-toggle::marker { content: ""; }
.sg-detail-toggle:hover { color: var(--fg); background: white; }
.sg-detail[open] .sg-detail-toggle {
  background: var(--accent);
  color: white;
  border-color: var(--accent);
}
.sg-detail-liste {
  position: absolute;
  top: calc(100% + 0.3rem);
  left: 0;
  z-index: 30;
  margin: 0;
  min-width: 13rem;
  padding: 0.55rem 0.75rem;
  background: white;
  border: 1px solid var(--border);
  border-radius: 6px;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.14);
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 0.2rem 0.7rem;
  font-size: 0.82rem;
}
.sg-detail-liste dt { color: var(--muted); white-space: nowrap; }
.sg-detail-liste dd {
  margin: 0;
  color: var(--fg);
  font-variant-numeric: tabular-nums;
}

/* T10-3: Dokumenten-Baum */
.dokumenten-baum {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}
/* E-031/Personalakte: Register-Überschrift über den Dokumenttyp-Gruppen. */
.dok-register {
  margin: 0.6rem 0 0.1rem;
  font-size: 0.82rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--muted);
  border-bottom: 1px solid var(--border);
  padding-bottom: 0.15rem;
}
.dok-register:first-child { margin-top: 0; }
.dok-register-sensibel { text-transform: none; }
.dok-gruppe {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--bg);
}
.dok-gruppe-summary {
  list-style: none;
  cursor: pointer;
  padding: 0.4rem 0.75rem;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.95rem;
}
.dok-gruppe-summary::-webkit-details-marker { display: none; }
.dok-gruppe-summary::before {
  content: "▶";
  font-size: 0.7em;
  color: var(--muted);
  transition: transform 0.1s;
}
.dok-gruppe[open] .dok-gruppe-summary::before {
  transform: rotate(90deg);
}
.dok-gruppe-name {
  font-weight: 500;
  /* Lange Dokumenttyp-Namen sollen im Gruppen-Kopf umbrechen,
     nicht aus der Spalte ragen. */
  overflow-wrap: anywhere;
  min-width: 0;
}
.dok-gruppe-count { color: var(--muted); font-size: 0.85rem; }
.dokumente-in-gruppe {
  list-style: none;
  margin: 0;
  padding: 0 0.5rem 0.5rem 1.5rem;
  background: white;
  border-top: 1px solid var(--border);
}
/* Akten-Detail: Dokumentnamen mit dem Gruppen-Header
   (Dokumenttyp-Name nach ▶ + gap) zur Flucht bringen, damit sie
   nicht ganz links unter dem Aufklapper kleben. Sidebar bleibt
   bewusst enger (kompakte Liste, eigener Override). */
.cover-dokumente .dokumente-in-gruppe {
  padding-left: 2rem;
}

/* T10-2: Upload-Toggle */
.upload-toggle summary {
  list-style: none;
  cursor: pointer;
  display: inline-block;
  padding: 0.3rem 0.75rem;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--bg);
  color: var(--accent);
  font-size: 0.9rem;
  font-weight: 500;
}
.upload-toggle summary::-webkit-details-marker { display: none; }
/* UX-1: zwei echte Label-Spans im Markup, zustandsabhängig getauscht.
   Geschlossen zeigt den Auslöser, offen eindeutig „Abbrechen"
   (schließt den Dialog) — nicht verwechselbar mit dem
   „Dokument hochladen"-Absende-Button im Form. */
.upload-toggle summary .toggle-label-offen { display: none; }
.upload-toggle[open] summary .toggle-label-zu { display: none; }
.upload-toggle[open] summary .toggle-label-offen { display: inline; }
.upload-toggle summary:hover {
  background: var(--accent-soft);
}
.upload-toggle[open] summary {
  background: var(--accent-soft);
  margin-bottom: 0.75rem;
}
.upload-toggle .upload-form {
  margin-top: 0.5rem;
  padding-top: 0.75rem;
  border-top: 1px dashed var(--border);
}

/* E-033: Umlauf-Toggle im Dokumente-Header — Markup + Zwei-Span-Swap exakt
   analog zum upload-toggle (geschlossen Auslöser, offen „Abbrechen"). */
.umlauf-toggle summary {
  list-style: none;
  cursor: pointer;
  display: inline-block;
  padding: 0.3rem 0.75rem;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--bg);
  color: var(--accent);
  font-size: 0.9rem;
  font-weight: 500;
}
.umlauf-toggle summary::-webkit-details-marker { display: none; }
.umlauf-toggle summary .toggle-label-offen { display: none; }
.umlauf-toggle[open] summary .toggle-label-zu { display: none; }
.umlauf-toggle[open] summary .toggle-label-offen { display: inline; }
.umlauf-toggle summary:hover { background: var(--accent-soft); }
.umlauf-toggle[open] summary {
  background: var(--accent-soft);
  margin-bottom: 0.75rem;
}
/* Das Start-Panel liegt IM <details> über dem Baum — vom Toggle abgesetzt. */
.umlauf-toggle .umlauf-start-form {
  margin-top: 0.5rem;
  padding-top: 0.75rem;
  border-top: 1px dashed var(--border);
}

/* UX-Fix: Beim Öffnen soll der Auslöser-Button in der Header-Zeile STEHEN
   BLEIBEN (Summary „Abbrechen" genau dort, wo „In den Umlauf geben" /
   „Dokument hinzufügen" stand) und NUR das Panel als volle Zeile darunter
   umbrechen. ``display:contents`` löst die <details>-Box auf → Summary + Panel
   werden direkte Flex-Kinder von ``.dokumente-header``: die Summary bleibt ein
   normales Flex-Item in der Button-Zeile, das Panel bekommt ``flex-basis:100%``
   (eigene Zeile). Vorher wurde das geöffnete <details> als breites Flex-Item
   umgebrochen, ``space-between`` schob die Geschwister-Buttons um. */
.upload-toggle[open],
.umlauf-toggle[open] { display: contents; }
/* E-033 UX: die beiden Header-Toggles schließen sich gegenseitig aus — ist eins
   offen, blendet das andere aus (kein verwirrendes „Dokument hinzufügen" neben
   offenem Umlauf-Panel). */
.dokumente-header:has(.umlauf-toggle[open]) .upload-toggle,
.dokumente-header:has(.upload-toggle[open]) .umlauf-toggle { display: none; }
.upload-toggle[open] > summary,
.umlauf-toggle[open] > summary { margin-bottom: 0; }
.upload-toggle[open] > .upload-form,
.umlauf-toggle[open] > .umlauf-start-form {
  flex-basis: 100%;
  width: 100%;
}

.spalte {
  background: white;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 1rem 1.25rem;
  box-shadow: var(--shadow);
}

.spalte h2 {
  font-size: 1rem;
  margin: 0 0 0.5rem;
  color: var(--muted);
  border-bottom: 1px solid var(--border);
  padding-bottom: 0.35rem;
}

.vermerks-liste, .dokumente-liste {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.vermerk {
  background: var(--accent-soft);
  border-left: 3px solid var(--accent);
  border-radius: 0 var(--radius) var(--radius) 0;
  padding: 0.5rem 0.75rem;
}

.vermerk-kopf {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 0.3rem;
}

.chip-vermerk-klasse {
  background: white;
  color: var(--accent);
  border: 1px solid var(--accent-soft);
}

.vermerk-zeit { color: var(--muted); font-size: 0.85rem; }

.vermerk-inhalt {
  margin: 0;
  white-space: pre-wrap;
  font-size: 0.95rem;
}

/* Vermerk-Form */
.vermerk-form {
  background: var(--bg);
  border: 1px dashed var(--border);
  border-radius: var(--radius);
  padding: 0.65rem;
  margin-bottom: 0.75rem;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.form-row { display: flex; flex-direction: column; gap: 0.2rem; }

.form-row label { font-size: 0.85rem; color: var(--muted); }

.vermerk-form select,
.vermerk-form textarea {
  width: 100%;
  padding: 0.4rem 0.5rem;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  font-size: 0.95rem;
  background: white;
  font-family: inherit;
}

.vermerk-form textarea { resize: vertical; }

.form-row-aktionen {
  flex-direction: row;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.75rem;
}

.checkbox {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  font-size: 0.85rem;
  color: var(--fg);
}

.button-secondary {
  margin-left: auto;
  background: var(--accent);
  color: white;
  border: none;
  padding: 0.4rem 0.85rem;
  border-radius: var(--radius);
  cursor: pointer;
}

.upload-form {
  background: var(--bg);
  border: 1px dashed var(--border);
  border-radius: var(--radius);
  padding: 0.65rem;
  margin-bottom: 0.75rem;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.upload-form input[type="text"],
.upload-form input[type="file"],
.upload-form select {
  width: 100%;
  padding: 0.4rem 0.5rem;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  font-size: 0.95rem;
  background: white;
  font-family: inherit;
}

.dropzone {
  border: 2px dashed var(--border);
  border-radius: var(--radius);
  padding: 0.5rem;
  transition: border-color 0.2s, background-color 0.2s;
}

.dropzone-aktiv {
  border-color: var(--accent);
  background: var(--accent-soft);
}

.dropzone-hint {
  display: block;
  font-size: 0.8rem;
  color: var(--muted);
  margin-top: 0.25rem;
  text-align: center;
}

.dokument-zeile {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-wrap: wrap;
  padding: 0.35rem 0;
  border-bottom: 1px dotted var(--border);
}

.dokument-zeile:last-child { border-bottom: none; }

.dokument-titel { font-weight: 500; }
.dokument-meta { color: var(--muted); font-size: 0.85rem; margin-left: auto; }

.status {
  font-size: 0.75rem;
  padding: 0.05rem 0.5rem;
  border-radius: 999px;
  text-transform: uppercase;
}
.status-processing { background: #fff3cd; color: #6b4f00; }
.status-failed { background: #fde4e4; color: #9b1c1c; }

.leer-hinweis { color: var(--muted); font-style: italic; }

/* ── Dokument-Viewer ────────────────────────────────────────── */
.viewer { display: flex; flex-direction: column; gap: 0.75rem; }

/* T13-1: Akten-Streifen oben im Viewer, sticky */
.viewer-akten-streifen {
  position: sticky;
  top: 0;
  z-index: 20;
  display: flex;
  align-items: center;
  gap: 0.75rem;
  flex-wrap: wrap;
  background: var(--accent-soft);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 0.4rem 0.75rem;
  font-size: 0.9rem;
}
.vas-akte {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  color: var(--accent);
  text-decoration: none;
  font-weight: 500;
}
.vas-akte:hover { text-decoration: underline; }
.vas-pfeil { font-size: 1.05em; }
.vas-titel { white-space: nowrap; max-width: 22rem; overflow: hidden; text-overflow: ellipsis; }
.vas-anker {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  color: var(--muted);
}
.vas-anker-typ {
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}
.vas-anker-wert {
  font-family: ui-monospace, monospace;
  color: var(--fg);
}
.vas-wiedervorlage {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  background: white;
  color: var(--accent);
  text-decoration: none;
  padding: 0.15rem 0.6rem;
  border-radius: 999px;
  border: 1px solid var(--border);
  font-size: 0.85rem;
}
.vas-wiedervorlage:hover { text-decoration: underline; }
.vas-wv-faellig {
  background: #fff4e0;
  border-color: var(--warn, #b04a00);
  color: var(--warn, #b04a00);
  font-weight: 600;
}
.vas-wv-badge { font-size: 0.75rem; }

.viewer-kopf {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  background: white;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 0.75rem 1rem;
  box-shadow: var(--shadow);
  flex-wrap: wrap;
}

/* E-023: Banner ueber dem Viewer-Kopf, wenn eine historische
   Version angezeigt wird. Gelb-warmes Gelb signalisiert „Achtung,
   das ist nicht der aktuelle Stand", soll aber nicht alarmieren. */
.viewer-historisch-banner {
  background: #fff8e1;
  border: 1px solid #f0c97a;
  border-radius: var(--radius);
  padding: 0.75rem 1rem;
  margin-bottom: 0.75rem;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.viewer-historisch-banner p { margin: 0; }
.viewer-historisch-aktionen {
  display: flex;
  gap: 0.75rem;
  flex-wrap: wrap;
  align-items: center;
}
.viewer-historisch-restore {
  display: inline;
}

.viewer-breadcrumb {
  margin: 0;
  flex-basis: 100%;
  font-size: 0.9rem;
}

.viewer-kopf h1 { margin: 0; font-size: 1.25rem; flex: 1; }

.viewer-download {
  background: var(--accent-soft);
  color: var(--accent);
  padding: 0.4rem 0.75rem;
  border-radius: var(--radius);
  text-decoration: none;
  font-weight: 500;
}

.viewer-inhalt {
  background: white;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  min-height: 24rem;
  display: flex;
  align-items: stretch;
  justify-content: center;
  overflow: hidden;
}

.viewer-embed { width: 100%; min-height: 32rem; border: none; }

/* Mobile/Touch-Fallback fuer PDFs: iOS-Safari + Mobile-Chrome
   rendern ``<embed type="application/pdf">`` nicht inline und
   zeigen statt dessen einen schwarzen Placeholder mit Browser-
   eigener Open/Download-UI darueber. Feature-Detection per
   ``hover``/``pointer``-Media-Query (kein UA-Sniffing): coarse
   pointer + kein Hover = Touch-Geraet -> Fallback-Karte zeigen. */
.viewer-pdf-touch-fallback { display: none; }

@media (hover: none) and (pointer: coarse) {
  .viewer-embed { display: none; }
  .viewer-pdf-touch-fallback {
    display: block;
    text-align: center;
    padding: 2.5rem 1.25rem;
    color: var(--text);
  }
  .viewer-pdf-touch-fallback p { margin: 0.5rem 0; }
  .viewer-pdf-touch-aktionen {
    margin-top: 1.25rem;
    display: flex;
    gap: 0.75rem;
    justify-content: center;
    flex-wrap: wrap;
  }
  .button-sekundaer {
    background: transparent;
    border: 1px solid var(--border);
    color: var(--text);
  }
}

.viewer-image { max-width: 100%; height: auto; margin: auto; display: block; }
.viewer-text {
  margin: 0;
  padding: 1.25rem;
  white-space: pre-wrap;
  font-family: ui-monospace, "SFMono-Regular", Menlo, monospace;
  font-size: 0.95rem;
  width: 100%;
  overflow: auto;
}

.viewer-fallback {
  text-align: center;
  padding: 3rem 1.5rem;
  color: var(--muted);
}

.button {
  display: inline-block;
  padding: 0.5rem 1rem;
  background: var(--accent);
  color: white;
  text-decoration: none;
  border-radius: var(--radius);
}

.viewer-fuss {
  background: white;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 0.75rem 1rem;
  box-shadow: var(--shadow);
}

.viewer-fuss dl {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
  gap: 0.75rem;
  margin: 0;
}

.viewer-fuss dt { color: var(--muted); font-size: 0.85rem; }
.viewer-fuss dd { margin: 0.1rem 0 0; }
/* Lange Werte (Hash, langes Datum, lange MIME-/Größe-Strings) sollen
   nicht ins Nachbar-Feld ragen. ``min-width: 0`` löst das default
   ``min-content`` der Grid-Items; dd schneidet mit Ellipsis ab. Den
   vollen Wert macht das ``title``-Attribut im Hover sichtbar. */
.viewer-fuss dl > div { min-width: 0; }
.viewer-fuss dd {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.viewer-attribute {
  margin-top: 1rem;
  padding-top: 0.75rem;
  border-top: 1px dashed var(--border);
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
  gap: 0.75rem;
}
.viewer-attribute h2 {
  grid-column: 1 / -1;
  font-size: 0.9rem;
  margin: 0;
  color: var(--muted);
}
/* Lange Werte: nicht in die Nachbar-Spalte ragen lassen.
   ``min-width: 0`` hebt das default ``min-content`` der Grid-Items
   auf, damit ``ellipsis`` greifen darf. Voller Wert per ``title``-
   Tooltip im Hover (siehe Template). */
.viewer-attribute > div { min-width: 0; }
.viewer-attribute dd {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* ====================================================================
   Mappe (Stufe-1-MVP der erweiterten Suche)
   ==================================================================== */

.topnav-mappe {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  margin-right: 0.6rem;
  padding: 0.35rem 0.7rem;
  border-radius: 999px;
  background: var(--muted-bg, #f1f3f5);
  color: var(--accent);
  text-decoration: none;
  font-size: 0.9rem;
  white-space: nowrap;
}
.topnav-mappe:hover {
  background: var(--accent);
  color: white;
}

.mappe {
  max-width: 1100px;
  margin: 0 auto;
  padding: 1rem;
}
.mappe-kopf h1 {
  margin-top: 0;
  display: flex;
  align-items: baseline;
  gap: 0.6rem;
}
.mappe-count {
  font-size: 0.85em;
  color: var(--muted);
  font-weight: normal;
}
.mappe-erklaerung {
  color: var(--muted);
  margin: 0.1rem 0 1rem;
  font-size: 0.95em;
}

.mappe-layout {
  display: grid;
  grid-template-columns: 16rem 1fr;
  gap: 1.5rem;
  align-items: start;
}
@media (max-width: 800px) {
  .mappe-layout {
    grid-template-columns: 1fr;
  }
}

.mappe-recent {
  background: var(--muted-bg, #f8f9fa);
  border-radius: 0.5rem;
  padding: 0.8rem 1rem;
  border: 1px solid var(--border);
}
.mappe-recent h2 {
  margin: 0 0 0.5rem;
  font-size: 1rem;
}
.mappe-recent-liste {
  list-style: none;
  margin: 0;
  padding: 0;
}
.mappe-recent-liste li {
  margin: 0.3rem 0;
  font-size: 0.92em;
}
.mappe-recent-liste a {
  color: var(--accent);
  text-decoration: none;
}
.mappe-recent-liste a:hover { text-decoration: underline; }
.mappe-recent-leer {
  color: var(--muted);
  font-size: 0.88em;
  margin: 0;
}

/* Stufe 2: „Meine Mappen" — persistente Einträge je User. */
.mappe-meine {
  margin-bottom: 1rem;
  padding-bottom: 0.8rem;
  border-bottom: 1px dashed var(--border);
}
.mappe-meine h2 {
  margin: 0 0 0.5rem;
  font-size: 1rem;
}
.mappe-meine-liste {
  list-style: none;
  margin: 0;
  padding: 0;
}
.mappe-meine-eintrag {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.4rem;
  margin: 0.3rem 0;
  font-size: 0.92em;
}
.mappe-meine-eintrag a {
  color: var(--accent);
  text-decoration: none;
  font-weight: 500;
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.mappe-meine-eintrag a:hover { text-decoration: underline; }
.mappe-meine-loeschen {
  margin: 0;
  flex: 0 0 auto;
}
.mappe-meine-loeschen button {
  background: none;
  border: none;
  color: var(--muted);
  cursor: pointer;
  font-size: 1.1em;
  line-height: 1;
  padding: 0 0.2rem;
}
.mappe-meine-loeschen button:hover { color: var(--danger, #c33); }

.mappe-speichern {
  margin-top: 1rem;
  background: var(--muted-bg, #f8f9fa);
  border: 1px dashed var(--border);
  border-radius: 0.5rem;
  padding: 0.8rem 1rem;
}
.mappe-speichern-titel {
  margin: 0 0 0.3rem;
  font-size: 0.95rem;
}
.mappe-speichern .form-hinweis {
  margin: 0 0 0.6rem;
}
.mappe-speichern-zeile {
  display: flex;
  gap: 0.5rem;
  align-items: center;
}
.mappe-speichern-zeile input[type="text"] {
  flex: 1 1 auto;
}

.mappe-filter {
  background: var(--muted-bg, #f8f9fa);
  border: 1px solid var(--border);
  border-radius: 0.5rem;
  padding: 1rem;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.8rem 1.2rem;
  margin-bottom: 1.2rem;
}
.mappe-filter-feld {
  border: none;
  padding: 0;
  margin: 0;
  min-width: 0;
}
.mappe-filter-feld legend,
.mappe-filter-feld > span {
  display: block;
  font-weight: 600;
  font-size: 0.92em;
  margin-bottom: 0.3rem;
  padding: 0;
}
.mappe-filter-feld input[type="search"] {
  width: 100%;
  padding: 0.4rem 0.6rem;
  border: 1px solid var(--border);
  border-radius: 0.3rem;
  font: inherit;
}
.mappe-checkbox,
.mappe-radio {
  display: block;
  font-size: 0.92em;
  margin: 0.15rem 0;
  cursor: pointer;
}
.mappe-checkbox input,
.mappe-radio input {
  margin-right: 0.4rem;
}
.mappe-filter-fehlt legend em {
  font-style: italic;
  color: #b85c1b;
}
.mappe-filter-zeit {
  grid-column: 1 / -1;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1rem;
  align-items: baseline;
}
.mappe-filter-zeit legend {
  flex-basis: 100%;
}
.mappe-filter-status {
  grid-column: 1 / -1;
}
.mappe-filter-aktionen {
  grid-column: 1 / -1;
  display: flex;
  gap: 0.8rem;
  align-items: center;
  margin-top: 0.4rem;
}
.mappe-filter-aktionen button {
  padding: 0.45rem 1rem;
  background: var(--accent);
  color: white;
  border: none;
  border-radius: 0.3rem;
  font: inherit;
  cursor: pointer;
}
.mappe-filter-aktionen button:hover {
  filter: brightness(0.9);
}
.mappe-filter-reset {
  color: var(--muted);
  text-decoration: none;
  font-size: 0.9em;
}
.mappe-filter-reset:hover { text-decoration: underline; }
.mappe-filter-hinweis {
  grid-column: 1 / -1;
  color: var(--muted);
  font-size: 0.92em;
  margin: 0;
}

.mappe-treffer-liste {
  list-style: none;
  margin: 0;
  padding: 0;
}
.mappe-treffer-karte {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.5rem 0.8rem;
  padding: 0.7rem 0.8rem;
  border-bottom: 1px solid var(--border);
}
.mappe-treffer-karte:hover {
  background: var(--muted-bg, #f8f9fa);
}
.mappe-treffer-titel {
  font-weight: 600;
  color: var(--accent);
  text-decoration: none;
  flex: 1 1 auto;
  min-width: 12rem;
}
.mappe-treffer-titel:hover { text-decoration: underline; }
.mappe-treffer-az {
  font-family: ui-monospace, "SF Mono", Menlo, monospace;
  font-size: 0.88em;
  color: var(--muted);
}
.mappe-treffer-anker {
  font-size: 0.88em;
  color: var(--muted);
}
.mappe-treffer-dokcount {
  font-size: 0.85em;
  color: var(--muted);
  margin-left: auto;
}
.mappe-treffer-status-geschlossen {
  background: rgba(0, 0, 0, 0.02);
  opacity: 0.85;
}
.chip-status {
  background: #fff3cd;
  color: #8a6d3b;
  border: 1px solid #ffeeba;
}
.mappe-treffer-leer {
  padding: 1.5rem 0.5rem;
  color: var(--muted);
  text-align: center;
  font-style: italic;
}
.mappe-leer {
  padding: 1.5rem 0.5rem;
  color: var(--muted);
}

/* ── Profil-Seite (E-023 Phase 4b) ─────────────────────────────── */
a.user {
  /* Username im Header bleibt optisch unauffaellig, wird aber
     klickbar zur Profil-Seite. */
  color: var(--muted);
  text-decoration: none;
  padding: 0.15rem 0.35rem;
  border-radius: var(--radius);
}
a.user:hover { color: var(--accent); background: var(--accent-soft); }

.profil { max-width: 760px; margin: 1.5rem auto; padding: 0 1rem; }
.profil-kopf { margin-bottom: 1.5rem; }
.profil-erklaerung { color: var(--muted); }
.profil-erfolg {
  background: var(--accent-soft);
  border: 1px solid var(--accent);
  color: var(--accent);
  padding: 0.5rem 0.8rem;
  border-radius: var(--radius);
  margin: 0 0 1rem 0;
}
.profil-block {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 1rem 1.2rem;
  margin-bottom: 1.2rem;
}
.profil-block-hinweis {
  color: var(--muted);
  font-size: 0.92em;
  margin: 0 0 0.8rem 0;
}
.profil-stamm { display: grid; grid-template-columns: 11rem 1fr; gap: 0.4rem 1rem; margin: 0; }
.profil-stamm dt { color: var(--muted); }
.profil-stamm dd { margin: 0; }
.profil-stamm-slug { color: var(--muted); }
.profil-stamm-leer { color: var(--muted); font-style: italic; }

.profil-rollen { list-style: none; padding: 0; margin: 0; }
.profil-rollen-eintrag {
  display: flex;
  align-items: baseline;
  gap: 0.4rem;
  padding: 0.3rem 0;
  border-bottom: 1px dashed var(--border);
}
.profil-rollen-eintrag:last-child { border-bottom: none; }
.profil-rollen-name { font-weight: 600; }
.profil-rollen-bereich { color: var(--muted); }
.profil-rollen-leer { color: var(--muted); font-style: italic; }

.profil-badge {
  display: inline-block;
  font-size: 0.78em;
  padding: 0.05rem 0.5rem;
  border-radius: 999px;
  margin-left: 0.3rem;
}
.profil-badge-idm { background: var(--accent-soft); color: var(--accent); }
.profil-badge-manuell { background: #fff3cd; color: #8a6d3b; }
.profil-badge-admin { background: #f8d7da; color: #842029; }

.profil-anzeige-feld { border: none; padding: 0; margin: 0; }
.profil-anzeige-option {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 0.2rem 0.6rem;
  padding: 0.5rem 0;
  border-bottom: 1px dashed var(--border);
  cursor: pointer;
}
.profil-anzeige-option:last-of-type { border-bottom: none; }
.profil-anzeige-option input[type="radio"] { grid-row: span 2; align-self: start; margin-top: 0.25rem; }
.profil-anzeige-label { font-weight: 600; }
.profil-anzeige-erklaerung { color: var(--muted); font-size: 0.92em; }
.profil-anzeige-aktionen { margin-top: 0.8rem; }

/* Farbschema-Auswahl: Reihe klickbarer Swatch+Label-Chips. Radio bleibt
   sichtbar (klare Auswahl ohne :has — Barrierefreiheit); :has hebt zusätzlich
   den gewählten Chip hervor. */
.profil-farbe-feld {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
  border: 0;
  padding: 0;
  margin: 0 0 0.4rem;
}
.profil-farbe-option {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.4rem 0.7rem;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  cursor: pointer;
}
.profil-farbe-option:has(input:checked) {
  border-color: var(--accent);
  background: var(--accent-soft);
}
.profil-farbe-swatch {
  width: 1.25rem;
  height: 1.25rem;
  border-radius: 50%;
  border: 1px solid rgba(0, 0, 0, 0.15);
  flex: none;
}
.profil-farbe-label { font-weight: 600; }

/* ── Admin-Statistik (Sparkline + Helper) ──────────────────────── */
.admin-statistik .text-muted { color: var(--muted); font-style: italic; }
.sparkline { display: block; max-width: 100%; height: 40px; }
.sparkline-bar { fill: var(--accent); opacity: 0.85; }
.sparkline-bar:hover { opacity: 1; }
.sparkline-leer { fill: var(--muted); font-size: 11px; }
.sparkline-skala {
  display: block;
  color: var(--muted);
  font-size: 0.78em;
  margin-top: 0.1rem;
}

/* Schnittstellen-Puls: stille Quelle visuell hervorheben. */
.admin-statistik .schnittstelle-inaktiv td {
  background: color-mix(in srgb, var(--warn) 8%, transparent);
}
.schnittstelle-inaktiv-badge {
  display: inline-block;
  margin-left: 0.4rem;
  padding: 0.05rem 0.4rem;
  border-radius: 999px;
  background: var(--warn);
  color: #fff;
  font-size: 0.72em;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

/* ── E-029.4b: Dokumenttyp-Override-Status + Inline-Übersteuern ──── */
.badge {
  display: inline-block;
  font-size: 0.78rem;
  line-height: 1.3;
  padding: 0.05rem 0.45rem;
  border-radius: var(--radius);
  border: 1px solid var(--border);
  white-space: nowrap;
}
.badge-geerbt { color: var(--muted); background: var(--bg); }
.badge-eigene {
  color: var(--accent);
  background: var(--accent-soft);
  border-color: var(--accent-soft);
}
.badge-deaktiviert {
  color: var(--warn);            /* AA gegen den hellen Badge-Grund */
  background: #f6e9e0;
  border-color: #e3c8b6;
}

/* Deaktivierte Zeile dezent zurücknehmen — Badge bleibt kontrastreich. */
.zeile-deaktiviert td { color: var(--muted); }

.td-aktionen { white-space: nowrap; }

.link-disabled { color: var(--muted); cursor: not-allowed; }

.button-link {
  background: none;
  border: none;
  padding: 0;
  color: var(--accent);
  text-decoration: underline;
  cursor: pointer;
  font: inherit;
}
.button-link:hover { color: var(--fg); }

.form-warnhinweis {
  color: var(--warn);
  background: #fbf3ec;
  border-left: 3px solid var(--warn);
  padding: 0.4rem 0.6rem;
  font-size: 0.85rem;
  margin: 0.4rem 0;
  border-radius: 0 var(--radius) var(--radius) 0;
}

.dt-uebersteuern { margin: 0.1rem 0; }
.dt-uebersteuern > summary { cursor: pointer; color: var(--accent); font-size: 0.9rem; }
.dt-uebersteuern[open] > summary { font-weight: 600; }
.dt-uebersteuern-slot { min-width: 22rem; padding: 0.4rem 0; }
.dt-uebersteuern-form textarea { width: 100%; }

/* ── Umlaufmappe (E-033) ──────────────────────────────────────────
   Bewusst ZURÜCKHALTEND/sekundär: der Umlauf ist ein Nebenwerkzeug der
   Akte/des Dokuments, kein Hauptbereich. Kein Flash, keine eigene
   Sektion-Optik. Nutzt durchgängig die Tokens (--accent, --accent-soft,
   --muted, --border, --radius) — keine neuen Hardcoded-Akzentfarben.
   Wording-Pflicht „Abzeichnen" lebt im Markup (umlauf_*.html). */

/* Dezent abgesetzter Block, weniger prominent als eine Hauptsektion:
   nur eine feine Oberkante + etwas Luft, keine Karte/kein Schatten. */
.umlauf-bereich {
  margin-top: 1.25rem;
  padding-top: 1rem;
  border-top: 1px solid var(--border);
}

/* Einstieg als <details>-Toggle — Sekundär-Aktion, kein großer Primär-Knopf. */
.umlauf-start-toggle { margin: 0; }
.umlauf-start-toggle > summary.umlauf-start-cta {
  list-style: none;
  cursor: pointer;
  display: inline-block;
  font-size: 0.9rem;
  color: var(--accent);
  padding: 0.3rem 0.1rem;
}
.umlauf-start-cta::-webkit-details-marker { display: none; }
.umlauf-start-cta::before {
  content: "▶";
  font-size: 0.7em;
  margin-right: 0.4rem;
  color: var(--muted);
}
.umlauf-start-toggle[open] > summary.umlauf-start-cta::before { content: "▼"; }
.umlauf-start-cta:hover { text-decoration: underline; }

/* Formular: ruhig, mit etwas Abstand zum Toggle. */
.umlauf-start-form {
  margin-top: 0.75rem;
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
}
.umlauf-start-form fieldset {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 0.6rem 0.8rem 0.8rem;
  margin: 0;
}
.umlauf-start-form legend {
  font-size: 0.8rem;
  color: var(--muted);
  padding: 0 0.3rem;
}

/* Dokument-Auswahl. Viewer-Einstieg: ein fixes Dokument (Label).
   Aktendeckel: die Auswahl passiert im Baum darüber (siehe .dok-umlauf-check). */
.umlauf-doc-fix { margin: 0; font-size: 0.9rem; }
.umlauf-doc-baum-hinweis {
  margin: 0;
  font-size: 0.85rem;
  color: var(--muted);
}

/* E-033: Auswahl-Checkbox an JEDER Baum-Zeile — gehört per form="umlauf-form"
   zum Start-Panel im Header. Default unsichtbar; nur sichtbar, solange das
   Umlauf-<details> im Header offen ist (CSS-Reveal via :has(), kein JS).
   Greift NUR auf dem Aktendeckel (.dokumente-bereich enthält das umlauf-toggle);
   im Viewer-Sidebar / in Suchergebnissen gibt es weder Toggle noch Checkbox. */
.dok-umlauf-check { display: none; }
.dokumente-bereich:has(.umlauf-toggle[open]) .dok-umlauf-check {
  display: inline-flex;
  flex: none;
  margin-right: 0.1rem;
}
/* E-033: Im Umlauf-Auswahlmodus ALLE Dokumenttyp-Gruppen aufklappen (die
   Cover-Auto-Offen-Logik ignorieren), damit JEDE Checkbox erreichbar ist —
   auch in sonst zugeklappten Gruppen. Inhalt sichtbar machen + Marker
   konsistent auf "offen" drehen. Reveal via :has(), kein JS (analog oben). */
.dokumente-bereich:has(.umlauf-toggle[open]) .dok-gruppe > .dokumente-in-gruppe {
  display: block;
}
.dokumente-bereich:has(.umlauf-toggle[open]) .dok-gruppe-summary::before {
  transform: rotate(90deg);
}

/* Schritt-Zeile: Empfänger + Aktion + Frist nebeneinander, bricht sauber
   um (Flexbox + gap + wrap) auf schmalen Breiten. */
.umlauf-schritt-zeile {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
  padding: 0.3rem 0;
}
/* Empfänger-Block: sichtbares Name-Feld + (versteckte UUID) + Trefferliste.
   ``position: relative`` als Anker für das absolut positionierte Dropdown. */
.umlauf-empf {
  position: relative;
  flex: 1 1 12rem;
  min-width: 9rem;
}
.umlauf-empf-name {
  width: 100%;
  box-sizing: border-box;
}
.umlauf-schritt-zeile > select[name="aktion"] { flex: 0 1 auto; }

/* ✕-Knopf nachgeladener Zeilen (nur ab der zweiten Person; die erste bleibt).
   Rechts ausgerichtet (margin-left:auto), gleiche dezente Optik wie der
   Such-Filter-Entfernen-Knopf. Entfernen via umlauf-schritt-zeile-entfernen.js. */
.umlauf-schritt-entfernen {
  margin-left: auto;
  background: transparent;
  border: none;
  color: var(--muted);
  font-size: 1.25rem;
  line-height: 1;
  padding: 0.1rem 0.5rem;
  cursor: pointer;
  border-radius: var(--radius);
}
.umlauf-schritt-entfernen:hover {
  color: var(--text);
  background: var(--bg);
}

/* Typeahead-Dropdown: kompakte Trefferliste unter dem Name-Feld. Leer →
   unsichtbar (kein Rahmen-Geist). */
.umlauf-empf-treffer {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  z-index: 20;
  max-height: 14rem;
  overflow-y: auto;
  background: var(--bg);
  box-shadow: var(--shadow);
}
.umlauf-empf-treffer:empty {
  display: none;
}
.umlauf-empf-treffer:not(:empty) {
  border: 1px solid var(--border);
  border-radius: var(--radius);
}
/* Treffer-Zeile: volle Breite, Name groß, E-Mail klein darunter. */
.umlauf-empf-option {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  width: 100%;
  padding: 0.3rem 0.55rem;
  border: none;
  border-bottom: 1px solid var(--border);
  background: transparent;
  color: inherit;
  text-align: left;
  cursor: pointer;
  font-size: 0.9rem;
}
.umlauf-empf-option:last-child { border-bottom: none; }
.umlauf-empf-option small {
  color: var(--muted);
  font-size: 0.75rem;
}
.umlauf-empf-option:hover,
.umlauf-empf-option:focus {
  background: var(--accent-soft);
  color: var(--accent);
  outline: none;
}

/* Frist-Gruppe: Label + nativer Datepicker + Schnell-Chips. */
.umlauf-frist {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem;
}
/* Dezentes „Frist"-Label vor dem date-Feld. */
.umlauf-frist-label {
  display: inline-flex;
  flex-direction: column;
  gap: 0.1rem;
}
.umlauf-frist-label-text {
  font-size: 0.72rem;
  color: var(--muted);
  line-height: 1.2;
}
.umlauf-frist-input {
  flex: none;
}
.umlauf-frist-chips {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 0.25rem;
}
/* Kleine, sekundäre Chip-Buttons (Pillen-Look der bestehenden .chip). */
.umlauf-frist-chip {
  font-size: 0.72rem;
  line-height: 1.4;
  padding: 0.1rem 0.5rem;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--accent-soft);
  color: var(--accent);
  cursor: pointer;
}
.umlauf-frist-chip:hover { border-color: var(--accent); }

/* „+ weitere Person" — sekundärer Knopf, klar untergeordnet. */
.umlauf-add-zeile {
  margin-top: 0.45rem;
  font-size: 0.85rem;
  padding: 0.3rem 0.7rem;
  border: 1px dashed var(--border);
  border-radius: var(--radius);
  background: transparent;
  color: var(--accent);
  cursor: pointer;
}
.umlauf-add-zeile:hover { border-style: solid; border-color: var(--accent); }

/* Begleittext: eigene Zeile, volle Breite (vorher schmal — „nur drei Worte"). */
.umlauf-begleittext { display: block; }
.umlauf-begleittext-label {
  display: block;
  font-size: 0.8rem;
  color: var(--muted);
  margin-bottom: 0.25rem;
}
.umlauf-begleittext textarea {
  width: 100%;
  min-height: 4.5rem;
  resize: vertical;
}

/* Reihenfolge-Wahl: klare Radio-Optionen mit untergeordneter Erklärung. */
.umlauf-modus-zeile {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: baseline;
  gap: 0.2rem 0.5rem;
  padding: 0.25rem 0;
}
.umlauf-modus-zeile input[type="radio"] { grid-row: span 2; align-self: center; }
.umlauf-modus-zeile small {
  grid-column: 2;
  color: var(--muted);
  font-size: 0.8rem;
}

/* Vorgangsdetails-Felder. ``.vorgang-feld`` ist geteilt (umlauf_neu.html +
   vorgang_neu.html) und war ungestylt — die <label>s liefen inline zusammen.
   Jetzt: jedes Feld eine eigene Zeile (Label klein/gedämpft, Eingabe darunter,
   volle Breite) — gleiche Sprache wie ``.form-row`` / ``.umlauf-begleittext``. */
.umlauf-neu-details-felder,
.vorgang-form {
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
}
.umlauf-neu-details-felder { margin-top: 0.85rem; }
.vorgang-feld {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}
.vorgang-feld > span {
  font-size: 0.8rem;
  color: var(--muted);
}
.vorgang-feld input,
.vorgang-feld select {
  width: 100%;
  box-sizing: border-box;
}
/* „Nur lesen" (ADR-0009) liegt mit in den Vorgangsdetails — Checkbox + Text in
   EINER Zeile (Schalter), nicht als Feld-mit-Label-darüber; etwas Abstand nach
   oben trennt es von den Eingabefeldern. Auch im Aktendeckel-Start genutzt. */
.umlauf-nur-lesen {
  display: flex;
  align-items: baseline;
  gap: 0.45rem;
  font-size: 0.85rem;
  margin-top: 0.25rem;
}

.umlauf-disclaimer {
  font-size: 0.78rem;
  color: var(--muted);
  margin: 0;
  line-height: 1.4;
}

/* Primärer Absende-Knopf (der EINE prominente Knopf im Formular). */
.umlauf-start-absenden {
  align-self: flex-start;
  padding: 0.45rem 1rem;
  background: var(--accent);
  color: white;
  border: none;
  border-radius: var(--radius);
  cursor: pointer;
}
.umlauf-start-absenden:hover { filter: brightness(1.08); }

/* Laufender Stand: leise, wenn nichts läuft (siehe umlauf_stand.html). */
.umlauf-stand { margin: 0; }
.umlauf-hinweis {
  font-size: 0.88rem;
  color: var(--accent);
  background: var(--accent-soft);
  border-radius: var(--radius);
  padding: 0.4rem 0.6rem;
  margin: 0.6rem 0 0;
}
.umlauf-stand-h2 { font-size: 1rem; margin: 0.9rem 0 0.4rem; }
.umlauf-eintrag {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 0.6rem 0.75rem;
  margin-top: 0.5rem;
  background: white;
}
.umlauf-eintrag-kopf {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
}
.umlauf-meta { font-size: 0.8rem; color: var(--muted); }
.umlauf-zurueckruf-form { margin: 0 0 0 auto; }
.umlauf-zurueckruf {
  font-size: 0.8rem;
  padding: 0.2rem 0.6rem;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: transparent;
  color: var(--muted);
  cursor: pointer;
}
.umlauf-zurueckruf:hover { color: var(--warn); border-color: var(--warn); }

.umlauf-schritte {
  list-style: none;
  margin: 0.5rem 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
}
.umlauf-schritt {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.88rem;
}
.umlauf-schritt-erledigt { color: var(--muted); }
.umlauf-schritt-aktion {
  font-variant: small-caps;
  font-size: 0.8rem;
  color: var(--muted);
}
.umlauf-schritt .umlauf-frist { font-size: 0.8rem; color: var(--muted); }

/* Status-Pillen: kleine, farblich unterscheidbare Pillen (läuft/dran/wartet/
   fertig). Gedeckte Soft-Hintergründe wie die bestehenden Status-Badges. */
.umlauf-status-pille {
  display: inline-block;
  font-size: 0.72rem;
  line-height: 1.4;
  padding: 0.05rem 0.5rem;
  border-radius: 999px;
  border: 1px solid transparent;
}
.umlauf-status-laeuft {
  background: var(--accent-soft);
  color: var(--accent);
  border-color: var(--accent-soft);
}
.umlauf-status-dran {
  background: #fff3cd;            /* dezentes „jetzt dran" — wie .chip-status */
  color: #8a6d3b;
  border-color: #ffeeba;
}
.umlauf-status-wartet {
  background: var(--bg);
  color: var(--muted);
  border-color: var(--border);
}
.umlauf-status-fertig {
  background: #e4f0e8;           /* waldgrün-soft = „erledigt" */
  color: #1f6b3a;
  border-color: #cfe5d7;
}

@media (max-width: 40rem) {
  .umlauf-empf { flex-basis: 100%; }
}

/* KI-Zusammenfassung (Phase L2) — ephemeres HTMX-Ergebnis-Partial
   (app/templates/_partials/ki_zusammenfassung.html). Der Text ist gerendertes
   leichtes Markdown (Absätze/Listen/<br> via app.ui.markdown_leicht) — daher
   Block-Styling der Kind-Elemente statt white-space-Tricks; behebt den
   „KI-Output wird nicht formatiert"-Bug. */
.ki-zf-ergebnis {
  margin: .75rem 0;
  padding: .75rem 1rem;
  background: rgba(29, 78, 216, .05);
  border: 1px solid rgba(29, 78, 216, .15);
  border-left: 3px solid #1d4ed8;
  border-radius: .5rem;
}
.ki-zf-label {
  margin: 0 0 .4rem;
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  opacity: .7;
}
.ki-zf-text {
  margin: 0;
  overflow-wrap: anywhere; /* lange Tokens/URLs brechen statt zu overflowen */
}
/* Der KI-Text ist jetzt gerendertes leichtes Markdown (Absätze/Listen/fett);
   Block-Ränder zähmen, damit das Panel kompakt bleibt. */
.ki-zf-text > :first-child { margin-top: 0; }
.ki-zf-text > :last-child { margin-bottom: 0; }
.ki-zf-text p { margin: .5rem 0; }
.ki-zf-text ul, .ki-zf-text ol { margin: .5rem 0; padding-left: 1.3rem; }
.ki-zf-text li { margin: .15rem 0; }
.ki-zf-text code {
  background: rgba(0, 0, 0, .06); padding: .05rem .3rem; border-radius: .25rem;
  overflow-wrap: anywhere; /* nicht vererbt → eigene Regel für lange Tokens/URLs */
}
.ki-zf-fehler {
  margin: .75rem 0;
  padding: .6rem .9rem;
  background: #fff7e6;
  border-left: 3px solid #92560a;
  border-radius: .4rem;
  color: #92560a;
  font-size: .92rem;
}
