Lesli colors
The Lesli identity is built around a primary blue inspired by Ruby Blue, supported by neutral mineral tones, restrained semantic colors, and a set of collection colors that extend the system without breaking consistency.
Lesli brand colors
Collection colors
Notification colors
Semantic colors
Collections
Primary brand color
| Token | Hex | Lesli | Variable |
|---|---|---|---|
| Light | #E3EEF6 | lesli-color(lesli, light) | --lesli-color-lesli-light |
| Primary | #245F93 | lesli-color(lesli, primary) | --lesli-color-lesli-primary |
| Dark | #123553 | lesli-color(lesli, dark) | --lesli-color-lesli-dark |
This is the core visual color of Lesli. It should represent the platform globally and remain the main interactive brand color across the product.
Primary scale
| Token | Hex | Lesli | Variable |
|---|---|---|---|
| Primary 50 | #F2F7FB | lesli-color(primary, 50) | --lesli-color-primary-50 |
| Primary 100 | #E3EEF6 | lesli-color(primary, 100) | --lesli-color-primary-100 |
| Primary 200 | #BDD5E8 | lesli-color(primary, 200) | --lesli-color-primary-200 |
| Primary 300 | #8DAEC9 | lesli-color(primary, 300) | --lesli-color-primary-300 |
| Primary 400 | #4F83AE | lesli-color(primary, 400) | --lesli-color-primary-400 |
| Primary 500 | #245F93 | lesli-color(primary, 500) | --lesli-color-primary-500 |
| Primary 600 | #1F527F | lesli-color(primary, 600) | --lesli-color-primary-600 |
| Primary 700 | #1A466C | lesli-color(primary, 700) | --lesli-color-primary-700 |
| Primary 800 | #153A59 | lesli-color(primary, 800) | --lesli-color-primary-800 |
| Primary 900 | #123553 | lesli-color(primary, 900) | --lesli-color-primary-900 |
Recommended use
- Primary 50–100: soft informational backgrounds
- Primary 200–300: borders, subtle surfaces, selected states
- Primary 500: primary buttons, links, active states, highlights
- Primary 700: hover state
- Primary 800: active/pressed state
- Primary 900: text on light blue backgrounds
Accessibility guidance
- Use white text on
Primary 500and darker. - Use dark text on
Primary 50toPrimary 300. - Avoid placing small body text on
Primary 400orPrimary 500unless contrast has been tested.
Semantic colors
Semantic colors follow the same visual philosophy as the Lesli primary blue: restrained, mineral, and product-oriented.
Neutral palette
The neutral system supports the interface and should feel lightly mineral and subtly blue-gray rather than generic grayscale.
| Token | Hex | Lesli | Variable |
|---|---|---|---|
| Neutral 50 | #F8FAFC | lesli-color(neutral, 50) | --lesli-color-neutral-50 |
| Neutral 100 | #F1F4F8 | lesli-color(neutral, 100) | --lesli-color-neutral-100 |
| Neutral 200 | #E5EAF0 | lesli-color(neutral, 200) | --lesli-color-neutral-200 |
| Neutral 300 | #C7D0DA | lesli-color(neutral, 300) | --lesli-color-neutral-300 |
| Neutral 400 | #8F9BAA | lesli-color(neutral, 400) | --lesli-color-neutral-400 |
| Neutral 500 | #667383 | lesli-color(neutral, 500) | --lesli-color-neutral-500 |
| Neutral 600 | #4B5663 | lesli-color(neutral, 600) | --lesli-color-neutral-600 |
| Neutral 700 | #34404C | lesli-color(neutral, 700) | --lesli-color-neutral-700 |
| Neutral 800 | #28323D | lesli-color(neutral, 800) | --lesli-color-neutral-800 |
| Neutral 900 | #1F2933 | lesli-color(neutral, 900) | --lesli-color-neutral-900 |
Recommended use
- Neutral 50: application background
- Neutral 100: subtle sections and muted cards
- Neutral 200: default borders and dividers
- Neutral 300: stronger borders and input outlines
- Neutral 700: secondary text
- Neutral 900: primary text
Text hierarchy
- Primary text:
Neutral 900 - Secondary text:
Neutral 700 - Muted text:
Neutral 600 - Disabled text:
Neutral 500
Info palette
Typical uses include informational alerts, help panels, onboarding hints, documentation callouts, and non-critical status indicators.
The info palette communicates neutral guidance, system messages, and contextual information without implying success, warning, or failure.
| Token | Hex | Lesli | Variable |
|---|---|---|---|
| Info 50 | #F2F7FB | lesli-color(info, 50) | --lesli-color-info-50 |
| Info 100 | #E3EEF6 | lesli-color(info, 100) | --lesli-color-info-100 |
| Info 200 | #BDD5E8 | lesli-color(info, 200) | --lesli-color-info-200 |
| Info 300 | #8DAEC9 | lesli-color(info, 300) | --lesli-color-info-300 |
| Info 400 | #4F83AE | lesli-color(info, 400) | --lesli-color-info-400 |
| Info 500 | #245F93 | lesli-color(info, 500) | --lesli-color-info-500 |
| Info 600 | #1F527F | lesli-color(info, 600) | --lesli-color-info-600 |
| Info 700 | #1A466C | lesli-color(info, 700) | --lesli-color-info-700 |
| Info 800 | #153A59 | lesli-color(info, 800) | --lesli-color-info-800 |
| Info 900 | #123553 | lesli-color(info, 900) | --lesli-color-info-900 |
Usage guidelines
Use the info palette for neutral messages, contextual guidance, helper content, and informative UI states.
- Use 50–100 for soft backgrounds in banners, callouts, and informational surfaces.
- Use 200–400 for borders, subtle accents, and supporting visual elements.
- Use 500–600 as the default range for icons, links, badges, and emphasis.
- Use 700–900 for high-contrast text, strong highlights, or darker themed surfaces.
Success palette
The success palette signals confirmation, positive outcomes, and completed actions with a calm and trustworthy green range.
Typical uses include success alerts, completed states, confirmation messages, approved statuses, and positive validation feedback.
| Token | Hex | Lesli | Variable |
|---|---|---|---|
| Success 50 | #F1FAF7 | lesli-color(success, 50) | --lesli-color-success-50 |
| Success 100 | #DDF2EA | lesli-color(success, 100) | --lesli-color-success-100 |
| Success 200 | #B8E2D2 | lesli-color(success, 200) | --lesli-color-success-200 |
| Success 300 | #8DD0B8 | lesli-color(success, 300) | --lesli-color-success-300 |
| Success 400 | #399C77 | lesli-color(success, 400) | --lesli-color-success-400 |
| Success 500 | #267E60 | lesli-color(success, 500) | --lesli-color-success-500 |
| Success 600 | #1F694F | lesli-color(success, 600) | --lesli-color-success-600 |
| Success 700 | #19543F | lesli-color(success, 700) | --lesli-color-success-700 |
| Success 800 | #154836 | lesli-color(success, 800) | --lesli-color-success-800 |
| Success 900 | #123F30 | lesli-color(success, 900) | --lesli-color-success-900 |
Usage guidelines
Use the success palette to confirm completed actions, positive outcomes, valid states, and healthy system feedback.
- Use 50–100 for soft success backgrounds in alerts, notices, and passive confirmations.
- Use 200–400 for borders, supporting accents, and lighter positive indicators.
- Use 500–600 as the default range for success badges, icons, confirmations, and active positive feedback.
- Use 700–900 for high-contrast text, strong emphasis, or darker success surfaces.
Warning palette
Typical uses include warning alerts, incomplete forms, pending verifications, temporary issues, and states that require user review.
The warning palette highlights caution, pending issues, and states that need attention without escalating to error severity.
| Token | Hex | Lesli | Variable |
|---|---|---|---|
| Warning 50 | #FFF9ED | lesli-color(warning, 50) | --lesli-color-warning-50 |
| Warning 100 | #FFF1D6 | lesli-color(warning, 100) | --lesli-color-warning-100 |
| Warning 200 | #FDE2A8 | lesli-color(warning, 200) | --lesli-color-warning-200 |
| Warning 300 | #F8CF74 | lesli-color(warning, 300) | --lesli-color-warning-300 |
| Warning 400 | #D29A2E | lesli-color(warning, 400) | --lesli-color-warning-400 |
| Warning 500 | #B67D1F | lesli-color(warning, 500) | --lesli-color-warning-500 |
| Warning 600 | #95651B | lesli-color(warning, 600) | --lesli-color-warning-600 |
| Warning 700 | #775117 | lesli-color(warning, 700) | --lesli-color-warning-700 |
| Warning 800 | #684614 | lesli-color(warning, 800) | --lesli-color-warning-800 |
| Warning 900 | #5B3D12 | lesli-color(warning, 900) | --lesli-color-warning-900 |
Usage guidelines
Use the warning palette for cautionary states, pending risks, incomplete flows, and situations that need attention but are not critical failures.
- Use 50–100 for soft warning backgrounds in alerts, notices, and highlighted sections.
- Use 200–400 for borders, subtle emphasis, and secondary caution indicators.
- Use 500–600 as the default range for warning badges, icons, notices, and attention-grabbing UI states.
- Use 700–900 for strong text contrast, emphasis, or darker warning surfaces.
Danger palette
Typical uses include error alerts, failed validations, destructive actions, blocked flows, and critical system states.
The danger palette is reserved for destructive actions, critical errors, and states that require immediate attention.
| Token | Hex | Lesli | Variable |
|---|---|---|---|
| Danger 50 | #FFF3F1 | lesli-color(danger, 50) | --lesli-color-danger-50 |
| Danger 100 | #FFE3DE | lesli-color(danger, 100) | --lesli-color-danger-100 |
| Danger 200 | #F8C1B8 | lesli-color(danger, 200) | --lesli-color-danger-200 |
| Danger 300 | #EE9A8E | lesli-color(danger, 300) | --lesli-color-danger-300 |
| Danger 400 | #C94E3C | lesli-color(danger, 400) | --lesli-color-danger-400 |
| Danger 500 | #A93B2D | lesli-color(danger, 500) | --lesli-color-danger-500 |
| Danger 600 | #8B3126 | lesli-color(danger, 600) | --lesli-color-danger-600 |
| Danger 700 | #6F281F | lesli-color(danger, 700) | --lesli-color-danger-700 |
| Danger 800 | #60231B | lesli-color(danger, 800) | --lesli-color-danger-800 |
| Danger 900 | #541E18 | lesli-color(danger, 900) | --lesli-color-danger-900 |
Usage guidelines
Use the danger palette for destructive actions, critical problems, failed operations, and states that require immediate attention.
- Use 50–100 for soft danger backgrounds in error banners, destructive confirmations, and critical notices.
- Use 200–400 for borders, supporting accents, and secondary error indicators.
- Use 500–600 as the default range for destructive buttons, critical badges, icons, and primary error states.
- Use 700–900 for strong emphasis, high-contrast text, or dark critical surfaces.
Collections palette
Collections give color identity to product areas, modules, or content groups without replacing the global primary color.
Collection color usage rules
- Do not use collection colors as the global product primary.
- Use collections for module identity, category badges, section headers, charts, avatars, tabs, and accents.
- Prefer
100for background,500for accent, and700for text or strong iconography.
Ruby palette
| Token | Hex | Lesli | Variable |
|---|---|---|---|
| Ruby 100 | #F6E5E5 | lesli-color(ruby, 100) | --lesli-color-ruby-100 |
| Ruby 300 | #D89C9C | lesli-color(ruby, 300) | --lesli-color-ruby-300 |
| Ruby 500 | #B23A3A | lesli-color(ruby, 500) | --lesli-color-ruby-500 |
| Ruby 700 | #8E2E2E | lesli-color(ruby, 700) | --lesli-color-ruby-700 |
| Ruby 900 | #5C1E1E | lesli-color(ruby, 900) | --lesli-color-ruby-900 |
Ember palette
| Token | Hex | Lesli | Variable |
|---|---|---|---|
| Ember 100 | #E2F1EC | lesli-color(jade, 100) | --lesli-color-jade-100 |
| Ember 300 | #91BBB1 | lesli-color(jade, 300) | --lesli-color-jade-300 |
| Ember 500 | #2D7A68 | lesli-color(jade, 500) | --lesli-color-jade-500 |
| Ember 700 | #256656 | lesli-color(jade, 700) | --lesli-color-jade-700 |
| Ember 900 | #143F33 | lesli-color(jade, 900) | --lesli-color-jade-900 |
Maize palette
| Token | Hex | Lesli | Variable |
|---|---|---|---|
| Maize 100 | #FBF2DF | lesli-color(maize, 100) | --lesli-color-maize-100 |
| Maize 300 | #DAC18F | lesli-color(maize, 300) | --lesli-color-maize-300 |
| Maize 500 | #B2852D | lesli-color(maize, 500) | --lesli-color-maize-500 |
| Maize 700 | #946E25 | lesli-color(maize, 700) | --lesli-color-maize-700 |
| Maize 900 | #594016 | lesli-color(maize, 900) | --lesli-color-maize-900 |
Agave palette
| Token | Hex | Lesli | Variable |
|---|---|---|---|
| Agave 100 | #ECF2E7 | lesli-color(agave, 100) | --lesli-color-agave-100 |
| Agave 300 | #ACBDA2 | lesli-color(agave, 300) | --lesli-color-agave-300 |
| Agave 500 | #5D7C4D | lesli-color(agave, 500) | --lesli-color-agave-500 |
| Agave 700 | #4F6942 | lesli-color(agave, 700) | --lesli-color-agave-700 |
| Agave 900 | #34442C | lesli-color(agave, 900) | --lesli-color-agave-900 |
Jade palette
| Token | Hex | Lesli | Variable |
|---|---|---|---|
| Jade 100 | #E2F1EC | lesli-color(jade, 100) | --lesli-color-jade-100 |
| Jade 300 | #91BBB1 | lesli-color(jade, 300) | --lesli-color-jade-300 |
| Jade 500 | #2D7A68 | lesli-color(jade, 500) | --lesli-color-jade-500 |
| Jade 700 | #256656 | lesli-color(jade, 700) | --lesli-color-jade-700 |
| Jade 900 | #143F33 | lesli-color(jade, 900) | --lesli-color-jade-900 |
Cenote palette
| Token | Hex | Lesli | Variable |
|---|---|---|---|
| Cenote 100 | #E3F0F3 | lesli-color(cenote, 100) | --lesli-color-cenote-100 |
| Cenote 300 | #8FB8C4 | lesli-color(cenote, 300) | --lesli-color-cenote-300 |
| Cenote 500 | #1F6F8B | lesli-color(cenote, 500) | --lesli-color-cenote-500 |
| Cenote 700 | #195D74 | lesli-color(cenote, 700) | --lesli-color-cenote-700 |
| Cenote 900 | #103B4A | lesli-color(cenote, 900) | --lesli-color-cenote-900 |
Quetzal palette
| Token | Hex | Lesli | Variable |
|---|---|---|---|
| Quetzal 100 | #E8EBF6 | lesli-color(quetzal, 100) | --lesli-color-quetzal-100 |
| Quetzal 300 | #A1AED8 | lesli-color(quetzal, 300) | --lesli-color-quetzal-300 |
| Quetzal 500 | #4B5FA8 | lesli-color(quetzal, 500) | --lesli-color-quetzal-500 |
| Quetzal 700 | #3E4F8C | lesli-color(quetzal, 700) | --lesli-color-quetzal-700 |
| Quetzal 900 | #283259 | lesli-color(quetzal, 900) | --lesli-color-quetzal-900 |
Bugambilia palette
| Token | Hex | Lesli | Variable |
|---|---|---|---|
| Bugambilia 100 | #F5E6EE | lesli-color(bugambilia, 100) | --lesli-color-bugambilia-100 |
| Bugambilia 300 | #D49AB5 | lesli-color(bugambilia, 300) | --lesli-color-bugambilia-300 |
| Bugambilia 500 | #A83E6F | lesli-color(bugambilia, 500) | --lesli-color-bugambilia-500 |
| Bugambilia 700 | #8A345C | lesli-color(bugambilia, 700) | --lesli-color-bugambilia-700 |
| Bugambilia 900 | #58213B | lesli-color(bugambilia, 900) | --lesli-color-bugambilia-900 |
Cacao palette
| Token | Hex | Lesli | Variable |
|---|---|---|---|
| Cacao 100 | #EFE8E3 | lesli-color(cacao, 100) | --lesli-color-cacao-100 |
| Cacao 300 | #B9A394 | lesli-color(cacao, 300) | --lesli-color-cacao-300 |
| Cacao 500 | #6B4A35 | lesli-color(cacao, 500) | --lesli-color-cacao-500 |
| Cacao 700 | #593E2C | lesli-color(cacao, 700) | --lesli-color-cacao-700 |
| Cacao 900 | #38271C | lesli-color(cacao, 900) | --lesli-color-cacao-900 |
Obsidian palette
| Token | Hex | Lesli | Variable |
|---|---|---|---|
| Obsidian 100 | #EAEEF2 | lesli-color(obsidian, 100) | --lesli-color-obsidian-100 |
| Obsidian 300 | #ABB4BD | lesli-color(obsidian, 300) | --lesli-color-obsidian-300 |
| Obsidian 500 | #5F6C7D | lesli-color(obsidian, 500) | --lesli-color-obsidian-500 |
| Obsidian 700 | #505B69 | lesli-color(obsidian, 700) | --lesli-color-obsidian-700 |
| Obsidian 900 | #313942 | lesli-color(obsidian, 900) | --lesli-color-obsidian-900 |
Color customization
Inside our initialization file, you'll find a dedicated section for customizing the color scheme. Simply edit the color values for various elements such as the primary color, sidebar, header, footer, background, and hover effects.
See the example below
Lesli.configure do |config|
# Main color palette for Lesli
config.theme = {
color_primary: "#193d8d",
color_sidebar: "#ffffff",
color_header: "transparent",
color_footer: "transparent",
color_background: "#eef2f6",
color_sidebar_hover: "#dee7ec"
}
end
This is going to modify the corresponding SASS variables in the Lesli core:
$primary (bulma) -> color_primary
$lesli-color-primary -> color_primary
$lesli-header-color -> color_header
$lesli-footer-color -> color_footer
$lesli-sidebar-color -> color_sidebar
$lesli-sidebar-hover -> color_sidebar_hover
$lesli-color-background -> color_background
Lesli provide the same color palette as CSS variables:
:root {
--lesli-color-primary: var(--lesli-theme-color-primary, #{$lesli-color-primary});
--lesli-header-color: var(--lesli-theme-header-color, #{$lesli-header-color});
--lesli-navbar-color: var(--lesli-theme-header-color, #{$lesli-navbar-color});
--lesli-footer-color: var(--lesli-theme-footer-color, #{$lesli-footer-color});
--lesli-sidebar-color: var(--lesli-theme-sidebar-color, #{$lesli-sidebar-color});
--lesli-logo-color: var(--lesli-theme-logo-color, #{$lesli-logo-color});
--lesli-font-color: var(--lesli-theme-font-color, #{$lesli-font-color});
}
You can modify the CSS variables at runtime, so your users can modify the theme.
Bulma customization
You can customize bulma changing the value of the variables, see: https://bulma.io/documentation/customize/variables/
Last Update: 2026/04/25