Index: src/routes/guardian.js
===================================================================
--- src/routes/guardian.js	(revision de89079d54feaf1fd4748e90006fb3a84ebbc096)
+++ src/routes/guardian.js	(revision c628dcd4f42ed9edff0a903d425080e963484659)
@@ -38,5 +38,5 @@
 function uiStrings(L) {
   const keys = ['sent', 'sent_retry', 'sending', 'not_found', 'failed', 'network',
-    'pending', 'active', 'retract', 'release', 'open', 'push_unavailable',
+    'pending', 'active', 'retract', 'release', 'release_confirm', 'open', 'push_unavailable',
     'accept', 'reject', 'complete', 'awaiting_others', 'coguard'];
   const s = Object.fromEntries(keys.map((k) => [k, i18nT(L, `guardian.${k}`)]));
Index: src/routes/paid.js
===================================================================
--- src/routes/paid.js	(revision de89079d54feaf1fd4748e90006fb3a84ebbc096)
+++ src/routes/paid.js	(revision c628dcd4f42ed9edff0a903d425080e963484659)
@@ -54,5 +54,5 @@
   if (!payload || payload.purpose !== 'patron' || payload.siteId !== r.site.id) {
     return renderPage(req, res, 'pages/paid-result', {
-      pageTitleKey: 'pres.t', bodyClass: 'on-special', ok: false, reason: 'expired',
+      pageTitleKey: 'pres.t', bodyClass: 'on-post', ok: false, reason: 'expired',
     });
   }
@@ -60,5 +60,5 @@
   const code = String(req.query.code || '');
   if (req.query.error || !code) {
-    return renderPage(req, res, 'pages/paid-result', { pageTitleKey: 'pres.t', bodyClass: 'on-special', ok: false, reason: 'declined', postSlug: payload.post, patronUrl });
+    return renderPage(req, res, 'pages/paid-result', { pageTitleKey: 'pres.t', bodyClass: 'on-post', ok: false, reason: 'declined', postSlug: payload.post, patronUrl });
   }
   const membership = await PaidPatreon.verifyPatron(r.site.id, code, baseUrl(req) + '/paid/callback').catch(() => null);
@@ -67,5 +67,5 @@
   if (!active || cents < payload.cents) {
     return renderPage(req, res, 'pages/paid-result', {
-      pageTitleKey: 'pres.t', bodyClass: 'on-special', ok: false,
+      pageTitleKey: 'pres.t', bodyClass: 'on-post', ok: false,
       reason: active ? 'tier' : 'notpatron', neededCents: payload.cents, haveCents: cents, postSlug: payload.post, patronUrl,
     });
@@ -76,5 +76,5 @@
   const blob = signBlob({ purpose: 'reg', siteId: r.site.id, cents, challenge: options.challenge }, 900);
   renderPage(req, res, 'pages/paid-passkey', {
-    pageTitleKey: 'ppk.t', bodyClass: 'on-special',
+    pageTitleKey: 'ppk.t', bodyClass: 'on-post',
     optionsJson: JSON.stringify(options), regBlob: blob, postSlug: payload.post,
   });
