diff --git a/README.md b/README.md
index 6214fde..52d0612 100644
--- a/README.md
+++ b/README.md
@@ -14,19 +14,18 @@ Built on [`zig-nostr/nostr`](https://github.com/zig-nostr/nostr).
> relays, including those that require NIP-42 authentication. Downloads are
> ad-hoc signed (not notarized). See [Install](#install).
-## The whole app
+
-Four screens, which is all of it.
+## What it does
-| | |
-| --- | --- |
-|  |  |
-| **Set up.** Create a key or bring one you have. The key is generated and stored by the signer daemon; the app only ever sends the passphrase. | **Unlock.** The key is encrypted at rest. Nothing serves until you unlock it. |
-|  |  |
-| **Serve.** Copy the `bunker://` URL into any Nostr client. Each relay reports its own connection state, so you can see where you are reachable. | **Approve.** Every request names itself and waits. Nothing is signed while you are not looking. |
+| | | |
+| --- | --- | --- |
+|  |  |  |
-Real windows, photographed from the running app against a backdrop. Every
-pixel inside the window is the app's own.
+Real windows, photographed from the running app. Every pixel inside the
+window is the app's own, so nothing here shows a screen the app cannot draw. The
+signer pubkey and `bunker://` URL come from a stub daemon; no real key appears in
+any of them.
## Install
diff --git a/docs/shots/hero.jpg b/docs/shots/hero.jpg
new file mode 100644
index 0000000..fdf55d7
Binary files /dev/null and b/docs/shots/hero.jpg differ
diff --git a/docs/shots/panel-request.jpg b/docs/shots/panel-request.jpg
new file mode 100644
index 0000000..5bd16db
Binary files /dev/null and b/docs/shots/panel-request.jpg differ
diff --git a/docs/shots/panel-serving.jpg b/docs/shots/panel-serving.jpg
new file mode 100644
index 0000000..35929e9
Binary files /dev/null and b/docs/shots/panel-serving.jpg differ
diff --git a/docs/shots/panel-setup.jpg b/docs/shots/panel-setup.jpg
new file mode 100644
index 0000000..17cf49f
Binary files /dev/null and b/docs/shots/panel-setup.jpg differ
diff --git a/docs/shots/request.jpg b/docs/shots/request.jpg
deleted file mode 100644
index f09aca9..0000000
Binary files a/docs/shots/request.jpg and /dev/null differ
diff --git a/docs/shots/serving.jpg b/docs/shots/serving.jpg
deleted file mode 100644
index aa2acee..0000000
Binary files a/docs/shots/serving.jpg and /dev/null differ
diff --git a/docs/shots/setup.jpg b/docs/shots/setup.jpg
deleted file mode 100644
index 9f55f74..0000000
Binary files a/docs/shots/setup.jpg and /dev/null differ
diff --git a/docs/shots/unlock.jpg b/docs/shots/unlock.jpg
deleted file mode 100644
index 9bf6f36..0000000
Binary files a/docs/shots/unlock.jpg and /dev/null differ
diff --git a/gui/README.md b/gui/README.md
index 1346078..494dbbf 100644
--- a/gui/README.md
+++ b/gui/README.md
@@ -12,7 +12,7 @@ itself, with no Electron and no WebView anywhere.
> `.app`, shipped as ad-hoc-signed macOS releases (not notarized, see the
> top-level [Install](../README.md#install)).
-The four screens are in the [top-level README](../README.md#the-whole-app).
+The screens are in the [top-level README](../README.md#what-it-does).
First-run key setup, then the serving screen, the `bunker://` connection URL
to copy into a client, live per-relay status, and approving a real NIP-46 signing