/* ─────────────────────────────────────────────────────────────
 * Single source of truth for all in-app SPA styles:
 *   - /admin/customers/         (admin SPA)
 *   - /customers/               (customer-portal SPA)
 *   - /customers/auth/          (magic-link login + verify)
 *
 * Was previously inlined in each HTML's <style>, now zentral hier.
 * Built on top of /css/style.css (brand vars, layout) and
 * /js/use-case.css (auth-card, form-grid, form-group, btn, status).
 * ─────────────────────────────────────────────────────────────*/

/* ── Customer-Portal: customer-bar at the top (/customers/) ── */
.customer-bar {
  display: flex; align-items: center; gap: 1rem;
  max-width: var(--max-width); margin: 0 auto; padding: 1.5rem 2rem 0;
}
.customer-bar img.logo { height: 44px; width: auto; }
.customer-bar .who { font-size: 1rem; font-weight: 600; color: var(--text); }
.customer-bar .meta { font-size: 0.8rem; color: var(--text-muted); }
.customer-bar .customer-logout { margin-left: auto; font-size: 0.85rem; color: var(--text-muted); text-decoration: none; }
.customer-bar .customer-logout:hover { color: var(--accent); }

/* Test-Modus (Admin impersoniert Customer): warnender Streifen + Hinweis. */
.customer-bar.impersonating { border-top: 3px solid var(--warning); padding-top: 1.25rem; }
.customer-bar.impersonating .meta { color: var(--warning); font-weight: 600; }
.customer-bar.impersonating .meta a { color: var(--warning); text-decoration: underline; }

/* ── Customer-Portal: use-case picker tiles ── */
/* Volle Breite, vertikal gestapelt — bei nur einem oder zwei Use-Cases sah
 * das 3-Spalten-Grid (Persona-1-Variante) lückenhaft aus. Eine einfache
 * Liste skaliert von 1 bis n Tiles ohne weisse Spalten. */
.uc-grid {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  margin: 1rem 0 2rem;
}

.uc-tile {
  display: block;
  padding: 1.25rem 1.5rem;
  border: 1px solid var(--border);
  border-left: 4px solid var(--accent);
  border-radius: 8px;
  background: var(--bg-card);
  text-decoration: none;
  color: var(--text);
  transition: transform 0.1s, box-shadow 0.1s;
}
.uc-tile:hover { transform: translateY(-1px); box-shadow: var(--shadow-card); text-decoration: none; }
.uc-tile h3 { margin: 0 0 0.4rem; color: var(--primary); }
.uc-tile p { margin: 0; color: var(--text-muted); font-size: 0.9rem; }
.uc-tile .uc-outcome { margin-top: 0.6rem; color: var(--text); font-size: 0.85rem; line-height: 1.4; }
.uc-tile .uc-outcome strong { color: var(--accent); font-weight: 700; }
@media (prefers-color-scheme: dark) { .uc-tile h3 { color: var(--text); } }

/* Runner-Page: Outcome-Banner direkt unter dem Titel, Eingabe-Hinweis vor
   dem ersten Step. Beide nur sichtbar wenn vom Admin gepflegt (#11224). */
.uc-outcome-banner { color: var(--text); }
.uc-outcome-banner strong { color: var(--accent); font-weight: 700; }
.uc-input-hint {
  margin: 0 0 1rem;
  font-size: 0.9rem;
  color: var(--text-muted);
}

/* Zusatz-Inputs (Phase 1): benannte Freitext-/Dokument-Felder, die ein Task
   zusätzlich zum Primär-Input konsumiert. Sitzt zwischen Input-Area und Run-Button. */
.extra-inputs__title {
  margin: 1.25rem 0 0.5rem;
  font-size: 0.95rem;
}
.extra-input {
  margin-bottom: 0.75rem;
}
.extra-input__label {
  display: block;
  margin-bottom: 0.3rem;
  font-size: 0.9rem;
  font-weight: 600;
}
.extra-input__opt {
  font-weight: 400;
  color: var(--text-muted);
}
.extra-input textarea {
  width: 100%;
  min-height: 4.5rem;
}

/* Step-Subtitle (#11224 B1): muted Zeile direkt unter dem Step-Titel. */
.step-subtitle {
  margin: -0.25rem 0 0.75rem;
  font-size: 0.9rem;
  color: var(--text-muted);
}

