Fidelity

Fidelity's iOS app is institutional calm rendered as software.

Back to all styles

A live page in this style is not built yet — the CSS variables and the prompt below are enough to reproduce it.

At a glance

24tokens
11type steps
2radius steps
8pxspacing base

Fidelity, in one page

Fidelity's iOS app is institutional calm rendered as software. It is the home screen of one of the largest brokerages in the world, and the design carries that weight: the interface is dense with numbers, but the chrome around those numbers is deliberately quiet so the data never has to compete with decoration. Open the app and you land on the Summary screen — a greeting, your total account value set in a huge 34pt numeral, a green/red day-change line, a sparkline, and then a stacked list of accounts, watchlist symbols, and positions. There is no hero photograph, no marketing illustration, no playful empty-state mascot. The "hero" is your money, typeset large.

The signature gesture of the app is the portfolio + quote pairing: the Summary screen's value header and sparkline sit directly above a tap-through list that opens a full quote screen — symbol, last price, day change, an interactive line/candlestick chart with 1D/1W/1M/1Y/5Y/All ranges, bid/ask, and a sticky Trade button pinned to the bottom. This drill path (Summary → Account → Position → Quote → Trade ticket) is the spine of the entire product, and every screen on it shares the same visual language: a calm dark or light surface, a green primary action, and semantic green/red for performance.

The color system is unusually disciplined. Fidelity's brand is Fidelity Green (#368727) with a deeper Heritage Green (#00754A) — these carry logos, primary buttons, selected states, and brand moments. The single most important rule in the entire system is that green and red are reserved for financial semantics: a number is green if it gained, red if it lost, neutral gray if flat. The app never uses red for a destructive button styling or green for a generic success toast in a way that could be confused with a price move. Everything else — backgrounds, dividers, labels, icons — lives in a near-greyscale scale (with a faint green cast in dark mode) so the only saturated pixels on screen are the ones that mean something financially.

Typography is a clean grotesque sans paired with a tabular/monospaced numeric treatment. Fidelity's brand face is a custom grotesque ("Average Sans" family in their brand system); on iOS it falls back to SF Pro, and a faithful free substitute is Inter. Balances, prices, percentages, and dollar deltas are set with tabular figures so columns of money line up perfectly down a list — this monospaced-numeral discipline is a core part of the brand's "we are precise with your money" feeling. Headings are 700 weight; body is 400; numeric data leans 600–700 for emphasis.

Key Characteristics:

Do's and don'ts

