PROPERTIES IO
DESIGN STANDARD · v1.0
SOURCE OF TRUTH
Standardization pass

One system for every surface of Properties IO.

Today the product ships four competing design languages across the console, playbook, and content studio. This is the single source of truth that replaces them — one neutral-zinc palette, one type system, tokenized spacing and radii, and a shared component set that works identically in light and dark. Toggle the theme above; every value on this page adapts from the same tokens.

7→1 brand greens 6→2 typefaces 4→1 token systems 3→1 radius scales
00 · What we found

The audit

Four findings, each traced to real values in the codebase, each with the fix this standard applies.

FINDING 01

The brand green drifts across every file

Seven distinct hexes all claim to be “brand green,” scattered between the console, playbook, and studio stylesheets. Buttons, links, and status dots don’t match from screen to screen.

#1db954
console --acc
#17a34a
--wf-brand-hover
#0e7a37
logo gradient
#0c8a3c
playbook light
#128a43
analysis --brand
#0f7a3b
analysis --brand-2
#0aa048
playbook --acc2
Fix
One token: --brand = #1db954. Hover and fills derive from it; green is never used as text on white — it’s a fill with dark foreground.
FINDING 02

Four token systems, same concepts

The same idea is named four different ways depending on the file.

surface
--panel · --wf-surface · --card-a · --l-surf
border
--line · --wf-border · --hair · --d-line
text
--ink · --wf-fg · --ink-strong · --l-fg
muted
--mut · --wf-fg-muted · --d-mut
FixOne semantic set — --surface / --border / --fg / --fg-muted — that flips wholesale per theme.
FINDING 03

Six typefaces, no scale

Inter, Fraunces, JetBrains Mono, IBM Plex Sans/Serif/Mono and Barlow all load; sizes are hand-tuned per component.

Fraunces IBM Plex Sans IBM Plex Serif IBM Plex Mono Barlow
34· 26· 24· 22· 21· 20· 19· 17· 16· 15.5· 15· 14.5· 14· 13.5· 13· 12.5· 11.5· 11· 10.5· 9.5· 8.5px
FixTwo families — Inter for everything, JetBrains Mono for data/labels — on an 8-step scale.
FINDING 04

Three radius scales and hand-tuned spacing

Cards use 8, 10, 11, 12, 13, 14 and 16px radii within the same views; three separate radius token sets exist (--wf-r-*, --r-sm/md/lg, and raw literals). Padding is eyeballed everywhere.

8px
10px
11px
13px
14px
16px
FixOne radius ramp (4·6·8·12·pill) and a 4px spacing base. Every component picks from the ramp — nothing bespoke.
01 · Foundations

Color tokens

Semantic, not literal. Every swatch below is var(--token) — toggle the theme and watch the same tokens remap. Components never reference a hex directly.

Surfaces
--bg
app canvas
--bg-sunken
recessed
--elevated
header / menu
--surface
cards
--surface-hover
hover state
Borders & text
--border
--border-strong
Aa
--fg
Aa
--fg-muted
Aa
--fg-subtle
Accent & state
--brand
#1db954
--brand-hover
--brand-muted
--danger
--danger-muted
02 · Foundations

Typography

Two families do all the work. Inter for interface and prose; JetBrains Mono for data, IDs, labels and code. An 8-step scale replaces the ~20 ad-hoc sizes.

Display 30Inter 600 · -0.02em
Title 22Inter 600
Heading 17Inter 600
Body-lg 15Inter 400
Body 14Inter 400 · default
Small 13Inter 400
Label 10.5 · monoMono 700 · 0.14em
Aa
Inter
400 · 500 · 600 · 700
Interface, headings, body copy.
A1
JetBrains Mono
400 · 500 · 700
Data, IDs, prices, labels, code.
03 · Foundations

Spacing & radius

A 4px spacing base and a five-stop radius ramp. Padding, gaps and corners all snap to these — no more 11px-here, 13px-there.

Spacing · 4px base
4 / 1
8 / 2
12 / 3
16 / 4
24 / 6
32 / 8
48 / 12
Radius ramp
xs · 4
sm · 6
md · 8
lg · 12
pill
Elevation
shadow-1
shadow-2
shadow-3
04 · Components

The shared set

One button, one badge, one card, one table — built only from the tokens above. These replace the divergent versions currently living in each stylesheet.

Buttons
Badges & status
Active Draft Overdue RET-8630 92
Retail Medical Office Industrial
Inputs
Search properties… /
8630 Medical Office Blvd
rest · focus (brand ring)
Segmented / tabs
Record Analysis Market
property photo Active RET-8630
The Shops at Smithville
8630 Medical Office Blvd, TX
Size
42.5k
Price
$8.2M
Score
92
Property
Type
City
Score
The Shops at Smithville
8630 Medical Office Blvd
Retail
Smithville
92
Northgate Medical
210 Northgate Dr
Medical Office
Austin
88
Bridgeway Logistics
55 Freight Line Rd
Industrial
Dallas
74
05 · Applied

Playbook, restyled to the standard

The Playbook page today forks its own --d-*/--l-* palettes, a bespoke green, and its own radius scale. Here it is rebuilt from the shared tokens only — the exact same section header, run rail, key-value table and stat cards, now consistent with every other surface and theme-correct in one toggle.

Removed: --d-* / --l-* fork #128a43 green Fraunces display --r-sm/md/lg (6/10/14)
Playbook
Smithville · Retail
The Shops at Smithville
8630 Medical Office Blvd
7 sectionsLive
Sections
01Overview
02Demand drivers
03Tenant fit
04Risk & timing
01 · Overview

Smithville’s retail corridor is tightening

Trade-area vacancy fell to 4.1% as three anchors renewed early. The 8630 corridor now absorbs space faster than any submarket in the county — a strong window for repositioning the pad sites.

Trade area
3-mile radius · 61,400 people
Median HHI
$84,200
Vacancy
4.1% ▼ 1.3pt YoY
Absorption
142k sf
Asking rent
$31 /sf
Fit score
92