Design Language v1.0 · May 2026

The Chowen Labs
Design Language

A cohesive system of visual and interaction principles for building premium iOS and web experiences. Thoughtful, refined, and distinctly ours — built from the ground up on the Chowen Labs identity.

AudienceApp Store Consumers
TonePremium & Refined
Dark ModeSystem-Adaptive
PlatformiOS-First
02 — Color

Color System

Three brand colors plus a gradient are the heart of the palette. The gradient should feel special — used for primary CTAs and brand moments, never as a background wallpaper. All surfaces and text adapt between light and dark.

Brand Colors — click to copy hex
Cyan
#00E5FF
Blue
#2979FF
Indigo
#6B3AE8
Brand Gradient
135° · Cyan → Blue → Indigo
Semantic Colors
Success
#30D158
Warning
#FF9F0A
Error
#FF453A
Info
#2979FF
Design Tokens — Light / Dark
CSS TokenLight ValueDark ValueUsage
--bg#F6F6FB#0A0A12Page background
--bg-card#FFFFFF#121220Card, sheet surface
--bg-elevated#FFFFFF#1A1A2CModal, popover, tooltip
--bg-subtle#EDEDF5#1E1E30Grouped rows, tag fills
--border#E2E2EE#28283CDividers, outlines
--text-1#0F0F1A#EFEFFAPrimary text
--text-2#56567A#8A8AACSecondary / supporting text
--text-3#9898B8#56567APlaceholder, disabled, hint

