CSS Variables

CSS Variables

The Adwaita stylesheet provides a number of predefined CSS variables for colors that can be used from applications.

UI Colors

These colors are used throughout the UI. They can differ between the light and dark styles.

Many colors are grouped as background/foreground pairs. These colors are always meant to be used together as the background and foreground color, for example:

my-widget {
  background-color: var(--accent-bg-color);
  color: var(--accent-fg-color);
}

Applications can override these colors by re-declaring them, for example:

:root {
  --accent-bg-color: #e01b24;
}

Standalone colors

Some colors also have standalone versions. They are similar to the background version, but provide better contrast when used as foreground colors on top of a neutral background - for example, colorful text in a window.

my-widget {
  color: var(--accent-color);
}

Standalone colors are typically darker than the corresponding background color for the light style, and lighter than the background for the dark style. They are automatically derived from the background color, so it’s not necesssary to override them manually when setting app-wide accent color.

However, when overriding the background colors for specific widgets, the standalone colors must overridden too, as follows:

my-widget {
  --accent-bg-color: var(--purple-3);
  --accent-color: oklab(from var(--accent-bg-color) var(--standalone-color-oklab));
}

The --standalone-color-oklab variable has the following values for light and dark styles:

Name Light Dark
--standalone-color-oklab min(l, 0.5) a b max(l, 0.85) a b

Note

Adjusting colors in the Oklab color space may produce colors outside of sRGB gamut. These colors need to be gamut mapped in order to be displayed on screen. This page lists colors after gamut mapping, and out of gamut colors will be marked with an asterisk.

For example, the dark standalone color for blue accent color is oklab(0.850000 -0.081818 -0.053404), so color(srgb 0.504313 0.817230 1.218717) when converted to sRGB. However, the blue channel in this color is outside the [0-1] range and is clipped to it before being displayed, so the end result is color(srgb 0.504313 0.817230 1), or #81d0ff.

Accent Colors

The accent color is used across many different widgets, often to indicate that a widget is important, interactive, or currently active. Try to avoid using it on large surfaces, or on too many items on the same view.

The .accent style class allows to use it for widgets such as GtkLabel.

The background color is available as --accent-bg-color, the foreground as --accent-fg-color and the standalone color as --accent-color.

The --accent-color color is derived from --accent-bg-color as detailed above.

The default values of these colors depend on the system preferences, and will always be one of the following:

Color Background Foreground Standalone (Light) Standalone (Dark)
Blue
#3584e4
#ffffff
#0461be
#81d0ff *
Teal
#2190a4
#ffffff
#007184 *
#7bdff4
Green
#3a944a
#ffffff
#15772e
#8de698
Yellow
#c88800
#ffffff
#905300 *
#ffc057 *
Orange
#ed5b00
#ffffff
#b62200 *
#ff9c5b *
Red
#e62d42
#ffffff
#c00023 *
#ff888c *
Pink
#d56199
#ffffff
#a2326c
#ffa0d8 *
Purple
#9141ac
#ffffff
#8939a4
#fba7ff *
Slate
#6f8396
#ffffff
#526678
#bbd1e5

Each background color is also available as a variable, as follows:

Name Value
--accent-blue
#3584e4
--accent-teal
#2190a4
--accent-green
#3a944a
--accent-yellow
#c88800
--accent-orange
#ed5b00
--accent-red
#e62d42
--accent-pink
#d56199
--accent-purple
#9141ac
--accent-slate
#6f8396

Destructive Colors

The destructive color indicates a dangerous action, such as deleting a file. It’s used by GtkButton and AdwButtonRow with the .destructive-action style class.

The --destructive-color color is derived from --destructive-bg-color as detailed above.

Name Light Dark
--destructive-bg-color
#e01b24
#c01c28
--destructive-fg-color
#ffffff
#ffffff
--destructive-color
#c30000 *
#ff938c *

Success Colors

This color is used with the .success style class, or in a GtkLevelBar with the GTK_LEVEL_BAR_OFFSET_HIGH offset.

The --success-color color is derived from --success-bg-color as detailed above.

Name Light Dark
--success-bg-color
#2ec27e
#26a269
--success-fg-color
#ffffff
#ffffff
--success-color
#007c3d *
#78e9ab

