patx/vegy

major redesign

Commit 6b51037 · patx · 2026-08-05T02:54:32-04:00

Changeset
6b510371382c93fe2a4a94c28e56725a4df16fb1
Parents
050693b9fb8f424d1dc2290fbf74e040411d73d5

View source at this commit

Comments

No comments yet.

Log in to comment

Diff

diff --git a/docs/_dockcheck.html b/docs/_dockcheck.html
new file mode 100644
index 0000000..a24b761
--- /dev/null
+++ b/docs/_dockcheck.html
@@ -0,0 +1,945 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta name="viewport" content="width=device-width, initial-scale=1" />
+  <title>Vegy — Wholesale ordering software for food distributors</title>
+  <meta name="description" content="Vegy puts your wholesale catalog on your customers' phones under your own brand. Customer-specific pricing, order minimums, iOS and Android apps, and QuickBooks sync. $599/mo flat — no revenue share. Book a demo." />
+  <link rel="canonical" href="https://vegy.app/" />
+
+  <meta property="og:type" content="website" />
+  <meta property="og:url" content="https://vegy.app/" />
+  <meta property="og:site_name" content="Vegy" />
+  <meta property="og:title" content="Vegy — Wholesale ordering software for food distributors" />
+  <meta property="og:description" content="Your catalog, your brand, your pricing — on your customers' phones. Orders arrive priced-out and synced to QuickBooks." />
+  <meta property="og:image" content="https://vegy.app/shot-catalog.png" />
+  <meta name="twitter:card" content="summary_large_image" />
+  <meta name="theme-color" content="#16a34a" />
+
+  <link rel="icon" href="favicon.svg" type="image/svg+xml" />
+  <link rel="apple-touch-icon" href="shot-catalog.png" />
+
+  <link rel="preconnect" href="https://fonts.googleapis.com" />
+  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
+  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=Inter:wght@400;500;600;700&display=swap" />
+  <link rel="stylesheet" href="styles.css" />
+</head>
+
+<body>
+
+  <header class="masthead" id="masthead">
+    <div class="wrap">
+      <a class="wordmark" href="/">
+        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+          <path d="M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z" />
+          <path d="M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12" />
+        </svg>
+        Vegy
+      </a>
+
+      <nav class="nav-links" aria-label="Primary">
+        <a href="#why">Why Vegy</a>
+        <a href="#how">How it works</a>
+        <a href="#features">Features</a>
+        <a href="#pricing">Pricing</a>
+        <a href="#faq">FAQ</a>
+      </nav>
+
+      <a class="btn btn-primary btn-sm" href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">
+        Book a demo
+      </a>
+      <button class="nav-toggle" id="navToggle" type="button"
+              aria-expanded="false" aria-controls="mobileNav" aria-label="Open menu">
+        <span></span><span></span><span></span>
+      </button>
+    </div>
+    <nav class="mobile-nav" id="mobileNav" aria-label="Mobile">
+      <a class="m-link" href="#why">Why Vegy</a>
+      <a class="m-link" href="#how">How it works</a>
+      <a class="m-link" href="#features">Features</a>
+      <a class="m-link" href="#pricing">Pricing</a>
+      <a class="m-link" href="#faq">FAQ</a>
+      <a class="btn btn-primary" href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">Book a demo</a>
+    </nav>
+  </header>
+
+  <main>
+
+    <!-- ── Hero ─────────────────────────────────────────────────────────── -->
+    <section class="hero">
+      <div class="wrap">
+        <div class="hero-copy">
+          <span class="eyebrow">For produce, meat &amp; specialty food distributors</span>
+
+          <h1 class="h-xl">Take orders<br /><span class="accent">in your sleep</span>.</h1>
+
+          <p class="lede">
+            Vegy puts your full catalog — your brand, your pricing, your minimums — on
+            your customers' phones. They order whenever they think of it. You wake up to
+            priced-out orders that are already in QuickBooks.
+          </p>
+
+          <div class="cta-row center">
+            <a class="btn btn-primary" href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">
+              Book a demo <span class="arrow" aria-hidden="true">→</span>
+            </a>
+            <a class="btn btn-outline" href="#how">See how it works</a>
+          </div>
+
+          <p class="hero-note">
+            White-labeled · Web, iOS &amp; Android · Order by text · QuickBooks sync
+          </p>
+        </div>
+
+        <div class="hero-visual">
+          <div class="shots" id="shots" tabindex="0" role="group"
+               aria-label="Vegy product screens — scroll sideways to see all four">
+          <figure class="shot">
+            <img src="shot-catalog.webp" width="476" height="871" fetchpriority="high"
+                 alt="Your storefront on a customer's phone: produce by the case and by the each, with pricing, quantity steppers and a running cart total." />
+          </figure>
+          <figure class="shot">
+            <img src="shot-order.webp" width="476" height="871" fetchpriority="low" loading="lazy"
+                 alt="An incoming order: customer and delivery details, order notes, priced line items, and buttons to print a pull slip, export CSV, or convert it to an invoice." />
+          </figure>
+          <figure class="shot">
+            <img src="shot-deliveries.webp" width="476" height="871" fetchpriority="low" loading="lazy"
+                 alt="The day's deliveries: every order for the date with its status, order number, and QuickBooks connection state." />
+          </figure>
+          <figure class="shot">
+            <img src="shot-dashboard.webp" width="476" height="871" fetchpriority="low" loading="lazy"
+                 alt="An instance dashboard under the distributor's own branding, with quick actions for new orders, AI orders, items, accounts and price lists." />
+          </figure>
+          </div>
+          <div class="shot-dots" id="shotDots"></div>
+        </div>
+
+        <div class="trust">
+          <p class="eyebrow">Running on Vegy today</p>
+          <div class="trust-logos">
+            <img src="gardenfresh.webp" width="437" height="132" loading="lazy"
+                 alt="Garden Fresh Produce LLC" />
+            <span class="trust-sep" aria-hidden="true"></span>
+            <img src="prima.webp" width="315" height="132" loading="lazy"
+                 alt="Prima Produce" />
+          </div>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── Why Vegy: the problem, paired with the fix ───────────────────── -->
+    <section class="section band-soft" id="why">
+      <div class="wrap">
+        <div class="section-head center reveal">
+          <span class="eyebrow">Why Vegy</span>
+          <h2 class="h-lg">Every order still gets typed in by hand</h2>
+          <p class="lede">
+            Orders reach you a different way every time, and one person turns all of
+            them into something the warehouse can pull. Here is what changes, line by
+            line.
+          </p>
+        </div>
+
+        <div class="swap reveal">
+          <div class="swap-head">
+            <span>How it arrives today</span>
+            <span aria-hidden="true"></span>
+            <span class="is-vegy">What Vegy does with it</span>
+          </div>
+
+          <div class="swap-row">
+            <div class="swap-from">
+              <span class="cell-label">How it arrives today</span>
+              <span class="chan">Voicemail · 11:40 PM</span>
+              <p>&ldquo;Hey it&rsquo;s Mike, give me the usual plus a couple cases of romaine, uh — call me back.&rdquo;</p>
+            </div>
+            <div class="swap-arrow" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></div>
+            <div class="swap-to">
+              <span class="cell-label">What Vegy does with it</span>
+              <p>Vegy&rsquo;s AI picks up, turns the call into a structured order on Mike&rsquo;s account, and prices it against his tier. It&rsquo;s waiting for you at 6am.</p>
+            </div>
+          </div>
+          <div class="swap-row">
+            <div class="swap-from">
+              <span class="cell-label">How it arrives today</span>
+              <span class="chan">Text message</span>
+              <p>&ldquo;4 tomato, 2 onion, 6 lettuce&rdquo; — no pack sizes, no case counts, no account.</p>
+            </div>
+            <div class="swap-arrow" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></div>
+            <div class="swap-to">
+              <span class="cell-label">What Vegy does with it</span>
+              <p>The same text comes back as real line items from your catalog, with your pack sizes and case counts already attached.</p>
+            </div>
+          </div>
+          <div class="swap-row">
+            <div class="swap-from">
+              <span class="cell-label">How it arrives today</span>
+              <span class="chan">Email · PDF attached</span>
+              <p>An order sheet from 2019, with prices that expired two seasons ago.</p>
+            </div>
+            <div class="swap-arrow" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></div>
+            <div class="swap-to">
+              <span class="cell-label">What Vegy does with it</span>
+              <p>They order from your live catalog instead, so the price is whatever their tier says today — and minimums are checked at checkout.</p>
+            </div>
+          </div>
+          <div class="swap-row">
+            <div class="swap-from">
+              <span class="cell-label">How it arrives today</span>
+              <span class="chan">Then, every time</span>
+              <p>Someone re-keys all of it by hand before the pull sheets go out. That&rsquo;s where the shorts come from, and the wrong pack sizes, and the credits.</p>
+            </div>
+            <div class="swap-arrow" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></div>
+            <div class="swap-to">
+              <span class="cell-label">What Vegy does with it</span>
+              <p>Nothing gets typed twice. The order syncs into QuickBooks as a customer, items, and an invoice, and the pull sheet prints itself.</p>
+            </div>
+          </div>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── How it works ─────────────────────────────────────────────────── -->
+    <section class="section" id="how">
+      <div class="wrap">
+        <div class="section-head center reveal">
+          <span class="eyebrow">How it works</span>
+          <h2 class="h-lg">Three steps, and the phone stops ringing</h2>
+        </div>
+
+        <div class="rows">
+          <div class="row reveal">
+            <div class="row-text">
+              <span class="eyebrow">Step 01</span>
+              <h3 class="h-md">We load your catalog</h3>
+              <p>
+                Your item list, pack sizes, categories, and price tiers get imported for
+                you — nothing gets rebuilt by hand. Then it's your logo, your product
+                photos, your category names, on your own domain.
+              </p>
+            </div>
+            <div class="row-visual">
+              <div class="mock">
+                <div class="mock-head"><span>Your catalog</span><span class="tag">Imported</span></div>
+                <div class="mock-body">
+                  <div class="mock-line"><span>Artichoke 12CT</span><span class="pack">Case</span><span class="price">$71.82</span></div>
+                  <div class="mock-line"><span>Arugula, Baby 2/1.5lb</span><span class="pack">Case</span><span class="price">$22.28</span></div>
+                  <div class="mock-line"><span>Romaine Hearts 12CT</span><span class="pack">Case</span><span class="price">$43.89</span></div>
+                  <div class="mock-line"><span>Tomato, Roma 25lb</span><span class="pack">Case</span><span class="price">$31.40</span></div>
+                </div>
+              </div>
+            </div>
+          </div>
+
+          <div class="row is-flipped reveal">
+            <div class="row-text">
+              <span class="eyebrow">Step 02</span>
+              <h3 class="h-md">Your customers order</h3>
+              <p>
+                From your website, your own iOS and Android app, or straight over voice
+                and text. Last week's order is right there, so a reorder takes seconds
+                instead of a phone call — at 11pm, on a Sunday, from a walk-in cooler.
+              </p>
+            </div>
+            <div class="row-visual">
+              <div class="mock">
+                <div class="mock-head"><span>Sunrise Cafe · Tuesday</span><span class="tag">Tier 2</span></div>
+                <div class="mock-body">
+                  <div class="mock-line"><span>Artichoke 12CT</span><span class="pack">2 cases</span><span class="price">$143.64</span></div>
+                  <div class="mock-line"><span>Arugula, Baby 2/1.5lb</span><span class="pack">6 cases</span><span class="price">$133.68</span></div>
+                  <div class="mock-line"><span>Romaine Hearts 12CT</span><span class="pack">4 cases</span><span class="price">$175.56</span></div>
+                </div>
+                <div class="mock-foot"><span>Order total</span><span class="amt">$452.88</span></div>
+              </div>
+            </div>
+          </div>
+
+          <div class="row reveal">
+            <div class="row-text">
+              <span class="eyebrow">Step 03</span>
+              <h3 class="h-md">You get a clean order</h3>
+              <p>
+                Priced against that customer's tier, checked against your minimums, and
+                synced to QuickBooks or your ERP. Print pull sheets, route lists, and
+                price lists straight from it.
+              </p>
+            </div>
+            <div class="row-visual">
+              <div class="mock">
+                <div class="mock-head"><span>QuickBooks</span><span class="tag">Synced 6:02 AM</span></div>
+                <div class="mock-body">
+                  <div class="mock-line"><span>Customer record</span><span class="price ok">Updated</span></div>
+                  <div class="mock-line"><span>Items &amp; pack sizes</span><span class="price ok">Updated</span></div>
+                  <div class="mock-line"><span>Invoice #4417</span><span class="price ok">Created</span></div>
+                  <div class="mock-line"><span>Pull sheet</span><span class="price ok">Ready</span></div>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── Feature grid ─────────────────────────────────────────────────── -->
+    <section class="section band-soft" id="features">
+      <div class="wrap">
+        <div class="section-head center reveal">
+          <span class="eyebrow">Features</span>
+          <h2 class="h-lg">The rest of what the ordering desk was doing</h2>
+          <p class="lede">
+            Case pricing, customer tiers, minimums, and the paperwork your warehouse runs
+            on — not a retail cart with a wholesale sticker on it.
+          </p>
+        </div>
+
+        <div class="cards reveal">
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <rect x="5" y="2" width="14" height="20" rx="2.5" /><path d="M12 18h.01" />
+              </svg>
+            </div>
+            <h3 class="h-sm">Order from anywhere</h3>
+            <p>
+              Your own website, mobile web, native iOS and Android apps, or AI-powered
+              ordering by voice and text for customers who will never open an app.
+            </p>
+          </article>
+
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <path d="M12.6 2.6 21 11a2 2 0 0 1 0 2.8l-7.2 7.2a2 2 0 0 1-2.8 0L3 12.6V4a1 1 0 0 1 1-1h8.6Z" /><path d="M7.5 7.5h.01" />
+              </svg>
+            </div>
+            <h3 class="h-sm">Pricing that knows the customer</h3>
+            <p>
+              Customer-specific pricing tiers and contract pricing applied automatically,
+              plus per-account order minimums enforced at checkout.
+            </p>
+          </article>
+
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <path d="M3 17l6-6 4 4 8-8" /><path d="M17 7h4v4" />
+              </svg>
+            </div>
+            <h3 class="h-sm">Bigger orders, on purpose</h3>
+            <p>
+              Promote featured items, push new products in front of the right accounts,
+              and let favorites and one-tap reorder do the rest.
+            </p>
+          </article>
+
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <path d="M21 12a9 9 0 0 1-15.5 6.2L3 16" /><path d="M3 12a9 9 0 0 1 15.5-6.2L21 8" /><path d="M3 21v-5h5" /><path d="M21 3v5h-5" />
+              </svg>
+            </div>
+            <h3 class="h-sm">QuickBooks &amp; ERP sync</h3>
+            <p>
+              Customers, items, and invoices flow into QuickBooks or your existing ERP.
+              No double entry, no end-of-day export ritual.
+            </p>
+          </article>
+
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <path d="M14 2H6.5A1.5 1.5 0 0 0 5 3.5v17A1.5 1.5 0 0 0 6.5 22h11a1.5 1.5 0 0 0 1.5-1.5V7Z" /><path d="M14 2v5h5" /><path d="M9 13h6" /><path d="M9 17h4" />
+              </svg>
+            </div>
+            <h3 class="h-sm">Paperwork in one click</h3>
+            <p>
+              Pull sheets, price lists, and sales reports export instantly — in the format
+              your warehouse and your bookkeeper already expect.
+            </p>
+          </article>
+
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <path d="M2 7h11v10H2z" /><path d="M13 10h4.5l3.5 3.5V17h-8" /><circle cx="7" cy="18.5" r="1.8" /><circle cx="17" cy="18.5" r="1.8" />
+              </svg>
+            </div>
+            <h3 class="h-sm">Inventory &amp; delivery tracking</h3>
+            <p>
+              Keep inventory and payment status attached to the order, and track
+              deliveries through to the door without a second system.
+            </p>
+          </article>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── Dark: differentiators ────────────────────────────────────────── -->
+    <section class="section band-dark">
+      <div class="wrap">
+        <div class="section-head reveal">
+          <span class="eyebrow">Where Vegy is different</span>
+          <h2 class="h-lg">Your brand in front, your books untouched</h2>
+          <p class="lede">
+            Vegy runs underneath your business — it doesn't put itself between you and
+            your customers, or between you and your accountant.
+          </p>
+        </div>
+
+        <div class="rows">
+          <div class="row reveal">
+            <div class="row-text">
+              <h3 class="h-md">It's your name on it, not ours</h3>
+              <p style="color:rgba(255,255,255,.72)">
+                Your customers download your app, from your listing, and see your logo
+                when it opens. Nobody has to know there's a software vendor behind your
+                ordering.
+              </p>
+            </div>
+            <div class="row-visual">
+              <div class="mock">
+                <div class="mock-head"><span>What your customers see</span></div>
+                <div class="mock-body">
+                  <div class="mock-line"><span>App Store listing</span><span class="price ok">Your company</span></div>
+                  <div class="mock-line"><span>Ordering domain</span><span class="price ok">orders.yourco.com</span></div>
+                  <div class="mock-line"><span>Logo &amp; colors</span><span class="price ok">Yours</span></div>
+                  <div class="mock-line"><span>Catalog &amp; photos</span><span class="price ok">Yours</span></div>
+                </div>
+              </div>
+            </div>
+          </div>
+
+          <div class="row is-flipped reveal">
+            <div class="row-text">
+              <h3 class="h-md">Your books stay your books</h3>
+              <p style="color:rgba(255,255,255,.72)">
+                Vegy creates and updates customers, items, and invoices in QuickBooks. It
+                does not post journal entries, recognize revenue, or reconcile — your
+                accountant's workflow stays exactly where it is.
+              </p>
+            </div>
+            <div class="row-visual">
+              <div class="mock">
+                <div class="mock-head"><span>QuickBooks scope</span></div>
+                <div class="mock-body">
+                  <div class="mock-line"><span>Customers, items, invoices</span><span class="price ok">Vegy writes</span></div>
+                  <div class="mock-line"><span>Journal entries</span><span class="price muted-cell">Untouched</span></div>
+                  <div class="mock-line"><span>Revenue recognition</span><span class="price muted-cell">Untouched</span></div>
+                  <div class="mock-line"><span>Reconciliation</span><span class="price muted-cell">Untouched</span></div>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── Pricing ──────────────────────────────────────────────────────── -->
+    <section class="section band-soft" id="pricing">
+      <div class="wrap">
+        <div class="section-head center reveal">
+          <span class="eyebrow">Pricing</span>
+          <h2 class="h-lg">No revenue share. No per-seat games.</h2>
+          <p class="lede">
+            A flat monthly fee, plus a quarter when our AI takes the order for you. A
+            $4,000 order costs you exactly what a $400 order costs you.
+          </p>
+        </div>
+
+        <div class="price-card reveal">
+          <div class="price-row">
+            <div class="price-unit">
+              <p class="price-figure">$599<span class="per">/mo</span></p>
+              <p class="price-cap">Platform fee</p>
+            </div>
+
+            <div class="price-plus" aria-hidden="true">+</div>
+
+            <div class="price-unit">
+              <p class="price-figure">25¢<span class="per">/order</span></p>
+              <p class="price-cap">AI orders — voice, text &amp; web</p>
+            </div>
+          </div>
+
+          <ul class="included">
+            <li>Your white-labeled web storefront and ordering domain</li>
+            <li>Native iOS and Android apps published under your brand</li>
+            <li>Unlimited customer accounts and pricing tiers</li>
+            <li>QuickBooks sync, or integration with your existing ERP</li>
+            <li>Catalog import and account setup, done by us</li>
+            <li>Email and phone support from people who know your instance</li>
+          </ul>
+
+          <p class="price-note">
+            Billed monthly. Final pricing depends on item count, number of accounts, and
+            whether you need a custom ERP integration — you'll get the exact number on
+            the demo call.
+          </p>
+
+          <a class="btn btn-white" style="margin-top:1.8rem"
+             href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">
+            Book a demo <span class="arrow" aria-hidden="true">→</span>
+          </a>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── FAQ ──────────────────────────────────────────────────────────── -->
+    <section class="section" id="faq">
+      <div class="wrap wrap-narrow">
+        <div class="section-head center reveal">
+          <span class="eyebrow">Straight answers</span>
+          <h2 class="h-lg">The questions you're actually asking</h2>
+        </div>
+
+        <div class="faq reveal">
+          <details>
+            <summary>My customers aren't tech people. Will they really use this?</summary>
+            <div class="answer">
+              <p>
+                Most of them reorder the same twenty items every week, and that's the case
+                Vegy is built around — their last order is on the first screen, and
+                reordering is a few taps.
+              </p>
+              <p>
+                For the holdouts, voice and text ordering means they keep calling and
+                texting exactly like they do now. The difference is that it lands in your
+                system as a structured, priced order instead of in someone's inbox.
+              </p>
+            </div>
+          </details>
+
+          <details>
+            <summary>What about the customers who insist on calling?</summary>
+            <div class="answer">
+              <p>
+                Keep taking their calls. Your team enters the order on their behalf and it
+                goes through the same pricing, minimums, and QuickBooks sync as everything
+                else. Nobody gets cut off — you just stop re-keying the ones who don't need
+                to call.
+              </p>
+            </div>
+          </details>
+
+          <details>
+            <summary>Do I have to leave QuickBooks?</summary>
+            <div class="answer">
+              <p>
+                No. Vegy creates and updates customers, items, and invoices in QuickBooks
+                for you. It does not post journal entries, recognize revenue, or reconcile
+                your books — your accountant's workflow stays exactly where it is.
+              </p>
+              <p>
+                Already on a different ERP? Custom integrations are part of what we scope
+                on the demo call.
+              </p>
+            </div>
+          </details>
+
+          <details>
+            <summary>How long does setup take?</summary>
+            <div class="answer">
+              <p>
+                We do the catalog import — your item list, pack sizes, and price tiers — so
+                the work on your side is mostly reviewing what we loaded and approving the
+                branding.
+              </p>
+              <p>
+                Timeline depends on how many items and accounts you're bringing over. Book
+                a demo and we'll scope it against your actual catalog rather than guessing.
+              </p>
+            </div>
+          </details>
+
+          <details>
+            <summary>Who owns my customer list and pricing?</summary>
+            <div class="answer">
+              <p>
+                You do. Each wholesaler runs their own instance, and Vegy processes that
+                data on your behalf as your service provider — your accounts, your pricing,
+                your order history. The details are spelled out in our
+                <a class="link" href="legal.html">Terms &amp; Privacy</a>.
+              </p>
+            </div>
+          </details>
+
+          <details>
+            <summary>What does it actually cost?</summary>
+            <div class="answer">
+              <p>
+                $599 a month for the platform, plus 25¢ for every order our AI takes for
+                you by voice, text, or web. We don't take a percentage of your sales — a
+                $4,000 order and a $400 order cost you exactly the same.
+              </p>
+              <p>
+                Where you land depends on item count, number of accounts, and whether you
+                need a custom ERP integration. You'll get the exact number on the demo
+                call, not a proposal three weeks later.
+              </p>
+            </div>
+          </details>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── Closing CTA ──────────────────────────────────────────────────── -->
+    <section class="cta-banner">
+      <div class="wrap">
+        <h2 class="h-lg">See your own catalog running on it</h2>
+        <p>
+          Send us a price list before the call and we'll load a slice of your real
+          catalog, so you're looking at your own items — not a generic sandbox.
+        </p>
+
+        <div class="cta-row center">
+          <a class="btn btn-white" href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">
+            Book a demo <span class="arrow" aria-hidden="true">→</span>
+          </a>
+          <a class="btn btn-outline" href="mailto:[email protected]">Email [email protected]</a>
+        </div>
+
+        <ul class="expect">
+          <li><span class="n">01</span>We look at how orders reach you today, and where they get re-keyed.</li>
+          <li><span class="n">02</span>You see your items, your tiers, and your minimums inside a live instance.</li>
+          <li><span class="n">03</span>We scope the QuickBooks or ERP connection against your setup.</li>
+          <li><span class="n">04</span>You get a price and a timeline on the call.</li>
+        </ul>
+      </div>
+    </section>
+
+  </main>
+
+  <!-- floats up once the hero screens are past, retires into the closing CTA -->
+  <div class="dock" id="dock">
+    <a class="btn btn-primary" href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">
+      Book a demo <span class="arrow" aria-hidden="true">→</span>
+    </a>
+  </div>
+
+  <footer class="site-footer">
+    <div class="wrap">
+      <div class="footer-grid">
+        <div>
+          <a class="wordmark" href="/">
+            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+              <path d="M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z" />
+              <path d="M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12" />
+            </svg>
+            Vegy
+          </a>
+          <p class="footer-blurb">
+            White-labeled wholesale ordering for produce, meat, and specialty food
+            distributors.
+          </p>
+          <p class="footer-by">
+            Built &amp; operated by
+            <a href="https://afterdarklabs.io" target="_blank" rel="noopener">After Dark Labs</a>
+          </p>
+        </div>
+
+        <div>
+          <h4>Product</h4>
+          <div class="footer-links">
+            <a href="#how">How it works</a>
+            <a href="#features">Features</a>
+            <a href="#pricing">Pricing</a>
+            <a href="#faq">FAQ</a>
+          </div>
+        </div>
+
+        <div>
+          <h4>Contact</h4>
+          <div class="footer-links">
+            <a href="support.html">Support center</a>
+            <a href="mailto:[email protected]">[email protected]</a>
+            <a href="tel:+19546218027">(954) 621-8027</a>
+          </div>
+        </div>
+
+        <div>
+          <h4>Company</h4>
+          <div class="footer-links">
+            <a href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">Book a demo</a>
+            <a href="legal.html">Terms of Use</a>
+            <a href="legal.html#privacy">Privacy Policy</a>
+          </div>
+        </div>
+      </div>
+
+      <div class="footer-base">
+        <span>© <span data-year></span> After Dark Labs. All rights reserved.</span>
+        <span>Built for the people who load the truck at 4am.</span>
+      </div>
+    </div>
+  </footer>
+
+  <script>
+    document.querySelectorAll('[data-year]').forEach(function (el) {
+      el.textContent = new Date().getFullYear();
+    });
+
+    var masthead = document.getElementById('masthead');
+    if (masthead) {
+      var onScroll = function () {
+        masthead.classList.toggle('is-stuck', window.scrollY > 8);
+      };
+      onScroll();
+      addEventListener('scroll', onScroll, { passive: true });
+    }
+
+
+    // Mobile menu
+    (function () {
+      var toggle = document.getElementById('navToggle');
+      var panel = document.getElementById('mobileNav');
+      if (!toggle || !panel) return;
+
+      function setOpen(open) {
+        panel.classList.toggle('is-open', open);
+        toggle.setAttribute('aria-expanded', String(open));
+        toggle.setAttribute('aria-label', open ? 'Close menu' : 'Open menu');
+      }
+
+      toggle.addEventListener('click', function () {
+        setOpen(toggle.getAttribute('aria-expanded') !== 'true');
+      });
+
+      panel.addEventListener('click', function (e) {
+        if (e.target.closest('a')) setOpen(false);
+      });
+
+      addEventListener('keydown', function (e) {
+        if (e.key === 'Escape' && toggle.getAttribute('aria-expanded') === 'true') {
+          setOpen(false);
+          toggle.focus();
+        }
+      });
+
+      // a resize back to desktop should not leave the panel stuck open
+      addEventListener('resize', function () {
+        if (innerWidth > 900) setOpen(false);
+      });
+    })();
+
+    // Nav scroll-spy: highlight whichever section is under the masthead
+    (function () {
+      var links = [].slice.call(
+        document.querySelectorAll('.nav-links a[href^="#"], .mobile-nav .m-link[href^="#"]')
+      );
+      if (!links.length) return;
+
+      var ids = [];
+      links.forEach(function (a) {
+        var id = a.getAttribute('href').slice(1);
+        if (document.getElementById(id) && ids.indexOf(id) === -1) ids.push(id);
+      });
+
+      function sync() {
+        var line = scrollY + (masthead ? masthead.offsetHeight : 74) + 28;
+        var current = '';
+        ids.forEach(function (id) {
+          var top = document.getElementById(id).getBoundingClientRect().top + scrollY;
+          if (top <= line) current = id;
+        });
+        // clamp to the last section once the page bottoms out
+        if (innerHeight + scrollY >= document.documentElement.scrollHeight - 4) {
+          current = ids[ids.length - 1];
+        }
+        links.forEach(function (a) {
+          a.classList.toggle('is-active', a.getAttribute('href') === '#' + current);
+        });
+      }
+      sync();
+      addEventListener('scroll', sync, { passive: true });
+      addEventListener('resize', sync);
+    })();
+
+    // Booking dock: rises once the hero screens are behind you, retires when
+    // the closing CTA arrives so the two never compete.
+    (function () {
+      var dock = document.getElementById('dock');
+      var after = document.querySelector('.hero-visual');
+      var until = document.querySelector('.cta-banner');
+      if (!dock || !after || !until) return;
+
+      function sync() {
+        var past = scrollY > after.getBoundingClientRect().bottom + scrollY - 120;
+        var landed = until.getBoundingClientRect().top < innerHeight - 40;
+        dock.classList.toggle('is-up', past && !landed);
+      }
+      sync();
+      addEventListener('scroll', sync, { passive: true });
+      addEventListener('resize', sync);
+    })();
+
+    // Hero screens: a plain row on desktop, a snap carousel once it overflows.
+    // Dots mirror scroll position and can drive it; vertical scrolling is never
+    // intercepted, so the page still behaves normally under a thumb.
+    (function () {
+      var strip = document.getElementById('shots');
+      var dots = document.getElementById('shotDots');
+      if (!strip || !dots) return;
+
+      var slides = [].slice.call(strip.querySelectorAll('.shot'));
+      slides.forEach(function (slide, i) {
+        var b = document.createElement('button');
+        b.type = 'button';
+        b.className = 'shot-dot' + (i === 0 ? ' is-active' : '');
+        b.setAttribute('aria-label', 'Show screen ' + (i + 1) + ' of ' + slides.length);
+        b.addEventListener('click', function () {
+          strip.scrollTo({ left: slide.offsetLeft - strip.offsetLeft, behavior: 'smooth' });
+        });
+        dots.appendChild(b);
+      });
+
+      var buttons = [].slice.call(dots.children);
+      var ticking = false;
+      strip.addEventListener('scroll', function () {
+        if (ticking) return;
+        ticking = true;
+        requestAnimationFrame(function () {
+          var nearest;
+          if (strip.scrollLeft + strip.clientWidth >= strip.scrollWidth - 2) {
+            nearest = slides.length - 1;          // pinned at the end
+          } else {
+            var mid = strip.scrollLeft + strip.clientWidth / 2;
+            var best = Infinity;
+            nearest = 0;
+            slides.forEach(function (slide, i) {
+              var d = Math.abs(slide.offsetLeft + slide.clientWidth / 2 - mid);
+              if (d < best) { best = d; nearest = i; }
+            });
+          }
+          buttons.forEach(function (b, i) {
+            b.classList.toggle('is-active', i === nearest);
+          });
+          ticking = false;
+        });
+      }, { passive: true });
+    })();
+
+    var reveals = document.querySelectorAll('.reveal');
+    if (matchMedia('(prefers-reduced-motion: reduce)').matches || !('IntersectionObserver' in window)) {
+      // leave everything in its default visible state
+    } else {
+      document.documentElement.classList.add('js');
+      var io = new IntersectionObserver(function (entries) {
+        entries.forEach(function (entry) {
+          if (entry.isIntersecting) {
+            entry.target.classList.add('is-in');
+            io.unobserve(entry.target);
+          }
+        });
+      }, { rootMargin: '0px 0px -8% 0px', threshold: 0.06 });
+      reveals.forEach(function (el) { io.observe(el); });
+    }
+  </script>
+
+  <script type="application/ld+json">
+  {
+    "@context": "https://schema.org",
+    "@graph": [
+      {
+        "@type": "Organization",
+        "@id": "https://vegy.app/#org",
+        "name": "After Dark Labs",
+        "url": "https://afterdarklabs.io/",
+        "email": "[email protected]",
+        "telephone": "+1-954-621-8027",
+        "description": "After Dark Labs builds and operates Vegy, a white-labeled wholesale ordering platform for produce, meat, and specialty food distributors."
+      },
+      {
+        "@type": "SoftwareApplication",
+        "name": "Vegy",
+        "applicationCategory": "BusinessApplication",
+        "operatingSystem": "Web, iOS, Android",
+        "publisher": { "@id": "https://vegy.app/#org" },
+        "description": "Wholesale ordering software with customer-specific pricing tiers, order minimums, white-labeled iOS and Android apps, voice and text ordering, and QuickBooks sync.",
+        "offers": {
+          "@type": "Offer",
+          "price": "599",
+          "priceCurrency": "USD",
+          "description": "$599 per month platform fee, plus $0.25 per AI-processed order (voice, text, and web).",
+          "priceSpecification": {
+            "@type": "UnitPriceSpecification",
+            "price": "599",
+            "priceCurrency": "USD",
+            "referenceQuantity": {
+              "@type": "QuantitativeValue",
+              "value": "1",
+              "unitCode": "MON"
+            }
+          }
+        }
+      },
+      {
+        "@type": "FAQPage",
+        "mainEntity": [
+          {
+            "@type": "Question",
+            "name": "My customers aren't tech people. Will they really use this?",
+            "acceptedAnswer": {
+              "@type": "Answer",
+              "text": "Most of them reorder the same twenty items every week, and that's the case Vegy is built around — their last order is on the first screen, and reordering is a few taps. For the holdouts, voice and text ordering means they keep calling and texting exactly like they do now. The difference is that it lands in your system as a structured, priced order instead of in someone's inbox."
+            }
+          },
+          {
+            "@type": "Question",
+            "name": "What about the customers who insist on calling?",
+            "acceptedAnswer": {
+              "@type": "Answer",
+              "text": "Keep taking their calls. Your team enters the order on their behalf and it goes through the same pricing, minimums, and QuickBooks sync as everything else. Nobody gets cut off — you just stop re-keying the ones who don't need to call."
+            }
+          },
+          {
+            "@type": "Question",
+            "name": "Do I have to leave QuickBooks?",
+            "acceptedAnswer": {
+              "@type": "Answer",
+              "text": "No. Vegy creates and updates customers, items, and invoices in QuickBooks for you. It does not post journal entries, recognize revenue, or reconcile your books — your accountant's workflow stays exactly where it is. Already on a different ERP? Custom integrations are part of what we scope on the demo call."
+            }
+          },
+          {
+            "@type": "Question",
+            "name": "How long does setup take?",
+            "acceptedAnswer": {
+              "@type": "Answer",
+              "text": "We do the catalog import — your item list, pack sizes, and price tiers — so the work on your side is mostly reviewing what we loaded and approving the branding. Timeline depends on how many items and accounts you're bringing over."
+            }
+          },
+          {
+            "@type": "Question",
+            "name": "Who owns my customer list and pricing?",
+            "acceptedAnswer": {
+              "@type": "Answer",
+              "text": "You do. Each wholesaler runs their own instance, and Vegy processes that data on your behalf as your service provider — your accounts, your pricing, your order history."
+            }
+          },
+          {
+            "@type": "Question",
+            "name": "What does it actually cost?",
+            "acceptedAnswer": {
+              "@type": "Answer",
+              "text": "$599 a month for the platform, plus 25¢ for every order our AI takes for you by voice, text, or web. We don't take a percentage of your sales — a $4,000 order and a $400 order cost you exactly the same. Where you land depends on item count, number of accounts, and whether you need a custom ERP integration."
+            }
+          }
+        ]
+      }
+    ]
+  }
+  </script>
+
+<script>addEventListener('load',function(){setTimeout(function(){
+  var d=document.getElementById('dock');
+  d.classList.add('is-up');
+  requestAnimationFrame(function(){
+    setTimeout(function(){
+      var r=d.getBoundingClientRect();
+      var tag=document.createElement('div');
+      tag.style.cssText='position:fixed;top:0;left:0;z-index:99999;background:#ff0;color:#000;font:12px monospace;padding:4px';
+      tag.textContent='dock rect top='+Math.round(r.top)+' bottom='+Math.round(r.bottom)+' vh='+innerHeight+' cls='+d.className;
+      document.body.appendChild(tag);
+    },400);
+  });
+},600)});</script></body>
+</html>
diff --git a/docs/_dockcheck2.html b/docs/_dockcheck2.html
new file mode 100644
index 0000000..7704f3b
--- /dev/null
+++ b/docs/_dockcheck2.html
@@ -0,0 +1,942 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta name="viewport" content="width=device-width, initial-scale=1" />
+  <title>Vegy — Wholesale ordering software for food distributors</title>
+  <meta name="description" content="Vegy puts your wholesale catalog on your customers' phones under your own brand. Customer-specific pricing, order minimums, iOS and Android apps, and QuickBooks sync. $599/mo flat — no revenue share. Book a demo." />
+  <link rel="canonical" href="https://vegy.app/" />
+
+  <meta property="og:type" content="website" />
+  <meta property="og:url" content="https://vegy.app/" />
+  <meta property="og:site_name" content="Vegy" />
+  <meta property="og:title" content="Vegy — Wholesale ordering software for food distributors" />
+  <meta property="og:description" content="Your catalog, your brand, your pricing — on your customers' phones. Orders arrive priced-out and synced to QuickBooks." />
+  <meta property="og:image" content="https://vegy.app/shot-catalog.png" />
+  <meta name="twitter:card" content="summary_large_image" />
+  <meta name="theme-color" content="#16a34a" />
+
+  <link rel="icon" href="favicon.svg" type="image/svg+xml" />
+  <link rel="apple-touch-icon" href="shot-catalog.png" />
+
+  <link rel="preconnect" href="https://fonts.googleapis.com" />
+  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
+  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=Inter:wght@400;500;600;700&display=swap" />
+  <link rel="stylesheet" href="styles.css" />
+</head>
+
+<body>
+
+  <header class="masthead" id="masthead">
+    <div class="wrap">
+      <a class="wordmark" href="/">
+        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+          <path d="M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z" />
+          <path d="M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12" />
+        </svg>
+        Vegy
+      </a>
+
+      <nav class="nav-links" aria-label="Primary">
+        <a href="#why">Why Vegy</a>
+        <a href="#how">How it works</a>
+        <a href="#features">Features</a>
+        <a href="#pricing">Pricing</a>
+        <a href="#faq">FAQ</a>
+      </nav>
+
+      <a class="btn btn-primary btn-sm" href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">
+        Book a demo
+      </a>
+      <button class="nav-toggle" id="navToggle" type="button"
+              aria-expanded="false" aria-controls="mobileNav" aria-label="Open menu">
+        <span></span><span></span><span></span>
+      </button>
+    </div>
+    <nav class="mobile-nav" id="mobileNav" aria-label="Mobile">
+      <a class="m-link" href="#why">Why Vegy</a>
+      <a class="m-link" href="#how">How it works</a>
+      <a class="m-link" href="#features">Features</a>
+      <a class="m-link" href="#pricing">Pricing</a>
+      <a class="m-link" href="#faq">FAQ</a>
+      <a class="btn btn-primary" href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">Book a demo</a>
+    </nav>
+  </header>
+
+  <main>
+
+    <!-- ── Hero ─────────────────────────────────────────────────────────── -->
+    <section class="hero">
+      <div class="wrap">
+        <div class="hero-copy">
+          <span class="eyebrow">For produce, meat &amp; specialty food distributors</span>
+
+          <h1 class="h-xl">Take orders<br /><span class="accent">in your sleep</span>.</h1>
+
+          <p class="lede">
+            Vegy puts your full catalog — your brand, your pricing, your minimums — on
+            your customers' phones. They order whenever they think of it. You wake up to
+            priced-out orders that are already in QuickBooks.
+          </p>
+
+          <div class="cta-row center">
+            <a class="btn btn-primary" href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">
+              Book a demo <span class="arrow" aria-hidden="true">→</span>
+            </a>
+            <a class="btn btn-outline" href="#how">See how it works</a>
+          </div>
+
+          <p class="hero-note">
+            White-labeled · Web, iOS &amp; Android · Order by text · QuickBooks sync
+          </p>
+        </div>
+
+        <div class="hero-visual">
+          <div class="shots" id="shots" tabindex="0" role="group"
+               aria-label="Vegy product screens — scroll sideways to see all four">
+          <figure class="shot">
+            <img src="shot-catalog.webp" width="476" height="871" fetchpriority="high"
+                 alt="Your storefront on a customer's phone: produce by the case and by the each, with pricing, quantity steppers and a running cart total." />
+          </figure>
+          <figure class="shot">
+            <img src="shot-order.webp" width="476" height="871" fetchpriority="low" loading="lazy"
+                 alt="An incoming order: customer and delivery details, order notes, priced line items, and buttons to print a pull slip, export CSV, or convert it to an invoice." />
+          </figure>
+          <figure class="shot">
+            <img src="shot-deliveries.webp" width="476" height="871" fetchpriority="low" loading="lazy"
+                 alt="The day's deliveries: every order for the date with its status, order number, and QuickBooks connection state." />
+          </figure>
+          <figure class="shot">
+            <img src="shot-dashboard.webp" width="476" height="871" fetchpriority="low" loading="lazy"
+                 alt="An instance dashboard under the distributor's own branding, with quick actions for new orders, AI orders, items, accounts and price lists." />
+          </figure>
+          </div>
+          <div class="shot-dots" id="shotDots"></div>
+        </div>
+
+        <div class="trust">
+          <p class="eyebrow">Running on Vegy today</p>
+          <div class="trust-logos">
+            <img src="gardenfresh.webp" width="437" height="132" loading="lazy"
+                 alt="Garden Fresh Produce LLC" />
+            <span class="trust-sep" aria-hidden="true"></span>
+            <img src="prima.webp" width="315" height="132" loading="lazy"
+                 alt="Prima Produce" />
+          </div>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── Why Vegy: the problem, paired with the fix ───────────────────── -->
+    <section class="section band-soft" id="why">
+      <div class="wrap">
+        <div class="section-head center reveal">
+          <span class="eyebrow">Why Vegy</span>
+          <h2 class="h-lg">Every order still gets typed in by hand</h2>
+          <p class="lede">
+            Orders reach you a different way every time, and one person turns all of
+            them into something the warehouse can pull. Here is what changes, line by
+            line.
+          </p>
+        </div>
+
+        <div class="swap reveal">
+          <div class="swap-head">
+            <span>How it arrives today</span>
+            <span aria-hidden="true"></span>
+            <span class="is-vegy">What Vegy does with it</span>
+          </div>
+
+          <div class="swap-row">
+            <div class="swap-from">
+              <span class="cell-label">How it arrives today</span>
+              <span class="chan">Voicemail · 11:40 PM</span>
+              <p>&ldquo;Hey it&rsquo;s Mike, give me the usual plus a couple cases of romaine, uh — call me back.&rdquo;</p>
+            </div>
+            <div class="swap-arrow" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></div>
+            <div class="swap-to">
+              <span class="cell-label">What Vegy does with it</span>
+              <p>Vegy&rsquo;s AI picks up, turns the call into a structured order on Mike&rsquo;s account, and prices it against his tier. It&rsquo;s waiting for you at 6am.</p>
+            </div>
+          </div>
+          <div class="swap-row">
+            <div class="swap-from">
+              <span class="cell-label">How it arrives today</span>
+              <span class="chan">Text message</span>
+              <p>&ldquo;4 tomato, 2 onion, 6 lettuce&rdquo; — no pack sizes, no case counts, no account.</p>
+            </div>
+            <div class="swap-arrow" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></div>
+            <div class="swap-to">
+              <span class="cell-label">What Vegy does with it</span>
+              <p>The same text comes back as real line items from your catalog, with your pack sizes and case counts already attached.</p>
+            </div>
+          </div>
+          <div class="swap-row">
+            <div class="swap-from">
+              <span class="cell-label">How it arrives today</span>
+              <span class="chan">Email · PDF attached</span>
+              <p>An order sheet from 2019, with prices that expired two seasons ago.</p>
+            </div>
+            <div class="swap-arrow" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></div>
+            <div class="swap-to">
+              <span class="cell-label">What Vegy does with it</span>
+              <p>They order from your live catalog instead, so the price is whatever their tier says today — and minimums are checked at checkout.</p>
+            </div>
+          </div>
+          <div class="swap-row">
+            <div class="swap-from">
+              <span class="cell-label">How it arrives today</span>
+              <span class="chan">Then, every time</span>
+              <p>Someone re-keys all of it by hand before the pull sheets go out. That&rsquo;s where the shorts come from, and the wrong pack sizes, and the credits.</p>
+            </div>
+            <div class="swap-arrow" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></div>
+            <div class="swap-to">
+              <span class="cell-label">What Vegy does with it</span>
+              <p>Nothing gets typed twice. The order syncs into QuickBooks as a customer, items, and an invoice, and the pull sheet prints itself.</p>
+            </div>
+          </div>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── How it works ─────────────────────────────────────────────────── -->
+    <section class="section" id="how">
+      <div class="wrap">
+        <div class="section-head center reveal">
+          <span class="eyebrow">How it works</span>
+          <h2 class="h-lg">Three steps, and the phone stops ringing</h2>
+        </div>
+
+        <div class="rows">
+          <div class="row reveal">
+            <div class="row-text">
+              <span class="eyebrow">Step 01</span>
+              <h3 class="h-md">We load your catalog</h3>
+              <p>
+                Your item list, pack sizes, categories, and price tiers get imported for
+                you — nothing gets rebuilt by hand. Then it's your logo, your product
+                photos, your category names, on your own domain.
+              </p>
+            </div>
+            <div class="row-visual">
+              <div class="mock">
+                <div class="mock-head"><span>Your catalog</span><span class="tag">Imported</span></div>
+                <div class="mock-body">
+                  <div class="mock-line"><span>Artichoke 12CT</span><span class="pack">Case</span><span class="price">$71.82</span></div>
+                  <div class="mock-line"><span>Arugula, Baby 2/1.5lb</span><span class="pack">Case</span><span class="price">$22.28</span></div>
+                  <div class="mock-line"><span>Romaine Hearts 12CT</span><span class="pack">Case</span><span class="price">$43.89</span></div>
+                  <div class="mock-line"><span>Tomato, Roma 25lb</span><span class="pack">Case</span><span class="price">$31.40</span></div>
+                </div>
+              </div>
+            </div>
+          </div>
+
+          <div class="row is-flipped reveal">
+            <div class="row-text">
+              <span class="eyebrow">Step 02</span>
+              <h3 class="h-md">Your customers order</h3>
+              <p>
+                From your website, your own iOS and Android app, or straight over voice
+                and text. Last week's order is right there, so a reorder takes seconds
+                instead of a phone call — at 11pm, on a Sunday, from a walk-in cooler.
+              </p>
+            </div>
+            <div class="row-visual">
+              <div class="mock">
+                <div class="mock-head"><span>Sunrise Cafe · Tuesday</span><span class="tag">Tier 2</span></div>
+                <div class="mock-body">
+                  <div class="mock-line"><span>Artichoke 12CT</span><span class="pack">2 cases</span><span class="price">$143.64</span></div>
+                  <div class="mock-line"><span>Arugula, Baby 2/1.5lb</span><span class="pack">6 cases</span><span class="price">$133.68</span></div>
+                  <div class="mock-line"><span>Romaine Hearts 12CT</span><span class="pack">4 cases</span><span class="price">$175.56</span></div>
+                </div>
+                <div class="mock-foot"><span>Order total</span><span class="amt">$452.88</span></div>
+              </div>
+            </div>
+          </div>
+
+          <div class="row reveal">
+            <div class="row-text">
+              <span class="eyebrow">Step 03</span>
+              <h3 class="h-md">You get a clean order</h3>
+              <p>
+                Priced against that customer's tier, checked against your minimums, and
+                synced to QuickBooks or your ERP. Print pull sheets, route lists, and
+                price lists straight from it.
+              </p>
+            </div>
+            <div class="row-visual">
+              <div class="mock">
+                <div class="mock-head"><span>QuickBooks</span><span class="tag">Synced 6:02 AM</span></div>
+                <div class="mock-body">
+                  <div class="mock-line"><span>Customer record</span><span class="price ok">Updated</span></div>
+                  <div class="mock-line"><span>Items &amp; pack sizes</span><span class="price ok">Updated</span></div>
+                  <div class="mock-line"><span>Invoice #4417</span><span class="price ok">Created</span></div>
+                  <div class="mock-line"><span>Pull sheet</span><span class="price ok">Ready</span></div>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── Feature grid ─────────────────────────────────────────────────── -->
+    <section class="section band-soft" id="features">
+      <div class="wrap">
+        <div class="section-head center reveal">
+          <span class="eyebrow">Features</span>
+          <h2 class="h-lg">The rest of what the ordering desk was doing</h2>
+          <p class="lede">
+            Case pricing, customer tiers, minimums, and the paperwork your warehouse runs
+            on — not a retail cart with a wholesale sticker on it.
+          </p>
+        </div>
+
+        <div class="cards reveal">
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <rect x="5" y="2" width="14" height="20" rx="2.5" /><path d="M12 18h.01" />
+              </svg>
+            </div>
+            <h3 class="h-sm">Order from anywhere</h3>
+            <p>
+              Your own website, mobile web, native iOS and Android apps, or AI-powered
+              ordering by voice and text for customers who will never open an app.
+            </p>
+          </article>
+
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <path d="M12.6 2.6 21 11a2 2 0 0 1 0 2.8l-7.2 7.2a2 2 0 0 1-2.8 0L3 12.6V4a1 1 0 0 1 1-1h8.6Z" /><path d="M7.5 7.5h.01" />
+              </svg>
+            </div>
+            <h3 class="h-sm">Pricing that knows the customer</h3>
+            <p>
+              Customer-specific pricing tiers and contract pricing applied automatically,
+              plus per-account order minimums enforced at checkout.
+            </p>
+          </article>
+
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <path d="M3 17l6-6 4 4 8-8" /><path d="M17 7h4v4" />
+              </svg>
+            </div>
+            <h3 class="h-sm">Bigger orders, on purpose</h3>
+            <p>
+              Promote featured items, push new products in front of the right accounts,
+              and let favorites and one-tap reorder do the rest.
+            </p>
+          </article>
+
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <path d="M21 12a9 9 0 0 1-15.5 6.2L3 16" /><path d="M3 12a9 9 0 0 1 15.5-6.2L21 8" /><path d="M3 21v-5h5" /><path d="M21 3v5h-5" />
+              </svg>
+            </div>
+            <h3 class="h-sm">QuickBooks &amp; ERP sync</h3>
+            <p>
+              Customers, items, and invoices flow into QuickBooks or your existing ERP.
+              No double entry, no end-of-day export ritual.
+            </p>
+          </article>
+
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <path d="M14 2H6.5A1.5 1.5 0 0 0 5 3.5v17A1.5 1.5 0 0 0 6.5 22h11a1.5 1.5 0 0 0 1.5-1.5V7Z" /><path d="M14 2v5h5" /><path d="M9 13h6" /><path d="M9 17h4" />
+              </svg>
+            </div>
+            <h3 class="h-sm">Paperwork in one click</h3>
+            <p>
+              Pull sheets, price lists, and sales reports export instantly — in the format
+              your warehouse and your bookkeeper already expect.
+            </p>
+          </article>
+
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <path d="M2 7h11v10H2z" /><path d="M13 10h4.5l3.5 3.5V17h-8" /><circle cx="7" cy="18.5" r="1.8" /><circle cx="17" cy="18.5" r="1.8" />
+              </svg>
+            </div>
+            <h3 class="h-sm">Inventory &amp; delivery tracking</h3>
+            <p>
+              Keep inventory and payment status attached to the order, and track
+              deliveries through to the door without a second system.
+            </p>
+          </article>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── Dark: differentiators ────────────────────────────────────────── -->
+    <section class="section band-dark">
+      <div class="wrap">
+        <div class="section-head reveal">
+          <span class="eyebrow">Where Vegy is different</span>
+          <h2 class="h-lg">Your brand in front, your books untouched</h2>
+          <p class="lede">
+            Vegy runs underneath your business — it doesn't put itself between you and
+            your customers, or between you and your accountant.
+          </p>
+        </div>
+
+        <div class="rows">
+          <div class="row reveal">
+            <div class="row-text">
+              <h3 class="h-md">It's your name on it, not ours</h3>
+              <p style="color:rgba(255,255,255,.72)">
+                Your customers download your app, from your listing, and see your logo
+                when it opens. Nobody has to know there's a software vendor behind your
+                ordering.
+              </p>
+            </div>
+            <div class="row-visual">
+              <div class="mock">
+                <div class="mock-head"><span>What your customers see</span></div>
+                <div class="mock-body">
+                  <div class="mock-line"><span>App Store listing</span><span class="price ok">Your company</span></div>
+                  <div class="mock-line"><span>Ordering domain</span><span class="price ok">orders.yourco.com</span></div>
+                  <div class="mock-line"><span>Logo &amp; colors</span><span class="price ok">Yours</span></div>
+                  <div class="mock-line"><span>Catalog &amp; photos</span><span class="price ok">Yours</span></div>
+                </div>
+              </div>
+            </div>
+          </div>
+
+          <div class="row is-flipped reveal">
+            <div class="row-text">
+              <h3 class="h-md">Your books stay your books</h3>
+              <p style="color:rgba(255,255,255,.72)">
+                Vegy creates and updates customers, items, and invoices in QuickBooks. It
+                does not post journal entries, recognize revenue, or reconcile — your
+                accountant's workflow stays exactly where it is.
+              </p>
+            </div>
+            <div class="row-visual">
+              <div class="mock">
+                <div class="mock-head"><span>QuickBooks scope</span></div>
+                <div class="mock-body">
+                  <div class="mock-line"><span>Customers, items, invoices</span><span class="price ok">Vegy writes</span></div>
+                  <div class="mock-line"><span>Journal entries</span><span class="price muted-cell">Untouched</span></div>
+                  <div class="mock-line"><span>Revenue recognition</span><span class="price muted-cell">Untouched</span></div>
+                  <div class="mock-line"><span>Reconciliation</span><span class="price muted-cell">Untouched</span></div>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── Pricing ──────────────────────────────────────────────────────── -->
+    <section class="section band-soft" id="pricing">
+      <div class="wrap">
+        <div class="section-head center reveal">
+          <span class="eyebrow">Pricing</span>
+          <h2 class="h-lg">No revenue share. No per-seat games.</h2>
+          <p class="lede">
+            A flat monthly fee, plus a quarter when our AI takes the order for you. A
+            $4,000 order costs you exactly what a $400 order costs you.
+          </p>
+        </div>
+
+        <div class="price-card reveal">
+          <div class="price-row">
+            <div class="price-unit">
+              <p class="price-figure">$599<span class="per">/mo</span></p>
+              <p class="price-cap">Platform fee</p>
+            </div>
+
+            <div class="price-plus" aria-hidden="true">+</div>
+
+            <div class="price-unit">
+              <p class="price-figure">25¢<span class="per">/order</span></p>
+              <p class="price-cap">AI orders — voice, text &amp; web</p>
+            </div>
+          </div>
+
+          <ul class="included">
+            <li>Your white-labeled web storefront and ordering domain</li>
+            <li>Native iOS and Android apps published under your brand</li>
+            <li>Unlimited customer accounts and pricing tiers</li>
+            <li>QuickBooks sync, or integration with your existing ERP</li>
+            <li>Catalog import and account setup, done by us</li>
+            <li>Email and phone support from people who know your instance</li>
+          </ul>
+
+          <p class="price-note">
+            Billed monthly. Final pricing depends on item count, number of accounts, and
+            whether you need a custom ERP integration — you'll get the exact number on
+            the demo call.
+          </p>
+
+          <a class="btn btn-white" style="margin-top:1.8rem"
+             href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">
+            Book a demo <span class="arrow" aria-hidden="true">→</span>
+          </a>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── FAQ ──────────────────────────────────────────────────────────── -->
+    <section class="section" id="faq">
+      <div class="wrap wrap-narrow">
+        <div class="section-head center reveal">
+          <span class="eyebrow">Straight answers</span>
+          <h2 class="h-lg">The questions you're actually asking</h2>
+        </div>
+
+        <div class="faq reveal">
+          <details>
+            <summary>My customers aren't tech people. Will they really use this?</summary>
+            <div class="answer">
+              <p>
+                Most of them reorder the same twenty items every week, and that's the case
+                Vegy is built around — their last order is on the first screen, and
+                reordering is a few taps.
+              </p>
+              <p>
+                For the holdouts, voice and text ordering means they keep calling and
+                texting exactly like they do now. The difference is that it lands in your
+                system as a structured, priced order instead of in someone's inbox.
+              </p>
+            </div>
+          </details>
+
+          <details>
+            <summary>What about the customers who insist on calling?</summary>
+            <div class="answer">
+              <p>
+                Keep taking their calls. Your team enters the order on their behalf and it
+                goes through the same pricing, minimums, and QuickBooks sync as everything
+                else. Nobody gets cut off — you just stop re-keying the ones who don't need
+                to call.
+              </p>
+            </div>
+          </details>
+
+          <details>
+            <summary>Do I have to leave QuickBooks?</summary>
+            <div class="answer">
+              <p>
+                No. Vegy creates and updates customers, items, and invoices in QuickBooks
+                for you. It does not post journal entries, recognize revenue, or reconcile
+                your books — your accountant's workflow stays exactly where it is.
+              </p>
+              <p>
+                Already on a different ERP? Custom integrations are part of what we scope
+                on the demo call.
+              </p>
+            </div>
+          </details>
+
+          <details>
+            <summary>How long does setup take?</summary>
+            <div class="answer">
+              <p>
+                We do the catalog import — your item list, pack sizes, and price tiers — so
+                the work on your side is mostly reviewing what we loaded and approving the
+                branding.
+              </p>
+              <p>
+                Timeline depends on how many items and accounts you're bringing over. Book
+                a demo and we'll scope it against your actual catalog rather than guessing.
+              </p>
+            </div>
+          </details>
+
+          <details>
+            <summary>Who owns my customer list and pricing?</summary>
+            <div class="answer">
+              <p>
+                You do. Each wholesaler runs their own instance, and Vegy processes that
+                data on your behalf as your service provider — your accounts, your pricing,
+                your order history. The details are spelled out in our
+                <a class="link" href="legal.html">Terms &amp; Privacy</a>.
+              </p>
+            </div>
+          </details>
+
+          <details>
+            <summary>What does it actually cost?</summary>
+            <div class="answer">
+              <p>
+                $599 a month for the platform, plus 25¢ for every order our AI takes for
+                you by voice, text, or web. We don't take a percentage of your sales — a
+                $4,000 order and a $400 order cost you exactly the same.
+              </p>
+              <p>
+                Where you land depends on item count, number of accounts, and whether you
+                need a custom ERP integration. You'll get the exact number on the demo
+                call, not a proposal three weeks later.
+              </p>
+            </div>
+          </details>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── Closing CTA ──────────────────────────────────────────────────── -->
+    <section class="cta-banner">
+      <div class="wrap">
+        <h2 class="h-lg">See your own catalog running on it</h2>
+        <p>
+          Send us a price list before the call and we'll load a slice of your real
+          catalog, so you're looking at your own items — not a generic sandbox.
+        </p>
+
+        <div class="cta-row center">
+          <a class="btn btn-white" href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">
+            Book a demo <span class="arrow" aria-hidden="true">→</span>
+          </a>
+          <a class="btn btn-outline" href="mailto:[email protected]">Email [email protected]</a>
+        </div>
+
+        <ul class="expect">
+          <li><span class="n">01</span>We look at how orders reach you today, and where they get re-keyed.</li>
+          <li><span class="n">02</span>You see your items, your tiers, and your minimums inside a live instance.</li>
+          <li><span class="n">03</span>We scope the QuickBooks or ERP connection against your setup.</li>
+          <li><span class="n">04</span>You get a price and a timeline on the call.</li>
+        </ul>
+      </div>
+    </section>
+
+  </main>
+
+  <!-- floats up once the hero screens are past, retires into the closing CTA -->
+  <div class="dock" id="dock">
+    <a class="btn btn-primary" href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">
+      Book a demo <span class="arrow" aria-hidden="true">→</span>
+    </a>
+  </div>
+
+  <footer class="site-footer">
+    <div class="wrap">
+      <div class="footer-grid">
+        <div>
+          <a class="wordmark" href="/">
+            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+              <path d="M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z" />
+              <path d="M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12" />
+            </svg>
+            Vegy
+          </a>
+          <p class="footer-blurb">
+            White-labeled wholesale ordering for produce, meat, and specialty food
+            distributors.
+          </p>
+          <p class="footer-by">
+            Built &amp; operated by
+            <a href="https://afterdarklabs.io" target="_blank" rel="noopener">After Dark Labs</a>
+          </p>
+        </div>
+
+        <div>
+          <h4>Product</h4>
+          <div class="footer-links">
+            <a href="#how">How it works</a>
+            <a href="#features">Features</a>
+            <a href="#pricing">Pricing</a>
+            <a href="#faq">FAQ</a>
+          </div>
+        </div>
+
+        <div>
+          <h4>Contact</h4>
+          <div class="footer-links">
+            <a href="support.html">Support center</a>
+            <a href="mailto:[email protected]">[email protected]</a>
+            <a href="tel:+19546218027">(954) 621-8027</a>
+          </div>
+        </div>
+
+        <div>
+          <h4>Company</h4>
+          <div class="footer-links">
+            <a href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">Book a demo</a>
+            <a href="legal.html">Terms of Use</a>
+            <a href="legal.html#privacy">Privacy Policy</a>
+          </div>
+        </div>
+      </div>
+
+      <div class="footer-base">
+        <span>© <span data-year></span> After Dark Labs. All rights reserved.</span>
+        <span>Built for the people who load the truck at 4am.</span>
+      </div>
+    </div>
+  </footer>
+
+  <script>
+    document.querySelectorAll('[data-year]').forEach(function (el) {
+      el.textContent = new Date().getFullYear();
+    });
+
+    var masthead = document.getElementById('masthead');
+    if (masthead) {
+      var onScroll = function () {
+        masthead.classList.toggle('is-stuck', window.scrollY > 8);
+      };
+      onScroll();
+      addEventListener('scroll', onScroll, { passive: true });
+    }
+
+
+    // Mobile menu
+    (function () {
+      var toggle = document.getElementById('navToggle');
+      var panel = document.getElementById('mobileNav');
+      if (!toggle || !panel) return;
+
+      function setOpen(open) {
+        panel.classList.toggle('is-open', open);
+        toggle.setAttribute('aria-expanded', String(open));
+        toggle.setAttribute('aria-label', open ? 'Close menu' : 'Open menu');
+      }
+
+      toggle.addEventListener('click', function () {
+        setOpen(toggle.getAttribute('aria-expanded') !== 'true');
+      });
+
+      panel.addEventListener('click', function (e) {
+        if (e.target.closest('a')) setOpen(false);
+      });
+
+      addEventListener('keydown', function (e) {
+        if (e.key === 'Escape' && toggle.getAttribute('aria-expanded') === 'true') {
+          setOpen(false);
+          toggle.focus();
+        }
+      });
+
+      // a resize back to desktop should not leave the panel stuck open
+      addEventListener('resize', function () {
+        if (innerWidth > 900) setOpen(false);
+      });
+    })();
+
+    // Nav scroll-spy: highlight whichever section is under the masthead
+    (function () {
+      var links = [].slice.call(
+        document.querySelectorAll('.nav-links a[href^="#"], .mobile-nav .m-link[href^="#"]')
+      );
+      if (!links.length) return;
+
+      var ids = [];
+      links.forEach(function (a) {
+        var id = a.getAttribute('href').slice(1);
+        if (document.getElementById(id) && ids.indexOf(id) === -1) ids.push(id);
+      });
+
+      function sync() {
+        var line = scrollY + (masthead ? masthead.offsetHeight : 74) + 28;
+        var current = '';
+        ids.forEach(function (id) {
+          var top = document.getElementById(id).getBoundingClientRect().top + scrollY;
+          if (top <= line) current = id;
+        });
+        // clamp to the last section once the page bottoms out
+        if (innerHeight + scrollY >= document.documentElement.scrollHeight - 4) {
+          current = ids[ids.length - 1];
+        }
+        links.forEach(function (a) {
+          a.classList.toggle('is-active', a.getAttribute('href') === '#' + current);
+        });
+      }
+      sync();
+      addEventListener('scroll', sync, { passive: true });
+      addEventListener('resize', sync);
+    })();
+
+    // Booking dock: rises once the hero screens are behind you, retires when
+    // the closing CTA arrives so the two never compete.
+    (function () {
+      var dock = document.getElementById('dock');
+      var after = document.querySelector('.hero-visual');
+      var until = document.querySelector('.cta-banner');
+      if (!dock || !after || !until) return;
+
+      function sync() {
+        var past = scrollY > after.getBoundingClientRect().bottom + scrollY - 120;
+        var landed = until.getBoundingClientRect().top < innerHeight - 40;
+        dock.classList.toggle('is-up', past && !landed);
+      }
+      sync();
+      addEventListener('scroll', sync, { passive: true });
+      addEventListener('resize', sync);
+    })();
+
+    // Hero screens: a plain row on desktop, a snap carousel once it overflows.
+    // Dots mirror scroll position and can drive it; vertical scrolling is never
+    // intercepted, so the page still behaves normally under a thumb.
+    (function () {
+      var strip = document.getElementById('shots');
+      var dots = document.getElementById('shotDots');
+      if (!strip || !dots) return;
+
+      var slides = [].slice.call(strip.querySelectorAll('.shot'));
+      slides.forEach(function (slide, i) {
+        var b = document.createElement('button');
+        b.type = 'button';
+        b.className = 'shot-dot' + (i === 0 ? ' is-active' : '');
+        b.setAttribute('aria-label', 'Show screen ' + (i + 1) + ' of ' + slides.length);
+        b.addEventListener('click', function () {
+          strip.scrollTo({ left: slide.offsetLeft - strip.offsetLeft, behavior: 'smooth' });
+        });
+        dots.appendChild(b);
+      });
+
+      var buttons = [].slice.call(dots.children);
+      var ticking = false;
+      strip.addEventListener('scroll', function () {
+        if (ticking) return;
+        ticking = true;
+        requestAnimationFrame(function () {
+          var nearest;
+          if (strip.scrollLeft + strip.clientWidth >= strip.scrollWidth - 2) {
+            nearest = slides.length - 1;          // pinned at the end
+          } else {
+            var mid = strip.scrollLeft + strip.clientWidth / 2;
+            var best = Infinity;
+            nearest = 0;
+            slides.forEach(function (slide, i) {
+              var d = Math.abs(slide.offsetLeft + slide.clientWidth / 2 - mid);
+              if (d < best) { best = d; nearest = i; }
+            });
+          }
+          buttons.forEach(function (b, i) {
+            b.classList.toggle('is-active', i === nearest);
+          });
+          ticking = false;
+        });
+      }, { passive: true });
+    })();
+
+    var reveals = document.querySelectorAll('.reveal');
+    if (matchMedia('(prefers-reduced-motion: reduce)').matches || !('IntersectionObserver' in window)) {
+      // leave everything in its default visible state
+    } else {
+      document.documentElement.classList.add('js');
+      var io = new IntersectionObserver(function (entries) {
+        entries.forEach(function (entry) {
+          if (entry.isIntersecting) {
+            entry.target.classList.add('is-in');
+            io.unobserve(entry.target);
+          }
+        });
+      }, { rootMargin: '0px 0px -8% 0px', threshold: 0.06 });
+      reveals.forEach(function (el) { io.observe(el); });
+    }
+  </script>
+
+  <script type="application/ld+json">
+  {
+    "@context": "https://schema.org",
+    "@graph": [
+      {
+        "@type": "Organization",
+        "@id": "https://vegy.app/#org",
+        "name": "After Dark Labs",
+        "url": "https://afterdarklabs.io/",
+        "email": "[email protected]",
+        "telephone": "+1-954-621-8027",
+        "description": "After Dark Labs builds and operates Vegy, a white-labeled wholesale ordering platform for produce, meat, and specialty food distributors."
+      },
+      {
+        "@type": "SoftwareApplication",
+        "name": "Vegy",
+        "applicationCategory": "BusinessApplication",
+        "operatingSystem": "Web, iOS, Android",
+        "publisher": { "@id": "https://vegy.app/#org" },
+        "description": "Wholesale ordering software with customer-specific pricing tiers, order minimums, white-labeled iOS and Android apps, voice and text ordering, and QuickBooks sync.",
+        "offers": {
+          "@type": "Offer",
+          "price": "599",
+          "priceCurrency": "USD",
+          "description": "$599 per month platform fee, plus $0.25 per AI-processed order (voice, text, and web).",
+          "priceSpecification": {
+            "@type": "UnitPriceSpecification",
+            "price": "599",
+            "priceCurrency": "USD",
+            "referenceQuantity": {
+              "@type": "QuantitativeValue",
+              "value": "1",
+              "unitCode": "MON"
+            }
+          }
+        }
+      },
+      {
+        "@type": "FAQPage",
+        "mainEntity": [
+          {
+            "@type": "Question",
+            "name": "My customers aren't tech people. Will they really use this?",
+            "acceptedAnswer": {
+              "@type": "Answer",
+              "text": "Most of them reorder the same twenty items every week, and that's the case Vegy is built around — their last order is on the first screen, and reordering is a few taps. For the holdouts, voice and text ordering means they keep calling and texting exactly like they do now. The difference is that it lands in your system as a structured, priced order instead of in someone's inbox."
+            }
+          },
+          {
+            "@type": "Question",
+            "name": "What about the customers who insist on calling?",
+            "acceptedAnswer": {
+              "@type": "Answer",
+              "text": "Keep taking their calls. Your team enters the order on their behalf and it goes through the same pricing, minimums, and QuickBooks sync as everything else. Nobody gets cut off — you just stop re-keying the ones who don't need to call."
+            }
+          },
+          {
+            "@type": "Question",
+            "name": "Do I have to leave QuickBooks?",
+            "acceptedAnswer": {
+              "@type": "Answer",
+              "text": "No. Vegy creates and updates customers, items, and invoices in QuickBooks for you. It does not post journal entries, recognize revenue, or reconcile your books — your accountant's workflow stays exactly where it is. Already on a different ERP? Custom integrations are part of what we scope on the demo call."
+            }
+          },
+          {
+            "@type": "Question",
+            "name": "How long does setup take?",
+            "acceptedAnswer": {
+              "@type": "Answer",
+              "text": "We do the catalog import — your item list, pack sizes, and price tiers — so the work on your side is mostly reviewing what we loaded and approving the branding. Timeline depends on how many items and accounts you're bringing over."
+            }
+          },
+          {
+            "@type": "Question",
+            "name": "Who owns my customer list and pricing?",
+            "acceptedAnswer": {
+              "@type": "Answer",
+              "text": "You do. Each wholesaler runs their own instance, and Vegy processes that data on your behalf as your service provider — your accounts, your pricing, your order history."
+            }
+          },
+          {
+            "@type": "Question",
+            "name": "What does it actually cost?",
+            "acceptedAnswer": {
+              "@type": "Answer",
+              "text": "$599 a month for the platform, plus 25¢ for every order our AI takes for you by voice, text, or web. We don't take a percentage of your sales — a $4,000 order and a $400 order cost you exactly the same. Where you land depends on item count, number of accounts, and whether you need a custom ERP integration."
+            }
+          }
+        ]
+      }
+    ]
+  }
+  </script>
+
+<script>addEventListener('load',function(){setTimeout(function(){
+  var d=document.getElementById('dock');
+  d.style.transition='none';
+  d.classList.add('is-up');
+  var r=d.getBoundingClientRect();
+  var tag=document.createElement('div');
+  tag.style.cssText='position:fixed;top:0;left:0;z-index:99999;background:#ff0;color:#000;font:12px monospace;padding:4px';
+  tag.textContent='top='+Math.round(r.top)+' bottom='+Math.round(r.bottom)+' vh='+innerHeight;
+  document.body.appendChild(tag);
+},600)});</script></body>
+</html>
diff --git a/docs/_pa.html b/docs/_pa.html
new file mode 100644
index 0000000..0323924
--- /dev/null
+++ b/docs/_pa.html
@@ -0,0 +1,935 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta name="viewport" content="width=device-width, initial-scale=1" />
+  <title>Vegy — Wholesale ordering software for food distributors</title>
+  <meta name="description" content="Vegy puts your wholesale catalog on your customers' phones under your own brand. Customer-specific pricing, order minimums, iOS and Android apps, and QuickBooks sync. $599/mo flat — no revenue share. Book a demo." />
+  <link rel="canonical" href="https://vegy.app/" />
+
+  <meta property="og:type" content="website" />
+  <meta property="og:url" content="https://vegy.app/" />
+  <meta property="og:site_name" content="Vegy" />
+  <meta property="og:title" content="Vegy — Wholesale ordering software for food distributors" />
+  <meta property="og:description" content="Your catalog, your brand, your pricing — on your customers' phones. Orders arrive priced-out and synced to QuickBooks." />
+  <meta property="og:image" content="https://vegy.app/shot-catalog.png" />
+  <meta name="twitter:card" content="summary_large_image" />
+  <meta name="theme-color" content="#16a34a" />
+
+  <link rel="icon" href="favicon.svg" type="image/svg+xml" />
+  <link rel="apple-touch-icon" href="shot-catalog.png" />
+
+  <link rel="preconnect" href="https://fonts.googleapis.com" />
+  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
+  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=Inter:wght@400;500;600;700&display=swap" />
+  <link rel="stylesheet" href="styles.css" />
+</head>
+
+<body>
+
+  <header class="masthead" id="masthead">
+    <div class="wrap">
+      <a class="wordmark" href="/">
+        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+          <path d="M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z" />
+          <path d="M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12" />
+        </svg>
+        Vegy
+      </a>
+
+      <nav class="nav-links" aria-label="Primary">
+        <a href="#why">Why Vegy</a>
+        <a href="#how">How it works</a>
+        <a href="#features">Features</a>
+        <a href="#pricing">Pricing</a>
+        <a href="#faq">FAQ</a>
+      </nav>
+
+      <a class="btn btn-primary btn-sm" href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">
+        Book a demo
+      </a>
+      <button class="nav-toggle" id="navToggle" type="button"
+              aria-expanded="false" aria-controls="mobileNav" aria-label="Open menu">
+        <span></span><span></span><span></span>
+      </button>
+    </div>
+    <nav class="mobile-nav" id="mobileNav" aria-label="Mobile">
+      <a class="m-link" href="#why">Why Vegy</a>
+      <a class="m-link" href="#how">How it works</a>
+      <a class="m-link" href="#features">Features</a>
+      <a class="m-link" href="#pricing">Pricing</a>
+      <a class="m-link" href="#faq">FAQ</a>
+      <a class="btn btn-primary" href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">Book a demo</a>
+    </nav>
+  </header>
+
+  <main>
+
+    <!-- ── Hero ─────────────────────────────────────────────────────────── -->
+    <section class="hero">
+      <div class="wrap">
+        <div class="hero-copy">
+          <span class="eyebrow">For produce, meat &amp; specialty food distributors</span>
+
+          <h1 class="h-xl">Take orders<br /><span class="accent">in your sleep</span>.</h1>
+
+          <p class="lede">
+            Vegy puts your full catalog — your brand, your pricing, your minimums — on
+            your customers' phones. They order whenever they think of it. You wake up to
+            priced-out orders that are already in QuickBooks.
+          </p>
+
+          <div class="cta-row center">
+            <a class="btn btn-primary" href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">
+              Book a demo <span class="arrow" aria-hidden="true">→</span>
+            </a>
+            <a class="btn btn-outline" href="#how">See how it works</a>
+          </div>
+
+          <p class="hero-note">
+            White-labeled · Web, iOS &amp; Android · Order by text · QuickBooks sync
+          </p>
+        </div>
+
+        <div class="hero-visual">
+          <div class="shots" id="shots" tabindex="0" role="group"
+               aria-label="Vegy product screens — scroll sideways to see all four">
+          <figure class="shot">
+            <img src="shot-catalog.webp" width="476" height="871" fetchpriority="high"
+                 alt="Your storefront on a customer's phone: produce by the case and by the each, with pricing, quantity steppers and a running cart total." />
+          </figure>
+          <figure class="shot">
+            <img src="shot-order.webp" width="476" height="871" fetchpriority="low" loading="lazy"
+                 alt="An incoming order: customer and delivery details, order notes, priced line items, and buttons to print a pull slip, export CSV, or convert it to an invoice." />
+          </figure>
+          <figure class="shot">
+            <img src="shot-deliveries.webp" width="476" height="871" fetchpriority="low" loading="lazy"
+                 alt="The day's deliveries: every order for the date with its status, order number, and QuickBooks connection state." />
+          </figure>
+          <figure class="shot">
+            <img src="shot-dashboard.webp" width="476" height="871" fetchpriority="low" loading="lazy"
+                 alt="An instance dashboard under the distributor's own branding, with quick actions for new orders, AI orders, items, accounts and price lists." />
+          </figure>
+          </div>
+          <div class="shot-dots" id="shotDots"></div>
+        </div>
+
+        <div class="trust">
+          <p class="eyebrow">Running on Vegy today</p>
+          <div class="trust-logos">
+            <img src="gardenfresh.webp" width="437" height="132" loading="lazy"
+                 alt="Garden Fresh Produce LLC" />
+            <span class="trust-sep" aria-hidden="true"></span>
+            <img src="prima.webp" width="315" height="132" loading="lazy"
+                 alt="Prima Produce" />
+          </div>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── Why Vegy: the problem, paired with the fix ───────────────────── -->
+    <section class="section band-soft" id="why">
+      <div class="wrap">
+        <div class="section-head center reveal">
+          <span class="eyebrow">Why Vegy</span>
+          <h2 class="h-lg">Every order still gets typed in by hand</h2>
+          <p class="lede">
+            Orders reach you a different way every time, and one person turns all of
+            them into something the warehouse can pull. Here is what changes, line by
+            line.
+          </p>
+        </div>
+
+        <div class="swap reveal">
+          <div class="swap-head">
+            <span>How it arrives today</span>
+            <span aria-hidden="true"></span>
+            <span class="is-vegy">What Vegy does with it</span>
+          </div>
+
+          <div class="swap-row">
+            <div class="swap-from">
+              <span class="cell-label">How it arrives today</span>
+              <span class="chan">Voicemail · 11:40 PM</span>
+              <p>&ldquo;Hey it&rsquo;s Mike, give me the usual plus a couple cases of romaine, uh — call me back.&rdquo;</p>
+            </div>
+            <div class="swap-arrow" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></div>
+            <div class="swap-to">
+              <span class="cell-label">What Vegy does with it</span>
+              <p>Vegy&rsquo;s AI picks up, turns the call into a structured order on Mike&rsquo;s account, and prices it against his tier. It&rsquo;s waiting for you at 6am.</p>
+            </div>
+          </div>
+          <div class="swap-row">
+            <div class="swap-from">
+              <span class="cell-label">How it arrives today</span>
+              <span class="chan">Text message</span>
+              <p>&ldquo;4 tomato, 2 onion, 6 lettuce&rdquo; — no pack sizes, no case counts, no account.</p>
+            </div>
+            <div class="swap-arrow" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></div>
+            <div class="swap-to">
+              <span class="cell-label">What Vegy does with it</span>
+              <p>The same text comes back as real line items from your catalog, with your pack sizes and case counts already attached.</p>
+            </div>
+          </div>
+          <div class="swap-row">
+            <div class="swap-from">
+              <span class="cell-label">How it arrives today</span>
+              <span class="chan">Email · PDF attached</span>
+              <p>An order sheet from 2019, with prices that expired two seasons ago.</p>
+            </div>
+            <div class="swap-arrow" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></div>
+            <div class="swap-to">
+              <span class="cell-label">What Vegy does with it</span>
+              <p>They order from your live catalog instead, so the price is whatever their tier says today — and minimums are checked at checkout.</p>
+            </div>
+          </div>
+          <div class="swap-row">
+            <div class="swap-from">
+              <span class="cell-label">How it arrives today</span>
+              <span class="chan">Then, every time</span>
+              <p>Someone re-keys all of it by hand before the pull sheets go out. That&rsquo;s where the shorts come from, and the wrong pack sizes, and the credits.</p>
+            </div>
+            <div class="swap-arrow" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></div>
+            <div class="swap-to">
+              <span class="cell-label">What Vegy does with it</span>
+              <p>Nothing gets typed twice. The order syncs into QuickBooks as a customer, items, and an invoice, and the pull sheet prints itself.</p>
+            </div>
+          </div>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── How it works ─────────────────────────────────────────────────── -->
+    <section class="section" id="how">
+      <div class="wrap">
+        <div class="section-head center reveal">
+          <span class="eyebrow">How it works</span>
+          <h2 class="h-lg">Three steps, and the phone stops ringing</h2>
+        </div>
+
+        <div class="rows">
+          <div class="row reveal">
+            <div class="row-text">
+              <span class="eyebrow">Step 01</span>
+              <h3 class="h-md">We load your catalog</h3>
+              <p>
+                Your item list, pack sizes, categories, and price tiers get imported for
+                you — nothing gets rebuilt by hand. Then it's your logo, your product
+                photos, your category names, on your own domain.
+              </p>
+            </div>
+            <div class="row-visual">
+              <div class="mock">
+                <div class="mock-head"><span>Your catalog</span><span class="tag">Imported</span></div>
+                <div class="mock-body">
+                  <div class="mock-line"><span>Artichoke 12CT</span><span class="pack">Case</span><span class="price">$71.82</span></div>
+                  <div class="mock-line"><span>Arugula, Baby 2/1.5lb</span><span class="pack">Case</span><span class="price">$22.28</span></div>
+                  <div class="mock-line"><span>Romaine Hearts 12CT</span><span class="pack">Case</span><span class="price">$43.89</span></div>
+                  <div class="mock-line"><span>Tomato, Roma 25lb</span><span class="pack">Case</span><span class="price">$31.40</span></div>
+                </div>
+              </div>
+            </div>
+          </div>
+
+          <div class="row is-flipped reveal">
+            <div class="row-text">
+              <span class="eyebrow">Step 02</span>
+              <h3 class="h-md">Your customers order</h3>
+              <p>
+                From your website, your own iOS and Android app, or straight over voice
+                and text. Last week's order is right there, so a reorder takes seconds
+                instead of a phone call — at 11pm, on a Sunday, from a walk-in cooler.
+              </p>
+            </div>
+            <div class="row-visual">
+              <div class="mock">
+                <div class="mock-head"><span>Sunrise Cafe · Tuesday</span><span class="tag">Tier 2</span></div>
+                <div class="mock-body">
+                  <div class="mock-line"><span>Artichoke 12CT</span><span class="pack">2 cases</span><span class="price">$143.64</span></div>
+                  <div class="mock-line"><span>Arugula, Baby 2/1.5lb</span><span class="pack">6 cases</span><span class="price">$133.68</span></div>
+                  <div class="mock-line"><span>Romaine Hearts 12CT</span><span class="pack">4 cases</span><span class="price">$175.56</span></div>
+                </div>
+                <div class="mock-foot"><span>Order total</span><span class="amt">$452.88</span></div>
+              </div>
+            </div>
+          </div>
+
+          <div class="row reveal">
+            <div class="row-text">
+              <span class="eyebrow">Step 03</span>
+              <h3 class="h-md">You get a clean order</h3>
+              <p>
+                Priced against that customer's tier, checked against your minimums, and
+                synced to QuickBooks or your ERP. Print pull sheets, route lists, and
+                price lists straight from it.
+              </p>
+            </div>
+            <div class="row-visual">
+              <div class="mock">
+                <div class="mock-head"><span>QuickBooks</span><span class="tag">Synced 6:02 AM</span></div>
+                <div class="mock-body">
+                  <div class="mock-line"><span>Customer record</span><span class="price ok">Updated</span></div>
+                  <div class="mock-line"><span>Items &amp; pack sizes</span><span class="price ok">Updated</span></div>
+                  <div class="mock-line"><span>Invoice #4417</span><span class="price ok">Created</span></div>
+                  <div class="mock-line"><span>Pull sheet</span><span class="price ok">Ready</span></div>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── Feature grid ─────────────────────────────────────────────────── -->
+    <section class="section band-soft" id="features">
+      <div class="wrap">
+        <div class="section-head center reveal">
+          <span class="eyebrow">Features</span>
+          <h2 class="h-lg">The rest of what the ordering desk was doing</h2>
+          <p class="lede">
+            Case pricing, customer tiers, minimums, and the paperwork your warehouse runs
+            on — not a retail cart with a wholesale sticker on it.
+          </p>
+        </div>
+
+        <div class="cards reveal">
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <rect x="5" y="2" width="14" height="20" rx="2.5" /><path d="M12 18h.01" />
+              </svg>
+            </div>
+            <h3 class="h-sm">Order from anywhere</h3>
+            <p>
+              Your own website, mobile web, native iOS and Android apps, or AI-powered
+              ordering by voice and text for customers who will never open an app.
+            </p>
+          </article>
+
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <path d="M12.6 2.6 21 11a2 2 0 0 1 0 2.8l-7.2 7.2a2 2 0 0 1-2.8 0L3 12.6V4a1 1 0 0 1 1-1h8.6Z" /><path d="M7.5 7.5h.01" />
+              </svg>
+            </div>
+            <h3 class="h-sm">Pricing that knows the customer</h3>
+            <p>
+              Customer-specific pricing tiers and contract pricing applied automatically,
+              plus per-account order minimums enforced at checkout.
+            </p>
+          </article>
+
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <path d="M3 17l6-6 4 4 8-8" /><path d="M17 7h4v4" />
+              </svg>
+            </div>
+            <h3 class="h-sm">Bigger orders, on purpose</h3>
+            <p>
+              Promote featured items, push new products in front of the right accounts,
+              and let favorites and one-tap reorder do the rest.
+            </p>
+          </article>
+
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <path d="M21 12a9 9 0 0 1-15.5 6.2L3 16" /><path d="M3 12a9 9 0 0 1 15.5-6.2L21 8" /><path d="M3 21v-5h5" /><path d="M21 3v5h-5" />
+              </svg>
+            </div>
+            <h3 class="h-sm">QuickBooks &amp; ERP sync</h3>
+            <p>
+              Customers, items, and invoices flow into QuickBooks or your existing ERP.
+              No double entry, no end-of-day export ritual.
+            </p>
+          </article>
+
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <path d="M14 2H6.5A1.5 1.5 0 0 0 5 3.5v17A1.5 1.5 0 0 0 6.5 22h11a1.5 1.5 0 0 0 1.5-1.5V7Z" /><path d="M14 2v5h5" /><path d="M9 13h6" /><path d="M9 17h4" />
+              </svg>
+            </div>
+            <h3 class="h-sm">Paperwork in one click</h3>
+            <p>
+              Pull sheets, price lists, and sales reports export instantly — in the format
+              your warehouse and your bookkeeper already expect.
+            </p>
+          </article>
+
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <path d="M2 7h11v10H2z" /><path d="M13 10h4.5l3.5 3.5V17h-8" /><circle cx="7" cy="18.5" r="1.8" /><circle cx="17" cy="18.5" r="1.8" />
+              </svg>
+            </div>
+            <h3 class="h-sm">Inventory &amp; delivery tracking</h3>
+            <p>
+              Keep inventory and payment status attached to the order, and track
+              deliveries through to the door without a second system.
+            </p>
+          </article>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── Dark: differentiators ────────────────────────────────────────── -->
+    <section class="section band-dark">
+      <div class="wrap">
+        <div class="section-head reveal">
+          <span class="eyebrow">Where Vegy is different</span>
+          <h2 class="h-lg">Your brand in front, your books untouched</h2>
+          <p class="lede">
+            Vegy runs underneath your business — it doesn't put itself between you and
+            your customers, or between you and your accountant.
+          </p>
+        </div>
+
+        <div class="rows">
+          <div class="row reveal">
+            <div class="row-text">
+              <h3 class="h-md">It's your name on it, not ours</h3>
+              <p style="color:rgba(255,255,255,.72)">
+                Your customers download your app, from your listing, and see your logo
+                when it opens. Nobody has to know there's a software vendor behind your
+                ordering.
+              </p>
+            </div>
+            <div class="row-visual">
+              <div class="mock">
+                <div class="mock-head"><span>What your customers see</span></div>
+                <div class="mock-body">
+                  <div class="mock-line"><span>App Store listing</span><span class="price ok">Your company</span></div>
+                  <div class="mock-line"><span>Ordering domain</span><span class="price ok">orders.yourco.com</span></div>
+                  <div class="mock-line"><span>Logo &amp; colors</span><span class="price ok">Yours</span></div>
+                  <div class="mock-line"><span>Catalog &amp; photos</span><span class="price ok">Yours</span></div>
+                </div>
+              </div>
+            </div>
+          </div>
+
+          <div class="row is-flipped reveal">
+            <div class="row-text">
+              <h3 class="h-md">Your books stay your books</h3>
+              <p style="color:rgba(255,255,255,.72)">
+                Vegy creates and updates customers, items, and invoices in QuickBooks. It
+                does not post journal entries, recognize revenue, or reconcile — your
+                accountant's workflow stays exactly where it is.
+              </p>
+            </div>
+            <div class="row-visual">
+              <div class="mock">
+                <div class="mock-head"><span>QuickBooks scope</span></div>
+                <div class="mock-body">
+                  <div class="mock-line"><span>Customers, items, invoices</span><span class="price ok">Vegy writes</span></div>
+                  <div class="mock-line"><span>Journal entries</span><span class="price muted-cell">Untouched</span></div>
+                  <div class="mock-line"><span>Revenue recognition</span><span class="price muted-cell">Untouched</span></div>
+                  <div class="mock-line"><span>Reconciliation</span><span class="price muted-cell">Untouched</span></div>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── Pricing ──────────────────────────────────────────────────────── -->
+    <section class="section band-soft" id="pricing">
+      <div class="wrap">
+        <div class="section-head center reveal">
+          <span class="eyebrow">Pricing</span>
+          <h2 class="h-lg">No revenue share. No per-seat games.</h2>
+          <p class="lede">
+            A flat monthly fee, plus a quarter when our AI takes the order for you. A
+            $4,000 order costs you exactly what a $400 order costs you.
+          </p>
+        </div>
+
+        <div class="price-card reveal">
+          <div class="price-row">
+            <div class="price-unit">
+              <p class="price-figure">$599<span class="per">/mo</span></p>
+              <p class="price-cap">Platform fee</p>
+            </div>
+
+            <div class="price-plus" aria-hidden="true">+</div>
+
+            <div class="price-unit">
+              <p class="price-figure">25¢<span class="per">/order</span></p>
+              <p class="price-cap">AI orders — voice, text &amp; web</p>
+            </div>
+          </div>
+
+          <ul class="included">
+            <li>Your white-labeled web storefront and ordering domain</li>
+            <li>Native iOS and Android apps published under your brand</li>
+            <li>Unlimited customer accounts and pricing tiers</li>
+            <li>QuickBooks sync, or integration with your existing ERP</li>
+            <li>Catalog import and account setup, done by us</li>
+            <li>Email and phone support from people who know your instance</li>
+          </ul>
+
+          <p class="price-note">
+            Billed monthly. Final pricing depends on item count, number of accounts, and
+            whether you need a custom ERP integration — you'll get the exact number on
+            the demo call.
+          </p>
+
+          <a class="btn btn-white" style="margin-top:1.8rem"
+             href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">
+            Book a demo <span class="arrow" aria-hidden="true">→</span>
+          </a>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── FAQ ──────────────────────────────────────────────────────────── -->
+    <section class="section" id="faq">
+      <div class="wrap wrap-narrow">
+        <div class="section-head center reveal">
+          <span class="eyebrow">Straight answers</span>
+          <h2 class="h-lg">The questions you're actually asking</h2>
+        </div>
+
+        <div class="faq reveal">
+          <details>
+            <summary>My customers aren't tech people. Will they really use this?</summary>
+            <div class="answer">
+              <p>
+                Most of them reorder the same twenty items every week, and that's the case
+                Vegy is built around — their last order is on the first screen, and
+                reordering is a few taps.
+              </p>
+              <p>
+                For the holdouts, voice and text ordering means they keep calling and
+                texting exactly like they do now. The difference is that it lands in your
+                system as a structured, priced order instead of in someone's inbox.
+              </p>
+            </div>
+          </details>
+
+          <details>
+            <summary>What about the customers who insist on calling?</summary>
+            <div class="answer">
+              <p>
+                Keep taking their calls. Your team enters the order on their behalf and it
+                goes through the same pricing, minimums, and QuickBooks sync as everything
+                else. Nobody gets cut off — you just stop re-keying the ones who don't need
+                to call.
+              </p>
+            </div>
+          </details>
+
+          <details>
+            <summary>Do I have to leave QuickBooks?</summary>
+            <div class="answer">
+              <p>
+                No. Vegy creates and updates customers, items, and invoices in QuickBooks
+                for you. It does not post journal entries, recognize revenue, or reconcile
+                your books — your accountant's workflow stays exactly where it is.
+              </p>
+              <p>
+                Already on a different ERP? Custom integrations are part of what we scope
+                on the demo call.
+              </p>
+            </div>
+          </details>
+
+          <details>
+            <summary>How long does setup take?</summary>
+            <div class="answer">
+              <p>
+                We do the catalog import — your item list, pack sizes, and price tiers — so
+                the work on your side is mostly reviewing what we loaded and approving the
+                branding.
+              </p>
+              <p>
+                Timeline depends on how many items and accounts you're bringing over. Book
+                a demo and we'll scope it against your actual catalog rather than guessing.
+              </p>
+            </div>
+          </details>
+
+          <details>
+            <summary>Who owns my customer list and pricing?</summary>
+            <div class="answer">
+              <p>
+                You do. Each wholesaler runs their own instance, and Vegy processes that
+                data on your behalf as your service provider — your accounts, your pricing,
+                your order history. The details are spelled out in our
+                <a class="link" href="legal.html">Terms &amp; Privacy</a>.
+              </p>
+            </div>
+          </details>
+
+          <details>
+            <summary>What does it actually cost?</summary>
+            <div class="answer">
+              <p>
+                $599 a month for the platform, plus 25¢ for every order our AI takes for
+                you by voice, text, or web. We don't take a percentage of your sales — a
+                $4,000 order and a $400 order cost you exactly the same.
+              </p>
+              <p>
+                Where you land depends on item count, number of accounts, and whether you
+                need a custom ERP integration. You'll get the exact number on the demo
+                call, not a proposal three weeks later.
+              </p>
+            </div>
+          </details>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── Closing CTA ──────────────────────────────────────────────────── -->
+    <section class="cta-banner">
+      <div class="wrap">
+        <h2 class="h-lg">See your own catalog running on it</h2>
+        <p>
+          Send us a price list before the call and we'll load a slice of your real
+          catalog, so you're looking at your own items — not a generic sandbox.
+        </p>
+
+        <div class="cta-row center">
+          <a class="btn btn-white" href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">
+            Book a demo <span class="arrow" aria-hidden="true">→</span>
+          </a>
+          <a class="btn btn-outline" href="mailto:[email protected]">Email [email protected]</a>
+        </div>
+
+        <ul class="expect">
+          <li><span class="n">01</span>We look at how orders reach you today, and where they get re-keyed.</li>
+          <li><span class="n">02</span>You see your items, your tiers, and your minimums inside a live instance.</li>
+          <li><span class="n">03</span>We scope the QuickBooks or ERP connection against your setup.</li>
+          <li><span class="n">04</span>You get a price and a timeline on the call.</li>
+        </ul>
+      </div>
+    </section>
+
+  </main>
+
+  <!-- floats up once the hero screens are past, retires into the closing CTA -->
+  <div class="dock" id="dock">
+    <a class="btn btn-primary" href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">
+      Book a demo <span class="arrow" aria-hidden="true">→</span>
+    </a>
+  </div>
+
+  <footer class="site-footer">
+    <div class="wrap">
+      <div class="footer-grid">
+        <div>
+          <a class="wordmark" href="/">
+            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+              <path d="M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z" />
+              <path d="M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12" />
+            </svg>
+            Vegy
+          </a>
+          <p class="footer-blurb">
+            White-labeled wholesale ordering for produce, meat, and specialty food
+            distributors.
+          </p>
+          <p class="footer-by">
+            Built &amp; operated by
+            <a href="https://afterdarklabs.io" target="_blank" rel="noopener">After Dark Labs</a>
+          </p>
+        </div>
+
+        <div>
+          <h4>Product</h4>
+          <div class="footer-links">
+            <a href="#how">How it works</a>
+            <a href="#features">Features</a>
+            <a href="#pricing">Pricing</a>
+            <a href="#faq">FAQ</a>
+          </div>
+        </div>
+
+        <div>
+          <h4>Contact</h4>
+          <div class="footer-links">
+            <a href="support.html">Support center</a>
+            <a href="mailto:[email protected]">[email protected]</a>
+            <a href="tel:+19546218027">(954) 621-8027</a>
+          </div>
+        </div>
+
+        <div>
+          <h4>Company</h4>
+          <div class="footer-links">
+            <a href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">Book a demo</a>
+            <a href="legal.html">Terms of Use</a>
+            <a href="legal.html#privacy">Privacy Policy</a>
+          </div>
+        </div>
+      </div>
+
+      <div class="footer-base">
+        <span>© <span data-year></span> After Dark Labs. All rights reserved.</span>
+        <span>Built for the people who load the truck at 4am.</span>
+      </div>
+    </div>
+  </footer>
+
+  <script>
+    document.querySelectorAll('[data-year]').forEach(function (el) {
+      el.textContent = new Date().getFullYear();
+    });
+
+    var masthead = document.getElementById('masthead');
+    if (masthead) {
+      var onScroll = function () {
+        masthead.classList.toggle('is-stuck', window.scrollY > 8);
+      };
+      onScroll();
+      addEventListener('scroll', onScroll, { passive: true });
+    }
+
+
+    // Mobile menu
+    (function () {
+      var toggle = document.getElementById('navToggle');
+      var panel = document.getElementById('mobileNav');
+      if (!toggle || !panel) return;
+
+      function setOpen(open) {
+        panel.classList.toggle('is-open', open);
+        toggle.setAttribute('aria-expanded', String(open));
+        toggle.setAttribute('aria-label', open ? 'Close menu' : 'Open menu');
+      }
+
+      toggle.addEventListener('click', function () {
+        setOpen(toggle.getAttribute('aria-expanded') !== 'true');
+      });
+
+      panel.addEventListener('click', function (e) {
+        if (e.target.closest('a')) setOpen(false);
+      });
+
+      addEventListener('keydown', function (e) {
+        if (e.key === 'Escape' && toggle.getAttribute('aria-expanded') === 'true') {
+          setOpen(false);
+          toggle.focus();
+        }
+      });
+
+      // a resize back to desktop should not leave the panel stuck open
+      addEventListener('resize', function () {
+        if (innerWidth > 900) setOpen(false);
+      });
+    })();
+
+    // Nav scroll-spy: highlight whichever section is under the masthead
+    (function () {
+      var links = [].slice.call(
+        document.querySelectorAll('.nav-links a[href^="#"], .mobile-nav .m-link[href^="#"]')
+      );
+      if (!links.length) return;
+
+      var ids = [];
+      links.forEach(function (a) {
+        var id = a.getAttribute('href').slice(1);
+        if (document.getElementById(id) && ids.indexOf(id) === -1) ids.push(id);
+      });
+
+      function sync() {
+        var line = scrollY + (masthead ? masthead.offsetHeight : 74) + 28;
+        var current = '';
+        ids.forEach(function (id) {
+          var top = document.getElementById(id).getBoundingClientRect().top + scrollY;
+          if (top <= line) current = id;
+        });
+        // clamp to the last section once the page bottoms out
+        if (innerHeight + scrollY >= document.documentElement.scrollHeight - 4) {
+          current = ids[ids.length - 1];
+        }
+        links.forEach(function (a) {
+          a.classList.toggle('is-active', a.getAttribute('href') === '#' + current);
+        });
+      }
+      sync();
+      addEventListener('scroll', sync, { passive: true });
+      addEventListener('resize', sync);
+    })();
+
+    // Booking dock: rises once the hero screens are behind you, retires when
+    // the closing CTA arrives so the two never compete.
+    (function () {
+      var dock = document.getElementById('dock');
+      var after = document.querySelector('.hero-visual');
+      var until = document.querySelector('.cta-banner');
+      if (!dock || !after || !until) return;
+
+      function sync() {
+        var past = scrollY > after.getBoundingClientRect().bottom + scrollY - 120;
+        var landed = until.getBoundingClientRect().top < innerHeight - 40;
+        dock.classList.toggle('is-up', past && !landed);
+      }
+      sync();
+      addEventListener('scroll', sync, { passive: true });
+      addEventListener('resize', sync);
+    })();
+
+    // Hero screens: a plain row on desktop, a snap carousel once it overflows.
+    // Dots mirror scroll position and can drive it; vertical scrolling is never
+    // intercepted, so the page still behaves normally under a thumb.
+    (function () {
+      var strip = document.getElementById('shots');
+      var dots = document.getElementById('shotDots');
+      if (!strip || !dots) return;
+
+      var slides = [].slice.call(strip.querySelectorAll('.shot'));
+      slides.forEach(function (slide, i) {
+        var b = document.createElement('button');
+        b.type = 'button';
+        b.className = 'shot-dot' + (i === 0 ? ' is-active' : '');
+        b.setAttribute('aria-label', 'Show screen ' + (i + 1) + ' of ' + slides.length);
+        b.addEventListener('click', function () {
+          strip.scrollTo({ left: slide.offsetLeft - strip.offsetLeft, behavior: 'smooth' });
+        });
+        dots.appendChild(b);
+      });
+
+      var buttons = [].slice.call(dots.children);
+      var ticking = false;
+      strip.addEventListener('scroll', function () {
+        if (ticking) return;
+        ticking = true;
+        requestAnimationFrame(function () {
+          var nearest;
+          if (strip.scrollLeft + strip.clientWidth >= strip.scrollWidth - 2) {
+            nearest = slides.length - 1;          // pinned at the end
+          } else {
+            var mid = strip.scrollLeft + strip.clientWidth / 2;
+            var best = Infinity;
+            nearest = 0;
+            slides.forEach(function (slide, i) {
+              var d = Math.abs(slide.offsetLeft + slide.clientWidth / 2 - mid);
+              if (d < best) { best = d; nearest = i; }
+            });
+          }
+          buttons.forEach(function (b, i) {
+            b.classList.toggle('is-active', i === nearest);
+          });
+          ticking = false;
+        });
+      }, { passive: true });
+    })();
+
+    var reveals = document.querySelectorAll('.reveal');
+    if (matchMedia('(prefers-reduced-motion: reduce)').matches || !('IntersectionObserver' in window)) {
+      // leave everything in its default visible state
+    } else {
+      document.documentElement.classList.add('js');
+      var io = new IntersectionObserver(function (entries) {
+        entries.forEach(function (entry) {
+          if (entry.isIntersecting) {
+            entry.target.classList.add('is-in');
+            io.unobserve(entry.target);
+          }
+        });
+      }, { rootMargin: '0px 0px -8% 0px', threshold: 0.06 });
+      reveals.forEach(function (el) { io.observe(el); });
+    }
+  </script>
+
+  <script type="application/ld+json">
+  {
+    "@context": "https://schema.org",
+    "@graph": [
+      {
+        "@type": "Organization",
+        "@id": "https://vegy.app/#org",
+        "name": "After Dark Labs",
+        "url": "https://afterdarklabs.io/",
+        "email": "[email protected]",
+        "telephone": "+1-954-621-8027",
+        "description": "After Dark Labs builds and operates Vegy, a white-labeled wholesale ordering platform for produce, meat, and specialty food distributors."
+      },
+      {
+        "@type": "SoftwareApplication",
+        "name": "Vegy",
+        "applicationCategory": "BusinessApplication",
+        "operatingSystem": "Web, iOS, Android",
+        "publisher": { "@id": "https://vegy.app/#org" },
+        "description": "Wholesale ordering software with customer-specific pricing tiers, order minimums, white-labeled iOS and Android apps, voice and text ordering, and QuickBooks sync.",
+        "offers": {
+          "@type": "Offer",
+          "price": "599",
+          "priceCurrency": "USD",
+          "description": "$599 per month platform fee, plus $0.25 per AI-processed order (voice, text, and web).",
+          "priceSpecification": {
+            "@type": "UnitPriceSpecification",
+            "price": "599",
+            "priceCurrency": "USD",
+            "referenceQuantity": {
+              "@type": "QuantitativeValue",
+              "value": "1",
+              "unitCode": "MON"
+            }
+          }
+        }
+      },
+      {
+        "@type": "FAQPage",
+        "mainEntity": [
+          {
+            "@type": "Question",
+            "name": "My customers aren't tech people. Will they really use this?",
+            "acceptedAnswer": {
+              "@type": "Answer",
+              "text": "Most of them reorder the same twenty items every week, and that's the case Vegy is built around — their last order is on the first screen, and reordering is a few taps. For the holdouts, voice and text ordering means they keep calling and texting exactly like they do now. The difference is that it lands in your system as a structured, priced order instead of in someone's inbox."
+            }
+          },
+          {
+            "@type": "Question",
+            "name": "What about the customers who insist on calling?",
+            "acceptedAnswer": {
+              "@type": "Answer",
+              "text": "Keep taking their calls. Your team enters the order on their behalf and it goes through the same pricing, minimums, and QuickBooks sync as everything else. Nobody gets cut off — you just stop re-keying the ones who don't need to call."
+            }
+          },
+          {
+            "@type": "Question",
+            "name": "Do I have to leave QuickBooks?",
+            "acceptedAnswer": {
+              "@type": "Answer",
+              "text": "No. Vegy creates and updates customers, items, and invoices in QuickBooks for you. It does not post journal entries, recognize revenue, or reconcile your books — your accountant's workflow stays exactly where it is. Already on a different ERP? Custom integrations are part of what we scope on the demo call."
+            }
+          },
+          {
+            "@type": "Question",
+            "name": "How long does setup take?",
+            "acceptedAnswer": {
+              "@type": "Answer",
+              "text": "We do the catalog import — your item list, pack sizes, and price tiers — so the work on your side is mostly reviewing what we loaded and approving the branding. Timeline depends on how many items and accounts you're bringing over."
+            }
+          },
+          {
+            "@type": "Question",
+            "name": "Who owns my customer list and pricing?",
+            "acceptedAnswer": {
+              "@type": "Answer",
+              "text": "You do. Each wholesaler runs their own instance, and Vegy processes that data on your behalf as your service provider — your accounts, your pricing, your order history."
+            }
+          },
+          {
+            "@type": "Question",
+            "name": "What does it actually cost?",
+            "acceptedAnswer": {
+              "@type": "Answer",
+              "text": "$599 a month for the platform, plus 25¢ for every order our AI takes for you by voice, text, or web. We don't take a percentage of your sales — a $4,000 order and a $400 order cost you exactly the same. Where you land depends on item count, number of accounts, and whether you need a custom ERP integration."
+            }
+          }
+        ]
+      }
+    ]
+  }
+  </script>
+
+<script>addEventListener('load',function(){setTimeout(function(){
+  document.getElementById('navToggle').click();
+},500)});</script></body>
+</html>
diff --git a/docs/_pb.html b/docs/_pb.html
new file mode 100644
index 0000000..a24b761
--- /dev/null
+++ b/docs/_pb.html
@@ -0,0 +1,945 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta name="viewport" content="width=device-width, initial-scale=1" />
+  <title>Vegy — Wholesale ordering software for food distributors</title>
+  <meta name="description" content="Vegy puts your wholesale catalog on your customers' phones under your own brand. Customer-specific pricing, order minimums, iOS and Android apps, and QuickBooks sync. $599/mo flat — no revenue share. Book a demo." />
+  <link rel="canonical" href="https://vegy.app/" />
+
+  <meta property="og:type" content="website" />
+  <meta property="og:url" content="https://vegy.app/" />
+  <meta property="og:site_name" content="Vegy" />
+  <meta property="og:title" content="Vegy — Wholesale ordering software for food distributors" />
+  <meta property="og:description" content="Your catalog, your brand, your pricing — on your customers' phones. Orders arrive priced-out and synced to QuickBooks." />
+  <meta property="og:image" content="https://vegy.app/shot-catalog.png" />
+  <meta name="twitter:card" content="summary_large_image" />
+  <meta name="theme-color" content="#16a34a" />
+
+  <link rel="icon" href="favicon.svg" type="image/svg+xml" />
+  <link rel="apple-touch-icon" href="shot-catalog.png" />
+
+  <link rel="preconnect" href="https://fonts.googleapis.com" />
+  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
+  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=Inter:wght@400;500;600;700&display=swap" />
+  <link rel="stylesheet" href="styles.css" />
+</head>
+
+<body>
+
+  <header class="masthead" id="masthead">
+    <div class="wrap">
+      <a class="wordmark" href="/">
+        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+          <path d="M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z" />
+          <path d="M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12" />
+        </svg>
+        Vegy
+      </a>
+
+      <nav class="nav-links" aria-label="Primary">
+        <a href="#why">Why Vegy</a>
+        <a href="#how">How it works</a>
+        <a href="#features">Features</a>
+        <a href="#pricing">Pricing</a>
+        <a href="#faq">FAQ</a>
+      </nav>
+
+      <a class="btn btn-primary btn-sm" href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">
+        Book a demo
+      </a>
+      <button class="nav-toggle" id="navToggle" type="button"
+              aria-expanded="false" aria-controls="mobileNav" aria-label="Open menu">
+        <span></span><span></span><span></span>
+      </button>
+    </div>
+    <nav class="mobile-nav" id="mobileNav" aria-label="Mobile">
+      <a class="m-link" href="#why">Why Vegy</a>
+      <a class="m-link" href="#how">How it works</a>
+      <a class="m-link" href="#features">Features</a>
+      <a class="m-link" href="#pricing">Pricing</a>
+      <a class="m-link" href="#faq">FAQ</a>
+      <a class="btn btn-primary" href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">Book a demo</a>
+    </nav>
+  </header>
+
+  <main>
+
+    <!-- ── Hero ─────────────────────────────────────────────────────────── -->
+    <section class="hero">
+      <div class="wrap">
+        <div class="hero-copy">
+          <span class="eyebrow">For produce, meat &amp; specialty food distributors</span>
+
+          <h1 class="h-xl">Take orders<br /><span class="accent">in your sleep</span>.</h1>
+
+          <p class="lede">
+            Vegy puts your full catalog — your brand, your pricing, your minimums — on
+            your customers' phones. They order whenever they think of it. You wake up to
+            priced-out orders that are already in QuickBooks.
+          </p>
+
+          <div class="cta-row center">
+            <a class="btn btn-primary" href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">
+              Book a demo <span class="arrow" aria-hidden="true">→</span>
+            </a>
+            <a class="btn btn-outline" href="#how">See how it works</a>
+          </div>
+
+          <p class="hero-note">
+            White-labeled · Web, iOS &amp; Android · Order by text · QuickBooks sync
+          </p>
+        </div>
+
+        <div class="hero-visual">
+          <div class="shots" id="shots" tabindex="0" role="group"
+               aria-label="Vegy product screens — scroll sideways to see all four">
+          <figure class="shot">
+            <img src="shot-catalog.webp" width="476" height="871" fetchpriority="high"
+                 alt="Your storefront on a customer's phone: produce by the case and by the each, with pricing, quantity steppers and a running cart total." />
+          </figure>
+          <figure class="shot">
+            <img src="shot-order.webp" width="476" height="871" fetchpriority="low" loading="lazy"
+                 alt="An incoming order: customer and delivery details, order notes, priced line items, and buttons to print a pull slip, export CSV, or convert it to an invoice." />
+          </figure>
+          <figure class="shot">
+            <img src="shot-deliveries.webp" width="476" height="871" fetchpriority="low" loading="lazy"
+                 alt="The day's deliveries: every order for the date with its status, order number, and QuickBooks connection state." />
+          </figure>
+          <figure class="shot">
+            <img src="shot-dashboard.webp" width="476" height="871" fetchpriority="low" loading="lazy"
+                 alt="An instance dashboard under the distributor's own branding, with quick actions for new orders, AI orders, items, accounts and price lists." />
+          </figure>
+          </div>
+          <div class="shot-dots" id="shotDots"></div>
+        </div>
+
+        <div class="trust">
+          <p class="eyebrow">Running on Vegy today</p>
+          <div class="trust-logos">
+            <img src="gardenfresh.webp" width="437" height="132" loading="lazy"
+                 alt="Garden Fresh Produce LLC" />
+            <span class="trust-sep" aria-hidden="true"></span>
+            <img src="prima.webp" width="315" height="132" loading="lazy"
+                 alt="Prima Produce" />
+          </div>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── Why Vegy: the problem, paired with the fix ───────────────────── -->
+    <section class="section band-soft" id="why">
+      <div class="wrap">
+        <div class="section-head center reveal">
+          <span class="eyebrow">Why Vegy</span>
+          <h2 class="h-lg">Every order still gets typed in by hand</h2>
+          <p class="lede">
+            Orders reach you a different way every time, and one person turns all of
+            them into something the warehouse can pull. Here is what changes, line by
+            line.
+          </p>
+        </div>
+
+        <div class="swap reveal">
+          <div class="swap-head">
+            <span>How it arrives today</span>
+            <span aria-hidden="true"></span>
+            <span class="is-vegy">What Vegy does with it</span>
+          </div>
+
+          <div class="swap-row">
+            <div class="swap-from">
+              <span class="cell-label">How it arrives today</span>
+              <span class="chan">Voicemail · 11:40 PM</span>
+              <p>&ldquo;Hey it&rsquo;s Mike, give me the usual plus a couple cases of romaine, uh — call me back.&rdquo;</p>
+            </div>
+            <div class="swap-arrow" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></div>
+            <div class="swap-to">
+              <span class="cell-label">What Vegy does with it</span>
+              <p>Vegy&rsquo;s AI picks up, turns the call into a structured order on Mike&rsquo;s account, and prices it against his tier. It&rsquo;s waiting for you at 6am.</p>
+            </div>
+          </div>
+          <div class="swap-row">
+            <div class="swap-from">
+              <span class="cell-label">How it arrives today</span>
+              <span class="chan">Text message</span>
+              <p>&ldquo;4 tomato, 2 onion, 6 lettuce&rdquo; — no pack sizes, no case counts, no account.</p>
+            </div>
+            <div class="swap-arrow" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></div>
+            <div class="swap-to">
+              <span class="cell-label">What Vegy does with it</span>
+              <p>The same text comes back as real line items from your catalog, with your pack sizes and case counts already attached.</p>
+            </div>
+          </div>
+          <div class="swap-row">
+            <div class="swap-from">
+              <span class="cell-label">How it arrives today</span>
+              <span class="chan">Email · PDF attached</span>
+              <p>An order sheet from 2019, with prices that expired two seasons ago.</p>
+            </div>
+            <div class="swap-arrow" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></div>
+            <div class="swap-to">
+              <span class="cell-label">What Vegy does with it</span>
+              <p>They order from your live catalog instead, so the price is whatever their tier says today — and minimums are checked at checkout.</p>
+            </div>
+          </div>
+          <div class="swap-row">
+            <div class="swap-from">
+              <span class="cell-label">How it arrives today</span>
+              <span class="chan">Then, every time</span>
+              <p>Someone re-keys all of it by hand before the pull sheets go out. That&rsquo;s where the shorts come from, and the wrong pack sizes, and the credits.</p>
+            </div>
+            <div class="swap-arrow" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></div>
+            <div class="swap-to">
+              <span class="cell-label">What Vegy does with it</span>
+              <p>Nothing gets typed twice. The order syncs into QuickBooks as a customer, items, and an invoice, and the pull sheet prints itself.</p>
+            </div>
+          </div>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── How it works ─────────────────────────────────────────────────── -->
+    <section class="section" id="how">
+      <div class="wrap">
+        <div class="section-head center reveal">
+          <span class="eyebrow">How it works</span>
+          <h2 class="h-lg">Three steps, and the phone stops ringing</h2>
+        </div>
+
+        <div class="rows">
+          <div class="row reveal">
+            <div class="row-text">
+              <span class="eyebrow">Step 01</span>
+              <h3 class="h-md">We load your catalog</h3>
+              <p>
+                Your item list, pack sizes, categories, and price tiers get imported for
+                you — nothing gets rebuilt by hand. Then it's your logo, your product
+                photos, your category names, on your own domain.
+              </p>
+            </div>
+            <div class="row-visual">
+              <div class="mock">
+                <div class="mock-head"><span>Your catalog</span><span class="tag">Imported</span></div>
+                <div class="mock-body">
+                  <div class="mock-line"><span>Artichoke 12CT</span><span class="pack">Case</span><span class="price">$71.82</span></div>
+                  <div class="mock-line"><span>Arugula, Baby 2/1.5lb</span><span class="pack">Case</span><span class="price">$22.28</span></div>
+                  <div class="mock-line"><span>Romaine Hearts 12CT</span><span class="pack">Case</span><span class="price">$43.89</span></div>
+                  <div class="mock-line"><span>Tomato, Roma 25lb</span><span class="pack">Case</span><span class="price">$31.40</span></div>
+                </div>
+              </div>
+            </div>
+          </div>
+
+          <div class="row is-flipped reveal">
+            <div class="row-text">
+              <span class="eyebrow">Step 02</span>
+              <h3 class="h-md">Your customers order</h3>
+              <p>
+                From your website, your own iOS and Android app, or straight over voice
+                and text. Last week's order is right there, so a reorder takes seconds
+                instead of a phone call — at 11pm, on a Sunday, from a walk-in cooler.
+              </p>
+            </div>
+            <div class="row-visual">
+              <div class="mock">
+                <div class="mock-head"><span>Sunrise Cafe · Tuesday</span><span class="tag">Tier 2</span></div>
+                <div class="mock-body">
+                  <div class="mock-line"><span>Artichoke 12CT</span><span class="pack">2 cases</span><span class="price">$143.64</span></div>
+                  <div class="mock-line"><span>Arugula, Baby 2/1.5lb</span><span class="pack">6 cases</span><span class="price">$133.68</span></div>
+                  <div class="mock-line"><span>Romaine Hearts 12CT</span><span class="pack">4 cases</span><span class="price">$175.56</span></div>
+                </div>
+                <div class="mock-foot"><span>Order total</span><span class="amt">$452.88</span></div>
+              </div>
+            </div>
+          </div>
+
+          <div class="row reveal">
+            <div class="row-text">
+              <span class="eyebrow">Step 03</span>
+              <h3 class="h-md">You get a clean order</h3>
+              <p>
+                Priced against that customer's tier, checked against your minimums, and
+                synced to QuickBooks or your ERP. Print pull sheets, route lists, and
+                price lists straight from it.
+              </p>
+            </div>
+            <div class="row-visual">
+              <div class="mock">
+                <div class="mock-head"><span>QuickBooks</span><span class="tag">Synced 6:02 AM</span></div>
+                <div class="mock-body">
+                  <div class="mock-line"><span>Customer record</span><span class="price ok">Updated</span></div>
+                  <div class="mock-line"><span>Items &amp; pack sizes</span><span class="price ok">Updated</span></div>
+                  <div class="mock-line"><span>Invoice #4417</span><span class="price ok">Created</span></div>
+                  <div class="mock-line"><span>Pull sheet</span><span class="price ok">Ready</span></div>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── Feature grid ─────────────────────────────────────────────────── -->
+    <section class="section band-soft" id="features">
+      <div class="wrap">
+        <div class="section-head center reveal">
+          <span class="eyebrow">Features</span>
+          <h2 class="h-lg">The rest of what the ordering desk was doing</h2>
+          <p class="lede">
+            Case pricing, customer tiers, minimums, and the paperwork your warehouse runs
+            on — not a retail cart with a wholesale sticker on it.
+          </p>
+        </div>
+
+        <div class="cards reveal">
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <rect x="5" y="2" width="14" height="20" rx="2.5" /><path d="M12 18h.01" />
+              </svg>
+            </div>
+            <h3 class="h-sm">Order from anywhere</h3>
+            <p>
+              Your own website, mobile web, native iOS and Android apps, or AI-powered
+              ordering by voice and text for customers who will never open an app.
+            </p>
+          </article>
+
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <path d="M12.6 2.6 21 11a2 2 0 0 1 0 2.8l-7.2 7.2a2 2 0 0 1-2.8 0L3 12.6V4a1 1 0 0 1 1-1h8.6Z" /><path d="M7.5 7.5h.01" />
+              </svg>
+            </div>
+            <h3 class="h-sm">Pricing that knows the customer</h3>
+            <p>
+              Customer-specific pricing tiers and contract pricing applied automatically,
+              plus per-account order minimums enforced at checkout.
+            </p>
+          </article>
+
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <path d="M3 17l6-6 4 4 8-8" /><path d="M17 7h4v4" />
+              </svg>
+            </div>
+            <h3 class="h-sm">Bigger orders, on purpose</h3>
+            <p>
+              Promote featured items, push new products in front of the right accounts,
+              and let favorites and one-tap reorder do the rest.
+            </p>
+          </article>
+
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <path d="M21 12a9 9 0 0 1-15.5 6.2L3 16" /><path d="M3 12a9 9 0 0 1 15.5-6.2L21 8" /><path d="M3 21v-5h5" /><path d="M21 3v5h-5" />
+              </svg>
+            </div>
+            <h3 class="h-sm">QuickBooks &amp; ERP sync</h3>
+            <p>
+              Customers, items, and invoices flow into QuickBooks or your existing ERP.
+              No double entry, no end-of-day export ritual.
+            </p>
+          </article>
+
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <path d="M14 2H6.5A1.5 1.5 0 0 0 5 3.5v17A1.5 1.5 0 0 0 6.5 22h11a1.5 1.5 0 0 0 1.5-1.5V7Z" /><path d="M14 2v5h5" /><path d="M9 13h6" /><path d="M9 17h4" />
+              </svg>
+            </div>
+            <h3 class="h-sm">Paperwork in one click</h3>
+            <p>
+              Pull sheets, price lists, and sales reports export instantly — in the format
+              your warehouse and your bookkeeper already expect.
+            </p>
+          </article>
+
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <path d="M2 7h11v10H2z" /><path d="M13 10h4.5l3.5 3.5V17h-8" /><circle cx="7" cy="18.5" r="1.8" /><circle cx="17" cy="18.5" r="1.8" />
+              </svg>
+            </div>
+            <h3 class="h-sm">Inventory &amp; delivery tracking</h3>
+            <p>
+              Keep inventory and payment status attached to the order, and track
+              deliveries through to the door without a second system.
+            </p>
+          </article>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── Dark: differentiators ────────────────────────────────────────── -->
+    <section class="section band-dark">
+      <div class="wrap">
+        <div class="section-head reveal">
+          <span class="eyebrow">Where Vegy is different</span>
+          <h2 class="h-lg">Your brand in front, your books untouched</h2>
+          <p class="lede">
+            Vegy runs underneath your business — it doesn't put itself between you and
+            your customers, or between you and your accountant.
+          </p>
+        </div>
+
+        <div class="rows">
+          <div class="row reveal">
+            <div class="row-text">
+              <h3 class="h-md">It's your name on it, not ours</h3>
+              <p style="color:rgba(255,255,255,.72)">
+                Your customers download your app, from your listing, and see your logo
+                when it opens. Nobody has to know there's a software vendor behind your
+                ordering.
+              </p>
+            </div>
+            <div class="row-visual">
+              <div class="mock">
+                <div class="mock-head"><span>What your customers see</span></div>
+                <div class="mock-body">
+                  <div class="mock-line"><span>App Store listing</span><span class="price ok">Your company</span></div>
+                  <div class="mock-line"><span>Ordering domain</span><span class="price ok">orders.yourco.com</span></div>
+                  <div class="mock-line"><span>Logo &amp; colors</span><span class="price ok">Yours</span></div>
+                  <div class="mock-line"><span>Catalog &amp; photos</span><span class="price ok">Yours</span></div>
+                </div>
+              </div>
+            </div>
+          </div>
+
+          <div class="row is-flipped reveal">
+            <div class="row-text">
+              <h3 class="h-md">Your books stay your books</h3>
+              <p style="color:rgba(255,255,255,.72)">
+                Vegy creates and updates customers, items, and invoices in QuickBooks. It
+                does not post journal entries, recognize revenue, or reconcile — your
+                accountant's workflow stays exactly where it is.
+              </p>
+            </div>
+            <div class="row-visual">
+              <div class="mock">
+                <div class="mock-head"><span>QuickBooks scope</span></div>
+                <div class="mock-body">
+                  <div class="mock-line"><span>Customers, items, invoices</span><span class="price ok">Vegy writes</span></div>
+                  <div class="mock-line"><span>Journal entries</span><span class="price muted-cell">Untouched</span></div>
+                  <div class="mock-line"><span>Revenue recognition</span><span class="price muted-cell">Untouched</span></div>
+                  <div class="mock-line"><span>Reconciliation</span><span class="price muted-cell">Untouched</span></div>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── Pricing ──────────────────────────────────────────────────────── -->
+    <section class="section band-soft" id="pricing">
+      <div class="wrap">
+        <div class="section-head center reveal">
+          <span class="eyebrow">Pricing</span>
+          <h2 class="h-lg">No revenue share. No per-seat games.</h2>
+          <p class="lede">
+            A flat monthly fee, plus a quarter when our AI takes the order for you. A
+            $4,000 order costs you exactly what a $400 order costs you.
+          </p>
+        </div>
+
+        <div class="price-card reveal">
+          <div class="price-row">
+            <div class="price-unit">
+              <p class="price-figure">$599<span class="per">/mo</span></p>
+              <p class="price-cap">Platform fee</p>
+            </div>
+
+            <div class="price-plus" aria-hidden="true">+</div>
+
+            <div class="price-unit">
+              <p class="price-figure">25¢<span class="per">/order</span></p>
+              <p class="price-cap">AI orders — voice, text &amp; web</p>
+            </div>
+          </div>
+
+          <ul class="included">
+            <li>Your white-labeled web storefront and ordering domain</li>
+            <li>Native iOS and Android apps published under your brand</li>
+            <li>Unlimited customer accounts and pricing tiers</li>
+            <li>QuickBooks sync, or integration with your existing ERP</li>
+            <li>Catalog import and account setup, done by us</li>
+            <li>Email and phone support from people who know your instance</li>
+          </ul>
+
+          <p class="price-note">
+            Billed monthly. Final pricing depends on item count, number of accounts, and
+            whether you need a custom ERP integration — you'll get the exact number on
+            the demo call.
+          </p>
+
+          <a class="btn btn-white" style="margin-top:1.8rem"
+             href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">
+            Book a demo <span class="arrow" aria-hidden="true">→</span>
+          </a>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── FAQ ──────────────────────────────────────────────────────────── -->
+    <section class="section" id="faq">
+      <div class="wrap wrap-narrow">
+        <div class="section-head center reveal">
+          <span class="eyebrow">Straight answers</span>
+          <h2 class="h-lg">The questions you're actually asking</h2>
+        </div>
+
+        <div class="faq reveal">
+          <details>
+            <summary>My customers aren't tech people. Will they really use this?</summary>
+            <div class="answer">
+              <p>
+                Most of them reorder the same twenty items every week, and that's the case
+                Vegy is built around — their last order is on the first screen, and
+                reordering is a few taps.
+              </p>
+              <p>
+                For the holdouts, voice and text ordering means they keep calling and
+                texting exactly like they do now. The difference is that it lands in your
+                system as a structured, priced order instead of in someone's inbox.
+              </p>
+            </div>
+          </details>
+
+          <details>
+            <summary>What about the customers who insist on calling?</summary>
+            <div class="answer">
+              <p>
+                Keep taking their calls. Your team enters the order on their behalf and it
+                goes through the same pricing, minimums, and QuickBooks sync as everything
+                else. Nobody gets cut off — you just stop re-keying the ones who don't need
+                to call.
+              </p>
+            </div>
+          </details>
+
+          <details>
+            <summary>Do I have to leave QuickBooks?</summary>
+            <div class="answer">
+              <p>
+                No. Vegy creates and updates customers, items, and invoices in QuickBooks
+                for you. It does not post journal entries, recognize revenue, or reconcile
+                your books — your accountant's workflow stays exactly where it is.
+              </p>
+              <p>
+                Already on a different ERP? Custom integrations are part of what we scope
+                on the demo call.
+              </p>
+            </div>
+          </details>
+
+          <details>
+            <summary>How long does setup take?</summary>
+            <div class="answer">
+              <p>
+                We do the catalog import — your item list, pack sizes, and price tiers — so
+                the work on your side is mostly reviewing what we loaded and approving the
+                branding.
+              </p>
+              <p>
+                Timeline depends on how many items and accounts you're bringing over. Book
+                a demo and we'll scope it against your actual catalog rather than guessing.
+              </p>
+            </div>
+          </details>
+
+          <details>
+            <summary>Who owns my customer list and pricing?</summary>
+            <div class="answer">
+              <p>
+                You do. Each wholesaler runs their own instance, and Vegy processes that
+                data on your behalf as your service provider — your accounts, your pricing,
+                your order history. The details are spelled out in our
+                <a class="link" href="legal.html">Terms &amp; Privacy</a>.
+              </p>
+            </div>
+          </details>
+
+          <details>
+            <summary>What does it actually cost?</summary>
+            <div class="answer">
+              <p>
+                $599 a month for the platform, plus 25¢ for every order our AI takes for
+                you by voice, text, or web. We don't take a percentage of your sales — a
+                $4,000 order and a $400 order cost you exactly the same.
+              </p>
+              <p>
+                Where you land depends on item count, number of accounts, and whether you
+                need a custom ERP integration. You'll get the exact number on the demo
+                call, not a proposal three weeks later.
+              </p>
+            </div>
+          </details>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── Closing CTA ──────────────────────────────────────────────────── -->
+    <section class="cta-banner">
+      <div class="wrap">
+        <h2 class="h-lg">See your own catalog running on it</h2>
+        <p>
+          Send us a price list before the call and we'll load a slice of your real
+          catalog, so you're looking at your own items — not a generic sandbox.
+        </p>
+
+        <div class="cta-row center">
+          <a class="btn btn-white" href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">
+            Book a demo <span class="arrow" aria-hidden="true">→</span>
+          </a>
+          <a class="btn btn-outline" href="mailto:[email protected]">Email [email protected]</a>
+        </div>
+
+        <ul class="expect">
+          <li><span class="n">01</span>We look at how orders reach you today, and where they get re-keyed.</li>
+          <li><span class="n">02</span>You see your items, your tiers, and your minimums inside a live instance.</li>
+          <li><span class="n">03</span>We scope the QuickBooks or ERP connection against your setup.</li>
+          <li><span class="n">04</span>You get a price and a timeline on the call.</li>
+        </ul>
+      </div>
+    </section>
+
+  </main>
+
+  <!-- floats up once the hero screens are past, retires into the closing CTA -->
+  <div class="dock" id="dock">
+    <a class="btn btn-primary" href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">
+      Book a demo <span class="arrow" aria-hidden="true">→</span>
+    </a>
+  </div>
+
+  <footer class="site-footer">
+    <div class="wrap">
+      <div class="footer-grid">
+        <div>
+          <a class="wordmark" href="/">
+            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+              <path d="M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z" />
+              <path d="M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12" />
+            </svg>
+            Vegy
+          </a>
+          <p class="footer-blurb">
+            White-labeled wholesale ordering for produce, meat, and specialty food
+            distributors.
+          </p>
+          <p class="footer-by">
+            Built &amp; operated by
+            <a href="https://afterdarklabs.io" target="_blank" rel="noopener">After Dark Labs</a>
+          </p>
+        </div>
+
+        <div>
+          <h4>Product</h4>
+          <div class="footer-links">
+            <a href="#how">How it works</a>
+            <a href="#features">Features</a>
+            <a href="#pricing">Pricing</a>
+            <a href="#faq">FAQ</a>
+          </div>
+        </div>
+
+        <div>
+          <h4>Contact</h4>
+          <div class="footer-links">
+            <a href="support.html">Support center</a>
+            <a href="mailto:[email protected]">[email protected]</a>
+            <a href="tel:+19546218027">(954) 621-8027</a>
+          </div>
+        </div>
+
+        <div>
+          <h4>Company</h4>
+          <div class="footer-links">
+            <a href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">Book a demo</a>
+            <a href="legal.html">Terms of Use</a>
+            <a href="legal.html#privacy">Privacy Policy</a>
+          </div>
+        </div>
+      </div>
+
+      <div class="footer-base">
+        <span>© <span data-year></span> After Dark Labs. All rights reserved.</span>
+        <span>Built for the people who load the truck at 4am.</span>
+      </div>
+    </div>
+  </footer>
+
+  <script>
+    document.querySelectorAll('[data-year]').forEach(function (el) {
+      el.textContent = new Date().getFullYear();
+    });
+
+    var masthead = document.getElementById('masthead');
+    if (masthead) {
+      var onScroll = function () {
+        masthead.classList.toggle('is-stuck', window.scrollY > 8);
+      };
+      onScroll();
+      addEventListener('scroll', onScroll, { passive: true });
+    }
+
+
+    // Mobile menu
+    (function () {
+      var toggle = document.getElementById('navToggle');
+      var panel = document.getElementById('mobileNav');
+      if (!toggle || !panel) return;
+
+      function setOpen(open) {
+        panel.classList.toggle('is-open', open);
+        toggle.setAttribute('aria-expanded', String(open));
+        toggle.setAttribute('aria-label', open ? 'Close menu' : 'Open menu');
+      }
+
+      toggle.addEventListener('click', function () {
+        setOpen(toggle.getAttribute('aria-expanded') !== 'true');
+      });
+
+      panel.addEventListener('click', function (e) {
+        if (e.target.closest('a')) setOpen(false);
+      });
+
+      addEventListener('keydown', function (e) {
+        if (e.key === 'Escape' && toggle.getAttribute('aria-expanded') === 'true') {
+          setOpen(false);
+          toggle.focus();
+        }
+      });
+
+      // a resize back to desktop should not leave the panel stuck open
+      addEventListener('resize', function () {
+        if (innerWidth > 900) setOpen(false);
+      });
+    })();
+
+    // Nav scroll-spy: highlight whichever section is under the masthead
+    (function () {
+      var links = [].slice.call(
+        document.querySelectorAll('.nav-links a[href^="#"], .mobile-nav .m-link[href^="#"]')
+      );
+      if (!links.length) return;
+
+      var ids = [];
+      links.forEach(function (a) {
+        var id = a.getAttribute('href').slice(1);
+        if (document.getElementById(id) && ids.indexOf(id) === -1) ids.push(id);
+      });
+
+      function sync() {
+        var line = scrollY + (masthead ? masthead.offsetHeight : 74) + 28;
+        var current = '';
+        ids.forEach(function (id) {
+          var top = document.getElementById(id).getBoundingClientRect().top + scrollY;
+          if (top <= line) current = id;
+        });
+        // clamp to the last section once the page bottoms out
+        if (innerHeight + scrollY >= document.documentElement.scrollHeight - 4) {
+          current = ids[ids.length - 1];
+        }
+        links.forEach(function (a) {
+          a.classList.toggle('is-active', a.getAttribute('href') === '#' + current);
+        });
+      }
+      sync();
+      addEventListener('scroll', sync, { passive: true });
+      addEventListener('resize', sync);
+    })();
+
+    // Booking dock: rises once the hero screens are behind you, retires when
+    // the closing CTA arrives so the two never compete.
+    (function () {
+      var dock = document.getElementById('dock');
+      var after = document.querySelector('.hero-visual');
+      var until = document.querySelector('.cta-banner');
+      if (!dock || !after || !until) return;
+
+      function sync() {
+        var past = scrollY > after.getBoundingClientRect().bottom + scrollY - 120;
+        var landed = until.getBoundingClientRect().top < innerHeight - 40;
+        dock.classList.toggle('is-up', past && !landed);
+      }
+      sync();
+      addEventListener('scroll', sync, { passive: true });
+      addEventListener('resize', sync);
+    })();
+
+    // Hero screens: a plain row on desktop, a snap carousel once it overflows.
+    // Dots mirror scroll position and can drive it; vertical scrolling is never
+    // intercepted, so the page still behaves normally under a thumb.
+    (function () {
+      var strip = document.getElementById('shots');
+      var dots = document.getElementById('shotDots');
+      if (!strip || !dots) return;
+
+      var slides = [].slice.call(strip.querySelectorAll('.shot'));
+      slides.forEach(function (slide, i) {
+        var b = document.createElement('button');
+        b.type = 'button';
+        b.className = 'shot-dot' + (i === 0 ? ' is-active' : '');
+        b.setAttribute('aria-label', 'Show screen ' + (i + 1) + ' of ' + slides.length);
+        b.addEventListener('click', function () {
+          strip.scrollTo({ left: slide.offsetLeft - strip.offsetLeft, behavior: 'smooth' });
+        });
+        dots.appendChild(b);
+      });
+
+      var buttons = [].slice.call(dots.children);
+      var ticking = false;
+      strip.addEventListener('scroll', function () {
+        if (ticking) return;
+        ticking = true;
+        requestAnimationFrame(function () {
+          var nearest;
+          if (strip.scrollLeft + strip.clientWidth >= strip.scrollWidth - 2) {
+            nearest = slides.length - 1;          // pinned at the end
+          } else {
+            var mid = strip.scrollLeft + strip.clientWidth / 2;
+            var best = Infinity;
+            nearest = 0;
+            slides.forEach(function (slide, i) {
+              var d = Math.abs(slide.offsetLeft + slide.clientWidth / 2 - mid);
+              if (d < best) { best = d; nearest = i; }
+            });
+          }
+          buttons.forEach(function (b, i) {
+            b.classList.toggle('is-active', i === nearest);
+          });
+          ticking = false;
+        });
+      }, { passive: true });
+    })();
+
+    var reveals = document.querySelectorAll('.reveal');
+    if (matchMedia('(prefers-reduced-motion: reduce)').matches || !('IntersectionObserver' in window)) {
+      // leave everything in its default visible state
+    } else {
+      document.documentElement.classList.add('js');
+      var io = new IntersectionObserver(function (entries) {
+        entries.forEach(function (entry) {
+          if (entry.isIntersecting) {
+            entry.target.classList.add('is-in');
+            io.unobserve(entry.target);
+          }
+        });
+      }, { rootMargin: '0px 0px -8% 0px', threshold: 0.06 });
+      reveals.forEach(function (el) { io.observe(el); });
+    }
+  </script>
+
+  <script type="application/ld+json">
+  {
+    "@context": "https://schema.org",
+    "@graph": [
+      {
+        "@type": "Organization",
+        "@id": "https://vegy.app/#org",
+        "name": "After Dark Labs",
+        "url": "https://afterdarklabs.io/",
+        "email": "[email protected]",
+        "telephone": "+1-954-621-8027",
+        "description": "After Dark Labs builds and operates Vegy, a white-labeled wholesale ordering platform for produce, meat, and specialty food distributors."
+      },
+      {
+        "@type": "SoftwareApplication",
+        "name": "Vegy",
+        "applicationCategory": "BusinessApplication",
+        "operatingSystem": "Web, iOS, Android",
+        "publisher": { "@id": "https://vegy.app/#org" },
+        "description": "Wholesale ordering software with customer-specific pricing tiers, order minimums, white-labeled iOS and Android apps, voice and text ordering, and QuickBooks sync.",
+        "offers": {
+          "@type": "Offer",
+          "price": "599",
+          "priceCurrency": "USD",
+          "description": "$599 per month platform fee, plus $0.25 per AI-processed order (voice, text, and web).",
+          "priceSpecification": {
+            "@type": "UnitPriceSpecification",
+            "price": "599",
+            "priceCurrency": "USD",
+            "referenceQuantity": {
+              "@type": "QuantitativeValue",
+              "value": "1",
+              "unitCode": "MON"
+            }
+          }
+        }
+      },
+      {
+        "@type": "FAQPage",
+        "mainEntity": [
+          {
+            "@type": "Question",
+            "name": "My customers aren't tech people. Will they really use this?",
+            "acceptedAnswer": {
+              "@type": "Answer",
+              "text": "Most of them reorder the same twenty items every week, and that's the case Vegy is built around — their last order is on the first screen, and reordering is a few taps. For the holdouts, voice and text ordering means they keep calling and texting exactly like they do now. The difference is that it lands in your system as a structured, priced order instead of in someone's inbox."
+            }
+          },
+          {
+            "@type": "Question",
+            "name": "What about the customers who insist on calling?",
+            "acceptedAnswer": {
+              "@type": "Answer",
+              "text": "Keep taking their calls. Your team enters the order on their behalf and it goes through the same pricing, minimums, and QuickBooks sync as everything else. Nobody gets cut off — you just stop re-keying the ones who don't need to call."
+            }
+          },
+          {
+            "@type": "Question",
+            "name": "Do I have to leave QuickBooks?",
+            "acceptedAnswer": {
+              "@type": "Answer",
+              "text": "No. Vegy creates and updates customers, items, and invoices in QuickBooks for you. It does not post journal entries, recognize revenue, or reconcile your books — your accountant's workflow stays exactly where it is. Already on a different ERP? Custom integrations are part of what we scope on the demo call."
+            }
+          },
+          {
+            "@type": "Question",
+            "name": "How long does setup take?",
+            "acceptedAnswer": {
+              "@type": "Answer",
+              "text": "We do the catalog import — your item list, pack sizes, and price tiers — so the work on your side is mostly reviewing what we loaded and approving the branding. Timeline depends on how many items and accounts you're bringing over."
+            }
+          },
+          {
+            "@type": "Question",
+            "name": "Who owns my customer list and pricing?",
+            "acceptedAnswer": {
+              "@type": "Answer",
+              "text": "You do. Each wholesaler runs their own instance, and Vegy processes that data on your behalf as your service provider — your accounts, your pricing, your order history."
+            }
+          },
+          {
+            "@type": "Question",
+            "name": "What does it actually cost?",
+            "acceptedAnswer": {
+              "@type": "Answer",
+              "text": "$599 a month for the platform, plus 25¢ for every order our AI takes for you by voice, text, or web. We don't take a percentage of your sales — a $4,000 order and a $400 order cost you exactly the same. Where you land depends on item count, number of accounts, and whether you need a custom ERP integration."
+            }
+          }
+        ]
+      }
+    ]
+  }
+  </script>
+
+<script>addEventListener('load',function(){setTimeout(function(){
+  var d=document.getElementById('dock');
+  d.classList.add('is-up');
+  requestAnimationFrame(function(){
+    setTimeout(function(){
+      var r=d.getBoundingClientRect();
+      var tag=document.createElement('div');
+      tag.style.cssText='position:fixed;top:0;left:0;z-index:99999;background:#ff0;color:#000;font:12px monospace;padding:4px';
+      tag.textContent='dock rect top='+Math.round(r.top)+' bottom='+Math.round(r.bottom)+' vh='+innerHeight+' cls='+d.className;
+      document.body.appendChild(tag);
+    },400);
+  });
+},600)});</script></body>
+</html>
diff --git a/docs/_probe.html b/docs/_probe.html
new file mode 100644
index 0000000..fbc17d8
--- /dev/null
+++ b/docs/_probe.html
@@ -0,0 +1,979 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta name="viewport" content="width=device-width, initial-scale=1" />
+  <title>Vegy — Wholesale ordering software for food distributors</title>
+  <meta name="description" content="Vegy puts your wholesale catalog on your customers' phones under your own brand. Customer-specific pricing, order minimums, iOS and Android apps, and QuickBooks sync. $599/mo flat — no revenue share. Book a demo." />
+  <link rel="canonical" href="https://vegy.app/" />
+
+  <meta property="og:type" content="website" />
+  <meta property="og:url" content="https://vegy.app/" />
+  <meta property="og:site_name" content="Vegy" />
+  <meta property="og:title" content="Vegy — Wholesale ordering software for food distributors" />
+  <meta property="og:description" content="Your catalog, your brand, your pricing — on your customers' phones. Orders arrive priced-out and synced to QuickBooks." />
+  <meta property="og:image" content="https://vegy.app/shot-catalog.png" />
+  <meta name="twitter:card" content="summary_large_image" />
+  <meta name="theme-color" content="#16a34a" />
+
+  <link rel="icon" href="favicon.svg" type="image/svg+xml" />
+  <link rel="apple-touch-icon" href="shot-catalog.png" />
+
+  <link rel="preconnect" href="https://fonts.googleapis.com" />
+  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
+  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=Inter:wght@400;500;600;700&display=swap" />
+  <link rel="stylesheet" href="styles.css" />
+</head>
+
+<body>
+
+  <header class="masthead" id="masthead">
+    <div class="wrap">
+      <a class="wordmark" href="/">
+        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+          <path d="M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z" />
+          <path d="M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12" />
+        </svg>
+        Vegy
+      </a>
+
+      <nav class="nav-links" aria-label="Primary">
+        <a href="#why">Why Vegy</a>
+        <a href="#how">How it works</a>
+        <a href="#features">Features</a>
+        <a href="#pricing">Pricing</a>
+        <a href="#faq">FAQ</a>
+      </nav>
+
+      <a class="btn btn-primary btn-sm" href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">
+        Book a demo
+      </a>
+      <button class="nav-toggle" id="navToggle" type="button"
+              aria-expanded="false" aria-controls="mobileNav" aria-label="Open menu">
+        <span></span><span></span><span></span>
+      </button>
+    </div>
+    <nav class="mobile-nav" id="mobileNav" aria-label="Mobile">
+      <a class="m-link" href="#why">Why Vegy</a>
+      <a class="m-link" href="#how">How it works</a>
+      <a class="m-link" href="#features">Features</a>
+      <a class="m-link" href="#pricing">Pricing</a>
+      <a class="m-link" href="#faq">FAQ</a>
+      <a class="btn btn-primary" href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">Book a demo</a>
+    </nav>
+  </header>
+
+  <main>
+
+    <!-- ── Hero ─────────────────────────────────────────────────────────── -->
+    <section class="hero">
+      <div class="wrap">
+        <div class="hero-copy">
+          <span class="eyebrow">For produce, meat &amp; specialty food distributors</span>
+
+          <h1 class="h-xl">Take orders<br /><span class="accent">in your sleep</span>.</h1>
+
+          <p class="lede">
+            Vegy puts your full catalog — your brand, your pricing, your minimums — on
+            your customers' phones. They order whenever they think of it. You wake up to
+            priced-out orders that are already in QuickBooks.
+          </p>
+
+          <div class="cta-row center">
+            <a class="btn btn-primary" href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">
+              Book a demo <span class="arrow" aria-hidden="true">→</span>
+            </a>
+            <a class="btn btn-outline" href="#how">See how it works</a>
+          </div>
+
+          <p class="hero-note">
+            White-labeled · Web, iOS &amp; Android · Order by text · QuickBooks sync
+          </p>
+        </div>
+
+        <div class="hero-visual">
+          <div class="shots" id="shots" tabindex="0" role="group"
+               aria-label="Vegy product screens — scroll sideways to see all four">
+          <figure class="shot">
+            <img src="shot-catalog.webp" width="476" height="871" fetchpriority="high"
+                 alt="Your storefront on a customer's phone: produce by the case and by the each, with pricing, quantity steppers and a running cart total." />
+          </figure>
+          <figure class="shot">
+            <img src="shot-order.webp" width="476" height="871" fetchpriority="low" loading="lazy"
+                 alt="An incoming order: customer and delivery details, order notes, priced line items, and buttons to print a pull slip, export CSV, or convert it to an invoice." />
+          </figure>
+          <figure class="shot">
+            <img src="shot-deliveries.webp" width="476" height="871" fetchpriority="low" loading="lazy"
+                 alt="The day's deliveries: every order for the date with its status, order number, and QuickBooks connection state." />
+          </figure>
+          <figure class="shot">
+            <img src="shot-dashboard.webp" width="476" height="871" fetchpriority="low" loading="lazy"
+                 alt="An instance dashboard under the distributor's own branding, with quick actions for new orders, AI orders, items, accounts and price lists." />
+          </figure>
+          </div>
+          <div class="shot-dots" id="shotDots"></div>
+        </div>
+
+        <div class="trust">
+          <p class="eyebrow">Running on Vegy today</p>
+          <div class="trust-logos">
+            <img src="gardenfresh.webp" width="437" height="132" loading="lazy"
+                 alt="Garden Fresh Produce LLC" />
+            <span class="trust-sep" aria-hidden="true"></span>
+            <img src="prima.webp" width="315" height="132" loading="lazy"
+                 alt="Prima Produce" />
+          </div>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── Why Vegy: the problem, paired with the fix ───────────────────── -->
+    <section class="section band-soft" id="why">
+      <div class="wrap">
+        <div class="section-head center reveal">
+          <span class="eyebrow">Why Vegy</span>
+          <h2 class="h-lg">Every order still gets typed in by hand</h2>
+          <p class="lede">
+            Orders reach you a different way every time, and one person turns all of
+            them into something the warehouse can pull. Here is what changes, line by
+            line.
+          </p>
+        </div>
+
+        <div class="swap reveal">
+          <div class="swap-head">
+            <span>How it arrives today</span>
+            <span aria-hidden="true"></span>
+            <span class="is-vegy">What Vegy does with it</span>
+          </div>
+
+          <div class="swap-row">
+            <div class="swap-from">
+              <span class="cell-label">How it arrives today</span>
+              <span class="chan">Voicemail · 11:40 PM</span>
+              <p>&ldquo;Hey it&rsquo;s Mike, give me the usual plus a couple cases of romaine, uh — call me back.&rdquo;</p>
+            </div>
+            <div class="swap-arrow" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></div>
+            <div class="swap-to">
+              <span class="cell-label">What Vegy does with it</span>
+              <p>Vegy&rsquo;s AI picks up, turns the call into a structured order on Mike&rsquo;s account, and prices it against his tier. It&rsquo;s waiting for you at 6am.</p>
+            </div>
+          </div>
+          <div class="swap-row">
+            <div class="swap-from">
+              <span class="cell-label">How it arrives today</span>
+              <span class="chan">Text message</span>
+              <p>&ldquo;4 tomato, 2 onion, 6 lettuce&rdquo; — no pack sizes, no case counts, no account.</p>
+            </div>
+            <div class="swap-arrow" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></div>
+            <div class="swap-to">
+              <span class="cell-label">What Vegy does with it</span>
+              <p>The same text comes back as real line items from your catalog, with your pack sizes and case counts already attached.</p>
+            </div>
+          </div>
+          <div class="swap-row">
+            <div class="swap-from">
+              <span class="cell-label">How it arrives today</span>
+              <span class="chan">Email · PDF attached</span>
+              <p>An order sheet from 2019, with prices that expired two seasons ago.</p>
+            </div>
+            <div class="swap-arrow" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></div>
+            <div class="swap-to">
+              <span class="cell-label">What Vegy does with it</span>
+              <p>They order from your live catalog instead, so the price is whatever their tier says today — and minimums are checked at checkout.</p>
+            </div>
+          </div>
+          <div class="swap-row">
+            <div class="swap-from">
+              <span class="cell-label">How it arrives today</span>
+              <span class="chan">Then, every time</span>
+              <p>Someone re-keys all of it by hand before the pull sheets go out. That&rsquo;s where the shorts come from, and the wrong pack sizes, and the credits.</p>
+            </div>
+            <div class="swap-arrow" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></div>
+            <div class="swap-to">
+              <span class="cell-label">What Vegy does with it</span>
+              <p>Nothing gets typed twice. The order syncs into QuickBooks as a customer, items, and an invoice, and the pull sheet prints itself.</p>
+            </div>
+          </div>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── How it works ─────────────────────────────────────────────────── -->
+    <section class="section" id="how">
+      <div class="wrap">
+        <div class="section-head center reveal">
+          <span class="eyebrow">How it works</span>
+          <h2 class="h-lg">Three steps, and the phone stops ringing</h2>
+        </div>
+
+        <div class="rows">
+          <div class="row reveal">
+            <div class="row-text">
+              <span class="eyebrow">Step 01</span>
+              <h3 class="h-md">We load your catalog</h3>
+              <p>
+                Your item list, pack sizes, categories, and price tiers get imported for
+                you — nothing gets rebuilt by hand. Then it's your logo, your product
+                photos, your category names, on your own domain.
+              </p>
+            </div>
+            <div class="row-visual">
+              <div class="mock">
+                <div class="mock-head"><span>Your catalog</span><span class="tag">Imported</span></div>
+                <div class="mock-body">
+                  <div class="mock-line"><span>Artichoke 12CT</span><span class="pack">Case</span><span class="price">$71.82</span></div>
+                  <div class="mock-line"><span>Arugula, Baby 2/1.5lb</span><span class="pack">Case</span><span class="price">$22.28</span></div>
+                  <div class="mock-line"><span>Romaine Hearts 12CT</span><span class="pack">Case</span><span class="price">$43.89</span></div>
+                  <div class="mock-line"><span>Tomato, Roma 25lb</span><span class="pack">Case</span><span class="price">$31.40</span></div>
+                </div>
+              </div>
+            </div>
+          </div>
+
+          <div class="row is-flipped reveal">
+            <div class="row-text">
+              <span class="eyebrow">Step 02</span>
+              <h3 class="h-md">Your customers order</h3>
+              <p>
+                From your website, your own iOS and Android app, or straight over voice
+                and text. Last week's order is right there, so a reorder takes seconds
+                instead of a phone call — at 11pm, on a Sunday, from a walk-in cooler.
+              </p>
+            </div>
+            <div class="row-visual">
+              <div class="mock">
+                <div class="mock-head"><span>Sunrise Cafe · Tuesday</span><span class="tag">Tier 2</span></div>
+                <div class="mock-body">
+                  <div class="mock-line"><span>Artichoke 12CT</span><span class="pack">2 cases</span><span class="price">$143.64</span></div>
+                  <div class="mock-line"><span>Arugula, Baby 2/1.5lb</span><span class="pack">6 cases</span><span class="price">$133.68</span></div>
+                  <div class="mock-line"><span>Romaine Hearts 12CT</span><span class="pack">4 cases</span><span class="price">$175.56</span></div>
+                </div>
+                <div class="mock-foot"><span>Order total</span><span class="amt">$452.88</span></div>
+              </div>
+            </div>
+          </div>
+
+          <div class="row reveal">
+            <div class="row-text">
+              <span class="eyebrow">Step 03</span>
+              <h3 class="h-md">You get a clean order</h3>
+              <p>
+                Priced against that customer's tier, checked against your minimums, and
+                synced to QuickBooks or your ERP. Print pull sheets, route lists, and
+                price lists straight from it.
+              </p>
+            </div>
+            <div class="row-visual">
+              <div class="mock">
+                <div class="mock-head"><span>QuickBooks</span><span class="tag">Synced 6:02 AM</span></div>
+                <div class="mock-body">
+                  <div class="mock-line"><span>Customer record</span><span class="price ok">Updated</span></div>
+                  <div class="mock-line"><span>Items &amp; pack sizes</span><span class="price ok">Updated</span></div>
+                  <div class="mock-line"><span>Invoice #4417</span><span class="price ok">Created</span></div>
+                  <div class="mock-line"><span>Pull sheet</span><span class="price ok">Ready</span></div>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── Feature grid ─────────────────────────────────────────────────── -->
+    <section class="section band-soft" id="features">
+      <div class="wrap">
+        <div class="section-head center reveal">
+          <span class="eyebrow">Features</span>
+          <h2 class="h-lg">The rest of what the ordering desk was doing</h2>
+          <p class="lede">
+            Case pricing, customer tiers, minimums, and the paperwork your warehouse runs
+            on — not a retail cart with a wholesale sticker on it.
+          </p>
+        </div>
+
+        <div class="cards reveal">
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <rect x="5" y="2" width="14" height="20" rx="2.5" /><path d="M12 18h.01" />
+              </svg>
+            </div>
+            <h3 class="h-sm">Order from anywhere</h3>
+            <p>
+              Your own website, mobile web, native iOS and Android apps, or AI-powered
+              ordering by voice and text for customers who will never open an app.
+            </p>
+          </article>
+
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <path d="M12.6 2.6 21 11a2 2 0 0 1 0 2.8l-7.2 7.2a2 2 0 0 1-2.8 0L3 12.6V4a1 1 0 0 1 1-1h8.6Z" /><path d="M7.5 7.5h.01" />
+              </svg>
+            </div>
+            <h3 class="h-sm">Pricing that knows the customer</h3>
+            <p>
+              Customer-specific pricing tiers and contract pricing applied automatically,
+              plus per-account order minimums enforced at checkout.
+            </p>
+          </article>
+
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <path d="M3 17l6-6 4 4 8-8" /><path d="M17 7h4v4" />
+              </svg>
+            </div>
+            <h3 class="h-sm">Bigger orders, on purpose</h3>
+            <p>
+              Promote featured items, push new products in front of the right accounts,
+              and let favorites and one-tap reorder do the rest.
+            </p>
+          </article>
+
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <path d="M21 12a9 9 0 0 1-15.5 6.2L3 16" /><path d="M3 12a9 9 0 0 1 15.5-6.2L21 8" /><path d="M3 21v-5h5" /><path d="M21 3v5h-5" />
+              </svg>
+            </div>
+            <h3 class="h-sm">QuickBooks &amp; ERP sync</h3>
+            <p>
+              Customers, items, and invoices flow into QuickBooks or your existing ERP.
+              No double entry, no end-of-day export ritual.
+            </p>
+          </article>
+
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <path d="M14 2H6.5A1.5 1.5 0 0 0 5 3.5v17A1.5 1.5 0 0 0 6.5 22h11a1.5 1.5 0 0 0 1.5-1.5V7Z" /><path d="M14 2v5h5" /><path d="M9 13h6" /><path d="M9 17h4" />
+              </svg>
+            </div>
+            <h3 class="h-sm">Paperwork in one click</h3>
+            <p>
+              Pull sheets, price lists, and sales reports export instantly — in the format
+              your warehouse and your bookkeeper already expect.
+            </p>
+          </article>
+
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <path d="M2 7h11v10H2z" /><path d="M13 10h4.5l3.5 3.5V17h-8" /><circle cx="7" cy="18.5" r="1.8" /><circle cx="17" cy="18.5" r="1.8" />
+              </svg>
+            </div>
+            <h3 class="h-sm">Inventory &amp; delivery tracking</h3>
+            <p>
+              Keep inventory and payment status attached to the order, and track
+              deliveries through to the door without a second system.
+            </p>
+          </article>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── Dark: differentiators ────────────────────────────────────────── -->
+    <section class="section band-dark">
+      <div class="wrap">
+        <div class="section-head reveal">
+          <span class="eyebrow">Where Vegy is different</span>
+          <h2 class="h-lg">Your brand in front, your books untouched</h2>
+          <p class="lede">
+            Vegy runs underneath your business — it doesn't put itself between you and
+            your customers, or between you and your accountant.
+          </p>
+        </div>
+
+        <div class="rows">
+          <div class="row reveal">
+            <div class="row-text">
+              <h3 class="h-md">It's your name on it, not ours</h3>
+              <p style="color:rgba(255,255,255,.72)">
+                Your customers download your app, from your listing, and see your logo
+                when it opens. Nobody has to know there's a software vendor behind your
+                ordering.
+              </p>
+            </div>
+            <div class="row-visual">
+              <div class="mock">
+                <div class="mock-head"><span>What your customers see</span></div>
+                <div class="mock-body">
+                  <div class="mock-line"><span>App Store listing</span><span class="price ok">Your company</span></div>
+                  <div class="mock-line"><span>Ordering domain</span><span class="price ok">orders.yourco.com</span></div>
+                  <div class="mock-line"><span>Logo &amp; colors</span><span class="price ok">Yours</span></div>
+                  <div class="mock-line"><span>Catalog &amp; photos</span><span class="price ok">Yours</span></div>
+                </div>
+              </div>
+            </div>
+          </div>
+
+          <div class="row is-flipped reveal">
+            <div class="row-text">
+              <h3 class="h-md">Your books stay your books</h3>
+              <p style="color:rgba(255,255,255,.72)">
+                Vegy creates and updates customers, items, and invoices in QuickBooks. It
+                does not post journal entries, recognize revenue, or reconcile — your
+                accountant's workflow stays exactly where it is.
+              </p>
+            </div>
+            <div class="row-visual">
+              <div class="mock">
+                <div class="mock-head"><span>QuickBooks scope</span></div>
+                <div class="mock-body">
+                  <div class="mock-line"><span>Customers, items, invoices</span><span class="price ok">Vegy writes</span></div>
+                  <div class="mock-line"><span>Journal entries</span><span class="price muted-cell">Untouched</span></div>
+                  <div class="mock-line"><span>Revenue recognition</span><span class="price muted-cell">Untouched</span></div>
+                  <div class="mock-line"><span>Reconciliation</span><span class="price muted-cell">Untouched</span></div>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── Pricing ──────────────────────────────────────────────────────── -->
+    <section class="section band-soft" id="pricing">
+      <div class="wrap">
+        <div class="section-head center reveal">
+          <span class="eyebrow">Pricing</span>
+          <h2 class="h-lg">No revenue share. No per-seat games.</h2>
+          <p class="lede">
+            A flat monthly fee, plus a quarter when our AI takes the order for you. A
+            $4,000 order costs you exactly what a $400 order costs you.
+          </p>
+        </div>
+
+        <div class="price-card reveal">
+          <div class="price-row">
+            <div class="price-unit">
+              <p class="price-figure">$599<span class="per">/mo</span></p>
+              <p class="price-cap">Platform fee</p>
+            </div>
+
+            <div class="price-plus" aria-hidden="true">+</div>
+
+            <div class="price-unit">
+              <p class="price-figure">25¢<span class="per">/order</span></p>
+              <p class="price-cap">AI orders — voice, text &amp; web</p>
+            </div>
+          </div>
+
+          <ul class="included">
+            <li>Your white-labeled web storefront and ordering domain</li>
+            <li>Native iOS and Android apps published under your brand</li>
+            <li>Unlimited customer accounts and pricing tiers</li>
+            <li>QuickBooks sync, or integration with your existing ERP</li>
+            <li>Catalog import and account setup, done by us</li>
+            <li>Email and phone support from people who know your instance</li>
+          </ul>
+
+          <p class="price-note">
+            Billed monthly. Final pricing depends on item count, number of accounts, and
+            whether you need a custom ERP integration — you'll get the exact number on
+            the demo call.
+          </p>
+
+          <a class="btn btn-white" style="margin-top:1.8rem"
+             href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">
+            Book a demo <span class="arrow" aria-hidden="true">→</span>
+          </a>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── FAQ ──────────────────────────────────────────────────────────── -->
+    <section class="section" id="faq">
+      <div class="wrap wrap-narrow">
+        <div class="section-head center reveal">
+          <span class="eyebrow">Straight answers</span>
+          <h2 class="h-lg">The questions you're actually asking</h2>
+        </div>
+
+        <div class="faq reveal">
+          <details>
+            <summary>My customers aren't tech people. Will they really use this?</summary>
+            <div class="answer">
+              <p>
+                Most of them reorder the same twenty items every week, and that's the case
+                Vegy is built around — their last order is on the first screen, and
+                reordering is a few taps.
+              </p>
+              <p>
+                For the holdouts, voice and text ordering means they keep calling and
+                texting exactly like they do now. The difference is that it lands in your
+                system as a structured, priced order instead of in someone's inbox.
+              </p>
+            </div>
+          </details>
+
+          <details>
+            <summary>What about the customers who insist on calling?</summary>
+            <div class="answer">
+              <p>
+                Keep taking their calls. Your team enters the order on their behalf and it
+                goes through the same pricing, minimums, and QuickBooks sync as everything
+                else. Nobody gets cut off — you just stop re-keying the ones who don't need
+                to call.
+              </p>
+            </div>
+          </details>
+
+          <details>
+            <summary>Do I have to leave QuickBooks?</summary>
+            <div class="answer">
+              <p>
+                No. Vegy creates and updates customers, items, and invoices in QuickBooks
+                for you. It does not post journal entries, recognize revenue, or reconcile
+                your books — your accountant's workflow stays exactly where it is.
+              </p>
+              <p>
+                Already on a different ERP? Custom integrations are part of what we scope
+                on the demo call.
+              </p>
+            </div>
+          </details>
+
+          <details>
+            <summary>How long does setup take?</summary>
+            <div class="answer">
+              <p>
+                We do the catalog import — your item list, pack sizes, and price tiers — so
+                the work on your side is mostly reviewing what we loaded and approving the
+                branding.
+              </p>
+              <p>
+                Timeline depends on how many items and accounts you're bringing over. Book
+                a demo and we'll scope it against your actual catalog rather than guessing.
+              </p>
+            </div>
+          </details>
+
+          <details>
+            <summary>Who owns my customer list and pricing?</summary>
+            <div class="answer">
+              <p>
+                You do. Each wholesaler runs their own instance, and Vegy processes that
+                data on your behalf as your service provider — your accounts, your pricing,
+                your order history. The details are spelled out in our
+                <a class="link" href="legal.html">Terms &amp; Privacy</a>.
+              </p>
+            </div>
+          </details>
+
+          <details>
+            <summary>What does it actually cost?</summary>
+            <div class="answer">
+              <p>
+                $599 a month for the platform, plus 25¢ for every order our AI takes for
+                you by voice, text, or web. We don't take a percentage of your sales — a
+                $4,000 order and a $400 order cost you exactly the same.
+              </p>
+              <p>
+                Where you land depends on item count, number of accounts, and whether you
+                need a custom ERP integration. You'll get the exact number on the demo
+                call, not a proposal three weeks later.
+              </p>
+            </div>
+          </details>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── Closing CTA ──────────────────────────────────────────────────── -->
+    <section class="cta-banner">
+      <div class="wrap">
+        <h2 class="h-lg">See your own catalog running on it</h2>
+        <p>
+          Send us a price list before the call and we'll load a slice of your real
+          catalog, so you're looking at your own items — not a generic sandbox.
+        </p>
+
+        <div class="cta-row center">
+          <a class="btn btn-white" href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">
+            Book a demo <span class="arrow" aria-hidden="true">→</span>
+          </a>
+          <a class="btn btn-outline" href="mailto:[email protected]">Email [email protected]</a>
+        </div>
+
+        <ul class="expect">
+          <li><span class="n">01</span>We look at how orders reach you today, and where they get re-keyed.</li>
+          <li><span class="n">02</span>You see your items, your tiers, and your minimums inside a live instance.</li>
+          <li><span class="n">03</span>We scope the QuickBooks or ERP connection against your setup.</li>
+          <li><span class="n">04</span>You get a price and a timeline on the call.</li>
+        </ul>
+      </div>
+    </section>
+
+  </main>
+
+  <!-- floats up once the hero screens are past, retires into the closing CTA -->
+  <div class="dock" id="dock">
+    <a class="btn btn-primary" href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">
+      Book a demo <span class="arrow" aria-hidden="true">→</span>
+    </a>
+  </div>
+
+  <footer class="site-footer">
+    <div class="wrap">
+      <div class="footer-grid">
+        <div>
+          <a class="wordmark" href="/">
+            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+              <path d="M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z" />
+              <path d="M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12" />
+            </svg>
+            Vegy
+          </a>
+          <p class="footer-blurb">
+            White-labeled wholesale ordering for produce, meat, and specialty food
+            distributors.
+          </p>
+          <p class="footer-by">
+            Built &amp; operated by
+            <a href="https://afterdarklabs.io" target="_blank" rel="noopener">After Dark Labs</a>
+          </p>
+        </div>
+
+        <div>
+          <h4>Product</h4>
+          <div class="footer-links">
+            <a href="#how">How it works</a>
+            <a href="#features">Features</a>
+            <a href="#pricing">Pricing</a>
+            <a href="#faq">FAQ</a>
+          </div>
+        </div>
+
+        <div>
+          <h4>Contact</h4>
+          <div class="footer-links">
+            <a href="support.html">Support center</a>
+            <a href="mailto:[email protected]">[email protected]</a>
+            <a href="tel:+19546218027">(954) 621-8027</a>
+          </div>
+        </div>
+
+        <div>
+          <h4>Company</h4>
+          <div class="footer-links">
+            <a href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">Book a demo</a>
+            <a href="legal.html">Terms of Use</a>
+            <a href="legal.html#privacy">Privacy Policy</a>
+          </div>
+        </div>
+      </div>
+
+      <div class="footer-base">
+        <span>© <span data-year></span> After Dark Labs. All rights reserved.</span>
+        <span>Built for the people who load the truck at 4am.</span>
+      </div>
+    </div>
+  </footer>
+
+  <script>
+    document.querySelectorAll('[data-year]').forEach(function (el) {
+      el.textContent = new Date().getFullYear();
+    });
+
+    var masthead = document.getElementById('masthead');
+    if (masthead) {
+      var onScroll = function () {
+        masthead.classList.toggle('is-stuck', window.scrollY > 8);
+      };
+      onScroll();
+      addEventListener('scroll', onScroll, { passive: true });
+    }
+
+
+    // Mobile menu
+    (function () {
+      var toggle = document.getElementById('navToggle');
+      var panel = document.getElementById('mobileNav');
+      if (!toggle || !panel) return;
+
+      function setOpen(open) {
+        panel.classList.toggle('is-open', open);
+        toggle.setAttribute('aria-expanded', String(open));
+        toggle.setAttribute('aria-label', open ? 'Close menu' : 'Open menu');
+      }
+
+      toggle.addEventListener('click', function () {
+        setOpen(toggle.getAttribute('aria-expanded') !== 'true');
+      });
+
+      panel.addEventListener('click', function (e) {
+        if (e.target.closest('a')) setOpen(false);
+      });
+
+      addEventListener('keydown', function (e) {
+        if (e.key === 'Escape' && toggle.getAttribute('aria-expanded') === 'true') {
+          setOpen(false);
+          toggle.focus();
+        }
+      });
+
+      // a resize back to desktop should not leave the panel stuck open
+      addEventListener('resize', function () {
+        if (innerWidth > 900) setOpen(false);
+      });
+    })();
+
+    // Nav scroll-spy: highlight whichever section is under the masthead
+    (function () {
+      var links = [].slice.call(
+        document.querySelectorAll('.nav-links a[href^="#"], .mobile-nav .m-link[href^="#"]')
+      );
+      if (!links.length) return;
+
+      var ids = [];
+      links.forEach(function (a) {
+        var id = a.getAttribute('href').slice(1);
+        if (document.getElementById(id) && ids.indexOf(id) === -1) ids.push(id);
+      });
+
+      function sync() {
+        var line = scrollY + (masthead ? masthead.offsetHeight : 74) + 28;
+        var current = '';
+        ids.forEach(function (id) {
+          var top = document.getElementById(id).getBoundingClientRect().top + scrollY;
+          if (top <= line) current = id;
+        });
+        // clamp to the last section once the page bottoms out
+        if (innerHeight + scrollY >= document.documentElement.scrollHeight - 4) {
+          current = ids[ids.length - 1];
+        }
+        links.forEach(function (a) {
+          a.classList.toggle('is-active', a.getAttribute('href') === '#' + current);
+        });
+      }
+      sync();
+      addEventListener('scroll', sync, { passive: true });
+      addEventListener('resize', sync);
+    })();
+
+    // Booking dock: rises once the hero screens are behind you, retires when
+    // the closing CTA arrives so the two never compete.
+    (function () {
+      var dock = document.getElementById('dock');
+      var after = document.querySelector('.hero-visual');
+      var until = document.querySelector('.cta-banner');
+      if (!dock || !after || !until) return;
+
+      function sync() {
+        var past = scrollY > after.getBoundingClientRect().bottom + scrollY - 120;
+        var landed = until.getBoundingClientRect().top < innerHeight - 40;
+        dock.classList.toggle('is-up', past && !landed);
+      }
+      sync();
+      addEventListener('scroll', sync, { passive: true });
+      addEventListener('resize', sync);
+    })();
+
+    // Hero screens: a plain row on desktop, a snap carousel once it overflows.
+    // Dots mirror scroll position and can drive it; vertical scrolling is never
+    // intercepted, so the page still behaves normally under a thumb.
+    (function () {
+      var strip = document.getElementById('shots');
+      var dots = document.getElementById('shotDots');
+      if (!strip || !dots) return;
+
+      var slides = [].slice.call(strip.querySelectorAll('.shot'));
+      slides.forEach(function (slide, i) {
+        var b = document.createElement('button');
+        b.type = 'button';
+        b.className = 'shot-dot' + (i === 0 ? ' is-active' : '');
+        b.setAttribute('aria-label', 'Show screen ' + (i + 1) + ' of ' + slides.length);
+        b.addEventListener('click', function () {
+          strip.scrollTo({ left: slide.offsetLeft - strip.offsetLeft, behavior: 'smooth' });
+        });
+        dots.appendChild(b);
+      });
+
+      var buttons = [].slice.call(dots.children);
+      var ticking = false;
+      strip.addEventListener('scroll', function () {
+        if (ticking) return;
+        ticking = true;
+        requestAnimationFrame(function () {
+          var nearest;
+          if (strip.scrollLeft + strip.clientWidth >= strip.scrollWidth - 2) {
+            nearest = slides.length - 1;          // pinned at the end
+          } else {
+            var mid = strip.scrollLeft + strip.clientWidth / 2;
+            var best = Infinity;
+            nearest = 0;
+            slides.forEach(function (slide, i) {
+              var d = Math.abs(slide.offsetLeft + slide.clientWidth / 2 - mid);
+              if (d < best) { best = d; nearest = i; }
+            });
+          }
+          buttons.forEach(function (b, i) {
+            b.classList.toggle('is-active', i === nearest);
+          });
+          ticking = false;
+        });
+      }, { passive: true });
+    })();
+
+    var reveals = document.querySelectorAll('.reveal');
+    if (matchMedia('(prefers-reduced-motion: reduce)').matches || !('IntersectionObserver' in window)) {
+      // leave everything in its default visible state
+    } else {
+      document.documentElement.classList.add('js');
+      var io = new IntersectionObserver(function (entries) {
+        entries.forEach(function (entry) {
+          if (entry.isIntersecting) {
+            entry.target.classList.add('is-in');
+            io.unobserve(entry.target);
+          }
+        });
+      }, { rootMargin: '0px 0px -8% 0px', threshold: 0.06 });
+      reveals.forEach(function (el) { io.observe(el); });
+    }
+  </script>
+
+  <script type="application/ld+json">
+  {
+    "@context": "https://schema.org",
+    "@graph": [
+      {
+        "@type": "Organization",
+        "@id": "https://vegy.app/#org",
+        "name": "After Dark Labs",
+        "url": "https://afterdarklabs.io/",
+        "email": "[email protected]",
+        "telephone": "+1-954-621-8027",
+        "description": "After Dark Labs builds and operates Vegy, a white-labeled wholesale ordering platform for produce, meat, and specialty food distributors."
+      },
+      {
+        "@type": "SoftwareApplication",
+        "name": "Vegy",
+        "applicationCategory": "BusinessApplication",
+        "operatingSystem": "Web, iOS, Android",
+        "publisher": { "@id": "https://vegy.app/#org" },
+        "description": "Wholesale ordering software with customer-specific pricing tiers, order minimums, white-labeled iOS and Android apps, voice and text ordering, and QuickBooks sync.",
+        "offers": {
+          "@type": "Offer",
+          "price": "599",
+          "priceCurrency": "USD",
+          "description": "$599 per month platform fee, plus $0.25 per AI-processed order (voice, text, and web).",
+          "priceSpecification": {
+            "@type": "UnitPriceSpecification",
+            "price": "599",
+            "priceCurrency": "USD",
+            "referenceQuantity": {
+              "@type": "QuantitativeValue",
+              "value": "1",
+              "unitCode": "MON"
+            }
+          }
+        }
+      },
+      {
+        "@type": "FAQPage",
+        "mainEntity": [
+          {
+            "@type": "Question",
+            "name": "My customers aren't tech people. Will they really use this?",
+            "acceptedAnswer": {
+              "@type": "Answer",
+              "text": "Most of them reorder the same twenty items every week, and that's the case Vegy is built around — their last order is on the first screen, and reordering is a few taps. For the holdouts, voice and text ordering means they keep calling and texting exactly like they do now. The difference is that it lands in your system as a structured, priced order instead of in someone's inbox."
+            }
+          },
+          {
+            "@type": "Question",
+            "name": "What about the customers who insist on calling?",
+            "acceptedAnswer": {
+              "@type": "Answer",
+              "text": "Keep taking their calls. Your team enters the order on their behalf and it goes through the same pricing, minimums, and QuickBooks sync as everything else. Nobody gets cut off — you just stop re-keying the ones who don't need to call."
+            }
+          },
+          {
+            "@type": "Question",
+            "name": "Do I have to leave QuickBooks?",
+            "acceptedAnswer": {
+              "@type": "Answer",
+              "text": "No. Vegy creates and updates customers, items, and invoices in QuickBooks for you. It does not post journal entries, recognize revenue, or reconcile your books — your accountant's workflow stays exactly where it is. Already on a different ERP? Custom integrations are part of what we scope on the demo call."
+            }
+          },
+          {
+            "@type": "Question",
+            "name": "How long does setup take?",
+            "acceptedAnswer": {
+              "@type": "Answer",
+              "text": "We do the catalog import — your item list, pack sizes, and price tiers — so the work on your side is mostly reviewing what we loaded and approving the branding. Timeline depends on how many items and accounts you're bringing over."
+            }
+          },
+          {
+            "@type": "Question",
+            "name": "Who owns my customer list and pricing?",
+            "acceptedAnswer": {
+              "@type": "Answer",
+              "text": "You do. Each wholesaler runs their own instance, and Vegy processes that data on your behalf as your service provider — your accounts, your pricing, your order history."
+            }
+          },
+          {
+            "@type": "Question",
+            "name": "What does it actually cost?",
+            "acceptedAnswer": {
+              "@type": "Answer",
+              "text": "$599 a month for the platform, plus 25¢ for every order our AI takes for you by voice, text, or web. We don't take a percentage of your sales — a $4,000 order and a $400 order cost you exactly the same. Where you land depends on item count, number of accounts, and whether you need a custom ERP integration."
+            }
+          }
+        ]
+      }
+    ]
+  }
+  </script>
+
+
+<script>
+addEventListener('load', function(){
+  setTimeout(function(){
+    var out=[];
+    var mh=document.getElementById('masthead').offsetHeight;
+    out.push('masthead height: '+mh);
+    ['why','how','features','pricing','faq'].forEach(function(id){
+      var el=document.getElementById(id);
+      out.push(id+' scroll-margin-top: '+getComputedStyle(el).scrollMarginTop);
+    });
+    // simulate clicking the Features nav link
+    document.documentElement.style.scrollBehavior='auto';
+    var t=document.getElementById('features');
+    var target=t.getBoundingClientRect().top+scrollY-parseFloat(getComputedStyle(t).scrollMarginTop);
+    scrollTo(0,target);
+    var head=t.querySelector('.section-head');
+    out.push('--- after jumping to #features ---');
+    out.push('section top rel viewport: '+Math.round(t.getBoundingClientRect().top));
+    out.push('heading top rel viewport: '+Math.round(head.getBoundingClientRect().top));
+    out.push('clearance below masthead: '+Math.round(head.getBoundingClientRect().top-mh)+'px');
+    dispatchEvent(new Event('scroll'));
+    var act=[].slice.call(document.querySelectorAll('.nav-links a.is-active')).map(function(a){return a.textContent.trim()});
+    out.push('active nav link: '+(act.join(',')||'(none)'));
+    // dock behaviour
+    var dock=document.getElementById('dock');
+    scrollTo(0,0); dispatchEvent(new Event('scroll'));
+    out.push('--- dock ---');
+    out.push('at top: '+(dock.classList.contains('is-up')?'VISIBLE':'hidden'));
+    scrollTo(0,2000); dispatchEvent(new Event('scroll'));
+    out.push('mid page (2000): '+(dock.classList.contains('is-up')?'VISIBLE':'hidden'));
+    var band=document.querySelector('.cta-banner');
+    scrollTo(0, band.getBoundingClientRect().top+scrollY-innerHeight+200); dispatchEvent(new Event('scroll'));
+    out.push('closing CTA on screen: '+(dock.classList.contains('is-up')?'VISIBLE':'hidden'));
+    scrollTo(0, document.documentElement.scrollHeight); dispatchEvent(new Event('scroll'));
+    out.push('at footer: '+(dock.classList.contains('is-up')?'VISIBLE':'hidden'));
+    var act2=[].slice.call(document.querySelectorAll('.nav-links a.is-active')).map(function(a){return a.textContent.trim()});
+    out.push('active nav at bottom: '+(act2.join(',')||'(none)'));
+    scrollTo(0,0);
+    var pre=document.createElement('pre');
+    pre.style.cssText='position:fixed;inset:0;z-index:9999;background:#fff;color:#000;font:14px monospace;padding:20px;margin:0;white-space:pre-wrap';
+    pre.textContent=out.join('\n');
+    document.body.appendChild(pre);
+  },600);
+});
+</script>
+</body>
+</html>
diff --git a/docs/favicon.svg b/docs/favicon.svg
new file mode 100644
index 0000000..1dc6688
--- /dev/null
+++ b/docs/favicon.svg
@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+  <rect width="32" height="32" rx="7" fill="#16a34a"/>
+  <g fill="none" stroke="#ffffff" stroke-width="2.1" stroke-linecap="round" stroke-linejoin="round">
+    <path d="M15 24a7.6 7.6 0 0 1-1.3-15.2C19.8 7.6 21.4 7 23.6 4.4c1.1 2.2 2.2 4.5 2.2 8.7 0 6-5.2 10.9-10.8 10.9Z"/>
+    <path d="M5.2 25.6c0-3.3 2-5.8 5.5-6.5 2.6-.5 5.4-2.2 6.5-3.3"/>
+  </g>
+</svg>
diff --git a/docs/gardenfresh.webp b/docs/gardenfresh.webp
new file mode 100644
index 0000000..b5f864d
Binary files /dev/null and b/docs/gardenfresh.webp differ
diff --git a/docs/index.html b/docs/index.html
index 48523ec..f068d2b 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -2,191 +2,931 @@
 <html lang="en">
 <head>
   <meta charset="UTF-8" />
