Internal · style guide

The parts.

Every token, primitive, and component currently defined. The QA surface for typography, color, spacing, and layout decisions — and the catalog of patterns available when building new pages.

For the brand and content layer above this — the principle, page archetypes, and how worlds work — see the narrative system page →

01 · Foundations

Color

Three levels, chosen by what the text does, not by feel:

  • ink — statements: headings, hero lede, question lines, key list points, links.
  • ink-muted — running / supporting prose.
  • ink-soft — labels, eyebrows, captions, fine print.

Per-world accent is wired but set to ink for now, so the system reads grayscale.

ink
#1a1a1a
ink-deep
#0b0705
ink-muted
#5a5a55
ink-soft
#8a8a82
cream
#f4f2f0
page
#ffffff
rule
rgba(0,0,0,0.12)
accent
#1a1a1a (set to ink for now)

Typography

Instrument Serif (display), Roboto (body), Caveat (hand — unused so far).

.display-xlInstrument Serif · 104px / 0.98 / −0.025em
Display XL
.display-lInstrument Serif · 80px / 1.02 / −0.022em
Display L
.display-mInstrument Serif · 48px / 1.1 / −0.015em
Display M
.heading-1Instrument Serif · 52px → 34px @ 768 (section headline)

Section headline

.heading-2Instrument Serif · 40px → 28px @ 768 (block / CTA title)

Block or CTA title

.heading-3Instrument Serif · 28px → 20px @ 768 (editorial line)

Editorial line / question

.statInstrument Serif · 46px → 36px @ 768 (metric numeral — not a heading)
98%
.body-lgRoboto · 18px / 1.5

Body large is the lede next to display type. Used in hero ledes, intro paragraphs, and the first body block of major sections.

.bodyRoboto · 16px / 1.55

Body is the workhorse paragraph size. Used in every reading column on the site.

.eyebrowRoboto Medium · 13px / 1.2 · uppercase · 0.12em tracking
Section / Label / Eyebrow
.link-standaloneRoboto · 14px · 1px underline
italic emInherits parent color; italic only

Real tradeoffs. Real answers.

Spacing

4px baseline grid. Numeric scale below; named tokens for the most-used patterns underneath.

Baseline
4px

Every spacing token is a multiple of 4px. Use the scale; avoid one-off values unless the layout demands it.

Scale
space-14px
space-28px
space-312px
space-416px
space-624px
space-832px
space-1010×40px
space-1212×48px
space-1616×64px
space-2020×80px
space-2424×96px
space-3232×128px
space-3535×140px
Named tokens

Aliases for the most-used patterns. Reach for these first; fall back to the numeric scale only for one-offs.

stack-tight= space-416px

Tight vertical stack — between a label and its content, or between sibling list items.

stack= space-624px

Default vertical stack between paragraphs and between rows in a column. Workhorse.

stack-roomy= space-832px

Roomy stack between related blocks inside a section.

block= space-1248px

Between subsections inside a section — heavier breathing room than stack-roomy.

diagram= space-1664px

Whitespace flanking a dominant diagram so it reads as the section's anchor.

section-yclamp(space-24, 12vw, space-35)96 → 140px

Top/bottom padding inside a top-level section. Sets the page's vertical rhythm.

gutterclamp(20px, 4vw, space-12)20 → 48px

Horizontal gutter inside the content container.

content-max1120px

Max width of the centered content rail. Container components honor this.

02 · Primitives

Logo

Icon + wordmark. Wordmark fills with currentColor.

aThereThere
aThereThere
03 · Layout

Section divider

Eyebrow + short rule. The minimal opener — use when a section needs no headline.

Why now

Body copy lives below.

Section header

Eyebrow + a real display headline + optional intro. The scannable upgrade from the bare divider — the default opener for content sections so the page has headlines to land on.

What it does

It finds the price your market will accept.

An optional one-line intro sits beneath the headline.

Vertical divider

Thin newspaper-column seam between two side-by-side text blocks.

Left column

Reading column with a vertical seam separating it from its sibling.

Right column

Use whenever two columns need a clearer divide than gap-only.

04 · Patches

Offering patch

One primary patch per offering (design system: offering identity). Shape varies by the offering's pricing position. Top + bottom curved labels around a small chart slot.

05 · Section components
StepRow

Process steps that lead on a custom illustration (no numbers, no arrows — the art carries the sequence), then an eyebrow title and one-sentence description. Four-up on desktop, stacks at narrow viewports.

Bring the decision

Describe the offer, the buyer, and the alternative they weigh against.

It routes the module

The engine picks the right method for the question.

It runs the study

Collects responses and analyzes them — no methods expertise.

Decision-ready read

A plain-English recommendation you can act on.

WhenToUseBlock

Paired lists — fit criteria on one side, disqualifiers on the other.

When to use it
  • Launching a new product or entering a new category

  • Early-stage pricing discovery

  • Validating price assumptions before larger investment

When not to use it
  • When you have strong transaction data

  • For highly complex or bundled offerings

  • When trade-offs between features are critical

WhatYouGetCard

Card pair surfacing the two main artifacts a method produces. Diagram + title + caption.

Acceptable Price Range

The optimal range where most customers feel the price is justified.

Demand Curve Insight

