flow-three
ProblemSolutionServicesApproachWork
Log inLet's Talk
flow-three

Performance design for scaling digital platforms.

Sections

ProblemSolutionServicesApproachWork

Explore

InsightsBrand

Connect

Book MeetingLinkedInEmailWhatsAppCall

© form-three Pte. Ltd. 2026 · UEN: 202321123E

Privacy PolicyTerms & Conditions

Version 3.0

Brand Guidelines

The live design system and identity foundations used across flow-three.

00 · Design Principles

Five foundational constraints that govern every decision. These are not guidelines — they are rules.

P01

Performance-first

Every visual decision is validated against conversion, task completion, and retention. Aesthetics serve function — not the reverse. If a design element cannot be tied to an outcome, remove it.

P02

Clarity over decoration

Remove anything that does not communicate or convert. Whitespace is active and intentional. Complexity must justify its presence with a measurable benefit.

P03

Measured contrast

Color and weight create hierarchy. Contrast ratios meet WCAG AA (4.5:1 for body, 3:1 for large text). Never use color purely for decoration — it must carry meaning or action.

P04

Restrained color usage

Two accent colors. One rule each. Blue on light surfaces only. Teal on navy only. Components never mix both. No color is added to the system without a documented use case.

P05

Functional motion

Motion communicates state change or guides attention. UI transitions: 150–200ms ease. Ambient animations: 20–30s ease-in-out. Nothing animates without a functional reason.

01 · Logo

The wordmark is the logo. Always lowercase. Always DM Sans 700 with tight tracking (−0.02em). Never modify letterforms, never add a mark, never use a non-700 weight.

On light

flow-three

24px · Navigation

flow-three

16px · Footer

On dark

flow-three

Always white on dark backgrounds

02 · Color System

Ink Scale — Text & Borders

Ink

#0A0A0A

Headings, strong text

Ink 70

rgba(10,10,10,0.70)

Body text (default)

Ink 50

rgba(10,10,10,0.50)

Secondary text, labels

Ink 30

rgba(10,10,10,0.30)

Disabled text

Ink 12

rgba(10,10,10,0.12)

Borders, dividers

Ink 6

rgba(10,10,10,0.06)

Subtle borders

Backgrounds

Paper

#FCFBF9

Default page BG

Warm

#F7F5F1

Section alternation

White

#FFFFFF

Cards, elevated

Blue — Primary Action

Blue

#0047FF

CTA, links, focus, diagrams

Blue 90

rgba(0,71,255,0.90)

Button hover

Blue 15

rgba(0,71,255,0.15)

Tag borders

Blue 8

rgba(0,71,255,0.08)

Tag BG, section tint

Teal — Accent (Dark Backgrounds Only)

Teal

#00C896

