01

Colors

The palette is organized into primitive colors (raw palette) and semantic tokens (contextualized usage). Always prefer semantic tokens in code.

1.1 Primitive palette

Brand Main color
100
300
500 ★
700
800
TokenHexUsage
color/brand/100#FEE4E0Light backgrounds, subtle states
color/brand/300#FCAFA3Badges, chips, soft hover
color/brand/500#FA6048Main color — CTA, highlights
color/brand/700#D0503CHover/pressed state
color/brand/800#A64030Active/deep focus state
Accent — Clay Terracotta
100
300
500
700
800

Warm terracotta tone used to enrich the palette without competing with the main color.

Accent — Mint Glow Mint green
100
300
500 ★
700
800

Vivid mint accent for success indicators, badges and secondary accent elements.

Grey — Neutrals
50
100
200
300
400
500
600
700
800
900

Warm neutrals (slight brown-terracotta tint). Used for text, borders, backgrounds and dividers.

Semantic colors

Reserved for system feedback. Click a palette to copy the 500 token.

Error
100
300
500
700
900
Warning
100
300
500
700
900
Information
100
300
500
700
900
Success
100
300
500
700
900

1.2 Semantic tokens

Always use these tokens in code rather than raw hex values.

Text
color/text/neutral/bold/default
Headings, primary text
color/text/neutral/subtle/default
Body text
color/text/neutral/subtlest/default
Placeholders, secondary
Backgrounds
…neutral/subtlest/default
Page background
…neutral/subtle/default
Alternative backgrounds
…brand/bold/default
Primary buttons, CTA
…brand/bold/hovered
Primary button hover
…brand/subtle/default
Light brand backgrounds
…accent-mint/bold/default
Mint accent badges
…success/bold/default
Success state
Borders
…neutral/subtlest/default
Light borders, dividers
…neutral/bold/default
Bold borders
…brand/bold/default
Focus ring, selection
02

Dimensions

Scale based on a 4 px grid. These tokens serve primarily as a foundation for typography (font sizes, line heights).

Complete scale

Fine steps
dimension-1004 px
dimension-2008 px
dimension-25010 px
dimension-30012 px
dimension-40016 px
dimension-50020 px
dimension-60024 px
dimension-70028 px
dimension-80032 px
Large steps
dimension-100040 px
dimension-110044 px
dimension-120048 px
dimension-140056 px
dimension-160064 px
dimension-180072 px
dimension-200080 px
dimension-220088 px
dimension-2600104 px
dimension-3000120 px
03

Spacing, radius & borders

3.1 Spacing

Spacing scale (padding, margin, gap) based on a 4 px grid.

spacing-none
0
Reset
spacing-xs
4 px
Icons, badges
spacing-sm
8 px
Tight spacing
spacing-md
12 px
Internal standard
spacing-lg
16 px
Button padding
spacing-xl
20 px
spacing-2xl
24 px
Card padding
spacing-3xl
32 px
Component gap
spacing-4xl
40 px
Section
spacing-5xl
48 px
spacing-6xl
56 px
spacing-7xl
80 px
Large sections
120 px
spacing-8xl
120 px
Page margins, hero

3.2 Border radius

radius-none0 px
radius-xs4 px
radius-sm8 px
radius-md12 px
radius-lg16 px
radius-xl24 px
radius-full999 px

3.3 Border width

border-none
0 px — No border
border-thin
1 px — Dividers, inputs
border-default
2 px — Components, focus ring
border-thick
4 px — Accents, active selection
04

Layout

4.1 Breakpoints

breakpoint-xs 320 → 479 px Small mobiles
breakpoint-sm 480 → 768 px Large mobiles & portrait tablet
breakpoint-md 769 → 1279 px Small desktops & landscape tablet
breakpoint-lg 1280 px + Large desktops
/* Mobile first */ @media (min-width: 480px) { /* breakpoint-sm */ } @media (min-width: 769px) { /* breakpoint-md */ } @media (min-width: 1280px) { /* breakpoint-lg */ }

4.2 Grids

