diff --git a/AGENTS.md b/AGENTS.md
index b18ae4d..7790117 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -264,6 +264,11 @@ persisted through the shared project-command transaction, so create, update,
delete, Undo and Redo are revision-safe. Snapshot schema 3, restore and portable
project duplication preserve the configuration; duplication remaps its internal
id and project link.
+The project page exposes the current Phase 14.1 Revit CSV modal. It edits the
+complete transport/column/family-rule configuration through the revision-safe
+endpoint and requests a stateless preview. Preview responses include all mapped
+objects, while the UI renders only the first 25. No preview creates external
+objects, rows, revisions or server-side drafts.
The central revision boundary creates an automatic logical snapshot after each
25 new revisions and retains only the newest 12 automatic snapshots per
project. Named snapshots are never removed by this retention policy.
diff --git a/docs/current-architecture.md b/docs/current-architecture.md
index 7c77bee..704b540 100644
--- a/docs/current-architecture.md
+++ b/docs/current-architecture.md
@@ -500,8 +500,8 @@ einschließlich BOM, CRLF und Quotierung bytegleich zurück. Der lokale Befehl
je Projekt. `external-csv-configuration.update` schreibt Anlage, Änderung oder
Entfernung zusammen mit Revision und persistentem Undo/Redo. Snapshot-Schema 3,
Restore und portabler Projekttransfer enthalten diesen Zustand; beim Duplizieren
-werden Konfigurations-UUID und Projektlink remapped. Importvorschau, persistente
-externe Objekte und die Revit-GUI sind noch nicht implementiert.
+werden Konfigurations-UUID und Projektlink remapped. Persistente externe Objekte
+und die bestätigte Importübernahme sind noch nicht implementiert.
`GET` und `PUT /api/projects/:projectId/external-csv/configuration` lesen oder
ändern die Konfiguration; der PUT plant Identität und nächsten
Konfigurationsstand serverseitig und verwendet den typisierten Command.
@@ -509,6 +509,12 @@ Konfigurationsstand serverseitig und verwendet den typisierten Command.
Base64-kodierte CSV bis 18 MB entgegen. Der zustandsfreie Service liefert Hash,
Dialekt, Header, Klassifikationszahlen, Verdachtszeilen und gemappte
Objektquellwerte. Er schreibt weder Entwurf noch Projektdaten.
+Die Projektseite öffnet über „Revit-CSV“ ein deutsches Modal für Dialekt,
+Spaltenzuordnung, zusätzliche Quellfelder und exakte Familie-und-Typ-Regeln.
+Nach dem revisionierten Speichern kann eine lokale CSV gewählt und über den
+zustandsfreien Endpunkt geprüft werden. Die Oberfläche zeigt Kennzahlen und nur
+die ersten 25 erkannten Objekte; die vollständigen Objekte bleiben in der
+Response verfügbar, ohne alle Zeilen in den DOM einzufügen.
## Noch nicht unterstützt
diff --git a/docs/spec/revit-csv-phase-14-audit-and-plan.md b/docs/spec/revit-csv-phase-14-audit-and-plan.md
index b99729b..0249f98 100644
--- a/docs/spec/revit-csv-phase-14-audit-and-plan.md
+++ b/docs/spec/revit-csv-phase-14-audit-and-plan.md
@@ -250,11 +250,14 @@ keine Projektrevision und laufen über einen eigenen Audit-Store.
3. Konfiguration über Migration, Snapshot v3, Transfer und den Command
`external-csv-configuration.update` persistieren. **Erledigt.**
4. Vorschau-Endpunkt und deutschen Projekt-Wizard ergänzen. **Erledigt:**
- Konfigurations-Read/Write- und zustandsfreier Vorschau-Endpunkt. **Offen:**
- deutscher Projekt-Wizard. Der Server speichert keinen Entwurf: Bei
+ Konfigurations-Read/Write- und zustandsfreier Vorschau-Endpunkt sowie das
+ deutsche Konfigurations-/Vorschaumodal. Der Server speichert keinen Entwurf: Bei
Bestätigung wird die Datei erneut übertragen, erneut geparst und ihr Hash
gegen die Vorschau geprüft.
+**Phase 14.1 ist damit technisch abgeschlossen.** Die fachliche GUI-Abnahme
+erfolgt vor Beginn der persistenten externen Objekte aus Phase 14.2.
+
Abnahme: fokussierte Tests, vollständige Tests und alle vorgeschriebenen
Build-/Typecheck-Schritte. Die lokal bereitgestellte Referenz-CSV wird mit
`npm run revit:verify-reference` auf 897 Objektzeilen, 211 nichtleere
diff --git a/src/app/projects/[projectId]/page.tsx b/src/app/projects/[projectId]/page.tsx
index 185feb4..d5a6b87 100644
--- a/src/app/projects/[projectId]/page.tsx
+++ b/src/app/projects/[projectId]/page.tsx
@@ -59,6 +59,7 @@ import {
} from "../../../frontend/components/project-settings-modal";
import { FormModal } from "../../../frontend/components/form-modal";
import { ProjectDeviceModal } from "../../../frontend/components/project-device-modal";
+import { RevitCsvModal } from "../../../frontend/components/revit-csv-modal";
const projectDeviceSyncFieldLabels: Record = {
name: "Technischer Name",
@@ -105,6 +106,7 @@ export default function ProjectDetailPage() {
const [roomFloorId, setRoomFloorId] = useState("");
const [editingRoom, setEditingRoom] = useState(null);
const [isProjectSettingsOpen, setIsProjectSettingsOpen] = useState(false);
+ const [isRevitCsvOpen, setIsRevitCsvOpen] = useState(false);
const [structureModal, setStructureModal] = useState<
"board" | "floor" | "room" | null
>(null);
@@ -858,6 +860,14 @@ export default function ProjectDetailPage() {