Design System

How Mani looks

Public design system. Use it for your own riffs.

0. Logo & Mascot

The 5-layer breathing mascot is the brand mark. Comes in three sizes: nav 32px, inline 64px, hero 240px. Reduced-motion preference disables the breathing animation.

Mascot · three sizes

nav · 32px

Nav bar, footer

inline · 64px

Cards, badges

hero · 140-300px

Hero, auth pages

Brand Lockup · light theme + dark theme

The wordmark is Plus Jakarta Sans 800 with the i in Fraunces italic 400. The italic i inherits --grad-2 on light theme and --grad-3 on dark theme.

import Mascot from '@/components/Mascot.astro';
import BrandLockup from '@/components/BrandLockup.astro';

<!-- Mascot variants -->
<Mascot size={32} variant="nav" />     <!-- nav bar, footer -->
<Mascot size={64} variant="inline" />  <!-- cards, badges -->
<Mascot size={300} variant="hero" />   <!-- hero, auth pages -->

<!-- Lockup -->
<BrandLockup theme="light" />  <!-- on light backgrounds -->
<BrandLockup theme="dark" />   <!-- on dark backgrounds -->

1. Typography

Plus Jakarta Sans

Display headings. Weights 300-900.

Light 300 . The quick brown fox

Regular 400 . The quick brown fox

Semi 600 . The quick brown fox

Bold 700 . The quick brown fox

Extra 800 . The quick brown fox

Inter

Body text. Weights 300-700.

Light 300 . The quick brown fox

Regular 400 . The quick brown fox

Medium 500 . The quick brown fox

Semi 600 . The quick brown fox

Bold 700 . The quick brown fox

Fraunces

Italic accent only. Weights 400-700.

Regular 400 . The quick brown fox

Semi 600 . The quick brown fox

Bold 700 . The quick brown fox

JetBrains Mono

Code. Weights 400-500.

Regular 400 . The quick brown fox

Medium 500 . The quick brown fox

Type scale

h1 The quick brown fox
h2 The quick brown fox
h3 The quick brown fox
h4 The quick brown fox
h5 The quick brown fox
h6 The quick brown fox
body The quick brown fox jumps over the lazy dog. Pack my box with five dozen liquor jugs.
small The quick brown fox jumps over the lazy dog. Pack my box with five dozen liquor jugs.

2. Color

Brand

Brand Violet

#6E5CFF

Brand Gradient (3-stop, canonical)

135deg, #6E5CFF · #B05CD8 · #FF6B5C

/* Canonical 3-stop brand gradient (var(--gradient-brand)) */
--grad-1: #6E5CFF;  /* violet */
--grad-2: #B05CD8;  /* mid */
--grad-3: #FF6B5C;  /* coral */
background: linear-gradient(135deg, var(--grad-1), var(--grad-2), var(--grad-3));

Neutrals

Brand Violet

#6E5CFF

Violet Light

#a78bfa

Ink

#1a1a2e

Ink 2

#64748b

Ink 3

#94a3b8

Background

#f8f7ff

Elevated

#ffffff

Warm

#f5f3ff

Semantic

Success

#22c55e

Warning

#f59e0b

Error

#ef4444

/* Tailwind config */
colors: {
  'brand-violet': '#6E5CFF',
  'brand-violet-light': '#a78bfa',
  'ink': '#1a1a2e',
  'ink-2': '#64748b',
  'ink-3': '#94a3b8',
  'bg': '#f8f7ff',
  'bg-elevated': '#ffffff',
  'bg-warm': '#f5f3ff',
  'success': '#22c55e',
  'warning': '#f59e0b',
  'error': '#ef4444',
}

3. Spacing

4px base scale. Multiply by the token number.

1
4px
2
8px
3
12px
4
16px
6
24px
8
32px
12
48px
16
64px
24
96px
32
128px
spacing: {
  '1': '4px',   '2': '8px',   '3': '12px',
  '4': '16px',  '6': '24px',  '8': '32px',
  '12': '48px', '16': '64px', '24': '96px',
  '32': '128px'
}

4. Components

Buttons

<!-- Primary -->
<button style="background: linear-gradient(135deg, #6E5CFF, #a78bfa);
  color: white; border-radius: 9999px; padding: 12px 24px;">
  Primary action
</button>

<!-- Secondary -->
<button style="border: 1.5px solid #6E5CFF; color: #6E5CFF;
  border-radius: 9999px; padding: 12px 24px;">
  Secondary action
</button>

<!-- Ghost -->
<button style="color: #6E5CFF; background: transparent;
  border-radius: 9999px; padding: 12px 24px;">
  Ghost action
</button>

Cards

Elevated

Shadow lift, white background.

Warm

Tinted background, no shadow.

Bordered

Outline only, transparent fill.

<!-- Elevated -->
<div style="background: #fff; border-radius: 16px;
  box-shadow: 0 1px 3px rgba(0,0,0,0.06);">...</div>

<!-- Warm -->
<div style="background: #f5f3ff; border-radius: 16px;">...</div>

<!-- Bordered -->
<div style="border: 1.5px solid #e8e6f0;
  border-radius: 16px;">...</div>

Form fields

<input type="text"
  style="border: 1.5px solid #e8e6f0; border-radius: 8px;
    padding: 10px 16px; font-family: 'Inter', sans-serif;
    color: #1a1a2e; background: #fff;"
  placeholder="Enter your brand URL" />

5. Iconography

Lucide icons as base set. 24px default, 1.5px stroke.

*
Sparkles
*
Palette
*
Wand2
*
Image
*
Mail
*
BarChart3
*
Layers
*
Zap
*
Globe
*
Users
*
Settings
*
Download
import { Sparkles, Palette, Wand2 } from 'lucide-react';

<Sparkles size={24} strokeWidth={1.5} />

6. Motion

Easing

Default ease-out
Modals ease-in-out

Duration

Micro 150ms
Default 200ms
Page 300ms
Emphasis 500ms

Hover behavior

Cards: scale(1.02)

Hover this card to see the effect.

Links: underline

Hover this link to see the effect.

/* Cards */
.card { transition: transform 200ms ease-out; }
.card:hover { transform: scale(1.02); }

/* Links */
a { text-decoration: none; }
a:hover { text-decoration: underline; }

7. Tone of Voice

Friendly not casual
Confident not arrogant
Technical not jargon-heavy
Concise not curt

Full brand voice guidelines: Read the brand voice guide

8. Brand DNA Cards

Live preview of the Brand DNA result card component. This is what users see after Mani scans their URL.

Brand DNA

Your Brand Name

Voice 8.4
Palette 9.1
Typography 7.8
Imagery 8.9
Audience 7.2
Consistency 8.0
<!-- Brand DNA Card -->
<div style="border-radius: 16px; overflow: hidden;
  box-shadow: 0 4px 24px rgba(110, 92, 255, 0.12);">
  <!-- Header -->
  <div style="background: linear-gradient(135deg, #6E5CFF, #a78bfa);
    padding: 20px 24px;">
    <p style="color: rgba(255,255,255,0.7);">Brand DNA</p>
    <p style="color: white; font-weight: 700;">Your Brand Name</p>
  </div>
  <!-- Dimensions: Voice, Palette, Typography,
       Imagery, Audience, Consistency -->
  <div style="padding: 20px 24px;">...</div>
</div>

Download tokens

Grab the full design tokens file for your tools, or open the Figma library.

Questions about brand usage? hi@maniai.com

Try mani free