E-FACTS — E-receipt management companyE-FACTS — E-receipt management company
Design language

Color

Brand palette, 60-30-10 proportions, and WCAG contrast — click a swatch to copy hex

Color

Five core tokens plus one ESG accent. Click any swatch to copy its hex. Values live in src/app/global.css and map into Fumadocs chrome.

Hierarchy: ~60% Soft Canvas / Surface · ~30% Deep Trust Ink · ~10% Bright Accent.

Type pairing: Plus Jakarta Sans for headlines · Inter / SF Pro for body and tabular data.

Brand color palette

Bonus — Sustainability Emerald

Orange split (Bright vs CTA)

When tokens diverge, keep this assignment:

TokenHexUse
Primary CTA Orange#AB3500Marquee text fills, path anchor points, other AA structure accents
Bright Accent#FF6B35Decorative curve strokes, bezier control handles, fill-slide / button demos
On-bright#5F1900Labels on Bright filled buttons

Filled action buttons elsewhere may stay Bright + On-bright, or use #AB3500 + white where AA requires a darker fill. Do not paint large Bright fills with white labels.

CSS: --brand-orange-bright / --brand-orange-cta in src/app/global.css.

Proportions & accessibility

Visual 60-30-10

~60% Soft Canvas / Surface White, ~30% Deep Trust Ink, ~10% accent (Bright and/or CTA Orange by role).

  • ~60% Soft Canvas / Surface
  • ~30% Deep Trust Ink
  • ~10% Bright Accent

Bright + On-bright (required pairing)

White text on Bright Accent fails WCAG body-text contrast (~2.84:1). Use On-bright #5F1900 on Bright fills — that pairing clears AA at ~4.56:1. For marquee/structure text that sits on Canvas, prefer Primary CTA Orange #AB3500.

WCAG contrast matrix

Ratios use WCAG 2 relative luminance. Badges: AAA ≥ 7:1 · AA ≥ 4.5:1 · FAIL below AA for normal text.

PairPreviewRatioWCAG
On-bright on Bright Accent
#5F1900#FF6B35
Required label on filled primary CTAs
Aa4.56:1AA
Ink on soft canvas
#0F172A#F7F9FB
Body & titles
Aa16.92:1AAA
White on Bright Accent
#FFFFFF#FF6B35
Fails WCAG — do not use
Aa2.84:1FAIL
Emerald on mint
#059669#D1FAE5
ESG badge pairing
Aa3.32:1FAIL

Marketing gradient

Optional hero treatment — not for dense app chrome.

Marketing / hero gradient — plum → electric orange. Not for dense app chrome.

Gradient circles (atmospheric orbs)

Soft peach/orange radial discs sit behind hero marks and marketing moments. They are atmosphere, not content — the homepage hero uses one under the white S mark and a larger wash behind the receipt path.

Soft peach orb · Bright Accent `#FF6B35` at low alpha

  • Light: ~9–28% alpha · Dark: ~14–34% alpha
  • Size ≈ 40–70% of hero width · heavy blur · never a hard edge
  • Sit behind marks/type — do not compete with copy contrast

Spec

RuleGuidance
PurposeDepth / warmth behind a mark or headline — never primary UI
ColorBright Accent #FF6B35 (and soft tints toward CTA Orange #AB3500 if needed)
OpacityLight canvas ~9–28%; dark charcoal ~14–34% at the core, fall to transparent
Blur / sizeSoft blur; diameter roughly 40–70% of the hero width (or a local chip behind a mark)
StackingAlways pointer-events: none and behind type/marks (z below content)

Do / don’t

DoDon’t
Keep text contrast on Soft Canvas / InkObscure body copy or bury CTAs in the glow
Use white S marks over a stronger local orbDrop flat white marks on bare Soft Canvas (fails contrast)
Honor prefers-reduced-motion (static orb is fine — no pulse)Animate opacity/size on a loop in product chrome
Slightly raise alpha in dark modeSwap Soft Canvas for plum as the docs dark background

On this page