Warning Colors

This color is used with the .warning style class, or in a GtkLevelBar with the GTK_LEVEL_BAR_OFFSET_LOW offset.

The --warning-color color is derived from --warning-bg-color as detailed above.

Name Light Dark
--warning-bg-color
#e5a50a
#cd9309
--warning-fg-color
rgb(0 0 0 / 80%)
rgb(0 0 0 / 80%)
--warning-color
#905400 *
#ffc252

Error Colors

This color is used with the .error style class.

The --error-color color is derived from --error-bg-color as detailed above.

Name Light Dark
--error-bg-color
#e01b24
#c01c28
--error-fg-color
#ffffff
#ffffff
--error-color
#c30000 *
#ff938c *

Window Colors

These colors are used on GtkWindow, as well as with the .background style class.

Name Light Dark
--window-bg-color
#fafafb
#222226
--window-fg-color
rgb(0 0 6 / 80%)
#ffffff

View Colors

These colors are used in a variety of widgets such as GtkTextView, as well as with the .view style class.

Name Light Dark
--view-bg-color
#ffffff
#1d1d20
--view-fg-color
rgb(0 0 6 / 80%)
#ffffff

Header Bar Colors

These colors are used for header bars and similar widgets, generally attached to the top or bottom sides of a window. The full list of widgets using them:

Name Light Dark
--headerbar-bg-color
#ffffff
#2e2e32
--headerbar-fg-color
rgb(0 0 6 / 80%)
#ffffff
--headerbar-border-color
rgb(0 0 6 / 80%)
#ffffff
--headerbar-backdrop-color
#fafafb
#222226
--headerbar-shade-color
rgb(0 0 6 / 12%)
rgb(0 0 6 / 36%)
--headerbar-darker-shade-color
rgb(0 0 6 / 12%)
rgb(0 0 6 / 90%)

--headerbar-border-color has the same default value as --headerbar-fg-color, but doesn’t change along with it. This can be useful if a light window has a dark header bar with light text; in this case it may be desirable to keep the border dark. This variable is only used for vertical borders - for example, separators between the 2 header bars in a split header bar layout.

--headerbar-backdrop-color is used instead of --headerbar-bg-color when the window is not focused. By default it’s an alias of --window-bg-color and changes together with it. When overriding header bar colors, make sure to set it to a value matching your --headerbar-bg-color.

--headerbar-shade-color is used to provide a dark shadow or a border for header bars and similar widgets. This color should always be partially transparent black.

--headerbar-darker-shade-color is used for the ADW_TOOLBAR_RAISED_BORDER border. This color should always be partially transparent black, and is intended to be darker than both --headerbar-bg-color and --headerbar-backdrop-color on top of white color.

These colors are used for sidebars, generally attached to the left or right sides of a window. They are used by AdwNavigationSplitView and AdwOverlaySplitView when they are not collapsed.

Name Light Dark
--sidebar-bg-color
#ebebed
#2e2e32
--sidebar-fg-color
rgb(0 0 6 / 80%)
#ffffff
--sidebar-backdrop-color
#f2f2f4
#28282c
--sidebar-border-color
rgb(0 0 6 / 7%)
rgb(0 0 6 / 36%)
--sidebar-shade-color
rgb(0 0 6 / 7%)
rgb(0 0 6 / 25%)

--sidebar-backdrop-color is used instead of --sidebar-bg-color when the window is not focused. When overriding sidebar colors, make sure to set it to a value matching your --sidebar-bg-color.

--sidebar-shade-color is used to provide a dark border for sidebars, scroll undershoots within sidebars, as well as transitions in AdwNavigationView, AdwOverlaySplitView, AdwLeaflet and AdwFlap. This color should always be partially transparent black, with the opacity tuned to be well visible on top of --sidebar-bg-color.

--sidebar-border-color is used to provide a dark border for sidebars. This color should always be partially transparent black, with the opacity tuned to be well visible on top of --sidebar-bg-color next to --window-bg-color or --view-bg-color.

--sidebar-shade-coloris used to provide scroll undershoots within sidebars, as well as transitions in AdwNavigationView, AdwOverlaySplitView, AdwLeaflet and AdwFlap. This color should always be partially transparent black, with the opacity tuned to be well visible on top of --sidebar-bg-color.