-  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-  <title>Vegy — Simplify Wholesale Ordering</title>
-  <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;600;800&display=swap" rel="stylesheet" />
-  <script src="https://cdn.tailwindcss.com"></script>
-
-  <style>
-    :root{
-      /* PROFESSIONAL TEAL (mature, not “mint”) */
-      --vegy-primary:#0f766e;       /* teal-700 */
-      --vegy-primary-dark:#115e59;  /* teal-800 */
-      --vegy-primary-soft: rgba(15,118,110,.10);
-
-      /* professional neutrals */
-      --bg:#f8fafc;          /* slate-50 */
-      --card:#ffffff;
-      --text:#0f172a;        /* slate-900 */
-      --muted:#64748b;       /* slate-500 */
-      --border:rgba(15,23,42,.08);
-
-      /* glass */
-      --glass: rgba(255,255,255,.78);
-      --glass-soft: rgba(255,255,255,.62);
-      --shadow: 0 20px 60px rgba(15,23,42,.12);
-    }
-
-    html, body { height: 100%; }
-    body {
-      font-family: "Poppins", system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
-      background: var(--bg);
-      color: var(--text);
-      overflow-x: hidden;
-    }
+  <meta name="viewport" content="width=device-width, initial-scale=1" />
+  <title>Vegy — Wholesale ordering software for food distributors</title>
+  <meta name="description" content="Vegy puts your wholesale catalog on your customers' phones under your own brand. Customer-specific pricing, order minimums, iOS and Android apps, and QuickBooks sync. $599/mo flat — no revenue share. Book a demo." />
+  <link rel="canonical" href="https://vegy.app/" />
 
