flowmance

Naomi Stone Design System

Naomi Stone website template previewNaomi Stone website template preview detail 2Naomi Stone website template preview detail 3

Naomi Stone is a one-person photographer and director portfolio built as a single dark stage. The home page is one sticky 900px frame that plays like a short film as you scroll: an outlined wordmark, a fade, an outlined "GET IN TOUCH" line, tilted colour photos that land on top of each other, then a contact form. The interface is black, white and two greys. The photos carry all the colour.

Four signatures make it recognisable:

  1. The outlined caps wordmark. NAOMI STONE at 170px in Optiker-K, a wide caps-only display face, tracked out 7px and drawn as a thin white outline with a black fill. Each letter is its own element.
  2. Letters that flip in. Every letter starts turned 90° on the Y axis, shifted −10px x / −30px y and invisible, then turns flat in 600ms on a sharp ease-out curve, one after another.
  3. Tilted photo stack. Portrait photos slide in from below or the side and land a few degrees off straight, piling up on the right half of the stage like prints dropped on a table.
  4. Spaced grey caps lines. Small lines such as PHOTOGRAPHER - DIRECTOR and SCROLL DOWN are Optiker-K with 6px and 2px tracking in grey, centred under the big type.

Naomi Stone is a dark-only design.

Colors

Surfaces

canvas#000000

Page background (--black)

surface-1#101010

Footer band (--black-2) and the top of the nav fade

Ink

on-primary#FFFFFF

Text on primary

on-primary-hover#000000

Text on primary-hover

ink#FFFFFF

Wordmark outline, logo, nav icon, input text, links

ink-muted#FFFFFF · 70%

Paragraphs (p), placeholders, dark-link

ink-list#FFFFFF · 80%

List items (li)

ink-subtle#7C7C7C

PHOTOGRAPHER - DIRECTOR, the overlay menu words (--grey)

ink-hint#FFFFFF · 46%

SCROLL DOWN under the mouse icon

ink-faint#FFFFFF · 40%

The footer copyright line only

on-media#FFFFFF

Action

primary#494949

The filled pill button (--dim-grey)

primary-hover#FFFFFF

The button inverts to white with black text on hover

link-rule#FFFFFF · 20%

Resting underline of button-liner text links

Lines & effects

line#494B58

1px border of every input and the textarea

line-strong#7C7C7C

Mouse-icon outline, back-to-top circle, cart remove button

line-cart#747474

Left border and top border of the cart drawer

glass#FFFFFF · 20%
media-overlay#101010 · 20%

Flat overlay on every project photo

Typography

Optiker-K · display-hero · shown in Space Grotesk (fallback)

The quick brown fox jumps

NAOMI STONE, GET IN TOUCH (outlined, one element per letter). 170px · 400 · 0.9 · 7px

Satoshi · headline-lg

The quick brown fox jumps

Base h1 on inner pages (blog post, shop). 38px · 600 · 1.16

Satoshi · title-lg

The quick brown fox jumps

Blockquote, with a 3px #7C7C7C left rule and padding 0 20px 0 30px. 28px · 400 · 1.14

Optiker-K · eyebrow · shown in Space Grotesk (fallback)

The quick brown fox jumps

PHOTOGRAPHER - DIRECTOR. 19px · 400 · 1.58 · 6px

Optiker-K · label-button · shown in Space Grotesk (fallback)

The quick brown fox jumps

Button labels (CONTACT ME). 17px · 400 · 1.18 · 1px

Satoshi · body-lg

The quick brown fox jumps

Paragraphs, at 70% white. 18px · 400 · 1.33

Spacing & shape

PurposeValue
Containermax 1200px, centred (.container)
Section rhythm (inner pages).section uses 100px top and bottom and 5% side padding
Breakpoints991px, 767px and 479px (Webflow defaults)

Spacing scale

TokenValuePreview
xs10px
sm16px
md23px
lg50px
xl72px

Layout spacing

TokenValuePreview
footer50px
hamburger70px
section100px
section-stage120px

Border radius

cart2px
xs5px
icon12px
field25px
pill30px
full9999px

Surfaces

How the surfaces stack, from the page background up. Hex codes and roles are in Colors above.

Level 1canvas
Level 2surface-1

Motion

Letter flip-inEach letter from rotateY 90°, x −10px, y −30px, opacity 0 to rotateY 0°, 0, 0, opacity 1. 600ms, cubic-bezier(0.425, 0.005, 0, 1), staggered letter by letter. Triggered on load and on scroll into view.
Scene fadeBig type to opacity 0.2 (500ms) as the next scene arrives. Elements leave with opacity 0 in 400ms outExpo.
Photo fly-inPhotos move from y −100vw, y 20vw or y 35vw, x ±5vw to 0, 0 in 500ms on the same curve, landing tilted. Scrubbed by the sticky stage.
Slow revealopacity 0 → 1, 1000ms outQuart (page finish)
Mask slidey 100% → 0%, 500–600ms, on menu words and other clipped labels
Link underline growWidth change, 500ms
Button hoverall 0.2s: #494949 → #FFFFFF, white → black text
Social link hoveropacity 0.6 → 1, all 0.3s
Custom cursorFollows the mouse over project cards (cursor: none)

Do’s and don’ts

  • Keep the canvas pure #000000 and the footer #101010.
  • Set the wordmark and section words in Optiker-K, outlined, with wide positive tracking (7px at 170px).
  • Animate letters one by one: rotateY 90° → 0, 600ms, cubic-bezier(0.425, 0.005, 0, 1).
  • Use pill outline fields: transparent fill, 1px #494B58, 25px radius, 50px tall.
  • Use the single #494949 pill button that inverts to white on hover.
  • Let tilted, hard-cornered photos carry all the colour.
  • Use the red #FF3A1B, yellow #FFEA00 or green #00663F variables. They are unused.
  • Fill the two big display lines solid or set them in Satoshi. They are always outlines in Optiker-K; only the overlay menu words are solid #7C7C7C.
  • Round photos, add shadows, or put coloured overlays on images.
  • Track Satoshi, or set Optiker-K without tracking.
  • Use ink-faint (40% white) for anything but the 15px copyright line. It is below 4.5:1 on black; keep it for meta text only.
  • Break the stage into many headed sections. One sticky scene with two outlined lines is the whole home page.

Example prompt

Any page in the Naomi Stone style

Prompt
Build your page in the Naomi Stone style. Use a pure #000000 background and Satoshi 500 for text. Display words are Optiker-K (caps-only, weight 400) at 170px, line height 0.9, letter spacing 7px, drawn as a thin white outline with a black fill, one element per letter. Each letter flips in from rotateY 90°, x −10px, y −30px, opacity 0 over 600ms with cubic-bezier(0.425, 0.005, 0, 1). Put a small grey (#7C7C7C) Optiker-K line under it at 19px with 6px tracking. Use a 1200px container and a two-column 50px-gap grid. Form fields are transparent with a 1px #494B58 border, 25px radius and 50px height; the button is a #494949 pill (30px radius, 56px tall) with white Optiker-K 17px text, turning white with black text on hover in 200ms. Photos are hard-cornered colour portraits, tilted a few degrees and stacked. No shadows, no accent colour. Footer is #101010 with 50px 72px padding.

More design systems like this

Portfolio design systems, the same colors first.

Browse all 398

Bring any of them to your AI tool

All Access unlocks all 398 design systems, ready for Claude, ChatGPT, Gemini, Cursor, v0 and Lovable, plus 400+ templates on all 5 platforms.

Get All AccessUpgrade to All Access