/* Step-Retry (#11224 D1). Primary-Button-Style standalone, weil
   die .download-bar-Variante nur in download-bar-Containern greift. */
.step-retry {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  flex-wrap: wrap;
  margin-top: 0.5rem;
}
/* Button selbst nutzt .btn-primary aus style.css (single source of truth). */
.step-retry-hint {
  color: var(--text-muted);
  font-size: 0.85rem;
}

/* ROI-Splash (#11224 C2): finaler Step zeigt Zeit-/Geld-Ersparnis. */
.roi-splash {
  text-align: center;
  padding: 2rem 1rem;
}
.roi-splash-headline {
  margin: 0 0 1rem;
  font-size: 1rem;
  color: var(--text-muted);
}
.roi-splash-figure {
  font-size: 2.5rem;
  font-weight: 700;
  color: var(--accent-text);
  letter-spacing: 0.02em;
  font-variant-numeric: tabular-nums;
}
.roi-splash-subline {
  margin: 1rem 0 0;
  font-size: 0.9rem;
  color: var(--text-muted);
}

/* Sprache-Picker (#11224 B2): rendert unter der Audio-Aufnahme. */
.audio-language-picker {
  margin-top: 1rem;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  max-width: 24rem;
}
.audio-language-picker label {
  font-size: 0.9rem;
  color: var(--text);
  font-weight: 600;
}
.audio-language-picker select {
  padding: 0.5rem 0.7rem;
  border-radius: 6px;
  border: 1px solid var(--border);
  background: var(--bg);
  color: var(--text);
  font-size: 0.95rem;
}

/* ── Advisor-Kontakt-Karte am Ende der Use-Case-Liste ── */
.advisor-card {
  margin: 2.5rem 0 1rem;
  padding: 1.5rem;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--bg-light);
}
.advisor-card-header h2 { margin: 0 0 0.25rem; font-size: 1.15rem; }
.advisor-card-header p  { margin: 0 0 1rem; color: var(--text-muted); font-size: 0.9rem; }
.advisor-card-body {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  align-items: flex-start;
}
@media (min-width: 600px) {
  .advisor-card-body { flex-direction: row; align-items: center; }
}
.advisor-photo {
  width: 96px;
  height: 96px;
  border-radius: 50%;
  object-fit: cover;
  flex-shrink: 0;
  background: var(--bg-card);
}
.advisor-initials {
  width: 96px;
  height: 96px;
  border-radius: 50%;
  background: var(--accent);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 2rem;
  font-weight: 600;
  flex-shrink: 0;
}
.advisor-meta { display: flex; flex-direction: column; gap: 0.4rem; }
.advisor-meta strong { font-size: 1.05rem; }
.advisor-rolle { color: var(--text-muted); font-size: 0.9rem; }
.advisor-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-top: 0.5rem;
}
.advisor-actions a { font-size: 0.95rem; padding: 0.5rem 1rem; min-height: 44px; display: inline-flex; align-items: center; }

/* ── Customer-Portal: workflow runner step output ──
   step-output ist nur ein semantischer Container, KEIN visueller Rahmen.
   Die Schritt-Karte (auth-card) liefert bereits den einzigen Rahmen pro
   Schritt; ein zweiter step-output-Rahmen drumherum laesst das Layout
   immer schmaler und doppelt-eingerueckt wirken. */
.step-output {
  margin: 0.5rem 0 1.5rem;
}
.step-output pre { white-space: pre-wrap; font-size: 0.85rem; margin: 0; }
/* Textarea explizit auf Dark-Theme. Browser-Default ist weiss, das sticht
   im dunklen Customer-Portal scharf heraus. */
.step-output textarea {
  width: 100%; min-height: 160px;
  padding: 0.6rem 0.75rem;
  font-family: 'SF Mono', 'Fira Code', monospace; font-size: 0.85rem;
  background: var(--bg); color: var(--text);
  border: 1px solid var(--border); border-radius: 4px;
  box-sizing: border-box;
}

