Onlook design specDev Tools

A dark designer’s workbench rather than the light designer-facing UI the category suggests — a #0f0f0f canvas stepping to #1a1a1a and #27272a with #fafafa ink, dark by construction with no light theme at all. The signature is a TWO-FACE HEADLINE: Inter at a LIGHT weight 300, 60/54 so the line-height sits below the font size, with -2.4px tracking for the words "Cursor for", handing off mid-sentence to Vujahday Script, a handwritten script face set LARGER at 73.6px, for "Designers" — that handoff is the whole positioning in one line. The live editor is embedded straight into the hero, with a Layers component tree on the left, a canvas with Design and Preview tabs in the middle, and a Chat/Code panel on the right. Structure comes from white hairlines at BOTH 1px and a deliberate sub-pixel 0.5px tier, on a dominant 8px radius, and there are zero box-shadows anywhere: depth is instead a graded backdrop-filter scale of 8, 16, 24 and 40px. The background is a full-viewport WebGL canvas with gradients authored in oklab and lab colour space, behind ultra-slow counter-rotating orbit rings running 280s and 290s linear infinite, roughly one turn every five minutes. Colour stays inside the product: mint #46edd5 means live or running, violet #dab2ff means AI or selection, and neither ever fills a marketing button.

Browse Onlook in the interactive gallery

Captured from the live site's computed styles into a prompt-ready DESIGN.md you can paste into Cursor, v0, Lovable, Bolt or Claude Code. Below is a summary of each captured surface.

Marketing site

Source: onlook.com (live DOM, computed styles), 2026-07-27 (desktop 1512px). Coverage: home page. Editor is embedded live on the page; the logged-in project surface is behind login (needs-dashboard). 0 stylesheets blocked. No og:image meta of any kind on the page (and /opengraph-image.png, /og.png, /twitter-image.png all return 404) — gallery thumb uses the site's own product screenshot asset /assets/site-version-3.png. Reality check: hint ("designer-facing light UI") is wrong on the colour. Onlook is DARK — canvas #0f0f0f stepping to #1a1a1a/#27272a/#09090b, with #fafafa ink and darkSchemeBlocks: 0 (it is dark by construction, not by toggle). "Designer-facing" is right, and the way it signals that is the finding the hint misses: the display mixes two faces inside one headline — Inter 60/54 at a LIGHT weight 300 for "Cursor for", then Vujahday Script, a handwritten script face, at 73.6px for "Designers". Three more: hairlines are sub-pixel 0.5px #ffffff alongside 1px (164×); there are zero real box-shadows (all 82 are transparent placeholders); and the background is a full-viewport WebGL canvas plus two ultra-slow 280s/290s counter-rotating orbit animations across 54 elements.

Visual Theme & Atmosphere

A dark designer's workbench — a near-black studio where a light Inter headline hands off mid-sentence to a handwritten script, and the product itself (layers tree, canvas, chat) sits embedded and running at the bottom of the hero. Chrome is monochrome and quiet so the editor's own colour can read: mint marks live state, violet marks AI. Structure is drawn with white hairlines at 1px and 0.5px over graded backdrop blurs, never with shadows. Motion is almost imperceptible — orbit rings turning once every five minutes behind a WebGL field. Feels: crafted, dark, designerly, calm.

Color Palette & Roles

Text

TokenHexRole / usage
ink#fafafaPrimary text (1441 uses)
white#ffffffEmphasis, hairlines
grey-ab#abababSecondary (702 uses)
grey-99#999999Body / nav (291 uses)
grey-d4#d4d4d8Bright secondary
grey-71#71717bMuted
grey-52#52525cFaint (234 uses)
grey-9d#9d9d9dBorder-strong

Surfaces & borders

TokenHexRole / usage
canvas#0f0f0fPage background
surface-1#1a1a1a / #1a191aSection step
surface-2#27272aPanel fill (54 uses)
surface-3#18181bInset
black#09090b / #000000Deepest wells
hairline#ffffffBorders at 1px and 0.5px
hairline-tint#f5ffffCool-white border tint
grey-e4#e4e4e7Light chip fill
cream#f0efe3Warm panel accent (108 uses)

Accent & semantic (product surfaces)

TokenHexRole / usage
mint#46edd5Live/running state (50 uses)
mint-light#96f7e4Live badge text + border
mint-deep#0b4f4aLive badge fill
violet#dab2ffAI / selected layer label (104 uses)
violet-strong#ad46ffAI emphasis

Rule: page chrome is monochrome; mint means "live", violet means "AI/selection" — both belong to the embedded editor, not to marketing buttons.

Typography Rules

RoleSize/LineWeightTracking
Display (h1, Inter part)60 / 54300-2.4px
Display (script part)73.6 / 73.6400-2.4px, Vujahday Script
Section (h2)48 / 60300-1.92px
Mono sub (h3)12 / 16400normal, JetBrains Mono
Body18 / 28400normal
Button14 / 20400–500normal

Patterns: the display is LIGHT (weight 300) with a line-height BELOW the font size (60/54) and strong -2.4px tracking; the script face is set LARGER (73.6px) than the sans it interrupts. Nothing exceeds weight 500.

Also documented in the full DESIGN.md: Component Stylings, Layout Principles, Depth & Elevation, Motion, Backgrounds, Effects & WebGL, Do's and Don'ts, Responsive Behavior, Agent Prompt Guide.