Text on navy (#001a4d), checkmarks

Teal 8

rgba(0,200,150,0.08)

Subtle background tint

Dark — Section Backgrounds

Dark

#0D0D14

Footer sections

Dark Blue

#001a4d

Tiles with blue/teal text

Color Rules — Formal Constraints

These rules prevent visual inconsistency and preserve the contrast model across all surfaces.

DoUse blue (#0047FF) on paper, warm, and white backgrounds for CTAs, links, focus states, and diagrams.

DoUse teal (#00C896) exclusively on navy (#001a4d) backgrounds — labels, checkmarks, and accents only.

DoUse the ink scale (ink, ink70, ink50, ink30) for all text hierarchy without exception.

DoUse ink12 and ink6 for dividers and borders on light backgrounds.

DoUse white (#FFFFFF) for card surfaces and elevated components on warm or paper backgrounds.

Don'tUse teal on paper, warm, or white backgrounds — ever.

Don'tUse blue on navy (#001a4d) or dark (#0D0D14) backgrounds. Use teal or white instead.

Don'tMix blue and teal within the same component, card, or section.

Don'tAdd decorative gradients outside the hero and statement sections.

Don'tUse color for decoration. Color communicates meaning or action — nothing else.

Don'tIntroduce new color values not present in the C token map.

03 · Typography

DM Sans for all UI and body text. DM Mono for labels and code only. All heading sizes use fluid scaling (clamp) for responsive design.

Hero

text-hero

clamp(52px, 7.5vw, 100px)

Design That Moves Business.

Display / H2

text-display

clamp(32px, 4.5vw, 54px)

Clearly scoped. Outcome-focused.

Large / H3

text-large

clamp(24px, 3vw, 36px)

Request received

XL

text-xl

20px

We rethink the end-to-end journey — how customers move, decide, and commit.

LG

text-lg

18px

Responsive body text for larger screens.

Base

text-base

17px

Default body text size for tablet and up.

MD

text-md

15px

Smaller body text and UI elements.

SM

text-sm

14px

Small UI text, captions.

Mono / Label

text-mono

11px

PERFORMANCE DESIGN

Weight Constraints

H1 / Hero

700 only

−0.03em

Never 500 or 600

H2 / Display

700 only

−0.025em

Never 500 or 600

H3 / Large

500 only

−0.02em

Never 700

Body (all sizes)

400 only

0.002em

Never above 400

DM Mono / Label

400 only

0.1em

Uppercase, 11px max, labels only

Font Family Rules

DoUse DM Sans for all UI text: headings, body, navigation, buttons, captions.

DoUse DM Mono for section labels (e.g. 'Services'), tags, inline specs, and the design system UI itself.

Don'tUse DM Mono for paragraph text or any run of text longer than six words.

Don'tApply positive letter-spacing to headings. Headings always use negative tracking.

Don'tApply random letter-spacing to body text. Body tracking is fixed at 0.002em.

Don'tMix font weights within a single heading. One role, one weight — always.

Correct Heading Hierarchy

Performance Design

Design That Moves Business.

Clearly scoped. Outcome-focused.

Four service tiers, one coherent system.

Body text follows the heading stack. Never heavier than 400. Default color is ink70; use ink only for deliberate emphasis within a paragraph.

DM MONO LABEL → H1 700 → H2 700 → H3 500 → BODY 400

04 · Elevation Model

Three elevation levels. Never stack them. Never apply shadow-card-hover at rest. Shadow communicates interactivity — use it deliberately.

Flat surface

No shadow, no border needed

Level 0 — Flat

box-shadow: none

Use for section content areas on paper, warm, or dark backgrounds. No interactivity implied.

Elevated card

shadow-card at rest

Level 1 — Card

shadow-card

Use for interactive tiles, service cards, and elevated surfaces. Applied at rest.

Hovered card

shadow-card-hover + lift

Level 2 — Hover

shadow-card-hover + translateY(−2px)

Applied on :hover only. Paired with translateY(−2px). Transition: all 0.2s ease. Never at rest.

Stacked shadows

Both levels simultaneously

Never — Stacked

shadow-card + shadow-card-hover

Never apply both shadows together. Never add a custom shadow outside these two levels.

Level

When to use

When NOT to use

Flat

Section content, dark sections, text-only areas

Interactive cards, anything the user can click

Card

Service tiles, testimonials, pricing cards, feature blocks

Hover state — use Level 2 on hover instead

Card-Hover

Hover state of any Level 1 surface

Resting state. Multiple elements simultaneously

05 · Components

Buttons (components/ui/button.tsx)

Primary

Default
Hover
Active
Disabled
Loading

Secondary

Default
Hover
Active
Disabled

Ghost

Default
Hover
Active
Disabled

Button State Matrix

State

Primary

Secondary

Ghost

Default

Blue bg · White text · shadow-button

White bg · Ink12 border · shadow-sm

Transparent · Blue text · full opacity

Hover

Blue90 bg · shadow-button-hover · translateY(−2px)

White bg · shadow-md · translateY(−2px)

Transparent · Blue text · opacity 80% · translateY(−1px)

Active

Blue × brightness(0.86) · translateY(0)

White bg · shadow-sm · translateY(0)

Transparent · Blue text · opacity 80% · translateY(0)

Disabled

opacity 50%

opacity 50%

Transparent · Ink30 text · opacity 50%

Loading

Blue bg · White text at 50% opacity

—

—

Form Inputs

Input value
Default1px solid ink12 · white bg
Focused value
Focused1px solid blue · ring blue8
Unavailable
Disabledink3 bg · ink30 text · cursor: not-allowed

Tags / Pills

Performance DesignMethod Tag

Two variants: blue (primary emphasis) and gray (neutral). Teal tags removed in color system refinement.

Cards (components/ui/card.tsx)

Card Title

Default resting state with shadow-card. White surface on any background.

Default · shadow-card

Card Title

Hover state with shadow-card-hover and −2px lift. Never at rest.

Hover · shadow-card-hover + translateY(−2px)

Section Labels (components/ui/section.tsx)

Services

On light · ink50

Our Philosophy

On navy · teal

Connect

On dark · white 35%

DM Mono 400 · 11px · uppercase · letter-spacing: 0.1em

Navigation Links

Defaultink70
Hoverink
Activeblue
Disabledink30

DM Sans 400 · 15px · no underline on default or hover · underline optional on hover per context

06 · Effects & Animations

Shadows (tailwind.config.ts)

shadow-card

Cards at rest · ink-tinted

0 1px 3px rgba(10,10,10,0.04), 0 4px 16px rgba(10,10,10,0.06)

shadow-card-hover

Cards on hover · ink-tinted

0 4px 12px rgba(10,10,10,0.08), 0 16px 40px rgba(10,10,10,0.12)

shadow-button

Primary button at rest · blue-tinted

0 2px 8px rgba(0,71,255,0.14)

shadow-button-hover

Primary button on hover · blue-tinted

0 6px 20px rgba(0,71,255,0.24)

Gradient Background (Hero & Statement sections only)

Blue + teal gradient orbs · blur(100px) · animated float · hero only

Animation Timing Reference

Button/card hover

250ms

ease-flow

All interactive UI transitions (cubic-bezier(0.4, 0, 0.2, 1))

Scroll reveal entry

800ms

ease-flow

Scroll-triggered .reveal class (opacity + translateY)

Hero stagger

600ms

ease-flow

Hero children, staggered 100–650ms delays

Gradient float

25–30s

ease-in-out

Hero blue + teal ambient orbs

Statement glow pulse

18–24s

ease-in-out

Statement section background blue orbs

07 · Iconography

Icons use Radix Icons with consistent sizing and theme-aware color. Blue on light backgrounds, teal on dark navy surfaces. All icons use stroke style—never mix filled and stroke.

Size Scale

xs

14px

Inline with small text, tight UI

sm

16px

Default inline icon, form fields

md

20px

Button icons, list items

lg

24px

Section icons, larger buttons

xl

32px

Section headers only

UI Icons · Light Mode (Primary = Blue)

Check

Cross

Arrow

Plus

Minus

Info

Alert

Chevron

Menu

Calendar

Email

UI Icons · Dark Mode (Primary = Teal on Navy)

Check

Cross

Arrow

Plus

Minus

Info

Alert

Chevron

Menu

Calendar

Email

Icon Variants

default

Inherits current text color

muted

Secondary text color (50% opacity)

primary

Theme primary (blue in light, teal in dark)

Pictograms · Light Surface

Larger expressive icons for section headers and feature cards. Circular background with soft blue tint.

Growth

48px

Performance

64px

Systems

64px

Speed

64px

Results

48px

Users

48px

Pictograms · Dark Navy Surface

Growth

48px

Performance

64px

Systems

64px

Speed

64px

Results

48px

Users

48px

Lucide Icons · In Production

All Lucide icons used across the site. strokeWidth=1.5 everywhere. Via Icon or TileIcon wrapper, or direct JSX. Click any icon to open its Lucide page.

CircleCheck

results-section

Iconsize=20sw=1.5

AlertCircle

executive-summary

Iconsize=24sw=1.5

Target

executive-summary

Iconsize=24sw=1.5

TrendingUp

executive-summary

Iconsize=24sw=1.5

Users

executive-summary

Iconsize=24sw=1.5

Search

services-section

Iconsize=24sw=1.5

Rocket

services-section

Iconsize=24sw=1.5

SlidersHorizontal

services-section

Iconsize=24sw=1.5

RotateCw

services-section

Iconsize=24sw=1.5

Box

how-we-work

Iconsize=24sw=1.5

Waypoints

how-we-work

Iconsize=24sw=1.5

User

approach-section

TileIconsize=20sw=1.5

BarChart2

approach-section

TileIconsize=20sw=1.5

Wand2

approach-section

TileIconsize=20sw=1.5

Component

approach-section

TileIconsize=20sw=1.5

Layers

approach-section

TileIconsize=20sw=1.5

ArrowRight

hero, how-we-work, cta…

directsize=18sw=1.5

ExternalLink

cta-section

directsize=18sw=1.5

Target

mobile-bottom-nav

directsize=18sw=1.5

AlertCircle

mobile-bottom-nav

directsize=18sw=1.5

Wrench

mobile-bottom-nav

directsize=18sw=1.5

BriefcaseIcon

mobile-bottom-nav

directsize=18sw=1.5

GitBranch

mobile-bottom-nav

directsize=18sw=1.5

Icon Usage Rules

DoAlways use Lucide icons — strokeWidth={1.5} everywhere

DoUse primary variant for theme-aware blue ↔ teal switching

DoKeep icons 8px gap from adjacent text in buttons

DoInline icons align to text baseline automatically

Don'tNever mix filled and stroke icon styles

Don'tNever exceed lg (24px) inside buttons

Don'tNever hardcode blue or teal—always use variant="primary"

Don'tDon't use icon-only buttons without aria-label

08 · Layout Patterns

Reusable structural patterns using existing tokens only. Each demonstrates a common compositional need beyond the current website pages.

P1 — Two-Column Content Block (text + visual)

Services

Clearly scoped.
Outcome-focused.

Each engagement has a defined scope, measurable outcomes, and a clear exit criteria. No retainer lock-in.

IMAGE PLACEHOLDER

Grid: 3fr 2fr · gap: 40px · align: center

P2 — Case Study Preview Grid

Conversion

34% reduction in checkout drop-off

Rebuilt the payment and confirmation flow for a fintech platform. Four-week Flow Fix engagement.

View case study
Retention

Onboarding redesigned end-to-end

Mapped the full activation journey for a B2B SaaS product. Delivered in six weeks with measurable lift.

View case study

P3 — KPI Metrics Row

42%

Conversion lift

3.2×

ROI within 90 days

18d

Average delivery

94%

Client satisfaction

Font: DM Sans 700 · 36px · tracking −0.03em · label: DM Mono 9px

P4 — Comparison Table (light + navy variant)

Without flow-three

Unclear scope and shifting deliverables

No measurable success criteria

Long feedback cycles

Accumulating design debt

With flow-three

Scoped, time-boxed, and transparent

Measurable KPIs agreed from day one

Fast iteration and weekly reviews

Zero design debt on delivery

P5 — Testimonial Card

"They didn't just redesign the page — they redesigned how customers move through our entire funnel. The numbers prove it."

Sarah Chen

VP Growth · Meridian SaaS

P6 — Feature Checklist (light + navy)

Blue on light

Defined scope and timeline

Measurable success criteria

Weekly progress reviews

Full IP transfer on completion

Teal on navy

Defined scope and timeline

Measurable success criteria

Weekly progress reviews

Full IP transfer on completion

P7 — Structured Service Card (pricing-style)

Diagnostic

Flow Clarity

1–2 week engagement

Full journey audit

Heatmap and session analysis

Priority issue map

Benchmark report

Execution

Flow Fix

3–6 week engagement

Redesigned conversion flows

A/B test against original

Dev-ready specs

Performance benchmark

P8 — Simple Form Layout

Start a conversation

you@company.com

We respond within one business day.

Company name

09 · Example Templates

Visual block references for common page types. All use system tokens and follow established patterns. These are starting structures — not fully implemented pages.

T1 — SaaS Landing Hero

Performance Design

Design That Moves Business.

We rethink how customers move, decide, and commit — combining design craft with measurable outcomes.

T2 — B2B Service Page Section

Services

Clearly scoped.
Outcome-focused.

Diagnostic

Flow Clarity

Execution

Flow Fix

Transformation

Flow Rebuild

Ongoing

Flow Partnership

T3 — Case Study Detail Page

Work → Case Study → Meridian SaaS

42% Lift in Free-to-Paid Conversion

Meridian SaaS · Flow Fix engagement · 4 weeks

CASE STUDY HERO IMAGE

42%

Conversion lift

4 wks

Delivery

3.2×

ROI

T4 — Blog / Insight Article Layout

Insight·March 2026

Why Most SaaS Onboarding Flows Fail Before the First Login

The critical failure point isn't the feature — it's the first 90 seconds. We analyzed 40 onboarding flows to understand why.

Article body text sits at a maximum width of 560–580px — approximately 65–70 characters per line at 14–15px. This is the ideal line length for reading comfort. Paragraphs are separated by 20px margin-bottom.

T5 — Minimal Dashboard Screen

flow-three

Overview

Services

Work

Reports

Overview

24

Active projects

94%

On-track

6

Pending review

CONTENT AREA

T6 — Email Capture Section

Insights

Design thinking. Measurable results.

One email per month. No fluff, no sales. Frameworks, patterns, and real-world results.

your@company.com

No spam. Unsubscribe anytime.

T7 — Thank-You / Confirmation State

Request received

We'll review your brief and respond within one business day. Check your inbox for a confirmation.

T8 — Error / Empty State

Nothing here yet

This section is empty. Start by adding your first item or check back later.

10 · Usage Rules

Implementation guidance for engineers and designers. These rules prevent the most common structural and compositional mistakes.

When to use navy vs. warm sections

Navy (#001a4d)

  • ·Philosophy or mission statements
  • ·Quotes and testimonials with emphasis
  • ·Comparison sections with teal accents
  • ·Sections that need to interrupt the light flow
  • ·Maximum: 2 navy sections per page

Warm (#F7F5F1)

  • ·Service feature explanations
  • ·Alternating sections between paper bg
  • ·Forms and input areas
  • ·Sections requiring subtle separation
  • ·Safe default for any content section

When to introduce motion

DoScroll-triggered reveals for section content entering the viewport (400–600ms, ease-out, stagger 80ms between items).

DoButton and card hover/active transitions (150–200ms ease).

DoHero gradient orbs (float, 20–30s, ease-in-out). Statement section glow (18–24s).

Don'tAnimate elements that aren't interactive or entering the viewport.

Don'tUse transitions above 300ms for UI state changes (hover, focus, active).

Don'tAdd motion to elements below the fold on mobile — prefer reduced-motion fallbacks.

Text width and line length

Hero headline

860px

~40–50 chars

Tight tracking handles length

Section headline

640px

~50–60 chars

Never wider than content below

Body / lead text

560–680px

65–75 chars

Ideal reading line length

Card body text

card width

40–55 chars

Card padding handles constraint

Mono labels

unconstrained

—

Always short, always uppercase

CTA placement best practices

DoPlace the primary CTA immediately after the value proposition — end of the hero above the fold.

DoPair a secondary CTA alongside the primary when offering an alternative action (e.g. 'See our work').

DoRepeat the primary CTA at the end of long sections or before the footer.

Don'tShow more than two CTAs in a single section. Hierarchy collapses above two.

Don'tUse ghost buttons as primary CTAs. Ghost = tertiary or supplementary action only.

Don'tPlace CTAs mid-paragraph or inline within body text — use a dedicated button row.

Section spacing rhythm

py-12

48px

Mobile · all sections

py-20

80px

Tablet (768px+) · standard sections

py-28

112px

Desktop (1024px+) · standard sections

py-16

64px

Tablet · compact sections (footer, CTA strips)

gap-10

40px

Mobile grid gap

gap-16

64px

Desktop grid gap

Never double-pad adjacent sections. If two sections share a background color, use a single divider (1px ink6) rather than stacking padding.

Most platforms already have the traffic. The problem is what happens to it.

Let's Talk

Where are your users getting stuck?

First call is always diagnostic. You describe where the numbers feel wrong — most of the time, we can identify the cause before we’ve seen the product.

Not a pitch. A look at the problem together.

Or

We typically respond within 1 business day.