diff --git a/FAQPage/devwez/README.md b/FAQPage/devwez/README.md
new file mode 100644
index 000000000..51bbc1350
--- /dev/null
+++ b/FAQPage/devwez/README.md
@@ -0,0 +1,29 @@
+# FAQ Page — devwez
+
+Minimal, fast FAQ page for the [javascript-mini-projects](https://github.com/thinkswell/javascript-mini-projects) collection.
+
+**Fixes:** Closes #1030 — adds starter FAQ page.
+
+### Stack
+- Vanilla HTML / CSS / JS (no frameworks)
+- Inter + JetBrains Mono
+- CSS grid animation for accordion (no height hacks)
+
+### Features
+- 6 curated FAQs with tags
+- Live search (debounced) — filters by question, answer, tag
+- Keyboard shortcut: `/` to focus search, `Esc` to clear
+- Expand / collapse all
+- Responsive, dark mesh-gradient theme
+
+### Run
+Open `index.html` in a browser. No build step.
+
+### Structure
+```
+FAQPage/devwez/
+ index.html
+ style.css
+ script.js
+ README.md
+```
diff --git a/FAQPage/devwez/index.html b/FAQPage/devwez/index.html
new file mode 100644
index 000000000..87eaa111d
--- /dev/null
+++ b/FAQPage/devwez/index.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+ FAQ — Quick Answers
+
+
+
+
+
+
+
+
+
FAQ · Help Center
+
Quick answers, no fluff.
+
Search or browse. Everything we get asked, distilled to the essentials.
+
+
+
+ /
+
+
+
+
+ 6 questions
+
+ Updated today
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/FAQPage/devwez/script.js b/FAQPage/devwez/script.js
new file mode 100644
index 000000000..c40f0bca7
--- /dev/null
+++ b/FAQPage/devwez/script.js
@@ -0,0 +1,137 @@
+const faqs = [
+ {
+ q: "How long does shipping take?",
+ sub: "Delivery timelines & tracking",
+ tag: "Shipping",
+ a: `Domestic orders ship in 2–3 business days and arrive in 3–5 days. International is 7–14 days. You'll get a tracking link by email once it leaves the warehouse. If it's been 10 days with no update, ping support and we'll sort it.`
+ },
+ {
+ q: "What’s your refund policy?",
+ sub: "Returns, exchanges & refunds",
+ tag: "Billing",
+ a: `30-day money-back guarantee on unused items. Start a return from your order page — we cover return shipping for defects, otherwise it's on you. Refunds hit your original payment method within 5–7 business days after we receive it.`
+ },
+ {
+ q: "How do I reset my password?",
+ sub: "Account access in 30 seconds",
+ tag: "Account",
+ a: `Go to login → “Forgot password” → enter your email. Check spam if you don't see it in 2 minutes. Link expires in 1 hour. Still stuck? Try an incognito window — extensions sometimes block the reset.`
+ },
+ {
+ q: "Can I change my plan later?",
+ sub: "Upgrade, downgrade, cancel anytime",
+ tag: "Billing",
+ a: `Yep. Upgrade is instant and prorated. Downgrade takes effect next cycle. Cancel anytime from Settings → Billing — no dark patterns, no “call us” hoop. Your data stays for 30 days in case you come back.`
+ },
+ {
+ q: "Is my data secure?",
+ sub: "Privacy, encryption & compliance",
+ tag: "Security",
+ a: `We use AES-256 at rest, TLS 1.3 in transit, and isolated VPCs. SOC 2 Type II audited this year. We never sell data. Export or delete everything from Settings → Privacy — it's your data.`
+ },
+ {
+ q: "Do you offer student discounts?",
+ sub: "Pricing for learners",
+ tag: "Pricing",
+ a: `Students and educators get 40% off with a .edu email or valid ID. Apply at checkout — discount auto-renews each year while you're eligible. Need an invoice for reimbursement? We generate one instantly.`
+ },
+];
+
+const list = document.getElementById('faqList');
+const search = document.getElementById('search');
+const count = document.getElementById('count');
+const expandBtn = document.getElementById('expandAll');
+
+let expandedAll = false;
+
+function render(filter = "") {
+ const q = filter.toLowerCase().trim();
+ const filtered = faqs.filter(f =>
+ !q || f.q.toLowerCase().includes(q) || f.a.toLowerCase().includes(q) || f.tag.toLowerCase().includes(q) || f.sub.toLowerCase().includes(q)
+ );
+
+ count.textContent = `${filtered.length} question${filtered.length !== 1 ? 's' : ''}${q ? ` for “${filter}”` : ''}`;
+
+ if (filtered.length === 0) {
+ list.innerHTML = `
No results for “${filter}”. Try “shipping” or “refund”.