diff --git a/README.md b/README.md
index fba9513..2687f76 100644
--- a/README.md
+++ b/README.md
@@ -411,6 +411,40 @@ mitgezogen:
Tabelle liegt.
- **Undo/Redo-fähig** wie jede andere Änderung.
+### Abhängigkeiten erkunden (🕸)
+
+Rechtsklick auf eine Zelle → **„🕸 Abhängigkeiten anzeigen"** öffnet ein
+andockbares Panel rechts (wie das Einstellungen-Panel links) — **kein**
+Vollbild-Dialog, damit Blatt-Tabs, Statusleiste und Canvas die ganze Zeit
+sichtbar und bedienbar bleiben: der Blattbezug geht beim Erkunden nie
+verloren. Zeigt für die Zelle:
+
+- **Vorgänger** — jede Zelle, die ihre Formel direkt liest (bei einem
+ Bereich wie `SUM(B2:E2)` jede einzelne Zelle darin).
+- **Nachfolger** — jede Zelle, die *diese* Zelle direkt liest, auch über
+ Tabellen-/Blattgrenzen hinweg.
+- Jeder Eintrag zeigt **Blatt · Tabelle!Zelle** (Blattname **immer**, nicht
+ nur bei Mehrdeutigkeit) sowie den aktuellen Wert.
+
+**Ein Klick auf einen Eintrag navigiert wirklich dorthin** — nicht nur
+innerhalb des Panels: Er wählt die echte Zelle im Dokument aus, wechselt bei
+Bedarf das Blatt-Tab, und das Panel zentriert sich neu auf sie. Formelleiste,
+Statusleiste und die Tabellen selbst zeigen danach exakt dieselbe Zelle, die
+im Panel zentriert ist — das Erkunden des Formel-Netzwerks *ist* Navigieren,
+keine isolierte Nebenansicht. **„← Zurück"** geht die so besuchten Zellen
+rückwärts durch (auch das mit echter Navigation, nicht nur Panel-intern).
+
+Ein Zirkelbezug (`#CIRC`) wird rot markiert (⚠), sowohl als Zentrum als auch
+als Vorgänger/Nachfolger-Eintrag — die Kante existiert im Abhängigkeitsgraphen
+unabhängig davon, dass sie bei der Neuberechnung übersprungen wird (s.
+„Fehlermodell" unten).
+
+**Bewusst ohne**: kein automatisches Scrollen der Zieltabelle zur
+navigierten Zelle, falls sie außerhalb des sichtbaren Ausschnitts liegt
+(bei einer „Feste Größe"-Tabelle mit vielen Zeilen); keine Gruppierung
+vieler Vorgänger/Nachfolger zu einem Bereichs-Eintrag (`Umsatz!B2:B100`
+erscheint als 99 einzelne Zeilen, nicht als ein zusammengefasster Eintrag).
+
### Zell-Formatierung
Auswahl (Zelle, Bereich, Mehrfachauswahl, ganze Zeile/Spalte über den Kopf) → im
@@ -972,6 +1006,16 @@ Grundrechenarten: `Übersicht!B2 = =SUM(Umsatz!B2:E2)`, `D2 = =B2-C2`,
Bereich, `$`-Sperren bleiben wirkungslos (anders als beim Kopieren),
unveränderte Referenzen bleiben byte-identisch, Undo/Redo, Schutz gegen
Löschen der letzten verbleibenden Zeile/Spalte.
+- **Abhängigkeiten erkunden** (`graphPrecedents`/`graphDependents` in
+ `workbook.spec.ts`, `cellGraphSelf`/`cellGraphNeighbors`/
+ `openDependencyGraph`/`closeDependencyGraph` in `document.spec.ts`) —
+ exakte Vorgänger/Nachfolger-Kanten, Auflösung über Tabellen-/Blattgrenzen,
+ bleibt korrekt für eine Zelle auf einem Zirkelbezug, aktualisiert sich
+ nach einer Neuzuordnung der Formel, `openDependencyGraph` löst wirklich
+ `selectCell` aus (inkl. Blatt-Tab-Wechsel), `closeDependencyGraph` rührt
+ die Auswahl nicht an. Das Panel selbst (`DependencyGraphView.vue`) ist
+ nur live per Playwright verifiziert, kein Komponenten-Test-Setup
+ vorhanden (s. „Bekannte Grenzen").
- **„Mit Schleife"-Code** — Parser-Ebene (`parseFunctionBlock`): ein
`FOR...DO...END` mit mehreren Anweisungen, mehrere unabhängige Schleifen
nacheinander, `IF...THEN...END` und `IF...THEN...ELSE...END`, `IF`
@@ -1043,6 +1087,14 @@ Grundrechenarten: `Übersicht!B2 = =SUM(Umsatz!B2:E2)`, `D2 = =B2-C2`,
Komponenten-Test-Setup (z. B. Vue Test Utils), nur Engine-/Store-Tests.
Nur live per Playwright verifiziert (Wachsen, Schrumpfen mit
Inhaltsschutz, deutliches Überschreiten der bestehenden Größe).
+- **Abhängigkeiten-Panel** (`DependencyGraphView.vue`) bewusst ohne: Gruppierung
+ vieler Vorgänger/Nachfolger zu einem Bereichs-Eintrag (jede Zelle einzeln,
+ ungeachtet der Anzahl), automatisches Scrollen der Zieltabelle zur
+ navigierten Zelle. Wie bei der Tabellen-Größenänderung oben: rein
+ UI-seitig, nur live per Playwright verifiziert, kein Komponenten-Test-Setup
+ vorhanden — die zugrundeliegenden Store-/Engine-Funktionen
+ (`graphPrecedents`/`graphDependents`/`cellGraphNeighbors`/
+ `openDependencyGraph`) sind es aber (s. „Tests" oben).
- **Objekt-Bezüge beim Anhängen.** Beim JSON-*Anhängen* zweier Dokumente werden
nur Blatt-/Objekt-IDs neu vergeben, nicht Tabellennamen. Kollidiert ein
angehängter Tabellenname mit einem bestehenden, gewinnt bei der Auflösung der
diff --git a/src/App.vue b/src/App.vue
index af62a9c..9e2949e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -6,6 +6,7 @@ import SheetCanvas from './components/SheetCanvas.vue';
import SheetTabs from './components/SheetTabs.vue';
import StatusBar from './components/StatusBar.vue';
import SettingsPanel from './components/SettingsPanel.vue';
+import DependencyGraphView from './components/DependencyGraphView.vue';
import { useToasts } from './composables/useToasts';
import { useDocument } from './store/document';
@@ -48,6 +49,7 @@ onBeforeUnmount(() => window.removeEventListener('keydown', onGlobalKeydown));