Nzinga mosaic in magenta, flame and Volt
Design
/
Brand

Brand

One shell that was money and a mouth, one drawn word, and one electric palette.

Phone App
Expo SDK 58

This page is the working summary; the full construction, sources and studies are on the brand page.

02

Colour

Source
apps/mobile/utils/color-theme.ts · app/contexts/ThemeColors.tsx · docs/logo/index.html

Nzinga Electric is a near-black ground, near-white ink and five live colours, each with one job. The app is dark by default. Ratios below are the contrast of black (#0B0B10) or white (#F7F7FA) text on each colour.

Aa16.6:1
Volt
#C8FF2E · Black AAA · White 1.1
Action, money, accepted. Content on it is always black.
Aa5.5:1
Magenta
#FF2D7A · Black AA · White 3.3
Recording and live.
Aa12.0:1
Cyan
#19E0E6 · light #0FA9AE · Black AAA
Information, in review, pending.
Aa4.5:1
Violet
#7C5CFF · Black AA · White 4.1
Models and AI, the licence share.
Aa6.9:1
Flame
#FF6A1F · Black AA · White 2.7
Warnings, withdrawing, not accepted. Sparingly.
Aa18.4:1
Black
#0B0B10
The ground. Text in light mode.
Aa18.4:1
White
#F7F7FA
Ink. The light ground.
Aa4.6:1
Accent, light
#5C7A00
Volt darkened, for coloured text on light grounds.

Click a swatch to copy its value. Measured ratios for every pair are on Accessibility.

Rules

  1. One accent per screen. A screen leads with one live colour. Volt marks the one action or the money; the other colours mark state, not decoration.
  2. Content on Volt is black. Always text-black or colors.onHighlight. White on Volt measures 1.1:1.
  3. Volt is never text on a light ground. Use accent, which is Volt in dark mode and #5C7A00 in light mode.
  4. The spectrum belongs to the mark and to the record button. It is not a background for text.
  5. Change both files. A colour lives in utils/color-theme.ts (Tailwind) and app/contexts/ThemeColors.tsx (JS); change them together.
Do
Live component
Do
Black label on Volt, 16.6:1.
Don't
Live component
Don't
White on Volt, 1.1:1. Unreadable in sunlight and for low vision.
03

Typography

Source
apps/mobile/tailwind.config.js · components/ThemedText.tsx

Two families. Outfit (Bold) for display titles through font-outfit-bold; the platform font (San Francisco on iPhone, Roboto on Android) for everything else. On the web, this site uses Inter in place of the platform font. The scale is compact on purpose: the owner found the templates' text oversized on a phone.

Outfit Bold · 4xl
26 / 32
.font-outfit-bold .text-4xl
Habari, Amara
Outfit Bold · 2xl
20 / 26
.font-outfit-bold .text-2xl
What's Your Number?
System · 4xl bold
26 / 32
.text-4xl .font-bold
Library
System · xl bold
17 / 22
.text-xl .font-bold
Record now
System · base
14 / 20
.text-base
Directions from the market
System · sm subtext
12.5 / 17
.text-sm .text-subtext
Tuesday 3 November
System · xs subtext
11 / 15
.text-xs .text-subtext
Swahili · 3:12 · Today
  • Body text is 14pt. Text with no size class renders at 14pt.
  • Screen and page titles are in Title Case: "Who Can Use Your Recordings", "How You're Paid".
  • ThemedText caps Dynamic Type at 1.25 times, so text grows for people who need it without breaking layouts.
  • The full scale, with every step, is on Foundations.
04

Iconography

Source
apps/mobile/components/Icon.tsx · apps/mobile/CLAUDE.md (sizing rules)

Icons are Lucide, drawn through the Icon component at a 1.75 stroke and 24pt by default, in the text colour unless they sit on a coloured surface.

Example
Live component
  1. Full-width calls to action are text only. "Send for review", "I Agree", "Save method". The one exception in the app is Record now on Home, which keeps its microphone because the icon is the meaning.
  2. Icons only where they add meaning: the leading icon of a settings row, a status, a round action, the record button.
  3. Icons come with words. An icon alone is a puzzle for a new reader; every icon button has a visible label or an accessibility label.
Do
Live component
Don't
Live component
Don't
Decoration on a full-width button adds noise, not meaning.
05

Imagery and Motion

Source
apps/mobile/components/AnimatedView.tsx · components/RecordButton.tsx · components/SessionCard.tsx · docs/ds/nzinga-ds.css

Imagery

  • The app uses no stock photography. Its pictures are the member's own profile photo (kept on the phone), the cowrie, and colour panels.
  • Guided sessions are colour panels in cyan, violet, magenta or flame with black content and one icon. The themes are everyday life, not scenery.
  • When people appear in marketing, show them as members with something to say. See the imagery rules in Culture.
Example
Live component

Motion

  • Motion confirms what happened: a screen fades in (AnimatedView), the balance digits flip, the chart line draws once, the record button breathes while it records.
  • Nothing moves on its own to attract attention, and nothing loops except the live recording state.
  • Short and quiet: fades of a few hundred milliseconds, no bounces on money or consent.
Warning
The app does not yet read the phone's Reduce Motion setting. See Accessibility, Motion for the rule and its current state.