Atlassian's design system applies color through tokens with roles: neutral, brand (primary actions and brand moments), information, success, warning, danger, discovery (new features and onboarding), accent (no meaning), inverse and input; accent colors must not stand in where color carries meaning. In light theme on atlassian.design the tokens resolve to brand bold and link #1868DB, text #292A2E, subtle text #505258, surface #FFFFFF, success bold #5B7F24, warning bold #FBC828, danger bold #C9372C and discovery bold #964AC0. Product type is Atlassian Sans and Atlassian Mono, with Charlie Sans reserved for marketing; headings are Bold at 32, 28, 24, 20, 16, 14 and 12px over a 14px default body (16px for long-form). The logo's minimum clearance is the capital A of the wordmark, strapline lockups never go below 280px wide, logomarks keep their preset radius and never sit in extra containers, and logos come in brand, inverse and neutral versions. The UI voice is bold, optimistic and practical with a wink, applied through six principles (inform, empower, encourage, motivate, satisfy, delight) and a table that says when to dial each trait up or down by the user's feeling.
Giving each color a job (brand, information, success, warning, danger, discovery) means color never decorates without meaning, so one brand color can stay rare. Tone that is chosen from the reader's feeling and journey stage keeps the same three traits sounding confident with power users and gentle with confused newcomers.
Team and productivity software, multi-product SaaS portfolios, admin-heavy tools, any brand whose words mostly live in product UI, onboarding and system messages
Steal it for your brand
The same system, written in your colors, type and shapes. Nothing of Atlassian's look comes with it.
palette.accent, success to palette.positive, warning to palette.highlight, danger to palette.accent dark, discovery to palette.accent secondary; leave a role on its fallback rather than invent a color.palette.accent for primary actions, links, selection and brand moments; every other fill must name the role it plays.params.base px px times typography.body.scale, then size each heading level as body size times its size_ratio, all headings bold, and use the display face only at the top three levels and for highlighted numbers.{
"recipe": {
"palette_roles": [
{
"role": "{palette.surface}",
"share": 0.6,
"job": "Default ground for pages, cards and panels"
},
{
"role": "{palette.ink}",
"share": 0.18,
"job": "Primary text and headings"
},
{
"role": "{palette.ink_muted}",
"share": 0.08,
"job": "Secondary text, metadata and helper copy"
},
{
"role": "{palette.border}",
"share": 0.05,
"job": "Dividers and input outlines"
},
{
"role": "{palette.accent}",
"share": 0.06,
"job": "Brand role: primary actions, links, selected state and brand moments only"
},
{
"role": "{palette.positive}",
"share": 0.01,
"job": "Success role: favorable outcomes"
},
{
"role": "{palette.highlight}",
"share": 0.01,
"job": "Warning role: caution before a mistake"
},
{
"role": "{palette.accent_dark}",
"share": 0.005,
"job": "Danger role: destructive actions and serious errors"
},
{
"role": "{palette.accent_secondary}",
"share": 0.005,
"job": "Discovery role: new features and onboarding"
},
{
"role": "{palette.on_accent}",
"share": 0,
"job": "Inverse role: text and icons on any bold fill"
}
],
"role_rules": [
"Every color fill must name its role; decorative accents never borrow a role that carries meaning",
"Selected state pairs color with a second cue such as a check, underline or border",
"Focus outline is its own treatment, never the selected color"
],
"contrast_min": {
"text_small": 4.5,
"text_large_and_ui": 3
},
"type_scale": {
"base_px": "{params.base_px}",
"body_scale": "{typography.body.scale}",
"size_rule": "body size in px = base_px * body_scale; each level's size = body size * its size_ratio",
"levels": [
{
"level": "heading_xxl",
"size_ratio": 2.286,
"line_height": 1.125,
"face": "display",
"use": "brand and marketing only"
},
{
"level": "heading_xl",
"size_ratio": 2,
"line_height": 1.143,
"face": "display",
"use": "marketing and page titles"
},
{
"level": "heading_l",
"size_ratio": 1.714,
"line_height": 1.167,
"face": "display",
"use": "page and form titles"
},
{
"level": "heading_m",
"size_ratio": 1.429,
"line_height": 1.2,
"face": "body",
"use": "large components such as dialogs"
},
{
"level": "heading_s",
"size_ratio": 1.143,
"line_height": 1.25,
"face": "body",
"use": "small components"
},
{
"level": "heading_xs",
"size_ratio": 1,
"line_height": 1.429,
"face": "body",
"use": "compact components"
},
{
"level": "heading_xxs",
"size_ratio": 0.857,
"line_height": 1.333,
"face": "body",
"use": "fine print, sparingly"
},
{
"level": "body_large",
"size_ratio": 1.143,
"line_height": 1.5,
"face": "body",
"use": "long-form reading"
},
{
"level": "body",
"size_ratio": 1,
"line_height": 1.429,
"face": "body",
"use": "default"
},
{
"level": "body_small",
"size_ratio": 0.857,
"line_height": 1.333,
"face": "body",
"use": "fine print"
},
{
"level": "metric",
"size_ratio": 2,
"line_height": 1.143,
"face": "display",
"use": "a number that needs emphasis"
},
{
"level": "code",
"size_ratio": 0.857,
"line_height": 1.667,
"face": "mono"
}
],
"heading_weight": "bold for every heading level",
"rules": [
"one h1 per page",
"descend levels without skipping",
"use a heading level for emphasis instead of ad hoc bold or size",
"display face only at the top three heading levels and metrics; product UI stays in the body face"
]
},
"logo_rules": {
"clear_space": "at least the height of the wordmark's first capital on every side; more where space allows",
"lockup_min_width_px": 280,
"versions": [
"brand",
"inverse on bold or dark fills",
"neutral"
],
"mark_alone": "only where context makes the brand obvious, and paired with the product name in text",
"mark_container": "keep the supplied tile shape and corner radius; never add an extra container",
"misuse": [
"Unapproved color combinations",
"Drop shadows",
"Busy or complex backgrounds behind the logo",
"Outlines",
"Composing new lockups or breaking official ones apart"
]
},
"voice_rules": [
{
"id": "bold",
"kind": "guidance",
"text": "Be bold: give the right amount of help at the right moment, with accurate information"
},
{
"id": "optimistic",
"kind": "guidance",
"text": "Be optimistic: highlight what helps most at the reader's stage of the journey"
},
{
"id": "practical-wink",
"kind": "guidance",
"text": "Be practical: direct and concise for any culture; add a light wink only when the moment allows"
},
{
"id": "dial-confident",
"kind": "guidance",
"text": "For confident, curious, trusting readers (power users, admins), turn boldness and optimism up"
},
{
"id": "dial-new",
"kind": "guidance",
"text": "For new, confused, apprehensive or angry readers, turn boldness and optimism down and practicality up"
},
{
"id": "dial-blocked",
"kind": "guidance",
"text": "For stressed or blocked readers, be purely practical and drop the wink"
},
{
"id": "dial-success",
"kind": "guidance",
"text": "After success, a small flourish is allowed; never humor or cheekiness"
},
{
"id": "ask-first",
"kind": "guidance",
"text": "Before writing, ask what the reader feels and where they are in their journey"
},
{
"id": "info-first",
"kind": "guidance",
"text": "Never try to inspire or delight when the reader just needs information"
},
{
"id": "delight-rarely",
"kind": "guidance",
"text": "Celebrate only after trust exists, and limit how often delight repeats"
},
{
"id": "one-vocabulary",
"kind": "guidance",
"text": "Keep one vocabulary and one story across every product and message"
}
],
"messaging_hierarchy": {
"by_moment": [
{
"intent": "inform",
"job": "share only what is needed now and say where the reader is",
"moments": [
"errors",
"warnings",
"new features"
]
},
{
"intent": "empower",
"job": "recommend the next step and the best practice",
"moments": [
"required actions",
"dialogs"
]
},
{
"intent": "encourage",
"job": "reassure the reader they are on track",
"moments": [
"confusing steps",
"errors"
]
},
{
"intent": "motivate",
"job": "lead with the outcome and its benefit, not the problem",
"moments": [
"onboarding",
"tips",
"upgrade prompts"
]
},
{
"intent": "satisfy",
"job": "quick, thorough answer and clear instruction",
"moments": [
"all UI copy, at minimum"
]
},
{
"intent": "delight",
"job": "a small earned flourish",
"moments": [
"success states only"
]
}
],
"floor": "satisfy is the minimum for every message; add other intents only when the moment calls for them",
"page_rule": "one h1 that names the page, then descending sections"
}
},
"fallbacks": {
"palette.surface": "{palette.paper}",
"palette.border": "{palette.ink_muted}",
"palette.highlight": "{palette.accent}",
"palette.accent_dark": "{palette.ink}",
"palette.accent_secondary": "{palette.accent}",
"palette.positive": "{palette.accent}",
"palette.on_accent": "{palette.paper}",
"palette.ink_muted": "{palette.ink}",
"typography.body.scale": 1
},
"steps": [
"Map the customer's captured colors onto roles before using any of them: brand to {palette.accent}, success to {palette.positive}, warning to {palette.highlight}, danger to {palette.accent_dark}, discovery to {palette.accent_secondary}; leave a role on its fallback rather than invent a color.",
"Keep {palette.accent} for primary actions, links, selection and brand moments; every other fill must name the role it plays.",
"Pair any selected state with a second cue (check, underline or border) and keep focus outlines separate from selection.",
"Set body text at {params.base_px} px times {typography.body.scale}, then size each heading level as body size times its size_ratio, all headings bold, and use the display face only at the top three levels and for highlighted numbers.",
"Give the logo clear space of at least its wordmark's first capital, keep lockups at or above 280px wide, and use the brand, inverse or neutral version to suit the ground.",
"Before writing any message, name the reader's feeling and journey stage, then dial the three traits up or down from the recipe's table.",
"Make every message at least satisfy (fast, complete, clear); add inform, empower, encourage, motivate or delight only where the moment in the recipe calls for it."
]
}The lesson
Give every color a named job in your brand system so a single brand color can stay rare.
The Color page of the Atlassian Design system starts with "Color distinguishes our brand and reinforces consistent experiences across apps." Under "Color anatomy" and "Saturated colors" sit nine hues, each a column of light-to-dark steps. The contents sidebar lists Color roles, Emphasis levels and Interaction states.
The nine-hue palette and token names are Atlassian's. Keep the idea of giving every color a role, with emphasis and state rules on the same page as the swatches.