-    /* subtle highlights (teal + neutral) */
-    .blob {
-      position: absolute;
-      width: 720px;
-      height: 720px;
-      border-radius: 9999px;
-      filter: blur(110px);
-      opacity: .14;
-      background: rgba(15,118,110,.28);
-      pointer-events: none;
-    }
-    .blob.b2{
-      width: 600px;
-      height: 600px;
-      opacity: .10;
-      background: rgba(2,132,199,.20); /* tiny cool tint for depth */
-    }
+  <meta property="og:type" content="website" />
+  <meta property="og:url" content="https://vegy.app/" />
+  <meta property="og:site_name" content="Vegy" />
+  <meta property="og:title" content="Vegy — Wholesale ordering software for food distributors" />
+  <meta property="og:description" content="Your catalog, your brand, your pricing — on your customers' phones. Orders arrive priced-out and synced to QuickBooks." />
+  <meta property="og:image" content="https://vegy.app/shot-catalog.png" />
+  <meta name="twitter:card" content="summary_large_image" />
+  <meta name="theme-color" content="#16a34a" />
 
-    /* glass */
-    .glass {
-      background: var(--glass);
-      backdrop-filter: blur(18px) saturate(160%);
-      -webkit-backdrop-filter: blur(18px) saturate(160%);
-      box-shadow: var(--shadow);
-    }
+  <link rel="icon" href="favicon.svg" type="image/svg+xml" />
+  <link rel="apple-touch-icon" href="shot-catalog.png" />
 