Mobile & portrait tablet — 4 columns, 16 px gutter
Desktop & landscape tablet — 12 columns, 24 px gutter

Rule: design in 4 columns for mobile, then switch to 12 columns from breakpoint-md.

05

Typography

Typeface: Neulis Neue (rendered here with DM Sans, same weight range). Available weights: Light 300, Regular 400, Medium 500, Semi Bold 600, Bold 700, Extra Bold 800.

5.1 Headings

Display
text/display/desktop 104px · lh 120px · Bold 700
Design System
text/display/mobile 80px · lh 88px · Bold 700
Design System
Heading 1
text/heading1/desktop 80px · lh 88px · Bold 700
Page title
text/heading1/mobile 64px · lh 72px · Bold 700
Page title
Heading 2
text/heading2/desktop 40px · lh 56px · Bold 700
Section subtitle
text/heading2/mobile 32px · lh 40px · Bold 700
Section subtitle
Heading 3
text/heading3/desktop 32px · lh 44px · Extra Bold 800
Component title
text/heading3/mobile 28px · lh 40px · Extra Bold 800
Component title

5.2 Body text

3 sizes × 4 weights. body/regular/medium is the default text style.

Large — 24 px
body/thin/large24px · lh 32px · Light 300
The design system ensures visual consistency.
body/regular/large24px · lh 32px · Regular 400
The design system ensures visual consistency.
body/semi/large24px · lh 32px · Semi Bold 600
The design system ensures visual consistency.
body/bold/large24px · lh 32px · Bold 700
The design system ensures visual consistency.
Medium — 20 px
body/thin/medium20px · lh 28px · Light 300
The design system ensures visual consistency.
body/regular/medium20px · lh 28px · Regular 400
The design system ensures visual consistency.
body/semi/medium20px · lh 28px · Semi Bold 600
The design system ensures visual consistency.
body/bold/medium20px · lh 28px · Bold 700
The design system ensures visual consistency.
Small — 16 px
body/thin/small16px · lh 24px · Light 300
The design system ensures visual consistency.
body/regular/small16px · lh 24px · Regular 400
The design system ensures visual consistency.
body/semi/small16px · lh 24px · Semi Bold 600
The design system ensures visual consistency.
body/bold/small16px · lh 24px · Bold 700
The design system ensures visual consistency.

5.3 Labels

For buttons, form fields and field labels. Always prefer label styles over body for these use cases.

label/regular/large24px · Medium 500
Field label
label/bold/large24px · Bold 700
Primary button
label/regular/medium20px · Medium 500
Field label
label/bold/medium20px · Bold 700
Primary button
label/regular/small16px · Medium 500
Field label
label/bold/small16px · Bold 700
Secondary button

5.4 Captions

Helper text, captions, metadata, legal notices.

caption/large16px · lh 20px · Regular 400
Helper text below a form field or image caption.
caption/medium12px · lh 16px · Regular 400
Timestamp · Metadata · Secondary info
caption/small10px · lh 16px · Regular 400
Legal notice · Copyright · Compact tertiary info
06

Button

The Button component is the primary action element. It comes in 3 styles, 5 states and 3 sizes. Always use the label/bold type style on button text.

6.1 Styles & states

Three visual styles address different levels of emphasis in the interface. Each style has 5 interactive states.

