Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion src/components/Header.astro
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ const navKey: Record<string, Parameters<typeof t>[0]> = {
overview: "nav.overview",
apps: "nav.apps",
capabilities: "nav.how",
pricing: "nav.pricing",
roadmap: "nav.roadmap",
};
---
Expand Down
251 changes: 0 additions & 251 deletions src/components/HomeContent.astro
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import { getCollection } from "astro:content";
import CTAs from "~/components/CTAs.astro";
import CornerMarks from "~/components/CornerMarks.astro";
import Divider from "~/components/Divider.astro";
import EmailSignupForm from "~/components/EmailSignupForm.astro";
import Footer from "~/components/Footer.astro";
import Gallery from "~/components/Gallery.astro";
import GeoAccent from "~/components/GeoAccent.astro";
Expand Down Expand Up @@ -38,8 +37,6 @@ const pillarShapes = ["tetra", "diamond", "ring"] as const;
const capShapes = ["triangle", "diamond", "ico", "tetra", "ring", "triangle"] as const;

const insideHref = localizePath("/apps", lang);
const downloadsHref = localizePath("/downloads", lang);
const contactHref = "mailto:founder@getbrainstorm.online";
---

<CornerMarks />
Expand Down Expand Up @@ -197,75 +194,6 @@ const contactHref = "mailto:founder@getbrainstorm.online";
</ol>
</Section>

<Divider />

<!-- Pricing -->
<Section
id="pricing"
eyebrow={copy.pricing.eyebrow}
title={copy.pricing.title}
lede={copy.pricing.lede}
>
<ul class="plans">
{
copy.pricing.tiers.map((tier) => (
<li class:list={["plan", { "plan--live": tier.available }]}>
<div class="plan-head">
<h3 class="plan-name">{tier.name}</h3>
{!tier.available && <span class="plan-badge mono">{copy.pricing.comingBadge}</span>}
</div>
<p class="plan-price">
<span class="plan-amount">{tier.price}</span>
<span class="plan-per">{tier.per}</span>
</p>
{tier.annual ? (
<p class="plan-annual mono">{tier.annual}</p>
) : (
<p class="plan-annual mono" aria-hidden="true">
&nbsp;
</p>
)}
<p class="plan-tagline">{tier.tagline}</p>
<ul class="plan-features">
{tier.features.map((f) => (
<li>{f}</li>
))}
</ul>
{tier.available && (
<a class="plan-cta" href={downloadsHref}>
{t("cta.download")}
</a>
)}
</li>
))
}
</ul>

<div class="plan-enterprise">
<div class="plan-ent-copy">
<h3 class="plan-ent-title">{copy.pricing.enterprise.title}</h3>
<p class="plan-ent-body">{copy.pricing.enterprise.body}</p>
</div>
<a class="plan-ent-cta" href={contactHref}>{copy.pricing.enterprise.cta}</a>
</div>

<p class="plan-freenote">{copy.pricing.freeNote}</p>
<p class="plan-pricesnote mono muted">{copy.pricing.pricesNote}</p>

<div class="plan-waitlist">
<p class="plan-waitlist-lede">{copy.pricing.waitlist.lede}</p>
<EmailSignupForm
endpoint="/api/waitlist"
trackEvent="Pricing Waitlist Signup"
successLabel={copy.pricing.waitlist.success}
cta={copy.pricing.waitlist.cta}
emailLabel={copy.pricing.waitlist.emailLabel}
placeholder={copy.pricing.waitlist.placeholder}
idSuffix="pricing"
/>
</div>
</Section>

<!-- Closing CTA -->
<section id="download" class="closer">
<div class="container closer-inner glow-ring">
Expand Down Expand Up @@ -809,185 +737,6 @@ const contactHref = "mailto:founder@getbrainstorm.online";
color: var(--fog-2);
}

