#Theme variable reference
Generated from the theme registry: 292 variables. See the authoring guide for scope and usage. Run pnpm theme:generate after changing definitions; the documentation build checks for stale output.
Download the JSON Schema
. Add "$schema": "https://aino.md/schemas/appearance-theme.v2.schema.json" to the top level of a v2 theme for
completion and structural checks in compatible editors. The schema checks names, types and basic literal syntax; Aino
import remains authoritative for numeric ranges inside color functions, shadows and other strings. For offline use,
download the schema and reference its relative path.
Schema descriptions support all nine interface languages. English uses the default URL; other languages add their code to the filename, such as appearance-theme.v2.ja.schema.json. Codes: zh-cn, zh-tw, ja, de, fr, es, pt, ar.
All values are strings. Examples show valid input, not default values.
| Variable | Group | Type | Example |
|---|---|---|---|
--accent-primary | accent | color | #abc |
--accent-secondary | accent | color | #abc |
--accent-soft | accent | color | #abc |
--accent-strong | accent | color | #abc |
--accent-tertiary | accent | color | #abc |
--button-background | aino-button | color | #abc |
--button-background-active | aino-button | color | #abc |
--button-background-hover | aino-button | color | #abc |
--button-border-color | aino-button | color | #abc |
--button-border-color-hover | aino-button | color | #abc |
--button-color | aino-button | color | #abc |
--button-color-hover | aino-button | color | #abc |
--button-font-weight | aino-button | font-weight | normal |
--button-radius | aino-button | radius | 0 |
--button-shadow | aino-button | shadow | none |
--card-background | aino-card | color | #abc |
--card-background-hover | aino-card | color | #abc |
--card-border-color | aino-card | color | #abc |
--card-border-width | aino-card | length | 0 |
--card-radius | aino-card | radius | 0 |
--card-shadow | aino-card | shadow | none |
--input-background | aino-input | color | #abc |
--input-background-hover | aino-input | color | #abc |
--input-border-color | aino-input | color | #abc |
--input-border-color-focus | aino-input | color | #abc |
--input-color | aino-input | color | #abc |
--input-placeholder-color | aino-input | color | #abc |
--input-shadow | aino-input | shadow | none |
--modal-backdrop-blur | aino-material | length | 0 |
--modal-backdrop-saturation | aino-material | ratio | 0 |
--toast-backdrop-blur | aino-toast | length | 0 |
--toast-backdrop-saturation | aino-toast | ratio | 0 |
--toast-background | aino-toast | color | #abc |
--toast-border-color | aino-toast | color | #abc |
--toast-border-width | aino-toast | length | 0 |
--toast-radius | aino-toast | radius | 0 |
--toast-shadow | aino-toast | shadow | none |
--toolbar-backdrop-blur | aino-toolbar | length | 0 |
--toolbar-backdrop-saturation | aino-toolbar | ratio | 0 |
--toolbar-background | aino-toolbar | color | #abc |
--toolbar-border-color | aino-toolbar | color | #abc |
--toolbar-shadow | aino-toolbar | shadow | none |
--border-color | border | color | #abc |
--border-color-strong | border | color | #abc |
--border-color-subtle | border | color | #abc |
--editor-border-color | editor | color | #abc |
--editor-surface-primary | editor | color | #abc |
--editor-surface-secondary | editor | color | #abc |
--editor-surface-tertiary | editor | color | #abc |
--focus-ring-shadow | effects | shadow | none |
--shadow-glow | effects | shadow | none |
--shadow-lg | effects | shadow | none |
--shadow-md | effects | shadow | none |
--shadow-sm | effects | shadow | none |
--clickable-icon-radius | icons | radius | 0 |
--icon-color | icons | color | #abc |
--icon-color-active | icons | color | #abc |
--icon-color-hover | icons | color | #abc |
--icon-opacity | icons | opacity | 0 |
--icon-opacity-hover | icons | opacity | 0 |
--icon-size | icons | length | 0 |
--icon-stroke | icons | ratio | 0 |
--editor-link-color | link | color | #abc |
--editor-link-hover-color | link | color | #abc |
--link-color | link | color | #abc |
--link-hover-color | link | color | #abc |
--menu-background | menu | color | #abc |
--menu-border-color | menu | color | #abc |
--menu-item-background-hover | menu | color | #abc |
--menu-item-color | menu | color | #abc |
--menu-item-color-hover | menu | color | #abc |
--menu-item-padding-x | menu | length | 0 |
--menu-item-padding-y | menu | length | 0 |
--menu-radius | menu | radius | 0 |
--menu-shadow | menu | shadow | none |
--motion-curve-emphasis | motion | easing | linear |
--motion-curve-soft | motion | easing | linear |
--motion-duration-fast | motion | duration | 0ms |
--motion-duration-normal | motion | duration | 0ms |
--motion-duration-slow | motion | duration | 0ms |
--blockquote-background-color | obsidian-blockquote | color | #abc |
--blockquote-border-color | obsidian-blockquote | color | #abc |
--blockquote-border-thickness | obsidian-blockquote | length | 0 |
--blockquote-color | obsidian-blockquote | color | #abc |
--blockquote-font-style | obsidian-blockquote | font-style | normal |
--checkbox-border-color | obsidian-checkbox | color | #abc |
--checkbox-border-color-hover | obsidian-checkbox | color | #abc |
--checkbox-color | obsidian-checkbox | color | #abc |
--checkbox-color-hover | obsidian-checkbox | color | #abc |
--checkbox-marker-color | obsidian-checkbox | color | #abc |
--code-background | obsidian-code | color | #abc |
--code-comment | obsidian-code | color | #abc |
--code-function | obsidian-code | color | #abc |
--code-important | obsidian-code | color | #abc |
--code-keyword | obsidian-code | color | #abc |
--code-normal | obsidian-code | color | #abc |
--code-operator | obsidian-code | color | #abc |
--code-property | obsidian-code | color | #abc |
--code-punctuation | obsidian-code | color | #abc |
--code-size | obsidian-code | font-size | 18px |
--code-string | obsidian-code | color | #abc |
--code-tag | obsidian-code | color | #abc |
--code-value | obsidian-code | color | #abc |
--hr-color | obsidian-editor | color | #abc |
--hr-thickness | obsidian-editor | length | 0 |
--background-modifier-active-hover | obsidian-foundation | color | #abc |
--background-modifier-border | obsidian-foundation | color | #abc |
--background-modifier-border-focus | obsidian-foundation | color | #abc |
--background-modifier-border-hover | obsidian-foundation | color | #abc |
--background-modifier-hover | obsidian-foundation | color | #abc |
--background-primary | obsidian-foundation | color | #abc |
--background-primary-alt | obsidian-foundation | color | #abc |
--background-secondary | obsidian-foundation | color | #abc |
--background-secondary-alt | obsidian-foundation | color | #abc |
--caret-color | obsidian-foundation | color | #abc |
--color-accent | obsidian-foundation | color | #abc |
--color-accent-1 | obsidian-foundation | color | #abc |
--color-accent-2 | obsidian-foundation | color | #abc |
--interactive-accent | obsidian-foundation | color | #abc |
--interactive-accent-hover | obsidian-foundation | color | #abc |
--interactive-hover | obsidian-foundation | color | #abc |
--interactive-normal | obsidian-foundation | color | #abc |
--radius-l | obsidian-foundation | radius | 0 |
--radius-m | obsidian-foundation | radius | 0 |
--radius-s | obsidian-foundation | radius | 0 |
--text-accent | obsidian-foundation | color | #abc |
--text-accent-hover | obsidian-foundation | color | #abc |
--text-error | obsidian-foundation | color | #abc |
--text-faint | obsidian-foundation | color | #abc |
--text-highlight-bg | obsidian-foundation | color | #abc |
--text-normal | obsidian-foundation | color | #abc |
--text-on-accent | obsidian-foundation | color | #abc |
--text-on-accent-inverted | obsidian-foundation | color | #abc |
--text-selection | obsidian-foundation | color | #abc |
--text-success | obsidian-foundation | color | #abc |
--text-warning | obsidian-foundation | color | #abc |
--h1-color | obsidian-heading | color | #abc |
--h1-size | obsidian-heading | font-size | 18px |
--h1-weight | obsidian-heading | font-weight | normal |
--h2-color | obsidian-heading | color | #abc |
--h2-size | obsidian-heading | font-size | 18px |
--h2-weight | obsidian-heading | font-weight | normal |
--h3-color | obsidian-heading | color | #abc |
--h3-size | obsidian-heading | font-size | 18px |
--h3-weight | obsidian-heading | font-weight | normal |
--h4-color | obsidian-heading | color | #abc |
--h4-size | obsidian-heading | font-size | 18px |
--h4-weight | obsidian-heading | font-weight | normal |
--h5-color | obsidian-heading | color | #abc |
--h5-size | obsidian-heading | font-size | 18px |
--h5-weight | obsidian-heading | font-weight | normal |
--h6-color | obsidian-heading | color | #abc |
--h6-size | obsidian-heading | font-size | 18px |
--h6-weight | obsidian-heading | font-weight | normal |
--heading-formatting | obsidian-heading | color | #abc |
--input-border-width | obsidian-input | length | 0 |
--input-font-weight | obsidian-input | font-weight | normal |
--input-radius | obsidian-input | radius | 0 |
--link-color-hover | obsidian-link | color | #abc |
--link-external-color | obsidian-link | color | #abc |
--link-external-color-hover | obsidian-link | color | #abc |
--link-unresolved-color | obsidian-link | color | #abc |
--list-indent | obsidian-list | length | 0 |
--list-marker-color | obsidian-list | color | #abc |
--list-marker-color-hover | obsidian-list | color | #abc |
--list-spacing | obsidian-list | length | 0 |
--modal-background | obsidian-modal | color | #abc |
--modal-border-color | obsidian-modal | color | #abc |
--modal-border-width | obsidian-modal | length | 0 |
--modal-radius | obsidian-modal | radius | 0 |
--nav-collapse-icon-color | obsidian-navigation | color | #abc |
--nav-collapse-icon-color-collapsed | obsidian-navigation | color | #abc |
--nav-indentation-guide-color | obsidian-navigation | color | #abc |
--nav-indentation-guide-width | obsidian-navigation | length | 0 |
--nav-item-background-active | obsidian-navigation | color | #abc |
--nav-item-background-hover | obsidian-navigation | color | #abc |
--nav-item-background-selected | obsidian-navigation | color | #abc |
--nav-item-color | obsidian-navigation | color | #abc |
--nav-item-color-active | obsidian-navigation | color | #abc |
--nav-item-color-highlighted | obsidian-navigation | color | #abc |
--nav-item-color-hover | obsidian-navigation | color | #abc |
--nav-item-color-selected | obsidian-navigation | color | #abc |
--nav-item-weight | obsidian-navigation | font-weight | normal |
--nav-item-weight-active | obsidian-navigation | font-weight | normal |
--nav-item-weight-hover | obsidian-navigation | font-weight | normal |
--color-blue | obsidian-palette | color | #abc |
--color-cyan | obsidian-palette | color | #abc |
--color-green | obsidian-palette | color | #abc |
--color-orange | obsidian-palette | color | #abc |
--color-pink | obsidian-palette | color | #abc |
--color-purple | obsidian-palette | color | #abc |
--color-red | obsidian-palette | color | #abc |
--color-yellow | obsidian-palette | color | #abc |
--table-background | obsidian-table | color | #abc |
--table-border-color | obsidian-table | color | #abc |
--table-border-width | obsidian-table | length | 0 |
--table-header-background | obsidian-table | color | #abc |
--table-header-border-color | obsidian-table | color | #abc |
--table-header-color | obsidian-table | color | #abc |
--table-header-weight | obsidian-table | font-weight | normal |
--table-row-alt-background | obsidian-table | color | #abc |
--table-row-background-hover | obsidian-table | color | #abc |
--table-selection | obsidian-table | color | #abc |
--table-text-color | obsidian-table | color | #abc |
--tab-background-active | obsidian-tabs | color | #abc |
--tab-container-background | obsidian-tabs | color | #abc |
--tab-divider-color | obsidian-tabs | color | #abc |
--tab-font-size | obsidian-tabs | font-size | 18px |
--tab-font-weight | obsidian-tabs | font-weight | normal |
--tab-radius | obsidian-tabs | radius | 0 |
--tab-radius-active | obsidian-tabs | radius | 0 |
--tab-text-color | obsidian-tabs | color | #abc |
--tab-text-color-active | obsidian-tabs | color | #abc |
--tag-background | obsidian-tag | color | #abc |
--tag-background-hover | obsidian-tag | color | #abc |
--tag-border-color | obsidian-tag | color | #abc |
--tag-border-color-hover | obsidian-tag | color | #abc |
--tag-border-width | obsidian-tag | length | 0 |
--tag-color | obsidian-tag | color | #abc |
--tag-color-hover | obsidian-tag | color | #abc |
--tag-radius | obsidian-tag | radius | 0 |
--tag-size | obsidian-tag | font-size | 18px |
--tag-weight | obsidian-tag | font-weight | normal |
--bold-color | obsidian-typography | color | #abc |
--italic-color | obsidian-typography | color | #abc |
--scrollbar-active-thumb-bg | scrollbar | color | #abc |
--scrollbar-bg | scrollbar | color | #abc |
--scrollbar-thumb-bg | scrollbar | color | #abc |
--radius-lg | shape | radius | 0 |
--radius-md | shape | radius | 0 |
--radius-sm | shape | radius | 0 |
--radius-xl | shape | radius | 0 |
--radius-xs | shape | radius | 0 |
--sidebar-blur | sidebar | length | 0 |
--sidebar-opacity | sidebar | opacity | 0 |
--sidebar-panel-background | sidebar | color | #abc |
--sidebar-panel-background-active | sidebar | color | #abc |
--sidebar-panel-background-hover | sidebar | color | #abc |
--sidebar-panel-background-raised | sidebar | color | #abc |
--sidebar-panel-border-color | sidebar | color | #abc |
--sidebar-saturation | sidebar | ratio | 0 |
--surface-sidebar | sidebar | color | #abc |
--slider-thumb-border-color | slider | color | #abc |
--slider-thumb-border-width | slider | length | 0 |
--slider-thumb-color | slider | color | #abc |
--slider-thumb-height | slider | length | 0 |
--slider-thumb-radius | slider | radius | 0 |
--slider-thumb-width | slider | length | 0 |
--slider-track-background | slider | color | #abc |
--slider-track-height | slider | length | 0 |
--error | status | color | #abc |
--success | status | color | #abc |
--warning | status | color | #abc |
--surface-accent-soft | surface | color | #abc |
--surface-accent-soft-strong | surface | color | #abc |
--surface-canvas | surface | color | #abc |
--surface-danger-soft | surface | color | #abc |
--surface-elevated | surface | color | #abc |
--surface-muted | surface | color | #abc |
--surface-muted-strong | surface | color | #abc |
--surface-panel | surface | color | #abc |
--surface-success-soft | surface | color | #abc |
--surface-toolbar | surface | color | #abc |
--surface-warning-soft | surface | color | #abc |
--text-inverse | text | color | #abc |
--text-muted | text | color | #abc |
--text-primary | text | color | #abc |
--text-secondary | text | color | #abc |
--toggle-background | toggle | color | #abc |
--toggle-background-active | toggle | color | #abc |
--toggle-radius | toggle | radius | 0 |
--toggle-thumb-color | toggle | color | #abc |
--toggle-thumb-height | toggle | length | 0 |
--toggle-thumb-radius | toggle | radius | 0 |
--toggle-thumb-width | toggle | length | 0 |
--toggle-width | toggle | length | 0 |
--tooltip-background | tooltip | color | #abc |
--tooltip-color | tooltip | color | #abc |
--tooltip-font-size | tooltip | font-size | 18px |
--tooltip-radius | tooltip | radius | 0 |
--tooltip-shadow | tooltip | shadow | none |
--font-interface-theme | typography | font-family | 'Noto Serif SC', Georgia, serif |
--font-monospace-theme | typography | font-family | 'Noto Serif SC', Georgia, serif |
--font-text-size | typography | font-size | 18px |
--font-text-theme | typography | font-family | 'Noto Serif SC', Georgia, serif |
--font-ui-large | typography | font-size | 18px |
--font-ui-medium | typography | font-size | 18px |
--font-ui-small | typography | font-size | 18px |
--heading-spacing | typography | length | 0 |
--line-height-normal | typography | line-height | 1 |
--line-height-tight | typography | line-height | 1 |
--p-spacing | typography | length | 0 |
#Value constraints
These constraints and the in-app AI prompt use the same definitions. Length bounds apply separately to each unit.
| Type | Constraints |
|---|---|
| color | Color: #RGB, #RGBA, #RRGGBB, #RRGGBBAA, transparent, or comma-separated rgb()/rgba()/hsl()/hsla(). Normalized to six- or eight-digit hexadecimal, preserving alpha. |
| radius | Corner radius: 0 or a nonnegative length. Maximum by unit: 32px / 2rem / 2em. |
| length | Length: 0 or a nonnegative length. Maximum by unit: 256px / 16rem / 16em. |
| font-size | Font size: 0 or a nonnegative length. Maximum by unit: 64px / 4rem / 4em. |
| font-weight | Font weight: normal, bold, 100, 200, 300, 400, 500, 600, 700, 800, 900. |
| font-style | Font style: normal, italic, oblique. |
| font-family | Font stack: at most 8 installed fonts and 500 characters. Font files are not included or downloaded. |
| opacity | Opacity: a unitless number from 0 to 1. |
| ratio | Ratio: a unitless number from 0 to 3. |
| line-height | Line height: a unitless number from 1 to 3. |
| duration | Duration: a nonnegative value in ms or s, at most 2000 ms. |
| easing | Easing: linear, ease, ease-in, ease-out, ease-in-out, or cubic-bezier(x1, y1, x2, y2). x range: 0–1; y range: -3–3. |
| shadow | Shadow: none or up to 4 layers and 500 characters. Each layer: optional inset, x, y, optional blur, optional spread, color. Maximum absolute length by unit: 256px / 16rem / 16em. Blur must be nonnegative. |