Crown Design
Foundations

Color

Crown's semantic color roles — Foreground, Border, Content — across six states.

Crown's color system is role-based, not palette-based. Product UI should use semantic color roles rather than raw hex values or palette shades. A role keeps the design intent stable while each brand and theme resolves to its own actual color.

For example, in KP light mode:

palette.KP Blue.700
-> theme.fll.primary.state0.light
-> color.Primary.Foreground.Default

The palette value provides the material, the iconic brand token assigns it to a brand intent, and the semantic role exposes the UI-facing API.

Color token chain

LayerWhat it controlsUsed byUse directly?
Raw paletteShade ramps, alpha colors, neutral values, and spectrum valuesIconic brand colorsUsually no
Iconic brand colorsBrand mappings for primary, secondary, function, base, fixed, and CTA intentsSemantic rolesUsually no
Semantic rolesUI-facing color roles by purpose, role, state, brand, and themeDesigners and engineersYes

The chain lets Crown keep one semantic API across KP, GWL, and WF while each brand keeps its own color expression. Designers can reason about placement and meaning. Engineers can use stable token names without hard-coding brand colors.

Raw palette families

Raw palette families are the source material for the color system. They define ramps, neutrals, pure colors, greyscale values, social colors, and alpha scales. Palette names describe color material, not UI purpose.

Brand palette families include KP ramps such as KP Navy, KP Blue, KP Teal, KP Gold, and KP Dindang, plus GWL ramps such as GWL Beige, GWL Stormcloud, GWL Vogue, and GWL Blue.

Shared palette families include spectrum ramps such as Red, Orange, Yellow, Lime, Green, Teal, Sky, Blue, Indigo, Violet, Purple, and Pink; neutral families such as Nevada, Neutral, Pure, LightGreyscale, and DarkGreyscale; and alpha groups such as brand, spectrum, and monotone alpha.

Use raw palette values when authoring or reviewing higher-level tokens. In product UI, prefer semantic roles so brand and theme changes continue to resolve correctly.

Iconic brand colors

Iconic brand colors translate palette material into brand intent. This is where KP, GWL, and WF can assign different palette values to the same conceptual slots while the semantic layer above stays stable.

Iconic intentWhat it represents
primaryMain brand color family
secondarySupporting brand color family
func1 to func4Functional feedback families used by semantic states
fixed1Fixed or static-like brand assignment
ctaHigh-priority call-to-action emphasis
baseSurface foundation colors
on-*Content, border, and contrast values for color-on-color placement

Designers can inspect iconic tokens to understand brand placement decisions. Engineers should normally consume the semantic roles instead of referencing iconic paths directly.

Semantic roles

Semantic roles are the public color API. They describe how a color should be used, not which palette shade it resolves to.

FamilyUse for
PrimaryMain brand actions and high-visibility emphasis
SecondarySecondary branded emphasis
DangerDestructive, blocking, or error states
WarningCautionary states that need attention
SuccessSuccessful or completed states
InfoNeutral informational states
BaseApp backgrounds, surfaces, panels, and cards
on-BaseText, icons, and outlines placed on normal surfaces
StaticColors that should stay stable across light and dark modes
CTAHighest-priority commercial action in a page or flow
AccentDecorative or categorical spectrum accents

Each family can expose three placement roles:

RoleControls
ForegroundFills, emphasized surfaces, and strong visual areas
BorderStrokes, outlines, dividers, and visible edges
ContentText, icons, and other foreground content

State names describe interaction or emphasis:

StateMeaning
DefaultResting state
HoverPointer hover state
PressedActive or pressed state
DisableDisabled or unavailable state
SubtleLow-emphasis fills or backgrounds
MutedLow-emphasis interaction state where available

Placement guidance

  • Use Base for app backgrounds, surfaces, panels, and cards.
  • Use on-Base.Content for text and icons on standard surfaces.
  • Use Primary for main brand actions and high-visibility emphasis.
  • Use Secondary for supporting branded emphasis.
  • Use Danger, Warning, Success, and Info only when the color carries meaning.
  • Use Static when a color must not invert between light and dark modes.
  • Use CTA for the highest-priority commercial action on a page or flow.
  • Prefer semantic roles over raw palette and iconic paths in application code.

Live semantic preview

Switch brands or themes from the header to see the same semantic tokens re-resolve.

Primary

foreground

default
--crown-color-primary-foreground-default
disable
--crown-color-primary-foreground-disable
hover
--crown-color-primary-foreground-hover
muted-hover
--crown-color-primary-foreground-muted-hover
muted-pressed
--crown-color-primary-foreground-muted-pressed
pressed
--crown-color-primary-foreground-pressed
subtle
--crown-color-primary-foreground-subtle
subtle-hover
--crown-color-primary-foreground-subtle-hover
subtle-pressed
--crown-color-primary-foreground-subtle-pressed