-    /* animation */
-    .animate-fade-up { animation: fadeUp .7s cubic-bezier(.2,.8,.2,1) both; }
-    @keyframes fadeUp {
-      from { opacity: 0; transform: translateY(12px); }
-      to { opacity: 1; transform: translateY(0); }
-    }
-    .floaty { animation: floaty 6s ease-in-out infinite; }
-    @keyframes floaty {
-      0%,100%{ transform: translateY(0); }
-      50%{ transform: translateY(-8px); }
-    }
-
-    a:focus-visible, button:focus-visible {
-      outline: 2px solid var(--vegy-primary);
-      outline-offset: 3px;
-      border-radius: 12px;
-    }
-  </style>
+  <link rel="preconnect" href="https://fonts.googleapis.com" />
+  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
+  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=Inter:wght@400;500;600;700&display=swap" />
+  <link rel="stylesheet" href="styles.css" />
 </head>
 
 <body>
 
-  <!-- subtle highlights -->
-  <div class="blob" style="top:-280px; left:-260px;"></div>
-  <div class="blob b2" style="top:-260px; right:-260px;"></div>
-
-  <!-- Nav -->
-  <nav class="fixed top-0 inset-x-0 z-20">
-    <div class="max-w-6xl mx-auto px-4 pt-4">
-      <div class="glass rounded-2xl px-4 md:px-6 py-3 flex items-center justify-between">
-        <a href="https://vegy.app/" class="text-2xl font-extrabold tracking-tight" style="color:var(--vegy-primary)">
-          Vegy
-        </a>
-
-        <a href="https://calendly.com/hello-vegy/demo" target="_blank"
-           class="px-4 py-2 rounded-xl text-white font-semibold transition"
-           style="background:var(--vegy-primary)"
-           onmouseover="this.style.background='var(--vegy-primary-dark)'"
-           onmouseout="this.style.background='var(--vegy-primary)'">
-          Book a Demo
-        </a>
-      </div>
+  <header class="masthead" id="masthead">
+    <div class="wrap">
+      <a class="wordmark" href="/">
+        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+          <path d="M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z" />
+          <path d="M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12" />
+        </svg>
+        Vegy
+      </a>
+
+      <nav class="nav-links" aria-label="Primary">
+        <a href="#why">Why Vegy</a>
+        <a href="#how">How it works</a>
+        <a href="#features">Features</a>
+        <a href="#pricing">Pricing</a>
+        <a href="#faq">FAQ</a>
+      </nav>
+
+      <a class="btn btn-primary btn-sm" href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">
+        Book a demo
+      </a>
+      <button class="nav-toggle" id="navToggle" type="button"
+              aria-expanded="false" aria-controls="mobileNav" aria-label="Open menu">
+        <span></span><span></span><span></span>
+      </button>
     </div>