/* ── Customer-Portal: per-step status with spinner + timer ── */
.step-status { display: flex; align-items: center; gap: 0.6rem; font-size: 0.9rem; min-height: 1.6em; }
.step-status .spinner {
  width: 14px; height: 14px; border-radius: 50%;
  border: 2px solid var(--border); border-top-color: var(--accent);
  animation: step-spin 0.9s linear infinite;
  flex-shrink: 0;
}
.step-status.success .spinner,
.step-status.error .spinner { display: none; }
.step-status.success::before { content: '✓'; color: var(--success); font-weight: 700; font-size: 1rem; }
.step-status.error::before   { content: '✕'; color: var(--danger); font-weight: 700; font-size: 1rem; }
.step-status .timer { margin-left: auto; font-size: 0.75rem; color: var(--text-muted); font-variant-numeric: tabular-nums; }
@keyframes step-spin { to { transform: rotate(360deg); } }

/* ── Customer-Portal: structured output as field list ── */
.field-list { display: grid; grid-template-columns: max-content 1fr; gap: 0.4rem 1rem; font-size: 0.9rem; }
.field-list dt { color: var(--text-muted); font-weight: 600; }
.field-list dd { margin: 0; color: var(--text); white-space: pre-wrap; word-break: break-word; }
.field-list dd ul { margin: 0; padding-left: 1.2em; }

/* ── Foldable "technical details" block (customer + admin) ── */
.step-details { margin-top: 0.5rem; }
.step-details > summary {
  cursor: pointer;
  font-size: 0.75rem;
  color: var(--text-muted);
  padding: 0.25rem 0;
  list-style: none;
  user-select: none;
}
.step-details > summary::before { content: '▸ '; display: inline-block; width: 0.8em; transition: transform 0.15s; }
.step-details[open] > summary::before { transform: rotate(90deg); }
.step-details > summary:hover { color: var(--text); }
.step-details .step-details-body {
  margin-top: 0.4rem; padding: 0.6rem 0.75rem;
  background: var(--bg); border: 1px solid var(--border); border-radius: 4px;
  font-family: 'SF Mono', 'Fira Code', monospace; font-size: 0.75rem;
  color: var(--text-muted); white-space: pre-wrap; word-break: break-word;
}

/* ── Drag-and-drop file upload (used by both customer + admin) ── */
.file-upload { transition: border-color 0.15s; }
.file-upload.dragover { border-color: var(--accent); }

/* ── Auth-landing: /customers/auth/ ── */
.auth-landing { max-width: 480px; margin: 3rem auto; padding: 0 1rem; }
.auth-landing h1 { font-size: 1.5rem; margin-bottom: 0.5rem; }
.auth-landing .lead { color: var(--text-muted); margin-bottom: 1.5rem; }
.auth-landing .status { margin-top: 1rem; min-height: 1.4em; font-size: 0.9rem; }
.auth-landing .status.error { color: var(--danger); }
.auth-landing .status.success { color: var(--success); }
.auth-landing .status.loading { color: var(--text-muted); }
.auth-landing label { font-size: 0.85rem; color: var(--text-muted); margin-bottom: 0.3rem; display: block; }
.auth-landing input[type="email"] {
  width: 100%; padding: 0.7rem 0.85rem;
  border: 1px solid var(--border); border-radius: 4px;
  font-size: 0.95rem; background: var(--bg); color: var(--text);
  box-sizing: border-box;
}
.auth-landing input[type="email"]:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px rgba(151, 191, 13, 0.18); }
.auth-landing button {
  width: 100%; margin-top: 1rem; padding: 0.75rem 1rem;
  background: var(--accent); color: var(--primary);
  border: none; border-radius: 4px;
  font-weight: 700; font-size: 0.95rem; cursor: pointer;
}
.auth-landing button:disabled { opacity: 0.5; cursor: not-allowed; }

/* ── Admin SPA: editor row layout (label + input pair) ── */
.row { display: grid; grid-template-columns: 160px 1fr; gap: 0.6rem; align-items: center; margin-bottom: 0.5rem; }
.row label { font-size: 0.78rem; font-weight: 600; color: var(--primary); text-transform: uppercase; letter-spacing: 0.01em; }
.row input, .row select, .row textarea {
  padding: 0.5rem 0.65rem; border: 1px solid var(--border); border-radius: 4px;
  font-size: 0.85rem; background: var(--bg); color: var(--text); font-family: inherit;
}
.row textarea { font-family: 'SF Mono', 'Fira Code', Consolas, monospace; min-height: 8rem; resize: vertical; }
.row input[type=text]:focus, .row textarea:focus, .row select:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px rgba(151,191,13,0.18); }
@media (max-width: 720px) { .row { grid-template-columns: 1fr; } }
@media (prefers-color-scheme: dark) { .row label { color: var(--text); } }