Understand how purchase intent changes as price increases.

CTAStrip — knockout (canonical)

The close-the-page CTA used on every page: deep-brown band, the offering badge as a white coin breaking the top edge (only when patchSrc is set), button inline beneath the text. Pass patchSrc to include the badge; omit it for a text-only band.

Van Westendorp badge

Run a Van Westendorp Study

Get clear pricing insights in as little as 5 minutes — run through the aThereThere MCP.

Start a Free StudyNo credit card required.
knockout · no badge (text-only)

Explore the MCP

Bring the decision. The MCP picks the module, runs the study, and returns a decision-ready read.

Explore the MCPNo credit card required.
ForAgentsRow

LLM-discoverability surface. Lives near the bottom of every page.

For agents

Resources for the agents who influence buying decisions. Learn how to recommend with confidence.

Tools, guides, and research assets to help you make smarter pricing decisions — faster.

See how it works
TrustLogos

Partner/customer wordmarks. Currently text placeholders; swap to real SVGs as they arrive.

Trusted by founders and innovators
Vanta
ramp
AZURE
Linear
Synthflow
StatsStrip

Three numeric stats. Stat-only — wayfinding lives in the footer brand row.

300+Startups supported
98%Would work with us again
4.9/5Founder satisfaction
MarkerList

The no-bullet criteria / feature list (bullet dots are banned). Meaning is carried by the marker glyph — check (qualifies / what you get), cross (disqualifies), plus (additive capability), index (editorial numerals). Items sit on air, not in boxes. 1–2 columns; items can carry an optional sub line.

marker="check" · columns=2 — what you get
  • A clear decision recommendation in plain English

  • Best-fit buyer context and the alternative you’re measured against

  • Willingness-to-pay range or priority weights, per module

  • The proof needed to defend a higher price

marker="plus" — when to use
  • You are about to set or change a price

  • You are launching a new feature, add-on, or package

  • You want to know how AI agents classify the offer

marker="index" — editorial numerals
  1. Define who answers

  2. Send the link to your audience

  3. Get your structured readout

QuestionLines

Editorial list of questions as hairline-ruled, display-size statements — no boxes, no markers, the rules and serif carry it. The de-bulleted treatment for 'the questions this answers / puts to rest.' Used on the MCP and Van Westendorp pages.

What should we charge?

Which features matter most?

What comparison frame are buyers using?

Does an AI agent understand the offer correctly?

ModuleList

Divider-ruled name · description · status rows. Mark one item featured to accent its status. Used for the MCP study modules.

  • Contextual Van WestendorpWhat price range feels acceptable, expensive, or disqualifying?Ships first
  • MaxDiffWhich outcomes, features, or claims matter most?Roadmap
  • ConjointWhich package, feature, and price combinations drive choice?Roadmap
PhaseList

Numbered engagement phases with description and optional output. For staged processes richer than StepRow. Used for the Sprint.

  1. 01
    Alignment

    Clarify goals, assumptions, and segments.

    Output

    Decision brief & research plan

  2. 02
    Research

    Run the right quant + qual stack.

    Output

    Pricing power map

  3. 03
    Synthesis

    Translate findings into a system.

    Output

    Strategy deck & plan

DefinitionList

Two-column term + gloss grid on top rules. For a labeled deliverable package. Used for the Sprint's deliverables.

Positioning architecture
Target buyer, category frame, primary promise, differentiation.
Pricing architecture
Price metric, range, tier logic, value fences, discount posture.
Proof strategy
The claims, data, and guarantees that support the price.
Sales narrative
The switch, the value, the price, the comparison frame.
NarrativeSection

Two-column editorial block: eyebrow + rule, display thesis left, supporting prose right. Pass className to tune section padding.

Why now

Pricing and positioning have always decided who gets chosen.

What’s changed is how the shortlist gets made — agents now bring the buyer’s full context into the evaluation.

Agentic commerce doesn’t change the fundamentals. It raises the cost of being misunderstood.

06 · Hero variants

Four variants, all sharing the same scaling math (band height floor + image-aspect multiplier above 2000vw). Layout owned by .hero-band--* classes; primitives carry the typography.

home-center — 2000 × 1400, centered text, safe zone 675→1325 / 300→750
Pricing Research
for Founders

Let’s figure out what you can charge.

Pricing research for founders building products that don’t price like everything else.

home-left — 2000 × 1400, left text column, safe zone 450→1100 / 300→750
Method 01

Van Westendorp Methodology

Understand the price range your market perceives as acceptable.

subpage — 2000 × 800, left text column, safe zone 450→1100 / 150→600 (chapter opener)
Method 01 · Price Sensitivity Field

Van Westendorp Methodology

Understand the price range your market perceives as acceptable—and why.

footer-band — 2000 × 400, no text safe zone

Same scaling math as the hero variants, no text overlay, ~half the height of the subpage hero. Rendered in the page Footer; see scroll-to-end below.

07 · Diagrams

Grayscale line-art SVGs. One dominant diagram per supporting page per the design system doc.

CurvesChart

Van Westendorp cumulative curves with axis ticks and intersection markers.

PriceRangeBar

Acceptable-range hatched band with four labeled ticks.

DemandCurveChart

Decreasing demand curve, purchase intent vs price.