diff --git a/frontend/src/components/settings/CropProposersCard.vue b/frontend/src/components/settings/CropProposersCard.vue
index 46edd54..64bb570 100644
--- a/frontend/src/components/settings/CropProposersCard.vue
+++ b/frontend/src/components/settings/CropProposersCard.vue
@@ -131,11 +131,6 @@ function saveToggle (p, v) {
diff --git a/frontend/src/components/settings/GpuActivityPanel.vue b/frontend/src/components/settings/GpuActivityPanel.vue
index 7378309..39bba29 100644
--- a/frontend/src/components/settings/GpuActivityPanel.vue
+++ b/frontend/src/components/settings/GpuActivityPanel.vue
@@ -95,7 +95,6 @@ onUnmounted(() => { if (pollId) clearInterval(pollId) })
diff --git a/frontend/src/components/settings/GpuAgentCard.vue b/frontend/src/components/settings/GpuAgentCard.vue
index b9a8492..fca73fa 100644
--- a/frontend/src/components/settings/GpuAgentCard.vue
+++ b/frontend/src/components/settings/GpuAgentCard.vue
@@ -367,11 +367,6 @@ async function onReprocess() {
diff --git a/frontend/src/components/settings/GpuTriageCard.vue b/frontend/src/components/settings/GpuTriageCard.vue
index a2ab8ac..6f24c38 100644
--- a/frontend/src/components/settings/GpuTriageCard.vue
+++ b/frontend/src/components/settings/GpuTriageCard.vue
@@ -155,11 +155,6 @@ async function onRecover(it) {
diff --git a/frontend/src/components/settings/MLBackfillCard.vue b/frontend/src/components/settings/MLBackfillCard.vue
index 3becc59..aca226a 100644
--- a/frontend/src/components/settings/MLBackfillCard.vue
+++ b/frontend/src/components/settings/MLBackfillCard.vue
@@ -80,5 +80,4 @@ async function run() {
diff --git a/frontend/src/styles/app.css b/frontend/src/styles/app.css
index e9f9552..3e24a75 100644
--- a/frontend/src/styles/app.css
+++ b/frontend/src/styles/app.css
@@ -40,6 +40,20 @@
emits, so no specificity/reorder fight — no !important needed. */
.fc-muted { color: rgb(var(--v-theme-on-surface-variant)); }
+/* Section sub-heading in settings cards (DRY pass #161): was redefined
+ identically in 4 cards, and TranslationCard used the class with NO local def
+ so its section headers rendered unstyled. Now one global utility. */
+.fc-section-h {
+ font-size: 13px; font-weight: 700; letter-spacing: 0.03em;
+ text-transform: uppercase; color: rgb(var(--v-theme-on-surface));
+}
+
+/* Status text colours (DRY pass #161): fc-good = success, fc-weak = error,
+ consolidated from the GPU / heads cards. fc-ok is intentionally NOT global —
+ it means on-surface in HeadsCard but success in QueuesTable. */
+.fc-good { color: rgb(var(--v-theme-success)); }
+.fc-weak { color: rgb(var(--v-theme-error)); }
+
/* Vuetify 4 dropped its global CSS reset (normalisation moved into each
component). FC's layouts assumed the reset zeroed margins on text elements, so
restore just that — the "minimal reset" from the v4 upgrade guide — inside
diff --git a/frontend/src/views/ExploreView.vue b/frontend/src/views/ExploreView.vue
index e352b99..611c95d 100644
--- a/frontend/src/views/ExploreView.vue
+++ b/frontend/src/views/ExploreView.vue
@@ -284,7 +284,6 @@ onUnmounted(() => {