diff --git a/web/src/components/Lightbox.astro b/web/src/components/Lightbox.astro
new file mode 100644
index 00000000..7528b1c4
--- /dev/null
+++ b/web/src/components/Lightbox.astro
@@ -0,0 +1,214 @@
+---
+/* One dialog for every screenshot on the page, rather than one per image.
+ *
+ * WHY A SHARED DIALOG. The features page carries six 2880x1800 screenshots. Six
+ * dialogs would mean six copies of the markup and six more elements the
+ * browser has to consider, for a UI that can only ever show one at a time. The
+ * buttons carry the source and the caption; this fills itself in on open.
+ *
+ * WHY