SwansonX
Internal

Style guide

What actually exists in the build. Noindex, not in the nav, and not in the sitemap. If a component isn't on this page it probably shouldn't appear on a page either.

Color

Tokens live in src/styles/tokens.css, lifted from the v1 stylesheet rather than retyped. Semantic tokens (--bg, --heading, --accent) remap under [data-theme]; raw --c-* values never change.

--c-ink

#14120E · Near-black, warm

--c-ink-soft

#2A2620 · Softer ink

--c-bone

#FAF8F4 · Ground, warm paper

--c-bone-2

#F2EEE7 · Tinted sections

--c-paper

#FFFFFF · Cards, surfaces

--c-grey

#6B6357 · Muted text

--c-line

#E2DCD1 · Borders

--c-line-2

#CFC6B7 · Stronger borders

--c-blue-deep

#2B4C6F · Accent, light theme

--c-blue-pale

#A8C4DE · Accent, dark theme

--c-green

#0E7A55 · Client-work tag

--c-amber

#8A6A3B · Reserved

Type

Display is Instrument Serif, body is Inter. Both are self-hosted and preloaded. Headings are weight 400 — never bold the serif.

Heading one, clamped

Heading two

Heading three

A lede. Slightly larger, muted, capped at 62ch so it never runs the full width of a desktop screen.

Body copy. Plain English, first person, no exclamation marks. Any technical term gets explained in the same sentence or it doesn't appear.

An eyebrow

Buttons and trust rows

  • Fixed price, in writing
  • You own the code and data
  • No contract, cancel any month
  • I reply within 24 hours.

Cards and tags

A card

Surface, one border, no shadow.

Work tags

Software and toolsClient work
My businessConcept build

Notice

Concept build. Nobody commissioned this.

Prices, from config only

Every number below is read from src/data/pricing.ts. No SwansonX price is hard-coded anywhere in the site, including here.

One module

$950

The single worst part of your week. A lead inbox, or quoting, or booking — one thing, built properly, working on its own.

Two or three modules

$1,950

The pieces that only make sense together. Enquiries feeding jobs, or quotes feeding follow-up.

Back Office

from $2,995

Everything connected: leads, customers, jobs, booking, review requests and a dashboard over the top.

Larger than that

Quoted in writing

Priced before anything starts, the same as every other number here. No hourly surprises.

  • Website from $1,495, landing page from $1,195
  • Partner Plan $300/month, Site Care $49/month
  • Extra work is quoted before I start.
  • Nulls render as nothing, never as placeholder text. paybackFloor and hourlyRate are null, so no claim about either appears on any page. supportResponse was null until Sean set it on 11 September 2026; the Partner Plan page still guards it, so emptying it removes the claim again.
  • Stack named in data: Convex, Vercel.

Steps, tables and FAQ

  1. A step

    Numbered by CSS counter, so the markup stays a plain list.

  2. Another step

    Used on the process, guide and trade pages.

 BeforeAfter
A rowWhat it wasWhat it is
AnotherScrolls sideways on a phoneInside its own overflow box
Why no FAQPage schema?
Brief section 10 bans it, along with Review and AggregateRating. This component deliberately emits no JSON-LD.
Why plain details elements?
They work without JavaScript and they are keyboard-accessible for free.

Rules that aren't visual

  • First person, always. Never "we" or "our team".
  • US English spelling.
  • Numbers over adjectives. "$950, half up front" beats "affordable".
  • Say the downside. What isn't included, and when the answer is to do nothing.
  • One testimonial on the whole site, Kelly M., verbatim, on the homepage only.
  • Concept builds say "Concept build" wherever they appear.
  • No invented clients, metrics, savings figures, integrations or local facts.
Free homepageContact