Do

  • Use Fidelity Green (#368727) for the primary action and brand moments; Heritage Green (#00754A) for money-movement actions
  • Reserve green/red strictly for financial semantics — gain #15833E/#15B374, loss #D32F2F/#E5544B
  • Set every monetary figure in tabular/monospaced lining figures so columns align
  • Make the total account value the visual hero — 34pt, bold, with a day-change line and sparkline directly below
  • Keep the Summary → Account → Position → Quote → Trade drill path consistent in every screen's chrome
  • Pin a sticky green Trade button to the bottom of every quote screen
  • Use a deep evergreen #0E1411 for dark mode — never pure black
  • Use hairline-separated single-column lists for holdings; reserve cards for summary/quote/estimate groupings
  • Keep range tabs (1D/1W/1M/1Y/5Y/All) as compact pills under every chart
  • Use a calm tonal ring (greens + grays + one gold) for asset allocation

Don't

  • Don't use red for a generic destructive button or green for a non-financial success toast in a way that reads like a price move
  • Don't use proportional figures for money — columns must align; tabular is mandatory
  • Don't add marketing illustrations, mascots, or photographic heroes to core trading screens
  • Don't animate the digits of a changing balance with a slide/roll — only a brief color cross-fade
  • Don't use pure black (#000000) for the dark canvas — #0E1411 evergreen is correct
  • Don't put card borders/shadows around plain list rows — Fidelity lists are flat hairlines
  • Don't introduce a second saturated accent color — the palette is green + semantic red on near-greyscale
  • Don't bury the Trade button below the fold — it is sticky and always reachable
  • Don't use bright/neon greens for brand surfaces in light mode — #368727/#00754A are the institutional anchors
  • Don't over-animate; money UI is calm — 120–300ms ease-out, no bounce on financial data

Copy this into your AI builder

Paste it as-is. Every value below was measured from the original site, not guessed.

Assembled from the measured tokens — the source document has no prompt block.

Build a page in the Fidelity design language. Follow the measured tokens below — do not substitute your own palette.

Colors:
- Fidelity Green: #368727
- Heritage Green: #00754a
- Fidelity Green Pressed: #2a6b1f
- Leaf Accent: #4fb23b
- Canvas White: #ffffff
- Surface Gray: #f4f6f4
- Surface Pressed: #e8ece8
- Divider: #e1e5e1
- Hairline Strong: #c9d0ca
- Dark Canvas: #0e1411

Type:
- families: Average Sans, Brand, Inter, Fallback Stack
- scale: 10, 11, 12, 13, 14, 15, 16, 18, 22
- weights: 400, 500, 600, 700, 800

Shape:
- radius: 8, 10

Spacing: 8, 12, 14

Rules:
- Use Fidelity Green (`#368727`) for the primary action and brand moments; Heritage Green (`#00754A`) for money-movement actions
- Reserve green/red strictly for financial semantics — gain `#15833E`/`#15B374`, loss `#D32F2F`/`#E5544B`
- Set every monetary figure in tabular/monospaced lining figures so columns align
- Make the total account value the visual hero — 34pt, bold, with a day-change line and sparkline directly below
- Keep the Summary → Account → Position → Quote → Trade drill path consistent in every screen's chrome
- Pin a sticky green Trade button to the bottom of every quote screen

Avoid:
- Don't use red for a generic destructive button or green for a non-financial success toast in a way that reads like a price move
- Don't use proportional figures for money — columns must align; tabular is mandatory
- Don't add marketing illustrations, mascots, or photographic heroes to core trading screens
- Don't animate the digits of a changing balance with a slide/roll — only a brief color cross-fade
- Don't use pure black (`#000000`) for the dark canvas — `#0E1411` evergreen is correct
- Don't put card borders/shadows around plain list rows — Fidelity lists are flat hairlines

Keep every value literal. If a token is given, use that exact value.

The specification

Colour paletteRead the full spec

Primary (Interactive / Brand)

  • Fidelity Green (#368727): Primary brand & action color — Trade button, primary CTAs, brand moments, selected toggle fills.
  • Fidelity Green Pressed (#2A6B1F): Pressed state of the primary button.
  • Heritage Green (#00754A): Deeper brand green — secondary brand surfaces, logo lockups, "Transfer" / banking actions, headers.
  • Leaf Accent (#4FB23B light contexts use #368727; dark uses #4FB23B): Links, selected tab tint, inline text actions where contrast on dark requires a brighter green.

Canvas & Surfaces (Light Mode)

  • Canvas White (#FFFFFF): Primary light canvas.
  • Surface Gray (#F4F6F4): Grouped-list background, cards, subtle elevated rows.
  • Surface Pressed (#E8ECE8): Pressed / selected rows.
  • Divider (#E1E5E1): Hairline dividers between list rows.
  • Hairline Strong (#C9D0CA): Section separators, table rules.

Canvas & Surfaces (Dark Mode)

  • Dark Canvas (#0E1411): Primary dark canvas — Fidelity's evergreen-tinted dark, NOT pure black.
  • Dark Surface 1 (#16201B): Cards, grouped sections, elevated surfaces.
  • Dark Surface 2 (#1F2C24): Ticker chips, raised rows, pressed surfaces.
  • Dark Divider (#26342B): Hairline dividers.

Text

  • Text Primary Light (#1A1F1B): Primary text — near-black with a faint warm-green cast.
  • Text Secondary Light (#5A655C): Metadata, labels, secondary rows.
  • Text Tertiary Light (#8A938C): Disabled, lowest emphasis.
  • Text Primary Dark (#E8EFE9): Primary text on dark.
  • Text Secondary Dark (#9DB0A2): Metadata on dark.
  • Text Tertiary Dark (#6B7E72): Disabled on dark.

Semantic — Financial (the most important colors in the system)

RoleLight ModeDark ModeUse
Gain (positive)#15833E#15B374Positive price change, positive $ delta, positive %
Loss (negative)#D32F2F#E5544BNegative price change, negative $ delta, negative %
Flat (unchanged)#5A655C#9DB0A20.00% change — uses secondary text color
Up Fill (chart)#36872729#36872729Sparkline / area chart gradient fill (16% green)

Semantic — System

  • Error / Alert (#D32F2F light / #E5544B dark): Form validation, blocked-action banners (visually identical to Loss — context disambiguates).
  • Warning Amber (#C8862B): Caution banners, pending-transfer notices.
  • Success Confirmation (#15833E light / #15B374 dark): Order-placed confirmation (same as Gain — intentional brand consistency).
  • Info Blue (#1E6FB8): Informational links to disclosures, "Learn more".
  • Gold Tier (#C8A24B): Premium / Private Client Group accent, rewards tier badges.
Type scaleRead the full spec

Font Family

  • Brand: Average Sans — Fidelity's custom grotesque sans used across brand and product.
  • iOS Fallback: -apple-system, 'SF Pro Text', 'SF Pro Display' — system face on device.
  • Recommended free substitute: Inter (by Rasmus Andersson, SIL OFL) — geometric humanist grotesque with excellent tabular-figure support, the closest free match.
  • Numeric treatment: Tabular / monospaced lining figures everywhere money appears (balances, prices, %, $ deltas, table columns). In Inter use font-feature-settings: "tnum" 1;; on SF use .monospacedDigit().
  • Fallback Stack: 'Average Sans', -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Roboto, Helvetica, Arial, sans-serif

Hierarchy

RoleFontSizeWeightLine HeightLetter SpacingNotes
Balance HeroInter34pt8001.1-0.6ptTotal account value — tabular figures
Screen TitleInter26pt7001.2-0.3pt"Accounts", "Summary" — large-title nav
Section HeaderInter22pt7001.25-0.2pt"Today's positions", "Watchlist"
Card TitleInter18pt7001.3-0.1ptFund / position names
BodyInter16pt4001.50ptParagraph copy, descriptions
Row ValueInter16pt7001.30ptPrice / value in a list row — tabular
Row SymbolInter15pt6001.30ptTicker symbol in a holding row
MetaInter14pt4001.40pt"Last updated 4:00 PM ET", account masks
Numeric MonoInter (tnum)13pt6001.30pt$ delta + % change line — always tabular
CaptionInter12pt5001.350ptAccount type, disclosure footnotes
ButtonInter16pt7001.00ptPrimary / secondary buttons
Tab LabelInter10pt6001.00.1ptBottom tab labels
Range TabInter11pt6001.00.2pt1D / 1W / 1M / 1Y chart range chips

Principles

  • Money is tabular, always: every figure that represents currency, a price, a quantity, or a percentage uses lining tabular figures so columns align down a list. This is the single most recognizable typographic trait of the brand.
  • Weight signals data importance: balances and prices are 700–800; labels are 400–500. The eye should land on the number first.
  • Headings are bold grotesque: 700 weight, slightly negative tracking — institutional, confident, never light or condensed.
  • Restrained scale: the type ramp is compact (10 → 34pt). Hierarchy comes from weight and tabular emphasis, not dramatic size jumps.
  • Dynamic Type first-class: balance, titles, body, meta scale; tab labels, range tabs, and chart-axis labels stay fixed for layout integrity.
Components and layoutRead the full spec

Buttons

Primary Button (Trade / Continue / Place Order)

  • Shape: Rounded rectangle, 8pt corner radius
  • Background: #368727 (Fidelity Green)
  • Text: #FFFFFF, Inter 16pt weight 700
  • Padding: 14pt vertical, 28pt horizontal; full-width variant spans content inset minus 16pt
  • Pressed: background #2A6B1F + scale 0.98
  • Disabled: #368727 at 40% opacity, text #FFFFFF at 60%
  • Sticky variant: pinned to bottom safe area on quote / trade screens with a 0.5pt top divider and surface backdrop

Heritage / Secondary Action Button (Transfer / Move money)

  • Background: #00754A (Heritage Green)
  • Text: #FFFFFF, Inter 16pt weight 700
  • Same shape / padding as primary
  • Pressed: darken 10% + scale 0.98

Outline Button (Add to watchlist / Secondary)

  • Background: transparent
  • Border: 1.5pt #368727 light / #4FB23B dark
  • Text: #368727 light / #4FB23B dark, Inter 15pt weight 700
  • Corner radius: 8pt
  • Pressed: 8% green tint fill

Pill / Filter Button

  • Background: #F4F6F4 light / #1F2C24 dark
  • Border: 1pt divider
  • Text: primary text, Inter 14pt weight 600
  • Corner radius: 500pt (pill)
  • Selected: fill #368727, text #FFFFFF

Text Button (View all holdings / Edit)

  • Text: #368727 light / #4FB23B dark, Inter 14pt weight 700
  • No background, no underline
  • Pressed: 60% opacity

Core Atoms

Holding / Watchlist Row

  • Height: 64pt
  • Leading: 38pt ticker chip — #F4F6F4 / #1F2C24 rounded 10pt, symbol in 12pt weight 800; brand-held funds tint to 18% green
  • Middle: symbol (15pt w600) over name (12pt w400 secondary, truncates)
  • Trailing (right-aligned): value (16pt w700 tabular) over % change (12pt w600, gain green / loss red)
  • Divider: 0.5pt hairline below
  • Pressed: full-row #E8ECE8 / surface-2 highlight; chevron disclosure optional

Balance Header Block

  • Greeting: 13pt w500 secondary
  • Screen title: 26pt w700
  • "Total account value" label: 12pt w500 secondary
  • Balance: 34pt w800 tabular
  • Day-change line: triangle glyph + +$3,841.20 (13pt w600 tabular gain/loss) + (+0.90%) today (muted)

Sparkline / Area Chart

  • Stroke: 2pt — #4FB23B (gain day) or #E5544B (loss day)
  • Fill: vertical gradient of the stroke color, 32% → 0% opacity
  • Baseline: optional 0.5pt dashed divider at the open price
  • Range tabs below: 1D / 1W / 1M / 1Y / 5Y / All — 11pt w600 pills; active = #368727 fill, white text

Quote Card

  • Background: #F4F6F4 / #1F2C24, 12pt corner radius, 14×16pt padding
  • Left: symbol (16pt w800) over name (12pt secondary)
  • Right: price (16pt w700 tabular) over % (12pt w700 gain/loss)

Performance Pill

  • Padding: 8pt × 14pt, 8pt corner radius
  • Gain: bg #15B37429 (16% gain green), text gain green, leading ▲
  • Loss: bg #E5544B29, text loss red, leading ▼
  • Flat: bg surface-2, text secondary, leading —

Navigation

Bottom Tab Bar

  • Height: 56pt + safe area
  • Background: surface with saturate(180%) blur(20px) translucency, 0.5pt top divider
  • Tabs (5): Summary, Planning, Invest, News, Profile
  • Icon size: 22pt
  • Active: #4FB23B (dark) / #368727 (light), filled glyph
  • Inactive: tertiary text, stroked glyph
  • Labels: Inter 10pt w600, always shown

Top Nav (Quote / Detail screens)

  • Height: 44pt + safe area
  • Leading: back chevron + screen/symbol title (compact, appears on scroll past hero)
  • Trailing: watchlist star (toggle) + ⋯ overflow (alerts, share, account actions)
  • Large-title collapses to inline title on scroll (iOS large-title pattern)

Segmented Control (Positions / Activity / Balances on an account)

  • Underline style: active segment carries a 2pt #368727 underline, label in primary; inactive in secondary
  • Height: 44pt; full-width equal segments

Input Fields

Search Bar (Find a symbol)

  • Height: 40pt
  • Background: #F4F6F4 / #1F2C24, 8pt corner radius
  • Leading magnifier 16pt secondary; placeholder "Search quotes & news" 14pt secondary
  • Focus: 1.5pt #368727 border

Trade Ticket Field (Quantity / Limit price)

  • Height: 52pt
  • Background: surface, 8pt corner radius, 1pt divider border
  • Label floats above (12pt w600 secondary); value 18pt w700 tabular, right-aligned
  • Focus: border #368727 1.5pt
  • Error: border #D32F2F, helper text in loss red 12pt

Distinctive Components

Trade Ticket

  • Full-sheet form: symbol header (price + day change), Action (Buy/Sell segmented), Quantity, Order type (Market/Limit/Stop), Time-in-force, estimated cost summary card, sticky Preview order primary button
  • Estimated-cost card: surface, 12pt radius, label/value rows with tabular figures
  • Review screen restates everything before a final green Place order button

Account Summary Card

  • Account name + masked number (••3814), 18pt w700 title
  • Value: 22pt w800 tabular
  • Day change line in gain/loss
  • Tap → account detail (Positions / Activity / Balances segmented)

Positions Table

  • Columns: Symbol | Last | Day chg % | Mkt value (tabular, right-aligned)
  • Sortable headers; alternating-free flat rows separated by hairlines
  • Footer total row in 700 weight

News / Research Tile

  • Headline (16pt w700, 2-line clamp), source + timestamp (12pt secondary), optional related-symbol chips with inline gain/loss

Performance Donut / Asset-Allocation Ring

Responsive behaviourRead the full spec

Device Sizes

DeviceWidthKey Changes
iPhone SE (3rd gen)375ptBalance hero 30pt; tighter 16pt insets; sparkline 80pt tall
iPhone 15/16393ptStandard layout; balance 34pt
iPhone 15/16 Pro393ptDynamic Island accommodated in top nav
iPhone 15/16 Pro Max430ptBalance hero 38pt; chart 120pt tall; larger rows
iPad (portrait)768ptTwo-pane: accounts/watchlist list (360pt) + detail pane
iPad (landscape)1024pt+Three-zone: nav rail + list + quote/chart detail; chart full-height

Dynamic Type

  • Balance hero, screen title, section header, body, meta: full scale
  • Tab labels, range tabs, chart-axis labels, table column headers: FIXED (layout-sensitive)
  • Tabular numerals remain tabular at all sizes (never substitute proportional)

Orientation

  • iPhone: portrait-primary; charts may rotate to a full-screen landscape chart view with crosshair scrubbing
  • iPad: split-view controller — primary list rail + secondary detail; rotation preserves selection

Touch Targets

  • List row: 64pt tall, full-row tap
  • Tab bar icon: 22pt glyph, 56pt hit
  • Range-tab pill: 28pt tall, 44pt hit
  • Sticky Trade button: 52pt tall minimum
  • Watchlist star toggle: 24pt glyph, 44pt hit

Safe Area Handling

  • Top: large-title and top nav respect safe area and Dynamic Island
  • Bottom: sticky Trade button and tab bar respect home indicator; both add safe-area padding
  • Keyboard: trade-ticket fields scroll above the keyboard; sticky bar repositions above the keyboard during entry
  • Sides: 20pt content inset; charts/cards extend to 16pt

Drop-in CSS variables

The same values as a theme block. Add the class to <body> and the site repaints.

body.theme-fidelity {--page-bg: #ffffff;
  --page-bg-gradient: none;
  --text-color: #0e1411;
  --heading-color: #0e1411;
  --link-color: #00754a;
  --link-hover-color: #00422a;
  --border-color: #d4d5d4;
  --card-bg: #ffffff;
  --card-shadow: 0 1px 2px rgba(14,20,17,0.06);
  --card-hover-shadow: 0 6px 18px rgba(14,20,17,0.12);
  --header-bg: #0e1411;
  --header-text-color: #ffffff;
  --header-shadow: none;
  --footer-bg: #ffffff;
  --footer-text-color: #626664;
  --button-bg: #00754a;
  --button-text-color: #ffffff;
  --button-hover-bg: #00422a;
  --button-border: none;
  --button-border-radius: 10px;
  --button-secondary-bg: #f1f1f1;
  --button-secondary-text-color: #0e1411;
  --button-secondary-hover-bg: #e2e3e2;
  --button-secondary-border: 1px solid #d4d5d4;
  --prompt-bg: #f3f3f3;
  --prompt-text-color: #0e1411;
  --base-font: var(--font-helvetica);
  --heading-font: var(--font-inter);
  --card-border-radius: 10px;
}

Download theme.css

Visually close to

Measured with a deterministic colour + geometry comparison across 958 styles. Not a hand-picked list.

Where this came from

Source document
ios/design-md/finance/fidelity/DESIGN.md · 25.3 KB
Repository
Meliwat/awesome-ios-design-md
Licence
MIT

Source text is reproduced under its original licence. Tokens, similarity scores and page structure are ours.