diff --git a/backend/workflows/templates/registration/login.html b/backend/workflows/templates/registration/login.html
index 8ed8f39..ac58f7b 100644
--- a/backend/workflows/templates/registration/login.html
+++ b/backend/workflows/templates/registration/login.html
@@ -1,13 +1,10 @@
+{% extends 'workflows/base_shell.html' %}
{% load static i18n %}
-
-
-
-
-
- {% trans "Anmeldung" %}
-
-
-
-
-
- {% include 'workflows/includes/app_header.html' with header_show_home=0 %}
-
-
{% trans "Anmeldung" %}
+{% endblock %}
+
+{% block shell_header %}
+{% include 'workflows/includes/app_header.html' %}
+{% endblock %}
+
+{% block shell_body %}
+
{% trans "Anmeldung" %}
{% trans "Bitte melden Sie sich mit Ihrem Benutzerkonto an." %}
-
-
+{% endblock %}
+{% endblock %}
+
diff --git a/backend/workflows/templates/workflows/developer_handbook.html b/backend/workflows/templates/workflows/developer_handbook.html
index ac99da5..f662366 100644
--- a/backend/workflows/templates/workflows/developer_handbook.html
+++ b/backend/workflows/templates/workflows/developer_handbook.html
@@ -66,6 +66,7 @@
/backend/config/: Django settings, WSGI, URL config
/backend/workflows/: application logic, views, models, tasks, templates, static assets
/backend/workflows/templates/workflows/base_shell.html: standard page shell for new staff-facing pages
+
Rule: all interactive app pages should extend base_shell.html; do not rebuild topbar/frame logic in page-local templates.
/backend/media/templates/: PDF HTML templates and letterhead source files
/backend/media/pdfs/: generated PDF outputs on host volume
/backend/locale/: translation catalogs
diff --git a/backend/workflows/templates/workflows/form_builder.html b/backend/workflows/templates/workflows/form_builder.html
index 7a2497f..94c54d3 100644
--- a/backend/workflows/templates/workflows/form_builder.html
+++ b/backend/workflows/templates/workflows/form_builder.html
@@ -1,17 +1,14 @@
+{% extends 'workflows/base_shell.html' %}
{% load static i18n %}
-
-
-
-
-
-
{% trans "Form Builder" %}
-
-
-
-
-
-
- {% include 'workflows/includes/app_header.html' with header_show_home=1 header_inside_shell=1 %}
+
+{% block title %}{% trans "Form Builder" %}{% endblock %}
+
+{% block extra_css %}
+
+{% endblock %}
+
+{% block shell_body %}
+{% include 'workflows/includes/app_header.html' with header_show_home=1 header_inside_shell=1 %}
-
+{% endblock %}
-
-
-
diff --git a/backend/workflows/templates/workflows/home.html b/backend/workflows/templates/workflows/home.html
index fe4b887..dbedf55 100644
--- a/backend/workflows/templates/workflows/home.html
+++ b/backend/workflows/templates/workflows/home.html
@@ -1,14 +1,10 @@
+{% extends 'workflows/base_shell.html' %}
{% load static i18n %}
-{% get_current_language as CURRENT_LANGUAGE %}
-
-
-
-
-
- {% trans "TUBCO Onboarding & Offboarding Portal" %}
-
-
-
-
-
-
-
+{% endblock %}
+
+{% block shell_body %}
+
@@ -626,6 +622,5 @@
{% trans "Tipp: Die letzten Vorgänge sehen Sie jederzeit im Anfragen Dashboard." %}
-
-
-
+{% endblock %}
+
diff --git a/backend/workflows/templates/workflows/integrations_setup.html b/backend/workflows/templates/workflows/integrations_setup.html
index 98d141a..a7ce8e2 100644
--- a/backend/workflows/templates/workflows/integrations_setup.html
+++ b/backend/workflows/templates/workflows/integrations_setup.html
@@ -1,13 +1,10 @@
+{% extends 'workflows/base_shell.html' %}
{% load static i18n %}
-
-
-
-
-
-
{% trans "Integrationen Setup" %}
-
-
-
-
-
-
- {% include 'workflows/includes/app_header.html' with header_show_home=1 header_inside_shell=1 %}
+{% endblock %}
+
+{% block shell_body %}
+{% include 'workflows/includes/app_header.html' with header_show_home=1 header_inside_shell=1 %}
{% trans "Integrationen Setup" %}
{% trans "Verwalten Sie Nextcloud- und Mail-Konfiguration ohne Backend-Wechsel." %}
@@ -365,6 +362,5 @@
{% endif %}
-
-
-
+{% endblock %}
+
diff --git a/backend/workflows/templates/workflows/intro_builder.html b/backend/workflows/templates/workflows/intro_builder.html
index 5db6b35..d9bc8fb 100644
--- a/backend/workflows/templates/workflows/intro_builder.html
+++ b/backend/workflows/templates/workflows/intro_builder.html
@@ -1,13 +1,10 @@
+{% extends 'workflows/base_shell.html' %}
{% load static i18n %}
-
-
-
-
-
- {% trans "Einweisungs-Builder" %}
-
-
-
-
-
-
- {% include 'workflows/includes/app_header.html' with header_show_dashboard=1 header_show_home=1 header_inside_shell=1 %}
+{% endblock %}
+
+{% block shell_body %}
+{% include 'workflows/includes/app_header.html' with header_show_dashboard=1 header_show_home=1 header_inside_shell=1 %}
-
-
+{% endblock %}
+
diff --git a/backend/workflows/templates/workflows/offboarding_form.html b/backend/workflows/templates/workflows/offboarding_form.html
index e925a54..ffac2ed 100644
--- a/backend/workflows/templates/workflows/offboarding_form.html
+++ b/backend/workflows/templates/workflows/offboarding_form.html
@@ -1,26 +1,26 @@
+{% extends 'workflows/base_shell.html' %}
{% load static i18n %}
-{% get_current_language as CURRENT_LANGUAGE %}
-
-
-
-
-
-
{% trans "Offboarding-Anfrage" %}
-
-
-
-
-
-
-
-
+{% endblock %}
+
diff --git a/backend/workflows/templates/workflows/onboarding_form.html b/backend/workflows/templates/workflows/onboarding_form.html
index b124e18..92ec418 100644
--- a/backend/workflows/templates/workflows/onboarding_form.html
+++ b/backend/workflows/templates/workflows/onboarding_form.html
@@ -1,26 +1,24 @@
+{% extends 'workflows/base_shell.html' %}
{% load static i18n %}
-{% get_current_language as CURRENT_LANGUAGE %}
-
-
-
-
-
-
{% trans "Onboarding-Anfrage" %}
-
-
-
-
-
-
-
-
+{% endblock %}
+
diff --git a/backend/workflows/templates/workflows/onboarding_success.html b/backend/workflows/templates/workflows/onboarding_success.html
index 4df98c3..15cee6a 100644
--- a/backend/workflows/templates/workflows/onboarding_success.html
+++ b/backend/workflows/templates/workflows/onboarding_success.html
@@ -1,13 +1,10 @@
+{% extends 'workflows/base_shell.html' %}
{% load static i18n %}
-
-
-
-
-
-
{% trans "Onboarding gespeichert" %}
-
-
-
-
-
- {% include 'workflows/includes/app_header.html' with header_show_home=1 %}
-
-
{% trans "Anfrage erfolgreich gespeichert" %}
+{% endblock %}
+
+{% block shell_header %}
+{% include 'workflows/includes/app_header.html' with header_show_home=1 %}
+{% endblock %}
+
+{% block shell_body %}
+
{% trans "Anfrage erfolgreich gespeichert" %}
{% trans "Vorgangs-ID:" %} {{ obj.id }}
{% trans "Name:" %} {{ obj.full_name }}
{% trans "E-Mail:" %} {{ obj.work_email }}
@@ -33,6 +33,5 @@
{% trans "Neue Anfrage erfassen" %}
{% trans "Zum Dashboard" %}
-
-
-
+{% endblock %}
+
diff --git a/backend/workflows/templates/workflows/project_wiki.html b/backend/workflows/templates/workflows/project_wiki.html
index 240688a..20cff62 100644
--- a/backend/workflows/templates/workflows/project_wiki.html
+++ b/backend/workflows/templates/workflows/project_wiki.html
@@ -194,6 +194,7 @@
Einweisungs- und Übergabeprotokoll: staff-only PDF erzeugen, Neu erzeugen, and PDF öffnen actions directly on onboarding rows in the Requests Dashboard.
Einweisung durchführen: staff-only live checklist page opened from onboarding rows, with draft/completed status, notes, progress tracking, and a separate live-status PDF export.
Project Wiki: this documentation page.
+ UI Shell Standard: interactive app pages should extend base_shell.html; PDF templates under backend/media/templates/ must stay separate.
Release Checklist: dedicated staff-only release runbook for validation, rollout evidence, and rollback basics.
diff --git a/backend/workflows/templates/workflows/requests_dashboard.html b/backend/workflows/templates/workflows/requests_dashboard.html
index 9046103..c0d2267 100644
--- a/backend/workflows/templates/workflows/requests_dashboard.html
+++ b/backend/workflows/templates/workflows/requests_dashboard.html
@@ -1,14 +1,10 @@
+{% extends 'workflows/base_shell.html' %}
{% load static i18n %}
-{% get_current_language as CURRENT_LANGUAGE %}
-
-
-
-
-
- {% trans "Anfragen Dashboard" %}
-
-
-
-
-
-
-
+{% endblock %}
+
+{% block shell_body %}
+
{% trans "Datensätze können direkt in der Tabelle gefiltert, geöffnet, geprüft oder gelöscht werden." %}
-
- {% if request.user.is_staff %}
-
+{% endblock %}
+
+{% block extra_scripts %}
+{% if request.user.is_staff %}