-  </nav>
-
-  <!-- Hero -->
-  <section class="min-h-screen flex items-center justify-center pt-28 pb-16 relative z-10">
-    <div class="max-w-6xl mx-auto px-4">
-      <div class="grid grid-cols-1 lg:grid-cols-12 gap-12 items-center">
-
-        <!-- Copy -->
-        <div class="lg:col-span-6 space-y-6">
-          <h1 class="text-4xl md:text-6xl font-extrabold leading-tight tracking-tight animate-fade-up">
-            Wholesale ordering,
-            <span style="color:var(--vegy-primary)">done right.</span>
-          </h1>
-
-          <p class="text-lg md:text-xl max-w-xl animate-fade-up" style="animation-delay:.1s; color:var(--muted)">
-            A professional, white-labeled ordering platform built for real wholesale businesses.
+    <nav class="mobile-nav" id="mobileNav" aria-label="Mobile">
+      <a class="m-link" href="#why">Why Vegy</a>
+      <a class="m-link" href="#how">How it works</a>
+      <a class="m-link" href="#features">Features</a>
+      <a class="m-link" href="#pricing">Pricing</a>
+      <a class="m-link" href="#faq">FAQ</a>
+      <a class="btn btn-primary" href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">Book a demo</a>
+    </nav>
+  </header>
+
+  <main>
+
+    <!-- ── Hero ─────────────────────────────────────────────────────────── -->
+    <section class="hero">
+      <div class="wrap">
+        <div class="hero-copy">
+          <span class="eyebrow">For produce, meat &amp; specialty food distributors</span>
+
+          <h1 class="h-xl">Take orders<br /><span class="accent">in your sleep</span>.</h1>
+
+          <p class="lede">
+            Vegy puts your full catalog — your brand, your pricing, your minimums — on
+            your customers' phones. They order whenever they think of it. You wake up to
+            priced-out orders that are already in QuickBooks.
           </p>
 