/* ── Admin SPA: drag-and-drop task cards ── */
.task-list { margin: 1rem 0; }
.task-card {
  display: grid;
  grid-template-columns: 1.2rem 1fr auto;
  gap: 0.75rem;
  padding: 0.75rem 1rem;
  border: 1px solid var(--border);
  border-left: 3px solid var(--accent);
  border-radius: 6px;
  margin-bottom: 0.5rem;
  background: var(--bg-card);
  cursor: grab;
}
.task-card.dragging { opacity: 0.4; }
.task-card .grip { color: var(--text-muted); user-select: none; }
.task-card .meta { font-size: 0.85rem; }
.task-card .meta strong { color: var(--primary); }
.task-card .meta .endpoint { color: var(--text-muted); font-size: 0.75rem; font-family: 'SF Mono', monospace; }
.task-card .actions { display: flex; gap: 0.5rem; }
.task-card .actions button { font-size: 0.75rem; padding: 0.3rem 0.6rem; }
.task-card.drop-before { border-top: 3px solid var(--accent); }
.task-card.drop-after { border-bottom: 3px solid var(--accent); }
@media (prefers-color-scheme: dark) {
  .task-card .meta strong { color: var(--text); }
}

/* ── Admin SPA: breadcrumb + status pills ── */
.nav-back { font-size: 0.85rem; margin-bottom: 0.5rem; color: var(--accent); }
.nav-back a { color: var(--accent); text-decoration: none; }
.nav-back a:hover { text-decoration: underline; }
/* Pill-Stil kommt zentral aus @xware/design-system (.ds-pill / .ds-pill-success
   / .ds-pill-danger). Kleiner Links-Abstand, weil die Pill inline hinter einer
   Ueberschrift sitzt. */
.ds-pill { margin-left: 0.4rem; }