border

default
--crown-color-primary-border-default
disable
--crown-color-primary-border-disable
hover
--crown-color-primary-border-hover
pressed
--crown-color-primary-border-pressed
strong
--crown-color-primary-border-strong

content

default
--crown-color-primary-content-default
disable
--crown-color-primary-content-disable
hover
--crown-color-primary-content-hover
pressed
--crown-color-primary-content-pressed

Secondary

foreground

default
--crown-color-secondary-foreground-default
disable
--crown-color-secondary-foreground-disable
hover
--crown-color-secondary-foreground-hover
muted-hover
--crown-color-secondary-foreground-muted-hover
muted-pressed
--crown-color-secondary-foreground-muted-pressed
pressed
--crown-color-secondary-foreground-pressed
subtle
--crown-color-secondary-foreground-subtle
subtle-hover
--crown-color-secondary-foreground-subtle-hover
subtle-pressed
--crown-color-secondary-foreground-subtle-pressed

border

default
--crown-color-secondary-border-default
disable
--crown-color-secondary-border-disable
hover
--crown-color-secondary-border-hover
pressed
--crown-color-secondary-border-pressed
strong
--crown-color-secondary-border-strong

content

default
--crown-color-secondary-content-default
disable
--crown-color-secondary-content-disable
hover
--crown-color-secondary-content-hover
pressed
--crown-color-secondary-content-pressed

Danger

foreground

default
--crown-color-danger-foreground-default
disable
--crown-color-danger-foreground-disable
hover
--crown-color-danger-foreground-hover
muted-hover
--crown-color-danger-foreground-muted-hover
muted-pressed
--crown-color-danger-foreground-muted-pressed
pressed
--crown-color-danger-foreground-pressed
subtle
--crown-color-danger-foreground-subtle
subtle-hover
--crown-color-danger-foreground-subtle-hover
subtle-pressed
--crown-color-danger-foreground-subtle-pressed

border

default
--crown-color-danger-border-default
disable
--crown-color-danger-border-disable
hover
--crown-color-danger-border-hover
pressed
--crown-color-danger-border-pressed
strong
--crown-color-danger-border-strong

content

default
--crown-color-danger-content-default
disable
--crown-color-danger-content-disable
hover
--crown-color-danger-content-hover
pressed
--crown-color-danger-content-pressed

Info

foreground

default
--crown-color-info-foreground-default
disable
--crown-color-info-foreground-disable
hover
--crown-color-info-foreground-hover
muted-hover
--crown-color-info-foreground-muted-hover
muted-pressed
--crown-color-info-foreground-muted-pressed
pressed
--crown-color-info-foreground-pressed
subtle
--crown-color-info-foreground-subtle
subtle-hover
--crown-color-info-foreground-subtle-hover
subtle-pressed
--crown-color-info-foreground-subtle-pressed

border

default
--crown-color-info-border-default
disable
--crown-color-info-border-disable
hover
--crown-color-info-border-hover
pressed
--crown-color-info-border-pressed
strong
--crown-color-info-border-strong

content

default
--crown-color-info-content-default
disable
--crown-color-info-content-disable
hover
--crown-color-info-content-hover
pressed
--crown-color-info-content-pressed

Success

foreground

default
--crown-color-success-foreground-default
disable
--crown-color-success-foreground-disable
hover
--crown-color-success-foreground-hover
muted-hover
--crown-color-success-foreground-muted-hover
muted-pressed
--crown-color-success-foreground-muted-pressed
pressed
--crown-color-success-foreground-pressed
subtle
--crown-color-success-foreground-subtle
subtle-hover
--crown-color-success-foreground-subtle-hover
subtle-pressed
--crown-color-success-foreground-subtle-pressed

border

default
--crown-color-success-border-default
disable
--crown-color-success-border-disable
hover
--crown-color-success-border-hover
pressed
--crown-color-success-border-pressed
strong
--crown-color-success-border-strong

content

default
--crown-color-success-content-default
disable
--crown-color-success-content-disable
hover
--crown-color-success-content-hover
pressed
--crown-color-success-content-pressed

Warning

foreground

default
--crown-color-warning-foreground-default
disable
--crown-color-warning-foreground-disable
hover
--crown-color-warning-foreground-hover
muted-hover
--crown-color-warning-foreground-muted-hover
muted-pressed
--crown-color-warning-foreground-muted-pressed
pressed
--crown-color-warning-foreground-pressed
subtle
--crown-color-warning-foreground-subtle
subtle-hover
--crown-color-warning-foreground-subtle-hover
subtle-pressed
--crown-color-warning-foreground-subtle-pressed

border

