flowmance

Bangkok Design System

Bangkok website template previewBangkok website template preview detail 2Bangkok website template preview detail 3

Bangkok is a loud, graphic agency and portfolio site built from black and white only. It feels like a printed gig poster: wide Unbounded capitals that fill the screen edge to edge, a nav drawn as boxes of heavy 2px black lines, and a black work band where a giant title slides past before the colourful 3D renders appear. Every colour on the page comes from the images.

Four signatures make it recognisable:

  1. Boxed line nav. The header is a row of cells drawn with 2px black lines: the Bangkøk logo in a left cell with a bottom rule, a centre cell with side and bottom rules holding HOME ABOUT NEWS CONTACT in 18px Unbounded caps, and an empty right cell with a bottom rule. Each cell is 130px tall, inset 10px from the window.
  2. Billboard Unbounded. The hero title DIGITAL / STUDIO is 150px weight 500 caps, and the work band title RECENT WORK runs at 20vw (288px at 1440) weight 600, wider than the screen, sliding sideways as you scroll.
  3. Outlined pills. The call to action is LET'S TALK: a 2px black outline pill (50px radius, 48px tall) with 13px Unbounded caps that fills black on hover.
  4. Fixed black footer. The footer is a full-height black panel fixed behind the page, uncovered as the last section scrolls away.

Colors

Surfaces

canvas#FFFFFF

Page background

surface-1#F5F5F5

The lightest grey step: the Send Message button fill

inverse-canvas#000000

The work band and the fixed footer

field-placeholder#777777

Form placeholders

Ink

on-primary#000000

Text on primary

on-secondary#000000

Text on secondary

ink#000000

Headlines, nav, button outlines

ink-strong#222222

Blockquotes and the text of the white .button (--black-second)

ink-muted#888A8B

Paragraphs and the faded half of the hero lead (--grey)

inverse-ink#FFFFFF

Text on inverse-canvas

inverse-ink-muted#FFFFFF · 50%

Small meta text in the footer

on-media#FFFFFF

Action

primary#FFFFFF

The outlined pill: white (transparent) inside, black text and 2px black border

primary-hover#000000

The pill fills black on hover (.button-rounded:hover), text turns white

secondary#F5F5F5

The contact form's Send Message button (same value as surface-1)

error#FF0E0E

Round remove button in the cart

Lines & effects

icon-well#EEEEEE

Circles of about 40px behind the social icons (no text sits on it)

line#000000

2px rules in the nav and above the hero footer row

cart-surface#222222

Shop cart panel and its dividers

cart-line#333333

Shop cart panel and its dividers

Typography

Unbounded · display-section

The quick brown fox jumps

RECENT WORK (.title-4, font-size: 20vw). 288px · 600 · 1.1

Unbounded · headline-marquee

The quick brown fox jumps

Project names running across the bottom of each image (NIGHT DESERT). 60px · 600 · 1.2 · 1px

Inter Tight · body-xl

The quick brown fox jumps

Hero lead and the footer line I'm always here and ready to communicate. 26px · 600 · 1.5

Unbounded · title-md

The quick brown fox jumps

Prices. 24px · 600 · 1.88

Unbounded · label-nav

The quick brown fox jumps

Nav links. 18px · 600 · 1.78

Unbounded · micro

The quick brown fox jumps

Page default. 14px · 700 · 1.43

Spacing & shape

PurposeValue
Containermax 1200px, centred, a flex column
Breakpoints991px, 767px and 479px, plus a min-width: 768px step

Spacing scale

TokenValuePreview
hair10px
sm15px
md20px
lg30px
xl40px

Layout spacing

TokenValuePreview
nav-cell130px
section130px
hero-bottom150px
hero-top190px

Border radius

sm9px
pill50px
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

Page-load introElements fade and rise on page load: opacity 0 → 1, y 30px → 0, 300–500ms ease
Fade-up on scrollopacity 0 → 1, y 30px → 0, 500ms
Text roll (nav, pills)Label y 0% → −100% with a copy rolling in, 300ms ease, inside a 33px mask
Pill filltransition: all 0.2s to a black fill
Nav cell bar.button-line-first height grows, 200–500ms ease / 400ms outCubic
Mouse driftElements shift x/y ±5px, ±10px and ±30px with the cursor, 500ms
Sliding titleRECENT WORK moves horizontally while the band is in view
Project marqueeNames scroll continuously along each image
Image filterA filter change on hover, 300ms ease
Scale popscale → 0, 500ms, then back → 1, 300ms ease

Do’s and don’ts

  • Keep the interface to ink #000000 and canvas #FFFFFF, with #888A8B only for paragraph text.
  • Set every display word, nav link and button in Unbounded caps; keep paragraphs in Inter Tight.
  • Draw structure with 2px black lines (nav cells, the hero's bottom rule) instead of cards.
  • Use the outline pill (2px black, 50px radius, 48px tall) for calls to action and fill it black on hover.
  • Put work on a black inverse-canvas band with square-cornered 4:3 renders and 30px gaps.
  • Let one display word exceed the screen width, as RECENT WORK does at 20vw.
  • Use the orange and green Webflow variables; they are not part of the visible design.
  • Round images or add shadows.
  • Set #888A8B (ink-muted) below 18px: it is only about 3.5:1 on white. Keep it for 18px+ paragraphs and the 26px lead.
  • Mix lowercase into Unbounded or capitals into Inter Tight.
  • Use 1px lines; every rule and outline on the page is 2px (only the shop cart panel has a 1px #333333 border).
  • Run the marquee or sliding title when reduced motion is on.

Example prompt

Any page in the Bangkok style

Prompt
Build your page in the Bangkok style. White #FFFFFF page, black #000000 type. Display text is Unbounded in capitals: hero 150px weight 500, line height 1.1; big section words at 20vw weight 600 on a black band, allowed to run off screen. Paragraphs are Inter Tight 18px weight 500 in #888A8B; leads are Inter Tight 26px weight 600, starting black and finishing in #888A8B. Draw the nav as 130px-tall cells separated by 2px black lines, links in Unbounded 18px weight 600 caps. Buttons are outline pills: 2px black border, 50px radius, 48px tall, padding 12px 30px, Unbounded 13px weight 600 caps; on hover fill black with white text in 200ms. Work images are 4:3 square-cornered 3D renders in a 2-column grid with 30px gaps on black. No shadows. The footer is a fixed full-height black panel revealed under the page.

More design systems like this

Agency 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