diff --git a/core/views/emails/_button.phtml b/core/views/emails/_button.phtml
new file mode 100644
index 00000000..e7f761a7
--- /dev/null
+++ b/core/views/emails/_button.phtml
@@ -0,0 +1,27 @@
+, not a styled div: Outlook renders through Word,
+ * which ignores padding on block elements and would collapse a CSS button into bare underlined
+ * text. The `mso-padding-alt` + conditional wrapper give Outlook a real box to draw.
+ *
+ * Variables: $btnUrl, $btnLabel.
+ */
+$e = function ($s) { return htmlspecialchars((string) $s, ENT_QUOTES, 'UTF-8'); };
+$url = (string) $this->btnUrl;
+$label = (string) $this->btnLabel;
+if ($url === '' || $label === '') { return; }
+?>
+
+
+
+
+
+
+
+
+ |
+
+ = $e($siteName) ?>
+
+ = $e($siteName) ?>
+
+ |
+
+
+
+
+
+
+
+ |
+ content; a bare $content silently renders an empty shell. ?>
+ = $this->content ?>
+ |
+
+
+ |
+
+
+
+
+ |
+
+ |
+
+
+
+
+ |
+
+
+
+