Primary — for main CTAs
Secondary — alternative action
Ghost — low emphasis action
StyleStateBackground tokenBorder tokenText token
PrimaryDefaultcolor/background/brand/bold/default #FA6048color/border/brand/bold/defaultcolor/text/inverse/bold/default — white
PrimaryHoveredcolor/background/brand/bold/hovered #D0503Ccolor/border/brand/bold/hoveredwhite
PrimaryPressedcolor/background/brand/bold/pressed #A64030color/border/brand/bold/pressedwhite
PrimaryDisabledcolor/background/brand/bold/disabled #A39C9Bcolor/border/brand/bold/disabledcolor/text/inverse/bold/disabled — rgba(255,255,255,0.5)
SecondaryDefaultcolor/background/neutral/subtlest/default #FFFFFFcolor/border/neutral/subtle/defaultcolor/text/neutral/bold/default — #272323
SecondaryHoveredcolor/background/neutral/subtle/hovered #D1CDCDcolor/border/neutral/subtle/hovered#272323
SecondaryPressedcolor/background/neutral/subtle/pressed #BAB5B4color/border/neutral/subtle/pressed#272323
GhostDefaulttransparentcolor/border/neutral/bold/default #272323color/text/neutral/bold/default — #272323
GhostHoveredcolor/background/neutral/subtlest/hovered #E8E6E6#272323#272323
GhostPressedcolor/background/neutral/subtlest/pressed #D1CDCD#272323#272323
AllFocusedSame as Default + outer outline: color/icon/neutral/bold/default 2px, offset 4px, radius full

6.2 Sizes

Large
Medium
Small
SizeFont sizeLine heightPadding (V / H)Token
Large24 px32 px20 px / 32 pxtext/label/bold/large
Medium20 px28 px16 px / 24 pxtext/label/bold/medium
Small16 px24 px12 px / 24 pxtext/label/bold/small

All sizes share: border-radius border-radius/radius-full (999 px) · border-width border-width/border-default (2 px) · optional icon 24 × 24 px on left.

✓ Do

Use Primary for the single main action per view. Keep label short and action-oriented.

✗ Don't

Don't use two Primary buttons side by side — it creates visual ambiguity. Use Secondary or Ghost for the secondary action.

08

Tag

Small pill labels used to categorize content, indicate status, or display metadata. Available in 5 styles and 3 sizes.

8.1 Styles

All styles — Large
Default Bold Inverted Ghost Disabled
Sizes — Default style
Large 24 px
Medium 20 px
Small 16 px
StyleBackgroundBorderText
Defaultcolor/background/brand/subtle/default #FCAFA3color/icon/brand/subtle/defaultcolor/text/neutral/bold/default — #272323
Boldcolor/background/brand/bold/default #FA6048color/icon/brand/bold/defaultcolor/text/inverse/bold/default — white
Invertedcolor/background/neutral/subtle/default #E8E6E6color/border/neutral/subtle/defaultcolor/text/neutral/bold/default — #272323
Ghosttransparentcolor/border/neutral/bold/default #272323color/text/neutral/bold/default — #272323
Disabledcolor/background/neutral/subtle/disabled #E8E6E6color/border/neutral/subtle/defaultcolor/text/neutral/bold/disabled — #756B69

All tags: border-radius border-radius/radius-full (999 px) · border-width border-width/border-thin (1 px) · backdrop-filter blur(10 px) · font text/label/regular/{size} (Neulis Neue Medium 500).

✓ Do
CASE STUDY NEW

Use Default for categories, Bold for high-emphasis labels like "New" or "Featured".

✗ Don't
Click me

Don't use the Disabled style for interactive tags — it signals that the element is non-clickable.

09

Card

Content container used to present a project, case study, or article. Composed of an optional image area, a title, body text, and a primary CTA button.

9.1 Anatomy

🖼
Wine learning portal
An educational platform featuring lessons, videos, and quizzes to learn about wine.
ElementToken / Spec
Container bordercolor/border/neutral/subtle/default 2 px · radius 30 px
Width500 px (fixed)
Image area218 px height · radius top-left + top-right 30 px
Content paddingtop 40 px · sides 32 px · bottom 60 px
Gap (content block)23 px
Titletext/heading3/desktop — Extra Bold 32 px / 44 px
Descriptiontext/body/regular/large — Regular 24 px / 32 px
CTAButton Medium Primary
Backgroundcolor/background/neutral/subtlest/default — #FFFFFF
✓ Do

Always pair the card with an image. The visual creates an immediate entry point and reinforces the brand identity.

✗ Don't

Don't truncate the title — let it wrap naturally. Cards have a fixed width of 500 px designed to accommodate 2–3 lines of heading.

10

Input

Form field component with 5 functional styles and 7 interactive states. Uses a floating label pattern when the field is focused or filled.

