Dhairya
Home name, 404
The working language of this site. Cool-neutral paper, hairline rules, three faces. Click a swatch to copy its token. Flip the dock to see dark.
Cool-neutral ink on a paper surface. Hairline rules do the work that cards, shadows, and fills would do elsewhere.
Instrument Serif is voice. Geist Sans is reading. Geist Mono is metadata, keys, and counts. Never swap those jobs.
Everything lives in a 760px column with a 24px gutter. Density comes from type and rules, not from a second rail.
A list hover fades siblings and lifts the row. Motion is 150-200ms on color and transform only, with ease-editorial.
R opens the résumé. ⌘K opens everything. Shortcuts are labeled in mono, not buried in a help modal.
OKLCH, hue 250. Surfaces, ink, rules, then one accent. No brand color.
Surface
Ink
Rule
Accent
Semantic
Instrument Serif for voice. Geist Sans for reading. Geist Mono for metadata. Ligatures on, tracking tight.
Dhairya
Home name, 404
Writing
Section index titles
Design tokens
Writing post title
A working definition
MDX h1
Smallest setup that pays off
MDX h2
Full-stack engineer shipping user-centric apps.
Site default, list titles
A design token is a name pointing at a value.
Writing paragraphs
Selected personal work.
Taglines, experience body
EST. 2026 · IST
Years, clocks, kbd, footer
02 · WORK
Section labels, counts
One column. Compact breakpoint at 580px. Radius stays small.
Kbd, chips, tab pills · Dock, tab lists · Panels, terminal window · Unused. Do not invent larger.
Color and transform only. Never layout. Reduced motion: All motion collapses to 0.001ms.
Hover the list below. Siblings fade. The arrow walks northeast.
Editorial primitives. shadcn is infrastructure underneath. These are the ones the site actually speaks.
Kbd
PressRfor résumé·⌘ + Kfor everything
Chip
LiveDraftBeta
Eyebrow
Editorial tabs
Terminal tabs
Never an em dash. A hyphen with spaces: React, TypeScript, Node - shipping user-centric apps.
Buttons, nav, and labels stay sentence case. Uppercase is reserved for eyebrows and chips.
Press R for résumé. ⌘K for everything. Copy says what happens, not how it is built.
One job per sentence. No newsletter voice. No filler. The empty state tells you where to go next.