diff --git a/web-dashboard/index.html b/web-dashboard/index.html
index a4c62f3..b7144e8 100644
--- a/web-dashboard/index.html
+++ b/web-dashboard/index.html
@@ -3048,6 +3048,13 @@
const contractUploadFiles = {}; // contractId -> ausgewählte, noch nicht hochgeladene Files
async function loadContractDocuments() {
+ // Während der Nutzer in einem der Vertragsformulare tippt, darf der
+ // periodische Auto-Refresh die Eingaben nicht überschreiben (sonst
+ // werden Formularfelder nach REFRESH_INTERVAL_MS scheinbar "automatisch
+ // geleert"). Solange der Fokus innerhalb der Liste liegt, wird der
+ // Refresh daher übersprungen.
+ const list = document.getElementById('contractDocumentsList');
+ if (list && list.contains(document.activeElement)) return;
try {
const data = await apiFetch('/contracts/documents');
renderContractDocuments(data.contracts);