The house book.
Every token, type rule, and shader uniform that ships with this site. If you touch the surface, touch this page first.
Colour
--background
oklch(0.13 0.005 60)
Near-black canvas, warm tilt
--foreground
oklch(0.93 0.012 80)
Warm off-white — the handshake
--surface
oklch(0.17 0.005 60)
Card / panel
--muted-foreground
oklch(0.65 0.012 80)
Secondary text
--signal
oklch(0.62 0.22 285)
Electric violet — use sparingly
--border
oklch(0.27 0.008 60)
Hairline
Type
Fraunces for display, Geist for body, JetBrains Mono for eyebrows.
Display / HeroWe become one.
Section headingFive pillars.
Card headingEval harness
Lead paragraphAn AI venture studio that co-founds.
BodyWe sit on your side of the table.
Eyebrow / mono01 — IDEATE
Motion
Nothing bounces. Nothing pops. Everything settles.
- ease-house
- cubic-bezier(0.65, 0, 0.35, 1)
- The default. Symmetric in/out — feels deliberate.
- ease-out-soft
- cubic-bezier(0.22, 1, 0.36, 1)
- Decel-heavy. For reveals and modals.
- dur.micro
- 0.18s
- Hover tint, opacity flips
- dur.short
- 0.32s
- Buttons, focus states
- dur.base
- 0.6s
- Section reveals
- dur.long
- 1.0s
- Hero choreography
- dur.epic
- 1.6s
- Pinned scroll moments only
Shader uniforms
The ferrofluid nucleus exposes these. Tweak insrc/shaders/ferrofluid.tsand the matching JS scene file.
- uTime
- float
- Accumulating seconds. Drives breath + film drift.
- uPointer
- vec2
- NDC -1..1, smoothed in JS each frame.
- uPointerStrength
- float
- 0..1 lerp; rises while pointer is over canvas.
- uDisplacement
- float
- Master amount. 0 in reduced-motion.
- uMobile
- float
- 0 or 1. Skips heavy fresnel + halves displacement.
- uBase
- vec3
- Obsidian base color (#0c0c10).
- uSignal
- vec3
- Edge tint (#6E56FF).
- uWarm
- vec3
- Inner-glow warm (#E8E4DC).