default
--crown-color-warning-border-default
disable
--crown-color-warning-border-disable
hover
--crown-color-warning-border-hover
pressed
--crown-color-warning-border-pressed
strong
--crown-color-warning-border-strong

content

default
--crown-color-warning-content-default
disable
--crown-color-warning-content-disable
hover
--crown-color-warning-content-hover
pressed
--crown-color-warning-content-pressed

Static

foreground

default
--crown-color-static-foreground-default
disable
--crown-color-static-foreground-disable
hover
--crown-color-static-foreground-hover
muted-hover
--crown-color-static-foreground-muted-hover
muted-pressed
--crown-color-static-foreground-muted-pressed
pressed
--crown-color-static-foreground-pressed
subtle
--crown-color-static-foreground-subtle
subtle-hover
--crown-color-static-foreground-subtle-hover
subtle-pressed
--crown-color-static-foreground-subtle-pressed

border

default
--crown-color-static-border-default
disable
--crown-color-static-border-disable
hover
--crown-color-static-border-hover
pressed
--crown-color-static-border-pressed
strong
--crown-color-static-border-strong

content

default
--crown-color-static-content-default
disable
--crown-color-static-content-disable
hover
--crown-color-static-content-hover
pressed
--crown-color-static-content-pressed

CTA

foreground

default
--crown-color-cta-foreground-default
disable
--crown-color-cta-foreground-disable
hover
--crown-color-cta-foreground-hover
pressed
--crown-color-cta-foreground-pressed
secondary
--crown-color-cta-foreground-secondary
secondary-disable
--crown-color-cta-foreground-secondary-disable
secondary-hover
--crown-color-cta-foreground-secondary-hover
secondary-pressed
--crown-color-cta-foreground-secondary-pressed
tertiary
--crown-color-cta-foreground-tertiary
tertiary-disable
--crown-color-cta-foreground-tertiary-disable
tertiary-hover
--crown-color-cta-foreground-tertiary-hover
tertiary-pressed
--crown-color-cta-foreground-tertiary-pressed

border

default
--crown-color-cta-border-default
disable
--crown-color-cta-border-disable
hover
--crown-color-cta-border-hover
pressed
--crown-color-cta-border-pressed
secondary
--crown-color-cta-border-secondary
secondary-disable
--crown-color-cta-border-secondary-disable
secondary-hover
--crown-color-cta-border-secondary-hover
secondary-pressed
--crown-color-cta-border-secondary-pressed
tertiary
--crown-color-cta-border-tertiary
tertiary-disable
--crown-color-cta-border-tertiary-disable
tertiary-hover
--crown-color-cta-border-tertiary-hover
tertiary-pressed
--crown-color-cta-border-tertiary-pressed

content

default
--crown-color-cta-content-default
disable
--crown-color-cta-content-disable
hover
--crown-color-cta-content-hover
pressed
--crown-color-cta-content-pressed
secondary
--crown-color-cta-content-secondary
secondary-disable
--crown-color-cta-content-secondary-disable
secondary-hover
--crown-color-cta-content-secondary-hover
secondary-pressed
--crown-color-cta-content-secondary-pressed
tertiary
--crown-color-cta-content-tertiary
tertiary-disable
--crown-color-cta-content-tertiary-disable
tertiary-hover
--crown-color-cta-content-tertiary-hover
tertiary-pressed
--crown-color-cta-content-tertiary-pressed

Full color inventory

TokenLayerKing Power lightKing Power dark
color-accent-border-blue
--crown-color-accent-border-blue
semanticoklch(0.8408 0.0815 251.56)oklch(0.4064 0.1645 260.28)
color-accent-border-green
--crown-color-accent-border-green
semanticoklch(0.834 0.145 154.18)oklch(0.4429 0.1049 140.7)
color-accent-border-indigo
--crown-color-accent-border-indigo
semanticoklch(0.8451 0.0764 271.61)oklch(0.4092 0.1691 278.71)
color-accent-border-lime
--crown-color-accent-border-lime
semanticoklch(0.8397 0.1602 119.71)oklch(0.4547 0.1123 129.38)
color-accent-border-orange
--crown-color-accent-border-orange
semanticoklch(0.848 0.0968 58.86)oklch(0.4365 0.1223 43.65)
color-accent-border-pink
--crown-color-accent-border-pink
semanticoklch(0.857 0.117 333.8)oklch(0.4199 0.1591 353.26)
color-accent-border-purple
--crown-color-accent-border-purple
semanticoklch(0.8522 0.1081 318.68)oklch(0.4271 0.1877 328.68)
color-accent-border-red
--crown-color-accent-border-red
semanticoklch(0.8508 0.0814 17.96)oklch(0.4313 0.1455 29.92)

On this page