Vibary.ai
← All UI styles

Duotone Pop

Two saturated colors and nothing between them — no greys allowed.

RisoexpressiveCampaign sitesSports and fitnessBold brand products

Construction · Riso

Two inks printed one pass at a time and never quite registered: fills sit a pixel or two off their outlines, and the overlap is visible.

Every style renders this same screen, so the only thing changing between two of them is the style. The component above is the file below, running.

Prompt

Design this interface in the Duotone Pop style. The entire interface is built from two saturated colors and their overlap. There is no neutral grey anywhere; even the borders take a side.

Build every surface the Riso

The numbers in this prompt are printed from the tokens below, so it cannot drift from what the specimen renders.

What carries the look

  • two saturated colors only
  • no neutral grey
  • colored borders
  • hard color blocking

What this style refuses

  • grey neutrals
  • a third accent color
  • gradients
  • soft shadows

The refusals are the half that keeps generated interfaces from converging — a prompt that only says what to add gets the default look.

Tokens

Palette

RoleLightDark
Background#fff4e6#0c1030
Surface#ffffff#141a45
Border#1b2a6b#e8eaff
Text#1b2a6b#eef0ff
Muted text#4f5c96#9aa2d8
Accent#f04e23#ff7a4d
On accent#1a0a00#1b0a00

Shape and type

Radius0 / 4 / 8 px
Border2px solid
Shadownone
DisplayHelvetica Neue
BodyHelvetica Neue
Monoui-monospace
Type scale11 · 12 · 15 · 17 · 23 · 34 px
Weights500 / 800 / 900
Line height1.4
Tracking0em
Spacing4px grid · regular
Surfaceflat
Accentblock
Separatorhairline
Labelsuppercase
Blurnone

Measured contrast — body 12.16:1 light, 16.37:1 dark; secondary text 5.85:1 and 7.54:1. Every pair clears WCAG AA in both themes, checked on each build.

Specimen · Specimen.tsx

import type { CSSProperties } from "react";

/**
 * Vibary · Duotone Pop
 *
 * Two saturated colors and nothing between them — no greys allowed.
 *
 * One complete product screen, rendered from the token object below —

Nearby styles