Rewrite landing to El component architecture

Full El component split: nav, hero, pillars, inference, pricing, footer, about,
enterprise, mission, viral, local_first, comparison, efficiency, environmental.

- About page rewritten first-person (Will's voice), photo included, no product spoilers
- Stripe checkout wired: env() reads STRIPE_SECRET_KEY/PRICE_* at startup
- Minor parent-onboarding callout added to pricing section
- Inference pricing: "at cost" removed, now "priced below competitors"
- Nav: wordmark image, About link active on /about
- .gitignore: excludes .env, dist/, generated HTML
This commit is contained in:
Will Anderson
2026-04-29 16:21:08 -05:00
parent 686ab1ee2f
commit 1d8143cdbc
27 changed files with 3165 additions and 1467 deletions
+40
View File
@@ -0,0 +1,40 @@
// components/hero.el Hero section.
//
// Full-bleed hero with headline, sub-copy, and two CTAs.
// Glow orbs are pure CSS absolute-positioned divs.
// Entrance animations are CSS keyframes with class-based delays.
fn hero() -> String {
return "
<section id=\"hero\" aria-label=\"Hero\">
<div class=\"glow-tl\" aria-hidden=\"true\"></div>
<div class=\"glow-br\" aria-hidden=\"true\"></div>
<p class=\"label hero-label animate-up-1\">One builder. Six patents. No permission.</p>
<h1 class=\"display-xl hero-headline animate-up-2\">
Every AI resets when you close the tab.
<em class=\"gold\" style=\"font-style:normal\">I built the one that doesn&#39;t &#8212; and priced it below the ones that do.</em>
</h1>
<p class=\"hero-sub animate-up-3\">
Runs on your machine. Remembers everything. Cheaper than ChatGPT on day one.
No cloud required &#8212; and when you want inference, mine costs less than theirs.
</p>
<div class=\"hero-ctas animate-up-5\">
<a href=\"/marketplace/plans\" class=\"btn-primary\">
Download free <span>&#8594;</span>
</a>
<a href=\"#how-it-works\" class=\"btn-ghost\">
See how it works
</a>
</div>
<div class=\"hero-scroll\" aria-hidden=\"true\">
<span>Scroll</span>
<div class=\"hero-scroll-line\"></div>
</div>
</section>
"
}