10.1 Styles

Text
Title
Password
Title
Forgotten password?
Dropdown
Title
Search
Search
Large Text
Title
0/200 characters

10.2 States

Default
Title
Hovered
Title
Focused
Title |
Typing
Title Text |
Error / Empty
Title Text |
Error
Disabled
Title
StateBorder tokenValueBackground
Defaultcolor/border/neutral/subtle/default#D1CDCDwhite
Hoveredcolor/border/neutral/subtle/hovered#BAB5B4white
Focused / Typingcolor/border/neutral/bold/default#272323white
Error / Emptycolor/border/danger/bold/default#D73325white
Disabledcolor/border/neutral/subtle/disabled#BAB5B4color/background/neutral/subtlest/disabled #E8E6E6

Structure: border-radius border-radius/radius-sm (4 px) · border-width border-width/border-thin (1 px) · padding 12 px × 16 px. Label uses floating pattern: full size (text/body/regular/small) when empty, shrinks to text/caption/small (10 px, grey/500) when focused or filled. Error text: text/caption/medium (12 px) in color/text/danger/bold/default.

11

Icons

Icon library with 22 icons available in 3 sizes (Large 24 px, Medium 20 px, Small 16 px). Icons are SVG-based components designed on a 24 × 24 px grid with consistent stroke weight.

12.1 Icon set

SizeDimensionsUsage
Large24 × 24 pxButtons, topbar, primary UI elements
Medium20 × 20 pxSecondary actions, form fields (eye, chevron)
Small16 × 16 pxInline text, badges, compact lists
user
Tool
cal
Clock
research
chat
id
search
share
frames
user-circle
pen
brush
scale
shop
arrow-left
burger
x-mark
chevron-down
Eye
eye-slash
Leave

Click an icon to copy its name. Icons are exported from Figma as individual SVG components. To use: import the icon component matching the desired size (Large / Medium / Small) and apply color via color/icon/* tokens or inherit from the parent text color.

✓ Do

Always use the size that matches the surrounding context (Large in buttons, Medium in inputs). Apply a single semantic color token to the icon fill.

✗ Don't

Don't scale icons by CSS transform — always use the correct size variant (Large / Medium / Small). Don't use raw hex values for icon color; use semantic tokens.

A

CSS Variables

Implementation example of all tokens as custom CSS variables.

/* ─── Design Tokens ─────────────────────── */ :root { /* Brand */ --color-brand-100: #FEE4E0; --color-brand-300: #FCAFA3; --color-brand-500: #FA6048; --color-brand-700: #D0503C; --color-brand-800: #A64030; /* Semantic tokens — Text */ --color-text-neutral-bold: #272323; --color-text-neutral-subtle: #3A3534; --color-text-neutral-subtlest: #756B69; /* Semantic tokens — Background */ --color-bg-neutral-subtlest: #FFFFFF; --color-bg-neutral-subtle: #E8E6E6; --color-bg-brand-bold: #FA6048; --color-bg-brand-bold-hovered: #D0503C; --color-bg-brand-subtle: #FCAFA3; /* Semantic tokens — Border */ --color-border-neutral-subtlest: #E8E6E6; --color-border-neutral-bold: #272323; --color-border-brand-bold: #FA6048; /* Spacing */ --spacing-xs: 4px; --spacing-sm: 8px; --spacing-md: 12px; --spacing-lg: 16px; --spacing-xl: 20px; --spacing-2xl: 24px; --spacing-3xl: 32px; --spacing-4xl: 40px; --spacing-5xl: 48px; --spacing-7xl: 80px; --spacing-8xl: 120px; /* Border radius */ --radius-none: 0; --radius-xs: 4px; --radius-sm: 8px; --radius-md: 12px; --radius-lg: 16px; --radius-xl: 24px; --radius-full: 999px; /* Border width */ --border-thin: 1px; --border-default: 2px; --border-thick: 4px; /* Typography */ --font-family-base: 'Neulis Neue', sans-serif; }
Token copied!