Since: 1.4

Secondary Sidebar Colors

These colors are used for middle panes in triple-pane layouts, created via nesting two split views within one another.

secondary-sidebar

Name Light Dark
--secondary-sidebar-bg-color
#f3f3f5
#28282c
--secondary-sidebar-fg-color
rgb(0 0 6 / 80%)
#ffffff
--secondary-sidebar-backdrop-color
#f6f6fa
#252529
--secondary-sidebar-border-color
rgb(0 0 6 / 7%)
rgb(0 0 6 / 36%)
--secondary-sidebar-shade-color
rgb(0 0 6 / 7%)
rgb(0 0 6 / 25%)

--secondary-sidebar-backdrop-color is used instead of --secondary-sidebar-bg-color when the window is not focused. When overriding secondary sidebar colors, make sure to set it to a value matching your --secondary-sidebar-bg-color.

--secondary-sidebar-border-color is used to provide a dark border for secondary sidebars. This color should always be partially transparent black, with the opacity tuned to be well visible on top of --secondary-sidebar-bg-color next to --sidebar-bg-color.

--secondary-sidebar-shade-color is used to provide scroll undershoots within secondary sidebars, as well as transitions in AdwNavigationView, AdwOverlaySplitView, AdwLeaflet and AdwFlap. This color should always be partially transparent black, with the opacity tuned to be well visible on top of --secondary-sidebar-bg-color.

--secondary-sidebar-shade-color is used to provide a dark border for secondary sidebars, scroll undershoots within secondary sidebars, as well as transitions in AdwNavigationView, AdwOverlaySplitView, AdwLeaflet and AdwFlap. This color should always be partially transparent black, with the opacity tuned to be well visible on top of --secondary-sidebar-bg-color.

Since: 1.4

Card Colors

These colors are used for cards and boxed lists.

Name Light Dark
--card-bg-color
#ffffff
rgb(255 255 255 / 8%)
--card-fg-color
rgb(0 0 6 / 80%)
#ffffff
--card-shade-color
rgb(0 0 6 / 7%)
rgb(0 0 6 / 36%)

--card-shade-color is used to provide separators between boxed list rows and similar widgets. This color should always be partially transparent black, with the opacity tuned to be well visible on top of --card-bg-color.

Tab Overview Colors

These colors are used for AdwTabOverview.

Name Light Dark
--overview-bg-color
#f3f3f5
#28282c
--overview-fg-color
rgb(0 0 6 / 80%)
#ffffff

--overview-bg-color and --overview-bg-color are used for the overview itself.

Since: 1.7

Name Light Dark
--thumbnail-bg-color
#ffffff
#39393d
--thumbnail-fg-color
rgb(0 0 6 / 80%)
#ffffff

--thumbnail-bg-color and --thumbnail-fg-color are used for the tab thumbnails.

Since: 1.3

Active Toggle Colors

These colors are used for the active toggle in AdwToggleGroup.

Name Light Dark
--active-toggle-bg-color
#ffffff
rgb(255 255 255 / 20%)
--active-toggle-fg-color
rgb(0 0 6 / 80%)
#ffffff

Since: 1.7

Dialog Colors

These colors are used for AdwAlertDialog.

Name Light Dark
--dialog-bg-color
#fafafb
#36363a
--dialog-fg-color
rgb(0 0 6 / 80%)
#ffffff

Since: 1.2

Popover Colors

These colors are used for GtkPopover.

Name Light Dark
--popover-bg-color
#ffffff
#36363a
--popover-fg-color
rgb(0 0 6 / 80%)
#ffffff
--popover-shade-color
rgb(0 0 6 / 7%)
rgb(0 0 6 / 25%)

--popover-shade-color is used for scroll undershoot styles within popovers, as well as transitions in AdwNavigationView, AdwOverlaySplitView, AdwLeaflet and AdwFlap. This color should always be partially transparent black, with the opacity tuned to be well visible on top of --popover-bg-color. This color is only available since 1.4.

Miscellaneous Colors

Name Light Dark
--shade-color
rgb(0 0 6 / 7%)
rgb(0 0 6 / 25%)
--scrollbar-outline-color
#ffffff
rgb(0 0 6 / 50%)

