diff --git a/CLAUDE.md b/CLAUDE.md
index b3ec33c..7423c26 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -136,7 +136,7 @@ src/:
static/:
index.html: "Login-Seite (Magic-Link), JS inline"
dashboard.html: "Hauptdashboard (Sidebar + Reiter-Ansicht + 8 Modals + Chat-Widget)"
- studio.html: "Studio (3-Spalten-Werkstatt, online nur fuer info@ sichtbar - Gating rein clientseitig)"
+ studio.html: "Studio (3-Spalten-Werkstatt, online nur fuer info@ sichtbar - Gating rein clientseitig). Reiter Einstellungen ersetzt das Bearbeiten-Modal der klassischen Ansicht und enthaelt die Wahl des KI-Wegs je Fall."
css/:
style.css: "AegisSight Design System (Dark/Light Theme, alle Komponenten)"
studio.css: "Studio-spezifische Styles"
@@ -144,7 +144,7 @@ src/:
api.js: "REST-API-Client (fetch, Auth-Header, 30s Timeout, 403 -> Nur-Lese-Modus)"
app.js: "Hauptlogik: ThemeManager, NotificationCenter, App-Objekt (181 KB)"
components.js: "UI-Rendering: Sidebar, Faktenchecks, Toasts, Progress, Karte (geteilt mit Studio)"
- studio.js: "Kompletter Studio-Controller (109 KB)"
+ studio.js: "Kompletter Studio-Controller (116 KB), enthaelt auch den Einstellungen-Reiter je Fall"
chat.js: "Chat-Assistent Widget (Bedienfragen)"
pipeline.js: "Grafische Analysepipeline (11 Schritte, Live-Animation)"
layout.js: "Reiter-Umschalter je Lage (merkt letzten Reiter; enthaelt noch gridstack-Legacy-Stubs)"
@@ -168,6 +168,9 @@ tests/:
test_faktencheck_belegtiefe.py: "Belegzaehlung nach Medienhaus, Nachbedingung fuer bestaetigte Fakten, Sperre gegen das Hochstufen von developing, getrennte Bezeichnungen fuer Widerspruch und Widerlegung"
test_rss_treffer.py: "Keyword-Matching der RSS-Auswertung: Mehrwort-Begriffe treffen wortweise, Auftrag verlangt Einzelbegriffe und Eigennamen"
test_bedrock_wiederholung.py: "Wiederholung des EU-Wegs bei Kapazitaets- und Kontingentfehlern, Staffelung, Zeit- und Wartebudget, Sichtbarkeit im Refresh-Protokoll"
+ test_sammelaktionen.js: "Sammelaktionen der Seitenleiste im klassischen Dashboard, Auswahlmodus, Filterbeachtung, Loeschbestaetigung (Aufruf mit node)"
+ test_falleinstellungen.js: "Einstellungen-Reiter im Studio, Formular fuellen, nur Geaendertes speichern, KI-Weg umstellen samt Warnhinweis, Abo nachladen (Aufruf mit node)"
+ test_studio_struktur.py: "Strukturpruefung beider Oberflaechen ohne Browser, eindeutige IDs, jedes onclick zeigt auf eine vorhandene Methode, Cache-Buster, Design-Tokens"
test_quellenausgabe.py: "Ausgabetreue des Quellenverzeichnisses: Nummern aus dem Lagebild statt Zeilennummern, keine Kappung, ein Verlag ein Name, Statistik deckungsgleich mit dem Verzeichnis"
```
diff --git a/src/static/css/studio.css b/src/static/css/studio.css
index 632d82e..b183d15 100644
--- a/src/static/css/studio.css
+++ b/src/static/css/studio.css
@@ -1377,3 +1377,112 @@
.chat-offer-focus{font-size:12px;opacity:.7;margin-bottom:8px;}
.chat-offer-btn{cursor:pointer;}
.chat-offer-btn:disabled{opacity:.6;cursor:default;}
+
+/* === Einstellungen des Falls ========================================== */
+/* Ersetzt das Bearbeiten-Modal der klassischen Ansicht. Eine Spalte mit
+ begrenzter Breite, damit die Felder auf breiten Schirmen nicht auseinander
+ laufen. */
+.settings-panel {
+ max-width: 560px;
+ padding: 4px 2px 16px;
+}
+
+.settings-panel .form-group {
+ margin-bottom: 16px;
+}
+
+.settings-panel label {
+ display: block;
+ margin-bottom: 6px;
+ font-size: 13px;
+ font-weight: 500;
+ color: var(--text-secondary);
+}
+
+.settings-panel .toggle-label {
+ display: flex;
+ margin-bottom: 0;
+}
+
+.settings-panel input[type="text"],
+.settings-panel input[type="number"],
+.settings-panel input[type="time"],
+.settings-panel select,
+.settings-panel textarea {
+ width: 100%;
+}
+
+.settings-panel textarea {
+ min-height: 72px;
+ resize: vertical;
+}
+
+/* Hinweis auf einen gerade laufenden Schritt */
+.settings-note {
+ margin-bottom: 16px;
+ padding: 10px 12px;
+ border-radius: var(--radius);
+ border: 1px solid var(--border);
+ background: var(--bg-elevated);
+ font-size: 12px;
+ color: var(--text-secondary);
+}
+
+.settings-note[hidden] {
+ display: none;
+}
+
+/* Warnung, sobald der KI-Weg vom gespeicherten Stand abweicht */
+.settings-warn {
+ margin-top: 8px;
+ padding: 8px 10px;
+ border-left: 2px solid var(--warning);
+ background: var(--tint-warning);
+ color: var(--text-secondary);
+}
+
+.settings-warn[hidden] {
+ display: none;
+}
+
+.settings-foot {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ padding-top: 12px;
+ border-top: 1px solid var(--border);
+}
+
+/* Der Zustandstext schiebt die Knoepfe nach rechts */
+.settings-state {
+ flex: 1;
+ min-width: 0;
+ font-size: 12px;
+ color: var(--text-tertiary);
+}
+
+.settings-state.ok {
+ color: var(--success);
+}
+
+.settings-state.fehler {
+ color: var(--error);
+}
+
+/* Kennzeichen des KI-Wegs in der Fallliste. Schrumpft nicht, der Titel
+ kuerzt sich stattdessen. */
+.case-ai-tag {
+ flex-shrink: 0;
+ font-size: 10px;
+ font-weight: 700;
+ letter-spacing: 0.02em;
+ text-transform: uppercase;
+}
+
+.case-ai-tag.ai-eu {
+ color: #10B981;
+}
+
+.case-ai-tag.ai-anthropic {
+ color: var(--text-disabled);
+}
diff --git a/src/static/dashboard.html b/src/static/dashboard.html
index 040d3f2..6b57189 100644
--- a/src/static/dashboard.html
+++ b/src/static/dashboard.html
@@ -13,7 +13,7 @@
-
+