Brand

The colors, type, and pieces this site is built from. Every value here is pulled from the live stylesheet, so this page changes when the site does. One-off components and their props live in the components area.

Color

Warm grays on a warm off-white page, with one teal kept for keyboard focus. Each swatch shows its contrast against the page. Text needs at least 4.5:1.

  • --paper #f5f2ec 1.0:1
  • --ink #1c1917 15.7:1
  • --muted #68635d 5.3:1
  • --body-ink #383531 10.9:1
  • --muted-soft #6f6a63 4.8:1
  • --rule #d6d0c7 1.4:1
  • --section-rule #e4dfd7 1.2:1
  • --accent #0589a9 3.6:1
  • --selection #ccebf2 1.1:1
  • --code-surface #ece8e1 1.1:1
  • --hover-surface #ede9e2 1.1:1
  • --card-surface #ece8e1 1.1:1
  • --card-surface-hover #e3ded5 1.2:1
  • --scrollbar-thumb #aaa49c 2.2:1
  • --portrait-shadow #1c1917 15.7:1

Type

One family, Google Sans Flex, in six sizes. Headings are set at weight 600 and everything else at 400.

--font-size-display 32px · 600 Make the technology useful
--font-size-section 24px · 600 Make the technology useful
--font-size-heading 20px · 600 Make the technology useful
--font-size-title 17px · 400 Make the technology useful
--font-size-body 15px · 400 Make the technology useful
--font-size-meta 12px · 400 Make the technology useful
--font-size-hero px · 400 Make the technology useful
  • --body-font 'Geist Variable', Arial, Helvetica, sans-serif
  • --title-font var(--body-font)
  • --mono-font 'JetBrains Mono Variable', 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace

Layout

Every section shares one grid: a narrow rail on the left and a content column on the right, so all the left edges line up. On phones it collapses to one column.

  • --content-max 61.5rem
  • --page-pad 3rem
  • --rail 12rem
  • --rail-gap clamp(2rem, 5vw, 5.5rem)

Dividers

A short centered line separates sections and closes article headers. There are no full-width rules.

Lists

Projects and posts are one row per link: name, description, then the date, with pixel dots between rows. Rows have no hover state beyond the screenshot preview.

Cards

Cards are only used on Inspo, for other people's work. The card grows with what it holds: a label, then any image, excerpt, title, source, and note. Quotes lead with the line itself.

Pixel art

Icons and cursors are drawn on a pixel grid and kept square. The dotted dividers use the same 2px squares.

Social icons

16 × 16, one color, shown at 1:1 in the nav and footer.

  • X
  • GitHub
  • LinkedIn
  • Instagram

Inspo types

8 × 8, beside each label on cards and filters.

  • All
  • Quotes
  • Patterns
  • Tweets
  • Articles
  • Books
  • Sites
  • Products
  • Videos

Favicon

The nav teacup on a transparent 16 × 16 grid.

  • Cup

Cursors

Hover the links on this page to try them. Hold Cmd over a link for the new-tab cursor.

  • Default
  • Link
  • Leaves the site
  • New tab

Photo

The portrait from the home page, full size, for talks, bios, and anything else that needs a photo.

Avi Goldman sipping from a coffee cup, looking off to the side
1284 × 1712 JPEG Download

Social

Profile covers for LinkedIn and X: the teal pixel cursor at about real-cursor size, its tip 20% from the left and 40% from the bottom, and the pixel teacup, small, sitting on the bottom edge near the right. Run pnpm covers to redraw them after the colors change.

LinkedIn cover 1584 × 396 Download
X header 1500 × 500 Download