# Plan 1 — WordPress Pages (HTML for Beaver Builder)

> **For agentic workers:** REQUIRED SUB-SKILL: Use `superpowers:subagent-driven-development` (recommended) or `superpowers:executing-plans` to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.

**Goal:** Produce 14 self-contained, conversion-driven HTML page snippets that drop into Beaver Builder "Code Module" blocks on btwebgroup.com under the `/packages/*` URL tree. All snippets share a single CSS token file + reusable lead-capture form (no online payments).

**Architecture:** Each page is a single `.html` file containing scoped HTML + `<style>` + (where needed) `<script>` so it can be pasted into a Beaver Builder code module with zero theme dependency. A shared `_tokens.css` file holds brand colors/fonts/spacing; each page imports it via a `<style>` block copy (Beaver Builder code modules don't share assets). All [Buy Now] / [Get Started] CTAs open the same lead form modal — name, email, phone, problem description — that POSTs to a single CRM webhook endpoint (URL placeholder configurable per environment).

**Tech Stack:** Vanilla HTML5, CSS3 (custom properties), minimal vanilla JS (modal + form submit). No framework. No build step. Mobile-first responsive. Mirrors btwebgroup.com look (navy primary, teal accent, light header, generous spacing) but modernized for conversion.

**Reference spec:** `docs/superpowers/specs/2026-06-02-packages-launch-design.md` (sections 3, 4, 5, 6, 8).

---

## File Structure

```
packages-html/
├── _tokens.css                          ← brand tokens (single source of truth)
├── _components/
│   ├── lead-form-modal.html             ← reusable modal markup + JS
│   ├── trust-strip.html                 ← 5-pillar mini strip
│   ├── sticky-trust-bar.html            ← top trust bar
│   └── faq-accordion.html               ← FAQ block markup + JS
├── packages-root.html                   ← /packages
├── service-email-marketing.html         ← /packages/email-marketing
├── service-social-media.html
├── service-ppc.html
├── service-seo.html
├── service-websites.html
├── service-graphics-brand.html
├── bundle-lead-engine.html              ← /packages/lead-engine-bundle
├── bundle-brand-builder.html
├── bundle-upsell-engine.html
├── bundle-full-spectrum.html
├── tripwire-5k-email-blast.html
├── tripwire-ai-seo-audit-fix.html
└── tripwire-ai-landing-page-mockup.html
```

Working directory: `/Users/sanketlakhani/Work/btwebgroup-packages/packages-html/`

---

## Brand Tokens (use across every page)

Extracted from btwebgroup.com on 2026-06-02:

| Token | Value |
|---|---|
| `--btw-navy` | `#1a2e4d` (primary, headers, dark bg, body text) |
| `--btw-navy-deep` | `#0f1d33` (footer, hover) |
| `--btw-teal` | `#00b8c4` (primary CTA, accents) |
| `--btw-teal-hover` | `#009ba6` |
| `--btw-gold` | `#f5b800` (badges, savings highlights) |
| `--btw-bg` | `#ffffff` (page bg) |
| `--btw-bg-soft` | `#f6f8fb` (section alt) |
| `--btw-text` | `#1a2e4d` |
| `--btw-text-mute` | `#5a6478` |
| `--btw-border` | `#e3e8f0` |
| `--btw-success` | `#1aae74` |
| `--btw-font-heading` | `'Poppins', 'Helvetica Neue', Arial, sans-serif` (600/700 weight) |
| `--btw-font-body` | `'Inter', 'Helvetica Neue', Arial, sans-serif` (400/500) |
| `--btw-radius` | `8px` (cards), `6px` (buttons), `12px` (hero) |
| `--btw-shadow` | `0 4px 16px rgba(26,46,77,0.08)` |
| `--btw-shadow-lg` | `0 12px 32px rgba(26,46,77,0.12)` |
| `--btw-maxw` | `1180px` |
| `--btw-gap` | `24px` |
| `--btw-section-y` | `80px` (desktop), `48px` (mobile) |

Font loading: Poppins + Inter via Google Fonts `<link>` preconnect — each page snippet includes the link tag because Beaver Builder code modules don't share head.

---

## Task 1: Create design tokens file

**Files:**
- Create: `packages-html/_tokens.css`

- [ ] **Step 1: Create the tokens file**

```css
/* BT Web Group brand tokens — paste inside <style> on every page */
:root {
  --btw-navy: #1a2e4d;
  --btw-navy-deep: #0f1d33;
  --btw-teal: #00b8c4;
  --btw-teal-hover: #009ba6;
  --btw-gold: #f5b800;
  --btw-bg: #ffffff;
  --btw-bg-soft: #f6f8fb;
  --btw-text: #1a2e4d;
  --btw-text-mute: #5a6478;
  --btw-border: #e3e8f0;
  --btw-success: #1aae74;
  --btw-font-heading: 'Poppins', 'Helvetica Neue', Arial, sans-serif;
  --btw-font-body: 'Inter', 'Helvetica Neue', Arial, sans-serif;
  --btw-radius: 8px;
  --btw-radius-btn: 6px;
  --btw-radius-hero: 12px;
  --btw-shadow: 0 4px 16px rgba(26,46,77,0.08);
  --btw-shadow-lg: 0 12px 32px rgba(26,46,77,0.12);
  --btw-maxw: 1180px;
  --btw-gap: 24px;
  --btw-section-y: 80px;
}

/* Base — reset minimally inside a scoped wrapper */
.btw-pkg, .btw-pkg * { box-sizing: border-box; }
.btw-pkg {
  font-family: var(--btw-font-body);
  color: var(--btw-text);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
.btw-pkg h1, .btw-pkg h2, .btw-pkg h3, .btw-pkg h4 {
  font-family: var(--btw-font-heading);
  color: var(--btw-navy);
  line-height: 1.2;
  margin: 0 0 16px;
  font-weight: 700;
}
.btw-pkg h1 { font-size: clamp(32px, 5vw, 48px); }
.btw-pkg h2 { font-size: clamp(26px, 4vw, 36px); }
.btw-pkg h3 { font-size: clamp(20px, 3vw, 24px); }
.btw-pkg p  { margin: 0 0 16px; }
.btw-pkg a  { color: var(--btw-teal); text-decoration: none; }
.btw-pkg a:hover { color: var(--btw-teal-hover); }

/* Section + container */
.btw-section { padding: var(--btw-section-y) 20px; }
.btw-section--soft { background: var(--btw-bg-soft); }
.btw-section--dark { background: var(--btw-navy); color: #ffffff; }
.btw-section--dark h1, .btw-section--dark h2, .btw-section--dark h3 { color: #ffffff; }
.btw-container { max-width: var(--btw-maxw); margin: 0 auto; }
@media (max-width: 768px) { .btw-section { padding: 48px 16px; } }

/* Buttons */
.btw-btn {
  display: inline-block;
  padding: 14px 28px;
  background: var(--btw-teal);
  color: #fff !important;
  border-radius: var(--btw-radius-btn);
  font-weight: 600;
  font-family: var(--btw-font-heading);
  border: 0;
  cursor: pointer;
  transition: background 0.15s ease, transform 0.15s ease;
  font-size: 16px;
  text-align: center;
}
.btw-btn:hover { background: var(--btw-teal-hover); transform: translateY(-1px); }
.btw-btn--ghost { background: transparent; color: var(--btw-navy) !important; border: 2px solid var(--btw-navy); }
.btw-btn--ghost:hover { background: var(--btw-navy); color: #fff !important; }
.btw-btn--lg { padding: 18px 36px; font-size: 18px; }

/* Cards + grid */
.btw-card {
  background: #fff;
  border: 1px solid var(--btw-border);
  border-radius: var(--btw-radius);
  padding: 28px;
  box-shadow: var(--btw-shadow);
  transition: box-shadow 0.2s ease, transform 0.2s ease;
}
.btw-card:hover { box-shadow: var(--btw-shadow-lg); transform: translateY(-2px); }
.btw-grid { display: grid; gap: var(--btw-gap); }
.btw-grid--3 { grid-template-columns: repeat(3, 1fr); }
.btw-grid--2 { grid-template-columns: repeat(2, 1fr); }
.btw-grid--4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 900px) {
  .btw-grid--3, .btw-grid--4 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 600px) {
  .btw-grid--3, .btw-grid--4, .btw-grid--2 { grid-template-columns: 1fr; }
}

/* Badges + pills */
.btw-badge {
  display: inline-block; padding: 4px 12px;
  background: rgba(0,184,196,0.12); color: var(--btw-teal);
  border-radius: 999px; font-size: 13px; font-weight: 600;
}
.btw-badge--gold { background: rgba(245,184,0,0.16); color: #b88600; }

/* Price */
.btw-price { font-family: var(--btw-font-heading); font-weight: 700; color: var(--btw-navy); font-size: 36px; }
.btw-price__strike { text-decoration: line-through; color: var(--btw-text-mute); font-size: 18px; font-weight: 500; margin-right: 8px; }
.btw-price__per { font-size: 16px; color: var(--btw-text-mute); font-weight: 500; }

/* Pillar strip */
.btw-pillars { display: flex; gap: 12px; flex-wrap: wrap; }
.btw-pillar { background: var(--btw-bg-soft); padding: 10px 16px; border-radius: 999px; font-size: 14px; font-weight: 500; }
.btw-pillar::before { content: "✓ "; color: var(--btw-success); font-weight: 700; }
```

- [ ] **Step 2: Verify file exists**

Run: `ls -la /Users/sanketlakhani/Work/btwebgroup-packages/packages-html/_tokens.css`
Expected: file listed, non-zero size.

- [ ] **Step 3: Commit**

```bash
cd /Users/sanketlakhani/Work/btwebgroup-packages
git init 2>/dev/null || true
git add packages-html/_tokens.css
git commit -m "feat(pages): add brand tokens CSS"
```

(If repo isn't initialized yet, `git init` runs once; otherwise the `|| true` no-ops.)

---

## Task 2: Build reusable lead-form modal component

**Files:**
- Create: `packages-html/_components/lead-form-modal.html`

Lead form replaces every checkout/buy CTA. Captures: name, email, phone, problem description, and the package context (which package the user clicked from). Posts to a single CRM webhook (URL set via JS const, easy to swap).

- [ ] **Step 1: Create the modal snippet**

```html
<!-- BTW Lead Form Modal — paste once per page, near </body> inside the same wrapper -->
<div class="btw-modal" id="btwLeadModal" aria-hidden="true" role="dialog" aria-labelledby="btwLeadTitle">
  <div class="btw-modal__backdrop" data-close></div>
  <div class="btw-modal__card" role="document">
    <button class="btw-modal__close" data-close aria-label="Close">&times;</button>
    <h2 id="btwLeadTitle">Tell us a bit about your business</h2>
    <p class="btw-modal__sub">We'll review your details and get back within one business day. Free 15-minute call included — no obligation.</p>

    <form class="btw-leadform" id="btwLeadForm" novalidate>
      <input type="hidden" name="package_context" id="btwLeadContext" value="">
      <input type="hidden" name="page_url" id="btwLeadPage" value="">
      <input type="hidden" name="utm_source" id="btwLeadUtmSource" value="">
      <input type="hidden" name="utm_campaign" id="btwLeadUtmCampaign" value="">
      <input type="hidden" name="utm_content" id="btwLeadUtmContent" value="">

      <label class="btw-leadform__row">
        <span>Full name *</span>
        <input type="text" name="name" required minlength="2" autocomplete="name">
      </label>
      <label class="btw-leadform__row">
        <span>Email *</span>
        <input type="email" name="email" required autocomplete="email">
      </label>
      <label class="btw-leadform__row">
        <span>Phone *</span>
        <input type="tel" name="phone" required autocomplete="tel" pattern="[0-9 +()-]{7,}">
      </label>
      <label class="btw-leadform__row">
        <span>What problem are you trying to solve? *</span>
        <textarea name="problem" required minlength="10" rows="4" placeholder="e.g., low traffic, no leads from our website, want to launch a campaign before the season..."></textarea>
      </label>

      <button type="submit" class="btw-btn btw-btn--lg" id="btwLeadSubmit">Send my details</button>
      <p class="btw-leadform__legal">By submitting, you agree we may contact you. No spam, no list-sharing. <a href="/privacy">Privacy</a>.</p>
      <p class="btw-leadform__status" id="btwLeadStatus" role="status" aria-live="polite"></p>
    </form>
  </div>
</div>

<style>
.btw-modal { position: fixed; inset: 0; display: none; z-index: 9999; }
.btw-modal[aria-hidden="false"] { display: block; }
.btw-modal__backdrop { position: absolute; inset: 0; background: rgba(15,29,51,0.6); }
.btw-modal__card {
  position: relative; max-width: 520px; width: calc(100% - 32px);
  margin: 5vh auto; background: #fff; border-radius: 12px; padding: 32px;
  box-shadow: 0 24px 64px rgba(15,29,51,0.3); max-height: 90vh; overflow-y: auto;
}
.btw-modal__close { position: absolute; top: 12px; right: 14px; background: none; border: 0; font-size: 32px; color: var(--btw-text-mute); cursor: pointer; line-height: 1; }
.btw-modal__sub { color: var(--btw-text-mute); margin-bottom: 24px; }
.btw-leadform__row { display: block; margin-bottom: 16px; }
.btw-leadform__row span { display: block; font-weight: 600; margin-bottom: 6px; font-size: 14px; }
.btw-leadform input, .btw-leadform textarea {
  width: 100%; padding: 12px 14px; font: inherit; border: 1px solid var(--btw-border);
  border-radius: 6px; background: #fff; color: var(--btw-text);
}
.btw-leadform input:focus, .btw-leadform textarea:focus { outline: 2px solid var(--btw-teal); outline-offset: 1px; border-color: var(--btw-teal); }
.btw-leadform textarea { resize: vertical; min-height: 96px; }
.btw-leadform__legal { font-size: 12px; color: var(--btw-text-mute); margin: 12px 0 0; }
.btw-leadform__status { margin-top: 12px; font-size: 14px; font-weight: 500; min-height: 20px; }
.btw-leadform__status[data-state="ok"] { color: var(--btw-success); }
.btw-leadform__status[data-state="err"] { color: #c0392b; }
</style>

<script>
(function () {
  // CONFIG — set this to the live CRM webhook URL before publishing.
  var CRM_WEBHOOK_URL = window.BTW_LEAD_WEBHOOK || 'https://crm.btwebgroup.com/api/leads';

  var modal = document.getElementById('btwLeadModal');
  if (!modal) return;
  var form  = document.getElementById('btwLeadForm');
  var status= document.getElementById('btwLeadStatus');
  var submit= document.getElementById('btwLeadSubmit');

  // Open: any element with [data-btw-lead-open] or .btw-btn-buy
  document.addEventListener('click', function (e) {
    var t = e.target.closest('[data-btw-lead-open]');
    if (t) {
      e.preventDefault();
      document.getElementById('btwLeadContext').value = t.getAttribute('data-btw-lead-open') || '';
      openModal();
    }
    if (e.target.matches('[data-close]')) closeModal();
  });

  document.addEventListener('keydown', function (e) {
    if (e.key === 'Escape') closeModal();
  });

  function openModal() {
    document.getElementById('btwLeadPage').value = window.location.href;
    var p = new URLSearchParams(window.location.search);
    document.getElementById('btwLeadUtmSource').value   = p.get('utm_source')   || '';
    document.getElementById('btwLeadUtmCampaign').value = p.get('utm_campaign') || '';
    document.getElementById('btwLeadUtmContent').value  = p.get('utm_content')  || '';
    modal.setAttribute('aria-hidden', 'false');
    document.body.style.overflow = 'hidden';
    setTimeout(function () {
      var first = form.querySelector('input[name="name"]');
      if (first) first.focus();
    }, 50);
  }

  function closeModal() {
    modal.setAttribute('aria-hidden', 'true');
    document.body.style.overflow = '';
  }

  form.addEventListener('submit', function (e) {
    e.preventDefault();
    status.textContent = '';
    status.removeAttribute('data-state');
    if (!form.checkValidity()) { form.reportValidity(); return; }
    submit.disabled = true;
    submit.textContent = 'Sending…';

    var data = Object.fromEntries(new FormData(form).entries());

    fetch(CRM_WEBHOOK_URL, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(data)
    })
    .then(function (r) {
      if (!r.ok) throw new Error('HTTP ' + r.status);
      return r.json().catch(function () { return {}; });
    })
    .then(function () {
      status.setAttribute('data-state', 'ok');
      status.textContent = 'Got it. Our team will reach out within one business day.';
      form.reset();
      setTimeout(closeModal, 2500);
    })
    .catch(function () {
      status.setAttribute('data-state', 'err');
      status.textContent = 'Something went wrong. Please call us at (859) XXX-XXXX or email hello@btwebgroup.com.';
    })
    .finally(function () {
      submit.disabled = false;
      submit.textContent = 'Send my details';
    });
  });
})();
</script>
```

- [ ] **Step 2: Test the modal locally**

Open `_components/lead-form-modal.html` in a browser via a quick wrapper, click any element with `data-btw-lead-open="test-package"`, confirm modal opens, ESC closes it, invalid submit triggers HTML5 validation.

Run: `open /Users/sanketlakhani/Work/btwebgroup-packages/packages-html/_components/lead-form-modal.html`

Expected: file opens in browser; no console errors. (Modal won't have a trigger button standalone — wrap in test harness if needed; functional verification happens once embedded in Task 4.)

- [ ] **Step 3: Confirm phone (859) XXX-XXXX placeholder with Sanket**

Get the real Lexington phone number from Sanket and replace `(859) XXX-XXXX` everywhere in the modal source before moving on.

- [ ] **Step 4: Commit**

```bash
git add packages-html/_components/lead-form-modal.html
git commit -m "feat(pages): add reusable lead-capture modal"
```

---

## Task 3: Build shared trust + FAQ components

**Files:**
- Create: `packages-html/_components/trust-strip.html`
- Create: `packages-html/_components/sticky-trust-bar.html`
- Create: `packages-html/_components/faq-accordion.html`

- [ ] **Step 1: Trust strip (5 pillars, horizontal cards)**

```html
<!-- Paste inside a btw-section -->
<section class="btw-section btw-section--soft">
  <div class="btw-container">
    <h2 style="text-align:center;margin-bottom:40px;">Why local businesses keep choosing us</h2>
    <div class="btw-grid btw-grid--3" style="--btw-gap:20px;">
      <div class="btw-card">
        <div class="btw-badge">Pillar 1</div>
        <h3>Real Specialists, Real Decisions</h3>
        <p>Every campaign, every page, every ad is strategized and approved by our Lexington-based team. Nothing leaves our office without a human signature on it.</p>
      </div>
      <div class="btw-card">
        <div class="btw-badge">Pillar 2</div>
        <h3>AI Where It Belongs — In the Background</h3>
        <p>We use AI for the mundane: drafting first passes, running audits, generating options. We don't use it for the work that matters — that's our team's job.</p>
      </div>
      <div class="btw-card">
        <div class="btw-badge">Pillar 3</div>
        <h3>You Get the Savings</h3>
        <p>Because the busywork takes 70% less time, our specialists can do more for your dollar. That's why a strategy that used to cost $2,000 now costs $497.</p>
      </div>
      <div class="btw-card">
        <div class="btw-badge">Pillar 4</div>
        <h3>20+ Years in Lexington</h3>
        <p>AI is new. Our expertise isn't. We've been growing local businesses since before social media existed.</p>
      </div>
      <div class="btw-card" style="grid-column: span 2;">
        <div class="btw-badge btw-badge--gold">Pillar 5</div>
        <h3>No Lock-In. Ever.</h3>
        <p>Cancel any month, no penalties, no questions. Within 5 business days we export everything to you — contacts, campaigns, ads, designs, content, dashboards. No hidden fees, no cancellation gymnastics. Your business is yours.</p>
      </div>
    </div>
  </div>
</section>
```

- [ ] **Step 2: Sticky top trust bar**

```html
<!-- Paste at very top of page, inside .btw-pkg -->
<div class="btw-trustbar">
  <div class="btw-trustbar__inner">
    <span>🟢 No contracts</span>
    <span>·</span>
    <span>Cancel anytime</span>
    <span>·</span>
    <span>Your data is yours</span>
    <span>·</span>
    <span>Lexington team</span>
    <span>·</span>
    <span>20+ years</span>
  </div>
</div>
<style>
.btw-trustbar { background: var(--btw-navy); color: #fff; font-size: 13px; padding: 8px 12px; text-align: center; }
.btw-trustbar__inner { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; max-width: var(--btw-maxw); margin: 0 auto; }
@media (max-width: 600px) { .btw-trustbar__inner span:nth-of-type(even) { display: none; } }
</style>
```

- [ ] **Step 3: FAQ accordion**

```html
<!-- Reusable. Each .btw-faq__item shows one Q&A. -->
<section class="btw-section">
  <div class="btw-container" style="max-width: 820px;">
    <h2 style="text-align:center;margin-bottom:32px;">Questions, answered</h2>
    <div class="btw-faq">
      <details class="btw-faq__item">
        <summary>Can I cancel anytime?</summary>
        <p>Yes. Cancel any month, no penalties, no notice period. We close your subscription at the end of your current billing month and export your data within 5 business days.</p>
      </details>
      <details class="btw-faq__item">
        <summary>What if I want my data back?</summary>
        <p>You get a complete export package: contact lists, written content, ad creatives, design files, performance reports, and a handoff document for whoever takes over next. Delivered within 5 business days of cancellation.</p>
      </details>
      <details class="btw-faq__item">
        <summary>Are there setup fees or hidden charges?</summary>
        <p>No. The price you see is the price you pay. No setup fees, no cancellation fees, ever.</p>
      </details>
      <details class="btw-faq__item">
        <summary>Do I sign a contract?</summary>
        <p>No. Month-to-month for recurring packages. One-time payment for tripwires and websites. You're never locked in.</p>
      </details>
      <details class="btw-faq__item">
        <summary>How are you cheaper than other Lexington agencies?</summary>
        <p>Honest answer: AI tools handle the mundane work — research, drafts, audits, repetitive iteration — that used to eat 70% of our hours. Our team still owns every decision, but they're 4x faster on the busywork. We passed those savings to you instead of pocketing them.</p>
      </details>
      <details class="btw-faq__item">
        <summary>Who actually does the work — your team or AI?</summary>
        <p>Our team owns every strategic decision, every approval, every customer-facing deliverable. AI just speeds up the first-draft and research phases. Think of it like a calculator for accountants — it makes them faster, it doesn't replace their judgment.</p>
      </details>
    </div>
  </div>
</section>
<style>
.btw-faq__item { background: #fff; border: 1px solid var(--btw-border); border-radius: var(--btw-radius); margin-bottom: 12px; padding: 0; }
.btw-faq__item summary { padding: 18px 20px; cursor: pointer; font-weight: 600; font-family: var(--btw-font-heading); color: var(--btw-navy); list-style: none; position: relative; }
.btw-faq__item summary::-webkit-details-marker { display: none; }
.btw-faq__item summary::after { content: "+"; position: absolute; right: 20px; top: 18px; font-size: 24px; color: var(--btw-teal); transition: transform 0.15s; }
.btw-faq__item[open] summary::after { transform: rotate(45deg); }
.btw-faq__item p { padding: 0 20px 20px; color: var(--btw-text-mute); margin: 0; }
</style>
```

- [ ] **Step 4: Commit**

```bash
git add packages-html/_components/
git commit -m "feat(pages): add reusable trust + FAQ components"
```

---

## Task 4: Build root `/packages` catalog page

**Files:**
- Create: `packages-html/packages-root.html`

**Structure** (per spec §8.2): hero · filter bar · tripwire row · bundle row · service catalog · trust strip · social proof · FAQ · footer CTA.

- [ ] **Step 1: Write the page**

Each Beaver Builder snippet starts with a single `<div class="btw-pkg">` wrapper containing the Google Fonts link, the inline `_tokens.css`, all sections (hero, filter, tripwire row, bundle row, service catalog, trust strip, social proof, FAQ, footer CTA), and the lead-form modal at the end. Concrete copy and prices to use, drawn from spec:

- **Hero headline:** `Real Marketing Packages. Real Prices. Starting at $247.`
- **Hero sub:** `20 years of marketing expertise — now faster, sharper, and 60% more affordable thanks to the right AI tools running quietly in the background.`
- **Hero CTAs:** `[See all packages ↓]` (anchor to `#catalog`), `[Book a free 15-min call →]` (opens modal with `data-btw-lead-open="root-hero-call"`)
- **Filter bar:** three filter groups (Goal / Budget / Service) as filter chips — clicking sets `?goal=…&budget=…&service=…` URL params and hides non-matching cards via JS data-attributes on each card
- **Tripwire row:** 3 horizontal cards using copy from spec §4 (5K Email Blast $247, AI SEO Audit + Fix $297, AI Landing Page Mockup $247). Each card has `data-btw-lead-open="tripwire-<slug>"`.
- **Bundle row:** 4 cards (Lead Engine $1,197, Brand Builder $797, Upsell Engine $797, Full Spectrum $2,997). Each links to `/packages/<bundle-slug>`.
- **Service catalog:** 6 cards (Email, Social, PPC, SEO, Websites, Graphics) — each card includes the per-service AI angle paragraph from spec §3 and links to the service hub.
- **Trust strip:** paste the strip from Task 3.
- **Social proof:** 3 testimonial cards (placeholder names — Sanket to provide real quotes/logos before publish) + counter row: `[N] local businesses since 2005`.
- **FAQ:** 6 items from Task 3.
- **Footer CTA:** *"Still not sure? Book a free 15-minute call. We'll tell you which package fits — even if it's the cheapest one."* `[Book a call →]` opens modal.
- **End:** include the lead-form-modal snippet from Task 2.

Filter chip behavior — concrete JS (place before `</body>` of the snippet):

```html
<script>
(function () {
  var chips = document.querySelectorAll('[data-filter-chip]');
  var cards = document.querySelectorAll('[data-filter-card]');
  var state = { goal: 'all', budget: 'all', service: 'all' };

  // Read initial state from URL
  var p = new URLSearchParams(location.search);
  ['goal','budget','service'].forEach(function (k) { if (p.get(k)) state[k] = p.get(k); });

  function apply() {
    chips.forEach(function (c) {
      var k = c.getAttribute('data-filter-group');
      var v = c.getAttribute('data-filter-value');
      c.classList.toggle('is-active', state[k] === v);
    });
    cards.forEach(function (card) {
      var ok = ['goal','budget','service'].every(function (k) {
        if (state[k] === 'all') return true;
        var vals = (card.getAttribute('data-' + k) || '').split(' ');
        return vals.indexOf(state[k]) !== -1;
      });
      card.style.display = ok ? '' : 'none';
    });
    var np = new URLSearchParams();
    ['goal','budget','service'].forEach(function (k) { if (state[k] !== 'all') np.set(k, state[k]); });
    history.replaceState(null, '', location.pathname + (np.toString() ? '?' + np.toString() : '') + location.hash);
  }

  chips.forEach(function (c) {
    c.addEventListener('click', function () {
      var k = c.getAttribute('data-filter-group');
      state[k] = c.getAttribute('data-filter-value');
      apply();
    });
  });
  apply();
})();
</script>
```

Each card must include `data-filter-card data-goal="lead-gen brand-awareness upsell" data-budget="under-300 300-1000 1000-2000 2000-plus" data-service="email social ppc seo websites graphics"` with whichever values apply (space-separated for multi).

- [ ] **Step 2: Test locally**

Run: `open /Users/sanketlakhani/Work/btwebgroup-packages/packages-html/packages-root.html`

Acceptance checklist (verify each in browser):
- [ ] Page renders without console errors
- [ ] Mobile viewport (375px) — no horizontal scroll, hero readable, CTAs thumb-reachable
- [ ] Filter chips toggle classes and hide non-matching cards
- [ ] URL params persist on filter click (visible in address bar)
- [ ] Clicking any tripwire card opens the lead modal with correct context value
- [ ] ESC closes modal
- [ ] All 5 trust pillars visible
- [ ] FAQ accordion expands/collapses

- [ ] **Step 3: Commit**

```bash
git add packages-html/packages-root.html
git commit -m "feat(pages): build root /packages catalog page"
```

---

## Task 5: Build 6 service hub pages

**Files:**
- Create: `packages-html/service-email-marketing.html`
- Create: `packages-html/service-social-media.html`
- Create: `packages-html/service-ppc.html`
- Create: `packages-html/service-seo.html`
- Create: `packages-html/service-websites.html`
- Create: `packages-html/service-graphics-brand.html`

**Per-page structure** (spec §8.3): hero · 3-tier comparison table · "How AI helps — and where it doesn't" · tripwire down-sell · bundle up-sell · service-specific FAQ · sticky mobile CTA · lead modal.

Each service hub uses the **same template**. The only things that change per service: hero headline, AI-angle paragraph (spec §3), tier table contents (spec §5), down-sell tripwire, up-sell bundle, vertical examples.

- [ ] **Step 1: Build email-marketing page as the template**

Page contains:
1. Google Fonts link + inline `_tokens.css`
2. Sticky trust bar
3. **Hero:** `Email Marketing That Actually Sells.` + email AI-angle paragraph from spec §3 + best-for chips (Restaurants · Retail · E-com · B2B) + primary CTA `[Get Started]` (opens modal `data-btw-lead-open="email-hero"`) + ghost CTA `[Try $247 Email Blast]` (opens modal `data-btw-lead-open="tripwire-5k-email-blast"`).
4. **Anchor:** strike-through price banner — *"What this used to cost: $1,500–$2,500/mo. What it costs now: from $497/mo."*
5. **3-tier comparison table** (Starter $497 / Growth $997 / Pro $1,997) — full feature matrix from spec §5.1. Each column has a footer `[Get Started]` button (modal with context `email-starter`, `email-growth`, `email-pro`). Middle (Growth) column visually highlighted as "Most popular".
6. **"How AI helps — and where it doesn't"** — two-column block. Left column "Our team does:" (strategy, list segmentation decisions, copywriting, send-time decisions, ROI analysis). Right column "AI helps with:" (subject line variants, draft first passes, personalization tokens, deliverability check, A/B variant generation).
7. **Tripwire down-sell strip** — `Not ready for monthly? Try the 5,000-Contact Email Blast for $247. One send, your list, full report.` with CTA opening lead modal.
8. **Bundle up-sell strip** — `Most restaurants and retailers pair this with the Brand Builder Bundle — Social + Email together for $797/mo (save $197).` Link to `/packages/brand-builder-bundle`.
9. **Service-specific FAQ** (4 items):
   - *Will my emails land in inbox or spam?* → describe authentication setup (SPF/DKIM/DMARC), warm-up, list hygiene.
   - *Whose email service provider do we use?* → SendGrid via our CRM; included in management fee.
   - *Do I own my email list?* → Yes, fully — exportable any time.
   - *What if I don't have a list yet?* → describe list-building add-on; included starter list-grow tactics in Growth+.
10. **Sticky bottom CTA bar (mobile only)** — shows current/selected tier price + `[Get Started]`.
11. Lead modal.

- [ ] **Step 2: Verify email-marketing page**

Run: `open /Users/sanketlakhani/Work/btwebgroup-packages/packages-html/service-email-marketing.html`

Acceptance:
- [ ] Tier table is readable at mobile (stacks vertically)
- [ ] Each `[Get Started]` button opens modal with the correct context
- [ ] Sticky bottom CTA visible on mobile, hidden on desktop
- [ ] AI/human split block clearly reinforces team-leads framing
- [ ] No copy mentions specific AI tool names (ChatGPT/Claude/etc.)

- [ ] **Step 3: Build social-media hub**

Reuse the template. Substitute:
- Hero headline: `Social Media Your Customers Actually Stop For.`
- AI angle: spec §3 social paragraph
- Tier table: spec §5.2 (Starter/Growth/Pro at $497/$997/$1,997, 10/15/20 posts/mo, etc.)
- Down-sell tripwire: 20-Post Social Content Drop, $247
- Up-sell bundle: Brand Builder ($797/mo)
- FAQ: *Whose accounts do we post to?* / *What if I want to approve every post?* / *Can you handle DMs and comments?* / *What if my brand voice changes?*

- [ ] **Step 4: Build PPC hub**

Substitute:
- Hero: `PPC That Doesn't Burn Through Your Budget.`
- Hero sub: include the spec's "*Mgmt fee only. Ad spend is paid separately…*" line prominently.
- AI angle: spec §3 PPC paragraph
- Tier table: spec §5.3 (with min ad spend recommendations called out per tier)
- Down-sell: PPC Campaign Game Plan, $247
- Up-sell: Lead Engine Bundle ($1,197/mo)
- FAQ: *Who pays Google/Meta — us or you?* (you, directly) / *How fast can a campaign go live?* / *Do you do retargeting?* / *What's the recommended minimum ad spend?*

- [ ] **Step 5: Build SEO hub**

Substitute:
- Hero: `Get Found. By Google AND ChatGPT.` (AEO/GEO emphasis)
- AI angle: spec §3 SEO paragraph
- Tier table: spec §5.4 (Basic/Intermediate/Advanced)
- Down-sell: AI SEO Audit + Fix Pack, $297
- Up-sell: Lead Engine Bundle ($1,197/mo)
- FAQ: *What's AEO/GEO?* / *How long until I rank?* / *Do you do link-building?* / *Will you tell me what you're changing?*

- [ ] **Step 6: Build Marketing Websites hub**

Substitute:
- Hero: `Websites That Compete With $15K Builds — Without the Price Tag.`
- AI angle: spec §3 website paragraph
- Tier table: spec §5.5 (Refresh $497 / 5-Page $1,997 / 10-Page $3,497) — all one-time
- Down-sell: AI Landing Page Mockup, $247
- Up-sell: 5-Page Build → 10-Page Build OR Full Spectrum bundle
- FAQ: *Where is the site hosted?* / *Can I edit it myself?* / *What about e-commerce or web apps?* (→ Custom/Enterprise) / *Do you do redesigns of existing sites?* (→ Refresh tier)

- [ ] **Step 7: Build Graphics & Brand hub**

Substitute:
- Hero: `Brand Work With Studio Polish. In Days, Not Weeks.`
- AI angle: spec §3 graphics paragraph
- Tier table: spec §5.6 (Brand Basics $497 / Brand Kit $997 / Brand Identity Pro $1,997) — all one-time
- Down-sell: Brand Identity Concept, $297
- Up-sell: Full Spectrum Bundle ($2,997/mo) — includes a Brand Identity Concept signup bonus
- FAQ: *Do I own the final files?* (yes, all source) / *What if I don't like any of the concepts?* (revisions) / *Do you do animation?* / *What's the file format I'll get?*

- [ ] **Step 8: Verify all 6 hub pages**

For each page, open in browser and run the acceptance checklist from Step 2. Confirm consistent look, working modals, no broken links between hubs.

- [ ] **Step 9: Commit**

```bash
git add packages-html/service-*.html
git commit -m "feat(pages): build 6 service hub pages"
```

---

## Task 6: Build 4 bundle pages

**Files:**
- Create: `packages-html/bundle-lead-engine.html`
- Create: `packages-html/bundle-brand-builder.html`
- Create: `packages-html/bundle-upsell-engine.html`
- Create: `packages-html/bundle-full-spectrum.html`

**Per-page structure** (spec §8.4): hero · what's inside (3 service mini-cards) · the math · free signup bonus · why this bundle for [vertical] · compare bundles · FAQ · CTA + No Lock-In.

- [ ] **Step 1: Build Lead Engine bundle page**

Content from spec §6 Bundle 1:
- Hero: `Three channels. One team. One bill. Built to put your phone back on the hook.` Price: ~~$1,491/mo~~ **$1,197/mo** (save $294/mo · $3,528/yr). For: trades, lawyers, accountants, real estate, B2B.
- What's inside (3 mini-cards linking to service hubs): PPC Starter, SEO Basic, Email Starter.
- The math table: standalone $1,491/mo vs bundle $1,197/mo with $294/mo savings.
- Free signup bonus box (gold-accent): **30-Day Lead Performance Review (worth $147)** — custom benchmark after first 30 days, competitor comparison + next-month recommendations.
- Why this bundle: 2-3 paragraphs talking through a trades example and a B2B example.
- Compare bundles table: small 4-column comparison of all bundles, Lead Engine highlighted.
- Bundle-specific FAQ: *Can I add Social later?* / *Can I drop a channel mid-month?* / *Are tiers upgradeable?* / *What if my ad spend changes?* / *What if I cancel?*
- Bottom CTA: `[Start the Lead Engine Bundle]` (opens modal `data-btw-lead-open="bundle-lead-engine"`) + No Lock-In reminder.

- [ ] **Step 2: Build Brand Builder bundle page**

Spec §6 Bundle 2: Social Starter + Email Starter. ~~$994/mo~~ **$797/mo** (save $197/mo). For: restaurants, retail, salons, gyms, venues. Bonus: **Brand Voice Mini-Guide (worth $97)**.

Pitch: *"Look the part, show up everywhere your customers are, and stay top of mind."*

Same section structure as Task 6.1.

- [ ] **Step 3: Build Upsell Engine bundle page**

Spec §6 Bundle 3: Email Starter + SEO Basic. ~~$994/mo~~ **$797/mo** (save $197/mo). For: businesses with existing customer lists/databases. Bonus: **Customer Win-Back Email Pack — 3 emails (worth $97)**, one-time send included in first month volume.

Pitch: *"Your next sale is hiding in your existing customer list. We'll find it."*

- [ ] **Step 4: Build Full Spectrum bundle page**

Spec §6 Bundle 4: PPC Growth + SEO Intermediate + Email Growth + Social Growth. ~~$3,988/mo~~ **$2,997/mo** (save $991/mo · $11,892/yr). For: established businesses ready to invest across all channels.

Bonus box: **Brand Identity Concept (worth $297)** — logo concept (3 variations) + 1-page brand guide + color + fonts + homepage hi-fi mockup.

Structural perks section: Dedicated account manager · Quarterly strategy sessions · Priority 24-hour response.

Pitch: *"Every channel covered. One team. One number. One business growing on every front."*

- [ ] **Step 5: Verify all 4 bundle pages**

For each: open in browser, confirm pricing math displayed correctly, bonus box highlighted in gold, modal opens with correct bundle context, all 4 bundle pages cross-link to each other in the compare-bundles table.

- [ ] **Step 6: Commit**

```bash
git add packages-html/bundle-*.html
git commit -m "feat(pages): build 4 bundle pages"
```

---

## Task 7: Build 3 launch tripwire pages

**Files:**
- Create: `packages-html/tripwire-5k-email-blast.html`
- Create: `packages-html/tripwire-ai-seo-audit-fix.html`
- Create: `packages-html/tripwire-ai-landing-page-mockup.html`

**Per-page structure** (spec §8.5): full-screen hero · exactly what you get (5 specific bullets) · timeline (visual) · "what this is NOT" · after-purchase upsell hook · FAQ + No Lock-In · single CTA.

Sharpest pages on the site. One goal, no distraction. Single CTA opens lead modal.

- [ ] **Step 1: Build 5K Email Blast tripwire page**

Hero: `5,000 Emails Sent in 5 Business Days. $247.` Sub: *"Comparable agency work: ~$1,400. Your price: $247. Our team writes the email. You send to your list. Real results, real fast."*

Exactly what you get (5 bullets):
1. ✅ Our copywriters draft one email — sale, announcement, win-back, whatever you need
2. ✅ AI helps generate subject line variants — our team picks the winner via A/B test
3. ✅ Sent to up to 5,000 contacts on your existing list (you provide the list)
4. ✅ Full delivery report — opens, clicks, replies — within 48 hours of send
5. ✅ One-time. No subscription. No contract. Money-back if we miss the 5-day deadline.

Timeline (4-step visual):
- **Day 1** — Purchase + intake form auto-sent
- **Day 2** — 15-min kickoff call (we book it via Calendly)
- **Day 3-4** — Our team writes + AI assists; you approve
- **Day 5** — Send + report

What this is NOT:
- ❌ Not a recurring subscription
- ❌ Not a contact list — you provide it (we don't share or rent lists)
- ❌ Not a deliverability rescue for blacklisted domains (we'll tell you upfront if your domain has issues)
- ❌ Not a guarantee of conversions — we guarantee delivery, not your buyers

After-purchase upsell hook: *"If this send works for you, the next step is Email Marketing Starter at $497/mo — 1 campaign/mo, list management, ongoing strategy. We'll talk about it after your delivery report."*

FAQ (4-5 items): *Whose email service?* / *What if my list bounces?* / *What if I don't have a list yet?* (referral to list-build add-on) / *Refund?* (money-back if we miss 5-day SLA) / *Can I send multiple emails?* (no, this is 1 send — Starter tier for ongoing).

Single bottom CTA: `[Send my 5,000 emails — $247]` (opens modal `data-btw-lead-open="tripwire-5k-email-blast"`).

- [ ] **Step 2: Build AI SEO Audit + Fix tripwire page**

Hero: `Get Found by ChatGPT, Gemini, and Google. $297. Real Fixes, Not Just a PDF.` Sub: comparable $1,400+, your price $297.

Exactly what you get:
1. ✅ Full site SEO audit (AI scans, our team interprets)
2. ✅ AEO/GEO analysis — visibility in ChatGPT, Gemini, Perplexity
3. ✅ **Actual fixes applied** to meta titles, descriptions, headings, alt text, schema on up to 5 pages
4. ✅ Clear list of remaining issues with priorities
5. ✅ Delivered in 5 business days

Timeline: same 4-step pattern.

What this is NOT: not a full SEO subscription, not link-building, not content creation (5 fixes only).

Upsell hook: SEO Basic at $497/mo.

FAQ: *Which 5 pages do you fix?* (top 5 by traffic or your priority) / *What if I have more than 5 pages?* (Intermediate/Advanced tiers) / *Do you need my CMS login?* (yes, temporary access) / *Refund?* / *What if the audit finds nothing?* (it always does — usually 3-5 surprises).

CTA: `[Get my SEO Audit + Fix — $297]`

- [ ] **Step 3: Build AI Landing Page Mockup tripwire page**

Hero: `High-Conversion Landing Page Mockup. 5 Business Days. $247.` Sub: comparable $1,400+, your price $247.

Exactly what you get:
1. ✅ 1 landing page mockup — home page OR service page, your choice
2. ✅ AI-drafted, team-refined copy (headline, sub, sections, CTA)
3. ✅ AI-generated or curated imagery
4. ✅ Mobile + desktop preview
5. ✅ Delivered as Figma + PDF — yours to keep

Timeline: same.

What this is NOT: not a coded page (coding is the upsell), not multiple pages (5-Page Build for that), not unlimited revisions (1 revision round).

Upsell hook: 5-Page Website Build at $1,997 one-time.

FAQ: *Will you code it for me?* (no — upgrade to Build), *What if I want changes?* (1 revision round), *Can I take this to another developer?* (yes, fully yours), *Refund?*, *Can I pick the style?* (yes, you fill out a style preference in intake).

CTA: `[Get my Landing Page Mockup — $247]`

- [ ] **Step 4: Verify all 3 tripwire pages**

For each:
- [ ] Single primary CTA above the fold AND at bottom
- [ ] Timeline visualization renders correctly (use a 4-column grid that stacks on mobile)
- [ ] "What this is NOT" section is honest, reduces refund risk
- [ ] No competing CTAs that might distract from primary buy
- [ ] Money-back-on-missed-SLA language present

- [ ] **Step 5: Commit**

```bash
git add packages-html/tripwire-*.html
git commit -m "feat(pages): build 3 launch tripwire pages"
```

---

## Task 8: Cross-page QA + accessibility pass

**Files:** (no new files, modify any page that fails a check)

- [ ] **Step 1: Cross-page link audit**

Open each page in browser, click every internal link, confirm it goes to the right page. Note: while pages are HTML files locally, the real URLs on btwebgroup.com will be `/packages/<slug>`. Update all `href` values to absolute paths matching spec §8.1 URL map before publishing — list them in a follow-up doc `packages-html/URL_MAP.md`.

Create: `packages-html/URL_MAP.md`

```markdown
# Page → Live URL mapping

| Local file | Live URL |
|---|---|
| packages-root.html | /packages |
| service-email-marketing.html | /packages/email-marketing |
| service-social-media.html | /packages/social-media |
| service-ppc.html | /packages/ppc |
| service-seo.html | /packages/seo |
| service-websites.html | /packages/websites |
| service-graphics-brand.html | /packages/graphics-brand |
| bundle-lead-engine.html | /packages/lead-engine-bundle |
| bundle-brand-builder.html | /packages/brand-builder-bundle |
| bundle-upsell-engine.html | /packages/upsell-engine-bundle |
| bundle-full-spectrum.html | /packages/full-spectrum-bundle |
| tripwire-5k-email-blast.html | /packages/5k-email-blast |
| tripwire-ai-seo-audit-fix.html | /packages/ai-seo-audit-fix |
| tripwire-ai-landing-page-mockup.html | /packages/ai-landing-page-mockup |
```

- [ ] **Step 2: Accessibility checklist (run on every page)**

- [ ] All images have meaningful `alt` (decorative ones use `alt=""`)
- [ ] All form fields have associated `<label>`
- [ ] Color contrast on buttons (teal #00b8c4 on white) passes WCAG AA — verify with browser devtools
- [ ] Tab order through page is logical
- [ ] Modal traps focus while open and returns focus on close
- [ ] FAQ accordions are keyboard-operable (native `<details>` already is)
- [ ] No `outline: none` on focusable elements without replacement focus state
- [ ] Heading order doesn't skip levels (h1 → h2 → h3, no h1 → h3)

- [ ] **Step 3: Mobile QA (run on every page)**

Open each in Chrome devtools mobile mode (375x667). Verify:
- [ ] No horizontal scroll
- [ ] All buttons ≥44px tap target
- [ ] Body font ≥16px
- [ ] Modal usable, doesn't cover the close button
- [ ] Sticky bottom CTAs (where used) don't overlap content

- [ ] **Step 4: Beaver Builder paste-test**

Per the user's plan: HTML drops into a Beaver Builder code module. Verify there are NO references to external assets that won't exist on the live site:
- All `<link rel="stylesheet">` for Google Fonts must be inside each snippet (because BB code modules don't share `<head>`)
- All CSS is inline `<style>` blocks
- All JS is inline `<script>` blocks
- No `<html>`, `<head>`, or `<body>` tags (Beaver Builder will reject those)
- All wrapper styles scoped under `.btw-pkg` to avoid leaking into theme CSS

Run a script to detect violations:

```bash
cd /Users/sanketlakhani/Work/btwebgroup-packages/packages-html
for f in *.html; do
  echo "=== $f ==="
  grep -nE '<(html|head|body)[ >]' "$f" && echo "VIOLATION in $f" || echo "ok"
done
```

Expected: every file prints "ok".

- [ ] **Step 5: Commit QA fixes (if any)**

```bash
git add packages-html/
git commit -m "fix(pages): QA pass — links, a11y, mobile, BB compatibility"
```

---

## Task 9: Final review + handoff doc

**Files:**
- Create: `packages-html/README.md`

- [ ] **Step 1: Write the handoff README**

```markdown
# BT Web Group — Packages HTML Snippets

Drop-in HTML for Beaver Builder Code Modules on btwebgroup.com.

## How to publish

For each file in this folder (except `_*` helpers):

1. Create the corresponding WordPress page at the URL listed in `URL_MAP.md`.
2. In Beaver Builder, add a single **HTML / Code** module to the page.
3. Open the local `.html` file, copy its entire contents, paste into the code module.
4. Save the BB layout, preview, then publish.

## Before publishing — required edits

Find-and-replace across all files:
- `(859) XXX-XXXX` → your real Lexington phone number
- `https://crm.btwebgroup.com/api/leads` → your real CRM webhook endpoint
- `hello@btwebgroup.com` → confirm correct intake email
- Testimonial placeholders (search "TESTIMONIAL_PLACEHOLDER") → real client quotes + logos

## How the lead form works

Every "buy" CTA opens the same modal which POSTs JSON to `CRM_WEBHOOK_URL`. The payload contains: name, email, phone, problem, package_context, page_url, and UTM params. Your CRM should ack with HTTP 200.

## How the filter URL params work

The root `/packages` page reads `?goal=…&budget=…&service=…` from the URL. Eblast links can pre-filter — e.g., `/packages?budget=under-300` lands users straight on the tripwire-eligible view.
```

- [ ] **Step 2: Run final self-check against spec**

Open `docs/superpowers/specs/2026-06-02-packages-launch-design.md` side-by-side with the file list. Verify every page in §8.1 URL map has a corresponding file (excluding rotation pool tripwires #4-10, which are out of scope for this plan — note that in the handoff).

- [ ] **Step 3: Commit handoff doc**

```bash
git add packages-html/README.md
git commit -m "docs(pages): add publish handoff README"
```

---

## Out of Scope for This Plan

- **Rotation pool tripwire pages** (spec §4 items 4-10): 20-Post Social, PPC Game Plan, GBP Tune-Up, Local Citation Pack, AI Blog Article, Brand Identity Concept, 5-Page Copy Refresh. Add to a follow-up plan when you're ready to rotate eblast offers.
- **Custom/Enterprise page** (spec §5.5 footnote): one-pager for 15+ pages / e-com / web apps. Add later.
- **WordPress page creation in the admin UI** — this plan produces snippets; publishing them via WP admin is a manual operator step covered in the README.
- **CRM webhook backend** — assumed to exist (Sanket's CRM already integrates with SendGrid; lead capture endpoint configuration is an ops concern, covered in Plan 3).
- **Real testimonials and client logos** — placeholders are left in social-proof sections; Sanket to provide before publishing.

---

## Success Criteria

- 14 HTML page snippets in `packages-html/`, each one paste-ready into Beaver Builder
- Single source of truth for brand tokens in `_tokens.css`
- Single source of truth for lead capture in `_components/lead-form-modal.html`
- All pages mobile-clean, accessible, modal-driven (no separate buy flows)
- README + URL_MAP makes publishing trivial for an operator who didn't write the code
