Skip to content

Colors

Bumi's color system is built on warm neutrals with a single, restrained brand color. Every color has a purpose.

Complete Palette

Brand

NameHexUsage
Forest Green#2D6B4APrimary buttons, active nav, checkmarks, links
Forest Green Hover#245A3EButton hover state
Forest Green Light#E8F0ECSelected row bg, badge bg
Forest Green Subtle#F0F5F2Very light emphasis bg
Forest Green
#2D6B4A
Hover
#245A3E
Light
#E8F0EC
Subtle
#F0F5F2

Strict usage rules

Forest Green appears ONLY in these contexts: filled primary buttons, active navigation indicators (left border + text), success checkmarks, text links, and the brand logo. Never use it for card borders, section backgrounds, decorative elements, or secondary UI.

Accent (Destructive)

NameHexUsage
Warm Red#C4463ADanger buttons, error states, delete actions
Warm Red Hover#A93B30Destructive button hover
Warm Red Light#FCEAE8Error badge bg, alert bg
Warm Red
#C4463A
Hover
#A93B30
Light
#FCEAE8

Semantic Colors

RoleHexUsage
Success#2D7D46Confirmation, positive deltas, completed states
Warning#D4910AAlerts, pending states, low stock indicators
Danger#C4463AErrors, destructive actions, negative deltas
Info#2563EBInformational badges, help text, external links
Success
#2D7D46
Warning
#D4910A
Danger
#C4463A
Info
#2563EB

Neutrals (Light Mode)

TokenHexUsage
bg-body#FAFAF7Page background, sidebar bg
bg-card#FFFFFFCard surfaces, modal surfaces
bg-inset#F3F1ECInset panels, code blocks, table headers
bg-hover#EDEAE3Row hover, button hover (ghost)
border#E5E2DBCard borders, dividers, input borders
border-strong#D4D0C8Emphasized borders, active input borders
bg-body
#FAFAF7
bg-card
#FFFFFF
bg-inset
#F3F1EC
bg-hover
#EDEAE3
border
#E5E2DB
border-strong
#D4D0C8

Text Colors (Light Mode)

TokenHexUsageMin Contrast on #FAFAF7
text-1#1A1816Primary text, headings15.8:1
text-2#57534ESecondary text, labels, descriptions6.9:1
text-3#A8A29ETertiary text, placeholders, disabled3.2:1
text-1
#1A1816
text-2
#57534E
text-3
#A8A29E

Dark Mode

TokenLightDark
bg-body#FAFAF7#1C1A17
bg-card#FFFFFF#262420
bg-inset#F3F1EC#2E2C28
bg-hover#EDEAE3#363330
border#E5E2DB#3D3A35
border-strong#D4D0C8#4A4640
text-1#1A1816#F5F3EF
text-2#57534E#B5B0A8
text-3#A8A29E#6E6A64
Brand Green#2D6B4A#4A9E72
Danger Red#C4463A#E05A4E
Warning#D4910A#E8A820
Info#2563EB#4A8AFF
Dark Mode Preview
bg-body
#1C1A17
bg-card
#262420
bg-inset
#2E2C28
bg-hover
#363330
Brand
#4A9E72
Danger
#E05A4E
Warning
#E8A820
Info
#4A8AFF

Per-App Accent Overrides

Each portal shares the Bumi base palette but may define an accent color for its own identity.

AppAccentHexUsage
POS ElectronForest Green#2D6B4ADefault brand
Store AdminForest Green#2D6B4ADefault brand
HO FinanceIndigo#4F46E5Finance-specific badges, charts
HR PortalTeal#0D9488HR-specific badges
PurchasingAmber#D97706Procurement-specific badges
Customer AppForest Green#2D6B4ADefault brand
Stock AppForest Green#2D6B4ADefault brand
POS / Store
#2D6B4A
HO Finance
#4F46E5
HR Portal
#0D9488
Purchasing
#D97706

TIP

Accent overrides only apply to app-specific badges and chart colors. Primary buttons, navigation, and success states always use Forest Green across all apps.

CSS Custom Properties

css
:root {
  /* Brand */
  --color-brand: #2D6B4A;
  --color-brand-hover: #245A3E;
  --color-brand-light: #E8F0EC;
  --color-brand-subtle: #F0F5F2;

  /* Destructive */
  --color-danger: #C4463A;
  --color-danger-hover: #A93B30;
  --color-danger-light: #FCEAE8;

  /* Semantic */
  --color-success: #2D7D46;
  --color-warning: #D4910A;
  --color-info: #2563EB;

  /* Neutrals */
  --bg-body: #FAFAF7;
  --bg-card: #FFFFFF;
  --bg-inset: #F3F1EC;
  --bg-hover: #EDEAE3;
  --border: #E5E2DB;
  --border-strong: #D4D0C8;

  /* Text */
  --text-1: #1A1816;
  --text-2: #57534E;
  --text-3: #A8A29E;
}

.dark {
  --color-brand: #4A9E72;
  --color-danger: #E05A4E;
  --color-warning: #E8A820;
  --color-info: #4A8AFF;

  --bg-body: #1C1A17;
  --bg-card: #262420;
  --bg-inset: #2E2C28;
  --bg-hover: #363330;
  --border: #3D3A35;
  --border-strong: #4A4640;

  --text-1: #F5F3EF;
  --text-2: #B5B0A8;
  --text-3: #6E6A64;
}

Accessibility

All text/background combinations meet WCAG AA (4.5:1 for normal text, 3:1 for large text).

CombinationContrast RatioWCAG AA
text-1 on bg-body15.8:1Pass
text-1 on bg-card17.4:1Pass
text-2 on bg-body6.9:1Pass
text-2 on bg-card7.6:1Pass
text-3 on bg-body3.2:1Pass (large text only)
Brand on bg-card5.8:1Pass
Danger on bg-card4.9:1Pass
Dark text-1 on dark bg-body14.2:1Pass
Dark text-2 on dark bg-body6.1:1Pass

text-3 limitation

text-3 (#A8A29E) only meets WCAG AA for large text (18px+ or 14px bold). Use it only for placeholder text, disabled labels, and tertiary metadata --- never for essential content.

DO and DON'T

DO

  • Use bg-body (#FAFAF7) as your page background, not white
  • Use border (#E5E2DB) for card borders, not Tailwind's default gray-200
  • Use brand green only for actionable, interactive elements
  • Test all color combinations in both light and dark mode

DON'T

  • Don't use pure gray (#F5F5F5, #E5E7EB) --- always use the warm equivalents
  • Don't use brand green for decorative borders, backgrounds, or section headers
  • Don't add new colors without updating this document and the token files
  • Don't rely on color alone to communicate state --- always pair with icons or text

RetailOS - Sistem ERP Retail Modern untuk Indonesia