dev → stage: pricing buttons, API keys, enterprise contacts #92

Merged
will.anderson merged 9 commits from dev into stage 2026-05-11 18:06:07 +00:00
2 changed files with 71 additions and 3 deletions
+7 -1
View File
@@ -513,7 +513,9 @@ fn account_css() -> String {
.api-key-help-body a { color: var(--navy-65); text-decoration: underline; text-underline-offset: 2px; }
.api-key-help-body a:hover { color: var(--navy); }
.api-key-note { font-size: .75rem; font-weight: 300; color: var(--t3); margin-top: .625rem; line-height: 1.55; padding: .5rem .75rem; background: var(--bg2); border-left: 2px solid var(--navy-b); }
.api-key-note a { color: var(--navy-65); text-decoration: underline; text-underline-offset: 2px; }"
.api-key-note a { color: var(--navy-65); text-decoration: underline; text-underline-offset: 2px; }
.api-key-model-note { font-size: .8125rem; font-weight: 300; color: var(--t2); line-height: 1.65; padding: .75rem 1rem; background: var(--navy-d); border-left: 2px solid var(--navy); margin-bottom: 1.5rem; }
.api-key-model-note strong { font-weight: 600; color: var(--t1); }"
"<style>" + css + "</style>"
}
@@ -914,6 +916,10 @@ fn account_api_keys_section() -> String {
"Add your own AI provider keys. Neuron uses them directly &#8212; your keys, your models, your data."
)
) +
el_div(
"class=\"api-key-model-note\"",
"<strong>For best performance, use a reasoning model.</strong> o4-mini or o3 (OpenAI) &#183; Claude Sonnet 4 (Anthropic) &#183; Gemini 2.5 Pro (Google) &#183; Grok-3 (xAI). You choose the model in the app &#8212; any model works, reasoning models are where Neuron shines. <a href=\"#\" style=\"color:var(--navy-65);text-decoration:underline;text-underline-offset:2px\">Neuron Inference</a> &#8212; our own model layer, priced below the major APIs &#8212; launches Q3 2026 and becomes the default."
) +
providers +
el_p("id=\"api-keys-msg\" style=\"display:none;font-size:.8rem;margin-top:.75rem\"", "")
)
+64 -2
View File
@@ -189,6 +189,22 @@ fn enterprise() -> String {
)
)
let contact_block: String = el_div(
"class=\"ent-contact-block reveal\"",
el_div(
"class=\"ent-contact-card\"",
el_p("class=\"ent-contact-role\"", "Sales") +
el_a("mailto:enterprise@neurontechnologies.ai", "class=\"ent-contact-email\"", "enterprise@neurontechnologies.ai") +
el_p("class=\"ent-contact-desc\"", "Pricing, deployment options, and enterprise agreements.")
) +
el_div(
"class=\"ent-contact-card\"",
el_p("class=\"ent-contact-role\"", "Security") +
el_a("mailto:security@neurontechnologies.ai", "class=\"ent-contact-email\"", "security@neurontechnologies.ai") +
el_p("class=\"ent-contact-desc\"", "Vulnerability disclosure, compliance review, and security documentation.")
)
)
let enterprise_box: String = el_div(
"class=\"enterprise-box reveal\"",
el_p("class=\"ent-who-label\"", "Who I work with") +
@@ -203,7 +219,53 @@ fn enterprise() -> String {
enterprise_inquiry_form()
)
let style_css: String = ".ent-inquiry-form {
let style_css: String = ".ent-contact-block {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1rem;
margin-bottom: 2.5rem;
}
.ent-contact-card {
padding: 1.5rem;
border: 1px solid rgba(0,82,160,.18);
background: rgba(0,82,160,.03);
display: flex;
flex-direction: column;
gap: .4rem;
}
.ent-contact-role {
font-family: var(--body);
font-size: .65rem;
font-weight: 600;
letter-spacing: .16em;
text-transform: uppercase;
color: var(--navy);
margin-bottom: .1rem;
}
.ent-contact-email {
font-family: var(--body);
font-size: .9375rem;
font-weight: 500;
color: var(--t1);
text-decoration: none;
border-bottom: 1px solid rgba(0,82,160,.25);
padding-bottom: .1rem;
transition: border-color 200ms, color 200ms;
width: fit-content;
}
.ent-contact-email:hover { color: var(--navy); border-color: var(--navy); }
.ent-contact-desc {
font-family: var(--body);
font-size: .8125rem;
font-weight: 300;
color: var(--t3);
line-height: 1.55;
margin-top: .25rem;
}
@media (max-width: 600px) {
.ent-contact-block { grid-template-columns: 1fr; }
}
.ent-inquiry-form {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1rem;
@@ -216,7 +278,7 @@ fn enterprise() -> String {
el_section(
"id=\"enterprise\" aria-label=\"Enterprise\"",
el_div("class=\"container\"", header + enterprise_cap_cards() + enterprise_box) +
el_div("class=\"container\"", header + enterprise_cap_cards() + contact_block + enterprise_box) +
"<style>" + style_css + "</style>" +
el_script_src("/js/enterprise.js", true)
)