-          <div class="animate-fade-up" style="animation-delay:.15s">
-            <a href="https://calendly.com/hello-vegy/demo" target="_blank"
-               class="inline-block px-6 py-3 rounded-2xl text-white font-semibold transition"
-               style="background:var(--vegy-primary)"
-               onmouseover="this.style.background='var(--vegy-primary-dark)'"
-               onmouseout="this.style.background='var(--vegy-primary)'">
-              See your catalog live, book a demo today
+          <div class="cta-row center">
+            <a class="btn btn-primary" href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">
+              Book a demo <span class="arrow" aria-hidden="true">→</span>
             </a>
+            <a class="btn btn-outline" href="#how">See how it works</a>
           </div>
 
-          <!-- Feature list (OG copy) -->
-          <div class="pt-4 space-y-4 animate-fade-up" style="animation-delay:.2s">
-            <div class="p-4 rounded-2xl bg-white shadow-sm">
-              <div class="font-semibold text-sm">Accept orders anytime, and anyhow</div>
-              <div class="text-sm mt-1" style="color:var(--muted)">
-                Let customers order via your own website, mobile, iOS/Android apps, or AI-powered text messaging. Reorders take seconds.
+          <p class="hero-note">
+            White-labeled · Web, iOS &amp; Android · Order by text · QuickBooks sync
+          </p>
+        </div>
+
+        <div class="hero-visual">
+          <div class="shots" id="shots" tabindex="0" role="group"
+               aria-label="Vegy product screens — scroll sideways to see all four">
+          <figure class="shot">
+            <img src="shot-catalog.webp" width="476" height="871" fetchpriority="high"
+                 alt="Your storefront on a customer's phone: produce by the case and by the each, with pricing, quantity steppers and a running cart total." />
+          </figure>
+          <figure class="shot">
+            <img src="shot-order.webp" width="476" height="871" fetchpriority="low" loading="lazy"
+                 alt="An incoming order: customer and delivery details, order notes, priced line items, and buttons to print a pull slip, export CSV, or convert it to an invoice." />
+          </figure>
+          <figure class="shot">
+            <img src="shot-deliveries.webp" width="476" height="871" fetchpriority="low" loading="lazy"
+                 alt="The day's deliveries: every order for the date with its status, order number, and QuickBooks connection state." />
+          </figure>
+          <figure class="shot">
+            <img src="shot-dashboard.webp" width="476" height="871" fetchpriority="low" loading="lazy"
+                 alt="An instance dashboard under the distributor's own branding, with quick actions for new orders, AI orders, items, accounts and price lists." />
+          </figure>
+          </div>
+          <div class="shot-dots" id="shotDots"></div>
+        </div>
+
+        <div class="trust">
+          <p class="eyebrow">Running on Vegy today</p>
+          <div class="trust-logos">
+            <img src="gardenfresh.webp" width="437" height="132" loading="lazy"
+                 alt="Garden Fresh Produce LLC" />
+            <span class="trust-sep" aria-hidden="true"></span>
+            <img src="prima.webp" width="315" height="132" loading="lazy"
+                 alt="Prima Produce" />
+          </div>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── Why Vegy: the problem, paired with the fix ───────────────────── -->
+    <section class="section band-soft" id="why">
+      <div class="wrap">
+        <div class="section-head center reveal">
+          <span class="eyebrow">Why Vegy</span>
+          <h2 class="h-lg">Every order still gets typed in by hand</h2>
+          <p class="lede">
+            Orders reach you a different way every time, and one person turns all of
+            them into something the warehouse can pull. Here is what changes, line by
+            line.
+          </p>
+        </div>
+
+        <div class="swap reveal">
+          <div class="swap-head">
+            <span>How it arrives today</span>
+            <span aria-hidden="true"></span>
+            <span class="is-vegy">What Vegy does with it</span>
+          </div>
+
+          <div class="swap-row">
+            <div class="swap-from">
+              <span class="cell-label">How it arrives today</span>
+              <span class="chan">Voicemail · 11:40 PM</span>
+              <p>&ldquo;Hey it&rsquo;s Mike, give me the usual plus a couple cases of romaine, uh — call me back.&rdquo;</p>
+            </div>
+            <div class="swap-arrow" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></div>
+            <div class="swap-to">
+              <span class="cell-label">What Vegy does with it</span>
+              <p>Vegy&rsquo;s AI picks up, turns the call into a structured order on Mike&rsquo;s account, and prices it against his tier. It&rsquo;s waiting for you at 6am.</p>
+            </div>
+          </div>
+          <div class="swap-row">
+            <div class="swap-from">
+              <span class="cell-label">How it arrives today</span>
+              <span class="chan">Text message</span>
+              <p>&ldquo;4 tomato, 2 onion, 6 lettuce&rdquo; — no pack sizes, no case counts, no account.</p>
+            </div>
+            <div class="swap-arrow" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></div>
+            <div class="swap-to">
+              <span class="cell-label">What Vegy does with it</span>
+              <p>The same text comes back as real line items from your catalog, with your pack sizes and case counts already attached.</p>
+            </div>
+          </div>
+          <div class="swap-row">
+            <div class="swap-from">
+              <span class="cell-label">How it arrives today</span>
+              <span class="chan">Email · PDF attached</span>
+              <p>An order sheet from 2019, with prices that expired two seasons ago.</p>
+            </div>
+            <div class="swap-arrow" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></div>
+            <div class="swap-to">
+              <span class="cell-label">What Vegy does with it</span>
+              <p>They order from your live catalog instead, so the price is whatever their tier says today — and minimums are checked at checkout.</p>
+            </div>
+          </div>
+          <div class="swap-row">
+            <div class="swap-from">
+              <span class="cell-label">How it arrives today</span>
+              <span class="chan">Then, every time</span>
+              <p>Someone re-keys all of it by hand before the pull sheets go out. That&rsquo;s where the shorts come from, and the wrong pack sizes, and the credits.</p>
+            </div>
+            <div class="swap-arrow" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></div>
+            <div class="swap-to">
+              <span class="cell-label">What Vegy does with it</span>
+              <p>Nothing gets typed twice. The order syncs into QuickBooks as a customer, items, and an invoice, and the pull sheet prints itself.</p>
+            </div>
+          </div>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── How it works ─────────────────────────────────────────────────── -->
+    <section class="section" id="how">
+      <div class="wrap">
+        <div class="section-head center reveal">
+          <span class="eyebrow">How it works</span>
+          <h2 class="h-lg">Three steps, and the phone stops ringing</h2>
+        </div>
+
+        <div class="rows">
+          <div class="row reveal">
+            <div class="row-text">
+              <span class="eyebrow">Step 01</span>
+              <h3 class="h-md">We load your catalog</h3>
+              <p>
+                Your item list, pack sizes, categories, and price tiers get imported for
+                you — nothing gets rebuilt by hand. Then it's your logo, your product
+                photos, your category names, on your own domain.
+              </p>
+            </div>
+            <div class="row-visual">
+              <div class="mock">
+                <div class="mock-head"><span>Your catalog</span><span class="tag">Imported</span></div>
+                <div class="mock-body">
+                  <div class="mock-line"><span>Artichoke 12CT</span><span class="pack">Case</span><span class="price">$71.82</span></div>
+                  <div class="mock-line"><span>Arugula, Baby 2/1.5lb</span><span class="pack">Case</span><span class="price">$22.28</span></div>
+                  <div class="mock-line"><span>Romaine Hearts 12CT</span><span class="pack">Case</span><span class="price">$43.89</span></div>
+                  <div class="mock-line"><span>Tomato, Roma 25lb</span><span class="pack">Case</span><span class="price">$31.40</span></div>
+                </div>
               </div>
             </div>
