diff --git a/src/003-assets/CSS/endWeekAnim.css b/src/003-assets/CSS/endWeekAnim.css
new file mode 100644
index 0000000000000000000000000000000000000000..5204f7f569a5d15e1387ff274059784b35e18eb1
--- /dev/null
+++ b/src/003-assets/CSS/endWeekAnim.css
@@ -0,0 +1,15 @@
+#init-screen > div.endweek-titleblock {
+	display: block;
+	margin-top: 5%;
+}
+
+div.endweek-maintitle {
+	display: block;
+	margin-bottom: 0.5em;
+}
+
+div.endweek-subtitle {
+	display: block;
+	font-size: smaller;
+	font-weight: lighter;
+}
diff --git a/src/endWeek/endWeek.js b/src/endWeek/endWeek.js
index 7ef4ccfc42363b602100d61ade5d346cd019449c..fd821723648583d827faedd2b8fe235dbb4755e8 100644
--- a/src/endWeek/endWeek.js
+++ b/src/endWeek/endWeek.js
@@ -331,7 +331,7 @@ window.endWeek = (function() {
 
 	function confirmEndWeek() {
 		if (!V.sideBarOptions.confirmWeekEnd || confirm("Are you sure you want to end the week?")) {
-			window.LoadLockID = LoadScreen.lock();
+			App.UI.EndWeekAnim.start();
 			setTimeout(doEndWeek, 0); // execute immediately, but after the event loop runs, so the loading screen gets shown
 		}
 	}
diff --git a/src/endWeek/endWeekAnim.js b/src/endWeek/endWeekAnim.js
new file mode 100644
index 0000000000000000000000000000000000000000..0c6a94c40ac75f32b1134eb5b8c564a8d6f57e57
--- /dev/null
+++ b/src/endWeek/endWeekAnim.js
@@ -0,0 +1,35 @@
+App.UI.EndWeekAnim = (function() {
+	let loadLockID = -1;
+	let infoDiv = null;
+
+	function makeInfoDiv() {
+		infoDiv = $(`
+			<div class="endweek-titleblock">
+				<div class="endweek-maintitle">Processing week ${V.week}...</div>
+				<div class="endweek-subtitle">${V.arcologies[0].name} | ${V.slaves.length} slaves</div>
+			</div>
+		`);
+	}
+
+	function start() {
+		if (loadLockID === -1) {
+			makeInfoDiv();
+			$("#init-screen").append(infoDiv);
+			loadLockID = LoadScreen.lock();
+		}
+	}
+
+	function end() {
+		if (loadLockID !== -1) {
+			infoDiv.remove();
+			infoDiv = null;
+			setTimeout(LoadScreen.unlock(loadLockID), 0);
+			loadLockID = -1;
+		}
+	}
+
+	return {
+		start,
+		end
+	};
+})();
diff --git a/src/uncategorized/slaveAssignmentsReport.tw b/src/uncategorized/slaveAssignmentsReport.tw
index dad68e96fb5fb912269ee2119f09b225f70de189..4de3adc39d8e60bf391673649b0c5ba7d98d458e 100644
--- a/src/uncategorized/slaveAssignmentsReport.tw
+++ b/src/uncategorized/slaveAssignmentsReport.tw
@@ -1125,4 +1125,4 @@ $sexDemandResult.topClass = Math.trunc((($NPCSexSupply.topClass + $slaveJobValue
 <</if>>
 
 /* release loading screen as soon as the event loop can run */
-<<run setTimeout(LoadScreen.unlock, 0, window.LoadLockID)>>
+<<run App.UI.EndWeekAnim.end()>>