Style guide

Every component the site has, rendered from the real templates with sample data, and the tokens read straight out of styles.css. If a thing is not on this page, the site does not have it yet. Use the theme switcher in the footer, or the Themes section below, to check the other schemes.

Tokens

Light value, then the dark override where one exists. Templates and rules use these names only.

Colors

TokenLightDark
--brand #110e08 #000000
--brand-ink #ffffff —
--brand-ink-2 #dfe6f5 —
--brand-ink-muted #cdd7ee —
--brand-wash rgba(255, 255, 255, .12) —
--brand-wash-2 rgba(255, 255, 255, .16) —
--brand-line rgba(255, 255, 255, .4) —
--accent #ccff00 #ccff00
--accent-2 #7ea800 #7ea800
--ink-2 #35322d #35322d
--on-ink #ffffff —
--on-ink-muted rgba(255, 255, 255, .62) —
--on-ink-faint rgba(255, 255, 255, .14) —
--on-ink-line rgba(255, 255, 255, .4) —
--on-lime-muted rgba(17, 14, 8, .66) —
--accent-ink #110e08 #110e08
--up #0a9d4f #2fcf7a
--down #c0392b #ff6b5f
--on-signal #ffffff —
--bg #ffffff #110e08
--surface #ffffff #1c180d
--surface-2 #f1f3f4 #35322d
--text #110e08 #f4f5f6
--link #110e08 #ccff00
--muted #585e63 #9aa1a7
--border #d7dadd rgba(255, 255, 255, .13)
--graph-node #2f4a9e #7c9cf5
--graph-link #8a97ad #5a6a85

Shadows

TokenLightDark
--shadow none 0 1px 2px rgba(0, 0, 0, .3), 0 10px 30px rgba(0, 0, 0, .35)
--shadow-sm none 0 1px 2px rgba(0, 0, 0, .3)

Sizes

TokenLightDark
--radius 4px —
--radius-sm 4px —
--radius-pill 36px —
--maxw 1080px —

Fonts

TokenLightDark
--font "Hanken Grotesk", system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif —
--font-serif "Newsreader", Georgia, "Times New Roman", serif —

Type

Display, Newsreader 500

.display

Page head, 2.5rem serif

.page-head h1

Heading two, card titles

h2 .card-title

The lede: one sentence under a headline, muted, 1.08rem, max 60 characters wide.

.lede

Body text in Hanken Grotesk at 16px, line height 1.55. Numbers in tables use tabular figures 1,234.56 so columns line up.

body

Muted text for labels and secondary lines.

.muted

Small text, .85rem.

.small

Inline code on a surface.

code

Symbol and name

.stock-symbol .stock-name

Buttons

One primary action per screen. Buy is --up, Sell is --down; both also carry a word, never color alone.

Pills and range buttons

buy sell

Price

Ticker (dashboard)

K5M $4.98 ▲ $0.03 (0.61%)
Best ask
$4.98
Market cap
$498,000
Circulating
24,810 / 100,000

Quote block (stock page)

$4.98
▲ $0.03 (0.61%) today, vs last close of $4.95
▼ $0.01 (0.20%) vs previous trade

Direction

▲ up · ▼ down · ■ flat .up .down .flat, always with the glyph

Stat

Market cap
$498,000
at the last trade
Circulating
24,810
of 100,000
Trading days
1,536
since Jan 26, 2008

Key / value list

Previous close
$4.95
52-week high
$5.32 Feb 22, 2026
First trade
Jan 26, 2008

Identity

Shareholder #1,225

Douglas Dollars

Trader renews Jan 1, 2027

Tier badges

Free Trader Pro Board

"Since DATE" joins the kicker once the engine exposes created_at (kmikeym-engine#18).

Tables

Order book

Bids (buyers)

PriceShares
$4.26 10
$4.25 11
$4.04 10
and 1 more price level

Asks (sellers)

PriceShares
$4.98 48.25
$4.99 2.03
$5.20 4
and 1 more price level

Trades

WhenPriceShares
2026-08-26 20:24:14 $4.98 8.11
2026-08-26 01:50:19 $4.95 0.95
2026-08-26 01:50:19 $4.98 1.59

Empty state

WhenPriceShares
No trades yet.

Cards and grids

Card

Surface, radius, shadow from tokens.

Three up

.grid .grid-3, one column on phones.

Two up

.grid .grid-2 for book and tape.

Hero

The dashboard opener: headline plus lede on a brand surface.

Forms

Messages

Bought 5 shares for $24.90.
Live market data is temporarily unavailable.
You cannot sell more shares than the number in outstanding buy offers.

Chart

Up

Down

Loading

Loading price history…

Empty

No trades yet

Inline SVG from Support\Chart and the same drawing in app.js; no library. Colors follow --up, --down, --accent.

Bands (home page)

Ink band

Serif only at display sizes. Lime for the one action.

Become a shareholder

Paper band

Data in ink. Waffle, tape.

Lime band

Ink on lime. The depth chart lives here.

Ink button on lime

Themes

A theme is one file of token values under public/assets/themes/ and nothing else. <html data-theme> selects it; the choice is kept per browser. If a theme needs a template change, the component is wrong, not the theme.

Rules

Debt: literal colors still in styles.css

2 outside the token blocks (baseline 2; the test fails if it grows). What is left is the two off-canvas nav scrims. Each one is a token waiting to be named.

LineValue
138rgba(0, 0, 0, .35)
147rgba(0, 0, 0, .5)

Not built yet

Named in the plan (kmikeym-web#8), no component exists. When one is built it appears above by construction.