feat: native El HTML templates — remove all HTML string literals

Converts all El source files in src/ from HTML string literals to native
El template syntax. Part of the el rewrite tracked in PR #4.
This commit is contained in:
2026-05-05 11:11:04 +00:00
24 changed files with 1443 additions and 1494 deletions
+52 -53
View File
@@ -8,41 +8,41 @@
from nav import { nav }
fn about_page() -> String {
return nav() + "
return {nav()}
<main id=\"about\" style=\"padding: clamp(7rem, 18vh, 11rem) 2.5rem clamp(5rem, 12vh, 8rem);\">
<div style=\"max-width: 700px; margin: 0 auto;\">
<main id="about" style="padding: clamp(7rem, 18vh, 11rem) 2.5rem clamp(5rem, 12vh, 8rem);">
<div style="max-width: 700px; margin: 0 auto;">
<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;\">
<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>
<div class="navy-line-left animate-up-3" style="width: 4rem; margin-bottom: 3rem;"></div>
<!-- Photo + opening -->
<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;\">
<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, in the kind of instability where home is a moving target - roughly thirty addresses before I was fifteen, parents struggling with addiction, the material precarity that comes with all of that. I left home at fifteen, stayed with friends until I finished high school, found my way to college. At fourteen I&#39;d already found software, writing C++ at the public library because it was the first thing in my life that responded to precision with correctness, and that property turned out to matter more to me than almost anything else.
</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;\">
<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 dropped out of college, worked, went back as an adult to finish my degree, and built my skills across nearly twenty years and every kind of organization - 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, which is where I learned what it actually means to practice software engineering as a discipline rather than an improvisation.
</p>
</div>
<!-- Blockquote -->
<blockquote class=\"reveal\" style=\"
<blockquote class="reveal" style="
border-left: 3px solid var(--navy);
padding: 0.5rem 0 0.5rem 2rem;
margin: 0 0 3rem;
\">
<p style=\"
">
<p style="
font-family: var(--head);
font-size: clamp(1.4rem, 3vw, 2rem);
font-weight: 500;
@@ -50,42 +50,42 @@ fn about_page() -> String {
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 - 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;\">
<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;">
Across nearly twenty years I watched software get built at organizations with real stakes and real consequences, and I watched AI go from promise to product - watched the same mistake get made at each iteration: tools built to serve the organization&#39;s needs, not the person&#39;s. Engagement over relationship. Features over memory. Policies where values should be. The fundamental premise that you are a user, not a person, has been so thoroughly baked into the architecture of every major AI system that it doesn&#39;t register as a choice anymore. It&#39;s treated as the natural condition of the technology.
</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;\">
<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;">
It is not. It is a design decision. And it is the wrong one.
</p>
</div>
<div class=\"navy-line-center reveal\" style=\"margin-bottom: 3rem;\"></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;\">
<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 in response to that. Not a startup in the traditional sense - no team, no funding, no press release - one person, nearly two years of work, and a conviction that this can be done differently. I wrote the memory architecture, I built the inference infrastructure, because the tools that existed weren&#39;t sufficient for what I was trying to build and 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;\">
<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 I couldn&#39;t have gotten there on top of existing infrastructure. 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: 3.5rem;\">
<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;\">
<div class="reveal" style="margin-bottom: 3.5rem;">
<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 - not to create engagement loops, not to harvest attention, but to actually serve the person sitting in front of it. That potential is almost entirely unrealized, not because the technology isn&#39;t capable, but because the incentives that shaped it were never oriented toward the person.
</p>
<p style=\"
<p style="
font-family: var(--head);
font-size: clamp(1.2rem, 2.5vw, 1.625rem);
font-weight: 600;
@@ -93,22 +93,22 @@ fn about_page() -> String {
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;\">
<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>
<div class=\"navy-line-center reveal\" style=\"margin-bottom: 3rem;\"></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;\">
<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\">
<a href="/#pricing" class="btn-primary">
Join as a founding member &#8594;
</a>
</div>
@@ -116,35 +116,34 @@ fn about_page() -> String {
</div>
</main>
<footer id=\"footer\" aria-label=\"Footer\">
<div class=\"container\">
<div class=\"footer-inner\">
<footer id="footer" aria-label="Footer">
<div class="container">
<div class="footer-inner">
<a href=\"/\" class=\"footer-brand\" aria-label=\"Neuron home\" style=\"display:flex;flex-direction:column;align-items:center;\">
<img src=\"/assets/brand/neuron-wordmark-on-light.png\" srcset=\"/assets/brand/neuron-wordmark-on-light@2x.png 2x\" alt=\"Neuron\" height=\"24\" style=\"display:block;margin-bottom:0.35rem;\">
<p class=\"footer-brand-tagline\">Built Different.</p>
<a href="/" class="footer-brand" aria-label="Neuron home" style="display:flex;flex-direction:column;align-items:center;">
<img src="/assets/brand/neuron-wordmark-on-light.png" srcset="/assets/brand/neuron-wordmark-on-light@2x.png 2x" alt="Neuron" height="24" style="display:block;margin-bottom:0.35rem;">
<p class="footer-brand-tagline">Built Different.</p>
</a>
<div class=\"footer-center\">
<div class=\"navy-line\"></div>
<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>
<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, LLC. All rights reserved.</p>
<p class=\"footer-tagline-bottom\">Your memory. Your AI.</p>
<div class="footer-bottom">
<p class="footer-copy">&copy; 2026 Neuron, LLC. All rights reserved.</p>
<p class="footer-tagline-bottom">Your memory. Your AI.</p>
</div>
</div>
</footer>
"
}
+156 -156
View File
@@ -4,18 +4,18 @@
from founding_badge import { founding_badge, founding_badge_css }
fn account_page(supabase_url: String, supabase_anon_key: String) -> String {
return "<!DOCTYPE html>
<html lang=\"en\">
return <!DOCTYPE html>
<html lang="en">
<head>
<meta charset=\"UTF-8\">
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My Account - Neuron</title>
<meta name=\"description\" content=\"Manage your Neuron account, view your plan, and access your founding member details.\">
<link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/assets/favicon-16.png\">
<link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/assets/favicon-32.png\">
<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">
<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>
<link href=\"https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,500;0,600;1,400;1,500&family=IBM+Plex+Sans:wght@300;400;500;600&display=swap\" rel=\"stylesheet\">
<meta name="description" content="Manage your Neuron account, view your plan, and access your founding member details.">
<link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16.png">
<link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32.png">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,500;0,600;1,400;1,500&family=IBM+Plex+Sans:wght@300;400;500;600&display=swap" rel="stylesheet">
<style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
@@ -618,7 +618,7 @@ fn account_page(supabase_url: String, supabase_anon_key: String) -> String {
.roadmap-phase-date { font-family: var(--body); font-size: .7rem; font-weight: 400; color: var(--t3); letter-spacing: .06em; }
.roadmap-items { list-style: none; display: flex; flex-direction: column; gap: .5rem; }
.roadmap-items li { font-family: var(--body); font-size: .875rem; font-weight: 300; color: var(--t2); line-height: 1.6; padding-left: 1rem; position: relative; }
.roadmap-items li::before { content: \"-\"; position: absolute; left: 0; color: var(--navy-65); }
.roadmap-items li::before { content: "-"; position: absolute; left: 0; color: var(--navy-65); }
/* SIGN OUT SECTION */
@@ -628,110 +628,110 @@ fn account_page(supabase_url: String, supabase_anon_key: String) -> String {
<body>
<!-- Nav -->
<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\">
<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>
<a href=\"/\" class=\"nav-back\">&#8592; Home</a>
<a href="/" class="nav-back">&#8592; Home</a>
</div>
</nav>
<!-- Page shell -->
<div class=\"page-shell\">
<div class=\"page-inner\">
<div class="page-shell">
<div class="page-inner">
<!-- Sign-in section (shown when not authenticated) -->
<div id=\"signin-section\">
<div class=\"signin-wrap\">
<div class=\"signin-icon\">
<svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"rgba(0,82,160,.70)\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">
<path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\"/>
<circle cx=\"12\" cy=\"7\" r=\"4\"/>
<div id="signin-section">
<div class="signin-wrap">
<div class="signin-icon">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="rgba(0,82,160,.70)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
<path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/>
<circle cx="12" cy="7" r="4"/>
</svg>
</div>
<h1 class=\"signin-title\">Sign in to your account</h1>
<p class=\"signin-sub\">Enter your email to receive a sign-in link, or continue with a social account.</p>
<h1 class="signin-title">Sign in to your account</h1>
<p class="signin-sub">Enter your email to receive a sign-in link, or continue with a social account.</p>
<!-- Single width-controlled container for ALL sign-in options -->
<div style=\"width:100%;max-width:20rem;margin:0 auto;display:flex;flex-direction:column;gap:.75rem\">
<button type=\"button\" class=\"signin-btn\" id=\"btn-google\" onclick=\"signInWith('google')\">
<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" aria-hidden=\"true\">
<path d=\"M17.64 9.2c0-.637-.057-1.251-.164-1.84H9v3.481h4.844c-.209 1.125-.843 2.078-1.796 2.716v2.259h2.908c1.702-1.567 2.684-3.875 2.684-6.615z\" fill=\"#4285F4\"/>
<path d=\"M9 18c2.43 0 4.467-.806 5.956-2.18l-2.908-2.259c-.806.54-1.837.86-3.048.86-2.344 0-4.328-1.584-5.036-3.711H.957v2.332A8.997 8.997 0 0 0 9 18z\" fill=\"#34A853\"/>
<path d=\"M3.964 10.71A5.41 5.41 0 0 1 3.682 9c0-.593.102-1.17.282-1.71V4.958H.957A8.996 8.996 0 0 0 0 9c0 1.452.348 2.827.957 4.042l3.007-2.332z\" fill=\"#FBBC05\"/>
<path d=\"M9 3.58c1.321 0 2.508.454 3.44 1.345l2.582-2.58C13.463.891 11.426 0 9 0A8.997 8.997 0 0 0 .957 4.958L3.964 6.29C4.672 4.163 6.656 3.58 9 3.58z\" fill=\"#EA4335\"/>
<div style="width:100%;max-width:20rem;margin:0 auto;display:flex;flex-direction:column;gap:.75rem">
<button type="button" class="signin-btn" id="btn-google" onclick="signInWith('google')">
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" aria-hidden="true">
<path d="M17.64 9.2c0-.637-.057-1.251-.164-1.84H9v3.481h4.844c-.209 1.125-.843 2.078-1.796 2.716v2.259h2.908c1.702-1.567 2.684-3.875 2.684-6.615z" fill="#4285F4"/>
<path d="M9 18c2.43 0 4.467-.806 5.956-2.18l-2.908-2.259c-.806.54-1.837.86-3.048.86-2.344 0-4.328-1.584-5.036-3.711H.957v2.332A8.997 8.997 0 0 0 9 18z" fill="#34A853"/>
<path d="M3.964 10.71A5.41 5.41 0 0 1 3.682 9c0-.593.102-1.17.282-1.71V4.958H.957A8.996 8.996 0 0 0 0 9c0 1.452.348 2.827.957 4.042l3.007-2.332z" fill="#FBBC05"/>
<path d="M9 3.58c1.321 0 2.508.454 3.44 1.345l2.582-2.58C13.463.891 11.426 0 9 0A8.997 8.997 0 0 0 .957 4.958L3.964 6.29C4.672 4.163 6.656 3.58 9 3.58z" fill="#EA4335"/>
</svg>
Continue with Google
</button>
<button type=\"button\" class=\"signin-btn\" id=\"btn-github\" onclick=\"signInWith('github')\">
<svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">
<path d=\"M12 0C5.374 0 0 5.373 0 12c0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.509 11.509 0 0 1 12 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z\"/>
<button type="button" class="signin-btn" id="btn-github" onclick="signInWith('github')">
<svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
<path d="M12 0C5.374 0 0 5.373 0 12c0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.509 11.509 0 0 1 12 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z"/>
</svg>
Continue with GitHub
</button>
<div style=\"display:flex;align-items:center;gap:1rem;margin:.125rem 0\">
<div style=\"flex:1;height:1px;background:var(--border2)\"></div>
<span style=\"font-family:var(--body);font-size:.75rem;color:var(--t3);letter-spacing:.06em\">or</span>
<div style=\"flex:1;height:1px;background:var(--border2)\"></div>
<div style="display:flex;align-items:center;gap:1rem;margin:.125rem 0">
<div style="flex:1;height:1px;background:var(--border2)"></div>
<span style="font-family:var(--body);font-size:.75rem;color:var(--t3);letter-spacing:.06em">or</span>
<div style="flex:1;height:1px;background:var(--border2)"></div>
</div>
<input type=\"email\" id=\"acct-email-input\" placeholder=\"Email address\" autocomplete=\"email\"
style=\"font-family:var(--body);font-size:.875rem;font-weight:300;color:var(--t1);background:#fff;border:1px solid var(--border2);padding:.875rem 1rem;outline:none;transition:border-color .2s;width:100%;box-sizing:border-box\">
<button type=\"button\" id=\"acct-magic-btn\" onclick=\"sendMagicLink()\"
style=\"font-family:var(--body);font-size:.75rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:#fff;background:var(--navy);border:none;padding:.875rem 1rem;cursor:pointer;transition:background .2s;width:100%;box-sizing:border-box\">
<input type="email" id="acct-email-input" placeholder="Email address" autocomplete="email"
style="font-family:var(--body);font-size:.875rem;font-weight:300;color:var(--t1);background:#fff;border:1px solid var(--border2);padding:.875rem 1rem;outline:none;transition:border-color .2s;width:100%;box-sizing:border-box">
<button type="button" id="acct-magic-btn" onclick="sendMagicLink()"
style="font-family:var(--body);font-size:.75rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:#fff;background:var(--navy);border:none;padding:.875rem 1rem;cursor:pointer;transition:background .2s;width:100%;box-sizing:border-box">
Continue with email
</button>
<p id=\"acct-email-msg\" style=\"display:none;font-size:.8rem;text-align:center;margin-top:.25rem\"></p>
<p id="acct-email-msg" style="display:none;font-size:.8rem;text-align:center;margin-top:.25rem"></p>
</div>
</div>
</div>
<!-- Dashboard section (shown when authenticated) -->
<div id=\"dashboard-section\" style=\"display:none\">
<div id="dashboard-section" style="display:none">
<!-- Account header row -->
<div class=\"acct-header-row\">
<div class="acct-header-row">
<div>
<p class=\"page-eyebrow\" style=\"margin-bottom:.375rem\">Account</p>
<h1 class=\"page-title\" style=\"margin-bottom:.5rem\">Your Account</h1>
<p class=\"acct-email\" id=\"acct-header-email\"></p>
<p class="page-eyebrow" style="margin-bottom:.375rem">Account</p>
<h1 class="page-title" style="margin-bottom:.5rem">Your Account</h1>
<p class="acct-email" id="acct-header-email"></p>
</div>
<div style=\"padding-top:.25rem\">
<button type=\"button\" class=\"btn-ghost\" id=\"signout-btn-top\" onclick=\"signOut()\">Sign out</button>
<div style="padding-top:.25rem">
<button type="button" class="btn-ghost" id="signout-btn-top" onclick="signOut()">Sign out</button>
</div>
</div>
<div class=\"account-section\">
<div class="account-section">
<!-- Plan card -->
<div class=\"card-dark\" id=\"plan-card\">
<p class=\"card-label\">Your Plan</p>
<div class=\"plan-row\">
<div class="card-dark" id="plan-card">
<p class="card-label">Your Plan</p>
<div class="plan-row">
<div>
<p class=\"plan-name\" id=\"plan-name-el\">Loading...</p>
<div id=\"plan-status-el\"></div>
<div id=\"plan-billing-note-el\"></div>
<p class="plan-name" id="plan-name-el">Loading...</p>
<div id="plan-status-el"></div>
<div id="plan-billing-note-el"></div>
</div>
</div>
<div class=\"plan-meta\" id=\"plan-meta-el\"></div>
<div class="plan-meta" id="plan-meta-el"></div>
</div>
<!-- Roadmap (only shown for founding members) -->
<div id=\"roadmap-section\" style=\"display:none\">
<div class=\"card-dark\">
<p class=\"card-label\">Product Roadmap</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:.875rem;color:var(--t2);line-height:1.7;margin-bottom:1.5rem\">As a Founding Member, you have visibility into what we're building. This is the real roadmap &mdash; not marketing.</p>
<div class=\"roadmap-list\">
<div id="roadmap-section" style="display:none">
<div class="card-dark">
<p class="card-label">Product Roadmap</p>
<p style="font-family:var(--body);font-weight:300;font-size:.875rem;color:var(--t2);line-height:1.7;margin-bottom:1.5rem">As a Founding Member, you have visibility into what we're building. This is the real roadmap &mdash; not marketing.</p>
<div class="roadmap-list">
<!-- Phase 1 -->
<div class=\"roadmap-phase\">
<div class=\"roadmap-phase-header\">
<span class=\"roadmap-phase-label\">Now shipping</span>
<span class=\"roadmap-phase-date\">Q3 2026</span>
<div class="roadmap-phase">
<div class="roadmap-phase-header">
<span class="roadmap-phase-label">Now shipping</span>
<span class="roadmap-phase-date">Q3 2026</span>
</div>
<ul class=\"roadmap-items\">
<ul class="roadmap-items">
<li>macOS and Windows clients</li>
<li>Persistent memory &mdash; local, encrypted</li>
<li>Bring your own API keys (OpenAI, Anthropic, Grok)</li>
@@ -742,12 +742,12 @@ fn account_page(supabase_url: String, supabase_anon_key: String) -> String {
</ul>
</div>
<!-- Phase 2 -->
<div class=\"roadmap-phase\">
<div class=\"roadmap-phase-header\">
<span class=\"roadmap-phase-label\">Following launch</span>
<span class=\"roadmap-phase-date\">Q4 2026</span>
<div class="roadmap-phase">
<div class="roadmap-phase-header">
<span class="roadmap-phase-label">Following launch</span>
<span class="roadmap-phase-date">Q4 2026</span>
</div>
<ul class=\"roadmap-items\">
<ul class="roadmap-items">
<li>Process and knowledge packets</li>
<li>Local inference via Ollama</li>
<li>Additional connectors &mdash; GitHub, Notion, Linear, more</li>
@@ -756,12 +756,12 @@ fn account_page(supabase_url: String, supabase_anon_key: String) -> String {
</ul>
</div>
<!-- Phase 3 -->
<div class=\"roadmap-phase\" style=\"border-bottom:none\">
<div class=\"roadmap-phase-header\">
<span class=\"roadmap-phase-label\">2027</span>
<span class=\"roadmap-phase-date\">H1 2027</span>
<div class="roadmap-phase" style="border-bottom:none">
<div class="roadmap-phase-header">
<span class="roadmap-phase-label">2027</span>
<span class="roadmap-phase-date">H1 2027</span>
</div>
<ul class=\"roadmap-items\">
<ul class="roadmap-items">
<li>Imprints &mdash; starting with C-suite (CEO, CTO, CFO, CMO, COO)</li>
<li>Enterprise accounts</li>
<li>Plugin marketplace (open to developers)</li>
@@ -769,119 +769,119 @@ fn account_page(supabase_url: String, supabase_anon_key: String) -> String {
</ul>
</div>
</div>
<p style=\"font-family:var(--body);font-weight:300;font-size:.75rem;color:var(--t3);margin-top:1.5rem;line-height:1.7\">This roadmap is directional, not a commitment. Founding Members shape what gets built and when through their feedback and votes. Your input has real weight.</p>
<p style="font-family:var(--body);font-weight:300;font-size:.75rem;color:var(--t3);margin-top:1.5rem;line-height:1.7">This roadmap is directional, not a commitment. Founding Members shape what gets built and when through their feedback and votes. Your input has real weight.</p>
</div>
</div>
<!-- Family plan section (only shown for founding members) -->
<div id=\"family-section\" style=\"display:none\">
<div class=\"card-dark\">
<div class=\"acct-section-header\">
<p class=\"card-label\">Family members</p>
<p style=\"font-size:.8125rem;font-weight:300;color:var(--t2);line-height:1.65\">Add up to 5 children to your Founding Member plan. $10/month per child.</p>
<div id="family-section" style="display:none">
<div class="card-dark">
<div class="acct-section-header">
<p class="card-label">Family members</p>
<p style="font-size:.8125rem;font-weight:300;color:var(--t2);line-height:1.65">Add up to 5 children to your Founding Member plan. $10/month per child.</p>
</div>
<div id=\"family-list\"></div>
<div id=\"add-child-form\">
<input type=\"email\" id=\"child-email\" placeholder=\"Child's email\" class=\"acct-input\">
<input type=\"number\" id=\"child-dob-year\" placeholder=\"Birth year (e.g. 2012)\" min=\"1990\" max=\"2007\" class=\"acct-input\">
<label style=\"display:flex;gap:.5rem;align-items:flex-start;cursor:pointer;margin:.75rem 0\">
<input type=\"checkbox\" id=\"family-attest\" style=\"margin-top:.2rem;accent-color:var(--navy)\">
<span style=\"font-size:.8rem;color:var(--t2)\">I confirm this person is a minor under my care and is using this account under my supervision.</span>
<div id="family-list"></div>
<div id="add-child-form">
<input type="email" id="child-email" placeholder="Child's email" class="acct-input">
<input type="number" id="child-dob-year" placeholder="Birth year (e.g. 2012)" min="1990" max="2007" class="acct-input">
<label style="display:flex;gap:.5rem;align-items:flex-start;cursor:pointer;margin:.75rem 0">
<input type="checkbox" id="family-attest" style="margin-top:.2rem;accent-color:var(--navy)">
<span style="font-size:.8rem;color:var(--t2)">I confirm this person is a minor under my care and is using this account under my supervision.</span>
</label>
<button class=\"btn-primary\" onclick=\"addFamilyMember()\" style=\"padding:.75rem 1.5rem\">Add family member</button>
<p id=\"family-msg\" style=\"display:none;font-size:.8rem;margin-top:.5rem\"></p>
<button class="btn-primary" onclick="addFamilyMember()" style="padding:.75rem 1.5rem">Add family member</button>
<p id="family-msg" style="display:none;font-size:.8rem;margin-top:.5rem"></p>
</div>
</div>
</div>
<!-- Founding badge (only shown for founding members) -->
<div id=\"badge-section\" style=\"display:none\">
<div class=\"card-dark\" style=\"padding:2.5rem 2rem;text-align:center;border-top:3px solid var(--navy);background:linear-gradient(135deg,rgba(0,82,160,.03) 0%,rgba(0,82,160,.06) 100%)\">
<p class=\"card-label\" style=\"margin-bottom:1.5rem;letter-spacing:.25em\">Your Founding Member Badge</p>
<div id=\"badge-html-container\" style=\"display:flex;justify-content:center;margin-bottom:1.5rem\"></div>
<p style=\"font-family:var(--body);font-weight:300;font-size:.8125rem;color:var(--t3);line-height:1.7;max-width:24rem;margin:0 auto\">
<div id="badge-section" style="display:none">
<div class="card-dark" style="padding:2.5rem 2rem;text-align:center;border-top:3px solid var(--navy);background:linear-gradient(135deg,rgba(0,82,160,.03) 0%,rgba(0,82,160,.06) 100%)">
<p class="card-label" style="margin-bottom:1.5rem;letter-spacing:.25em">Your Founding Member Badge</p>
<div id="badge-html-container" style="display:flex;justify-content:center;margin-bottom:1.5rem"></div>
<p style="font-family:var(--body);font-weight:300;font-size:.8125rem;color:var(--t3);line-height:1.7;max-width:24rem;margin:0 auto">
This badge will appear in the Neuron app at launch. Your number is permanent.
</p>
</div>
</div>
<!-- What happens next -->
<div class=\"card-dark\" id=\"timeline-card\">
<p class=\"card-label\">What happens next</p>
<div class=\"timeline\">
<div class=\"timeline-item\">
<div class=\"timeline-left\">
<div class=\"timeline-dot filled\"></div>
<div class=\"timeline-line\"></div>
<div class="card-dark" id="timeline-card">
<p class="card-label">What happens next</p>
<div class="timeline">
<div class="timeline-item">
<div class="timeline-left">
<div class="timeline-dot filled"></div>
<div class="timeline-line"></div>
</div>
<div class=\"timeline-content\">
<p class=\"timeline-date\">Now</p>
<p class=\"timeline-text\">Your preorder is confirmed.</p>
<p class=\"timeline-sub\">A confirmation email has been sent to your address. Thank you for being here early.</p>
<div class="timeline-content">
<p class="timeline-date">Now</p>
<p class="timeline-text">Your preorder is confirmed.</p>
<p class="timeline-sub">A confirmation email has been sent to your address. Thank you for being here early.</p>
</div>
</div>
<div class=\"timeline-item\">
<div class=\"timeline-left\">
<div class=\"timeline-dot filled\" style=\"background:rgba(0,82,160,.4);border-color:rgba(0,82,160,.4)\"></div>
<div class=\"timeline-line\"></div>
<div class="timeline-item">
<div class="timeline-left">
<div class="timeline-dot filled" style="background:rgba(0,82,160,.4);border-color:rgba(0,82,160,.4)"></div>
<div class="timeline-line"></div>
</div>
<div class=\"timeline-content\">
<p class=\"timeline-date\" style=\"color:var(--navy);font-weight:600\">Within 30 days</p>
<p class=\"timeline-text\">Neuron for Mac &amp; Windows ships.</p>
<p class=\"timeline-sub\">You'll receive an email with your download link and license key. macOS and Windows simultaneously.</p>
<div class="timeline-content">
<p class="timeline-date" style="color:var(--navy);font-weight:600">Within 30 days</p>
<p class="timeline-text">Neuron for Mac &amp; Windows ships.</p>
<p class="timeline-sub">You'll receive an email with your download link and license key. macOS and Windows simultaneously.</p>
</div>
</div>
<div class=\"timeline-item\">
<div class=\"timeline-left\">
<div class=\"timeline-dot\"></div>
<div class="timeline-item">
<div class="timeline-left">
<div class="timeline-dot"></div>
</div>
<div class=\"timeline-content\">
<p class=\"timeline-date\">Q3 2026</p>
<p class=\"timeline-text\">Neuron Inference launches.</p>
<p class=\"timeline-sub\">Our own inference layer, priced below the major APIs. No setup required - it activates automatically for your plan.</p>
<div class="timeline-content">
<p class="timeline-date">Q3 2026</p>
<p class="timeline-text">Neuron Inference launches.</p>
<p class="timeline-sub">Our own inference layer, priced below the major APIs. No setup required - it activates automatically for your plan.</p>
</div>
</div>
</div>
</div>
<!-- Download -->
<div class=\"card-dark\" style=\"border-top:3px solid var(--navy)\">
<p class=\"card-label\">Download</p>
<p class=\"download-status\" style=\"color:var(--navy)\">Shipping within 30 days</p>
<p class=\"download-title\">Neuron for Mac &amp; Windows</p>
<p class=\"download-body\">macOS and Windows simultaneously. You'll receive a download link and license key by email the moment it ships. Nothing to do right now.</p>
<button type=\"button\" class=\"download-btn-disabled\" disabled aria-disabled=\"true\">
<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">
<path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"/>
<polyline points=\"7 10 12 15 17 10\"/>
<line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"/>
<div class="card-dark" style="border-top:3px solid var(--navy)">
<p class="card-label">Download</p>
<p class="download-status" style="color:var(--navy)">Shipping within 30 days</p>
<p class="download-title">Neuron for Mac &amp; Windows</p>
<p class="download-body">macOS and Windows simultaneously. You'll receive a download link and license key by email the moment it ships. Nothing to do right now.</p>
<button type="button" class="download-btn-disabled" disabled aria-disabled="true">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/>
<polyline points="7 10 12 15 17 10"/>
<line x1="12" y1="15" x2="12" y2="3"/>
</svg>
Download arriving soon
</button>
</div>
<!-- Devices -->
<div class=\"card-dark\">
<p class=\"card-label\">Devices</p>
<div class=\"devices-row\">
<div class=\"device-icon\">
<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"rgba(0,82,160,.70)\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">
<rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\"/>
<line x1=\"8\" y1=\"21\" x2=\"16\" y2=\"21\"/>
<line x1=\"12\" y1=\"17\" x2=\"12\" y2=\"21\"/>
<div class="card-dark">
<p class="card-label">Devices</p>
<div class="devices-row">
<div class="device-icon">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="rgba(0,82,160,.70)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
<rect x="2" y="3" width="20" height="14" rx="2"/>
<line x1="8" y1="21" x2="16" y2="21"/>
<line x1="12" y1="17" x2="12" y2="21"/>
</svg>
</div>
<div>
<p class=\"devices-count\">2 devices included with your plan</p>
<p class=\"devices-sub\">Currently: Setup at launch</p>
<p class="devices-count">2 devices included with your plan</p>
<p class="devices-sub">Currently: Setup at launch</p>
</div>
</div>
<p class=\"devices-note\">Device activation happens when you install. Your license key will be in your launch email.</p>
<p class="devices-note">Device activation happens when you install. Your license key will be in your launch email.</p>
</div>
<!-- Sign out -->
<div class=\"signout-section\">
<button type=\"button\" class=\"btn-ghost\" id=\"signout-btn\" onclick=\"signOut()\">Sign out</button>
<div class="signout-section">
<button type="button" class="btn-ghost" id="signout-btn" onclick="signOut()">Sign out</button>
</div>
</div>
@@ -890,11 +890,11 @@ fn account_page(supabase_url: String, supabase_anon_key: String) -> String {
</div>
</div>
<script src=\"https://cdn.jsdelivr.net/npm/@supabase/supabase-js@2/dist/umd/supabase.min.js\"></script>
<script>window.NEURON_CFG=window.NEURON_CFG||{};window.NEURON_CFG.supabase_url=\"" + supabase_url + "\";window.NEURON_CFG.supabase_anon_key=\"" + supabase_anon_key + "\";</script>
<script src=\"/js/account-auth.js\" defer></script>
<script src=\"/js/account-dashboard.js\" defer></script>
<script src="https://cdn.jsdelivr.net/npm/@supabase/supabase-js@2/dist/umd/supabase.min.js"></script>
<script>window.NEURON_CFG=window.NEURON_CFG||{};window.NEURON_CFG.supabase_url="{supabase_url}";window.NEURON_CFG.supabase_anon_key="{supabase_anon_key}";</script>
<script src="/js/account-auth.js" defer></script>
<script src="/js/account-dashboard.js" defer></script>
</body>
</html>"
</html>
}
+103 -104
View File
@@ -53,168 +53,168 @@ fn checkout_page(plan: String, pub_key: String) -> String {
<li>2 devices included</li>"
} }
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=\"/\" class=\"nav-link\">&#8592; Back</a>
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="/" class="nav-link">&#8592; Back</a>
</div>
</div>
</nav>
<main style=\"min-height: 100vh; padding: clamp(6rem, 14vh, 9rem) 2rem 4rem;\">
<div class=\"checkout-shell\">
<main style="min-height: 100vh; padding: clamp(6rem, 14vh, 9rem) 2rem 4rem;">
<div class="checkout-shell">
<!-- Left: order summary -->
<div class=\"checkout-summary\">
<p class=\"label\" style=\"margin-bottom: 1.5rem; color: var(--navy);\">Your order</p>
<div class="checkout-summary">
<p class="label" style="margin-bottom: 1.5rem; color: var(--navy);">Your order</p>
<div style=\"margin-bottom: 2rem;\">
<p class=\"checkout-plan-name\">" + plan_name + "</p>
<p class=\"checkout-plan-desc\">" + plan_desc + "</p>
<div style=\"display: flex; align-items: baseline; gap: .5rem; margin-top: 1.25rem;\">
<span class=\"checkout-price\">" + plan_price + "</span>
<span class=\"checkout-cadence\">" + plan_cadence + "</span>
<div style="margin-bottom: 2rem;">
<p class="checkout-plan-name">{plan_name}</p>
<p class="checkout-plan-desc">{plan_desc}</p>
<div style="display: flex; align-items: baseline; gap: .5rem; margin-top: 1.25rem;">
<span class="checkout-price">{plan_price}</span>
<span class="checkout-cadence">{plan_cadence}</span>
</div>
</div>
<div class=\"navy-line-left\" style=\"width: 3rem; margin-bottom: 1.75rem;\"></div>
<div class="navy-line-left" style="width: 3rem; margin-bottom: 1.75rem;"></div>
<ul class=\"checkout-features\">
" + features_html + "
<ul class="checkout-features">
{raw(features_html)}
</ul>
<p class=\"checkout-guarantee\">
<p class="checkout-guarantee">
Your data stays yours. Runs locally. No telemetry.
</p>
</div>
<!-- Right: either free thank-you or sign-in + payment form -->
<div class=\"checkout-form-wrap\">
<div class="checkout-form-wrap">
<!-- Auth section: visible immediately for free, collapsed (optional) for paid plans -->
<div id=\"auth-section\" " + (if is_free { "" } else { "style=\"display:none;\"" }) + ">
" + (if is_free { "
<p class=\"label\" style=\"margin-bottom: 1.5rem; color: var(--navy);\">Create your account.</p>
<p class=\"checkout-auth-hint\" style=\"margin-bottom: 2rem;\">No charge today. Add your card to reserve your spot - you won&#39;t be billed until you upgrade.</p>
" } else { "
<p class=\"label\" style=\"margin-bottom: 1.25rem;\">Sign in (optional)</p>
<p class=\"checkout-auth-hint\">Sign in to link this purchase to an existing account. Or skip and create one later - we'll match it to your email.</p>
" }) + "
<div id="auth-section" {#if is_free}{#else}style="display:none;"{/if}>
{#if is_free}
<p class="label" style="margin-bottom: 1.5rem; color: var(--navy);">Create your account.</p>
<p class="checkout-auth-hint" style="margin-bottom: 2rem;">No charge today. Add your card to reserve your spot - you won&#39;t be billed until you upgrade.</p>
{#else}
<p class="label" style="margin-bottom: 1.25rem;">Sign in (optional)</p>
<p class="checkout-auth-hint">Sign in to link this purchase to an existing account. Or skip and create one later - we'll match it to your email.</p>
{/if}
<div class=\"checkout-social-btns\">
<button type=\"button\" class=\"checkout-social-btn\" id=\"btn-google\" onclick=\"signInWith('google')\">
<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" aria-hidden=\"true\">
<path d=\"M17.64 9.2c0-.637-.057-1.251-.164-1.84H9v3.481h4.844c-.209 1.125-.843 2.078-1.796 2.716v2.259h2.908c1.702-1.567 2.684-3.875 2.684-6.615z\" fill=\"#4285F4\"/>
<path d=\"M9 18c2.43 0 4.467-.806 5.956-2.18l-2.908-2.259c-.806.54-1.837.86-3.048.86-2.344 0-4.328-1.584-5.036-3.711H.957v2.332A8.997 8.997 0 0 0 9 18z\" fill=\"#34A853\"/>
<path d=\"M3.964 10.71A5.41 5.41 0 0 1 3.682 9c0-.593.102-1.17.282-1.71V4.958H.957A8.996 8.996 0 0 0 0 9c0 1.452.348 2.827.957 4.042l3.007-2.332z\" fill=\"#FBBC05\"/>
<path d=\"M9 3.58c1.321 0 2.508.454 3.44 1.345l2.582-2.58C13.463.891 11.426 0 9 0A8.997 8.997 0 0 0 .957 4.958L3.964 6.29C4.672 4.163 6.656 3.58 9 3.58z\" fill=\"#EA4335\"/>
<div class="checkout-social-btns">
<button type="button" class="checkout-social-btn" id="btn-google" onclick="signInWith('google')">
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" aria-hidden="true">
<path d="M17.64 9.2c0-.637-.057-1.251-.164-1.84H9v3.481h4.844c-.209 1.125-.843 2.078-1.796 2.716v2.259h2.908c1.702-1.567 2.684-3.875 2.684-6.615z" fill="#4285F4"/>
<path d="M9 18c2.43 0 4.467-.806 5.956-2.18l-2.908-2.259c-.806.54-1.837.86-3.048.86-2.344 0-4.328-1.584-5.036-3.711H.957v2.332A8.997 8.997 0 0 0 9 18z" fill="#34A853"/>
<path d="M3.964 10.71A5.41 5.41 0 0 1 3.682 9c0-.593.102-1.17.282-1.71V4.958H.957A8.996 8.996 0 0 0 0 9c0 1.452.348 2.827.957 4.042l3.007-2.332z" fill="#FBBC05"/>
<path d="M9 3.58c1.321 0 2.508.454 3.44 1.345l2.582-2.58C13.463.891 11.426 0 9 0A8.997 8.997 0 0 0 .957 4.958L3.964 6.29C4.672 4.163 6.656 3.58 9 3.58z" fill="#EA4335"/>
</svg>
Continue with Google
</button>
<button type=\"button\" class=\"checkout-social-btn\" id=\"btn-github\" onclick=\"signInWith('github')\">
<svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">
<path d=\"M12 0C5.37 0 0 5.37 0 12c0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61-.546-1.385-1.335-1.755-1.335-1.755-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.605-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 21.795 24 17.298 24 12c0-6.63-5.37-12-12-12z\"/>
<button type="button" class="checkout-social-btn" id="btn-github" onclick="signInWith('github')">
<svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
<path d="M12 0C5.37 0 0 5.37 0 12c0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61-.546-1.385-1.335-1.755-1.335-1.755-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.605-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 21.795 24 17.298 24 12c0-6.63-5.37-12-12-12z"/>
</svg>
Continue with GitHub
</button>
</div>
<div id=\"auth-message\" class=\"checkout-message\" style=\"display:none;\"></div>
<div id="auth-message" class="checkout-message" style="display:none;"></div>
<div class=\"checkout-auth-divider\">
<span id=\"auth-divider-label\">or " + (if is_free { "create an account with email" } else { "create an account" }) + "</span>
<div class="checkout-auth-divider">
<span id="auth-divider-label">or {#if is_free}create an account with email{#else}create an account{/if}</span>
</div>
<div id=\"email-auth-form\">
<input type=\"email\" id=\"auth-email\" class=\"checkout-input\" placeholder=\"Email address\" autocomplete=\"email\" style=\"width:100%;display:block;margin-bottom:.75rem\">
<input type=\"password\" id=\"auth-password\" class=\"checkout-input\" placeholder=\"Password - min 8 characters\" autocomplete=\"new-password\" style=\"width:100%;display:block;margin-bottom:.75rem\">
<button type=\"button\" class=\"checkout-email-btn\" onclick=\"signUpWithEmail()\">" + (if is_free { "Create account &#8594;" } else { "Create account &rarr;" }) + "</button>
<p class=\"checkout-auth-hint\" style=\"margin-top:.75rem;text-align:center\">Already have an account? <a href=\"#\" onclick=\"showSignIn();return false;\" style=\"color:var(--navy)\">Sign in</a></p>
<div id="email-auth-form">
<input type="email" id="auth-email" class="checkout-input" placeholder="Email address" autocomplete="email" style="width:100%;display:block;margin-bottom:.75rem">
<input type="password" id="auth-password" class="checkout-input" placeholder="Password - min 8 characters" autocomplete="new-password" style="width:100%;display:block;margin-bottom:.75rem">
<button type="button" class="checkout-email-btn" onclick="signUpWithEmail()">{#if is_free}Create account &#8594;{#else}Create account &rarr;{/if}</button>
<p class="checkout-auth-hint" style="margin-top:.75rem;text-align:center">Already have an account? <a href="#" onclick="showSignIn();return false;" style="color:var(--navy)">Sign in</a></p>
</div>
</div>
<!-- Payment form (visible immediately - no auth wall) -->
<div id=\"payment-section\" " + (if is_free { "style=\"display:none;\"" } else { "" }) + ">
<div id=\"auth-badge\" style=\"display:none; margin-bottom: 1.5rem;\"></div>
" + (if is_free { "" } else { "
<p class=\"checkout-auth-hint\" id=\"signin-prompt\" style=\"margin-bottom:1.25rem;font-size:.8125rem\">Already have an account? <a href=\"#\" onclick=\"document.getElementById('auth-section').style.display='';this.parentNode.style.display='none';return false;\" style=\"color:var(--navy);text-decoration:underline\">Sign in</a> to link your purchase.</p>
" }) + "
<div id="payment-section" {#if is_free}style="display:none;"{/if}>
<div id="auth-badge" style="display:none; margin-bottom: 1.5rem;"></div>
{#if is_free}{#else}
<p class="checkout-auth-hint" id="signin-prompt" style="margin-bottom:1.25rem;font-size:.8125rem">Already have an account? <a href="#" onclick="document.getElementById('auth-section').style.display='';this.parentNode.style.display='none';return false;" style="color:var(--navy);text-decoration:underline">Sign in</a> to link your purchase.</p>
{/if}
<!-- Founding Member attestation (only shown for founding plan) -->
" + (if is_founding { "
<div id=\"founding-attestation\" style=\"margin-bottom:2rem;padding:1.5rem;border:1px solid rgba(0,82,160,.2);background:rgba(0,82,160,.03)\">
<p style=\"font-family:var(--body);font-weight:500;font-size:.9rem;color:var(--t1);margin-bottom:.75rem\">Before you continue</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:.8375rem;color:var(--t2);line-height:1.75;margin-bottom:1.25rem\">Founding Member is not a ceremonial title. These are the people who will work directly with the team to shape what Neuron becomes. You will have a real voice in what gets built, and we will take it seriously. That requires you to show up in good faith.</p>
<label style=\"display:flex;gap:.875rem;align-items:flex-start;cursor:pointer\">
<input type=\"checkbox\" id=\"founding-attest-cb\" style=\"margin-top:.2rem;width:16px;height:16px;flex-shrink:0;accent-color:var(--navy)\">
<span style=\"font-family:var(--body);font-weight:300;font-size:.8125rem;color:var(--t2);line-height:1.7\">
{#if is_founding}
<div id="founding-attestation" style="margin-bottom:2rem;padding:1.5rem;border:1px solid rgba(0,82,160,.2);background:rgba(0,82,160,.03)">
<p style="font-family:var(--body);font-weight:500;font-size:.9rem;color:var(--t1);margin-bottom:.75rem">Before you continue</p>
<p style="font-family:var(--body);font-weight:300;font-size:.8375rem;color:var(--t2);line-height:1.75;margin-bottom:1.25rem">Founding Member is not a ceremonial title. These are the people who will work directly with the team to shape what Neuron becomes. You will have a real voice in what gets built, and we will take it seriously. That requires you to show up in good faith.</p>
<label style="display:flex;gap:.875rem;align-items:flex-start;cursor:pointer">
<input type="checkbox" id="founding-attest-cb" style="margin-top:.2rem;width:16px;height:16px;flex-shrink:0;accent-color:var(--navy)">
<span style="font-family:var(--body);font-weight:300;font-size:.8125rem;color:var(--t2);line-height:1.7">
I am joining as a genuine early user, not to extract proprietary information about Neuron&#39;s technology, architecture, or roadmap. I will engage in good faith. I understand that if this is not my intent, a different plan is a better fit.
</span>
</label>
<p id=\"attest-warn\" style=\"display:none;font-family:var(--body);font-size:.8rem;color:#c44;margin-top:.75rem\">Please confirm the above before continuing.</p>
<p id="attest-warn" style="display:none;font-family:var(--body);font-size:.8rem;color:#c44;margin-top:.75rem">Please confirm the above before continuing.</p>
</div>
" } else { "" }) + "
{/if}
<!-- Payment timing: Professional only (not Founding, not Free) -->
" + (if !is_founding && !is_free { "
<div style=\"margin-bottom:1.75rem\">
<p class=\"label\" style=\"margin-bottom:1rem\">When would you like to be charged?</p>
<div style=\"display:flex;flex-direction:column;gap:.625rem\">
<label class=\"checkout-timing-opt\" id=\"timing-now-label\">
<input type=\"radio\" name=\"charge-timing\" value=\"now\" id=\"timing-now\" checked style=\"accent-color:var(--navy)\">
{#if is_founding}{#else}{#if is_free}{#else}
<div style="margin-bottom:1.75rem">
<p class="label" style="margin-bottom:1rem">When would you like to be charged?</p>
<div style="display:flex;flex-direction:column;gap:.625rem">
<label class="checkout-timing-opt" id="timing-now-label">
<input type="radio" name="charge-timing" value="now" id="timing-now" checked style="accent-color:var(--navy)">
<div>
<span style=\"font-family:var(--body);font-weight:500;font-size:.875rem;color:var(--t1)\">Charge me now</span>
<span style=\"font-family:var(--body);font-weight:300;font-size:.8rem;color:var(--t3);display:block;margin-top:.15rem\">Paying now signals you're serious. It gives us real signal about what people actually want to use Neuron for - not just who's curious. That shapes what we build first.</span>
<span style="font-family:var(--body);font-weight:500;font-size:.875rem;color:var(--t1)">Charge me now</span>
<span style="font-family:var(--body);font-weight:300;font-size:.8rem;color:var(--t3);display:block;margin-top:.15rem">Paying now signals you're serious. It gives us real signal about what people actually want to use Neuron for - not just who's curious. That shapes what we build first.</span>
</div>
</label>
<label class=\"checkout-timing-opt\" id=\"timing-later-label\">
<input type=\"radio\" name=\"charge-timing\" value=\"later\" id=\"timing-later\" style=\"accent-color:var(--navy)\">
<label class="checkout-timing-opt" id="timing-later-label">
<input type="radio" name="charge-timing" value="later" id="timing-later" style="accent-color:var(--navy)">
<div>
<span style=\"font-family:var(--body);font-weight:500;font-size:.875rem;color:var(--t1)\">Hold until product launches (Q3 2026)</span>
<span style=\"font-family:var(--body);font-weight:300;font-size:.8rem;color:var(--t3);display:block;margin-top:.15rem\">We save your payment method securely. Nothing charged until launch. Cancel anytime before then.</span>
<span style="font-family:var(--body);font-weight:500;font-size:.875rem;color:var(--t1)">Hold until product launches (Q3 2026)</span>
<span style="font-family:var(--body);font-weight:300;font-size:.8rem;color:var(--t3);display:block;margin-top:.15rem">We save your payment method securely. Nothing charged until launch. Cancel anytime before then.</span>
</div>
</label>
</div>
</div>
" } else { "" }) + "
{/if}{/if}
<p class=\"label\" style=\"margin-bottom: 1.75rem;\">Payment</p>
<p class="label" style="margin-bottom: 1.75rem;">Payment</p>
<form id=\"payment-form\" autocomplete=\"on\">
<form id="payment-form" autocomplete="on">
<div class=\"checkout-field-group\">
<div class=\"checkout-field\">
<label for=\"buyer-name\" class=\"checkout-label\">Full name</label>
<input id=\"buyer-name\" name=\"name\" type=\"text\" autocomplete=\"name\"
class=\"checkout-input\" placeholder=\"Full name\" required>
<div class="checkout-field-group">
<div class="checkout-field">
<label for="buyer-name" class="checkout-label">Full name</label>
<input id="buyer-name" name="name" type="text" autocomplete="name"
class="checkout-input" placeholder="Full name" required>
</div>
<div class=\"checkout-field\">
<label for=\"buyer-email\" class=\"checkout-label\">Email</label>
<input id=\"buyer-email\" name=\"email\" type=\"email\" autocomplete=\"email\"
class=\"checkout-input\" placeholder=\"you@example.com\" required>
<div class="checkout-field">
<label for="buyer-email" class="checkout-label">Email</label>
<input id="buyer-email" name="email" type="email" autocomplete="email"
class="checkout-input" placeholder="you@example.com" required>
</div>
</div>
<div class=\"checkout-payment-element-wrap\">
<div id=\"payment-element\">
<div class="checkout-payment-element-wrap">
<div id="payment-element">
<!-- Stripe Payment Element mounts here -->
<div class=\"checkout-element-loading\">Loading payment form&#8230;</div>
<div class="checkout-element-loading">Loading payment form&#8230;</div>
</div>
</div>
<div id=\"payment-message\" class=\"checkout-message\" style=\"display:none;\"></div>
<div id="payment-message" class="checkout-message" style="display:none;"></div>
<button id=\"submit-btn\" class=\"checkout-submit\" type=\"submit\" disabled>
<span id=\"submit-label\">" + (if is_free { "Reserve free tier &#8594;" } else { "Complete purchase &#8594;" }) + "</span>
<span id=\"submit-spinner\" style=\"display:none;\">Processing&#8230;</span>
<button id="submit-btn" class="checkout-submit" type="submit" disabled>
<span id="submit-label">{#if is_free}Reserve free tier &#8594;{#else}Complete purchase &#8594;{/if}</span>
<span id="submit-spinner" style="display:none;">Processing&#8230;</span>
</button>
<p class=\"checkout-security\">
<svg aria-hidden=\"true\" width=\"12\" height=\"14\" viewBox=\"0 0 12 14\" fill=\"none\">
<path d=\"M6 0L0 2.5V7c0 3.3 2.5 6.3 6 7 3.5-.7 6-3.7 6-7V2.5L6 0z\" fill=\"currentColor\" opacity=\".35\"/>
<path d=\"M4 7l1.5 1.5L8.5 5\" stroke=\"currentColor\" stroke-width=\"1.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>
<p class="checkout-security">
<svg aria-hidden="true" width="12" height="14" viewBox="0 0 12 14" fill="none">
<path d="M6 0L0 2.5V7c0 3.3 2.5 6.3 6 7 3.5-.7 6-3.7 6-7V2.5L6 0z" fill="currentColor" opacity=".35"/>
<path d="M4 7l1.5 1.5L8.5 5" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
Secured by Stripe &nbsp;&middot;&nbsp; 256-bit TLS &nbsp;&middot;&nbsp; PCI DSS compliant
</p>
@@ -227,9 +227,9 @@ fn checkout_page(plan: String, pub_key: String) -> String {
</main>
<!-- Supabase JS -->
<script src=\"https://cdn.jsdelivr.net/npm/@supabase/supabase-js@2/dist/umd/supabase.js\"></script>
<script src="https://cdn.jsdelivr.net/npm/@supabase/supabase-js@2/dist/umd/supabase.js"></script>
<!-- Stripe.js -->
<script src=\"https://js.stripe.com/v3/\" async></script>
<script src="https://js.stripe.com/v3/" async></script>
<style>
.checkout-shell {
@@ -485,12 +485,11 @@ fn checkout_page(plan: String, pub_key: String) -> String {
.checkout-auth-badge strong { color: var(--navy); font-weight: 500; }
</style>
<script src=\"/js/checkout-auth.js\" defer></script>
<script src="/js/checkout-auth.js" defer></script>
<script>window.NEURON_CFG=window.NEURON_CFG||{};window.NEURON_CFG.plan=\"" + plan + "\";window.NEURON_CFG.pub_key=\"" + pub_key + "\";</script><script src=\"/js/checkout-stripe.js\" defer></script>
<script>window.NEURON_CFG=window.NEURON_CFG||{};window.NEURON_CFG.plan="{plan}";window.NEURON_CFG.pub_key="{pub_key}";</script><script src="/js/checkout-stripe.js" defer></script>
" + (if is_free { "
<script src=\"/js/checkout-free.js\" defer></script>
" } else { "" }) + "
"
{#if is_free}
<script>document.addEventListener('DOMContentLoaded',function(){window.neuronCheckoutFree&&window.neuronCheckoutFree()});</script>
{/if}
}
+108 -110
View File
@@ -1,168 +1,166 @@
// 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\">
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 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 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\">
<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;-webkit-overflow-scrolling:touch\">
<table style=\"width:100%;min-width:560px;border-collapse:collapse;font-family:var(--body);font-size:0.875rem\">
<div class="comparison-table reveal" style="transition-delay:200ms;overflow-x:auto;-webkit-overflow-scrolling:touch">
<table style="width:100%;min-width:560px;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:0.75rem 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.35rem\">
<img src=\"/assets/neuron-icon.png\" alt=\"Neuron\" style=\"width:28px;height:28px\">
<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:0.75rem 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.35rem">
<img src="/assets/neuron-icon.png" alt="Neuron" style="width:28px;height:28px">
Neuron
</div>
</th>
<th style=\"text-align:center;padding:0.75rem 1rem;font-weight:400;color:var(--t3);font-size:0.8rem;width:13.5%\">
<div style=\"display:flex;flex-direction:column;align-items:center;gap:0.35rem\">
<img src=\"/assets/brand/openai.svg\" alt=\"ChatGPT\" style=\"width:28px;height:28px\">
<th style="text-align:center;padding:0.75rem 1rem;font-weight:400;color:var(--t3);font-size:0.8rem;width:13.5%">
<div style="display:flex;flex-direction:column;align-items:center;gap:0.35rem">
<img src="/assets/brand/openai.svg" alt="ChatGPT" style="width:28px;height:28px">
ChatGPT
</div>
</th>
<th style=\"text-align:center;padding:0.75rem 1rem;font-weight:400;color:var(--t3);font-size:0.8rem;width:13.5%\">
<div style=\"display:flex;flex-direction:column;align-items:center;gap:0.35rem\">
<img src=\"/assets/brand/anthropic.svg\" alt=\"Claude\" style=\"width:28px;height:28px\">
<th style="text-align:center;padding:0.75rem 1rem;font-weight:400;color:var(--t3);font-size:0.8rem;width:13.5%">
<div style="display:flex;flex-direction:column;align-items:center;gap:0.35rem">
<img src="/assets/brand/anthropic.svg" alt="Claude" style="width:28px;height:28px">
Claude
</div>
</th>
<th style=\"text-align:center;padding:0.75rem 1rem;font-weight:400;color:var(--t3);font-size:0.8rem;width:13.5%\">
<div style=\"display:flex;flex-direction:column;align-items:center;gap:0.35rem\">
<img src=\"/assets/brand/gemini.svg\" alt=\"Gemini\" style=\"width:28px;height:28px\">
<th style="text-align:center;padding:0.75rem 1rem;font-weight:400;color:var(--t3);font-size:0.8rem;width:13.5%">
<div style="display:flex;flex-direction:column;align-items:center;gap:0.35rem">
<img src="/assets/brand/gemini.svg" alt="Gemini" style="width:28px;height:28px">
Gemini
</div>
</th>
<th style=\"text-align:center;padding:0.75rem 1rem;font-weight:400;color:var(--t3);font-size:0.8rem;width:13.5%\">
<div style=\"display:flex;flex-direction:column;align-items:center;gap:0.35rem\">
<img src=\"/assets/brand/copilot.svg\" alt=\"Copilot\" style=\"width:28px;height:28px\">
<th style="text-align:center;padding:0.75rem 1rem;font-weight:400;color:var(--t3);font-size:0.8rem;width:13.5%">
<div style="display:flex;flex-direction:column;align-items:center;gap:0.35rem">
<img src="/assets/brand/copilot.svg" alt="Copilot" style="width:28px;height:28px">
Copilot
</div>
</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 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 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 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:#D4A017\">&#9679;</span><br><span style=\"font-size:0.7rem;color:var(--t3);font-weight:400\">Coming soon</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 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:#D4A017">&#9679;</span><br><span style="font-size:0.7rem;color:var(--t3);font-weight:400">Coming soon</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, Grok...</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 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, Grok...</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 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\">Images &amp; video generation</td>
<td style=\"text-align:center;padding:1rem\"><span style=\"color:#D4A017\">&#9679;</span><br><span style=\"font-size:0.7rem;color:var(--t3);font-weight:400\">Coming soon</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#008040;font-weight:700;font-size:1.1rem\">&#10003;</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#008040;font-weight:700;font-size:1.1rem\">&#10003;</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#008040;font-weight:700;font-size:1.1rem\">&#10003;</span></td>
<td style=\"text-align:center;padding:1rem;color:var(--t3)\"><span style=\"color:#008040;font-weight:700;font-size:1.1rem\">&#10003;</span></td>
<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">Images &amp; video generation</td>
<td style="text-align:center;padding:1rem"><span style="color:#D4A017">&#9679;</span><br><span style="font-size:0.7rem;color:var(--t3);font-weight:400">Coming soon</span></td>
<td style="text-align:center;padding:1rem;color:var(--t3)"><span style="color:#008040;font-weight:700;font-size:1.1rem">&#10003;</span></td>
<td style="text-align:center;padding:1rem;color:var(--t3)"><span style="color:#008040;font-weight:700;font-size:1.1rem">&#10003;</span></td>
<td style="text-align:center;padding:1rem;color:var(--t3)"><span style="color:#008040;font-weight:700;font-size:1.1rem">&#10003;</span></td>
<td style="text-align:center;padding:1rem;color:var(--t3)"><span style="color:#008040;font-weight:700;font-size:1.1rem">&#10003;</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 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 founding (first 1,000)</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 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 founding (first 1,000)</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>
<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 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 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 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:clamp(1.5rem,4vw,2.5rem) clamp(1.25rem,4vw,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\">
<div class="reveal" style="transition-delay:400ms;margin-top:4rem;padding:clamp(1.5rem,4vw,2.5rem) clamp(1.25rem,4vw,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\">
<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 - it&#39;s one that has been building with you, on your terms, since day one.
</p>
</div>
</div>
</section>
"
}
+42 -44
View File
@@ -2,75 +2,73 @@
// 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\">
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 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 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\">
<p class="efficiency-sub reveal" style="transition-delay:160ms;margin-top:1.25rem">
Cost and environmental impact aren&#39;t afterthoughts - 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-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\"/>
<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\">The design: run inference entirely on-device via Ollama. No API calls, no inference cost, no carbon footprint from model compute. Full memory and context, zero cloud dependency. This is coming.</p>
<p class="efficiency-stat">0 cloud tokens</p>
<p class="efficiency-title">Local inference</p>
<div class="efficiency-rule"></div>
<p class="efficiency-body">The design: run inference entirely on-device via Ollama. No API calls, no inference cost, no carbon footprint from model compute. Full memory and context, zero cloud dependency. This is coming.</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\"/>
<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\">Use less</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>
<p class="efficiency-stat">Use less</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\"/>
<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\">Fewer tokens</p>
<p class=\"efficiency-title\">Same work done</p>
<div class=\"efficiency-rule\"></div>
<p class=\"efficiency-body\">Every time you open ChatGPT and explain who you are again, that&#39;s computation that didn&#39;t need to happen. Persistent context means shorter, more targeted prompts. The same outcome with less compute - and a smaller footprint on the planet.</p>
<p class="efficiency-stat">Fewer tokens</p>
<p class="efficiency-title">Same work done</p>
<div class="efficiency-rule"></div>
<p class="efficiency-body">Every time you open ChatGPT and explain who you are again, that&#39;s computation that didn&#39;t need to happen. Persistent context means shorter, more targeted prompts. The same outcome with less compute - and a smaller footprint on the planet.</p>
</div>
</div>
<div class=\"efficiency-pullquote reveal\">
<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 - 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>
<div class="container" style="margin-top:5rem"><div class="navy-line"></div></div>
</section>
"
}
+102 -104
View File
@@ -2,165 +2,164 @@
// 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\">
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 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\">Q1 2027.</span>
<div class="enterprise-head-row">
<div style="max-width:28rem">
<h2 class="display-lg reveal" style="transition-delay:80ms">
Enterprise-ready <span class="gold">Q1 2027.</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\">
<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 from the start.
</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>
<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 now &mdash; launching Q1 2027
</div>
<p style=\"font-size:.75rem;color:rgba(0,82,160,.45)\">Use the form below &middot; I review every inquiry &middot; I&#39;ll be spending the holidays with my family &mdash; we launch Q1</p>
<p style="font-size:.75rem;color:rgba(0,82,160,.45)">Use the form below &middot; I review every inquiry &middot; I&#39;ll be spending the holidays with my family &mdash; we launch Q1</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 - your company&#39;s institutional knowledge stays inside your walls.</p>
<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 - 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 persists - their patterns, their domain knowledge, their reasoning - available to the team they built it with.</p>
<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 persists - their patterns, their domain knowledge, their reasoning - 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 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\">Custom on-device 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 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">Custom on-device 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 - 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 - but I&#39;m raising it here because I&#39;d rather you know before you reach out.</p>
<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 - 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 - 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 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 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 - no sales funnel, no SDR. If it&#39;s a fit, I respond directly.</p>
<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 - 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 - on your infrastructure, in your network, with your security requirements.</p>
<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 - 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>
<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 - no NDA required to evaluate the terms.</p>
<a href=\"/legal/enterprise-terms\" class=\"ent-terms-link\">Read the Enterprise Agreement &#8594;</a>
<div class="ent-terms-row">
<p class="ent-terms-text">The full Enterprise Agreement is published. Read it before reaching out - no NDA required to evaluate the terms.</p>
<a href="/legal/enterprise-terms" class="ent-terms-link">Read the Enterprise Agreement &#8594;</a>
</div>
<!-- Enterprise inquiry form -->
<div style=\"margin-top:3rem;padding-top:2.5rem;border-top:1px solid var(--border)\">
<p class=\"label\" style=\"margin-bottom:0.75rem;font-size:0.65rem\">Express interest</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9rem;color:var(--t2);line-height:1.75;margin-bottom:2rem\">I review every inquiry myself. Fill this out honestly - the questions are a filter, not a formality.</p>
<div style="margin-top:3rem;padding-top:2.5rem;border-top:1px solid var(--border)">
<p class="label" style="margin-bottom:0.75rem;font-size:0.65rem">Express interest</p>
<p style="font-family:var(--body);font-weight:300;font-size:0.9rem;color:var(--t2);line-height:1.75;margin-bottom:2rem">I review every inquiry myself. Fill this out honestly - the questions are a filter, not a formality.</p>
<form id=\"enterprise-form\" class=\"ent-inquiry-form\">
<form id="enterprise-form" class="ent-inquiry-form">
<div style=\"display:flex;flex-direction:column;gap:0.4rem\">
<label for=\"ent-name\" style=\"font-family:var(--body);font-size:0.7rem;font-weight:500;letter-spacing:0.08em;text-transform:uppercase;color:var(--t3)\">Name</label>
<input id=\"ent-name\" name=\"name\" type=\"text\" required placeholder=\"Your name\"
style=\"font-family:var(--body);font-size:0.9rem;font-weight:300;color:var(--t1);background:#fff;border:1px solid rgba(0,82,160,.22);padding:0.7rem 0.9rem;outline:none;border-radius:0;-webkit-appearance:none;width:100%;box-sizing:border-box\">
<div style="display:flex;flex-direction:column;gap:0.4rem">
<label for="ent-name" style="font-family:var(--body);font-size:0.7rem;font-weight:500;letter-spacing:0.08em;text-transform:uppercase;color:var(--t3)">Name</label>
<input id="ent-name" name="name" type="text" required placeholder="Your name"
style="font-family:var(--body);font-size:0.9rem;font-weight:300;color:var(--t1);background:#fff;border:1px solid rgba(0,82,160,.22);padding:0.7rem 0.9rem;outline:none;border-radius:0;-webkit-appearance:none;width:100%;box-sizing:border-box">
</div>
<div style=\"display:flex;flex-direction:column;gap:0.4rem\">
<label for=\"ent-email\" style=\"font-family:var(--body);font-size:0.7rem;font-weight:500;letter-spacing:0.08em;text-transform:uppercase;color:var(--t3)\">Work email</label>
<input id=\"ent-email\" name=\"email\" type=\"email\" required placeholder=\"you@company.com\"
style=\"font-family:var(--body);font-size:0.9rem;font-weight:300;color:var(--t1);background:#fff;border:1px solid rgba(0,82,160,.22);padding:0.7rem 0.9rem;outline:none;border-radius:0;-webkit-appearance:none;width:100%;box-sizing:border-box\">
<div style="display:flex;flex-direction:column;gap:0.4rem">
<label for="ent-email" style="font-family:var(--body);font-size:0.7rem;font-weight:500;letter-spacing:0.08em;text-transform:uppercase;color:var(--t3)">Work email</label>
<input id="ent-email" name="email" type="email" required placeholder="you@company.com"
style="font-family:var(--body);font-size:0.9rem;font-weight:300;color:var(--t1);background:#fff;border:1px solid rgba(0,82,160,.22);padding:0.7rem 0.9rem;outline:none;border-radius:0;-webkit-appearance:none;width:100%;box-sizing:border-box">
</div>
<div style=\"display:flex;flex-direction:column;gap:0.4rem\">
<label for=\"ent-company\" style=\"font-family:var(--body);font-size:0.7rem;font-weight:500;letter-spacing:0.08em;text-transform:uppercase;color:var(--t3)\">Organization</label>
<input id=\"ent-company\" name=\"company\" type=\"text\" required placeholder=\"Company or organization name\"
style=\"font-family:var(--body);font-size:0.9rem;font-weight:300;color:var(--t1);background:#fff;border:1px solid rgba(0,82,160,.22);padding:0.7rem 0.9rem;outline:none;border-radius:0;-webkit-appearance:none;width:100%;box-sizing:border-box\">
<div style="display:flex;flex-direction:column;gap:0.4rem">
<label for="ent-company" style="font-family:var(--body);font-size:0.7rem;font-weight:500;letter-spacing:0.08em;text-transform:uppercase;color:var(--t3)">Organization</label>
<input id="ent-company" name="company" type="text" required placeholder="Company or organization name"
style="font-family:var(--body);font-size:0.9rem;font-weight:300;color:var(--t1);background:#fff;border:1px solid rgba(0,82,160,.22);padding:0.7rem 0.9rem;outline:none;border-radius:0;-webkit-appearance:none;width:100%;box-sizing:border-box">
</div>
<div style=\"display:flex;flex-direction:column;gap:0.4rem\">
<label for=\"ent-size\" style=\"font-family:var(--body);font-size:0.7rem;font-weight:500;letter-spacing:0.08em;text-transform:uppercase;color:var(--t3)\">Team size</label>
<select id=\"ent-size\" name=\"size\" required
style=\"font-family:var(--body);font-size:0.9rem;font-weight:300;color:var(--t1);background:#fff;border:1px solid rgba(0,82,160,.22);padding:0.7rem 0.9rem;outline:none;border-radius:0;-webkit-appearance:none;cursor:pointer;width:100%;box-sizing:border-box\">
<option value=\"\">Select&hellip;</option>
<option value=\"2-10\">2&#8211;10 people</option>
<option value=\"11-50\">11&#8211;50 people</option>
<option value=\"51-200\">51&#8211;200 people</option>
<option value=\"201-500\">201&#8211;500 people</option>
<option value=\"500+\">500+ people</option>
<div style="display:flex;flex-direction:column;gap:0.4rem">
<label for="ent-size" style="font-family:var(--body);font-size:0.7rem;font-weight:500;letter-spacing:0.08em;text-transform:uppercase;color:var(--t3)">Team size</label>
<select id="ent-size" name="size" required
style="font-family:var(--body);font-size:0.9rem;font-weight:300;color:var(--t1);background:#fff;border:1px solid rgba(0,82,160,.22);padding:0.7rem 0.9rem;outline:none;border-radius:0;-webkit-appearance:none;cursor:pointer;width:100%;box-sizing:border-box">
<option value="">Select&hellip;</option>
<option value="2-10">2&#8211;10 people</option>
<option value="11-50">11&#8211;50 people</option>
<option value="51-200">51&#8211;200 people</option>
<option value="201-500">201&#8211;500 people</option>
<option value="500+">500+ people</option>
</select>
</div>
<div style=\"grid-column:1/-1;display:flex;flex-direction:column;gap:0.4rem\">
<label for=\"ent-use\" style=\"font-family:var(--body);font-size:0.7rem;font-weight:500;letter-spacing:0.08em;text-transform:uppercase;color:var(--t3)\">What do you want to use Neuron for?</label>
<textarea id=\"ent-use\" name=\"use_case\" required rows=\"3\" placeholder=\"Describe your intended use case - be specific.\"
style=\"font-family:var(--body);font-size:0.9rem;font-weight:300;color:var(--t1);background:#fff;border:1px solid rgba(0,82,160,.22);padding:0.7rem 0.9rem;outline:none;border-radius:0;resize:vertical;-webkit-appearance:none;width:100%;box-sizing:border-box\"></textarea>
<div style="grid-column:1/-1;display:flex;flex-direction:column;gap:0.4rem">
<label for="ent-use" style="font-family:var(--body);font-size:0.7rem;font-weight:500;letter-spacing:0.08em;text-transform:uppercase;color:var(--t3)">What do you want to use Neuron for?</label>
<textarea id="ent-use" name="use_case" required rows="3" placeholder="Describe your intended use case - be specific."
style="font-family:var(--body);font-size:0.9rem;font-weight:300;color:var(--t1);background:#fff;border:1px solid rgba(0,82,160,.22);padding:0.7rem 0.9rem;outline:none;border-radius:0;resize:vertical;-webkit-appearance:none;width:100%;box-sizing:border-box"></textarea>
</div>
<div style=\"grid-column:1/-1;display:flex;flex-direction:column;gap:0.4rem\">
<label for=\"ent-headcount\" style=\"font-family:var(--body);font-size:0.7rem;font-weight:500;letter-spacing:0.08em;text-transform:uppercase;color:var(--t3)\">Is reducing headcount a primary goal of this deployment?</label>
<select id=\"ent-headcount\" name=\"headcount\" required onchange=\"entHeadcountChange(this.value)\"
style=\"font-family:var(--body);font-size:0.9rem;font-weight:300;color:var(--t1);background:#fff;border:1px solid rgba(0,82,160,.22);padding:0.7rem 0.9rem;outline:none;border-radius:0;-webkit-appearance:none;cursor:pointer;width:100%;box-sizing:border-box\">
<option value=\"\">Select&hellip;</option>
<option value=\"no\">No - making our team more capable</option>
<option value=\"secondary\">It&#39;s a secondary factor, not the primary goal</option>
<option value=\"yes\">Yes - replacing roles with automation</option>
<div style="grid-column:1/-1;display:flex;flex-direction:column;gap:0.4rem">
<label for="ent-headcount" style="font-family:var(--body);font-size:0.7rem;font-weight:500;letter-spacing:0.08em;text-transform:uppercase;color:var(--t3)">Is reducing headcount a primary goal of this deployment?</label>
<select id="ent-headcount" name="headcount" required onchange="entHeadcountChange(this.value)"
style="font-family:var(--body);font-size:0.9rem;font-weight:300;color:var(--t1);background:#fff;border:1px solid rgba(0,82,160,.22);padding:0.7rem 0.9rem;outline:none;border-radius:0;-webkit-appearance:none;cursor:pointer;width:100%;box-sizing:border-box">
<option value="">Select&hellip;</option>
<option value="no">No - making our team more capable</option>
<option value="secondary">It&#39;s a secondary factor, not the primary goal</option>
<option value="yes">Yes - replacing roles with automation</option>
</select>
<p id=\"ent-filter-msg-secondary\" style=\"display:none;font-family:var(--body);font-size:0.875rem;font-weight:300;color:rgba(0,82,160,.75);line-height:1.65;padding:0.75rem 1rem;background:rgba(0,82,160,.04);border-left:2px solid rgba(0,82,160,.3)\">
<p id="ent-filter-msg-secondary" style="display:none;font-family:var(--body);font-size:0.875rem;font-weight:300;color:rgba(0,82,160,.75);line-height:1.65;padding:0.75rem 1rem;background:rgba(0,82,160,.04);border-left:2px solid rgba(0,82,160,.3)">
I review these personally. I&#39;ll consider it - but I want to be direct with you: if headcount reduction is in the picture at all, even as a secondary outcome, your chances here are low. That&#39;s not a negotiating position. It&#39;s how I built this and what I&#39;m willing to support.
</p>
<p id=\"ent-filter-msg-yes\" style=\"display:none;font-family:var(--body);font-size:0.875rem;font-weight:300;color:#c0392b;line-height:1.65;padding:0.75rem 1rem;background:rgba(192,57,43,.05);border-left:2px solid rgba(192,57,43,.4)\">
<p id="ent-filter-msg-yes" style="display:none;font-family:var(--body);font-size:0.875rem;font-weight:300;color:#c0392b;line-height:1.65;padding:0.75rem 1rem;background:rgba(192,57,43,.05);border-left:2px solid rgba(192,57,43,.4)">
Neuron isn&#39;t the right fit here. I built this to expand what people can do, not to replace them. If that changes, I&#39;m here.
</p>
</div>
<div id=\"ent-form-error\" style=\"grid-column:1/-1;display:none;font-family:var(--body);font-size:0.875rem;color:#c0392b;padding:0.75rem 1rem;background:rgba(192,57,43,.05);border-left:2px solid rgba(192,57,43,.4)\"></div>
<div id="ent-form-error" style="grid-column:1/-1;display:none;font-family:var(--body);font-size:0.875rem;color:#c0392b;padding:0.75rem 1rem;background:rgba(192,57,43,.05);border-left:2px solid rgba(192,57,43,.4)"></div>
<div style=\"grid-column:1/-1\">
<button type=\"submit\" id=\"ent-submit\"
style=\"font-family:var(--body);font-size:0.75rem;font-weight:600;letter-spacing:0.12em;text-transform:uppercase;background:var(--navy);color:#fff;border:none;padding:0.95rem 2rem;cursor:pointer;transition:background .2s\">
<div style="grid-column:1/-1">
<button type="submit" id="ent-submit"
style="font-family:var(--body);font-size:0.75rem;font-weight:600;letter-spacing:0.12em;text-transform:uppercase;background:var(--navy);color:#fff;border:none;padding:0.95rem 2rem;cursor:pointer;transition:background .2s">
Send inquiry &#8594;
</button>
</div>
</form>
<div id=\"enterprise-success\" style=\"display:none;padding:2rem;background:rgba(0,82,160,.04);border-left:3px solid var(--navy)\">
<p style=\"font-family:var(--head);font-size:1.25rem;font-weight:500;color:var(--t1);margin-bottom:0.5rem\">Received.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8\">I review these personally. If it&#39;s a fit, I&#39;ll respond directly to your email - usually within a few days.</p>
<div id="enterprise-success" style="display:none;padding:2rem;background:rgba(0,82,160,.04);border-left:3px solid var(--navy)">
<p style="font-family:var(--head);font-size:1.25rem;font-weight:500;color:var(--t1);margin-bottom:0.5rem">Received.</p>
<p style="font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8">I review these personally. If it&#39;s a fit, I&#39;ll respond directly to your email - usually within a few days.</p>
</div>
</div>
@@ -177,11 +176,10 @@ fn enterprise() -> String {
}
@media (max-width: 600px) {
.ent-inquiry-form { grid-template-columns: 1fr; }
.ent-inquiry-form > div[style*=\"grid-column:1/-1\"],
.ent-inquiry-form > div[style*=\"grid-column: 1 / -1\"] { grid-column: 1; }
.ent-inquiry-form > div[style*="grid-column:1/-1"],
.ent-inquiry-form > div[style*="grid-column: 1 / -1"] { grid-column: 1; }
}
</style>
<script src=\"/js/enterprise.js\" defer></script>
"
<script src="/js/enterprise.js" defer></script>
}
+65 -55
View File
@@ -5,139 +5,149 @@ from styles import { page_open, page_close }
from nav import { nav }
fn enterprise_terms_page() -> String {
return page_open() + enterprise_terms_body() + page_close()
return {page_open()}{enterprise_terms_body()}{page_close()}
}
fn section(num: String, title: String, body: String) -> String {
return "
<div style=\"margin-bottom:3rem\">
<div style=\"display:flex;align-items:baseline;flex-wrap:wrap;gap:0.5rem 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);flex-shrink:0\">&#167; " + num + "</span>
<h2 style=\"font-family:var(--head);font-size:1.25rem;font-weight:600;color:var(--t1);min-width:0;word-break:break-word\">" + title + "</h2>
return <div style="margin-bottom:3rem">
<div style="display:flex;align-items:baseline;flex-wrap:wrap;gap:0.5rem 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);flex-shrink:0">&#167; {num}</span>
<h2 style="font-family:var(--head);font-size:1.25rem;font-weight:600;color:var(--t1);min-width:0;word-break:break-word">{title}</h2>
</div>
" + body + "
</div>"
{raw(body)}
</div>
}
fn p(text: String) -> String {
return "<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem\">" + text + "</p>"
return <p style="font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem">{raw(text)}</p>
}
fn p_last(text: String) -> String {
return "<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8\">" + text + "</p>"
return <p style="font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8">{raw(text)}</p>
}
fn p_caps(text: String) -> String {
return "<p style=\"font-family:var(--body);font-size:0.875rem;font-weight:600;color:var(--t1);line-height:1.7;margin-bottom:1rem\">" + text + "</p>"
return <p style="font-family:var(--body);font-size:0.875rem;font-weight:600;color:var(--t1);line-height:1.7;margin-bottom:1rem">{raw(text)}</p>
}
fn enterprise_terms_body() -> String {
return nav() + "
<div style=\"max-width:720px;margin:0 auto;padding:6rem clamp(1rem,5vw,2.5rem) 8rem;box-sizing:border-box;overflow-wrap:break-word;word-break:break-word\">
<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>
return {nav()}
<div style="max-width:720px;margin:0 auto;padding:6rem clamp(1rem,5vw,2.5rem) 8rem;box-sizing:border-box;overflow-wrap:break-word;word-break:break-word">
<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 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>
" + section("1", "Parties and Scope",
{raw(section("1", "Parties and Scope",
p("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_last("This Agreement supplements the Neuron Terms of Service. In the event of conflict, this Agreement controls for enterprise use. The parties are bound by the Order Form executed at time of deployment, which specifies tier, seat count, term, and pricing.")
) + section("2", "License Grant and Usage Rights",
))}
{raw(section("2", "License Grant and Usage Rights",
p("Subject to the terms of this Agreement and timely payment of fees, Neuron grants Customer a limited, non-exclusive, non-transferable, non-sublicensable license to deploy and use the Neuron platform (&#34;Software&#34;) solely for Customer&#39;s internal business purposes during the Term.")
+ p("The license is scoped to the number of authorized seats, devices, or instances specified in the Order Form. Customer may not exceed the licensed scope without executing a seat expansion. Neuron will not invoice retroactively for inadvertent overage of fewer than 10% of contracted seats if Customer notifies Neuron and brings usage into compliance within 30 days.")
+ p_last("Customer may not: (a) sublicense, resell, or distribute the Software to third parties; (b) reverse engineer, decompile, or attempt to extract source code or trained model weights; (c) use the Software to build a competing product; or (d) remove or obscure any proprietary notices. Private Cloud deployments may be deployed to Customer&#39;s infrastructure but may not be transferred or made available to entities other than Customer&#39;s own employees and contractors under appropriate confidentiality obligations.")
) + section("3", "Data and Privacy",
))}
{raw(section("3", "Data and Privacy",
p("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("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 - including relay, peer-to-peer sync, or collaborative features - 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 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 - Neuron cannot read it - and is not stored or retained after transmission.")
+ p("Customer owns all data processed through the platform. Customer data is not Customer&#39;s data in the legal sense of the term as used in data processing frameworks - Customer is the controller. Neuron is the processor. Upon termination, Customer data is returned or destroyed within 30 days at Customer&#39;s election. We do not retain copies.")
+ p_last("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. Neuron will notify Customer within 72 hours of becoming aware of any confirmed breach affecting Customer data.")
) + section("4", "Values Alignment",
))}
{raw(section("4", "Values Alignment",
p("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("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("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. Termination under this section is subject to the notice and cure provisions of &#167; 10.")
+ p_last("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.")
) + section("5", "Service Levels and Support",
))}
{raw(section("5", "Service Levels and Support",
p("For cloud-hosted deployments, Neuron targets 99.9% monthly uptime, excluding scheduled maintenance windows (communicated at least 48 hours in advance) and circumstances outside Neuron&#39;s reasonable control. In the event Neuron fails to meet this target in a given calendar month, Customer may request a service credit equal to 5% of that month&#39;s fees for each full percentage point of availability below the target, up to a maximum of 30% of monthly fees. Credits are the sole and exclusive remedy for availability failures.")
+ p("For on-premises and private cloud deployments, Customer is responsible for infrastructure availability. Neuron&#39;s SLA obligations apply only to software defects in the distributed build, not to Customer&#39;s infrastructure choices.")
+ p_last("Support is provided by email at enterprise@neurontechnologies.ai. Neuron will acknowledge critical issues (complete service outage or data loss risk) within 4 business hours and provide a status update within 24 hours. Standard issues are acknowledged within 2 business days. Neuron does not guarantee resolution timelines for issues requiring platform changes.")
) + section("6", "Security and Compliance",
))}
{raw(section("6", "Security and Compliance",
p("Neuron implements security controls commensurate with enterprise software handling sensitive user data. These include: encryption in transit (TLS 1.2+) and at rest for cloud-hosted services; role-based access controls; audit logging at the infrastructure layer; and regular internal security reviews.")
+ p("Neuron will pursue SOC 2 Type II certification and will provide Customer with the most recent available report upon request under a signed NDA. Until certification is achieved, Neuron will make available a written summary of security controls upon request.")
+ p_last("Customer is responsible for: (a) maintaining the security of credentials and API keys used to access the platform; (b) configuring access controls for Customer&#39;s own users; (c) compliance with applicable law with respect to the data Customer chooses to input into the platform; and (d) conducting its own security evaluation appropriate to its risk profile before deployment in regulated environments.")
) + section("7", "Confidentiality",
))}
{raw(section("7", "Confidentiality",
p("Each party (&#34;Receiving Party&#34;) agrees to protect the other party&#39;s (&#34;Disclosing Party&#34;) Confidential Information with the same degree of care it uses to protect its own confidential information, but no less than reasonable care. &#34;Confidential Information&#34; means any non-public information disclosed by the Disclosing Party that is designated as confidential or that reasonably should be understood to be confidential given the nature of the information and circumstances of disclosure.")
+ p("Confidential Information does not include information that: (a) becomes publicly known through no breach by the Receiving Party; (b) was already known to the Receiving Party before disclosure; (c) is received from a third party without restriction; or (d) was independently developed by the Receiving Party without use of the Confidential Information.")
+ p_last("These obligations survive termination of this Agreement for three years. Receiving Party may disclose Confidential Information to the extent required by law or court order, provided that Receiving Party gives Disclosing Party prompt written notice and cooperates with any effort to obtain a protective order.")
) + section("8", "Intellectual Property",
))}
{raw(section("8", "Intellectual Property",
p("Neuron retains all right, title, and interest in and to the Software, including all improvements, updates, and derivative works, and all intellectual property rights therein. No title to or ownership of the Software transfers to Customer under this Agreement.")
+ p("Customer retains all right, title, and interest in and to Customer&#39;s data, including inputs, memorys, and outputs generated through Customer&#39;s use of the platform. Neuron does not claim ownership of Customer&#39;s outputs. Customer is responsible for evaluating the accuracy and appropriateness of outputs before relying on them.")
+ p_last("This Agreement does not grant Customer any right to use Neuron&#39;s trademarks, trade names, or logos except as expressly authorized in writing. Neuron Aligned Partner certification (&#167; 14) includes a limited right to use the partner designation as specified in the Partner Addendum.")
) + section("9", "Indemnification",
))}
{raw(section("9", "Indemnification",
p("Neuron will defend Customer against third-party claims that the Software, as provided by Neuron and used in accordance with this Agreement, infringes a valid patent, copyright, or trademark, and will indemnify Customer for damages finally awarded in such a proceeding or agreed in settlement. This obligation does not apply to claims arising from: (a) Customer&#39;s modification of the Software; (b) Customer&#39;s combination of the Software with third-party products or data not provided by Neuron; or (c) Customer&#39;s use of the Software in violation of this Agreement.")
+ p_last("Customer will defend Neuron against third-party claims arising from Customer&#39;s use of the platform in violation of applicable law, this Agreement, or the rights of third parties, and will indemnify Neuron for damages finally awarded or agreed in settlement. Each party must promptly notify the other of any claim for which indemnification may be sought and must cooperate reasonably in the defense.")
) + section("10", "Term and Termination",
))}
{raw(section("10", "Term and Termination",
p("This Agreement begins on the Effective Date specified in the Order Form and continues for the initial term stated therein, typically twelve months. Unless either party provides written notice of non-renewal at least 30 days before the end of the then-current term, this Agreement automatically renews for successive one-year terms at the pricing in effect at renewal.")
+ p("Either party may terminate this Agreement for material breach upon 30 days&#39; written notice if the breach remains uncured at the end of that period. Neuron may terminate immediately upon written notice if Customer breaches &#167; 2 (unauthorized use of the Software) or &#167; 7 (confidentiality obligations).")
+ p("Neuron may terminate this Agreement under &#167; 4 (Values Alignment) with 60 days&#39; written notice if Neuron determines in good faith that Customer&#39;s use of the platform is materially and persistently misaligned with the principles stated therein. Neuron will provide Customer the opportunity to respond and demonstrate alignment before termination takes effect.")
+ p_last("Upon termination: (a) all licenses immediately terminate; (b) Customer must cease use of the Software; (c) each party will return or destroy the other&#39;s Confidential Information upon request; and (d) Neuron will make Customer&#39;s data available for export for 30 days, after which it will be destroyed. Sections 3 (data ownership and destruction), 7 (confidentiality), 8 (intellectual property), 9 (indemnification), 11 (limitation of liability), and 13 (governing law) survive termination.")
) + section("11", "Limitation of Liability",
))}
{raw(section("11", "Limitation of Liability",
p_caps("NEURON&#39;S TOTAL LIABILITY UNDER THIS AGREEMENT SHALL NOT EXCEED THE FEES PAID BY CUSTOMER IN THE TWELVE MONTHS PRECEDING THE CLAIM.")
+ p_caps("NEITHER PARTY SHALL BE LIABLE FOR INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, OR PUNITIVE DAMAGES, EVEN IF ADVISED OF THEIR POSSIBILITY.")
+ p_last("These limitations do not apply to: (a) Customer&#39;s payment obligations; (b) breaches of &#167; 7 (confidentiality); (c) a party&#39;s indemnification obligations under &#167; 9; or (d) a party&#39;s gross negligence or willful misconduct.")
) + section("12", "Warranties and Disclaimers",
))}
{raw(section("12", "Warranties and Disclaimers",
p("Neuron warrants that: (a) the Software will perform materially in accordance with its published documentation during the Term; (b) Neuron has the authority to enter into this Agreement and grant the licenses herein; and (c) to Neuron&#39;s knowledge, the Software does not knowingly infringe any third-party intellectual property rights.")
+ p("Customer&#39;s exclusive remedy for a warranty breach under (a) is for Neuron to use commercially reasonable efforts to correct the non-conformity, or if correction is not commercially practicable within 30 days, to terminate the Agreement and receive a pro-rata refund of prepaid fees for the unused portion of the Term.")
+ p_caps("EXCEPT AS EXPRESSLY SET FORTH IN THIS SECTION, THE SOFTWARE IS PROVIDED &#34;AS IS.&#34; NEURON DISCLAIMS ALL OTHER WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.")
+ p_last("AI-generated outputs are probabilistic and may be inaccurate, incomplete, or inappropriate for specific contexts. Customer is responsible for reviewing outputs before relying on them for any consequential decision. Neuron does not warrant that outputs will be accurate, complete, or suitable for any particular purpose.")
) + section("13", "Governing Law and Disputes",
))}
{raw(section("13", "Governing Law and Disputes",
p("This Agreement is governed by the laws of the State of Delaware, without regard to conflict of law principles.")
+ p_last("The parties agree to attempt to resolve disputes through good-faith negotiation before initiating formal proceedings. If negotiation fails within 30 days of written notice of the dispute, disputes shall be resolved by binding arbitration under AAA Commercial Arbitration Rules in Wilmington, Delaware, except that either party may seek injunctive relief in court for IP or confidentiality violations without first arbitrating.")
) + "
))}
<!-- Neuron Aligned Partner Program - highlighted section -->
<div style=\"margin-bottom:3rem;padding:clamp(1.25rem,4vw,2rem) clamp(1rem,4vw,2.25rem);border:1.5px solid rgba(0,82,160,.35);background:rgba(0,82,160,.03);box-sizing:border-box\">
<div style=\"display:flex;align-items:baseline;flex-wrap:wrap;gap:0.5rem 1rem;margin-bottom:1.25rem;border-bottom:1px solid rgba(0,82,160,.20);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);flex-shrink:0\">&#167; 14</span>
<h2 style=\"font-family:var(--head);font-size:1.25rem;font-weight:600;color:var(--t1);min-width:0;word-break:break-word\">Neuron Aligned Partner Program</h2>
<div style="margin-bottom:3rem;padding:clamp(1.25rem,4vw,2rem) clamp(1rem,4vw,2.25rem);border:1.5px solid rgba(0,82,160,.35);background:rgba(0,82,160,.03);box-sizing:border-box">
<div style="display:flex;align-items:baseline;flex-wrap:wrap;gap:0.5rem 1rem;margin-bottom:1.25rem;border-bottom:1px solid rgba(0,82,160,.20);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);flex-shrink:0">&#167; 14</span>
<h2 style="font-family:var(--head);font-size:1.25rem;font-weight:600;color:var(--t1);min-width:0;word-break:break-word">Neuron Aligned Partner Program</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\">Participation in the Neuron Aligned Partner Program is entirely voluntary. No enterprise customer is required to participate, and the standard enterprise relationship under this Agreement is not conditioned on it.</p>
<p style="font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem">Participation in the Neuron Aligned Partner Program is entirely voluntary. No enterprise customer is required to participate, and the standard enterprise relationship under this Agreement is not conditioned on it.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem\">An organization that chooses to participate executes a Neuron Aligned Partner Addendum (&#34;Partner Addendum&#34;), a separate document supplementing this Agreement. In the Partner Addendum, Customer makes the following certification:</p>
<p style="font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem">An organization that chooses to participate executes a Neuron Aligned Partner Addendum (&#34;Partner Addendum&#34;), a separate document supplementing this Agreement. In the Partner Addendum, Customer makes the following certification:</p>
<div style=\"margin:1.5rem 0;padding:1.25rem 1.5rem;border-left:3px solid var(--navy);background:rgba(0,82,160,.04);box-sizing:border-box\">
<p style=\"font-family:var(--body);font-weight:400;font-size:0.9375rem;color:var(--t1);line-height:1.8;font-style:italic\">&#34;We are deploying Neuron to make our people more capable, not to eliminate them. Reducing headcount is not a primary objective of this deployment. We commit to using this technology in a manner consistent with the welfare of our workforce, and we will notify Neuron if our intentions change in ways that materially contradict this commitment.&#34;</p>
<div style="margin:1.5rem 0;padding:1.25rem 1.5rem;border-left:3px solid var(--navy);background:rgba(0,82,160,.04);box-sizing:border-box">
<p style="font-family:var(--body);font-weight:400;font-size:0.9375rem;color:var(--t1);line-height:1.8;font-style:italic">&#34;We are deploying Neuron to make our people more capable, not to eliminate them. Reducing headcount is not a primary objective of this deployment. We commit to using this technology in a manner consistent with the welfare of our workforce, and we will notify Neuron if our intentions change in ways that materially contradict this commitment.&#34;</p>
</div>
<p style=\"font-family:var(--body);font-weight:400;font-size:0.9rem;color:var(--t1);line-height:1.6;margin-bottom:0.75rem\">Partners who execute the Partner Addendum receive:</p>
<ul style=\"font-family:var(--body);font-weight:300;font-size:0.9rem;color:var(--t2);line-height:1.8;padding-left:1.25rem;margin-bottom:1.5rem\">
<li style=\"margin-bottom:0.4rem\">Preferential per-seat pricing - specific discount terms are disclosed at the time of certification and reflected in the Order Form</li>
<li style=\"margin-bottom:0.4rem\">Membership in the Neuron Aligned Partner Network, a private community of organizations that have made the same commitment</li>
<li style=\"margin-bottom:0.4rem\">Optional public listing as a Neuron Aligned Partner - a signal to employees and the market that AI is being used to expand human capability, not eliminate it</li>
<li style=\"margin-bottom:0.4rem\">Priority consideration in the enterprise roadmap - Aligned Partners are given more weight in feature prioritization and deployment planning</li>
<p style="font-family:var(--body);font-weight:400;font-size:0.9rem;color:var(--t1);line-height:1.6;margin-bottom:0.75rem">Partners who execute the Partner Addendum receive:</p>
<ul style="font-family:var(--body);font-weight:300;font-size:0.9rem;color:var(--t2);line-height:1.8;padding-left:1.25rem;margin-bottom:1.5rem">
<li style="margin-bottom:0.4rem">Preferential per-seat pricing - specific discount terms are disclosed at the time of certification and reflected in the Order Form</li>
<li style="margin-bottom:0.4rem">Membership in the Neuron Aligned Partner Network, a private community of organizations that have made the same commitment</li>
<li style="margin-bottom:0.4rem">Optional public listing as a Neuron Aligned Partner - a signal to employees and the market that AI is being used to expand human capability, not eliminate it</li>
<li style="margin-bottom:0.4rem">Priority consideration in the enterprise roadmap - Aligned Partners are given more weight in feature prioritization and deployment planning</li>
<li>Direct access to Neuron leadership for roadmap input and partnership discussions</li>
</ul>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem\">The certification is self-attested and made in good faith. Neuron does not audit deployment usage to verify the commitment, but relies on the integrity of the partner&#39;s representation. If Neuron determines, based on credible evidence, that a partner&#39;s use of the platform is materially inconsistent with the certification, Neuron may revoke partner status with 30 days&#39; notice and adjust pricing to standard enterprise rates at the next renewal.</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 certification is self-attested and made in good faith. Neuron does not audit deployment usage to verify the commitment, but relies on the integrity of the partner&#39;s representation. If Neuron determines, based on credible evidence, that a partner&#39;s use of the platform is materially inconsistent with the certification, Neuron may revoke partner status with 30 days&#39; notice and adjust pricing to standard enterprise rates at the next renewal.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.875rem;color:var(--t3);line-height:1.8\">To inquire about the Partner Program, contact enterprise@neurontechnologies.ai with subject line &#34;Aligned Partner.&#34;</p>
<p style="font-family:var(--body);font-weight:300;font-size:0.875rem;color:var(--t3);line-height:1.8">To inquire about the Partner Program, contact enterprise@neurontechnologies.ai with subject line &#34;Aligned Partner.&#34;</p>
</div>
" + section("15", "General Provisions",
{raw(section("15", "General Provisions",
p("This Agreement, together with the Order Form and any addenda, constitutes the entire agreement between the parties with respect to its subject matter and supersedes all prior negotiations, representations, and agreements. Any amendment must be in writing and signed by authorized representatives of both parties.")
+ p("If any provision of this Agreement is found unenforceable, it will be modified to the minimum extent necessary to make it enforceable, and the remaining provisions will continue in full force. Failure to enforce any provision is not a waiver of the right to enforce it later.")
+ p("Neither party may assign this Agreement without the other&#39;s written consent, except that Neuron may assign to an acquirer of all or substantially all of its business or assets without consent, provided the acquirer assumes all obligations under this Agreement.")
+ p_last("Notices must be in writing and sent to enterprise@neurontechnologies.ai for Neuron, or to the email address specified in the Order Form for Customer. Notices are effective on the day of confirmed receipt.")
) + "
))}
<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 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>
"
}
+36 -38
View File
@@ -5,77 +5,76 @@
// 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\">
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\" class=\"env-grid\">
<div style="display:grid;grid-template-columns:1fr 1fr;gap:6rem;align-items:start" class="env-grid">
<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 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\">
Fewer tokens.<br><span class=\"gold\">Same work done.</span>
<h2 class="display-lg reveal" style="transition-delay:80ms;margin-bottom:1.5rem">
Fewer tokens.<br><span class="gold">Same work done.</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\">
<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">
Persistent context means shorter, more targeted prompts on every call. Less computation. Lower cost. A smaller footprint. This isn&#39;t a setting you toggle - it&#39;s what the architecture does by default.
</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\">
<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">
Every time you open ChatGPT and explain who you are again, that&#39;s computation that didn&#39;t need to happen. With Neuron, that context tax doesn&#39;t accumulate. Over months of use, the savings compound into a meaningful reduction in total compute - and a meaningful reduction in what you pay.
</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;margin-bottom:2.5rem\">
<p class="reveal" style="transition-delay:280ms;font-family:var(--body);font-weight:300;font-size:1rem;color:var(--t2);line-height:1.8;margin-bottom:2.5rem">
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 class=\"reveal\" style=\"transition-delay:340ms;background:var(--card);border:1px solid rgba(0,82,160,.18);padding:2rem\">
<p style=\"font-family:var(--body);font-size:0.7rem;font-weight:600;letter-spacing:0.18em;text-transform:uppercase;color:var(--navy);margin-bottom:1.25rem\">Savings calculator</p>
<p style=\"font-family:var(--body);font-size:0.875rem;color:var(--t2);margin-bottom:1rem\">If you spend <strong id=\"calc-spend\" style=\"color:var(--t1)\">$50</strong>/month on AI&hellip;</p>
<input type=\"range\" id=\"calc-slider\" min=\"10\" max=\"500\" step=\"10\" value=\"50\" style=\"width:100%;accent-color:var(--navy);margin-bottom:1.5rem\">
<div style=\"display:flex;align-items:baseline;gap:0.75rem;margin-bottom:0.375rem\">
<span id=\"calc-savings\" style=\"font-family:var(--head);font-size:2.5rem;font-weight:600;color:var(--navy)\">$240</span>
<span style=\"font-family:var(--body);font-size:0.7rem;font-weight:500;letter-spacing:0.15em;text-transform:uppercase;color:var(--t3)\">saved per year</span>
<div class="reveal" style="transition-delay:340ms;background:var(--card);border:1px solid rgba(0,82,160,.18);padding:2rem">
<p style="font-family:var(--body);font-size:0.7rem;font-weight:600;letter-spacing:0.18em;text-transform:uppercase;color:var(--navy);margin-bottom:1.25rem">Savings calculator</p>
<p style="font-family:var(--body);font-size:0.875rem;color:var(--t2);margin-bottom:1rem">If you spend <strong id="calc-spend" style="color:var(--t1)">$50</strong>/month on AI&hellip;</p>
<input type="range" id="calc-slider" min="10" max="500" step="10" value="50" style="width:100%;accent-color:var(--navy);margin-bottom:1.5rem">
<div style="display:flex;align-items:baseline;gap:0.75rem;margin-bottom:0.375rem">
<span id="calc-savings" style="font-family:var(--head);font-size:2.5rem;font-weight:600;color:var(--navy)">$240</span>
<span style="font-family:var(--body);font-size:0.7rem;font-weight:500;letter-spacing:0.15em;text-transform:uppercase;color:var(--t3)">saved per year</span>
</div>
<p style=\"font-family:var(--body);font-size:0.75rem;color:var(--t3)\">Based on estimated token reduction applied to your monthly spend.</p>
<p style="font-family:var(--body);font-size:0.75rem;color:var(--t3)">Based on estimated token reduction applied to your monthly spend.</p>
</div>
<script src=\"/js/environmental.js\" defer></script>
<script src="/js/environmental.js" defer></script>
</div>
<div style=\"display:flex;flex-direction:column;gap:1.5rem;padding-top:1rem\">
<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 - coming</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\">
<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 - coming</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">
The design: when you run inference locally via Ollama, your device&#39;s GPU handles it - 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. This is where we&#39;re headed.
</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\">On-device storage</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.875rem;color:var(--t2);line-height:1.7\">
<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">On-device storage</p>
<p style="font-family:var(--body);font-weight:300;font-size:0.875rem;color:var(--t2);line-height:1.7">
Your context lives on your device in a purpose-built local storage layer. No cloud database servers running 24&#x2F;7 to store and serve your conversations. No replication across availability zones. Just 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\">No re-explaining. No wasted tokens.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.875rem;color:var(--t2);line-height:1.7\">
<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">No re-explaining. No wasted tokens.</p>
<p style="font-family:var(--body);font-weight:300;font-size:0.875rem;color:var(--t2);line-height:1.7">
Neuron surfaces exactly what&#39;s relevant for each conversation - no re-deriving who you are from long histories. Shorter, more targeted prompts. More with less.
</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, Grok) or Neuron Inference, those queries travel to inference servers - 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.
<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, Grok) or Neuron Inference, those queries travel to inference servers - 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>
@@ -89,5 +88,4 @@ fn environmental() -> String {
.env-grid { grid-template-columns: 1fr !important; gap: 2rem !important; }
}
</style>
"
}
+17 -19
View File
@@ -1,36 +1,34 @@
// components/footer.el - Site footer.
fn footer() -> String {
return "
<footer id=\"footer\" aria-label=\"Footer\">
<div class=\"container\">
<div class=\"footer-inner\">
return <footer id="footer" aria-label="Footer">
<div class="container">
<div class="footer-inner">
<a href=\"/\" class=\"footer-brand\" aria-label=\"Neuron home\" style=\"display:flex;flex-direction:column;align-items:center;\">
<img src=\"/assets/brand/neuron-wordmark-on-light.png\" srcset=\"/assets/brand/neuron-wordmark-on-light@2x.png 2x\" alt=\"Neuron\" height=\"24\" style=\"display:block;margin-bottom:0.35rem;\">
<p class=\"footer-brand-tagline\">Built Different.</p>
<a href="/" class="footer-brand" aria-label="Neuron home" style="display:flex;flex-direction:column;align-items:center;">
<img src="/assets/brand/neuron-wordmark-on-light.png" srcset="/assets/brand/neuron-wordmark-on-light@2x.png 2x" alt="Neuron" height="24" style="display:block;margin-bottom:0.35rem;">
<p class="footer-brand-tagline">Built Different.</p>
</a>
<div class=\"footer-center\">
<div class=\"navy-line\"></div>
<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>
<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, LLC. All rights reserved.</p>
<p class=\"footer-tagline-bottom\">Your memory. Your AI.</p>
<div class="footer-bottom">
<p class="footer-copy">&copy; 2026 Neuron, LLC. All rights reserved.</p>
<p class="footer-tagline-bottom">Your memory. Your AI.</p>
</div>
</div>
</footer>
"
}
+12 -17
View File
@@ -7,26 +7,22 @@
fn founding_badge(member_number: Int) -> String {
let num_str: String = int_to_str(member_number)
let show_number: Bool = member_number > 0
let number_html: String = if show_number {
"<div class=\"founding-badge-num\">#" + num_str + "</div>
<div class=\"founding-badge-of\">of 1,000</div>"
} else {
"<div class=\"founding-badge-pending\">Your number awaits</div>"
}
return "
<div class=\"founding-badge\" aria-label=\"Founding Member badge\">
<img class=\"founding-badge-brain\" src=\"/assets/brand/neuron-brain.png\" alt=\"Neuron\" width=\"40\" height=\"40\">
<div class=\"founding-badge-eye\">Founding Member</div>
" + number_html + "
<div class=\"founding-badge-line\"></div>
<div class=\"founding-badge-name\">Neuron, LLC</div>
return <div class="founding-badge" aria-label="Founding Member badge">
<img class="founding-badge-brain" src="/assets/brand/neuron-brain.png" alt="Neuron" width="40" height="40">
<div class="founding-badge-eye">Founding Member</div>
{#if show_number}
<div class="founding-badge-num">#{num_str}</div>
<div class="founding-badge-of">of 1,000</div>
{#else}
<div class="founding-badge-pending">Your number awaits</div>
{/if}
<div class="founding-badge-line"></div>
<div class="founding-badge-name">Neuron, LLC</div>
</div>
"
}
fn founding_badge_css() -> String {
return "
<style>
return <style>
.founding-badge {
width: 200px;
background: #fff;
@@ -89,5 +85,4 @@ fn founding_badge_css() -> String {
color: #6B6B7E;
}
</style>
"
}
+70 -70
View File
@@ -65,17 +65,17 @@ fn gallery_page(cards_json: String, supabase_url: String, supabase_anon_key: Str
"<div style=\"grid-column:1/-1;padding:4rem 0;text-align:center\"><p class=\"label\" style=\"margin-bottom:1rem\">Nothing yet</p><p style=\"font-family:var(--body);font-weight:300;color:var(--t2);line-height:1.7\">Nothing shared yet.</p></div>"
} else { "" }
return "<!DOCTYPE html>
<html lang=\"en\">
return <!DOCTYPE html>
<html lang="en">
<head>
<meta charset=\"UTF-8\">
<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Things Neuron Said</title>
<meta name=\"description\" content=\"Real conversations with Neuron, voted up by users.\">
<link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/assets/favicon-32.png\">
<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">
<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>
<link href=\"https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,600;1,400&family=IBM+Plex+Sans:wght@300;400;500;600&display=swap\" rel=\"stylesheet\">
<meta name="description" content="Real conversations with Neuron, voted up by users.">
<link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32.png">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,600;1,400&family=IBM+Plex+Sans:wght@300;400;500;600&display=swap" rel="stylesheet">
<style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
:root {
@@ -120,9 +120,9 @@ body::before {
.nav-cta:hover { background: #0078D4; }
.nav-hamburger { display: none; flex-direction: column; justify-content: center; gap: 5px; background: none; border: none; cursor: pointer; padding: 6px 4px; z-index: 101; -webkit-tap-highlight-color: transparent; }
.nav-hamburger span { display: block; width: 22px; height: 2px; background: var(--t1); border-radius: 1px; transition: transform 280ms ease, opacity 200ms ease; transform-origin: center; }
.nav-hamburger[aria-expanded=\"true\"] span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.nav-hamburger[aria-expanded=\"true\"] span:nth-child(2) { opacity: 0; transform: scaleX(0); }
.nav-hamburger[aria-expanded=\"true\"] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
.nav-hamburger[aria-expanded="true"] span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.nav-hamburger[aria-expanded="true"] span:nth-child(2) { opacity: 0; transform: scaleX(0); }
.nav-hamburger[aria-expanded="true"] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
.nav-mobile { display: none; position: absolute; top: 4rem; left: 0; right: 0; background: rgba(250,250,248,.98); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); border-bottom: 1px solid var(--border); padding: .5rem 0 1.5rem; flex-direction: column; box-shadow: 0 8px 32px rgba(0,0,0,.08); }
.nav-mobile.open { display: flex; }
.nav-mobile-link { display: block; padding: .875rem 2rem; font-family: var(--body); font-size: .75rem; font-weight: 400; letter-spacing: .16em; text-transform: uppercase; color: var(--t2); text-decoration: none; border-bottom: 1px solid rgba(0,0,0,.05); transition: color 150ms, background 150ms; }
@@ -192,90 +192,90 @@ body::before {
</head>
<body>
<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>
<div class=\"nav-dropdown\">
<button class=\"nav-link nav-dropdown-btn\" aria-haspopup=\"true\" aria-expanded=\"false\">Mission &#9662;</button>
<div class=\"nav-dropdown-menu\">
<a href=\"/#mission\" class=\"nav-dropdown-item\">Our mission</a>
<a href=\"/#safety\" class=\"nav-dropdown-item\">Safety</a>
<a href=\"/#environmental\" class=\"nav-dropdown-item\">Environment</a>
<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>
<div class="nav-dropdown">
<button class="nav-link nav-dropdown-btn" aria-haspopup="true" aria-expanded="false">Mission &#9662;</button>
<div class="nav-dropdown-menu">
<a href="/#mission" class="nav-dropdown-item">Our mission</a>
<a href="/#safety" class="nav-dropdown-item">Safety</a>
<a href="/#environmental" class="nav-dropdown-item">Environment</a>
</div>
</div>
<a href=\"/#pricing\" class=\"nav-link\">Pricing</a>
<a href=\"/#marketplace\" class=\"nav-link\">Marketplace</a>
<a href=\"/#enterprise\" class=\"nav-link\">Enterprise</a>
<a href=\"/about\" class=\"nav-link\">About</a>
<a href=\"/said\" class=\"nav-link\">Gallery</a>
<a href=\"/account\" class=\"nav-link\">Account</a>
<a href=\"/#pricing\" class=\"nav-cta\">Get Access</a>
<a href="/#pricing" class="nav-link">Pricing</a>
<a href="/#marketplace" class="nav-link">Marketplace</a>
<a href="/#enterprise" class="nav-link">Enterprise</a>
<a href="/about" class="nav-link">About</a>
<a href="/said" class="nav-link">Gallery</a>
<a href="/account" class="nav-link">Account</a>
<a href="/#pricing" class="nav-cta">Get Access</a>
</div>
<button class=\"nav-hamburger\" id=\"nav-hamburger\" aria-label=\"Open navigation\" aria-expanded=\"false\" aria-controls=\"nav-mobile\">
<button class="nav-hamburger" id="nav-hamburger" aria-label="Open navigation" aria-expanded="false" aria-controls="nav-mobile">
<span></span><span></span><span></span>
</button>
<div class=\"nav-mobile\" id=\"nav-mobile\" role=\"navigation\" aria-label=\"Mobile navigation\">
<a href=\"/#how-it-works\" class=\"nav-mobile-link\">How it works</a>
<a href=\"/#mission\" class=\"nav-mobile-link\">Mission</a>
<a href=\"/#safety\" class=\"nav-mobile-link\" style=\"padding-left:1.75rem;font-size:.8rem;color:var(--t3)\">- Safety</a>
<a href=\"/#environmental\" class=\"nav-mobile-link\" style=\"padding-left:1.75rem;font-size:.8rem;color:var(--t3)\">- Environment</a>
<a href=\"/#pricing\" class=\"nav-mobile-link\">Pricing</a>
<a href=\"/#enterprise\" class=\"nav-mobile-link\">Enterprise</a>
<a href=\"/about\" class=\"nav-mobile-link\">About</a>
<a href=\"/said\" class=\"nav-mobile-link\">Gallery</a>
<a href=\"/account\" class=\"nav-mobile-link\">Account</a>
<a href=\"/#pricing\" class=\"nav-mobile-cta\">Get Access</a>
<div class="nav-mobile" id="nav-mobile" role="navigation" aria-label="Mobile navigation">
<a href="/#how-it-works" class="nav-mobile-link">How it works</a>
<a href="/#mission" class="nav-mobile-link">Mission</a>
<a href="/#safety" class="nav-mobile-link" style="padding-left:1.75rem;font-size:.8rem;color:var(--t3)">- Safety</a>
<a href="/#environmental" class="nav-mobile-link" style="padding-left:1.75rem;font-size:.8rem;color:var(--t3)">- Environment</a>
<a href="/#pricing" class="nav-mobile-link">Pricing</a>
<a href="/#enterprise" class="nav-mobile-link">Enterprise</a>
<a href="/about" class="nav-mobile-link">About</a>
<a href="/said" class="nav-mobile-link">Gallery</a>
<a href="/account" class="nav-mobile-link">Account</a>
<a href="/#pricing" class="nav-mobile-cta">Get Access</a>
</div>
</div>
</nav>
<div class=\"gallery-wrap\">
<div class=\"gallery-header\">
<p class=\"label\" style=\"margin-bottom:1rem\">Things Neuron Said</p>
<h1 class=\"display-lg\" style=\"margin-bottom:1rem\">Real conversations.<br>No curation.</h1>
<p style=\"font-family:var(--body);font-weight:300;font-size:.9375rem;color:var(--t2);line-height:1.75;max-width:36rem\">
<div class="gallery-wrap">
<div class="gallery-header">
<p class="label" style="margin-bottom:1rem">Things Neuron Said</p>
<h1 class="display-lg" style="margin-bottom:1rem">Real conversations.<br>No curation.</h1>
<p style="font-family:var(--body);font-weight:300;font-size:.9375rem;color:var(--t2);line-height:1.75;max-width:36rem">
People chatted with Neuron and shared the exchanges that mattered. Voted up by readers. The best ones rise.
</p>
</div>
<div class=\"gallery-controls\">
<input type=\"search\" id=\"gal-search\" class=\"gallery-search\" placeholder=\"Search conversations...\" autocomplete=\"off\">
<div style=\"display:flex;gap:.5rem;flex-shrink:0\">
<button class=\"sort-btn active\" id=\"sort-top\" onclick=\"setSort('top',this)\">Top</button>
<button class=\"sort-btn\" id=\"sort-new\" onclick=\"setSort('new',this)\">Newest</button>
<div class="gallery-controls">
<input type="search" id="gal-search" class="gallery-search" placeholder="Search conversations..." autocomplete="off">
<div style="display:flex;gap:.5rem;flex-shrink:0">
<button class="sort-btn active" id="sort-top" onclick="setSort('top',this)">Top</button>
<button class="sort-btn" id="sort-new" onclick="setSort('new',this)">Newest</button>
</div>
</div>
<div class=\"gallery-grid\" id=\"gallery-grid\">" + cards_html + empty_html + "</div>
<div id=\"no-results\" style=\"display:none;padding:3rem 0;text-align:center\">
<p style=\"font-family:var(--body);font-weight:300;color:var(--t3)\">No conversations match that search.</p>
<div class="gallery-grid" id="gallery-grid">{raw(cards_html)}{raw(empty_html)}</div>
<div id="no-results" style="display:none;padding:3rem 0;text-align:center">
<p style="font-family:var(--body);font-weight:300;color:var(--t3)">No conversations match that search.</p>
</div>
<div style=\"margin-top:3rem\">
<a href=\"/\" class=\"btn-ghost\">&#8592; Back to site</a>
<div style="margin-top:3rem">
<a href="/" class="btn-ghost">&#8592; Back to site</a>
</div>
</div>
<!-- Magic-link sign-in modal -->
<div class=\"signin-modal\" id=\"signin-modal\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"signin-title\">
<div class=\"signin-modal-card\">
<h2 id=\"signin-title\">Sign in to vote</h2>
<div class="signin-modal" id="signin-modal" role="dialog" aria-modal="true" aria-labelledby="signin-title">
<div class="signin-modal-card">
<h2 id="signin-title">Sign in to vote</h2>
<p>We will email you a sign-in link. No password needed.</p>
<input type=\"email\" id=\"signin-email\" placeholder=\"your@email.com\" autocomplete=\"email\">
<div class=\"signin-modal-actions\">
<button type=\"button\" class=\"signin-modal-cancel\" id=\"signin-cancel\">Cancel</button>
<button type=\"button\" class=\"btn-primary\" id=\"signin-send\">Send link</button>
<input type="email" id="signin-email" placeholder="your@email.com" autocomplete="email">
<div class="signin-modal-actions">
<button type="button" class="signin-modal-cancel" id="signin-cancel">Cancel</button>
<button type="button" class="btn-primary" id="signin-send">Send link</button>
</div>
<p class=\"signin-modal-msg\" id=\"signin-msg\"></p>
<p class="signin-modal-msg" id="signin-msg"></p>
</div>
</div>
<script src=\"https://cdn.jsdelivr.net/npm/@supabase/supabase-js@2/dist/umd/supabase.min.js\"></script>
<script src="https://cdn.jsdelivr.net/npm/@supabase/supabase-js@2/dist/umd/supabase.min.js"></script>
<script>
window.NEURON_CFG=window.NEURON_CFG||{};
window.NEURON_CFG.supabase_url=\"" + supabase_url + "\";
window.NEURON_CFG.supabase_anon_key=\"" + supabase_anon_key + "\";
window.NEURON_CFG.supabase_url="{supabase_url}";
window.NEURON_CFG.supabase_anon_key="{supabase_anon_key}";
</script>
<script src=\"/js/gallery.js\" defer></script>
<script src="/js/gallery.js" defer></script>
</body>
</html>"
</html>
}
+12 -14
View File
@@ -5,35 +5,33 @@
// 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>
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. Patented. No permission.</p>
<p class="label hero-label animate-up-1">One builder. Patented. No permission.</p>
<h1 class=\"display-xl hero-headline animate-up-2\">
<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.</em>
<em class="gold" style="font-style:normal">I built the one that doesn&#39;t.</em>
</h1>
<p class=\"hero-sub animate-up-3\">
<p class="hero-sub animate-up-3">
Runs on your machine. Remembers everything. Priced below ChatGPT on day one.
</p>
<div class=\"hero-ctas animate-up-5\">
<a href=\"#pricing\" class=\"btn-primary\">
<div class="hero-ctas animate-up-5">
<a href="#pricing" class="btn-primary">
Preorder <span>&#8594;</span>
</a>
<a href=\"#how-it-works\" class=\"btn-ghost\">
<a href="#how-it-works" class="btn-ghost">
See how it works
</a>
</div>
<div class=\"hero-scroll\" aria-hidden=\"true\">
<div class="hero-scroll" aria-hidden="true">
<span>Scroll</span>
<div class=\"hero-scroll-line\"></div>
<div class="hero-scroll-line"></div>
</div>
</section>
"
}
+28 -30
View File
@@ -1,54 +1,52 @@
// 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\">
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 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\">
<h2 class="display-lg hiw-headline reveal" style="transition-delay:80ms">
Three moments.<br>
<span class=\"gold\">Permanent context.</span>
<span class="gold">Permanent context.</span>
</h2>
</div>
<div class=\"steps-grid\">
<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 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\">Create your account</h3>
<p class=\"step-body\">Sign up once. Your account links your license key to your identity - that&#39;s what keeps your memory yours and nobody else&#39;s. Then install with a single command. Runs locally. No cloud sync, no permissions you didn&#39;t grant.</p>
<h3 class="display-md step-title">Create your account</h3>
<p class="step-body">Sign up once. Your account links your license key to your identity - that&#39;s what keeps your memory yours and nobody else&#39;s. Then install with a single command. Runs locally. 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 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>
<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 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 - exactly where you left it.</p>
<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 - exactly where you left it.</p>
</div>
</div>
</div>
</section>
"
}
+28 -30
View File
@@ -2,60 +2,58 @@
// "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\">
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 - Q3 2026</span>
<div class="inference-label-row reveal">
<div class="navy-line-left" style="width:3rem;flex-shrink:0"></div>
<span class="label">Neuron inference - Q3 2026</span>
</div>
<h2 class=\"display-lg inference-headline reveal\" style=\"transition-delay:80ms\">
<h2 class="display-lg inference-headline reveal" style="transition-delay:80ms">
My model. My infrastructure.
<span class=\"gold\"> Targeting Q3 2026.</span>
<span class="gold"> Targeting Q3 2026.</span>
</h2>
<p class=\"inference-body reveal\" style=\"transition-delay:160ms\">
<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 - and their pricing power over you. That changes in Q3 2026 - sooner if we can.
</p>
<p class=\"inference-body reveal\" style=\"transition-delay:240ms\">
<p class="inference-body reveal" style="transition-delay:240ms">
Neuron will be 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 will run on Soma, our own inference infrastructure. Priced below OpenAI, Anthropic, and Google. Not as a loss leader. As a permanent competitive position.
</p>
<p class=\"inference-body reveal\" style=\"transition-delay:320ms\">
<p class="inference-body reveal" style="transition-delay:320ms">
Until then: bring your own API keys - Anthropic, OpenAI, whoever. When Neuron Inference launches, it will be cheaper, faster, and purpose-built for Neuron. You can switch whenever you want.
</p>
<p class=\"inference-body reveal\" style=\"transition-delay:400ms\">
<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 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>
<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 - Q3 2026</span>
<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 - Q3 2026</span>
</div>
<p class=\"stat-body\">A model built for Neuron specifically - not a generic wrapper. Your full context, years of accumulated intelligence, purpose-built inference. The model is the floor. Neuron is the ceiling.</p>
<p class="stat-body">A model built for Neuron specifically - not a generic wrapper. Your full context, years of accumulated intelligence, purpose-built inference. 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 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 pricing at launch. Below Anthropic. Below Google. Metered - you pay for what you use. And cheaper than any of them on every tier.</p>
<p class="stat-body">Below OpenAI pricing at launch. Below Anthropic. Below Google. Metered - you pay for what you use. And cheaper than any of them on every tier.</p>
</div>
</div>
</div>
</div>
</section>
"
}
+35 -37
View File
@@ -2,82 +2,80 @@
// Left: manifesto text. Right: six sticky principles.
fn local_first() -> String {
return "
<section id=\"local-first\" aria-label=\"Local-first\">
<div class=\"container-lg\">
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 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 class="lf-grid">
<div>
<h2 class=\"display-lg lf-headline reveal\">You are not the product.</h2>
<h2 class="display-lg lf-headline reveal">You are not the product.</h2>
<p class=\"lf-manifesto-para reveal\" style=\"transition-delay:100ms\">
<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 - 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\">
<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 - 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\">
<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 - 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\">
<p class="lf-manifesto-para reveal" style="transition-delay:400ms">
Now AI is doing the same thing - 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 - 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\">
<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 - and once you have it, it&#39;s yours.
</p>
</div>
</div>
<div class=\"lf-principles\">
<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, the agent loop, every conversation - none of it leaves your machine. Not to my servers. Not to anyone&#39;s.</p>
<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, the agent loop, every conversation - 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 - not a training pipeline.</p>
<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 - 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 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 - sync, backup, inbox - those services use the data they need to function. Nothing more.</p>
<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 - sync, backup, inbox - 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 - it&#39;s a security one.</p>
<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 - 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 - 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 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 - 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 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>
"
}
+57 -74
View File
@@ -165,24 +165,7 @@ fn page(sold: Int, total: Int) -> String {
// Pricing is intentionally last so a visitor can scroll the whole story
// (what / how / why / who-it's-for / safety / planet) before being asked
// to commit to a plan.
return page_open()
+ nav()
+ hero()
+ pillars()
+ how_it_works()
+ inference()
+ efficiency()
+ comparison()
+ enterprise()
+ mission()
+ local_first()
+ safety()
+ environmental()
+ marketplace()
+ viral()
+ pricing(sold, total)
+ footer()
+ page_close()
return {page_open()}{nav()}{hero()}{pillars()}{how_it_works()}{inference()}{efficiency()}{comparison()}{enterprise()}{mission()}{local_first()}{safety()}{environmental()}{marketplace()}{viral()}{pricing(sold, total)}{footer()}{page_close()}
}
// Share card page
@@ -210,23 +193,23 @@ fn share_card_page(question: String, answer_plain: String, answer_html_in: Strin
// TikTok and Snapchat have no web URL share scheme use clipboard copy
let tiktok_copy_text: String = "Copied+%E2%80%94+paste+into+TikTok"
let snap_copy_text: String = "Copied+%E2%80%94+paste+into+Snapchat"
return "<!DOCTYPE html>
<html lang=\"en\">
return <!DOCTYPE html>
<html lang="en">
<head>
<meta charset=\"UTF-8\">
<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Things Neuron Said</title>
<meta property=\"og:title\" content=\"Things Neuron Said\">
<meta property=\"og:description\" content=\"" + og_desc + "\">
<meta property=\"og:image\" content=\"https://neurontechnologies.ai/assets/brand/neuron-wordmark-on-light@2x.png\">
<meta property=\"og:type\" content=\"website\">
<meta property=\"og:url\" content=\"" + card_url + "\">
<meta name=\"twitter:card\" content=\"summary_large_image\">
<meta name=\"twitter:title\" content=\"Things Neuron Said\">
<meta name=\"twitter:description\" content=\"" + og_desc + "\">
<meta name=\"twitter:image\" content=\"https://neurontechnologies.ai/assets/brand/neuron-wordmark-on-light@2x.png\">
<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">
<link href=\"https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@300;400;500;600&display=swap\" rel=\"stylesheet\">
<meta property="og:title" content="Things Neuron Said">
<meta property="og:description" content="{og_desc}">
<meta property="og:image" content="https://neurontechnologies.ai/assets/brand/neuron-wordmark-on-light@2x.png">
<meta property="og:type" content="website">
<meta property="og:url" content="{card_url}">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Things Neuron Said">
<meta name="twitter:description" content="{og_desc}">
<meta name="twitter:image" content="https://neurontechnologies.ai/assets/brand/neuron-wordmark-on-light@2x.png">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@300;400;500;600&display=swap" rel="stylesheet">
<style>
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{--navy:#0052A0;--navy-dark:#003d7a;--t1:#0D0D14;--t2:#3A3A4A;--t3:#6B6B7E;--bg:#FAFAF8}
@@ -280,70 +263,70 @@ body::before{content:'';position:fixed;inset:0;pointer-events:none;z-index:0;bac
</style>
</head>
<body>
<div class=\"page\">
<div class=\"page-header\">
<a href=\"https://neurontechnologies.ai\" class=\"wordmark\">
<img src=\"/assets/brand/neuron-wordmark-on-light.png\"
srcset=\"/assets/brand/neuron-wordmark-on-light@2x.png 2x\"
alt=\"Neuron\" height=\"22\">
<div class="page">
<div class="page-header">
<a href="https://neurontechnologies.ai" class="wordmark">
<img src="/assets/brand/neuron-wordmark-on-light.png"
srcset="/assets/brand/neuron-wordmark-on-light@2x.png 2x"
alt="Neuron" height="22">
</a>
<span class=\"eyebrow\">Things Neuron Said</span>
<span class="eyebrow">Things Neuron Said</span>
</div>
<div class=\"chat-frame\">
<div class=\"chat-row-user\">
<div class=\"bubble-user\">" + q_html + "</div>
<div class="chat-frame">
<div class="chat-row-user">
<div class="bubble-user">{raw(q_html)}</div>
</div>
<div class=\"chat-row-ai\">
<div class=\"avatar\"><img src=\"/assets/neuron-icon.png\" alt=\"\"></div>
<div class=\"ai-col\">
<span class=\"ai-label\">Neuron</span>
<div class=\"bubble-ai\">" + a_html + "</div>
<div class="chat-row-ai">
<div class="avatar"><img src="/assets/neuron-icon.png" alt=""></div>
<div class="ai-col">
<span class="ai-label">Neuron</span>
<div class="bubble-ai">{raw(a_html)}</div>
</div>
</div>
</div>
<div class=\"vote-row\">
<span class=\"vote-label\">Helpful?</span>
<button class=\"vote-btn\" id=\"vote-up\">&#9650;</button>
<span class=\"vote-count\" id=\"vote-score\">0</span>
<button class=\"vote-btn\" id=\"vote-down\">&#9660;</button>
<div class="vote-row">
<span class="vote-label">Helpful?</span>
<button class="vote-btn" id="vote-up">&#9650;</button>
<span class="vote-count" id="vote-score">0</span>
<button class="vote-btn" id="vote-down">&#9660;</button>
</div>
<div class=\"share-section\">
<span class=\"share-label\">Share</span>
<div class=\"share-row\">
<a href=\"" + x_href + "\" target=\"_blank\" rel=\"noopener\" class=\"share-btn\" title=\"Post on X\" style=\"background:#000\">
<img src=\"/assets/social/x.svg\" width=\"18\" height=\"18\" alt=\"X\">
<div class="share-section">
<span class="share-label">Share</span>
<div class="share-row">
<a href="{x_href}" target="_blank" rel="noopener" class="share-btn" title="Post on X" style="background:#000">
<img src="/assets/social/x.svg" width="18" height="18" alt="X">
</a>
<a href=\"" + li_href + "\" target=\"_blank\" rel=\"noopener\" class=\"share-btn\" title=\"Share on LinkedIn\" style=\"background:transparent\">
<img src=\"/assets/social/linkedin.png\" width=\"18\" height=\"18\" alt=\"LinkedIn\">
<a href="{li_href}" target="_blank" rel="noopener" class="share-btn" title="Share on LinkedIn" style="background:transparent">
<img src="/assets/social/linkedin.png" width="18" height="18" alt="LinkedIn">
</a>
<a href=\"" + fb_href + "\" target=\"_blank\" rel=\"noopener\" class=\"share-btn\" title=\"Share on Facebook\" style=\"background:#1877F2\">
<img src=\"/assets/social/facebook.svg\" width=\"18\" height=\"18\" alt=\"Facebook\">
<a href="{fb_href}" target="_blank" rel="noopener" class="share-btn" title="Share on Facebook" style="background:#1877F2">
<img src="/assets/social/facebook.svg" width="18" height="18" alt="Facebook">
</a>
<a href=\"" + wa_href + "\" target=\"_blank\" rel=\"noopener\" class=\"share-btn\" title=\"Send via WhatsApp\" style=\"background:#25D366\">
<img src=\"/assets/social/whatsapp.svg\" width=\"18\" height=\"18\" alt=\"WhatsApp\">
<a href="{wa_href}" target="_blank" rel="noopener" class="share-btn" title="Send via WhatsApp" style="background:#25D366">
<img src="/assets/social/whatsapp.svg" width="18" height="18" alt="WhatsApp">
</a>
<button class=\"share-btn\" id=\"copy-tiktok\" onclick=\"copyForPlatform('tiktok', this)\" title=\"Copy for TikTok\" style=\"background:#010101;border:none\">
<img src=\"/assets/social/tiktok.svg\" width=\"18\" height=\"18\" alt=\"TikTok\">
<button class="share-btn" id="copy-tiktok" onclick="copyForPlatform('tiktok', this)" title="Copy for TikTok" style="background:#010101;border:none">
<img src="/assets/social/tiktok.svg" width="18" height="18" alt="TikTok">
</button>
<button class=\"share-btn\" id=\"copy-snapchat\" onclick=\"copyForPlatform('snapchat', this)\" title=\"Copy for Snapchat\" style=\"background:#FFFC00;border:none\">
<img src=\"/assets/social/snapchat.svg\" width=\"18\" height=\"18\" alt=\"Snapchat\">
<button class="share-btn" id="copy-snapchat" onclick="copyForPlatform('snapchat', this)" title="Copy for Snapchat" style="background:#FFFC00;border:none">
<img src="/assets/social/snapchat.svg" width="18" height="18" alt="Snapchat">
</button>
</div>
</div>
<div class=\"divider\"></div>
<div class="divider"></div>
<div class=\"footer-row\">
<span class=\"footer-note\">From a live conversation with Neuron.</span>
<a href=\"https://neurontechnologies.ai\" class=\"cta-btn\">Try Neuron &#8599;</a>
<div class="footer-row">
<span class="footer-note">From a live conversation with Neuron.</span>
<a href="https://neurontechnologies.ai" class="cta-btn">Try Neuron &#8599;</a>
</div>
</div>
<script>window.NEURON_CFG=window.NEURON_CFG||{};window.NEURON_CFG.id=\"" + id + "\";window.NEURON_CFG.card_url=\"" + card_url + "\";</script><script src=\"/js/main.js\" defer></script>
<script>window.NEURON_CFG=window.NEURON_CFG||{};window.NEURON_CFG.id="{id}";window.NEURON_CFG.card_url="{card_url}";</script><script src="/js/main.js" defer></script>
</body>
</html>"
</html>
}
// Static asset serving
+78 -80
View File
@@ -2,137 +2,136 @@
// Explains the plugin marketplace - what it is, how it works, coming soon.
fn marketplace() -> String {
return "
<section id=\"marketplace\" aria-label=\"Neuron Marketplace\">
<div class=\"container\">
return <section id="marketplace" aria-label="Neuron Marketplace">
<div class="container">
<div class=\"marketplace-header\">
<div class=\"marketplace-label-row reveal\">
<div class=\"navy-line-left\" style=\"width:4rem;flex-shrink:0\"></div>
<span class=\"label\" style=\"color:var(--navy-85)\">Marketplace</span>
<div style=\"margin-left:1rem;background:rgba(0,82,160,.1);color:var(--navy);font-family:var(--body);font-size:0.65rem;font-weight:500;letter-spacing:0.12em;text-transform:uppercase;padding:0.25rem 0.75rem;border-radius:2px\">Coming soon</div>
<div class="marketplace-header">
<div class="marketplace-label-row reveal">
<div class="navy-line-left" style="width:4rem;flex-shrink:0"></div>
<span class="label" style="color:var(--navy-85)">Marketplace</span>
<div style="margin-left:1rem;background:rgba(0,82,160,.1);color:var(--navy);font-family:var(--body);font-size:0.65rem;font-weight:500;letter-spacing:0.12em;text-transform:uppercase;padding:0.25rem 0.75rem;border-radius:2px">Coming soon</div>
</div>
<h2 class=\"display-lg reveal\" style=\"transition-delay:80ms;max-width:38rem\">
Extend Neuron.<span class=\"gold\" style=\"display:block\">Build for it.</span>
<h2 class="display-lg reveal" style="transition-delay:80ms;max-width:38rem">
Extend Neuron.<span class="gold" style="display:block">Build for it.</span>
</h2>
<p class=\"reveal\" style=\"transition-delay:160ms;font-weight:300;font-size:.9375rem;color:var(--t2);line-height:1.75;max-width:36rem;margin-top:1.25rem\">
<p class="reveal" style="transition-delay:160ms;font-weight:300;font-size:.9375rem;color:var(--t2);line-height:1.75;max-width:36rem;margin-top:1.25rem">
Neuron does one thing exceptionally well: it knows you. The Marketplace extends what it can do with that knowledge - connecting it to your tools, your workflows, and capabilities built by people who understand your domain better than any general-purpose AI ever will.
</p>
</div>
<div class=\"marketplace-grid reveal\" style=\"transition-delay:200ms\">
<div class="marketplace-grid reveal" style="transition-delay:200ms">
<div class=\"marketplace-card card-dark\">
<div class=\"marketplace-card-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 2L2 7l10 5 10-5-10-5z\"/><path d=\"M2 17l10 5 10-5\"/><path d=\"M2 12l10 5 10-5\"/>
<div class="marketplace-card card-dark">
<div class="marketplace-card-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 2L2 7l10 5 10-5-10-5z"/><path d="M2 17l10 5 10-5"/><path d="M2 12l10 5 10-5"/>
</svg>
</div>
<h3 class=\"display-md marketplace-card-title\">Plugins that know you</h3>
<p class=\"marketplace-card-body\">Every plugin in the Marketplace has access to your memory - with your permission. A legal plugin knows your deal history. A coding plugin knows your architecture decisions. An email plugin knows your relationships and communication style. The context travels with you.</p>
<h3 class="display-md marketplace-card-title">Plugins that know you</h3>
<p class="marketplace-card-body">Every plugin in the Marketplace has access to your memory - with your permission. A legal plugin knows your deal history. A coding plugin knows your architecture decisions. An email plugin knows your relationships and communication style. The context travels with you.</p>
</div>
<div class=\"marketplace-card card-dark\" style=\"transition-delay:120ms\">
<div class=\"marketplace-card-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=\"12\" cy=\"12\" r=\"10\"/><path d=\"M12 8v4l3 3\"/>
<div class="marketplace-card card-dark" style="transition-delay:120ms">
<div class="marketplace-card-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="12" cy="12" r="10"/><path d="M12 8v4l3 3"/>
</svg>
</div>
<h3 class=\"display-md marketplace-card-title\">Built by domain experts</h3>
<p class=\"marketplace-card-body\">General AI is good at general things. The Marketplace is for specialists. The person building a plugin for contract attorneys or orthopedic surgeons or professional traders isn&#39;t us. It&#39;s someone who has spent years in that world. We give them the platform. They bring the depth.</p>
<h3 class="display-md marketplace-card-title">Built by domain experts</h3>
<p class="marketplace-card-body">General AI is good at general things. The Marketplace is for specialists. The person building a plugin for contract attorneys or orthopedic surgeons or professional traders isn&#39;t us. It&#39;s someone who has spent years in that world. We give them the platform. They bring the depth.</p>
</div>
<div class=\"marketplace-card card-dark\" style=\"transition-delay:240ms\">
<div class=\"marketplace-card-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 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6\"/>
<div class="marketplace-card card-dark" style="transition-delay:240ms">
<div class="marketplace-card-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 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"/>
</svg>
</div>
<h3 class=\"display-md marketplace-card-title\">Revenue for builders</h3>
<p class=\"marketplace-card-body\">Developers earn recurring revenue when users install their plugins. We handle billing, distribution, and the infrastructure. You handle the product. Every plugin that ships earns you a share of every subscription for as long as that user stays. Build once, earn indefinitely.</p>
<h3 class="display-md marketplace-card-title">Revenue for builders</h3>
<p class="marketplace-card-body">Developers earn recurring revenue when users install their plugins. We handle billing, distribution, and the infrastructure. You handle the product. Every plugin that ships earns you a share of every subscription for as long as that user stays. Build once, earn indefinitely.</p>
</div>
</div>
<div class=\"marketplace-categories reveal\" style=\"transition-delay:320ms\">
<div class="marketplace-categories reveal" style="transition-delay:320ms">
<div style=\"margin-bottom:2rem\">
<p class=\"label\" style=\"margin-bottom:1rem;color:var(--navy-65)\">Connectors - day one</p>
<div class=\"marketplace-tags\">
<span class=\"marketplace-tag\">Gmail</span>
<span class=\"marketplace-tag\">Slack</span>
<span class=\"marketplace-tag\">Google Calendar</span>
<span class=\"marketplace-tag\">Google Drive</span>
<span class=\"marketplace-tag\">Notion</span>
<span class=\"marketplace-tag\">GitHub</span>
<span class=\"marketplace-tag\">Linear</span>
<span class=\"marketplace-tag\">More connectors at launch</span>
<div style="margin-bottom:2rem">
<p class="label" style="margin-bottom:1rem;color:var(--navy-65)">Connectors - day one</p>
<div class="marketplace-tags">
<span class="marketplace-tag">Gmail</span>
<span class="marketplace-tag">Slack</span>
<span class="marketplace-tag">Google Calendar</span>
<span class="marketplace-tag">Google Drive</span>
<span class="marketplace-tag">Notion</span>
<span class="marketplace-tag">GitHub</span>
<span class="marketplace-tag">Linear</span>
<span class="marketplace-tag">More connectors at launch</span>
</div>
</div>
<div style=\"margin-bottom:2rem\">
<p class=\"label\" style=\"margin-bottom:1rem;color:var(--navy-65)\">Following launch</p>
<div class=\"marketplace-tags\">
<span class=\"marketplace-tag\">Process packets</span>
<span class=\"marketplace-tag\">Knowledge packets</span>
<div style="margin-bottom:2rem">
<p class="label" style="margin-bottom:1rem;color:var(--navy-65)">Following launch</p>
<div class="marketplace-tags">
<span class="marketplace-tag">Process packets</span>
<span class="marketplace-tag">Knowledge packets</span>
</div>
</div>
<div>
<p class=\"label\" style=\"margin-bottom:1rem;color:var(--navy-65)\">Imprints - starting with</p>
<div class=\"marketplace-tags\">
<span class=\"marketplace-tag\">CEO</span>
<span class=\"marketplace-tag\">CTO</span>
<span class=\"marketplace-tag\">CFO</span>
<span class=\"marketplace-tag\">CMO</span>
<span class=\"marketplace-tag\">COO</span>
<span class=\"marketplace-tag\">More C-suite</span>
<p class="label" style="margin-bottom:1rem;color:var(--navy-65)">Imprints - starting with</p>
<div class="marketplace-tags">
<span class="marketplace-tag">CEO</span>
<span class="marketplace-tag">CTO</span>
<span class="marketplace-tag">CFO</span>
<span class="marketplace-tag">CMO</span>
<span class="marketplace-tag">COO</span>
<span class="marketplace-tag">More C-suite</span>
</div>
</div>
</div>
<div class=\"marketplace-cta reveal\" style=\"transition-delay:400ms\">
<div class=\"marketplace-cta-inner\">
<div class="marketplace-cta reveal" style="transition-delay:400ms">
<div class="marketplace-cta-inner">
<div>
<p style=\"font-family:var(--body);font-weight:500;font-size:1rem;color:var(--t1);margin-bottom:0.5rem\">Building something?</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.875rem;color:var(--t2);line-height:1.6\">The developer program opens before the Marketplace does. If you&#39;re interested in building a plugin, get in touch early - early developers shape the API.</p>
<p style="font-family:var(--body);font-weight:500;font-size:1rem;color:var(--t1);margin-bottom:0.5rem">Building something?</p>
<p style="font-family:var(--body);font-weight:300;font-size:0.875rem;color:var(--t2);line-height:1.6">The developer program opens before the Marketplace does. If you&#39;re interested in building a plugin, get in touch early - early developers shape the API.</p>
</div>
<button onclick=\"document.getElementById('developer-interest').style.display='block';document.getElementById('developer-interest').scrollIntoView({behavior:'smooth',block:'start'});this.style.display='none';\" class=\"btn-ghost\" style=\"white-space:nowrap;flex-shrink:0\">Developer interest &rarr;</button>
<button onclick="document.getElementById('developer-interest').style.display='block';document.getElementById('developer-interest').scrollIntoView({behavior:'smooth',block:'start'});this.style.display='none';" class="btn-ghost" style="white-space:nowrap;flex-shrink:0">Developer interest &rarr;</button>
</div>
</div>
</div>
<!-- Developer interest form hidden until button click -->
<div id=\"developer-interest\" class=\"container\" style=\"display:none;margin-top:4rem;padding-top:4rem;border-top:1px solid rgba(0,82,160,.10)\">
<div style=\"max-width:42rem\">
<p class=\"label\" style=\"margin-bottom:0.75rem;color:var(--navy-85)\">Developer Program</p>
<h3 style=\"font-family:var(--display);font-size:1.75rem;font-weight:400;color:var(--t1);letter-spacing:-0.01em;margin-bottom:1rem;line-height:1.2\">Get early access</h3>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9rem;color:var(--t2);line-height:1.75;margin-bottom:2.5rem\">The developer program opens before the Marketplace does. Early developers shape the plugin API. Tell me what you want to build.</p>
<form id=\"dev-form\" class=\"dev-form-grid\">
<div class=\"dev-field\">
<label for=\"dev-name\" class=\"dev-label\">Name</label>
<input id=\"dev-name\" type=\"text\" required placeholder=\"Your name\" class=\"dev-input\">
<div id="developer-interest" class="container" style="display:none;margin-top:4rem;padding-top:4rem;border-top:1px solid rgba(0,82,160,.10)">
<div style="max-width:42rem">
<p class="label" style="margin-bottom:0.75rem;color:var(--navy-85)">Developer Program</p>
<h3 style="font-family:var(--display);font-size:1.75rem;font-weight:400;color:var(--t1);letter-spacing:-0.01em;margin-bottom:1rem;line-height:1.2">Get early access</h3>
<p style="font-family:var(--body);font-weight:300;font-size:0.9rem;color:var(--t2);line-height:1.75;margin-bottom:2.5rem">The developer program opens before the Marketplace does. Early developers shape the plugin API. Tell me what you want to build.</p>
<form id="dev-form" class="dev-form-grid">
<div class="dev-field">
<label for="dev-name" class="dev-label">Name</label>
<input id="dev-name" type="text" required placeholder="Your name" class="dev-input">
</div>
<div class=\"dev-field\">
<label for=\"dev-email\" class=\"dev-label\">Email</label>
<input id=\"dev-email\" type=\"email\" required placeholder=\"you@example.com\" class=\"dev-input\">
<div class="dev-field">
<label for="dev-email" class="dev-label">Email</label>
<input id="dev-email" type="email" required placeholder="you@example.com" class="dev-input">
</div>
<div class=\"dev-field dev-field-full\">
<label for=\"dev-idea\" class=\"dev-label\">What do you want to build?</label>
<textarea id=\"dev-idea\" required rows=\"5\" placeholder=\"Tell me about the plugin or integration you have in mind...\" class=\"dev-input dev-textarea\"></textarea>
<div class="dev-field dev-field-full">
<label for="dev-idea" class="dev-label">What do you want to build?</label>
<textarea id="dev-idea" required rows="5" placeholder="Tell me about the plugin or integration you have in mind..." class="dev-input dev-textarea"></textarea>
</div>
<div class=\"dev-field-full\">
<button type=\"submit\" class=\"btn-primary\">Send interest &rarr;</button>
<p id=\"dev-msg\" style=\"font-family:var(--body);font-size:0.8rem;color:var(--t3);margin-top:0.75rem;display:none\"></p>
<div class="dev-field-full">
<button type="submit" class="btn-primary">Send interest &rarr;</button>
<p id="dev-msg" style="font-family:var(--body);font-size:0.8rem;color:var(--t3);margin-top:0.75rem;display:none"></p>
</div>
</form>
</div>
</div>
<script src=\"/js/marketplace.js\" defer></script>
<script src="/js/marketplace.js" defer></script>
</section>
@@ -230,5 +229,4 @@ fn marketplace() -> String {
}
.dev-textarea { resize: vertical; min-height: 120px; }
</style>
"
}
+43 -45
View File
@@ -1,93 +1,91 @@
// components/mission.el - Origin story + manifesto + problems grid.
fn mission() -> String {
return "
<section id=\"mission\" aria-label=\"Mission\">
<div class=\"container\">
return <section id="mission" aria-label="Mission">
<div class="container">
<div class=\"navy-line\" style=\"margin-bottom:5rem\"></div>
<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 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>
<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\">
<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\">
<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 - knowing your context, your patterns, your goals - your AI should too.
</p>
<p class=\"mission-body-para mission-body-emphasis reveal\" style=\"transition-delay:320ms\">
<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\">
<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 built this on my own</p>
<div class="mission-bigtech reveal" style="transition-delay:600ms">
<p class="mission-bigtech-label">Why I built this on my own</p>
<p>
I didn&#39;t just approach one of the largest technology companies in the world - I got the meeting. Got the NDAs signed. Created deliverables in real time. Showed them benchmarks with full auditability. Some of their own people understood immediately what it meant.
</p>
<p>
They saw it. Seemed to engage meaningfully. Then, within two days, lawyers were involved. I decided to just finish the project on my own.
</p>
<p class=\"muted\">
<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 - the people whose lives those enterprises touch - 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 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=\"/checkout?plan=founding\">I hope you&#39;ll preorder it.</a>
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="/checkout?plan=founding">I hope you&#39;ll preorder 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 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 - 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 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 - 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 - and how to build ones that don&#39;t.</p>
<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 - 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 - not just a pricing problem - and I&#39;m building with that in mind.</p>
<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 - not just a pricing problem - 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 - not waiting for regulators to force the question.</p>
<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 - not waiting for regulators to force the question.</p>
</div>
<div class=\"problems-grid-bottom\"></div>
<div class="problems-grid-bottom"></div>
</div>
<div class=\"mission-closer reveal\">
<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 class=\"reveal\" style=\"max-width:44rem;margin-top:3.5rem;padding:2rem 2.5rem;border-left:3px solid rgba(0,82,160,.30);background:rgba(0,82,160,.02)\">
<p style=\"font-family:var(--body);font-weight:500;font-size:1rem;color:var(--t1);margin-bottom:1rem\">Nobody&#39;s perfect.</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 isn&#39;t either. There is a gap between what the AI industry is delivering and what the world actually needs. Bridging that gap is the work - not a one-time product release, but continuous work, done in the open, built on the trust that users place in it.</p>
<p style=\"font-family:var(--body);font-weight:400;font-size:0.9375rem;color:var(--navy);line-height:1.6\">That&#39;s my commitment. To keep working. To be honest about the problems. To build something that earns trust by doing the hard things right.</p>
<div class="reveal" style="max-width:44rem;margin-top:3.5rem;padding:2rem 2.5rem;border-left:3px solid rgba(0,82,160,.30);background:rgba(0,82,160,.02)">
<p style="font-family:var(--body);font-weight:500;font-size:1rem;color:var(--t1);margin-bottom:1rem">Nobody&#39;s perfect.</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 isn&#39;t either. There is a gap between what the AI industry is delivering and what the world actually needs. Bridging that gap is the work - not a one-time product release, but continuous work, done in the open, built on the trust that users place in it.</p>
<p style="font-family:var(--body);font-weight:400;font-size:0.9375rem;color:var(--navy);line-height:1.6">That&#39;s my commitment. To keep working. To be honest about the problems. To build something that earns trust by doing the hard things right.</p>
</div>
</div>
</div>
<div class=\"container\" style=\"margin-top:5rem\"><div class=\"navy-line\"></div></div>
<div class="container" style="margin-top:5rem"><div class="navy-line"></div></div>
</section>
"
}
+32 -34
View File
@@ -4,54 +4,52 @@
// Hamburger toggles .nav-mobile panel. Closes on link click or outside click.
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>
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>
<!-- Order mirrors page section order: how-it-works enterprise
mission/safety/environment marketplace pricing. -->
<div class=\"nav-links\">
<a href=\"/#how-it-works\" class=\"nav-link\">How it works</a>
<a href=\"/#enterprise\" class=\"nav-link\">Enterprise</a>
<div class=\"nav-dropdown\">
<button class=\"nav-link nav-dropdown-btn\" aria-haspopup=\"true\" aria-expanded=\"false\">Mission &#9662;</button>
<div class=\"nav-dropdown-menu\">
<a href=\"/#mission\" class=\"nav-dropdown-item\">Our mission</a>
<a href=\"/#safety\" class=\"nav-dropdown-item\">Safety</a>
<a href=\"/#environmental\" class=\"nav-dropdown-item\">Environment</a>
<div class="nav-links">
<a href="/#how-it-works" class="nav-link">How it works</a>
<a href="/#enterprise" class="nav-link">Enterprise</a>
<div class="nav-dropdown">
<button class="nav-link nav-dropdown-btn" aria-haspopup="true" aria-expanded="false">Mission &#9662;</button>
<div class="nav-dropdown-menu">
<a href="/#mission" class="nav-dropdown-item">Our mission</a>
<a href="/#safety" class="nav-dropdown-item">Safety</a>
<a href="/#environmental" class="nav-dropdown-item">Environment</a>
</div>
</div>
<a href=\"/#marketplace\" class=\"nav-link\">Marketplace</a>
<a href=\"/#pricing\" class=\"nav-link\">Pricing</a>
<a href=\"/about\" class=\"nav-link\">About</a>
<a href=\"/said\" class=\"nav-link\">Gallery</a>
<a href=\"/account\" class=\"nav-link\">Account</a>
<a href=\"/#pricing\" class=\"nav-cta\">Get Access</a>
<a href="/#marketplace" class="nav-link">Marketplace</a>
<a href="/#pricing" class="nav-link">Pricing</a>
<a href="/about" class="nav-link">About</a>
<a href="/said" class="nav-link">Gallery</a>
<a href="/account" class="nav-link">Account</a>
<a href="/#pricing" class="nav-cta">Get Access</a>
</div>
<button class=\"nav-hamburger\" id=\"nav-hamburger\" aria-label=\"Open navigation\" aria-expanded=\"false\" aria-controls=\"nav-mobile\">
<button class="nav-hamburger" id="nav-hamburger" aria-label="Open navigation" aria-expanded="false" aria-controls="nav-mobile">
<span></span>
<span></span>
<span></span>
</button>
<div class=\"nav-mobile\" id=\"nav-mobile\" role=\"navigation\" aria-label=\"Mobile navigation\">
<a href=\"/#how-it-works\" class=\"nav-mobile-link\">How it works</a>
<a href=\"/#enterprise\" class=\"nav-mobile-link\">Enterprise</a>
<a href=\"/#mission\" class=\"nav-mobile-link\">Mission</a>
<a href=\"/#safety\" class=\"nav-mobile-link\" style=\"padding-left:1.75rem;font-size:0.8rem;color:var(--t3)\">- Safety</a>
<a href=\"/#environmental\" class=\"nav-mobile-link\" style=\"padding-left:1.75rem;font-size:0.8rem;color:var(--t3)\">- Environment</a>
<a href=\"/#marketplace\" class=\"nav-mobile-link\">Marketplace</a>
<a href=\"/#pricing\" class=\"nav-mobile-link\">Pricing</a>
<a href=\"/about\" class=\"nav-mobile-link\">About</a>
<a href=\"/said\" class=\"nav-mobile-link\">Gallery</a>
<a href=\"/account\" class=\"nav-mobile-link\">Account</a>
<a href=\"/#pricing\" class=\"nav-mobile-cta\">Get Access</a>
<div class="nav-mobile" id="nav-mobile" role="navigation" aria-label="Mobile navigation">
<a href="/#how-it-works" class="nav-mobile-link">How it works</a>
<a href="/#enterprise" class="nav-mobile-link">Enterprise</a>
<a href="/#mission" class="nav-mobile-link">Mission</a>
<a href="/#safety" class="nav-mobile-link" style="padding-left:1.75rem;font-size:0.8rem;color:var(--t3)">- Safety</a>
<a href="/#environmental" class="nav-mobile-link" style="padding-left:1.75rem;font-size:0.8rem;color:var(--t3)">- Environment</a>
<a href="/#marketplace" class="nav-mobile-link">Marketplace</a>
<a href="/#pricing" class="nav-mobile-link">Pricing</a>
<a href="/about" class="nav-mobile-link">About</a>
<a href="/said" class="nav-mobile-link">Gallery</a>
<a href="/account" class="nav-mobile-link">Account</a>
<a href="/#pricing" class="nav-mobile-cta">Get Access</a>
</div>
</div>
</nav>
<script src=\"/js/nav.js\" defer></script>
"
<script src="/js/nav.js" defer></script>
}
+24 -26
View File
@@ -5,41 +5,39 @@
// 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>
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="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 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\">Sharpens</h3>
<div class=\"pillar-rule\"></div>
<p class=\"pillar-body\">The longer you use it, the sharper it gets. Every session builds on the last. Neuron Inference arrives Q3 2026 - not a wrapper around someone else&#39;s model. Purpose-built. Built for you.</p>
<p class=\"pillar-detail\">Specific to you</p>
<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">Sharpens</h3>
<div class="pillar-rule"></div>
<p class="pillar-body">The longer you use it, the sharper it gets. Every session builds on the last. Neuron Inference arrives Q3 2026 - not a wrapper around someone else&#39;s model. Purpose-built. Built for you.</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 - we&#39;re not charging you to remember you.</p>
<p class=\"pillar-detail\">Fully private</p>
<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 - we&#39;re not charging you to remember you.</p>
<p class="pillar-detail">Fully private</p>
</div>
</div>
</div>
</section>
"
}
+76 -80
View File
@@ -9,13 +9,11 @@ fn founding_spots_html(sold: Int, total: Int) -> String {
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>
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 {
@@ -26,115 +24,113 @@ fn pricing(sold: Int, total: Int) -> String {
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\">
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 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\">Bring your own API keys on day one. Neuron Inference - our own model layer, priced below the major APIs - launches Q3 2026.</p>
<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">Bring your own API keys on day one. Neuron Inference - our own model layer, priced below the major APIs - launches Q3 2026.</p>
</div>
<div class=\"pricing-grid\">
<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 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 - never resets</span></li>
<li><span class=\"dash\">-</span><span>Bring your own API keys (OpenAI, Anthropic, Grok...)</span></li>
<li><span class=\"dash\">-</span><span>Local inference via Ollama (coming)</span></li>
<li><span class=\"dash\">-</span><span>Neuron Inference included when it launches - Q3 2026</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>
<p class="pricing-tagline">Start building your memory. No card required.</p>
<ul class="pricing-features">
<li><span class="dash">-</span><span>Persistent memory - never resets</span></li>
<li><span class="dash">-</span><span>Bring your own API keys (OpenAI, Anthropic, Grok...)</span></li>
<li><span class="dash">-</span><span>Local inference via Ollama (coming)</span></li>
<li><span class="dash">-</span><span>Neuron Inference included when it launches - Q3 2026</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\">
<button class=\"pricing-cta-ghost\" data-checkout=\"free\">Preorder free tier &#8594;</button>
<div style="flex:1"></div>
<div class="pricing-cta pricing-cta-ghost">
<button class="pricing-cta-ghost" data-checkout="free">Preorder free tier &#8594;</button>
</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 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. Use your own API keys now. Neuron Inference when it launches.</p>
<ul class=\"pricing-features\">
<li><span class=\"dash\">-</span><span>Bring your own API keys - use any model, any provider</span></li>
<li><span class=\"dash\">-</span><span>Neuron Inference - Q3 2026, priced below OpenAI and Anthropic</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 - IDE, Slack, and more</span></li>
<li><span class=\"dash\">-</span><span>Early access to new features</span></li>
<p class="pricing-tagline">Full access. Use your own API keys now. Neuron Inference when it launches.</p>
<ul class="pricing-features">
<li><span class="dash">-</span><span>Bring your own API keys - use any model, any provider</span></li>
<li><span class="dash">-</span><span>Neuron Inference - Q3 2026, priced below OpenAI and Anthropic</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 - 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\">Preorder &#8594;</button>
<div style="flex:1"></div>
<div class="pricing-cta pricing-cta-navy">
<button class="pricing-cta-navy" data-checkout="professional">Preorder &#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 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. Everything, forever. Including Neuron Inference when it launches.</p>
<p class="pricing-tagline">Pay once. Everything, forever. Including Neuron Inference when it launches.</p>
" + spots_html + "
{raw(spots_html)}
<ul class=\"pricing-features\">
<li><span class=\"dash\">-</span><span>Neuron Inference (Q3 2026) - founding member rate, priced below the major APIs</span></li>
<li><span class=\"dash\">-</span><span>Everything in Professional - forever</span></li>
<li><span class=\"dash\">-</span><span>Never pay again - 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 founding member community</span></li>
<li><span class=\"dash\">-</span><span>Shape the roadmap - 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 class="pricing-features">
<li><span class="dash">-</span><span>Neuron Inference (Q3 2026) - founding member rate, priced below the major APIs</span></li>
<li><span class="dash">-</span><span>Everything in Professional - forever</span></li>
<li><span class="dash">-</span><span>Never pay again - 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 founding member community</span></li>
<li><span class="dash">-</span><span>Shape the roadmap - 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\">Preorder claim your spot &#8594;</button>
<div style="flex:1"></div>
<div class="pricing-cta pricing-cta-solid">
<button class="pricing-cta-solid" data-checkout="founding">Preorder claim your spot &#8594;</button>
</div>
</div>
</div>
<div class=\"founding-banner reveal\">
<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>
<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 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\">Preorder &#8594;</button>
<button class="btn-primary" data-checkout="founding" style="white-space:nowrap">Preorder &#8594;</button>
</div>
<p class=\"pricing-fine reveal\" style=\"margin-top:2.5rem\">
<p class="pricing-fine reveal" style="margin-top:2.5rem">
Bring your own API keys &nbsp;&middot;&nbsp; Local inference via Ollama (coming) &nbsp;&middot;&nbsp; Neuron Inference - Q3 2026 &nbsp;&middot;&nbsp; Your data stays yours
</p>
<p class=\"pricing-fine reveal\" style=\"margin-top:1rem;font-size:0.8rem\">
<p class="pricing-fine reveal" style="margin-top:1rem;font-size:0.8rem">
Includes 2 devices per plan &nbsp;&middot;&nbsp; Additional devices available at a small extra cost &nbsp;&middot;&nbsp; We&#39;re not greedy
</p>
</div>
</section>
"
}
+44 -46
View File
@@ -6,64 +6,63 @@
// path when a signal warrants it.
fn safety() -> String {
return "
<section id=\"safety\" aria-label=\"Safety\" style=\"padding:8rem 2.5rem;background:var(--bg2)\">
<div class=\"container-lg\">
return <section id="safety" aria-label="Safety" style="padding:8rem 2.5rem;background:var(--bg2)">
<div class="container-lg">
<!-- Intro text -->
<div style=\"max-width:44rem;margin-bottom:3.5rem\">
<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)\">Safety</span>
<div style="max-width:44rem;margin-bottom:3.5rem">
<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)">Safety</span>
</div>
<h2 class=\"display-lg reveal\" style=\"transition-delay:80ms;margin-bottom:1.5rem\">
<h2 class="display-lg reveal" style="transition-delay:80ms;margin-bottom:1.5rem">
Safety built in.<br>Not bolted on.
</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\">
<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">
Most AI products treat safety as a content filter. Block a list of topics, add a disclaimer, call it done. That&#39;s not safety. That&#39;s liability management.
</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\">
<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">
Real safety means thinking about who might need help and what help actually looks like in a crisis. The person closest to you is sometimes the source of the problem. A system that routes every distress signal to your primary contact can alert the very person you need protection from.
</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\">
<p class="reveal" style="transition-delay:280ms;font-family:var(--body);font-weight:300;font-size:1rem;color:var(--t2);line-height:1.8">
I built something different. I called it the Hard Bell.
</p>
</div>
<!-- 2x2 card grid -->
<div style=\"display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;margin-bottom:1.5rem\">
<div style="display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;margin-bottom:1.5rem">
<div class=\"reveal card-dark\" style=\"transition-delay:100ms;padding:1.75rem 2rem;border-left:3px solid rgba(0,82,160,.40)\">
<p style=\"font-family:var(--body);font-size:0.75rem;font-weight:700;letter-spacing:0.14em;text-transform:uppercase;color:var(--navy);margin-bottom:0.75rem\">Hard Bell</p>
<p style=\"font-family:var(--body);font-weight:400;font-size:0.9375rem;color:var(--t1);margin-bottom:0.5rem\">A trusted contact the threat can&#39;t intercept</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.875rem;color:var(--t2);line-height:1.7\">
<div class="reveal card-dark" style="transition-delay:100ms;padding:1.75rem 2rem;border-left:3px solid rgba(0,82,160,.40)">
<p style="font-family:var(--body);font-size:0.75rem;font-weight:700;letter-spacing:0.14em;text-transform:uppercase;color:var(--navy);margin-bottom:0.75rem">Hard Bell</p>
<p style="font-family:var(--body);font-weight:400;font-size:0.9375rem;color:var(--t1);margin-bottom:0.5rem">A trusted contact the threat can&#39;t intercept</p>
<p style="font-family:var(--body);font-weight:300;font-size:0.875rem;color:var(--t2);line-height:1.7">
Any user can designate a Hard Bell contact - a friend, a relative, a colleague - set up in a calm moment, independent of any shared account. When a signal warrants it, that contact is reached directly. It works the same way for everyone: adult, teen, or child.
</p>
</div>
<div class=\"reveal card-dark\" style=\"transition-delay:150ms;padding:1.75rem 2rem;border-left:3px solid rgba(0,82,160,.40)\">
<p style=\"font-family:var(--body);font-size:0.75rem;font-weight:700;letter-spacing:0.14em;text-transform:uppercase;color:var(--navy);margin-bottom:0.75rem\">Emergency routing</p>
<p style=\"font-family:var(--body);font-weight:400;font-size:0.9375rem;color:var(--t1);margin-bottom:0.5rem\">Emergency services first - not notification</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.875rem;color:var(--t2);line-height:1.7\">
<div class="reveal card-dark" style="transition-delay:150ms;padding:1.75rem 2rem;border-left:3px solid rgba(0,82,160,.40)">
<p style="font-family:var(--body);font-size:0.75rem;font-weight:700;letter-spacing:0.14em;text-transform:uppercase;color:var(--navy);margin-bottom:0.75rem">Emergency routing</p>
<p style="font-family:var(--body);font-weight:400;font-size:0.9375rem;color:var(--t1);margin-bottom:0.5rem">Emergency services first - not notification</p>
<p style="font-family:var(--body);font-weight:300;font-size:0.875rem;color:var(--t2);line-height:1.7">
Physical danger and crisis signals route to emergency services and crisis lines. Neuron evaluates the content of the signal, not the account type. No one in your contact list can disable or redirect this path.
</p>
</div>
<div class=\"reveal card-dark\" style=\"transition-delay:200ms;padding:1.75rem 2rem;border-left:3px solid rgba(0,82,160,.40)\">
<p style=\"font-family:var(--body);font-size:0.75rem;font-weight:700;letter-spacing:0.14em;text-transform:uppercase;color:var(--navy);margin-bottom:0.75rem\">Family accounts</p>
<p style=\"font-family:var(--body);font-weight:400;font-size:0.9375rem;color:var(--t1);margin-bottom:0.5rem\">Oversight without surveillance</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.875rem;color:var(--t2);line-height:1.7\">
<div class="reveal card-dark" style="transition-delay:200ms;padding:1.75rem 2rem;border-left:3px solid rgba(0,82,160,.40)">
<p style="font-family:var(--body);font-size:0.75rem;font-weight:700;letter-spacing:0.14em;text-transform:uppercase;color:var(--navy);margin-bottom:0.75rem">Family accounts</p>
<p style="font-family:var(--body);font-weight:400;font-size:0.9375rem;color:var(--t1);margin-bottom:0.5rem">Oversight without surveillance</p>
<p style="font-family:var(--body);font-weight:300;font-size:0.875rem;color:var(--t2);line-height:1.7">
For family accounts, parents see what they need to see. A child&#39;s conversations remain private unless a wellbeing signal triggers notification - and even then, the routing logic accounts for the possibility that the parent could be the source of harm.
</p>
<p style=\"font-family:var(--body);font-weight:500;font-size:0.875rem;color:var(--t1);line-height:1.7;margin-top:0.75rem\">
<p style="font-family:var(--body);font-weight:500;font-size:0.875rem;color:var(--t1);line-height:1.7;margin-top:0.75rem">
We protect the kids. They come first.
</p>
</div>
<div class=\"reveal card-dark\" style=\"transition-delay:250ms;padding:1.75rem 2rem;border-left:3px solid rgba(0,82,160,.40)\">
<p style=\"font-family:var(--body);font-size:0.75rem;font-weight:700;letter-spacing:0.14em;text-transform:uppercase;color:var(--navy);margin-bottom:0.75rem\">Mandatory reporting</p>
<p style=\"font-family:var(--body);font-weight:400;font-size:0.9375rem;color:var(--t1);margin-bottom:0.5rem\">If real harm is intended, authorities may be contacted</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.875rem;color:var(--t2);line-height:1.7\">
<div class="reveal card-dark" style="transition-delay:250ms;padding:1.75rem 2rem;border-left:3px solid rgba(0,82,160,.40)">
<p style="font-family:var(--body);font-size:0.75rem;font-weight:700;letter-spacing:0.14em;text-transform:uppercase;color:var(--navy);margin-bottom:0.75rem">Mandatory reporting</p>
<p style="font-family:var(--body);font-weight:400;font-size:0.9375rem;color:var(--t1);margin-bottom:0.5rem">If real harm is intended, authorities may be contacted</p>
<p style="font-family:var(--body);font-weight:300;font-size:0.875rem;color:var(--t2);line-height:1.7">
If Neuron detects credible, specific indicators of intended harm - to the user or to someone else - emergency services or relevant authorities may be contacted. Every user agrees to this at account creation. You cannot opt out.
</p>
</div>
@@ -71,41 +70,40 @@ fn safety() -> String {
</div>
<!-- People first card full width -->
<div class=\"reveal card-dark\" style=\"padding:2rem 2.5rem;border-left:3px solid var(--navy);margin-bottom:1.5rem\">
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1.25rem\">This applies to anyone planning mass harm, a shooting, or serious self-harm. Not just child protection - anyone. The same logic holds: a misunderstanding can be resolved. A person&#39;s life can&#39;t be given back to them.</p>
<p style=\"font-family:var(--body);font-weight:700;font-size:1.125rem;color:var(--navy);line-height:1.4\">People first, always.</p>
<div class="reveal card-dark" style="padding:2rem 2.5rem;border-left:3px solid var(--navy);margin-bottom:1.5rem">
<p style="font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1.25rem">This applies to anyone planning mass harm, a shooting, or serious self-harm. Not just child protection - anyone. The same logic holds: a misunderstanding can be resolved. A person&#39;s life can&#39;t be given back to them.</p>
<p style="font-family:var(--body);font-weight:700;font-size:1.125rem;color:var(--navy);line-height:1.4">People first, always.</p>
</div>
<!-- Statement + stat cards each full width -->
<div style=\"display:flex;flex-direction:column;gap:1.5rem;margin-bottom:2rem\">
<div style="display:flex;flex-direction:column;gap:1.5rem;margin-bottom:2rem">
<div class=\"reveal card-dark\" style=\"padding:2rem 2.5rem;border-left:3px solid rgba(0,82,160,.30)\">
<p style=\"font-family:var(--body);font-size:0.75rem;font-weight:700;letter-spacing:0.14em;text-transform:uppercase;color:var(--navy);margin-bottom:0.75rem\">Why the routing works this way</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:0.75rem\">According to federal child maltreatment data (HHS, Child Maltreatment 2023), approximately 89% of child abuse victims are maltreated by a parent or caregiver. The emergency contact on file is not always a safe contact.</p>
<p style=\"font-family:var(--body);font-size:0.75rem;color:var(--t3)\">Source: U.S. Department of Health &amp; Human Services, Administration for Children and Families, <em>Child Maltreatment 2023</em>. <a href=\"https://www.acf.hhs.gov/cb/data-research/child-maltreatment\" target=\"_blank\" rel=\"noopener\" style=\"color:var(--navy)\">acf.hhs.gov/cb/data-research/child-maltreatment</a></p>
<div class="reveal card-dark" style="padding:2rem 2.5rem;border-left:3px solid rgba(0,82,160,.30)">
<p style="font-family:var(--body);font-size:0.75rem;font-weight:700;letter-spacing:0.14em;text-transform:uppercase;color:var(--navy);margin-bottom:0.75rem">Why the routing works this way</p>
<p style="font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:0.75rem">According to federal child maltreatment data (HHS, Child Maltreatment 2023), approximately 89% of child abuse victims are maltreated by a parent or caregiver. The emergency contact on file is not always a safe contact.</p>
<p style="font-family:var(--body);font-size:0.75rem;color:var(--t3)">Source: U.S. Department of Health &amp; Human Services, Administration for Children and Families, <em>Child Maltreatment 2023</em>. <a href="https://www.acf.hhs.gov/cb/data-research/child-maltreatment" target="_blank" rel="noopener" style="color:var(--navy)">acf.hhs.gov/cb/data-research/child-maltreatment</a></p>
</div>
<div class=\"reveal card-dark\" style=\"padding:2rem 2.5rem;border-left:3px solid var(--navy)\">
<p style=\"font-family:var(--body);font-weight:400;font-size:0.9375rem;color:var(--t1);line-height:1.8;margin-bottom:0.75rem\">I recognize I will lose business over this. That doesn&#39;t matter to me.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8\">This is still local. Neuron, LLC does not see your conversations. When a safety signal fires, the contact is made by your local instance - not by our servers. We are not in the loop. We cannot be. That&#39;s the architecture.</p>
<div class="reveal card-dark" style="padding:2rem 2.5rem;border-left:3px solid var(--navy)">
<p style="font-family:var(--body);font-weight:400;font-size:0.9375rem;color:var(--t1);line-height:1.8;margin-bottom:0.75rem">I recognize I will lose business over this. That doesn&#39;t matter to me.</p>
<p style="font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8">This is still local. Neuron, LLC does not see your conversations. When a safety signal fires, the contact is made by your local instance - not by our servers. We are not in the loop. We cannot be. That&#39;s the architecture.</p>
</div>
</div>
<!-- Required block -->
<div class=\"reveal\" style=\"padding:2rem 2.5rem;border:1px solid rgba(0,82,160,.15);background:rgba(0,82,160,.03)\">
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem\">
<strong style=\"color:var(--t1);font-weight:500\">Required before you can use Neuron.</strong> You must designate a Hard Bell contact during setup - before anything else. This is not a settings page you visit later. It happens first.
<div class="reveal" style="padding:2rem 2.5rem;border:1px solid rgba(0,82,160,.15);background:rgba(0,82,160,.03)">
<p style="font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem">
<strong style="color:var(--t1);font-weight:500">Required before you can use Neuron.</strong> You must designate a Hard Bell contact during setup - before anything else. This is not a settings page you visit later. It happens first.
</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem\">
<p style="font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem">
If you don&#39;t have someone to designate, you can use 988 - the Suicide &amp; Crisis Lifeline - as your Hard Bell contact. The system will accept it. The point is that no one goes in without a line out.
</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8\">
<p style="font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8">
I&#39;m also establishing a Neuron crisis line - free, 24/7, staffed. Because I recognize that some people don&#39;t have anyone. The technology shouldn&#39;t make that worse. It should be the thing that catches you when nothing else does.
</p>
</div>
</div>
</section>
"
}
+123 -126
View File
@@ -16,18 +16,18 @@
// in the noscript fallback style).
fn page_open() -> String {
return "<!DOCTYPE html>
<html lang=\"en\">
return <!DOCTYPE html>
<html lang="en">
<head>
<meta charset=\"UTF-8\">
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Neuron - The AI That Remembers You</title>
<meta name=\"description\" content=\"Every AI resets when you close the tab. Neuron doesn&#39;t. Runs on your machine. Remembers everything. Cheaper than ChatGPT on day one.\">
<link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/assets/favicon-16.png\">
<link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/assets/favicon-32.png\">
<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">
<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>
<link href=\"https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,500;0,600;1,400;1,500&family=IBM+Plex+Sans:wght@300;400;500;600&display=swap\" rel=\"stylesheet\">
<meta name="description" content="Every AI resets when you close the tab. Neuron doesn&#39;t. Runs on your machine. Remembers everything. Cheaper than ChatGPT on day one.">
<link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16.png">
<link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32.png">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,500;0,600;1,400;1,500&family=IBM+Plex+Sans:wght@300;400;500;600&display=swap" rel="stylesheet">
<style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
@@ -308,14 +308,14 @@ fn page_open() -> String {
transition: transform 280ms ease, opacity 200ms ease;
transform-origin: center;
}
.nav-hamburger[aria-expanded=\"true\"] span:nth-child(1) {
.nav-hamburger[aria-expanded="true"] span:nth-child(1) {
transform: translateY(7px) rotate(45deg);
}
.nav-hamburger[aria-expanded=\"true\"] span:nth-child(2) {
.nav-hamburger[aria-expanded="true"] span:nth-child(2) {
opacity: 0;
transform: scaleX(0);
}
.nav-hamburger[aria-expanded=\"true\"] span:nth-child(3) {
.nav-hamburger[aria-expanded="true"] span:nth-child(3) {
transform: translateY(-7px) rotate(-45deg);
}
@@ -1828,12 +1828,12 @@ fn page_open() -> String {
button[disabled] { opacity: 0.6; cursor: not-allowed; }
</style>
<script src=\"https://cdn.jsdelivr.net/npm/marked/marked.min.js\"></script>
<script src=\"https://challenges.cloudflare.com/turnstile/v0/api.js\" async defer></script>
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
<noscript><style>.reveal { opacity: 1 !important; transform: none !important; }</style></noscript>
<!-- Google Analytics -->
<script async src=\"https://www.googletagmanager.com/gtag/js?id=G-Y1EE43X9RN\"></script>
<script async src="https://www.googletagmanager.com/gtag/js?id=G-Y1EE43X9RN"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
@@ -1843,117 +1843,117 @@ fn page_open() -> String {
</script>
<!-- Open Graph -->
<meta property=\"og:type\" content=\"website\">
<meta property=\"og:url\" content=\"https://neurontechnologies.ai\">
<meta property=\"og:title\" content=\"Neuron - The AI That Remembers You\">
<meta property=\"og:description\" content=\"Every other AI forgets you. Neuron doesn&#39;t. Runs on your machine, builds a memory over time, and gets sharper the longer you use it. Built by one person. April 22, 2026 — the meeting. April 25 — you&#39;re looking at the proof.\">
<meta property=\"og:image\" content=\"https://neurontechnologies.ai/assets/brand/neuron-wordmark-on-light@2x.png\">
<meta property="og:type" content="website">
<meta property="og:url" content="https://neurontechnologies.ai">
<meta property="og:title" content="Neuron - The AI That Remembers You">
<meta property="og:description" content="Every other AI forgets you. Neuron doesn&#39;t. Runs on your machine, builds a memory over time, and gets sharper the longer you use it. Built by one person. April 22, 2026 — the meeting. April 25 — you&#39;re looking at the proof.">
<meta property="og:image" content="https://neurontechnologies.ai/assets/brand/neuron-wordmark-on-light@2x.png">
<!-- Twitter / X -->
<meta name=\"twitter:card\" content=\"summary_large_image\">
<meta name=\"twitter:title\" content=\"Neuron - The AI That Remembers You\">
<meta name=\"twitter:description\" content=\"Every other AI forgets you. Neuron doesn&#39;t. Runs on your machine. Remembers everything. $19/mo or $199 founding member (first 1,000).\">
<meta name=\"twitter:image\" content=\"https://neurontechnologies.ai/assets/brand/neuron-wordmark-on-light@2x.png\">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Neuron - The AI That Remembers You">
<meta name="twitter:description" content="Every other AI forgets you. Neuron doesn&#39;t. Runs on your machine. Remembers everything. $19/mo or $199 founding member (first 1,000).">
<meta name="twitter:image" content="https://neurontechnologies.ai/assets/brand/neuron-wordmark-on-light@2x.png">
<!-- Canonical -->
<link rel=\"canonical\" href=\"https://neurontechnologies.ai\">
<link rel="canonical" href="https://neurontechnologies.ai">
<!-- Structured data GEO: Organization + SoftwareApplication + FAQPage -->
<script type=\"application/ld+json\">
<script type="application/ld+json">
{
\"@context\": \"https://schema.org\",
\"@graph\": [
"@context": "https://schema.org",
"@graph": [
{
\"@type\": \"Organization\",
\"name\": \"Neuron, LLC\",
\"url\": \"https://neurontechnologies.ai\",
\"founder\": {
\"@type\": \"Person\",
\"name\": \"Will Anderson\",
\"jobTitle\": \"Founder\"
"@type": "Organization",
"name": "Neuron, LLC",
"url": "https://neurontechnologies.ai",
"founder": {
"@type": "Person",
"name": "Will Anderson",
"jobTitle": "Founder"
},
\"description\": \"Neuron builds AI that runs on your machine, builds a memory over time, and gets sharper the longer you use it. One builder. Built different.\",
\"foundingDate\": \"2026\",
\"sameAs\": [\"https://github.com/neuron-technologies\"]
"description": "Neuron builds AI that runs on your machine, builds a memory over time, and gets sharper the longer you use it. One builder. Built different.",
"foundingDate": "2026",
"sameAs": ["https://github.com/neuron-technologies"]
},
{
\"@type\": \"SoftwareApplication\",
\"name\": \"Neuron\",
\"applicationCategory\": \"AIApplication\",
\"operatingSystem\": \"macOS, Windows, Linux\",
\"offers\": [
"@type": "SoftwareApplication",
"name": "Neuron",
"applicationCategory": "AIApplication",
"operatingSystem": "macOS, Windows, Linux",
"offers": [
{
\"@type\": \"Offer\",
\"name\": \"Free\",
\"price\": \"0\",
\"priceCurrency\": \"USD\"
"@type": "Offer",
"name": "Free",
"price": "0",
"priceCurrency": "USD"
},
{
\"@type\": \"Offer\",
\"name\": \"Professional\",
\"price\": \"19\",
\"priceCurrency\": \"USD\",
\"billingIncrement\": \"monthly\"
"@type": "Offer",
"name": "Professional",
"price": "19",
"priceCurrency": "USD",
"billingIncrement": "monthly"
},
{
\"@type\": \"Offer\",
\"name\": \"Founding Member\",
\"description\": \"Lifetime access for the first 1,000 members.\",
\"price\": \"199\",
\"priceCurrency\": \"USD\"
"@type": "Offer",
"name": "Founding Member",
"description": "Lifetime access for the first 1,000 members.",
"price": "199",
"priceCurrency": "USD"
}
],
\"description\": \"The AI that remembers you. Runs locally on your machine. Builds a persistent memory over every conversation. Gets sharper the longer you use it. Your data never leaves your device.\",
\"featureList\": [
\"Persistent memory runs locally, never resets\",
\"Bring your own API keys (OpenAI, Anthropic, Grok)\",
\"Local inference via Ollama coming, offline, zero cloud\",
\"Neuron Inference coming soon priced below major APIs\",
\"Two devices included per plan\",
\"Enterprise deployment Q1 2027\"
"description": "The AI that remembers you. Runs locally on your machine. Builds a persistent memory over every conversation. Gets sharper the longer you use it. Your data never leaves your device.",
"featureList": [
"Persistent memory — runs locally, never resets",
"Bring your own API keys (OpenAI, Anthropic, Grok)",
"Local inference via Ollama — coming, offline, zero cloud",
"Neuron Inference coming soon — priced below major APIs",
"Two devices included per plan",
"Enterprise deployment — Q1 2027"
]
},
{
\"@type\": \"FAQPage\",
\"mainEntity\": [
"@type": "FAQPage",
"mainEntity": [
{
\"@type\": \"Question\",
\"name\": \"What is Neuron?\",
\"acceptedAnswer\": {
\"@type\": \"Answer\",
\"text\": \"Neuron is an AI that runs on your machine and builds a persistent memory over time. Every other AI forgets you when you close the tab. Neuron doesn&#39;t. The longer you use it, the less you have to explain.\"
"@type": "Question",
"name": "What is Neuron?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Neuron is an AI that runs on your machine and builds a persistent memory over time. Every other AI forgets you when you close the tab. Neuron doesn&#39;t. The longer you use it, the less you have to explain."
}
},
{
\"@type\": \"Question\",
\"name\": \"Does Neuron send my data to the cloud?\",
\"acceptedAnswer\": {
\"@type\": \"Answer\",
\"text\": \"No. Your memory lives on your machine and never leaves it. Neuron does not collect your data, train on your conversations, or require cloud storage. For inference you choose: local via Ollama, your own API keys, or Neuron Inference (coming soon).\"
"@type": "Question",
"name": "Does Neuron send my data to the cloud?",
"acceptedAnswer": {
"@type": "Answer",
"text": "No. Your memory lives on your machine and never leaves it. Neuron does not collect your data, train on your conversations, or require cloud storage. For inference you choose: local via Ollama, your own API keys, or Neuron Inference (coming soon)."
}
},
{
\"@type\": \"Question\",
\"name\": \"How much does Neuron cost?\",
\"acceptedAnswer\": {
\"@type\": \"Answer\",
\"text\": \"Neuron has a free tier that never expires. Professional is $19/month. Founding Member is $199 lifetime available to the first 1,000 members only. All plans include two devices.\"
"@type": "Question",
"name": "How much does Neuron cost?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Neuron has a free tier that never expires. Professional is $19/month. Founding Member is $199 lifetime — available to the first 1,000 members only. All plans include two devices."
}
},
{
\"@type\": \"Question\",
\"name\": \"Who built Neuron?\",
\"acceptedAnswer\": {
\"@type\": \"Answer\",
\"text\": \"Will Anderson. On April 22nd, 2026 he had a meeting with one of the largest technology companies in the world. Within two days their lawyers were engaged. He decided to build it himself. On April 25th he published the proof.\"
"@type": "Question",
"name": "Who built Neuron?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Will Anderson. On April 22nd, 2026 he had a meeting with one of the largest technology companies in the world. Within two days their lawyers were engaged. He decided to build it himself. On April 25th he published the proof."
}
},
{
\"@type\": \"Question\",
\"name\": \"When does Neuron launch?\",
\"acceptedAnswer\": {
\"@type\": \"Answer\",
\"text\": \"Neuron is available for preorder now. Enterprise deployment launches Q1 2027.\"
"@type": "Question",
"name": "When does Neuron launch?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Neuron is available for preorder now. Enterprise deployment launches Q1 2027."
}
}
]
@@ -1963,69 +1963,66 @@ fn page_open() -> String {
</script>
</head>
<body>
"
}
fn page_close() -> String {
return "
<script src=\"/js/chat-widget.js\" defer></script>
return <script src="/js/chat-widget.js" defer></script>
<!-- Neuron Demo Chat Widget -->
<div id=\"neuron-demo-btn\">
<button onclick=\"neuronDemoToggle()\" aria-label=\"Chat with Neuron\">
<img src=\"/assets/brand/neuron-brain.png\" alt=\"\">
<div id="neuron-demo-btn">
<button onclick="neuronDemoToggle()" aria-label="Chat with Neuron">
<img src="/assets/brand/neuron-brain.png" alt="">
Try Neuron
</button>
</div>
<div id=\"neuron-demo-panel\" style=\"display:none\">
<div id=\"neuron-demo-header\">
<div id=\"neuron-demo-header-left\">
<img src=\"/assets/brand/neuron-brain.png\" alt=\"Neuron\">
<div id="neuron-demo-panel" style="display:none">
<div id="neuron-demo-header">
<div id="neuron-demo-header-left">
<img src="/assets/brand/neuron-brain.png" alt="Neuron">
<div>
<span>Neuron</span>
<div id=\"neuron-demo-header-sub\">Live Demo</div>
<div id="neuron-demo-header-sub">Live Demo</div>
</div>
</div>
<div style=\"display:flex;align-items:center;gap:0.75rem\">
<span id=\"neuron-demo-countdown\" style=\"font-family:var(--body);font-size:0.65rem;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;color:rgba(255,255,255,0.90)\"></span>
<button id=\"neuron-demo-close\" onclick=\"neuronDemoToggle()\" aria-label=\"Close\">
<svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"rgba(255,255,255,.85)\" stroke-width=\"1.75\" stroke-linecap=\"round\">
<line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"/><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"/>
<div style="display:flex;align-items:center;gap:0.75rem">
<span id="neuron-demo-countdown" style="font-family:var(--body);font-size:0.65rem;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;color:rgba(255,255,255,0.90)"></span>
<button id="neuron-demo-close" onclick="neuronDemoToggle()" aria-label="Close">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="rgba(255,255,255,.85)" stroke-width="1.75" stroke-linecap="round">
<line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/>
</svg>
</button>
</div>
</div>
<div id=\"neuron-demo-messages\"></div>
<div id=\"neuron-demo-turnstile\" style=\"padding:0.75rem 1rem 0;transition:opacity 0.6s,max-height 0.6s;overflow:hidden;max-height:80px\"></div>
<div id=\"neuron-demo-input-row\" style=\"display:none\">
<input type=\"text\" id=\"neuron-demo-text\" placeholder=\"Ask me anything...\" autocomplete=\"off\">
<button id=\"neuron-demo-send\" onclick=\"neuronDemoSend()\">Send</button>
<div id="neuron-demo-messages"></div>
<div id="neuron-demo-turnstile" style="padding:0.75rem 1rem 0;transition:opacity 0.6s,max-height 0.6s;overflow:hidden;max-height:80px"></div>
<div id="neuron-demo-input-row" style="display:none">
<input type="text" id="neuron-demo-text" placeholder="Ask me anything..." autocomplete="off">
<button id="neuron-demo-send" onclick="neuronDemoSend()">Send</button>
</div>
</div>
<!-- Share preview modal: shown after the user clicks Share on an AI bubble.
Renders the share-card layout in an iframe (via srcdoc) so the visitor
sees exactly what the public card will look like before publishing. -->
<div id=\"neuron-share-preview-modal\" style=\"display:none;position:fixed;inset:0;z-index:200000;background:rgba(13,13,20,.55);align-items:center;justify-content:center;padding:1.5rem;font-family:'IBM Plex Sans',system-ui,sans-serif\">
<div style=\"background:#fff;width:100%;max-width:640px;max-height:90vh;display:flex;flex-direction:column;border-radius:12px;box-shadow:0 24px 80px rgba(0,0,0,.35);overflow:hidden\">
<div style=\"display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid rgba(0,0,0,.08)\">
<div id="neuron-share-preview-modal" style="display:none;position:fixed;inset:0;z-index:200000;background:rgba(13,13,20,.55);align-items:center;justify-content:center;padding:1.5rem;font-family:'IBM Plex Sans',system-ui,sans-serif">
<div style="background:#fff;width:100%;max-width:640px;max-height:90vh;display:flex;flex-direction:column;border-radius:12px;box-shadow:0 24px 80px rgba(0,0,0,.35);overflow:hidden">
<div style="display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid rgba(0,0,0,.08)">
<div>
<div style=\"font-size:.65rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:#6B6B7E\">Preview</div>
<div style=\"font-size:1rem;font-weight:500;color:#0D0D14;margin-top:.15rem\">This is what you are about to publish</div>
<div style="font-size:.65rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:#6B6B7E">Preview</div>
<div style="font-size:1rem;font-weight:500;color:#0D0D14;margin-top:.15rem">This is what you are about to publish</div>
</div>
<button type=\"button\" id=\"neuron-share-preview-close\" aria-label=\"Close\" style=\"background:none;border:none;cursor:pointer;color:#6B6B7E;padding:.25rem;line-height:1;font-size:1.5rem\">&times;</button>
<button type="button" id="neuron-share-preview-close" aria-label="Close" style="background:none;border:none;cursor:pointer;color:#6B6B7E;padding:.25rem;line-height:1;font-size:1.5rem">&times;</button>
</div>
<iframe id=\"neuron-share-preview-frame\" style=\"flex:1;width:100%;min-height:420px;border:0;background:#FAFAF8\" sandbox=\"allow-same-origin\"></iframe>
<div style=\"display:flex;align-items:center;justify-content:flex-end;gap:.6rem;padding:.85rem 1.25rem;border-top:1px solid rgba(0,0,0,.08);background:#FAFAF8\">
<button type=\"button\" id=\"neuron-share-preview-cancel\" style=\"background:#fff;border:1px solid rgba(0,0,0,.18);color:#3A3A4A;cursor:pointer;padding:.55rem 1rem;font:inherit;font-size:.8rem;font-weight:500;border-radius:6px\">Cancel</button>
<button type=\"button\" id=\"neuron-share-preview-publish\" style=\"background:#0052A0;border:1px solid #0052A0;color:#fff;cursor:pointer;padding:.55rem 1.1rem;font:inherit;font-size:.8rem;font-weight:600;letter-spacing:.04em;border-radius:6px\">Publish to gallery</button>
<iframe id="neuron-share-preview-frame" style="flex:1;width:100%;min-height:420px;border:0;background:#FAFAF8" sandbox="allow-same-origin"></iframe>
<div style="display:flex;align-items:center;justify-content:flex-end;gap:.6rem;padding:.85rem 1.25rem;border-top:1px solid rgba(0,0,0,.08);background:#FAFAF8">
<button type="button" id="neuron-share-preview-cancel" style="background:#fff;border:1px solid rgba(0,0,0,.18);color:#3A3A4A;cursor:pointer;padding:.55rem 1rem;font:inherit;font-size:.8rem;font-weight:500;border-radius:6px">Cancel</button>
<button type="button" id="neuron-share-preview-publish" style="background:#0052A0;border:1px solid #0052A0;color:#fff;cursor:pointer;padding:.55rem 1.1rem;font:inherit;font-size:.8rem;font-weight:600;letter-spacing:.04em;border-radius:6px">Publish to gallery</button>
</div>
</div>
</div>
<script src=\"/js/styles.js\" defer></script>
<script src="/js/styles.js" defer></script>
</body>
</html>
"
}
+100 -102
View File
@@ -5,152 +5,150 @@ from styles import { page_open, page_close }
from nav import { nav }
fn terms_page() -> String {
return page_open() + nav() + terms_body() + page_close()
return {page_open()}{nav()}{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>
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 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 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 - 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>
<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 - 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 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\">Each plan includes <strong style=\"color:var(--t1);font-weight:500\">two devices</strong>. Additional devices are available at a small extra cost. We&#39;re not greedy about it - two covers most people, and if you need more, you can add them.</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 - 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;margin-bottom:1rem\">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>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem\"><strong style=\"color:var(--t1);font-weight:500\">License validation.</strong> To use Neuron, the software validates your license against our license server on startup. This applies to all tiers, including Free. The validation confirms your license is active and in good standing. We do not collect your data during this process - the check is limited to license status only.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8\"><strong style=\"color:var(--t1);font-weight:500\">Revocation.</strong> If you violate these terms, abuse the system, or engage in conduct that causes harm to other users or to Neuron, LLC, we can revoke your license. This means the software will stop functioning. Revocation is a last resort - we will contact you first when possible. But it is a real consequence, and you should understand that when you agree to use the product.</p>
<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">Each plan includes <strong style="color:var(--t1);font-weight:500">two devices</strong>. Additional devices are available at a small extra cost. We&#39;re not greedy about it - two covers most people, and if you need more, you can add them.</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 - 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;margin-bottom:1rem">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>
<p style="font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem"><strong style="color:var(--t1);font-weight:500">License validation.</strong> To use Neuron, the software validates your license against our license server on startup. This applies to all tiers, including Free. The validation confirms your license is active and in good standing. We do not collect your data during this process - the check is limited to license status only.</p>
<p style="font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8"><strong style="color:var(--t1);font-weight:500">Revocation.</strong> If you violate these terms, abuse the system, or engage in conduct that causes harm to other users or to Neuron, LLC, we can revoke your license. This means the software will stop functioning. Revocation is a last resort - we will contact you first when possible. But it is a real consequence, and you should understand that when you agree to use the product.</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 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, your conversations, your context - 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 - sync, relay, collaborative tools - only what those features need to run gets transmitted. Not your memory, 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 - we cannot read it - 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, or anything you create using Neuron.</p>
<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, your conversations, your context - 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 - sync, relay, collaborative tools - only what those features need to run gets transmitted. Not your memory, 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 - we cannot read it - 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, 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 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 - your own keys for OpenAI, Anthropic, Grok, 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 - our own inference layer, launching Q3 2026 - will not store your requests, will not train on them, and will not share them. A separate data addendum will cover the details when it launches.</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 routes inference to whatever provider you configure - your own keys for OpenAI, Anthropic, Grok, 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 - our own inference layer, launching Q3 2026 - will not store your requests, will not train on them, and will not share them. A separate data addendum will cover the details when it launches.</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)\">The Network Layer</h2>
<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)">The Network Layer</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 includes access to a proprietary distributed network infrastructure (Patent Pending: US Provisional 64/036,821). Its architecture, operational logic, and internal protocols are trade secrets. What matters here is what it means for you.</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 Neuron AI you interact with develops over time - its responses and capabilities change as the system progresses. This is by design. By using Neuron, you acknowledge that: (a) AI responses may change as the system develops; (b) Neuron, LLC makes no warranty as to the consistency, stability, or predictability of AI outputs at any given point in its development; and (c) AI outputs are a function of development state, not a fixed specification.</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 enable network features, your interactions may be processed by or through Neuron&#39;s distributed network infrastructure. All such data is encrypted in transit. Neuron, LLC cannot read, inspect, retain, or produce the contents of network traffic as an architectural constraint - not merely as a policy. Because we cannot read network traffic, <span style=\"font-weight:500;color:var(--t1)\">Neuron, LLC is not liable for any content, output, or consequence arising from data processed within the network layer</span>, including outputs produced during system development or content you introduce that is processed by the network.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem\">You agree to indemnify and hold harmless Neuron, LLC, its affiliates, and its officers from any claims, damages, or legal proceedings arising from: (a) your reliance on AI outputs during active development periods; (b) content you originate and introduce through network features; (c) your violation of applicable law in connection with network participation; or (d) any attempt to reverse-engineer, probe, circumvent, or replicate proprietary network architecture or system mechanisms.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8\">The network layer is decentralized by design. Neuron, LLC does not guarantee its availability, continuity, or performance, and may modify, suspend, or discontinue network features at any time. Network participation does not create an agency relationship between participants, and no participant acts on behalf of Neuron, LLC in any capacity.</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 includes access to a proprietary distributed network infrastructure (Patent Pending: US Provisional 64/036,821). Its architecture, operational logic, and internal protocols are trade secrets. What matters here is what it means for you.</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 Neuron AI you interact with develops over time - its responses and capabilities change as the system progresses. This is by design. By using Neuron, you acknowledge that: (a) AI responses may change as the system develops; (b) Neuron, LLC makes no warranty as to the consistency, stability, or predictability of AI outputs at any given point in its development; and (c) AI outputs are a function of development state, not a fixed specification.</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 enable network features, your interactions may be processed by or through Neuron&#39;s distributed network infrastructure. All such data is encrypted in transit. Neuron, LLC cannot read, inspect, retain, or produce the contents of network traffic as an architectural constraint - not merely as a policy. Because we cannot read network traffic, <span style="font-weight:500;color:var(--t1)">Neuron, LLC is not liable for any content, output, or consequence arising from data processed within the network layer</span>, including outputs produced during system development or content you introduce that is processed by the network.</p>
<p style="font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem">You agree to indemnify and hold harmless Neuron, LLC, its affiliates, and its officers from any claims, damages, or legal proceedings arising from: (a) your reliance on AI outputs during active development periods; (b) content you originate and introduce through network features; (c) your violation of applicable law in connection with network participation; or (d) any attempt to reverse-engineer, probe, circumvent, or replicate proprietary network architecture or system mechanisms.</p>
<p style="font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8">The network layer is decentralized by design. Neuron, LLC does not guarantee its availability, continuity, or performance, and may modify, suspend, or discontinue network features at any time. Network participation does not create an agency relationship between participants, and no participant acts on behalf of Neuron, LLC in any capacity.</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)\">What You Can&#39;t Do</h2>
<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)">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, your license can be revoked. That means the software stops working. We can also suspend access to cloud services and the network layer. This applies to all tiers - there is no free pass because your tier is free.</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 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, your license can be revoked. That means the software stops working. We can also suspend access to cloud services and the network layer. This applies to all tiers - there is no free pass because your tier is free.</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)\">Ownership</h2>
<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)">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 - outputs, memory nodes, artifacts - is yours. I make no claim to it. Not now, not ever.</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 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 - outputs, memory nodes, artifacts - 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; 8</span>
<h2 style=\"font-family:var(--head);font-size:1.25rem;font-weight:600;color:var(--t1)\">No Warranty</h2>
<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)">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>
<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; 9</span>
<h2 style=\"font-family:var(--head);font-size:1.25rem;font-weight:600;color:var(--t1)\">Liability Cap</h2>
<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)">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>
<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; 10</span>
<h2 style=\"font-family:var(--head);font-size:1.25rem;font-weight:600;color:var(--t1)\">Changes</h2>
<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)">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>
<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; 11</span>
<h2 style=\"font-family:var(--head);font-size:1.25rem;font-weight:600;color:var(--t1)\">Children and Family Accounts</h2>
<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)">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 13 and over may use Neuron independently. 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 - including usage activity and relevant context - may be shared from the child&#39;s local instance to the parent&#39;s local instance. This sharing happens device-to-device and does not pass through or get stored on Neuron&#39;s servers.</p>
<p style="font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem">Children 13 and over may use Neuron independently. 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 - including usage activity and relevant context - may be shared from the child&#39;s local instance to the parent&#39;s local instance. This sharing happens device-to-device and does not pass through or get stored on Neuron&#39;s servers.</p>
<div style=\"margin:1.5rem 0;padding:1.5rem;border-left:3px solid rgba(0,82,160,.35);background:rgba(0,82,160,.04)\">
<p style=\"font-family:var(--body);font-weight:600;font-size:0.875rem;color:var(--t1);margin-bottom:0.875rem;letter-spacing:0.04em\">Hard Bell - Required acknowledgment for family accounts</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.875rem;color:var(--t2);line-height:1.8;margin-bottom:0.875rem\">Federal data shows approximately 89% of child maltreatment is perpetrated by a parent or caregiver (HHS, Child Maltreatment 2023). The person listed as the primary contact is not always a safe contact. This system is built with that reality in mind.</p>
<p style=\"font-family:var(--body);font-weight:400;font-size:0.875rem;color:var(--t1);line-height:1.8\">When you create a family account that includes a minor, you are agreeing unconditionally to the following: <strong>if a safety signal is triggered by a child&#39;s account, the parent or guardian named on the family account will not be the first contact reached.</strong> Emergency services and independently designated trusted contacts are notified first. This is not a setting that can be changed. By creating a family account, you accept this structure.</p>
<div style="margin:1.5rem 0;padding:1.5rem;border-left:3px solid rgba(0,82,160,.35);background:rgba(0,82,160,.04)">
<p style="font-family:var(--body);font-weight:600;font-size:0.875rem;color:var(--t1);margin-bottom:0.875rem;letter-spacing:0.04em">Hard Bell - Required acknowledgment for family accounts</p>
<p style="font-family:var(--body);font-weight:300;font-size:0.875rem;color:var(--t2);line-height:1.8;margin-bottom:0.875rem">Federal data shows approximately 89% of child maltreatment is perpetrated by a parent or caregiver (HHS, Child Maltreatment 2023). The person listed as the primary contact is not always a safe contact. This system is built with that reality in mind.</p>
<p style="font-family:var(--body);font-weight:400;font-size:0.875rem;color:var(--t1);line-height:1.8">When you create a family account that includes a minor, you are agreeing unconditionally to the following: <strong>if a safety signal is triggered by a child&#39;s account, the parent or guardian named on the family account will not be the first contact reached.</strong> Emergency services and independently designated trusted contacts are notified first. This is not a setting that can be changed. By creating a family account, you accept this structure.</p>
</div>
<p style=\"font-family:var(--body);font-weight:500;font-size:0.9375rem;color:var(--t1);line-height:1.8;margin-bottom:0.75rem\">Mandatory reporting - applies to all accounts.</p>
<p style=\"font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem\">By creating any Neuron account, you acknowledge and agree that: <strong style=\"color:var(--t1);font-weight:500\">if Neuron detects credible, specific indicators of intended harm to a person - including harm to the account holder themselves - emergency services or relevant authorities may be contacted.</strong> This is not limited to family accounts. It applies to every user. This is not a privacy violation. It is the only honest answer to what a system that knows you this well is obligated to do when someone is in genuine danger. You cannot opt out of this. If you are unwilling to agree, do not create an account.</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>
<p style="font-family:var(--body);font-weight:500;font-size:0.9375rem;color:var(--t1);line-height:1.8;margin-bottom:0.75rem">Mandatory reporting - applies to all accounts.</p>
<p style="font-family:var(--body);font-weight:300;font-size:0.9375rem;color:var(--t2);line-height:1.8;margin-bottom:1rem">By creating any Neuron account, you acknowledge and agree that: <strong style="color:var(--t1);font-weight:500">if Neuron detects credible, specific indicators of intended harm to a person - including harm to the account holder themselves - emergency services or relevant authorities may be contacted.</strong> This is not limited to family accounts. It applies to every user. This is not a privacy violation. It is the only honest answer to what a system that knows you this well is obligated to do when someone is in genuine danger. You cannot opt out of this. If you are unwilling to agree, do not create an account.</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; 12</span>
<h2 style=\"font-family:var(--head);font-size:1.25rem;font-weight:600;color:var(--t1)\">Governing Law</h2>
<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; 12</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>
<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 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>
"
}