diff --git a/DESIGN.md b/DESIGN.md
index 077a5e4..03a2872 100644
--- a/DESIGN.md
+++ b/DESIGN.md
@@ -423,7 +423,7 @@ Cross-tab amplifies power: a source origin can open an arbitrary URL — but it
the user actively picks (a selector / optional screenshot), never a silent DOM read. Mitigations:
**the user is present and must confirm**; the URL is user-entered; the picker is visible in a
foreground tab; the authorization mode (§6 / PROTOCOL §7) can gate or block the source origin; and
-(recommended) a banner in the target tab — e.g. "openpicker is selecting an element for
+(recommended) a banner in the target tab — e.g. "OpenPicker is selecting an element for
dashboard.example.com" — for transparency.
---
diff --git a/PROTOCOL.md b/PROTOCOL.md
index 6f18aa8..cb130a6 100644
--- a/PROTOCOL.md
+++ b/PROTOCOL.md
@@ -2,7 +2,7 @@
> The contract between the **page SDK** (npm) and the **browser extension**. It defines how
> they discover each other, exchange requests/responses, correlate them, handle consent, and
-> stay compatible across versions. All naming is original to openpicker.
+> stay compatible across versions. All naming is original to OpenPicker.
This is a design spec. JSON shapes below describe the wire format, not an implementation.
diff --git a/apps/demo/README.md b/apps/demo/README.md
index 4c9b3d4..ccdc9ea 100644
--- a/apps/demo/README.md
+++ b/apps/demo/README.md
@@ -1,6 +1,6 @@
# @openpicker/demo
-The public, deployable demo for openpicker. A static site (Vite) that calls the **published**
+The public, deployable demo for OpenPicker. A static site (Vite) that calls the **published**
[`@openpicker/sdk`](https://www.npmjs.com/package/@openpicker/sdk) — not the local workspace copy —
so it always exercises the real package a user would `npm install`. It detects the extension,
opens a URL, picks an element, and shows the selector that comes back. This is the page deployed to
@@ -27,5 +27,5 @@ pnpm --filter @openpicker/demo build # -> apps/demo/dist
- **Root directory:** repo root
- Set `NODE_VERSION` to `20` (or add a `.nvmrc`); Cloudflare detects pnpm from the lockfile.
-> The demo can only complete a pick for visitors who have the openpicker extension installed.
+> The demo can only complete a pick for visitors who have the OpenPicker extension installed.
> Until the Chrome Web Store listing exists, it shows unpacked-install instructions.
diff --git a/apps/docs/.vitepress/config.ts b/apps/docs/.vitepress/config.ts
index 1e054c8..f68cd26 100644
--- a/apps/docs/.vitepress/config.ts
+++ b/apps/docs/.vitepress/config.ts
@@ -3,7 +3,7 @@ import { defineConfig } from "vitepress"
const GITHUB = "https://github.com/usertour/openpicker"
export default defineConfig({
- title: "openpicker",
+ title: "OpenPicker",
description:
"Documentation for OpenPicker — an open-source CSS element picker for the web (browser extension + SDK).",
cleanUrls: true,
diff --git a/apps/docs/.vitepress/theme/custom.css b/apps/docs/.vitepress/theme/custom.css
index 63e8f12..86ed8fb 100644
--- a/apps/docs/.vitepress/theme/custom.css
+++ b/apps/docs/.vitepress/theme/custom.css
@@ -1,4 +1,4 @@
-/* openpicker docs — slate brand to match the rest of the product. */
+/* OpenPicker docs — slate brand to match the rest of the product. */
:root {
--vp-c-brand-1: #334155; /* slate-700 — links/accents */
--vp-c-brand-2: #1e293b; /* slate-800 — hover */
diff --git a/apps/docs/public/hero.svg b/apps/docs/public/hero.svg
index 658a88d..64597c5 100644
--- a/apps/docs/public/hero.svg
+++ b/apps/docs/public/hero.svg
@@ -34,7 +34,7 @@