Adw – 1: CSS Variables
Description: Reference for Adw-1: 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 be 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:

- `AdwToolbarView` uses it for the top and bottom bars
- `AdwHeaderBar` except with the `.flat` style class
- `AdwTabBar` except with the `.inline` style class
- `GtkHeaderBar` except with the `.flat` style class
- `GtkSearchBar` except with the `.inline` style class
- `GtkActionBar`

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.

## Sidebar Colors

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-color`is 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.

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 otherwise.

# Fonts

These variables allow to access system fonts. For each font, two variables are defined, corresponding to the font family and size. Most of the time, they should be used together, as follows:

    .my-content {
      font-family: var(--monospace-font-family);
      font-size: var(--monospace-font-size);
    }

## Document Font

Document font should be used in articles, messages and other content.

It’s used for the `.document` style class.

Name | Example Value
--- | ---
`--document-font-family` | Adwaita Sans
`--document-font-size` | 12pt

## Monospace Font

Monospace font should be used for displaying code, logs or shell commands.

It’s used for the `.monospace` style class.

Name | Example Value
--- | ---
`--monospace-font-family` | Adwaita Mono
`--monospace-font-size` | 11pt

# 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` | 15px

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 have 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`