diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml
index 19f5edc3..86ebb9fa 100644
--- a/.mokogitea/workflows/issue-branch.yml
+++ b/.mokogitea/workflows/issue-branch.yml
@@ -5,7 +5,7 @@
# FILE INFORMATION
# DEFGROUP: MokoGitea.Workflow
# INGROUP: mokocli.Automation
-# VERSION: 02.59.04
+# VERSION: 02.59.05
# BRIEF: Auto-create feature branch when an issue is opened
name: "Universal: Issue Branch"
diff --git a/SECURITY.md b/SECURITY.md
index 210d04af..c8221357 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -23,7 +23,7 @@ DEFGROUP: Template-Joomla
INGROUP: Template-Joomla.Documentation
REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-Joomla
PATH: /SECURITY.md
-VERSION: 02.59.04
+VERSION: 02.59.05
BRIEF: Security vulnerability reporting and handling policy
-->
diff --git a/source/packages/com_mokosuitebackup/media/css/runbackup.css b/source/packages/com_mokosuitebackup/media/css/runbackup.css
new file mode 100644
index 00000000..f29dea3a
--- /dev/null
+++ b/source/packages/com_mokosuitebackup/media/css/runbackup.css
@@ -0,0 +1,84 @@
+/*
+ * @package MokoSuiteBackup
+ * @subpackage com_mokosuitebackup
+ * @copyright Copyright (C) 2026 Moko Consulting. All rights reserved.
+ * @license GNU General Public License version 3 or later; see LICENSE
+ *
+ * Full-screen backup progress screen (view=runbackup). Loaded via the Joomla
+ * Web Asset Manager (asset com_mokosuitebackup.runbackup).
+ */
+
+/* Full-screen backup runs on a black backdrop. */
+html,
+body {
+ background-color: #000 !important;
+}
+
+/* Colours are pulled from the Atum admin template's own CSS custom properties
+ so the screen matches whatever theme the site runs, with Bootstrap and then
+ a literal as progressive fallbacks. */
+.msb-runbackup {
+ --msb-accent: var(--template-link-color, var(--bs-link-color, #2a69b8));
+ --msb-accent2: var(--template-special-color, var(--msb-accent));
+ --msb-success: var(--template-success-color, var(--bs-success, #2f7d32));
+ --msb-danger: var(--template-danger-color, var(--bs-danger, #c52128));
+ --msb-track: var(--template-bg-light, var(--bs-gray-200, #edf0f5));
+
+ padding: 0 1rem;
+}
+
+/* overflow:hidden clips the full-bleed bar to the card's rounded corners. */
+.msb-runbackup .card {
+ overflow: hidden;
+}
+
+.msb-rb-progress {
+ height: 2.5rem;
+ background: var(--msb-track);
+ overflow: hidden;
+}
+
+.msb-rb-bar {
+ position: relative;
+ height: 100%;
+ width: 0;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ color: #fff;
+ font-weight: 600;
+ font-size: .95rem;
+ white-space: nowrap;
+ background-color: var(--msb-accent);
+ background-image: linear-gradient(90deg, var(--msb-accent), var(--msb-accent2));
+ transition: width .35s ease;
+}
+
+.msb-rb-bar.is-animated::after {
+ content: "";
+ position: absolute;
+ inset: 0;
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, .18) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .18) 50%, rgba(255, 255, 255, .18) 75%, transparent 75%, transparent);
+ background-size: 1rem 1rem;
+ animation: msb-rb-stripes 1s linear infinite;
+}
+
+.msb-rb-bar.is-success {
+ background-image: none;
+ background-color: var(--msb-success);
+}
+
+.msb-rb-bar.is-danger {
+ background-image: none;
+ background-color: var(--msb-danger);
+}
+
+@keyframes msb-rb-stripes {
+ from {
+ background-position: 1rem 0;
+ }
+
+ to {
+ background-position: 0 0;
+ }
+}
diff --git a/source/packages/com_mokosuitebackup/media/joomla.asset.json b/source/packages/com_mokosuitebackup/media/joomla.asset.json
index f967399c..12194cba 100644
--- a/source/packages/com_mokosuitebackup/media/joomla.asset.json
+++ b/source/packages/com_mokosuitebackup/media/joomla.asset.json
@@ -9,6 +9,11 @@
"name": "com_mokosuitebackup.admin",
"type": "style",
"uri": "com_mokosuitebackup/css/admin.css"
+ },
+ {
+ "name": "com_mokosuitebackup.runbackup",
+ "type": "style",
+ "uri": "com_mokosuitebackup/css/runbackup.css"
}
]
}
diff --git a/source/packages/com_mokosuitebackup/mokosuitebackup.xml b/source/packages/com_mokosuitebackup/mokosuitebackup.xml
index ca225c4c..22bab237 100644
--- a/source/packages/com_mokosuitebackup/mokosuitebackup.xml
+++ b/source/packages/com_mokosuitebackup/mokosuitebackup.xml
@@ -17,7 +17,7 @@
display label there.
-->
MokoSuiteBackup
- 02.59.04
+ 02.59.05
2026-06-02
Moko Consulting
hello@mokoconsulting.tech
diff --git a/source/packages/com_mokosuitebackup/sql/updates/mysql/02.59.05.sql b/source/packages/com_mokosuitebackup/sql/updates/mysql/02.59.05.sql
new file mode 100644
index 00000000..0105d7ae
--- /dev/null
+++ b/source/packages/com_mokosuitebackup/sql/updates/mysql/02.59.05.sql
@@ -0,0 +1 @@
+/* 02.59.05 — no schema changes */
diff --git a/source/packages/com_mokosuitebackup/tmpl/runbackup/default.php b/source/packages/com_mokosuitebackup/tmpl/runbackup/default.php
index d15582c5..0238f35f 100644
--- a/source/packages/com_mokosuitebackup/tmpl/runbackup/default.php
+++ b/source/packages/com_mokosuitebackup/tmpl/runbackup/default.php
@@ -88,56 +88,11 @@ $config = [
'leaveWarn' => Text::_('COM_MOKOJOOMBACKUP_RUNBACKUP_LEAVE_WARNING'),
],
];
-?>
-
+// All screen CSS loads via the Joomla Web Asset Manager (media/joomla.asset.json),
+// not an inline