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
+9
View File
@@ -0,0 +1,9 @@
.env
dist/
.el/
src/*.elc
src/*.map.json
src/index.html
src/about.html
src/terms.html
src/enterprise-terms.html
+12
View File
@@ -0,0 +1,12 @@
package "neuron-landing" {
version "1.0.0"
description "Neuron marketing landing page server"
authors ["Will Anderson <will@neurontechnologies.ai>"]
edition "2026"
}
build {
target "release"
entry "src/main.el"
output "dist/"
}
+179
View File
@@ -0,0 +1,179 @@
// about.el About page for Neuron landing.
//
// Returns the full HTML body content for /about.
// Wrapped by page_open() / page_close() from styles.el.
// Written from Will's first-person perspective.
fn about_page() -> String {
return "
<nav id=\"nav\">
<div class=\"nav-inner\">
<a href=\"/\" class=\"nav-logo\" aria-label=\"Neuron home\"><img src=\"/assets/brand/neuron-wordmark-on-light.png\" srcset=\"/assets/brand/neuron-wordmark-on-light@2x.png 2x\" alt=\"Neuron\" height=\"28\"></a>
<div class=\"nav-links\">
<a href=\"/#how-it-works\" class=\"nav-link\">How it works</a>
<a href=\"/#mission\" class=\"nav-link\">Mission</a>
<a href=\"/#pricing\" class=\"nav-link\">Pricing</a>
<a href=\"/#enterprise\" class=\"nav-link\">Enterprise</a>
<a href=\"/docs\" class=\"nav-link\">Docs</a>
<a href=\"/about\" class=\"nav-link cta\" aria-current=\"page\">About</a>
<a href=\"/#pricing\" class=\"nav-cta\">Get Access</a>
</div>
</div>
</nav>
<main id=\"about\" style=\"padding: clamp(7rem, 18vh, 11rem) 2.5rem clamp(5rem, 12vh, 8rem);\">
<div style=\"max-width: 700px; margin: 0 auto;\">
<!-- Lead -->
<p class=\"label animate-up-1\" style=\"margin-bottom: 2rem;\">About</p>
<h1 class=\"display-lg animate-up-2\" style=\"margin-bottom: 2.5rem; max-width: 22rem;\">
Hi. I&#39;m Will.
</h1>
<div class=\"navy-line-left animate-up-3\" style=\"width: 4rem; margin-bottom: 3rem;\"></div>
<!-- Photo + intro -->
<div class=\"reveal\" style=\"display: flex; align-items: flex-start; gap: 2.5rem; margin-bottom: 3rem; flex-wrap: wrap;\">
<img src=\"/assets/will.png\" alt=\"Will Anderson\" style=\"width: 160px; height: 160px; border-radius: 50%; object-fit: cover; flex-shrink: 0;\">
<div style=\"flex: 1; min-width: 260px;\">
<p style=\"font-family: var(--body); font-weight: 300; font-size: clamp(0.9rem, 1.5vw, 1.0625rem); color: var(--t2); line-height: 1.9; margin-bottom: 1.5rem;\">
I grew up in Fort Smith, Arkansas. Rural poverty, parents with addiction, moved about thirty times before I was fifteen. I left home as a teenager, stayed with friends, finished high school, went to college. At fourteen I found software at the public library &#8212; writing C++ because it was the first thing that ever made complete sense to me.
</p>
<p style=\"font-family: var(--body); font-weight: 300; font-size: clamp(0.9rem, 1.5vw, 1.0625rem); color: var(--t2); line-height: 1.9;\">
I dropped out. Worked. Went back as an adult to finish my degree.
</p>
</div>
</div>
<!-- Career -->
<div class=\"reveal\" style=\"margin-bottom: 3rem;\">
<p style=\"font-family: var(--body); font-weight: 300; font-size: clamp(0.9rem, 1.5vw, 1.0625rem); color: var(--t2); line-height: 1.9; margin-bottom: 1.5rem;\">
I spent nearly twenty years building software across every kind of organization &#8212; international consulting, early-stage startups, Fortune 5 enterprises. Logistics, retail, entertainment, hospitality, industrial automation, insurance, healthcare, financial services. I trained under Juval L&#246;wy at IDesign and worked with him as a consultant from 2015 to 2021. Most recently, principal engineer at one of the largest retailers in the world.
</p>
<p style=\"font-family: var(--body); font-weight: 300; font-size: clamp(0.9rem, 1.5vw, 1.0625rem); color: var(--t2); line-height: 1.9;\">
I resigned on April 29, 2026. Not because it was a good career move. Because there was something I needed to build.
</p>
</div>
<!-- The insight — blockquote -->
<blockquote class=\"reveal\" style=\"
border-left: 3px solid var(--navy);
padding: 0.5rem 0 0.5rem 2rem;
margin: 0 0 3rem;
\">
<p style=\"
font-family: var(--head);
font-size: clamp(1.4rem, 3vw, 2rem);
font-weight: 500;
font-style: italic;
color: var(--t1);
line-height: 1.35;
letter-spacing: -0.01em;
\">
Software shouldn&#39;t be hard. The complexity should live in the problem domain &#8212; not in the tools and processes we impose on ourselves.
</p>
</blockquote>
<!-- What I saw -->
<div class=\"reveal\" style=\"margin-bottom: 3rem;\">
<p class=\"label\" style=\"margin-bottom: 1.25rem;\">What I saw</p>
<p style=\"font-family: var(--body); font-weight: 300; font-size: clamp(0.9rem, 1.5vw, 1.0625rem); color: var(--t2); line-height: 1.9; margin-bottom: 1.5rem;\">
Nearly twenty years of software built, watched, and dissected. And I watched AI go from promise to product. The same mistake keeps getting made: tools built to serve organizations, not people. Engagement over relationship. Features over memory. Policies over values.
</p>
<p style=\"font-family: var(--body); font-weight: 300; font-size: clamp(0.9rem, 1.5vw, 1.0625rem); color: var(--t2); line-height: 1.9;\">
Every conversation starts from zero. You are a user, not a person. That&#39;s not an accident &#8212; it&#39;s a design decision. And it is the wrong one.
</p>
</div>
<div class=\"navy-line-center reveal\" style=\"margin-bottom: 3rem;\"></div>
<!-- What I built -->
<div class=\"reveal\" style=\"margin-bottom: 3rem;\">
<p class=\"label\" style=\"margin-bottom: 1.25rem;\">What I built</p>
<p style=\"font-family: var(--body); font-weight: 300; font-size: clamp(0.9rem, 1.5vw, 1.0625rem); color: var(--t2); line-height: 1.9; margin-bottom: 1.5rem;\">
Neuron is what I built. Not a startup in the traditional sense &#8212; no team, no funding, no press release. One person, nearly two years, and a conviction that this can be done differently.
</p>
<p style=\"font-family: var(--body); font-weight: 300; font-size: clamp(0.9rem, 1.5vw, 1.0625rem); color: var(--t2); line-height: 1.9; margin-bottom: 1.5rem;\">
I wrote the programming language the core runs in. I wrote the memory architecture. I built the inference infrastructure. I did this because the existing tools weren&#39;t sufficient for what I was trying to build &#8212; so I built those too.
</p>
<p style=\"font-family: var(--body); font-weight: 300; font-size: clamp(0.9rem, 1.5vw, 1.0625rem); color: var(--t2); line-height: 1.9;\">
Use it long enough and you&#39;ll understand why nothing I could have built on top of existing infrastructure would have gotten there. Some things have to be built from the ground up to be built right.
</p>
</div>
<!-- What I believe -->
<div class=\"reveal\" style=\"margin-bottom: 3rem;\">
<p class=\"label\" style=\"margin-bottom: 1.25rem;\">What I believe</p>
<p style=\"font-family: var(--body); font-weight: 300; font-size: clamp(0.9rem, 1.5vw, 1.0625rem); color: var(--t2); line-height: 1.9; margin-bottom: 1.5rem;\">
AI has genuine potential to free people to do work that actually matters to them. That potential is almost entirely unrealized &#8212; not because the technology isn&#39;t capable, but because the incentives are wrong.
</p>
<p style=\"font-family: var(--body); font-weight: 300; font-size: clamp(0.9rem, 1.5vw, 1.0625rem); color: var(--t2); line-height: 1.9;\">
I don&#39;t know if Neuron will work at the scale I&#39;m imagining. But I know it&#39;s worth finding out. And I know I&#39;m not going back to the other way of building things.
</p>
</div>
<!-- The mission -->
<div class=\"reveal\" style=\"margin-bottom: 3.5rem;\">
<p class=\"label\" style=\"margin-bottom: 1.25rem;\">The mission</p>
<p style=\"
font-family: var(--head);
font-size: clamp(1.2rem, 2.5vw, 1.625rem);
font-weight: 600;
color: var(--t1);
line-height: 1.35;
letter-spacing: -0.01em;
margin-bottom: 1.5rem;
\">
Build AI that earns the trust it&#39;s given.
</p>
<p style=\"font-family: var(--body); font-weight: 300; font-size: clamp(0.9rem, 1.5vw, 1.0625rem); color: var(--t2); line-height: 1.9;\">
Not AGI. Not disrupting industries. Not transforming anything. Something that actually knows you &#8212; and is worth knowing.
</p>
</div>
<div class=\"navy-line-center reveal\" style=\"margin-bottom: 3rem;\"></div>
<!-- CTA -->
<div class=\"reveal\">
<p style=\"font-family: var(--body); font-weight: 300; font-size: clamp(0.9rem, 1.5vw, 1.0625rem); color: var(--t2); line-height: 1.9; margin-bottom: 1.5rem;\">
Neuron opens to founding members on May 1st. 1,000 spots. That&#39;s how it starts.
</p>
<a href=\"/#pricing\" class=\"btn-primary\">
Join as a founding member &#8594;
</a>
</div>
</div>
</main>
<footer id=\"footer\" aria-label=\"Footer\">
<div class=\"container\">
<div class=\"footer-inner\">
<a href=\"/\" class=\"footer-brand\" aria-label=\"Neuron home\">
<p class=\"footer-brand-name\">Neuron</p>
<p class=\"footer-brand-tagline\">Built Different.</p>
</a>
<div class=\"footer-center\">
<div class=\"navy-line\"></div>
</div>
<div class=\"footer-right\">
<p class=\"footer-domain\">neurontechnologies.ai</p>
<nav class=\"footer-nav\" aria-label=\"Footer navigation\">
<a href=\"/legal/terms\">Terms</a>
<a href=\"/legal/enterprise-terms\">Enterprise Agreement</a>
<a href=\"mailto:legal@neurontechnologies.ai\">Contact</a>
</nav>
</div>
</div>
<div class=\"footer-bottom\">
<p class=\"footer-copy\">&copy; 2026 Neuron Technologies. All rights reserved.</p>
<p class=\"footer-tagline-bottom\">Your memory. Your AI.</p>
</div>
</div>
</footer>
"
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

+140
View File
@@ -0,0 +1,140 @@
// components/comparison.el Neuron vs the field comparison section.
fn comparison() -> String {
return "
<section id=\"comparison\" aria-label=\"Comparison\" style=\"padding:8rem 2.5rem;background:var(--bg2)\">
<div class=\"container\">
<div class=\"comparison-header\" style=\"text-align:center;margin-bottom:4rem\">
<div style=\"display:flex;align-items:center;justify-content:center;gap:1.5rem;margin-bottom:2rem\">
<div class=\"navy-line-left\" style=\"width:4rem;flex-shrink:0;transform:scaleX(-1)\"></div>
<span class=\"label reveal\" style=\"color:var(--navy-85)\">How we compare</span>
<div class=\"navy-line-left\" style=\"width:4rem;flex-shrink:0\"></div>
</div>
<h2 class=\"display-lg reveal\" style=\"transition-delay:80ms;max-width:36rem;margin:0 auto 1.25rem\">
Every other AI forgets you.<br><span class=\"gold\">Neuron doesn&#39;t.</span>
</h2>
<p class=\"reveal\" style=\"transition-delay:160ms;font-family:var(--body);font-weight:300;font-size:1rem;color:var(--t2);line-height:1.7;max-width:32rem;margin:0 auto\">
The others are tools. Neuron is a relationship. Here&#39;s the difference.
</p>
</div>
<div class=\"comparison-table reveal\" style=\"transition-delay:200ms;overflow-x:auto\">
<table style=\"width:100%;border-collapse:collapse;font-family:var(--body);font-size:0.875rem\">
<thead>
<tr style=\"border-bottom:2px solid rgba(0,82,160,.20)\">
<th style=\"text-align:left;padding:1rem 1.5rem 1rem 0;font-weight:500;letter-spacing:0.08em;color:var(--t3);font-size:0.75rem;text-transform:uppercase;width:28%\">Feature</th>
<th style=\"text-align:center;padding:1rem 1rem;font-weight:600;color:var(--navy);font-size:0.875rem;width:18%\">
<div style=\"display:inline-flex;flex-direction:column;align-items:center;gap:0.25rem\">
<span style=\"font-size:1.1rem\">&#9679;</span>
Neuron
</div>
</th>
<th style=\"text-align:center;padding:1rem 1rem;font-weight:400;color:var(--t3);font-size:0.875rem;width:13.5%\">ChatGPT</th>
<th style=\"text-align:center;padding:1rem 1rem;font-weight:400;color:var(--t3);font-size:0.875rem;width:13.5%\">Claude</th>
<th style=\"text-align:center;padding:1rem 1rem;font-weight:400;color:var(--t3);font-size:0.875rem;width:13.5%\">Gemini</th>
<th style=\"text-align:center;padding:1rem 1rem;font-weight:400;color:var(--t3);font-size:0.875rem;width:13.5%\">Copilot</th>
</tr>
</thead>
<tbody>
<tr style=\"border-bottom:1px solid rgba(0,0,0,.06)\">
<td style=\"padding:1rem 1.5rem 1rem 0;color:var(--t1);font-weight:500\">Persistent memory</td>
<td style=\"text-align:center;padding:1rem\"><span style=\"color:#008040;font-weight:700;font-size:1.1rem\">&#10003;</span><br><span style=\"font-size:0.7rem;color:var(--t3);font-weight:400\">Permanent, structured</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#D4A017\">&#9679;</span><br><span style=\"font-size:0.7rem\">Limited memory</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#C44\">&#10005;</span><br><span style=\"font-size:0.7rem\">Resets each session</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#C44\">&#10005;</span><br><span style=\"font-size:0.7rem\">Resets each session</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#C44\">&#10005;</span><br><span style=\"font-size:0.7rem\">Resets each session</span></td>
</tr>
<tr style=\"border-bottom:1px solid rgba(0,0,0,.06);background:rgba(0,82,160,.02)\">
<td style=\"padding:1rem 1.5rem 1rem 0;color:var(--t1);font-weight:500\">Your data stays local</td>
<td style=\"text-align:center;padding:1rem\"><span style=\"color:#008040;font-weight:700;font-size:1.1rem\">&#10003;</span><br><span style=\"font-size:0.7rem;color:var(--t3);font-weight:400\">Runs on your device</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#C44\">&#10005;</span><br><span style=\"font-size:0.7rem\">Cloud only</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#C44\">&#10005;</span><br><span style=\"font-size:0.7rem\">Cloud only</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#C44\">&#10005;</span><br><span style=\"font-size:0.7rem\">Cloud only</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#C44\">&#10005;</span><br><span style=\"font-size:0.7rem\">Cloud only</span></td>
</tr>
<tr style=\"border-bottom:1px solid rgba(0,0,0,.06)\">
<td style=\"padding:1rem 1.5rem 1rem 0;color:var(--t1);font-weight:500\">No training on your data</td>
<td style=\"text-align:center;padding:1rem\"><span style=\"color:#008040;font-weight:700;font-size:1.1rem\">&#10003;</span><br><span style=\"font-size:0.7rem;color:var(--t3);font-weight:400\">Architecturally impossible</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#D4A017\">&#9679;</span><br><span style=\"font-size:0.7rem\">Opt-out required</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#D4A017\">&#9679;</span><br><span style=\"font-size:0.7rem\">Policy-based</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#D4A017\">&#9679;</span><br><span style=\"font-size:0.7rem\">Policy-based</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#D4A017\">&#9679;</span><br><span style=\"font-size:0.7rem\">Policy-based</span></td>
</tr>
<tr style=\"border-bottom:1px solid rgba(0,0,0,.06);background:rgba(0,82,160,.02)\">
<td style=\"padding:1rem 1.5rem 1rem 0;color:var(--t1);font-weight:500\">Works offline</td>
<td style=\"text-align:center;padding:1rem\"><span style=\"color:#008040;font-weight:700;font-size:1.1rem\">&#10003;</span><br><span style=\"font-size:0.7rem;color:var(--t3);font-weight:400\">Local inference via Ollama</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#C44\">&#10005;</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#C44\">&#10005;</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#C44\">&#10005;</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#C44\">&#10005;</span></td>
</tr>
<tr style=\"border-bottom:1px solid rgba(0,0,0,.06)\">
<td style=\"padding:1rem 1.5rem 1rem 0;color:var(--t1);font-weight:500\">Bring your own API keys</td>
<td style=\"text-align:center;padding:1rem\"><span style=\"color:#008040;font-weight:700;font-size:1.1rem\">&#10003;</span><br><span style=\"font-size:0.7rem;color:var(--t3);font-weight:400\">OpenAI, Anthropic, Groq...</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#C44\">&#10005;</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#C44\">&#10005;</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#C44\">&#10005;</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#C44\">&#10005;</span></td>
</tr>
<tr style=\"border-bottom:1px solid rgba(0,0,0,.06);background:rgba(0,82,160,.02)\">
<td style=\"padding:1rem 1.5rem 1rem 0;color:var(--t1);font-weight:500\">Structured knowledge graph</td>
<td style=\"text-align:center;padding:1rem\"><span style=\"color:#008040;font-weight:700;font-size:1.1rem\">&#10003;</span><br><span style=\"font-size:0.7rem;color:var(--t3);font-weight:400\">Your memories, organized</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#C44\">&#10005;</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#C44\">&#10005;</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#C44\">&#10005;</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#C44\">&#10005;</span></td>
</tr>
<tr style=\"border-bottom:1px solid rgba(0,0,0,.06)\">
<td style=\"padding:1rem 1.5rem 1rem 0;color:var(--t1);font-weight:500\">You own your outputs</td>
<td style=\"text-align:center;padding:1rem\"><span style=\"color:#008040;font-weight:700;font-size:1.1rem\">&#10003;</span><br><span style=\"font-size:0.7rem;color:var(--t3);font-weight:400\">No platform claim, ever</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#D4A017\">&#9679;</span><br><span style=\"font-size:0.7rem\">ToS-dependent</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#D4A017\">&#9679;</span><br><span style=\"font-size:0.7rem\">ToS-dependent</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#D4A017\">&#9679;</span><br><span style=\"font-size:0.7rem\">ToS-dependent</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#D4A017\">&#9679;</span><br><span style=\"font-size:0.7rem\">ToS-dependent</span></td>
</tr>
<tr style=\"border-bottom:1px solid rgba(0,0,0,.06);background:rgba(0,82,160,.02)\">
<td style=\"padding:1rem 1.5rem 1rem 0;color:var(--t1);font-weight:500\">Price (with inference)</td>
<td style=\"text-align:center;padding:1rem\"><span style=\"color:#008040;font-weight:700;font-size:1rem\">$19/mo</span><br><span style=\"font-size:0.7rem;color:var(--t3);font-weight:400\">or $199 lifetime</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"font-weight:500;color:var(--t2)\">$20/mo</span><br><span style=\"font-size:0.7rem\">forgets you</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"font-weight:500;color:var(--t2)\">$20/mo</span><br><span style=\"font-size:0.7rem\">no memory</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"font-weight:500;color:var(--t2)\">Free&#8211;$20</span><br><span style=\"font-size:0.7rem\">no memory</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"font-weight:500;color:var(--t2)\">$30/mo</span><br><span style=\"font-size:0.7rem\">Microsoft 365</span></td>
</tr>
<tr>
<td style=\"padding:1rem 1.5rem 1rem 0;color:var(--t1);font-weight:500\">Free tier</td>
<td style=\"text-align:center;padding:1rem\"><span style=\"color:#008040;font-weight:700;font-size:1.1rem\">&#10003;</span><br><span style=\"font-size:0.7rem;color:var(--t3);font-weight:400\">Full app, forever</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#D4A017\">&#9679;</span><br><span style=\"font-size:0.7rem\">GPT-3.5 only</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#D4A017\">&#9679;</span><br><span style=\"font-size:0.7rem\">Limited</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#D4A017\">&#9679;</span><br><span style=\"font-size:0.7rem\">Limited</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#D4A017\">&#9679;</span><br><span style=\"font-size:0.7rem\">Microsoft 365 required</span></td>
</tr>
</tbody>
</table>
</div>
<div class=\"reveal\" style=\"transition-delay:300ms;margin-top:3rem;display:flex;align-items:center;justify-content:center;gap:3rem;flex-wrap:wrap\">
<div style=\"display:flex;align-items:center;gap:0.5rem;font-family:var(--body);font-size:0.75rem;color:var(--t3)\">
<span style=\"color:#008040;font-weight:700\">&#10003;</span> Yes / Supported
</div>
<div style=\"display:flex;align-items:center;gap:0.5rem;font-family:var(--body);font-size:0.75rem;color:var(--t3)\">
<span style=\"color:#D4A017\">&#9679;</span> Partial / Limited
</div>
<div style=\"display:flex;align-items:center;gap:0.5rem;font-family:var(--body);font-size:0.75rem;color:var(--t3)\">
<span style=\"color:#C44\">&#10005;</span> No / Not supported
</div>
</div>
<div class=\"reveal\" style=\"transition-delay:400ms;margin-top:4rem;padding:2.5rem 3rem;background:var(--card);border:1px solid rgba(0,82,160,.12);border-left:3px solid var(--navy)\">
<p style=\"font-family:var(--body);font-weight:300;font-size:1rem;color:var(--t2);line-height:1.8;margin-bottom:1rem\">
The others are impressive. Some of them are extraordinary at what they do. But they are all built on the same assumption: <em>your context lives in their cloud, session to session, at their discretion.</em>
</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:1rem;color:var(--t2);line-height:1.8\">
Neuron starts from a different premise. Your memory is yours. It lives on your machine. It compounds over time, not over sessions. The AI that knows you isn&#39;t an AI you borrowed from someone else&#39;s cloud &#8212; it&#39;s one that has been building with you, on your terms, since day one.
</p>
</div>
</div>
</section>
"
}
+76
View File
@@ -0,0 +1,76 @@
// components/efficiency.el Token efficiency and environment section.
// Three cards: local inference / per-task routing / context compression.
fn efficiency() -> String {
return "
<section id=\"efficiency\" aria-label=\"Token efficiency and environment\">
<div class=\"container\">
<div class=\"efficiency-header\">
<div class=\"efficiency-label-row reveal\">
<div class=\"navy-line-left\" style=\"width:4rem;flex-shrink:0\"></div>
<span class=\"label\">Efficiency</span>
</div>
<h2 class=\"display-lg reveal\" style=\"transition-delay:80ms;max-width:32rem\">
Every token spent <span class=\"gold\">is a choice.</span>
</h2>
<p class=\"efficiency-sub reveal\" style=\"transition-delay:160ms;margin-top:1.25rem\">
Cost and environmental impact aren&#39;t afterthoughts &#8212; they&#39;re structural properties of the architecture. I built it that way from the start.
</p>
</div>
<div class=\"efficiency-grid\">
<div class=\"efficiency-card card-dark reveal\">
<div class=\"efficiency-icon\">
<svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">
<path d=\"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10z\"/>
<path d=\"M8 12s1.5-2 4-2 4 2 4 2\"/>
<path d=\"M9 9h.01M15 9h.01\"/>
<path d=\"M12 17c-1.5 0-3-.5-3-1.5S10 14 12 14s3 .5 3 1.5S13.5 17 12 17z\"/>
</svg>
</div>
<p class=\"efficiency-stat\">0 cloud tokens</p>
<p class=\"efficiency-title\">Local inference</p>
<div class=\"efficiency-rule\"></div>
<p class=\"efficiency-body\">Free tier runs entirely on-device via Ollama. No API calls, no inference cost, no carbon footprint from model compute. Full memory and context, zero cloud dependency.</p>
</div>
<div class=\"efficiency-card card-dark reveal\" style=\"transition-delay:150ms\">
<div class=\"efficiency-icon\">
<svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">
<circle cx=\"6\" cy=\"18\" r=\"2\"/><circle cx=\"18\" cy=\"6\" r=\"2\"/><circle cx=\"18\" cy=\"18\" r=\"2\"/>
<path d=\"M6 16V8l6-4 6 4\"/><path d=\"M6 16l6 4 6-4\"/><path d=\"M12 4v16\"/>
</svg>
</div>
<p class=\"efficiency-stat\">~80% cost reduction</p>
<p class=\"efficiency-title\">Per-task routing</p>
<div class=\"efficiency-rule\"></div>
<p class=\"efficiency-body\">Simple tasks route to small, fast models. Complex reasoning escalates to frontier models only when necessary. And because every model has full access to your accumulated context, cheaper models punch well above their weight.</p>
</div>
<div class=\"efficiency-card card-dark reveal\" style=\"transition-delay:300ms\">
<div class=\"efficiency-icon\">
<svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">
<rect x=\"4\" y=\"4\" width=\"16\" height=\"16\" rx=\"2\"/>
<path d=\"M9 9h6M9 12h6M9 15h4\"/>
<path d=\"M16 15l2 2 2-2\"/>
</svg>
</div>
<p class=\"efficiency-stat\">up to 38% per call</p>
<p class=\"efficiency-title\">Context compression</p>
<div class=\"efficiency-rule\"></div>
<p class=\"efficiency-body\">The compression algorithm delivers up to 38% token reduction per context call &#8212; benchmarked on real prose content. Total savings compound: fewer calls, precise context assembly, smaller prompts on every step.</p>
</div>
</div>
<div class=\"efficiency-pullquote reveal\">
<p>The frontier model without memory of you is starting from scratch every time. A smaller, faster model with years of accumulated context on your work, your decisions, and your patterns will outperform it. The intelligence isn&#39;t in the model &#8212; it&#39;s in what the model knows about you.</p>
</div>
</div>
<div class=\"container\" style=\"margin-top:5rem\"><div class=\"navy-line\"></div></div>
</section>
"
}
+94
View File
@@ -0,0 +1,94 @@
// components/enterprise.el Enterprise section.
// Four capability cards + "Who I work with" box + how-it-works steps.
fn enterprise() -> String {
return "
<section id=\"enterprise\" aria-label=\"Enterprise\">
<div class=\"container\">
<div class=\"enterprise-header\">
<div class=\"enterprise-label-row reveal\">
<div class=\"navy-line-left\" style=\"width:4rem;flex-shrink:0\"></div>
<span class=\"label\" style=\"color:var(--navy-85)\">Enterprise</span>
</div>
<div class=\"enterprise-head-row\">
<div style=\"max-width:28rem\">
<h2 class=\"display-lg reveal\" style=\"transition-delay:80ms\">
Enterprise-ready <span class=\"gold\">from day one.</span>
</h2>
<p class=\"reveal\" style=\"transition-delay:160ms;font-weight:300;font-size:.9375rem;color:var(--t2);line-height:1.7;margin-top:1.25rem\">
Not an afterthought. Not a future roadmap item. Built into the architecture.
</p>
</div>
<div class=\"reveal\" style=\"transition-delay:240ms;display:flex;flex-direction:column;gap:.75rem;align-items:flex-end\">
<div class=\"ent-badge\">
<span class=\"ent-badge-dot\"></span>
Enterprise discussions open Q4 2026
</div>
<a href=\"mailto:enterprise@neurontechnologies.ai\" class=\"btn-primary\">Express interest &#8594;</a>
<p style=\"font-size:.75rem;color:rgba(0,82,160,.45)\">Serious inquiries only &middot; We&#39;ll reach out before Q4</p>
</div>
</div>
</div>
<div class=\"enterprise-grid\">
<div class=\"enterprise-cap card-dark reveal\">
<h3 class=\"display-md\">Private deployment</h3>
<div class=\"enterprise-cap-rule\"></div>
<p class=\"enterprise-cap-body\">Run entirely on your infrastructure. Air-gapped. No data leaves your network. Every employee gets their own Neuron instance &#8212; your company&#39;s institutional knowledge stays inside your walls.</p>
</div>
<div class=\"enterprise-cap card-dark reveal\" style=\"transition-delay:130ms\">
<h3 class=\"display-md\">Institutional memory</h3>
<div class=\"enterprise-cap-rule\"></div>
<p class=\"enterprise-cap-body\">When an employee leaves, their expertise doesn&#39;t. Their memory graph persists &#8212; their patterns, their domain knowledge, their reasoning &#8212; available to the team they built it with.</p>
</div>
<div class=\"enterprise-cap card-dark reveal\" style=\"transition-delay:260ms\">
<h3 class=\"display-md\">Team intelligence</h3>
<div class=\"enterprise-cap-rule\"></div>
<p class=\"enterprise-cap-body\">Shared knowledge packages and cross-instance coordination. The collective intelligence of your organization compounds the same way an individual&#39;s does.</p>
</div>
<div class=\"enterprise-cap card-dark reveal\" style=\"transition-delay:390ms\">
<h3 class=\"display-md\">Compliance architecture</h3>
<div class=\"enterprise-cap-rule\"></div>
<p class=\"enterprise-cap-body\">SQLite local storage. No cloud database with your data. SOC 2 alignment built into the data model. ExternalSecret-based secrets management. Audit logs at every layer.</p>
</div>
</div>
<div class=\"enterprise-box reveal\">
<p class=\"ent-who-label\">Who I work with</p>
<p class=\"ent-who-body\">I am selective. I built Neuron to expand what people can do &#8212; not to help organizations eliminate them. If your interest in this technology is primarily about reducing headcount, I am not your vendor. If it&#39;s about making the people you have dramatically more effective, I want to hear from you.</p>
<p class=\"ent-who-note\">This isn&#39;t a legal hedge. It&#39;s a filter. The Enterprise Agreement makes it binding &#8212; but I&#39;m raising it here because I&#39;d rather you know before you reach out.</p>
<div class=\"ent-how-row\">
<div class=\"ent-how-label\">
<h3 class=\"display-md\" style=\"font-size:1.25rem\">How it works</h3>
</div>
<div class=\"ent-steps\">
<div>
<p class=\"ent-step-num\">01</p>
<p class=\"ent-step-title\">Express interest</p>
<p class=\"ent-step-body\">Send me a note. I review every inquiry myself &#8212; no sales funnel, no SDR. If it&#39;s a fit, I respond directly.</p>
</div>
<div>
<p class=\"ent-step-num\">02</p>
<p class=\"ent-step-title\">Scoped deployment</p>
<p class=\"ent-step-body\">I work with your team to scope a private deployment &#8212; on your infrastructure, in your network, with your security requirements.</p>
</div>
<div>
<p class=\"ent-step-num\">03</p>
<p class=\"ent-step-title\">Per-seat licensing</p>
<p class=\"ent-step-body\">Annual per-seat pricing with a volume floor. Custom SLA available. The full Agreement is published before any conversation starts.</p>
</div>
</div>
</div>
<div class=\"ent-terms-row\">
<p class=\"ent-terms-text\">The full Enterprise Agreement is published. Read it before reaching out &#8212; no NDA required to evaluate the terms.</p>
<a href=\"/legal/enterprise-terms\" class=\"ent-terms-link\">Read the Enterprise Agreement &#8594;</a>
</div>
</div>
</div>
</section>
"
}
+78
View File
@@ -0,0 +1,78 @@
// components/enterprise_terms.el Enterprise Agreement page.
// Returns complete HTML using the shared page shell from styles.el.
from styles import { page_open, page_close }
fn enterprise_terms_page() -> String {
return page_open() + enterprise_terms_body() + page_close()
}
fn enterprise_terms_body() -> String {
return "
<div style=\"max-width:720px;margin:0 auto;padding:6rem 2.5rem 8rem\">
<div style=\"margin-bottom:3rem\">
<a href=\"/\" style=\"font-family:var(--body);font-size:0.75rem;font-weight:500;letter-spacing:0.15em;text-transform:uppercase;color:var(--navy);text-decoration:none\">&#8592; Neuron</a>
</div>
<div style=\"margin-bottom:4rem;border-bottom:1px solid var(--border);padding-bottom:3rem\">
<p class=\"label\" style=\"margin-bottom:1rem\">Legal</p>
<h1 style=\"font-family:var(--head);font-size:clamp(2rem,4vw,3rem);font-weight:600;color:var(--t1);margin-bottom:0.75rem;line-height:1.1\">Enterprise Agreement</h1>
<p style=\"font-family:var(--body);font-size:0.875rem;color:var(--t3)\">Effective May 1, 2026 &nbsp;&middot;&nbsp; Neuron, LLC</p>
</div>
<div style=\"margin-bottom:3rem\">
<div style=\"display:flex;align-items:baseline;gap:1rem;margin-bottom:1.25rem;border-bottom:1px solid var(--border);padding-bottom:0.75rem\">
<span style=\"font-family:var(--body);font-size:0.75rem;font-weight:600;letter-spacing:0.15em;text-transform:uppercase;color:var(--navy-65)\">&#167; 1</span>
<h2 style=\"font-family:var(--head);font-size:1.25rem;font-weight:600;color:var(--t1)\">Parties and Scope</h2>
</div>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem\">This Enterprise Agreement (&#34;Agreement&#34;) is between Neuron, LLC (&#34;Neuron&#34;) and the organization entering into an enterprise relationship (&#34;Customer&#34;). It governs all enterprise deployments, including Team, Enterprise, and Private Cloud tiers.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8\">This Agreement supplements the Neuron Terms of Service. In the event of conflict, this Agreement controls for enterprise use.</p>
</div>
<div style=\"margin-bottom:3rem\">
<div style=\"display:flex;align-items:baseline;gap:1rem;margin-bottom:1.25rem;border-bottom:1px solid var(--border);padding-bottom:0.75rem\">
<span style=\"font-family:var(--body);font-size:0.75rem;font-weight:600;letter-spacing:0.15em;text-transform:uppercase;color:var(--navy-65)\">&#167; 3</span>
<h2 style=\"font-family:var(--head);font-size:1.25rem;font-weight:600;color:var(--t1)\">Data and Privacy</h2>
</div>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem\">Neuron&#39;s architecture is designed to minimize data exposure. In private cloud and air-gapped deployments, no data leaves Customer&#39;s infrastructure. Neuron has no access to Customer data in these configurations.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem\">In cloud-hosted deployments, Neuron processes Customer data solely to deliver the contracted services. Customer data is stored in an isolated tenant, is not commingled with other customers&#39; data, and is not used for model training, analytics, or any purpose beyond service delivery. When Customer activates network features &#8212; including relay, peer-to-peer sync, or collaborative features &#8212; data required to operate those features may be transmitted to other network participants or Neuron infrastructure; such transmission is limited to the minimum required, excludes Customer&#39;s memory graph and conversation history unless Customer explicitly enables a sharing feature, and is used only to deliver the activated feature. Network features route data through Neuron&#39;s messaging backplane. That data is encrypted end-to-end &#8212; Neuron cannot read it &#8212; and is not stored or retained after transmission. Activation of any network feature by Customer constitutes acknowledgment and consent on behalf of Customer and its users to both the functional transmission and the aggregate processing described in this section.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem\">Customer owns all data processed through the platform. Upon termination, Customer data is returned or destroyed within 30 days at Customer&#39;s election. We do not retain copies.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8\">Where required by applicable law, Neuron will execute a Data Processing Agreement (DPA) as a supplement to this Agreement. Contact enterprise@neurontechnologies.ai to initiate.</p>
</div>
<div style=\"margin-bottom:3rem\">
<div style=\"display:flex;align-items:baseline;gap:1rem;margin-bottom:1.25rem;border-bottom:1px solid var(--border);padding-bottom:0.75rem\">
<span style=\"font-family:var(--body);font-size:0.75rem;font-weight:600;letter-spacing:0.15em;text-transform:uppercase;color:var(--navy-65)\">&#167; 4</span>
<h2 style=\"font-family:var(--head);font-size:1.25rem;font-weight:600;color:var(--t1)\">Values Alignment</h2>
</div>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem\">Neuron is built on the principle that AI should expand human capability, not replace it. We are selective about the organizations we work with.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem\">Customer represents that it does not intend to use Neuron primarily as a tool to eliminate employee positions, reduce headcount through automation in ways that harm workers, or otherwise use the platform in ways inconsistent with the welfare of the people who work in Customer&#39;s organization.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem\">Neuron reserves the right to decline, not renew, or terminate any enterprise agreement where Neuron determines, in its reasonable judgment, that the Customer&#39;s use of the platform is fundamentally misaligned with these principles.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8\">We will not enter into agreements with organizations whose primary business model, as Neuron determines in good faith, depends on practices that systematically harm workers, small businesses, or communities. This is not a standard clause in most software agreements. We mean it.</p>
</div>
<div style=\"margin-bottom:3rem\">
<div style=\"display:flex;align-items:baseline;gap:1rem;margin-bottom:1.25rem;border-bottom:1px solid var(--border);padding-bottom:0.75rem\">
<span style=\"font-family:var(--body);font-size:0.75rem;font-weight:600;letter-spacing:0.15em;text-transform:uppercase;color:var(--navy-65)\">&#167; 11</span>
<h2 style=\"font-family:var(--head);font-size:1.25rem;font-weight:600;color:var(--t1)\">Limitation of Liability</h2>
</div>
<p style=\"font-family:var(--body);font-size:0.875rem;font-weight:600;color:var(--t1);line-height:1.7;margin-bottom:1rem\">NEURON&#39;S TOTAL LIABILITY UNDER THIS AGREEMENT SHALL NOT EXCEED THE FEES PAID BY CUSTOMER IN THE TWELVE MONTHS PRECEDING THE CLAIM.</p>
<p style=\"font-family:var(--body);font-size:0.875rem;font-weight:600;color:var(--t1);line-height:1.7;margin-bottom:1rem\">NEITHER PARTY SHALL BE LIABLE FOR INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, OR PUNITIVE DAMAGES, EVEN IF ADVISED OF THEIR POSSIBILITY.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8\">These limitations do not apply to: (a) Customer&#39;s payment obligations; (b) breaches of confidentiality; or (c) a party&#39;s gross negligence or willful misconduct.</p>
</div>
<div style=\"margin-bottom:3rem\">
<div style=\"display:flex;align-items:baseline;gap:1rem;margin-bottom:1.25rem;border-bottom:1px solid var(--border);padding-bottom:0.75rem\">
<span style=\"font-family:var(--body);font-size:0.75rem;font-weight:600;letter-spacing:0.15em;text-transform:uppercase;color:var(--navy-65)\">&#167; 13</span>
<h2 style=\"font-family:var(--head);font-size:1.25rem;font-weight:600;color:var(--t1)\">Governing Law and Disputes</h2>
</div>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem\">This Agreement is governed by the laws of the State of Delaware, without regard to conflict of law principles.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8\">The parties agree to attempt to resolve disputes through good-faith negotiation before initiating litigation. If negotiation fails, disputes shall be resolved by binding arbitration under AAA Commercial Arbitration Rules, except that either party may seek injunctive relief in court for IP or confidentiality violations.</p>
</div>
<div style=\"margin-top:4rem;padding-top:2rem;border-top:1px solid var(--border);display:flex;gap:2rem;flex-wrap:wrap\">
<a href=\"/\" style=\"font-family:var(--body);font-size:0.8125rem;color:var(--navy);text-decoration:none\">&larr; Home</a>
<a href=\"/legal/terms\" style=\"font-family:var(--body);font-size:0.8125rem;color:var(--navy);text-decoration:none\">Consumer Terms &rarr;</a>
</div>
</div>
"
}
+75
View File
@@ -0,0 +1,75 @@
// components/environmental.el Environmental impact section.
//
// The honest case for why local-first AI has a lower footprint than cloud AI.
// Not greenwashing a structural argument. The benefit follows from the
// architecture; it wasn't engineered as a feature, but it's real.
fn environmental() -> String {
return "
<section id=\"environmental\" aria-label=\"Environmental impact\" style=\"padding:8rem 2.5rem;background:var(--bg)\">
<div class=\"container-lg\">
<div style=\"display:grid;grid-template-columns:1fr 1fr;gap:6rem;align-items:start\">
<div>
<div style=\"display:flex;align-items:center;gap:1.5rem;margin-bottom:2rem\">
<div class=\"navy-line-left\" style=\"width:3rem;flex-shrink:0\"></div>
<span class=\"label reveal\" style=\"color:var(--navy-85)\">Environmental impact</span>
</div>
<h2 class=\"display-lg reveal\" style=\"transition-delay:80ms;margin-bottom:1.5rem\">
The AI that remembers<br>doesn&#39;t have to<br><span class=\"gold\">recompute.</span>
</h2>
<p class=\"reveal\" style=\"transition-delay:160ms;font-family:var(--body);font-weight:300;font-size:1rem;color:var(--t2);line-height:1.8;margin-bottom:1.25rem\">
Every time you open ChatGPT and explain who you are again, that&#39;s computation that didn&#39;t need to happen. Every time the AI re-establishes your context from scratch, energy is spent re-deriving what it already knew.
</p>
<p class=\"reveal\" style=\"transition-delay:220ms;font-family:var(--body);font-weight:300;font-size:1rem;color:var(--t2);line-height:1.8;margin-bottom:1.25rem\">
Neuron&#39;s memory graph persists. The context tax &#8212; the repeated re-inference of who you are and what you&#39;re working on &#8212; doesn&#39;t accumulate. Over months of use, that compounds into a meaningful reduction in total computation.
</p>
<p class=\"reveal\" style=\"transition-delay:280ms;font-family:var(--body);font-weight:300;font-size:1rem;color:var(--t2);line-height:1.8\">
This isn&#39;t a green marketing claim. It&#39;s a consequence of the design. The same architecture that makes Neuron better for you also makes it lighter on the planet.
</p>
</div>
<div style=\"display:flex;flex-direction:column;gap:1.5rem;padding-top:1rem\">
<div class=\"reveal card-dark\" style=\"transition-delay:100ms;padding:1.75rem 2rem;border-left:3px solid rgba(0,120,84,.40)\">
<p style=\"font-family:var(--body);font-size:0.7rem;font-weight:600;letter-spacing:0.18em;text-transform:uppercase;color:rgba(0,120,84,.70);margin-bottom:0.75rem\">Local inference</p>
<p style=\"font-family:var(--body);font-weight:400;font-size:0.9375rem;color:var(--t1);margin-bottom:0.5rem\">Your GPU, already powered on</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.875rem;color:var(--t2);line-height:1.7\">
When you run inference locally via Ollama, your device&#39;s GPU handles it &#8212; hardware that&#39;s already consuming power. No data center spins up a cluster for your query. No round-trip. No idle servers waiting at scale.
</p>
</div>
<div class=\"reveal card-dark\" style=\"transition-delay:200ms;padding:1.75rem 2rem;border-left:3px solid rgba(0,120,84,.40)\">
<p style=\"font-family:var(--body);font-size:0.7rem;font-weight:600;letter-spacing:0.18em;text-transform:uppercase;color:rgba(0,120,84,.70);margin-bottom:0.75rem\">No database server for your data</p>
<p style=\"font-family:var(--body);font-weight:400;font-size:0.9375rem;color:var(--t1);margin-bottom:0.5rem\">SQLite on your machine</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.875rem;color:var(--t2);line-height:1.7\">
Your memory graph lives in a single SQLite file. No cloud database servers running 24&#x2F;7 to store and serve your conversations. No replication across availability zones. Just a file on your device.
</p>
</div>
<div class=\"reveal card-dark\" style=\"transition-delay:300ms;padding:1.75rem 2rem;border-left:3px solid rgba(0,120,84,.40)\">
<p style=\"font-family:var(--body);font-size:0.7rem;font-weight:600;letter-spacing:0.18em;text-transform:uppercase;color:rgba(0,120,84,.70);margin-bottom:0.75rem\">Persistent context = less recomputation</p>
<p style=\"font-family:var(--body);font-weight:400;font-size:0.9375rem;color:var(--t1);margin-bottom:0.5rem\">Remembered once, retrieved — not re-derived</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.875rem;color:var(--t2);line-height:1.7\">
The structured memory graph means Neuron retrieves relevant context rather than re-inferring it from long conversation histories. Shorter, more targeted prompts. Less total token processing per useful outcome.
</p>
</div>
<div class=\"reveal\" style=\"transition-delay:400ms;padding:1.25rem 1.75rem;background:rgba(0,0,0,.03);border:1px solid rgba(0,0,0,.07);border-radius:2px\">
<p style=\"font-family:var(--body);font-size:0.8125rem;font-weight:300;color:var(--t3);line-height:1.7\">
<strong style=\"font-weight:500;color:var(--t2)\">The honest picture:</strong> When you use Neuron with BYOK providers (OpenAI, Anthropic, Groq) or Neuron Inference, those queries travel to inference servers &#8212; that footprint exists. The savings come from the architecture: persistent memory and local-first design reduce the total computation required to get the same work done.
</p>
</div>
</div>
</div>
</div>
</section>
"
}
+36
View File
@@ -0,0 +1,36 @@
// components/footer.el Site footer.
fn footer() -> String {
return "
<footer id=\"footer\" aria-label=\"Footer\">
<div class=\"container\">
<div class=\"footer-inner\">
<a href=\"/\" class=\"footer-brand\" aria-label=\"Neuron home\">
<p class=\"footer-brand-name\">Neuron</p>
<p class=\"footer-brand-tagline\">Built Different.</p>
</a>
<div class=\"footer-center\">
<div class=\"navy-line\"></div>
</div>
<div class=\"footer-right\">
<p class=\"footer-domain\">neurontechnologies.ai</p>
<nav class=\"footer-nav\" aria-label=\"Footer navigation\">
<a href=\"/legal/terms\">Terms</a>
<a href=\"/legal/enterprise-terms\">Enterprise Agreement</a>
<a href=\"mailto:legal@neurontechnologies.ai\">Contact</a>
</nav>
</div>
</div>
<div class=\"footer-bottom\">
<p class=\"footer-copy\">&copy; 2026 Neuron Technologies. All rights reserved.</p>
<p class=\"footer-tagline-bottom\">Your memory. Your AI.</p>
</div>
</div>
</footer>
"
}
+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>
"
}
+54
View File
@@ -0,0 +1,54 @@
// components/how_it_works.el "Three moments. Permanent context." steps.
fn how_it_works() -> String {
return "
<section id=\"how-it-works\" aria-label=\"How it works\">
<div class=\"container\">
<div class=\"hiw-header\">
<div class=\"navy-line\" style=\"margin-bottom:5rem\"></div>
<div class=\"hiw-label-row reveal\">
<div class=\"navy-line-left\" style=\"width:4rem;flex-shrink:0\"></div>
<span class=\"label\">How it works</span>
</div>
<h2 class=\"display-lg hiw-headline reveal\" style=\"transition-delay:80ms\">
Three moments.<br>
<span class=\"gold\">Permanent context.</span>
</h2>
</div>
<div class=\"steps-grid\">
<div class=\"reveal\">
<div class=\"step-circle-row\">
<div class=\"step-circle\"><span class=\"step-num\">01</span></div>
<span class=\"step-aside\">5 minutes</span>
</div>
<h3 class=\"display-md step-title\">Install</h3>
<p class=\"step-body\">A single command. Runs locally on your machine. No account creation, no cloud sync, no permissions you didn&#39;t grant.</p>
</div>
<div class=\"reveal\" style=\"transition-delay:180ms\">
<div class=\"step-circle-row\">
<div class=\"step-circle\"><span class=\"step-num\">02</span></div>
<span class=\"step-aside\">Just once</span>
</div>
<h3 class=\"display-md step-title\">Your first session</h3>
<p class=\"step-body\">Introduce yourself once. Neuron builds a model of your work, your preferences, and your context from the first conversation.</p>
</div>
<div class=\"reveal\" style=\"transition-delay:360ms\">
<div class=\"step-circle-row\">
<div class=\"step-circle\"><span class=\"step-num\">03</span></div>
<span class=\"step-aside\">Every session</span>
</div>
<h3 class=\"display-md step-title\">Never start over</h3>
<p class=\"step-body\">Open a new session days or months later. Neuron remembers. Every project, every decision, every thread &#8212; exactly where you left it.</p>
</div>
</div>
</div>
</section>
"
}
+61
View File
@@ -0,0 +1,61 @@
// components/inference.el Neuron inference section.
// "My model. My infrastructure. Cheaper than theirs."
fn inference() -> String {
return "
<section id=\"inference\" aria-label=\"Neuron inference\">
<div class=\"container\">
<div class=\"inference-grid\">
<div>
<div class=\"inference-label-row reveal\">
<div class=\"navy-line-left\" style=\"width:3rem;flex-shrink:0\"></div>
<span class=\"label\">Neuron inference &#8212; live day one</span>
</div>
<h2 class=\"display-lg inference-headline reveal\" style=\"transition-delay:80ms\">
My model. My infrastructure.
<span class=\"gold\"> Cheaper than theirs.</span>
</h2>
<p class=\"inference-body reveal\" style=\"transition-delay:160ms\">
Four companies control nearly all frontier AI inference today. Every query you send strengthens their position &#8212; and their pricing power over you. That changes today.
</p>
<p class=\"inference-body reveal\" style=\"transition-delay:240ms\">
Neuron is both the product and the model. Purpose-built for how Neuron thinks, how your context is structured, how to do more with fewer tokens. It runs on Soma, our own inference infrastructure. Priced below OpenAI, Anthropic, and Google from day one. Not as a loss leader. As a permanent competitive position.
</p>
<p class=\"inference-body reveal\" style=\"transition-delay:320ms\">
You can still route to your own API keys if you want &#8212; Anthropic, OpenAI, whoever. But when we&#39;re cheaper, faster, and the model knows Neuron&#39;s architecture from the inside, why would you?
</p>
<p class=\"inference-body reveal\" style=\"transition-delay:400ms\">
Every user on Neuron inference is compute that doesn&#39;t flow to the monopoly. That&#39;s not just a cost story. It&#39;s a power one.
</p>
</div>
<div class=\"inference-stats\">
<div class=\"stat-row reveal\">
<div class=\"stat-row-head\">
<span class=\"stat-num\">4</span>
<span class=\"stat-label\">Companies control frontier inference</span>
</div>
<p class=\"stat-body\">OpenAI, Google, Anthropic, Meta. Nearly every AI query flows through them. We&#39;re building the exit ramp.</p>
</div>
<div class=\"stat-row reveal\" style=\"transition-delay:120ms\">
<div class=\"stat-row-head\">
<span class=\"stat-num\">Neuron</span>
<span class=\"stat-label\">The model &#8212; live on day one</span>
</div>
<p class=\"stat-body\">Built on Qwen3 &#8212; open weights, Sonnet-equivalent capability. Neuron wraps it with your full context, your memory graph, and years of accumulated intelligence. The model is the floor. Neuron is the ceiling.</p>
</div>
<div class=\"stat-row reveal\" style=\"transition-delay:240ms\">
<div class=\"stat-row-head\">
<span class=\"stat-num\">&lt; theirs</span>
<span class=\"stat-label\">Priced below the incumbents</span>
</div>
<p class=\"stat-body\">Below OpenAI&#39;s API pricing at launch. Below Anthropic&#39;s. Below Google&#39;s. Metered &#8212; you pay for what you use, not a flat subscription. And cheaper than any of them on every tier.</p>
</div>
</div>
</div>
</div>
</section>
"
}
-1463
View File
File diff suppressed because one or more lines are too long
+83
View File
@@ -0,0 +1,83 @@
// components/local_first.el Privacy principles / local-first manifesto.
// Left: manifesto text. Right: six sticky principles.
fn local_first() -> String {
return "
<section id=\"local-first\" aria-label=\"Local-first\">
<div class=\"container-lg\">
<div class=\"lf-label-row reveal\">
<div class=\"navy-line-left\" style=\"width:3rem;flex-shrink:0\"></div>
<span class=\"label\" style=\"color:var(--navy-85)\">Local first</span>
</div>
<div class=\"lf-grid\">
<div>
<h2 class=\"display-lg lf-headline reveal\">You are not the product.</h2>
<p class=\"lf-manifesto-para reveal\" style=\"transition-delay:100ms\">
The company that gave you free search built the most powerful ad-targeting machine in history. The one that promised to connect the world optimized it for outrage &#8212; because outrage drives engagement, and engagement drives revenue. The one that gave everyone a voice sold that attention to the highest bidder. These aren&#39;t accidents. They&#39;re the business model.
</p>
<p class=\"lf-manifesto-para reveal\" style=\"transition-delay:200ms\">
I&#39;ve watched this play out across two decades. Every free product is the same transaction: something useful in exchange for something you didn&#39;t know you were selling &#8212; your attention, your behavior, your future choices. The product is always &#8220;free.&#8221; The price is always you.
</p>
<p class=\"lf-manifesto-para reveal\" style=\"transition-delay:300ms\">
The harm is real. Teenage depression rates tracked the rise of algorithmic social feeds. Political polarization accelerated when engagement algorithms learned that outrage outperformed nuance. Billions of people had their data harvested, leaked, and weaponized &#8212; often without knowing. Democratic processes were manipulated at scale. And in every case, the companies responsible kept growing.
</p>
<p class=\"lf-manifesto-para reveal\" style=\"transition-delay:400ms\">
Now AI is doing the same thing &#8212; faster and deeper. Your queries train their models. Your thought patterns become datasets. The way you reason, what you struggle with, what you&#39;re afraid of &#8212; it&#39;s all captured. You get a useful tool. They get a map of your mind.
</p>
<div class=\"lf-manifesto-closer reveal\" style=\"transition-delay:600ms\">
<p>
Neuron is a direct rejection of that model. It runs on your machine. <strong>Your memory never leaves.</strong> I don&#39;t sell data, serve ads, or profile you. The only thing I sell is the software &#8212; and once you have it, it&#39;s yours.
</p>
</div>
</div>
<div class=\"lf-principles\">
<div class=\"lf-principle reveal\">
<p class=\"lf-principle-label\">Your machine. Full stop.</p>
<p class=\"lf-principle-body\">Neuron runs on your hardware. The memory graph, the agent loop, every conversation &#8212; none of it leaves your machine. Not to my servers. Not to anyone&#39;s.</p>
</div>
<div class=\"lf-principle reveal\" style=\"transition-delay:120ms\">
<p class=\"lf-principle-label\">No training on your data.</p>
<p class=\"lf-principle-body\">Your queries don&#39;t improve a model you don&#39;t own. Your patterns aren&#39;t analyzed to serve you better ads. Your context belongs to you &#8212; not a training pipeline.</p>
</div>
<div class=\"lf-principle reveal\" style=\"transition-delay:240ms\">
<p class=\"lf-principle-label\">No ads. Ever.</p>
<p class=\"lf-principle-body\">Not on the free tier. Not on paid. Not in any future version. Ads require surveillance. Surveillance requires your data. I&#39;m not building that.</p>
</div>
<div class=\"lf-principle reveal\" style=\"transition-delay:360ms\">
<p class=\"lf-principle-label\">No telemetry for local use.</p>
<p class=\"lf-principle-body\">When Neuron runs locally, I don&#39;t collect usage data. When you opt into Neuron cloud services &#8212; sync, backup, inbox &#8212; those services use the data they need to function. Nothing more.</p>
</div>
<div class=\"lf-principle reveal\" style=\"transition-delay:480ms\">
<p class=\"lf-principle-label\">Nothing to breach.</p>
<p class=\"lf-principle-body\">I can&#39;t be hacked for your data because I don&#39;t have it. I can&#39;t be subpoenaed for your conversations because I&#39;ve never seen them. I can&#39;t expose what I&#39;ve never held. Your data living on your machine isn&#39;t just a privacy stance &#8212; it&#39;s a security one.</p>
</div>
<div class=\"lf-principle reveal\" style=\"transition-delay:600ms\">
<p class=\"lf-principle-label\">Unreadable even if taken.</p>
<p class=\"lf-principle-body\">Everything Neuron touches is encrypted with post-quantum cryptography &#8212; ML-KEM for key exchange, ML-DSA for signatures. Both are NIST-finalized standards (FIPS 203/204), already deployed at scale across the web. Designed to withstand quantum computers, not just the ones that exist today.</p>
</div>
</div>
</div>
<div class=\"lf-callout reveal\">
<p class=\"lf-callout-h\">The industry remembers you for them.</p>
<p class=\"lf-callout-h2\">Neuron remembers you for you.</p>
<p class=\"lf-callout-sub\">Local-first isn&#39;t a feature. It&#39;s a commitment.</p>
</div>
</div>
</section>
"
}
+296 -4
View File
@@ -1,7 +1,299 @@
// main.el Neuron landing page server
// main.el Neuron landing page server.
//
// Serves the Neuron marketing landing page at port 3001.
// Written in El (the Engram language). Runs on the El VM (elvm).
//
// The El HTTP server intercepts GET / and serves __html_file__ directly.
// We generate the page at startup with El components, write it to
// src/index.html, and set __html_file__ to that path.
//
// This means the document is always El-generated never hand-authored.
// The El runtime serves it with the correct Content-Type: text/html header.
//
// Execution:
// el run (builds + executes via the El VM)
//
// Routes:
// GET / landing page (El-rendered, served by runtime)
// GET /api/health {"status":"ok"}
// GET /api/founding-count {"remaining":N,"sold":N,"total":N}
// GET /assets/* static assets (served by runtime from src/assets/)
// GET /brand/* brand assets via handle_request
// GET * 404 JSON (non-/ paths not used by this SPA)
let html_path: String = cwd() + "/src/landing.html"
println("Neuron landing · serving " + html_path)
state_set("__html_file__", html_path)
from nav import { nav }
from hero import { hero }
from pillars import { pillars }
from how_it_works import { how_it_works }
from inference import { inference }
from efficiency import { efficiency }
from comparison import { comparison }
from environmental import { environmental }
from enterprise import { enterprise }
from mission import { mission }
from local_first import { local_first }
from pricing import { pricing }
from viral import { viral }
from footer import { footer }
from styles import { page_open, page_close }
from about import { about_page }
from terms import { terms_page }
from enterprise_terms import { enterprise_terms_page }
// Founding counter
let FOUNDING_TOTAL: Int = 1000
let FOUNDING_SOLD: Int = 47
// Founding count helpers
fn get_sold() -> Int {
let s: String = state_get("__founding_sold__")
if str_eq(s, "") {
return FOUNDING_SOLD
}
return parse_int(s)
}
fn get_total() -> Int {
let s: String = state_get("__founding_total__")
if str_eq(s, "") {
return FOUNDING_TOTAL
}
return parse_int(s)
}
// Page assembly
fn page(sold: Int, total: Int) -> String {
return page_open()
+ nav()
+ hero()
+ pillars()
+ how_it_works()
+ inference()
+ efficiency()
+ comparison()
+ enterprise()
+ mission()
+ local_first()
+ environmental()
+ pricing(sold, total)
+ viral()
+ footer()
+ page_close()
}
// Static asset serving
fn read_asset(abs_path: String) -> String {
let exists: Bool = fs_exists(abs_path)
if !exists {
return ""
}
return fs_read(abs_path)
}
// Request handler
//
// NOTE: GET / is intercepted by the El HTTP runtime before reaching this
// function it serves __html_file__ directly with text/html.
// This handler covers /api/* and /brand/* routes.
fn handle_request(method: String, path: String, body: String) -> String {
let src_dir: String = state_get("__src_dir__")
// About page
if str_eq(path, "/about") {
let about_path: String = state_get("__about_html_file__")
if !str_eq(about_path, "") {
return fs_read(about_path)
}
return "{\"__status__\":404,\"error\":\"not found\"}"
}
// Terms of Service
if str_eq(path, "/legal/terms") {
let terms_path: String = state_get("__terms_html_file__")
if !str_eq(terms_path, "") {
return fs_read(terms_path)
}
return "{\"__status__\":404,\"error\":\"not found\"}"
}
// Enterprise Agreement
if str_eq(path, "/legal/enterprise-terms") {
let ent_path: String = state_get("__enterprise_terms_html_file__")
if !str_eq(ent_path, "") {
return fs_read(ent_path)
}
return "{\"__status__\":404,\"error\":\"not found\"}"
}
// Health check
if str_eq(path, "/api/health") {
return "{\"status\":\"ok\",\"service\":\"neuron-landing\"}"
}
// Founding count
if str_eq(path, "/api/founding-count") {
let sold: Int = get_sold()
let total: Int = get_total()
let remaining: Int = total - sold
let sold_s: String = int_to_str(sold)
let total_s: String = int_to_str(total)
let rem_s: String = int_to_str(remaining)
return "{\"sold\":" + sold_s + ",\"total\":" + total_s + ",\"remaining\":" + rem_s + "}"
}
// Brand assets: /brand/*
if str_starts_with(path, "/brand/") {
let rel: String = str_slice(path, 7, str_len(path))
let abs: String = src_dir + "/brand/" + rel
let content: String = read_asset(abs)
if str_eq(content, "") {
return "{\"__status__\":404,\"error\":\"not found\"}"
}
return content
}
// Stripe checkout
if str_eq(path, "/api/checkout") {
let stripe_key: String = state_get("__stripe_secret_key__")
if str_eq(stripe_key, "") {
return "{\"__status__\":503,\"error\":\"Stripe not configured\"}"
}
let plan: String = "founding"
if str_contains(body, "\"professional\"") {
plan = "professional"
}
let origin: String = "http://localhost:3001"
let price_id: String = ""
let mode: String = "subscription"
if str_eq(plan, "founding") {
price_id = state_get("__stripe_price_founding__")
mode = "payment"
}
if str_eq(plan, "professional") {
price_id = state_get("__stripe_price_professional__")
mode = "subscription"
}
if str_eq(price_id, "") {
return "{\"__status__\":503,\"error\":\"Plan price not configured\"}"
}
let form_body: String = "mode=" + mode
+ "&line_items[0][price]=" + price_id
+ "&line_items[0][quantity]=1"
+ "&success_url=" + origin + "/marketplace/success?session_id={CHECKOUT_SESSION_ID}"
+ "&cancel_url=" + origin + "/#pricing"
+ "&allow_promotion_codes=true"
+ "&metadata[plan]=" + plan
let response: String = http_post_form_auth(
"https://api.stripe.com/v1/checkout/sessions",
stripe_key,
form_body
)
if str_contains(response, "\"url\"") {
return response
}
return "{\"__status__\":500,\"error\":\"Stripe session creation failed\"}"
}
// Stripe webhook
if str_eq(path, "/api/webhooks/stripe") {
if str_contains(body, "checkout.session.completed") {
let license_api: String = state_get("__license_api_url__")
if !str_eq(license_api, "") {
let resp: String = http_post(license_api + "/api/v1/webhooks/stripe", body)
println("[webhook] forwarded to license API: " + resp)
}
}
return "{\"received\":true}"
}
// Checkout success
if str_eq(path, "/marketplace/success") {
return page_open() + "
<div style=\"min-height:80vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:4rem 2rem\">
<p class=\"label\" style=\"margin-bottom:1.5rem\">Purchase complete</p>
<h1 class=\"display-lg\" style=\"margin-bottom:1.25rem\">Welcome to Neuron.</h1>
<p style=\"font-family:var(--body);font-weight:300;font-size:1.1rem;color:var(--t2);max-width:28rem;line-height:1.7;margin-bottom:2.5rem\">
Your license is being provisioned. Check your email in the next few minutes &#8212; your license key and download instructions will be waiting.
</p>
<a href=\"/\" class=\"btn-primary\">Back to home &#8594;</a>
</div>
" + page_close()
}
// Fallback
return "{\"__status__\":404,\"error\":\"not found\"}"
}
// Startup
//
// 1. Generate the landing page HTML using El components.
// 2. Write it to src/index.html (El-generated, never hand-authored).
// 3. Set __html_file__ so the El HTTP runtime serves it for GET /.
// The runtime also uses __html_file__'s parent dir for /assets/* serving.
let src_dir: String = cwd() + "/src"
let html_path: String = src_dir + "/index.html"
// Generate page HTML with founding counter seed values.
let page_html: String = page(FOUNDING_SOLD, FOUNDING_TOTAL)
// Write El-generated HTML to disk.
fs_write(html_path, page_html)
// Generate about page HTML.
let about_html_path: String = src_dir + "/about.html"
let about_html: String = page_open() + about_page() + page_close()
fs_write(about_html_path, about_html)
// Generate terms pages HTML.
let terms_html_path: String = src_dir + "/terms.html"
let ent_terms_html_path: String = src_dir + "/enterprise-terms.html"
fs_write(terms_html_path, terms_page())
fs_write(ent_terms_html_path, enterprise_terms_page())
// Register with El HTTP runtime.
state_set("__html_file__", html_path)
state_set("__about_html_file__", about_html_path)
state_set("__terms_html_file__", terms_html_path)
state_set("__enterprise_terms_html_file__", ent_terms_html_path)
state_set("__src_dir__", src_dir)
state_set("__founding_sold__", int_to_str(FOUNDING_SOLD))
state_set("__founding_total__", int_to_str(FOUNDING_TOTAL))
// Stripe config from environment.
let stripe_key: String = env("STRIPE_SECRET_KEY")
let stripe_price_founding: String = env("STRIPE_PRICE_FOUNDING")
let stripe_price_professional: String = env("STRIPE_PRICE_PROFESSIONAL")
let license_api_url: String = env("NEURON_LICENSE_API_URL")
state_set("__stripe_secret_key__", stripe_key)
state_set("__stripe_price_founding__", stripe_price_founding)
state_set("__stripe_price_professional__", stripe_price_professional)
state_set("__license_api_url__", license_api_url)
println(color_bold("Neuron landing") + " — http://localhost:3001")
println(" HTML generated by El → " + html_path)
println(" About generated by El → " + about_html_path)
println(" Terms generated by El → " + terms_html_path)
println(" Ent. Terms generated by El → " + ent_terms_html_path)
println(" Assets → " + src_dir + "/assets/")
println("")
println(" Routes:")
println(" GET / → El-generated landing page")
println(" GET /about → El-generated about page")
println(" GET /legal/terms → Consumer terms of service")
println(" GET /legal/enterprise-terms → Enterprise agreement")
println(" GET /api/health → health check")
println(" GET /api/founding-count → founding counter JSON")
println(" POST /api/checkout → Stripe checkout session")
println(" POST /api/webhooks/stripe → Stripe webhook")
println(" GET /marketplace/success → post-purchase success page")
println(" GET /assets/* → static files")
println(" GET /brand/* → brand files")
println("")
http_serve(3001)
+89
View File
@@ -0,0 +1,89 @@
// components/mission.el Origin story + manifesto + problems grid.
fn mission() -> String {
return "
<section id=\"mission\" aria-label=\"Mission\">
<div class=\"container\">
<div class=\"navy-line\" style=\"margin-bottom:5rem\"></div>
<div class=\"mission-origin\">
<div class=\"mission-label-row reveal\">
<div class=\"navy-line-left\" style=\"width:4rem;flex-shrink:0\"></div>
<span class=\"label\">The mission</span>
<div style=\"height:1px;width:4rem;background:linear-gradient(to left,transparent,rgba(0,82,160,.35));flex-shrink:0\"></div>
</div>
<h2 class=\"display-lg mission-headline reveal\" style=\"transition-delay:80ms\">Why I built this</h2>
<p class=\"mission-body-para reveal\" style=\"transition-delay:160ms\">
Every AI tool you use today resets when you close the tab. It doesn&#39;t know you tomorrow. It doesn&#39;t remember what mattered yesterday. It can&#39;t grow with you over years.
</p>
<p class=\"mission-body-para reveal\" style=\"transition-delay:240ms\">
I built Neuron because intelligence should compound. The same way a great mentor gets more valuable the longer you work with them &#8212; knowing your context, your patterns, your goals &#8212; your AI should too.
</p>
<p class=\"mission-body-para mission-body-emphasis reveal\" style=\"transition-delay:320ms\">
Neuron is private by design. It runs on your hardware. <strong>Your data never leaves your machine.</strong> No training on your data. No telemetry. No cloud dependency.
</p>
<p class=\"mission-body-para reveal\" style=\"transition-delay:400ms\">
This isn&#39;t a chat interface. It&#39;s the AI that becomes yours.
</p>
</div>
<div class=\"mission-bigtech reveal\" style=\"transition-delay:600ms\">
<p class=\"mission-bigtech-label\">Why I stopped trying to partner with Big Tech</p>
<p>
I didn&#39;t just approach one of the largest technology companies in the world &#8212; I got the meeting. Got the NDAs signed. Created deliverables in real time. Showed them industry benchmarks with full auditability. Some of their own people could see exactly what it meant &#8212; what I had built and what it could do.
</p>
<p>
They saw it. Seemed to engage meaningfully. Then, within two days, lawyers were engaged. Their stated concern: defending against me accusing them of stealing my IP. I laughed to myself &#8212; <em>wait, are they going to steal my IP?</em> &#8212; and decided to just finish the project on my own.
</p>
<p class=\"muted\">
By the way: everything you see here, and more, is protected by six patents &#8212; and more are coming. They know about the patents. Are they going to try?
</p>
<p class=\"muted\">
Not: how do we solve this at scale? Not: what does this mean for the people we serve? Their instinct was to protect enterprise revenue and manage legal exposure. The actual human impact of their technology &#8212; the people whose lives those enterprises touch &#8212; didn&#39;t enter the conversation.
</p>
<p class=\"muted\">
That&#39;s the difference. <strong style=\"color:var(--t1)\">They&#39;re optimizing for the enterprise. I&#39;m building for the people those enterprises are supposed to serve.</strong>
</p>
<p>
I told them I could build and distribute this by myself. Maybe they didn&#39;t believe me. That meeting was April 22nd, 2026. I&#39;m writing this on April 25th. You&#39;re looking at the proof. <a href=\"/marketplace/plans\">I hope you&#39;ll download it.</a>
</p>
</div>
<div class=\"mission-problems\">
<div class=\"mission-sub-row reveal\">
<div class=\"mission-sub-line\"></div>
<span class=\"label\">What I&#39;m building against</span>
</div>
<div class=\"problems-grid\">
<div class=\"problem-item reveal\">
<p class=\"problem-label\">Synthetic media without accountability</p>
<p class=\"problem-body\">Generative AI makes it trivially easy to produce harmful content at scale &#8212; and nearly impossible to trace. This is a problem the industry is largely ignoring. I&#39;m not. I&#39;m engaged with it seriously and expect to have answers in place before it becomes unmanageable.</p>
</div>
<div class=\"problem-item reveal\" style=\"transition-delay:120ms\">
<p class=\"problem-label\">Epistemic collapse</p>
<p class=\"problem-body\">AI can now generate persuasive content at any volume, on any position. The next generation is growing up in an environment where signal and noise are becoming indistinguishable. I think deeply about what it means to build tools that contribute to that problem &#8212; and how to build ones that don&#39;t.</p>
</div>
<div class=\"problem-item reveal\" style=\"transition-delay:240ms\">
<p class=\"problem-label\">Concentration of inference</p>
<p class=\"problem-body\">Four companies control nearly all frontier AI inference. Every query strengthens their position. I think that concentration of power is a structural risk &#8212; not just a pricing problem &#8212; and I&#39;m building with that in mind.</p>
</div>
<div class=\"problem-item reveal\" style=\"transition-delay:360ms\">
<p class=\"problem-label\">The accountability gap</p>
<p class=\"problem-body\">When an AI agent takes a bad action, there is currently no clear legal or technical accountability. That&#39;s going to matter more as agents do more. I take this seriously. I&#39;m building toward answers &#8212; not waiting for regulators to force the question.</p>
</div>
<div class=\"problems-grid-bottom\"></div>
</div>
<div class=\"mission-closer reveal\">
<p>The industry built tools to make AI easier to use. <span>I&#39;m building tools to make it safer to trust.</span></p>
</div>
</div>
</div>
<div class=\"container\" style=\"margin-top:5rem\"><div class=\"navy-line\"></div></div>
</section>
"
}
+26
View File
@@ -0,0 +1,26 @@
// components/nav.el Top navigation bar.
//
// Returns an HTML string. Server-rendered, no JavaScript required for
// the nav structure itself. Scroll-based opacity is CSS-only via
// :has() and scroll-driven animations where supported; we default to
// a clean transparent state that looks great on first load.
fn nav() -> String {
return "
<nav id=\"nav\">
<div class=\"nav-inner\">
<a href=\"/\" class=\"nav-logo\" aria-label=\"Neuron home\"><img src=\"/assets/brand/neuron-wordmark-on-light.png\" srcset=\"/assets/brand/neuron-wordmark-on-light@2x.png 2x\" alt=\"Neuron\" height=\"28\"></a>
<div class=\"nav-links\">
<a href=\"#how-it-works\" class=\"nav-link\">How it works</a>
<a href=\"#mission\" class=\"nav-link\">Mission</a>
<a href=\"#pricing\" class=\"nav-link\">Pricing</a>
<a href=\"#enterprise\" class=\"nav-link\">Enterprise</a>
<a href=\"/about\" class=\"nav-link\">About</a>
<a href=\"/docs\" class=\"nav-link\">Docs</a>
<a href=\"#share\" class=\"nav-link cta\">Share Neuron →</a>
<a href=\"#pricing\" class=\"nav-cta\">Get Access</a>
</div>
</div>
</nav>
"
}
+45
View File
@@ -0,0 +1,45 @@
// components/pillars.el Three core pillars section.
//
// I. Remembers / II. Learns / III. Yours
// Cards use reveal animation class (CSS IntersectionObserver polyfill
// provided by a tiny inline <script> in the page shell).
fn pillars() -> String {
return "
<section id=\"pillars\" aria-label=\"Core pillars\">
<div class=\"container\">
<div class=\"pillars-label reveal\">
<div class=\"navy-line-left\" style=\"width:4rem;flex-shrink:0\"></div>
<span class=\"label\">Why Neuron</span>
</div>
<div class=\"pillars-grid\">
<div class=\"pillar-card card-dark reveal\">
<span class=\"pillar-numeral\" aria-hidden=\"true\">I</span>
<h3 class=\"display-md pillar-title\">Remembers</h3>
<div class=\"pillar-rule\"></div>
<p class=\"pillar-body\">Every session picks up where you left off. Every project. Every context. No more re-explaining who you are, what you&#39;re building, or what matters to you.</p>
<p class=\"pillar-detail\">Zero re-orientation</p>
</div>
<div class=\"pillar-card card-dark reveal\" style=\"transition-delay:150ms\">
<span class=\"pillar-numeral\" aria-hidden=\"true\">II</span>
<h3 class=\"display-md pillar-title\">Learns</h3>
<div class=\"pillar-rule\"></div>
<p class=\"pillar-body\">Gets better at you specifically. Not a generic assistant &#8212; yours. The longer you use it, the sharper it becomes. Neuron inference is live day one &#8212; a model purpose-built to work with your memory graph, your context, your way of thinking.</p>
<p class=\"pillar-detail\">Specific to you</p>
</div>
<div class=\"pillar-card card-dark reveal\" style=\"transition-delay:300ms\">
<span class=\"pillar-numeral\" aria-hidden=\"true\">III</span>
<h3 class=\"display-md pillar-title\">Yours</h3>
<div class=\"pillar-rule\"></div>
<p class=\"pillar-body\">Runs locally. Your data never leaves. No cloud dependency, no telemetry, no training on your conversations. Complete ownership. And unlike every other AI subscription &#8212; we&#39;re not charging you to remember you.</p>
<p class=\"pillar-detail\">Fully private</p>
</div>
</div>
</div>
</section>
"
}
+145
View File
@@ -0,0 +1,145 @@
// components/pricing.el Three pricing cards: Free / Professional / Founding Member.
// Accepts the founding counter values as parameters so main.el can inject
// server-side rendered counts without JS.
fn founding_spots_html(sold: Int, total: Int) -> String {
let remaining: Int = total - sold
let pct: Int = (sold * 100) / total
let pct_str: String = int_to_str(pct)
let remaining_str: String = int_to_str(remaining)
let sold_str: String = int_to_str(sold)
let total_str: String = int_to_str(total)
return "
<div class=\"founding-spots\">
<p class=\"founding-spots-label\">Only " + remaining_str + " left</p>
<div class=\"founding-spots-bar\"><div class=\"founding-spots-fill\" style=\"width:" + pct_str + "%\"></div></div>
<p class=\"founding-spots-sub\">" + sold_str + " of " + total_str + " claimed</p>
</div>
"
}
fn pricing(sold: Int, total: Int) -> String {
let spots_html: String = founding_spots_html(sold, total)
let remaining: Int = total - sold
let pct: Int = (sold * 100) / total
let pct_str: String = int_to_str(pct)
let remaining_str: String = int_to_str(remaining)
let total_str: String = int_to_str(total)
return "
<section id=\"pricing\" aria-label=\"Pricing\">
<div class=\"container\">
<div class=\"pricing-header\">
<div class=\"pricing-label-row reveal\">
<div style=\"height:1px;width:4rem;background:linear-gradient(to right,transparent,rgba(0,82,160,.35))\"></div>
<span class=\"label\" style=\"color:var(--navy-85)\">Pricing</span>
<div style=\"height:1px;width:4rem;background:linear-gradient(to left,transparent,rgba(0,82,160,.35))\"></div>
</div>
<h2 class=\"display-lg pricing-headline reveal\" style=\"transition-delay:80ms\">Own it. Don&#39;t rent it.</h2>
<p class=\"pricing-sub reveal\" style=\"transition-delay:160ms\">Neuron inference on every paid plan. Cheaper than OpenAI, Anthropic, and Google &#8212; on day one.</p>
</div>
<div class=\"pricing-grid\">
<div class=\"pricing-card card-dark reveal\">
<p class=\"pricing-tier\">Free</p>
<div class=\"pricing-price-row\">
<span class=\"pricing-price\">$0</span>
<span class=\"pricing-cadence\">forever</span>
</div>
<p class=\"pricing-tagline\">Start building your memory. No card required.</p>
<ul class=\"pricing-features\">
<li><span class=\"dash\">-</span><span>Persistent memory &#8212; never resets</span></li>
<li><span class=\"dash\">-</span><span>Neuron inference &#8212; metered, priced below OpenAI and Anthropic</span></li>
<li><span class=\"dash\">-</span><span>Local inference via Ollama</span></li>
<li><span class=\"dash\">-</span><span>Bring your own API keys (optional)</span></li>
<li><span class=\"dash\">-</span><span>Unlimited projects</span></li>
<li><span class=\"dash\">-</span><span>3 marketplace plugins included</span></li>
<li><span class=\"dash\">-</span><span>Core built-in capabilities</span></li>
</ul>
<div style=\"flex:1\"></div>
<div class=\"pricing-cta pricing-cta-ghost\">
<a href=\"https://github.com/neuron-technologies/neuron\">Download free &#8594;</a>
</div>
</div>
<div class=\"pricing-card card-dark reveal\" style=\"transition-delay:150ms\">
<p class=\"pricing-tier\">Professional</p>
<div class=\"pricing-price-row\">
<span class=\"pricing-price\">$19</span>
<span class=\"pricing-cadence\">/ month</span>
</div>
<p class=\"pricing-tagline\">Full access. Neuron inference &#8212; cheaper than what you&#39;re paying now.</p>
<ul class=\"pricing-features\">
<li><span class=\"dash\">-</span><span>Neuron inference &#8212; metered, below OpenAI and Anthropic rates</span></li>
<li><span class=\"dash\">-</span><span>ChatGPT Plus is $20/mo and forgets you every session. Neuron remembers everything and costs less per token.</span></li>
<li><span class=\"dash\">-</span><span>Everything in Free</span></li>
<li><span class=\"dash\">-</span><span>Unlimited projects</span></li>
<li><span class=\"dash\">-</span><span>Full plugin marketplace</span></li>
<li><span class=\"dash\">-</span><span>Advanced integrations &#8212; IDE, Slack, and more</span></li>
<li><span class=\"dash\">-</span><span>Early access to new features</span></li>
</ul>
<div style=\"flex:1\"></div>
<div class=\"pricing-cta pricing-cta-navy\">
<button class=\"pricing-cta-navy\" data-checkout=\"professional\">Get Started &#8594;</button>
</div>
</div>
<div class=\"pricing-card featured reveal\" style=\"transition-delay:300ms\">
<p class=\"pricing-tier\">Founding Member</p>
<div class=\"pricing-price-row\">
<span class=\"pricing-price\">$199</span>
<span class=\"pricing-cadence\">lifetime</span>
</div>
<p class=\"pricing-tagline\">Pay once. Neuron inference forever. No subscription, ever.</p>
" + spots_html + "
<ul class=\"pricing-features\">
<li><span class=\"dash\">-</span><span>Neuron inference &#8212; priced below competitors, forever, as it improves</span></li>
<li><span class=\"dash\">-</span><span>Everything in Professional &#8212; forever</span></li>
<li><span class=\"dash\">-</span><span>Never pay again &#8212; lifetime updates included</span></li>
<li><span class=\"dash\">-</span><span>Founding member badge in the app</span></li>
<li><span class=\"dash\">-</span><span>Private community &#8212; direct line to the team</span></li>
<li><span class=\"dash\">-</span><span>Shape the roadmap &#8212; your votes carry more weight</span></li>
<li><span class=\"dash\">-</span><span>Beta features before general release</span></li>
<li><span class=\"dash\">-</span><span>Name in the credits</span></li>
</ul>
<div style=\"flex:1\"></div>
<div class=\"pricing-cta pricing-cta-solid\">
<button class=\"pricing-cta-solid\" data-checkout=\"founding\">Claim your spot &#8594;</button>
</div>
</div>
</div>
<div class=\"founding-banner reveal\">
<div>
<p class=\"founding-banner-label\">Founding Member Spots</p>
<div style=\"display:flex;align-items:baseline;gap:.5rem;margin:.25rem 0\">
<span class=\"founding-banner-count\">" + remaining_str + "</span>
<span class=\"founding-banner-sub\">remaining of <span>" + total_str + "</span></span>
</div>
<div class=\"founding-banner-bar\"><div class=\"founding-banner-fill\" style=\"width:" + pct_str + "%\"></div></div>
</div>
<button class=\"btn-primary\" data-checkout=\"founding\" style=\"white-space:nowrap\">Claim spot &#8594;</button>
</div>
<p class=\"pricing-fine reveal\" style=\"margin-top:2.5rem\">
Neuron inference on all plans &nbsp;&middot;&nbsp; Bring your own keys if you want &nbsp;&middot;&nbsp; Your data stays yours &nbsp;&middot;&nbsp; Same support for every user
</p>
<div class=\"reveal\" style=\"margin-top:3rem;padding:1.5rem 2rem;border:1px solid rgba(0,82,160,.18);border-radius:8px;background:rgba(0,82,160,.03);\">
<p class=\"label\" style=\"margin-bottom:.75rem;font-size:.65rem\">For families</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:.9rem;color:var(--t2);line-height:1.8;\">
<strong style=\"color:var(--t1);font-weight:500\">Minors require a parent account.</strong>
Children and teens can&#39;t create accounts on their own &#8212; a parent or guardian creates the family account, configures access, and remains in the loop. The minor&#39;s experience is fully private from everyone except the trusted adult who set it up.
</p>
</div>
</div>
</section>
"
}
+1398
View File
File diff suppressed because it is too large Load Diff
+132
View File
@@ -0,0 +1,132 @@
// components/terms.el Consumer Terms of Service page.
// Returns complete HTML using the shared page shell from styles.el.
from styles import { page_open, page_close }
fn terms_page() -> String {
return page_open() + terms_body() + page_close()
}
fn terms_body() -> String {
return "
<div style=\"max-width:720px;margin:0 auto;padding:6rem 2.5rem 8rem\">
<div style=\"margin-bottom:3rem\">
<a href=\"/\" style=\"font-family:var(--body);font-size:0.75rem;font-weight:500;letter-spacing:0.15em;text-transform:uppercase;color:var(--navy);text-decoration:none\">&#8592; Neuron</a>
</div>
<div style=\"margin-bottom:4rem;border-bottom:1px solid var(--border);padding-bottom:3rem\">
<p class=\"label\" style=\"margin-bottom:1rem\">Legal</p>
<h1 style=\"font-family:var(--head);font-size:clamp(2rem,4vw,3rem);font-weight:600;color:var(--t1);margin-bottom:0.75rem;line-height:1.1\">Terms of Service</h1>
<p style=\"font-family:var(--body);font-size:0.875rem;color:var(--t3)\">Effective May 1, 2026 &nbsp;&middot;&nbsp; Neuron, LLC</p>
</div>
<div style=\"margin-bottom:3rem\">
<div style=\"display:flex;align-items:baseline;gap:1rem;margin-bottom:1.25rem;border-bottom:1px solid var(--border);padding-bottom:0.75rem\">
<span style=\"font-family:var(--body);font-size:0.75rem;font-weight:600;letter-spacing:0.15em;text-transform:uppercase;color:var(--navy-65)\">&#167; 1</span>
<h2 style=\"font-family:var(--head);font-size:1.25rem;font-weight:600;color:var(--t1)\">Using Neuron</h2>
</div>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem\">Using Neuron means you&#39;ve read these terms and agree to them. That&#39;s it. No buried consent, no dark patterns. If something here doesn&#39;t sit right with you, email us before using the product &#8212; we&#39;ll talk through it.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8\">These terms cover every version of Neuron: free, Professional, and Founding Member. Enterprise use has its own agreement. If you&#39;re deploying Neuron for an organization, that&#39;s the one you want.</p>
</div>
<div style=\"margin-bottom:3rem\">
<div style=\"display:flex;align-items:baseline;gap:1rem;margin-bottom:1.25rem;border-bottom:1px solid var(--border);padding-bottom:0.75rem\">
<span style=\"font-family:var(--body);font-size:0.75rem;font-weight:600;letter-spacing:0.15em;text-transform:uppercase;color:var(--navy-65)\">&#167; 2</span>
<h2 style=\"font-family:var(--head);font-size:1.25rem;font-weight:600;color:var(--t1)\">What You Can Do With It</h2>
</div>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem\">You can install and use Neuron on devices you own or control. That&#39;s the license. Personal, non-transferable.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem\">The free tier doesn&#39;t expire. Paid licenses are what they say they are. Founding Member licenses are perpetual &#8212; you bought it, you own it. I won&#39;t change that.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8\">You can&#39;t resell it, sublicense it, or redistribute it without asking first. If you want to do something creative with it, ask. The answer might be yes.</p>
</div>
<div style=\"margin-bottom:3rem\">
<div style=\"display:flex;align-items:baseline;gap:1rem;margin-bottom:1.25rem;border-bottom:1px solid var(--border);padding-bottom:0.75rem\">
<span style=\"font-family:var(--body);font-size:0.75rem;font-weight:600;letter-spacing:0.15em;text-transform:uppercase;color:var(--navy-65)\">&#167; 3</span>
<h2 style=\"font-family:var(--head);font-size:1.25rem;font-weight:600;color:var(--t1)\">Your Data</h2>
</div>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem\">Your memory graph, your conversations, your context &#8212; all of it lives on your device. I don&#39;t have access to it. I don&#39;t collect it. It doesn&#39;t move in the course of normal use.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem\">When you turn on network features &#8212; sync, relay, collaborative tools &#8212; only what those features need to run gets transmitted. Not your memory graph, not your conversations, unless you explicitly turn on something that shares them with people you&#39;ve chosen. I don&#39;t sell that data. I don&#39;t use it for anything except running the feature you asked for. Turning on a network feature is your consent to that.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem\">Network features route data through Neuron&#39;s messaging backplane. That data is encrypted end-to-end &#8212; we cannot read it &#8212; and is not stored or retained after transmission. Participating in the network is your consent to this transient routing.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8\">Your data is yours. Nothing in these terms gives me any claim to your content, your memory graph, or anything you create using Neuron.</p>
</div>
<div style=\"margin-bottom:3rem\">
<div style=\"display:flex;align-items:baseline;gap:1rem;margin-bottom:1.25rem;border-bottom:1px solid var(--border);padding-bottom:0.75rem\">
<span style=\"font-family:var(--body);font-size:0.75rem;font-weight:600;letter-spacing:0.15em;text-transform:uppercase;color:var(--navy-65)\">&#167; 4</span>
<h2 style=\"font-family:var(--head);font-size:1.25rem;font-weight:600;color:var(--t1)\">Inference</h2>
</div>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem\">Neuron routes inference to whatever provider you configure &#8212; your own keys for OpenAI, Anthropic, Groq, any compatible endpoint. When you use a third-party provider, your prompts go through their infrastructure. Their terms apply. I don&#39;t control what they do with it.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8\">Neuron Inference &#8212; my own inference layer, launching Q3 2026 &#8212; doesn&#39;t store your requests, doesn&#39;t train on them, doesn&#39;t share them. A separate data addendum covers the details.</p>
</div>
<div style=\"margin-bottom:3rem\">
<div style=\"display:flex;align-items:baseline;gap:1rem;margin-bottom:1.25rem;border-bottom:1px solid var(--border);padding-bottom:0.75rem\">
<span style=\"font-family:var(--body);font-size:0.75rem;font-weight:600;letter-spacing:0.15em;text-transform:uppercase;color:var(--navy-65)\">&#167; 5</span>
<h2 style=\"font-family:var(--head);font-size:1.25rem;font-weight:600;color:var(--t1)\">What You Can&#39;t Do</h2>
</div>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem\">Don&#39;t use Neuron to generate content designed to harm people, defraud anyone, or break the law.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem\">Don&#39;t try to reverse-engineer the licensing or security mechanisms.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem\">Don&#39;t extract or resell proprietary components.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8\">If you violate these and you&#39;re using cloud services, I can suspend access to those services. I can&#39;t touch the local software &#8212; once it&#39;s on your machine, it&#39;s yours to run. But I can close the door on the network.</p>
</div>
<div style=\"margin-bottom:3rem\">
<div style=\"display:flex;align-items:baseline;gap:1rem;margin-bottom:1.25rem;border-bottom:1px solid var(--border);padding-bottom:0.75rem\">
<span style=\"font-family:var(--body);font-size:0.75rem;font-weight:600;letter-spacing:0.15em;text-transform:uppercase;color:var(--navy-65)\">&#167; 6</span>
<h2 style=\"font-family:var(--head);font-size:1.25rem;font-weight:600;color:var(--t1)\">Ownership</h2>
</div>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem\">Neuron and everything in it is my intellectual property. Six patents and counting. These terms don&#39;t transfer any of that to you.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8\">Everything you create using Neuron &#8212; outputs, memory nodes, artifacts &#8212; is yours. I make no claim to it. Not now, not ever.</p>
</div>
<div style=\"margin-bottom:3rem\">
<div style=\"display:flex;align-items:baseline;gap:1rem;margin-bottom:1.25rem;border-bottom:1px solid var(--border);padding-bottom:0.75rem\">
<span style=\"font-family:var(--body);font-size:0.75rem;font-weight:600;letter-spacing:0.15em;text-transform:uppercase;color:var(--navy-65)\">&#167; 7</span>
<h2 style=\"font-family:var(--head);font-size:1.25rem;font-weight:600;color:var(--t1)\">No Warranty</h2>
</div>
<p style=\"font-family:var(--body);font-size:0.875rem;font-weight:600;color:var(--t1);line-height:1.7;margin-bottom:1rem\">THE SOFTWARE IS PROVIDED &#34;AS IS.&#34; NEURON, LLC MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8\">Software has bugs. Security has limits. Use your judgment. You use Neuron at your own risk.</p>
</div>
<div style=\"margin-bottom:3rem\">
<div style=\"display:flex;align-items:baseline;gap:1rem;margin-bottom:1.25rem;border-bottom:1px solid var(--border);padding-bottom:0.75rem\">
<span style=\"font-family:var(--body);font-size:0.75rem;font-weight:600;letter-spacing:0.15em;text-transform:uppercase;color:var(--navy-65)\">&#167; 8</span>
<h2 style=\"font-family:var(--head);font-size:1.25rem;font-weight:600;color:var(--t1)\">Liability Cap</h2>
</div>
<p style=\"font-family:var(--body);font-size:0.875rem;font-weight:600;color:var(--t1);line-height:1.7;margin-bottom:1rem\">TO THE EXTENT PERMITTED BY LAW, NEURON, LLC IS NOT LIABLE FOR INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, OR PUNITIVE DAMAGES ARISING FROM YOUR USE OF THE SOFTWARE.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8\">If something goes wrong and you have a claim against me, the most I owe you is what you paid in the twelve months before it happened. That&#39;s the cap.</p>
</div>
<div style=\"margin-bottom:3rem\">
<div style=\"display:flex;align-items:baseline;gap:1rem;margin-bottom:1.25rem;border-bottom:1px solid var(--border);padding-bottom:0.75rem\">
<span style=\"font-family:var(--body);font-size:0.75rem;font-weight:600;letter-spacing:0.15em;text-transform:uppercase;color:var(--navy-65)\">&#167; 9</span>
<h2 style=\"font-family:var(--head);font-size:1.25rem;font-weight:600;color:var(--t1)\">Changes</h2>
</div>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem\">I&#39;ll update these terms when I need to. Material changes get announced on the site and, where I have your email, directly. Continued use after a change means you accept the new terms.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8\">Founding Member licenses are locked. I won&#39;t retroactively change what you signed up for.</p>
</div>
<div style=\"margin-bottom:3rem\">
<div style=\"display:flex;align-items:baseline;gap:1rem;margin-bottom:1.25rem;border-bottom:1px solid var(--border);padding-bottom:0.75rem\">
<span style=\"font-family:var(--body);font-size:0.75rem;font-weight:600;letter-spacing:0.15em;text-transform:uppercase;color:var(--navy-65)\">&#167; 10</span>
<h2 style=\"font-family:var(--head);font-size:1.25rem;font-weight:600;color:var(--t1)\">Children and Family Accounts</h2>
</div>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem\">Children under 13 may only use Neuron as part of a family account established by a parent or legal guardian. By setting up a family account that includes a minor, the parent or guardian provides verifiable consent for the child&#39;s use and accepts these terms on the child&#39;s behalf.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem\">When a child&#39;s Neuron instance is part of a family account, certain information &#8212; including usage activity and relevant context &#8212; may be shared from the child&#39;s local instance to the parent&#39;s local instance. This sharing happens device-to-device. It does not pass through or get stored on Neuron&#39;s servers. The parent&#39;s instance receives it; we never see it.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8\">Parents control what is visible to them through their local instance and can revoke family account access at any time. If you believe a child is using Neuron outside of a family account, contact legal@neurontechnologies.ai and we will address it promptly.</p>
</div>
<div style=\"margin-bottom:3rem\">
<div style=\"display:flex;align-items:baseline;gap:1rem;margin-bottom:1.25rem;border-bottom:1px solid var(--border);padding-bottom:0.75rem\">
<span style=\"font-family:var(--body);font-size:0.75rem;font-weight:600;letter-spacing:0.15em;text-transform:uppercase;color:var(--navy-65)\">&#167; 11</span>
<h2 style=\"font-family:var(--head);font-size:1.25rem;font-weight:600;color:var(--t1)\">Governing Law</h2>
</div>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8\">These terms are governed by the laws of Delaware. Disputes go to the courts of Delaware.</p>
</div>
<div style=\"margin-top:4rem;padding-top:2rem;border-top:1px solid var(--border);display:flex;gap:2rem;flex-wrap:wrap\">
<a href=\"/\" style=\"font-family:var(--body);font-size:0.8125rem;color:var(--navy);text-decoration:none\">&larr; Home</a>
<a href=\"/legal/enterprise-terms\" style=\"font-family:var(--body);font-size:0.8125rem;color:var(--navy);text-decoration:none\">Enterprise Agreement &rarr;</a>
</div>
</div>
"
}
+97
View File
@@ -0,0 +1,97 @@
// components/viral.el Share / referral section.
// Referral link card, invite form (mailto: href, no JS required),
// copy hooks (links to X/Twitter), and LinkedIn share button.
// The "Copy" buttons on the hook items are omitted since we have no JS
// the tweet links still work, giving users a way to share.
fn viral() -> String {
return "
<section id=\"share\" aria-label=\"Share Neuron\">
<div class=\"container\">
<div class=\"navy-line\" style=\"margin-bottom:5rem\"></div>
<div class=\"share-label-row reveal\">
<div class=\"navy-line-left\" style=\"width:4rem;flex-shrink:0\"></div>
<span class=\"label\">Share</span>
</div>
<h2 class=\"display-lg share-headline reveal\" style=\"transition-delay:80ms\">Share this with someone who&#39;d get it.</h2>
<div class=\"share-grid\">
<div style=\"display:flex;flex-direction:column;gap:1.5rem\">
<div class=\"share-card card-dark reveal\">
<p class=\"share-card-label\">Your referral link</p>
<p class=\"share-card-body\">Earn 3 months free when a friend signs up using your link. Your unique referral code lives in your account.</p>
<a href=\"https://neurontechnologies.ai/account\" class=\"btn-primary\" style=\"padding:.75rem 1.25rem\">Get your referral link &#8594;</a>
</div>
<div class=\"share-card card-dark reveal\" style=\"transition-delay:130ms\">
<p class=\"share-card-label\">Invite a friend</p>
<p class=\"share-card-body\">Know someone who&#39;d get it?</p>
<form class=\"invite-form\" action=\"#\" method=\"get\" onsubmit=\"return false\">
<input
type=\"email\"
name=\"email\"
class=\"invite-input\"
placeholder=\"their@email.com\"
required
aria-label=\"Friend&#39;s email address\"
id=\"invite-email-field\"
>
<a
href=\"mailto:?subject=You%20should%20try%20this%20AI&amp;body=I%27ve%20been%20using%20an%20AI%20that%20actually%20remembers%20me%20%E2%80%94%20not%20just%20the%20session%2C%20but%20me.%20It%20builds%20a%20memory%20graph%20over%20time%20and%20compounds%20with%20you%20the%20longer%20you%20use%20it.%0A%0ACheck%20it%20out%3A%20https%3A%2F%2Fneurontechnologies.ai\"
class=\"invite-submit\"
style=\"display:inline-flex;align-items:center;justify-content:center;padding:0.75rem 1.25rem;text-decoration:none;\"
>Send invite</a>
</form>
<p class=\"invite-note\">Opens your email client with a pre-written message</p>
</div>
</div>
<div class=\"share-card card-dark reveal\" style=\"transition-delay:260ms;display:flex;flex-direction:column\">
<p class=\"share-card-label\">Ready to share</p>
<p class=\"share-card-body\">Copy and paste, or share directly.</p>
<div style=\"flex:1\">
<div class=\"hook-item\">
<p class=\"hook-text\">Every AI I&#39;d used forgot me the moment I closed the tab. This one doesn&#39;t. It compounds. neurontechnologies.ai</p>
<div class=\"hook-actions\">
<a class=\"hook-btn\" href=\"https://twitter.com/intent/tweet?text=Every%20AI%20I%27d%20used%20forgot%20me%20the%20moment%20I%20closed%20the%20tab.%20This%20one%20doesn%27t.%20It%20compounds.%20neurontechnologies.ai\" target=\"_blank\" rel=\"noopener\">X</a>
</div>
</div>
<div class=\"hook-item\">
<p class=\"hook-text\">One person built this in 72 hours after a Big Tech meeting went sideways. The AI that remembers you. neurontechnologies.ai</p>
<div class=\"hook-actions\">
<a class=\"hook-btn\" href=\"https://twitter.com/intent/tweet?text=One%20person%20built%20this%20in%2072%20hours%20after%20a%20Big%20Tech%20meeting%20went%20sideways.%20The%20AI%20that%20remembers%20you.%20neurontechnologies.ai\" target=\"_blank\" rel=\"noopener\">X</a>
</div>
</div>
<div class=\"hook-item\">
<p class=\"hook-text\">Your AI runs on your machine, knows your full history, and gets sharper the longer you use it. No cloud. neurontechnologies.ai</p>
<div class=\"hook-actions\">
<a class=\"hook-btn\" href=\"https://twitter.com/intent/tweet?text=Your%20AI%20runs%20on%20your%20machine%2C%20knows%20your%20full%20history%2C%20and%20gets%20sharper%20the%20longer%20you%20use%20it.%20No%20cloud.%20neurontechnologies.ai\" target=\"_blank\" rel=\"noopener\">X</a>
</div>
</div>
</div>
<a href=\"https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fneurontechnologies.ai\"
target=\"_blank\" rel=\"noopener\"
class=\"linkedin-share-btn\">
<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z\"/></svg>
Share on LinkedIn
</a>
</div>
</div>
</div>
<div class=\"container\" style=\"margin-top:5rem\"><div class=\"navy-line\"></div></div>
</section>
"
}