Brand Guidelines

Colors

The Semji theme uses a semantic color system: you reference roles like primary or base-200 — not raw hex — so components stay consistent and the whole UI re-themes from one place. Each swatch shows its resolved Light & Dark value and a live WCAG contrast badge for its -content pairing; click any value or chip to copy it.

Contrast badge:AA / AAAbody-text safeAA largelarge text / UI onlyfailbelow the 3:1 floor — don’t put text on it

Semantic, not hardcoded

Use bg-primary over bg-[#FF4D64] — for consistency, easy theming and scale.

Every color has a “content” pair

text-primary-content is the foreground meant to sit on bg-primary (like MUI’s contrastText). The “Aa” chips + badges prove it.

One theme, two modes

Brand & surface roles resolve per theme (semji / semji-dark) — both values are shown. Extended palettes are fixed.

Naming grammar

Learn the pattern once and you can predict every token.

bg-primarya role/fill
text-primary-contentthe foreground that sits on that fill
base-100 → 200 → 300surfaces by elevation / contrast order
ink-*the text-tone ramp (darkest → lightest)
-softa low-emphasis tint (badge-soft, btn-soft)
bg-primary/10opacity modifier (10%)

Brand & action colors

The four core roles. Each is a fill you place its -content foreground on.

Primary

Primary actions, links, focus & active nav — the Semji pink.

Light
Dark

The single main action on a view, links, focus rings.

Fill large areas or use for body text.

Secondary

Secondary actions and supporting accents.

Light
Dark

Secondary buttons and supporting emphasis.

Compete with the primary action.

Accent

Tertiary brand highlight (petrol-teal).

Light
Dark

Highlight or categorize sparingly (tags, hints).

Use as a default button color.

Neutral

Dark chrome, neutral buttons & high-contrast surfaces.

Light
Dark

Dark chrome, neutral/dark buttons, contrast bars.

Use as a page background.

Surfaces & text

Backgrounds from lightest to the dark hairline/shadow tint, plus body text.

Base 100

Cards & raised surfaces.

Light
Dark

Cards, popovers, raised surfaces.

Use as the page background (use base-200).

Base 200

App / page background.

Light
Dark

The app/page background behind cards.

Place low-contrast text directly on it.

Base 300

Borders, hairlines & shadow tint — intentionally dark, never a text surface.

Light
Dark

Borders, dividers, shadow tint (shadow-base-300/X).

Use as a surface fill or place text on it — it is a tint, not a surface.

Base content

Primary text on base surfaces (ink).

Light
Dark

Body & heading text on base surfaces.

Place on a colored fill (use that color’s -content).

State colors

Feedback colors for alerts, badges and validation.

Info

Neutral, informational messages.

Light
Dark

Informational banners and badges.

Signal success or errors.

Success

Successful completion of an action.

Light
Dark

Confirm completed actions; positive validation.

Use for neutral info or as a brand color.

Warning

Caution or important notices.

Light
Dark

Caution, pending, attention-needed states.

Use for hard/destructive errors.

Error

Errors & destructive actions.

Light
Dark

Destructive actions, failures, invalid input.

Use for non-actionable information.

Opacity & emphasis

Two orthogonal axes layered on any color: an opacity modifier and the soft / outline emphasis variants.

Opacity modifier — bg-primary/NN

10%
20%
30%
40%
60%
80%
100%

Muted-text ladder — text-base-content/NN

Primary text — text-base-content

Secondary text — text-base-content/70

Tertiary / muted — text-base-content/50

Disabled — text-base-content/30

Button treatments (orthogonal to color) — solid / soft / outline / text / gradient / wave

Click “Wave” to see the press ripple.

Badge variants — solid / soft / outline

badgebadge-softbadge-outline

Extended brand palettes

Non-semantic utilities for richer brand work — fixed across themes. Each ramp step lists its job.

Eggplant ramp

App background / wash
Subtle background
Component background
Component bg (hover)
Component bg (active)
Subtle border
Border / focus ring
Hovered border
Solid fill
Solid fill (strong)
Text on light

Score & AI accents — score = content score · ai = AI/agent surfaces (not a decorative pop)

Blue

Ink ramp (text & icons)

Primary text
Headings / dark chrome
Strong secondary text
Secondary text
Tertiary / placeholder
Disabled / hairlines

Using colors

Any color works with every Tailwind color prefix — here each one is shown live on primary, not just labelled.

bg-primary
primary
text-primary
border-primary
ring-primary
fill-primary
stroke-primary
shadow-primary
outline-primary
Aa
Bb
divide-primary
from-primary
via-primary
to-primary