Color

Semantic color on a soft page canvas: --bg-page as the field, --bg / --bg-elevated as floating surfaces, plus pastel chart accents.

Semantic tokens

NameTokenLightDark
Backgrounds
Page Backgroundvar(--bg-page)
--canvas → --sand-1 #fcfdfc
--sand-1 #111210
Canvasvar(--canvas)
--sand-1 #fcfdfc
--sand-1 #111210
Backgroundvar(--bg)
--surface #FFFFFF #ffffff
--sand-2 #181917
Background Elevatedvar(--bg-elevated)
--surface #ffffff
#1b1d1a
Surface Sunkenvar(--surface-sunken)
--sand-2 #f8faf8
--sand-2 #181917
Background Subtlevar(--bg-subtle)
--surface-sunken #f8faf8
--sand-2 #181917
Background Mutedvar(--bg-muted)
--sand-3 #eff1ef
--sand-3 #212220
Background Hovervar(--bg-hover)
ink 4%
--sand-4 #282a27
Background Activevar(--bg-active)
ink 7%
--sand-5 #2f312e
Text
Textvar(--text)
--ink → --sand-12 #1d211c
--sand-12 #eceeec
Text Secondaryvar(--text-secondary)
--ink-secondary → --sand-11 #60655f
--sand-11 #afb5ad
Text Tertiaryvar(--text-tertiary)
--ink-faint → --sand-9 #898e87
--sand-9 #687066
Accentvar(--accent)
--sand-12 #1d211c
--sand-12 #eceeec
Borders
Bordervar(--border)
--sand-6 #d7dad7
--sand-6 #383a36
Border Hovervar(--border-hover)
--sand-7 #cccfcc
--sand-7 #454843
Border Focusvar(--border-focus)
--sand-8 #b9bcb8
--sand-8 #5c625b
Status
Successvar(--success)
--green-11 #218358
--green-11 #3dd68c
Errorvar(--error)
--red-11 #ce2c31
--red-11 #ff9592
Infovar(--info)
--blue-11 #3a5bc7
--blue-11 #9eb1ff
Warningvar(--warning)
--sand-10 #7f847d
--sand-10 #767d74
Charts
Chart Cashvar(--chart-cash)
--green-11 #218358
--green-11 #3dd68c
Chart Investmentsvar(--chart-investments)
--green-8 #5bb98b
--green-8 #2f7c57
Chart Propertyvar(--chart-property)
--green-5 #c4e8d1
--green-5 #174933
Chart Liability (CC)var(--chart-liability-cc)
--red-6 #fdbdbe
--red-6 #72232d
Chart Liability (Loans)var(--chart-liability-loan)
--sand-11 #60655f
--sand-11 #afb5ad
Chart Pastel 1var(--chart-pastel-1)
#c5b8e8
#c5b8e8
Chart Pastel 2var(--chart-pastel-2)
#b8e0d2
#b8e0d2
Chart Pastel 3var(--chart-pastel-3)
#c5d4b8
#c5d4b8
Chart Pastel 4var(--chart-pastel-4)
#f0d4b8
#f0d4b8
Chart Pastel 5var(--chart-pastel-5)
#b8c8e8
#b8c8e8
Chart Progress Fillvar(--chart-progress-fill)
--green-8 #5bb98b
--green-8 #2f7c57
Chart Progress Trackvar(--chart-progress-track)
--sand-4 #e7e9e7
--sand-4 #282a27
Chart Forecast Fan (≤p10)var(--chart-forecast-fan-to-p10)
--green-5 #c4e8d1
--green-5 #174933
Chart Forecast Fan (p10–p25)var(--chart-forecast-fan-p10-p25)
--green-6 #adddc0
--green-6 #20573e
Chart Forecast Fan (p25–p75)var(--chart-forecast-fan-p25-p75)
--green-8 #5bb98b
--green-8 #2f7c57
Chart Forecast Fan (p75–p90)var(--chart-forecast-fan-p75-p90)
--green-6 #adddc0
--green-6 #20573e
Utility
Overlayvar(--overlay)
rgb(0 0 0 / 0.15)
rgb(0 0 0 / 0.6)
Shadowvar(--shadow)
--sand-4 #e7e9e7
--sand-4 #282a27

Radius & elevation

Bumped radius ladder and tinted float shadows for layered surfaces on --bg-page.

Radius nesting
control10px
overlay14px
card16px
2xl20px
3xl24px
Four elevation recipes
Edge
var(--shadow-edge)
Card
var(--shadow-card)
Raised
var(--shadow-raised)
Overlay
var(--shadow-overlay)
TokenUse
--radius-controlButtons, inputs, selects, segmented tracks
--shadow-cardWhite surface on --canvas — inset ring, never border:
--shadow-raisedPressable controls; hover brightens fill, not shadow

Motion extensions

Quieter hover timings and bounce easings from the crafted motion scale.

Hover timing preview
DurationValue
--duration-stagger40ms
--duration-micro80ms
--duration-quick150ms
--duration-fast250ms
--duration-medium350ms
--duration-slow400ms
EasingValue
--ease-smooth-outcubic-bezier(0.22, 1, 0.36, 1)
--ease-bouncecubic-bezier(0.34, 1.36, 0.64, 1)
--ease-bounce-strongcubic-bezier(0.34, 3.85, 0.64, 1)
--ease-outease-out