+          </div>
 
-            <div class="p-4 rounded-2xl bg-white shadow-sm">
-              <div class="font-semibold text-sm">Maximize margins and order size</div>
-              <div class="text-sm mt-1" style="color:var(--muted)">
-                Set customer-specific pricing tiers and order minimums, promote featured items, and push new products to increase order size and profit.
+          <div class="row is-flipped reveal">
+            <div class="row-text">
+              <span class="eyebrow">Step 02</span>
+              <h3 class="h-md">Your customers order</h3>
+              <p>
+                From your website, your own iOS and Android app, or straight over voice
+                and text. Last week's order is right there, so a reorder takes seconds
+                instead of a phone call — at 11pm, on a Sunday, from a walk-in cooler.
+              </p>
+            </div>
+            <div class="row-visual">
+              <div class="mock">
+                <div class="mock-head"><span>Sunrise Cafe · Tuesday</span><span class="tag">Tier 2</span></div>
+                <div class="mock-body">
+                  <div class="mock-line"><span>Artichoke 12CT</span><span class="pack">2 cases</span><span class="price">$143.64</span></div>
+                  <div class="mock-line"><span>Arugula, Baby 2/1.5lb</span><span class="pack">6 cases</span><span class="price">$133.68</span></div>
+                  <div class="mock-line"><span>Romaine Hearts 12CT</span><span class="pack">4 cases</span><span class="price">$175.56</span></div>
+                </div>
+                <div class="mock-foot"><span>Order total</span><span class="amt">$452.88</span></div>
               </div>
             </div>