Surfaces in dark mode use a cool-tinted near-black (not pure #000000) so the brand gradient retains its vibrancy and pops against the background.

03 — Typography

Typography

Three typefaces form the Chowen Labs type system. Nunito anchors brand identity — its rounded geometry echoes the logo mark. DM Sans handles all UI work cleanly. JetBrains Mono for every technical surface.

Nunito
Display / Brand

Headings, app names, marketing copy, hero titles. Matches the warmth and roundness of the logo mark.

Weights used: 700, 800, 900
DM Sans
UI / Body

All body copy, labels, UI controls, captions. Highly legible at 11px+. Refined and friendly at small sizes.

Weights used: 300, 400, 500, 600
JetBrains
Mono
Code / Technical

Code, hex values, version numbers, token names, data displays, airport codes, tail numbers.

Weights used: 400, 500
Type Scale
Display XL
Display XL
Nunito 900 · 48px · -0.03em
Display
Display
Nunito 800 · 36px · -0.025em
Heading 1
H1
Nunito 700 · 28px · -0.02em
Heading 2
H2
Nunito 700 · 22px · -0.01em
Heading 3
H3
Nunito 600 · 18px
Body Large — The quick brown fox jumps over the lazy dog.
Body L
DM Sans 400 · 17px · 1.6lh
Body — The quick brown fox jumps over the lazy dog with ease.
Body
DM Sans 400 · 15px · 1.55lh
Caption — Supporting text, metadata, secondary information, and timestamps.
Caption
DM Sans 400 · 13px
OVERLINE / SECTION LABEL
Overline
DM Sans 600 · 11px · 0.1em UC
04 — Spacing

Spacing Scale

An 8-point base grid. All spacing decisions — padding, margin, gap — must snap to these values. This creates visual rhythm and predictable density across every surface and app.

space-1
4px · micro nudges
space-2
8px · icon gaps, tight insets
space-3
12px · compact list items
space-4
16px — base unit · standard padding
space-5
20px · comfortable insets
space-6
24px · card padding, section gaps
space-8
32px · inter-section breathing
space-12
48px · large section gaps
space-16
64px · page-level rhythm
space-20
80px · hero padding

Never use arbitrary pixel values. If you need 14px, use 16px (space-4). When in doubt, go larger — generous spacing reads as premium.

05 — Elevation

Elevation & Shadows

Four shadow levels create spatial depth. In light mode, shadows do the heavy lifting. In dark mode, lean on background level changes (--bg vs --bg-card vs --bg-elevated) as the primary depth cue — shadows carry less weight on dark surfaces.

Flat
No shadow
Base surface
sm
Subtle lift
Inline cards
md
Cards, rows
Standard depth
lg
Modals
Floating panels
brand
Primary CTA
Brand glow
06 — Border Radius

Border Radius

Consistent rounding reinforces the brand's rounded character. Scale corner radius to element size — smaller elements get tighter radii, larger surfaces get more generous curves. Never use sharp 0px corners.

4
xs · 4px
Inline tags
8
sm · 8px
Inputs, rows
12
md · 12px
Small cards
16
lg · 16px
Cards, sheets
24
xl · 24px
Hero cards
pill · full
Buttons, badges

In SwiftUI, map these to: .cornerRadius(4/8/12/16/24) or .clipShape(RoundedRectangle(cornerRadius: X, style: .continuous)) for the smoothest Apple-quality curves.

07 — Motion

Motion & Animation

Motion should feel natural and purposeful. Use spring curves for interactive elements — the overshoot communicates physical responsiveness. Reserve linear for instant toggling. Never animate for decoration alone.

🌊 Spring
cubic-bezier(0.34, 1.56, 0.64, 1)
350–450ms

Interactive elements: buttons, cards, icons. Slight overshoot adds personality. In SwiftUI: .spring(response: 0.4, dampingFraction: 0.6)

→ Ease
cubic-bezier(0.4, 0, 0.2, 1)
200–300ms

State transitions: color, opacity, background changes. Smooth entry and exit. In SwiftUI: .easeInOut(duration: 0.25)

⚡ Snap
linear
100–150ms

Immediate feedback: toggles, checkboxes, selection highlight. Should feel instant — avoid perceptible delay. In SwiftUI: .linear(duration: 0.1)

Hover to feel each curve
🌊 Spring
overshoot bounce
→ Ease
smooth state
⚡ Snap
instant feedback

Accessibility: always respect prefers-reduced-motion. Wrap all non-essential animations in @media (prefers-reduced-motion: no-preference) in web, or withAnimation(nil) fallbacks in SwiftUI.

08 — Components

Components

Core UI primitives built on the token system above. Every component supports both light and dark mode natively. These are the building blocks of every Chowen Labs app and surface.

Buttons — hover to interact

Primary button always uses the brand gradient. Secondary is outlined. Ghost is borderless. Destructive uses the error color.

Status Badges
✓ Active ⚠ Pending ✕ Failed ℹ Updated Draft
Text Inputs
App Cards — hover to interact
✈️
Flight Notebook
Logbook & trip planner
🗺️
Walk Tracker
Routes & milestones
Brake Calc
737 energy tool
New App
Coming soon
09 — Voice & Tone

Voice & Tone

Chowen Labs is a craftsperson, not a corporation. Our voice is precise, warm, and confident. We write like a skilled pilot explaining a procedure — technically exact, but never cold or bureaucratic.

🎯 Precise
We say exactly what we mean. No filler, no marketing fluff. Respect the user's intelligence and their time.
✓ "Track every flight. Own your logbook."
✗ "The ultimate all-in-one aviation companion experience"
🤝 Warm
We're a small studio building things we care about. That humanity comes through in every word — especially in errors and empty states.
✓ "Something went wrong — want to try again?"
✗ "Error 404: Resource not found."
💪 Confident
We've built something we believe in. We don't hedge. Our copy reflects that without tipping into arrogance.
✓ "Designed for pilots, by a pilot."
✗ "We hope you might possibly enjoy this app."
🔬 Crafted
Every word is considered — like code. We notice the micro-copy others skip: confirmations, loading states, success messages.
✓ "Nice — 10 flights logged this month."
✗ "Success! Operation completed."
✓ Do

Use sentence case everywhere except brand names and app titles. Write active voice. Use contractions (it's, you're, we've) to sound human. Lead with the benefit, not the feature.

✗ Don't

Don't overuse exclamation points — one per screen maximum. Avoid buzzwords: "leverage," "seamless," "innovative," "robust." Never ALL CAPS for emphasis. Don't write error messages that blame the user.

chowen labs, llc
Design Language v1.0 · May 2026 · All rights reserved
Built for Charlie, Owen, and every app we haven't made yet.