/* ── Pricing ────────────────────────────────────────── */
.plans {
list-style: none;
padding: 0;
margin: 0;
display: grid;
/* minmax(0) so a nowrap badge can't inflate a track and squeeze its
siblings (the FR "Bientôt disponible" badge did exactly that). */
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: var(--space-5);
align-items: stretch;
}
@media (max-width: 1020px) {
.plans {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
@media (max-width: 560px) {
.plans {
grid-template-columns: 1fr;
}
}
.plan {
display: flex;
flex-direction: column;
gap: var(--space-2);
padding: var(--space-5);
background: var(--surface-card);
border: 1px solid var(--hairline);
border-radius: 14px;
transition:
border-color var(--dur-base) var(--ease-out),
transform var(--dur-base) var(--ease-out),
box-shadow var(--dur-base) var(--ease-out);
}
.plan:hover {
border-color: var(--accent-border);
transform: translateY(-2px);
box-shadow: var(--card-shadow);
}
.plan--live {
border-color: var(--accent-border);
}
.plan-head {
display: flex;
align-items: center;
justify-content: space-between;
gap: var(--space-2);
}
.plan-name {
font-size: var(--text-lg);
font-weight: 500;
color: var(--paper);
}
.plan-badge {
font-size: var(--text-mono);
color: var(--cyan-glow);
letter-spacing: var(--tracking-eyebrow);
white-space: nowrap;
}
.plan-price {
display: flex;
align-items: baseline;
gap: var(--space-2);
}
.plan-amount {
font-size: var(--text-2xl, 2rem);
font-weight: 550;
color: var(--paper);
white-space: nowrap;
}
.plan-per {
font-size: var(--text-sm);
color: var(--fog-3);
}
.plan-annual {
font-size: var(--text-mono);
color: var(--fog-3);
}
.plan-tagline {
font-size: var(--text-sm);
color: var(--fog-2);
min-height: 2.6em;
}
.plan-features {
list-style: none;
padding: 0;
margin: 0;
display: flex;
flex-direction: column;
gap: var(--space-2);
font-size: var(--text-sm);
line-height: var(--leading-snug);
color: var(--fog-2);
flex: 1;
}
.plan-features li {
padding-left: 1.1em;
position: relative;
}
.plan-features li::before {
content: "◇";
position: absolute;
left: 0;
color: var(--cyan-glow);
font-size: 0.7em;
top: 0.35em;
}
.plan-cta {
margin-top: var(--space-4);
align-self: start;
font-size: var(--text-sm);
font-weight: 500;
color: var(--cyan-bright);
}
.plan-cta:hover {
color: var(--cyan-core);
}
.plan-enterprise {
margin-top: var(--space-6);
padding: var(--space-5);
border: 1px solid var(--hairline);
border-radius: 14px;
display: flex;
align-items: center;
justify-content: space-between;
gap: var(--space-6);
}
@media (max-width: 820px) {
.plan-enterprise {
flex-direction: column;
align-items: flex-start;
gap: var(--space-3);
}
}
.plan-ent-title {
font-size: var(--text-lg);
font-weight: 500;
color: var(--paper);
margin-bottom: var(--space-1);
}
.plan-ent-body {
font-size: var(--text-sm);
line-height: var(--leading-snug);
color: var(--fog-2);
max-width: 62ch;
}
.plan-ent-cta {
flex-shrink: 0;
font-size: var(--text-sm);
font-weight: 500;
color: var(--cyan-bright);
white-space: nowrap;
}
.plan-ent-cta:hover {
color: var(--cyan-core);
}
.plan-freenote {
margin-top: var(--space-5);
font-size: var(--text-base);
color: var(--fog-2);
max-width: 68ch;
}
.plan-pricesnote {
margin-top: var(--space-2);
font-size: var(--text-mono);
}
.plan-waitlist {
margin-top: var(--space-5);
display: flex;
align-items: center;
gap: var(--space-4);
flex-wrap: wrap;
}
.plan-waitlist-lede {
font-size: var(--text-base);
color: var(--fog-2);
}

/* ── Closer ─────────────────────────────────────────── */
.closer {
padding: var(--space-10) 0 var(--space-9);
Expand Down
1 change: 0 additions & 1 deletion src/content/site.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,5 +46,4 @@ export const nav = [
{ label: "Apps", href: "/apps", section: "apps" },
{ label: "How it works", href: "/#capabilities", section: "capabilities" },
{ label: "Roadmap", href: "/#roadmap", section: "roadmap" },
{ label: "Pricing", href: "/#pricing", section: "pricing" },
] as const;
Loading