+          </div>
 
-            <div class="p-4 rounded-2xl bg-white shadow-sm">
-              <div class="font-semibold text-sm">Integrates with your workflow</div>
-              <div class="text-sm mt-1" style="color:var(--muted)">
-                Sync with QuickBooks or your existing ERP for invoicing, payments, inventory, and delivery tracking. Export sales reports, pull slips, and price lists instantly.
+          <div class="row reveal">
+            <div class="row-text">
+              <span class="eyebrow">Step 03</span>
+              <h3 class="h-md">You get a clean order</h3>
+              <p>
+                Priced against that customer's tier, checked against your minimums, and
+                synced to QuickBooks or your ERP. Print pull sheets, route lists, and
+                price lists straight from it.
+              </p>
+            </div>
+            <div class="row-visual">
+              <div class="mock">
+                <div class="mock-head"><span>QuickBooks</span><span class="tag">Synced 6:02 AM</span></div>
+                <div class="mock-body">
+                  <div class="mock-line"><span>Customer record</span><span class="price ok">Updated</span></div>
+                  <div class="mock-line"><span>Items &amp; pack sizes</span><span class="price ok">Updated</span></div>
+                  <div class="mock-line"><span>Invoice #4417</span><span class="price ok">Created</span></div>
+                  <div class="mock-line"><span>Pull sheet</span><span class="price ok">Ready</span></div>
+                </div>
               </div>
             </div>
           </div>
         </div>
+      </div>
+    </section>
+
+    <!-- ── Feature grid ─────────────────────────────────────────────────── -->
+    <section class="section band-soft" id="features">
+      <div class="wrap">
+        <div class="section-head center reveal">
+          <span class="eyebrow">Features</span>
+          <h2 class="h-lg">The rest of what the ordering desk was doing</h2>
+          <p class="lede">
+            Case pricing, customer tiers, minimums, and the paperwork your warehouse runs
+            on — not a retail cart with a wholesale sticker on it.
+          </p>
+        </div>
+
+        <div class="cards reveal">
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <rect x="5" y="2" width="14" height="20" rx="2.5" /><path d="M12 18h.01" />
+              </svg>
+            </div>
+            <h3 class="h-sm">Order from anywhere</h3>
+            <p>
+              Your own website, mobile web, native iOS and Android apps, or AI-powered
+              ordering by voice and text for customers who will never open an app.
+            </p>
+          </article>
 
-        <!-- Device -->
-        <div class="lg:col-span-6">
-          <div class="floaty">
-            <div class="mx-auto max-w-md">
-              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 406 852" class="w-full h-auto">
-                <image href="order.png"
-                       x="-43" y="25" width="500" height="800" />
-                <image href="iphone.svg"
-                       x="0" y="0" width="415" height="852" />
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <path d="M12.6 2.6 21 11a2 2 0 0 1 0 2.8l-7.2 7.2a2 2 0 0 1-2.8 0L3 12.6V4a1 1 0 0 1 1-1h8.6Z" /><path d="M7.5 7.5h.01" />
               </svg>
             </div>
+            <h3 class="h-sm">Pricing that knows the customer</h3>
+            <p>
+              Customer-specific pricing tiers and contract pricing applied automatically,
+              plus per-account order minimums enforced at checkout.
+            </p>
+          </article>
+
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <path d="M3 17l6-6 4 4 8-8" /><path d="M17 7h4v4" />
+              </svg>
+            </div>
+            <h3 class="h-sm">Bigger orders, on purpose</h3>
+            <p>
+              Promote featured items, push new products in front of the right accounts,
+              and let favorites and one-tap reorder do the rest.
+            </p>
+          </article>
+
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <path d="M21 12a9 9 0 0 1-15.5 6.2L3 16" /><path d="M3 12a9 9 0 0 1 15.5-6.2L21 8" /><path d="M3 21v-5h5" /><path d="M21 3v5h-5" />
+              </svg>
+            </div>
+            <h3 class="h-sm">QuickBooks &amp; ERP sync</h3>
+            <p>
+              Customers, items, and invoices flow into QuickBooks or your existing ERP.
+              No double entry, no end-of-day export ritual.
+            </p>
+          </article>
+
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <path d="M14 2H6.5A1.5 1.5 0 0 0 5 3.5v17A1.5 1.5 0 0 0 6.5 22h11a1.5 1.5 0 0 0 1.5-1.5V7Z" /><path d="M14 2v5h5" /><path d="M9 13h6" /><path d="M9 17h4" />
+              </svg>
+            </div>
+            <h3 class="h-sm">Paperwork in one click</h3>
+            <p>
+              Pull sheets, price lists, and sales reports export instantly — in the format
+              your warehouse and your bookkeeper already expect.
+            </p>
+          </article>
+
+          <article class="card">
+            <div class="card-icon">
+              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+                <path d="M2 7h11v10H2z" /><path d="M13 10h4.5l3.5 3.5V17h-8" /><circle cx="7" cy="18.5" r="1.8" /><circle cx="17" cy="18.5" r="1.8" />
+              </svg>
+            </div>
+            <h3 class="h-sm">Inventory &amp; delivery tracking</h3>
+            <p>
+              Keep inventory and payment status attached to the order, and track
+              deliveries through to the door without a second system.
+            </p>
+          </article>
+        </div>
+      </div>
+    </section>
+
+    <!-- ── Dark: differentiators ────────────────────────────────────────── -->
+    <section class="section band-dark">
+      <div class="wrap">
+        <div class="section-head reveal">
+          <span class="eyebrow">Where Vegy is different</span>
+          <h2 class="h-lg">Your brand in front, your books untouched</h2>
+          <p class="lede">
+            Vegy runs underneath your business — it doesn't put itself between you and
+            your customers, or between you and your accountant.
+          </p>
+        </div>
+
+        <div class="rows">
+          <div class="row reveal">
+            <div class="row-text">
+              <h3 class="h-md">It's your name on it, not ours</h3>
+              <p style="color:rgba(255,255,255,.72)">
+                Your customers download your app, from your listing, and see your logo
+                when it opens. Nobody has to know there's a software vendor behind your
+                ordering.
+              </p>
+            </div>
+            <div class="row-visual">
+              <div class="mock">
+                <div class="mock-head"><span>What your customers see</span></div>
+                <div class="mock-body">
+                  <div class="mock-line"><span>App Store listing</span><span class="price ok">Your company</span></div>
+                  <div class="mock-line"><span>Ordering domain</span><span class="price ok">orders.yourco.com</span></div>
+                  <div class="mock-line"><span>Logo &amp; colors</span><span class="price ok">Yours</span></div>
+                  <div class="mock-line"><span>Catalog &amp; photos</span><span class="price ok">Yours</span></div>
+                </div>
+              </div>
+            </div>
+          </div>
+
+          <div class="row is-flipped reveal">
+            <div class="row-text">
+              <h3 class="h-md">Your books stay your books</h3>
+              <p style="color:rgba(255,255,255,.72)">
+                Vegy creates and updates customers, items, and invoices in QuickBooks. It
+                does not post journal entries, recognize revenue, or reconcile — your
+                accountant's workflow stays exactly where it is.
+              </p>
+            </div>
+            <div class="row-visual">
+              <div class="mock">
+                <div class="mock-head"><span>QuickBooks scope</span></div>
+                <div class="mock-body">
+                  <div class="mock-line"><span>Customers, items, invoices</span><span class="price ok">Vegy writes</span></div>
+                  <div class="mock-line"><span>Journal entries</span><span class="price muted-cell">Untouched</span></div>
+                  <div class="mock-line"><span>Revenue recognition</span><span class="price muted-cell">Untouched</span></div>
+                  <div class="mock-line"><span>Reconciliation</span><span class="price muted-cell">Untouched</span></div>
+                </div>
+              </div>
+            </div>
           </div>
         </div>
+      </div>
+    </section>
 
+    <!-- ── Pricing ──────────────────────────────────────────────────────── -->
+    <section class="section band-soft" id="pricing">
+      <div class="wrap">
+        <div class="section-head center reveal">
+          <span class="eyebrow">Pricing</span>
+          <h2 class="h-lg">No revenue share. No per-seat games.</h2>
+          <p class="lede">
+            A flat monthly fee, plus a quarter when our AI takes the order for you. A
+            $4,000 order costs you exactly what a $400 order costs you.
+          </p>
+        </div>
+
+        <div class="price-card reveal">
+          <div class="price-row">
+            <div class="price-unit">
+              <p class="price-figure">$599<span class="per">/mo</span></p>
+              <p class="price-cap">Platform fee</p>
+            </div>
+
+            <div class="price-plus" aria-hidden="true">+</div>
+
+            <div class="price-unit">
+              <p class="price-figure">25¢<span class="per">/order</span></p>
+              <p class="price-cap">AI orders — voice, text &amp; web</p>
+            </div>
+          </div>
+
+          <ul class="included">
+            <li>Your white-labeled web storefront and ordering domain</li>
+            <li>Native iOS and Android apps published under your brand</li>
+            <li>Unlimited customer accounts and pricing tiers</li>
+            <li>QuickBooks sync, or integration with your existing ERP</li>
+            <li>Catalog import and account setup, done by us</li>
+            <li>Email and phone support from people who know your instance</li>
+          </ul>
+
+          <p class="price-note">
+            Billed monthly. Final pricing depends on item count, number of accounts, and
+            whether you need a custom ERP integration — you'll get the exact number on
+            the demo call.
+          </p>
+
+          <a class="btn btn-white" style="margin-top:1.8rem"
+             href="https://cal.com/afterdarklabs/meet" target="_blank" rel="noopener">
+            Book a demo <span clas

[Diff truncated. Use the raw view or local clone for the full content.]