--shade-color is used for scroll undershoots, as well as transitions in AdwNavigationView, AdwOverlaySplitView, AdwLeaflet and AdwFlap. This color should always be partially transparent black, with the opacity tuned to be well visible on top of --window-bg-color.

--scrollbar-outline-color is used by GtkScrollbar to ensure that overlay scrollbars are visible regardless of the content color. It should always be the opposite of the scrollbar color - light with a dark scrollbar and dark

Helpers

These variables are provided for convenience (particularly, automatic high contrast mode support) and should not be overridden.

Opacity

Name Regular High contrast
--border-opacity 15% 50%
--dim-opacity 55% 90%
--disabled-opacity 50% 40%

These variables represent the commonly used opacity values.

--border-opacity is used for borders. (see --border-color)

--dim-opacity is used for the .dim style class and other similar contexts, like window and row subtitles.

--disabled-opacity is used for disabled widgets. (see GtkWidget:sensitive)

These variables can be used to automatically support high contrast mode.

Border Color

Name Value
--border-color color-mix(in srgb, currentColor var(--border-opacity), transparent)

Border color is derived from the current foreground color (currentColor) and changes between regular and high contrast modes. It should be used to support the high contrast mode automatically.

Window Radius

Name Value
--window-radius 12px

Matches the current window radius, whether it’s floating or maximized. Can be used for e.g. rounding focus rings next to the edge of the window while automatically accounting for maximized, fullscreen etc modes.

Palette Colors

The stylesheet provides the full GNOME color palette as the following set of variables:

Name Value
--blue-1 #99c1f1
--blue-2 #62a0ea
--blue-3 #3584e4
--blue-4 #1c71d8
--blue-5 #1a5fb4
--green-1 #8ff0a4
--green-2 #57e389
--green-3 #33d17a
--green-4 #2ec27e
--green-5 #26a269
--yellow-1 #f9f06b
--yellow-2 #f8e45c
--yellow-3 #f6d32d
--yellow-4 #f5c211
--yellow-5 #e5a50a
--orange-1 #ffbe6f
--orange-2 #ffa348
--orange-3 #ff7800
--orange-4 #e66100
--orange-5 #c64600
--red-1 #f66151
--red-2 #ed333b
--red-3 #e01b24
--red-4 #c01c28
--red-5 #a51d2d
--purple-1 #dc8add
--purple-2 #c061cb
--purple-3 #9141ac
--purple-4 #813d9c
--purple-5 #613583
--brown-1 #cdab8f
--brown-2 #b5835a
--brown-3 #986a44
--brown-4 #865e3c
--brown-5 #63452c
--light-1 #ffffff
--light-2 #f6f5f4
--light-3 #deddda
--light-4 #c0bfbc
--light-5 #9a9996
--dark-1 #77767b
--dark-2 #5e5c64
--dark-3 #3d3846
--dark-4 #241f31
--dark-5 #000000

Compatibility Colors

A number of colors has been available in Adwaita in GTK3. They are aliases of UI colors or otherwise derived from them. These colors use the older GTK-specific syntax for named colors rather than CSS variables, and don’t pick up overridden colors. As such, it’s recommended to avoid using these colors entirely.

Name Value
@theme_bg_color @window_bg_color
@theme_fg_color @window_fg_color
@theme_base_color @view_bg_color
@theme_text_color @view_fg_color
@theme_selected_bg_color @accent_bg_color
@theme_selected_fg_color @accent_fg_color
@insensitive_bg_color color-mix(@window_bg_color 60%, @view_bg_color)
@insensitive_fg_color color-mix(in srgb, @window_fg_color 50%, transparent)
@insensitive_base_color @view_bg_color
@borders color-mix(in srgb, currentColor 15%, transparent)
@theme_unfocused_bg_color @window_bg_color
@theme_unfocused_fg_color @window_fg_color
@theme_unfocused_base_color @view_bg_color
@theme_unfocused_text_color @view_fg_color
@theme_unfocused_selected_bg_color @accent_bg_color
@theme_unfocused_selected_fg_color @accent_fg_color
@unfocused_insensitive_color @insensitive_bg_color
@unfocused_borders @borders