/* ── Admin SPA: Test-Fixtures als Tabelle (analog Kataloge) ──
   Frueher Karten-Grid, jetzt Tabellen-Zeilen — ist kompakter und
   konsistent mit dem Catalogs-Block direkt darueber. Status-Zelle
   bleibt live-update-faehig ueber id="fix-status-{slug}".
*/
.fixture-card-kind {
  display: inline-block;
  padding: 0.1rem 0.45rem;
  border-radius: 999px;
  font-size: 0.7rem;
  background: var(--bg);
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.fixture-card-size { color: var(--text-muted); }

/* ── In-App-Datentabellen (Admin SPA): generisches Pattern fuer
   uebersichtliche Tabellen wie fixture-table und runs-table. Single
   source — bitte hier ergaenzen statt eigene .x-table-Variante. ── */
.spa-table { width: 100%; border-collapse: collapse; font-size: 0.85rem; }
.spa-table th, .spa-table td {
  text-align: left;
  padding: 0.5rem 0.6rem;
  border-bottom: 1px solid var(--border, rgba(255,255,255,0.08));
  vertical-align: top;
}
.spa-table th {
  color: var(--text-muted);
  text-transform: uppercase;
  font-size: 0.7rem;
  letter-spacing: 0.04em;
}
.spa-table .run-ok { color: var(--success, #2a8); font-weight: 600; }
.spa-table .run-fail { color: var(--danger, #d33); font-weight: 600; }
.spa-table .live-counter { font-variant-numeric: tabular-nums; }
.spa-table select {
  font-size: 0.85rem;
  padding: 0.35rem 0.5rem;
  background: var(--bg);
  color: var(--text);
  border: 1px solid var(--border, rgba(255,255,255,0.15));
  border-radius: 4px;
}

/* fixture-table = .spa-table reduziert auf 3 Spalten: Slug+Sub-Info,
   Letzter Run, Aktionen. Typ/Datei/Use-Case sind in den Edit-Dialog
   verschoben, der per Klick auf den Slug-Button aufgeht. */
.fixture-table td { vertical-align: middle; }
.fixture-table .btn-sm { margin-right: 0.3rem; }
/* Slug-Spalten enthalten kebab-case-Identifier wie "pflege-meeting", die
   der Browser sonst am Bindestrich umbricht ("pflege-" / "meeting"). */
.fixture-table td code { white-space: nowrap; }
/* Slug-Cell: Slug oben, konfigurierter Use-Case als Subtitle.
   Editieren passiert auf der Runs-Detail-Seite (Details-Button), nicht inline. */
.fixture-slug-sub {
  font-size: 0.78rem;
  color: var(--text-muted);
  margin-top: 0.15rem;
}
.fixture-uc-empty { font-style: italic; }
/* Action-Zelle buendelt Test + Details + Loeschen rechtsbuendig zusammen,
   statt drei Spalten mit unausgeglichenem Whitespace zu erzeugen. */
.fixture-table td.fixture-actions {
  text-align: right;
  white-space: nowrap;
}
.fixture-table td.fixture-actions > * { margin-left: 0.3rem; }

/* Fixture-Edit-Panel auf der Runs-Detail-Seite: Typ + Datei read-only,
   Use-Case-Dropdown plus Speichern-Button + Inline-Feedback. */
.fixture-edit-dl {
  display: grid;
  grid-template-columns: 6rem 1fr;
  row-gap: 0.5rem;
  column-gap: 0.75rem;
  margin: 0 0 1.5rem;
  max-width: 40rem;
}
.fixture-edit-dl dt { color: var(--text-muted); font-size: 0.85rem; }
.fixture-edit-dl dd {
  margin: 0;
  font-size: 0.9rem;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-wrap: wrap;
}
.fixture-edit-dl select { min-width: 14rem; }
.fixture-edit-feedback { font-size: 0.85rem; color: var(--text-muted); }
.fixture-last-run {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.1rem;
  color: inherit;
  text-decoration: none;
}
.fixture-last-run:hover .fixture-last-run__head {
  color: var(--text);
  border-bottom-color: var(--text);
}
.fixture-last-run__head {
  border-bottom: 1px dotted var(--border, rgba(255,255,255,0.15));
}
.fixture-last-run__uc { color: var(--text-muted); font-size: 0.78rem; }
.fixture-last-run__uc code { white-space: nowrap; }
.fixture-last-run .run-ok { color: var(--success, #2a8); font-weight: 600; }
.fixture-last-run .run-fail { color: var(--danger, #d33); font-weight: 600; }

/* runs-table = .spa-table ohne weitere Spezifika; siehe oben. */

.run-meta {
  width: auto;
  margin: 0.5rem 0 1rem;
  font-size: 0.85rem;
}
.run-meta th {
  text-align: left;
  padding: 0.25rem 0.8rem 0.25rem 0;
  color: var(--text-muted);
  font-weight: 500;
}
.run-meta td { padding: 0.25rem 0; }

/* Bewertungs-Block im Run-Detail (Customer-Prozess-Test). */
.run-evaluation { margin: 0.5rem 0 1.2rem; }
.run-evaluation .run-ok { color: var(--success, #2a8); font-weight: 600; }
.run-evaluation .run-fail { color: var(--danger, #d33); font-weight: 600; }
.assertion-list {
  list-style: none;
  padding-left: 0;
  margin: 0.4rem 0 0;
  font-size: 0.9rem;
}
.assertion-list li { margin-bottom: 0.3rem; }
.assertion-list .run-ok { color: var(--success, #2a8); }
.assertion-list .run-fail { color: var(--danger, #d33); }

/* Erwartungs-Editor auf der Fixture-Runs-Seite. */
.expectations-card .lead { margin-bottom: 0.6rem; }
.expectation-row {
  display: flex;
  gap: 0.5rem;
  align-items: center;
  margin-bottom: 0.5rem;
  flex-wrap: wrap;
}
.expectation-row select,
.expectation-row input {
  padding: 0.4rem 0.5rem;
  background: var(--bg);
  color: var(--text);
  border: 1px solid var(--border, rgba(255,255,255,0.15));
  border-radius: 4px;
  font-size: 0.85rem;
}
.expectation-row input[data-exp-field="value"] { flex: 1 1 16rem; min-width: 10rem; }
.expectation-row .expectation-weight { width: 7rem; }

/* Eingebaute Hilfe im Kriterien-Editor (aufklappbar, ersetzt externe Doku). */
.expectations-help { margin: 0.25rem 0 0.75rem; }
.expectations-help summary {
  cursor: pointer;
  color: var(--accent);
  font-size: 0.9rem;
}
.expectations-help-table { margin-top: 0.5rem; font-size: 0.85rem; }
.expectations-help-table td { vertical-align: top; }
.expectations-help-note {
  margin: 0.5rem 0 0;
  font-size: 0.85rem;
  color: var(--text-muted);
}

/* Hinweiszeilen + Schwellen-Feld im Fixture-Arbeitsplatz. */
.fixture-hint {
  display: block;
  margin-top: 0.25rem;
  color: var(--text-muted);
  font-size: 0.8rem;
}
.fixture-threshold-input {
  width: 5.5rem;
  padding: 0.4rem 0.5rem;
  background: var(--bg);
  color: var(--text);
  border: 1px solid var(--border, rgba(255,255,255,0.15));
  border-radius: 4px;
  font-size: 0.9rem;
}

.run-task-list {
  /* list-style:none + padding:0: die echte Task-Nummer kommt aus t.order und
     wird im Markup manuell gedruckt; ein Listen-Marker wuerde doppelt
     nummerieren ("4. 4."). */
  list-style: none;
  padding-left: 0;
  margin: 0.4rem 0 0;
}
.run-task-list li { margin-bottom: 0.6rem; }
.run-task-list pre {
  background: var(--bg);
  padding: 0.5rem;
  border-radius: 4px;
  overflow-x: auto;
  max-height: 280px;
  font-size: 0.72rem;
  white-space: pre-wrap;
  word-break: break-word;
  margin: 0.3rem 0 0;
}
/* Aufklappbarer voller Roh-Output je Task, analog Kundenfrontend
   (.step-details "Technische Details"). */
.run-task-details { margin: 0.3rem 0 0; }
.run-task-details > summary {
  cursor: pointer;
  color: var(--text-muted);
  font-size: 0.78rem;
  user-select: none;
}
.run-task-details[open] > summary { margin-bottom: 0.2rem; }
.run-task-details pre { max-height: 600px; }
.run-task-id { color: var(--text-muted); font-size: 0.72rem; margin-left: 0.4rem; }
/* In-App-Buttons (.btn-primary, .btn-secondary, .btn-sm, .btn-danger)
   leben in css/style.css als single source of truth. Hier nichts mehr. */

/* Slot-Datei-Zeilen im Fixture-Arbeitsplatz (Multi-Slot-Use-Cases, z.B. CV). */
.slot-files-title { margin: 1rem 0 0.25rem; }
.slot-file-row {
  display: flex;
  gap: 0.6rem;
  align-items: center;
  flex-wrap: wrap;
  padding: 0.35rem 0;
  border-bottom: 1px solid var(--border, rgba(255,255,255,0.08));
}
.slot-file-row:last-child { border-bottom: none; }
.slot-file-label { min-width: 12rem; font-weight: 600; font-size: 0.9rem; }
.slot-file-current { min-width: 10rem; font-size: 0.85rem; }
.slot-file-row input[type="file"] { font-size: 0.8rem; max-width: 16rem; }

/* Datei-Eintraege eines multiple-Slots (Name + Entfernen-Knopf pro Datei). */
.slot-file-item {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  margin-right: 0.6rem;
  font-size: 0.85rem;
}

/* Feld-Eingabe (JSON-Pfad) im Kriterien-Editor. */
.expectation-row .expectation-path { flex: 0 1 20rem; min-width: 12rem; }

/* Test-Coverage-Ampel (Kundenliste + Use-Case-Karten): grün alle getestet,
   gelb teilweise, rot keiner, grau keine aktiven Use-Cases. */
.cov-dot { font-size: 0.7rem; vertical-align: middle; line-height: 1; }
.cov-ok { color: var(--success); }
.cov-partial { color: var(--warning); }
.cov-gap { color: var(--danger); }
.cov-none { color: var(--text-muted); }
.cov-cell { white-space: nowrap; }
.cov-cell small { color: var(--text-muted); margin-left: 0.2rem; }
