Tintero Developers

Theme variables

Every CSS custom property Tintero declares, its fallback, and how many of the 29 built-in themes set it.

On this page

A theme is a stylesheet that sets custom properties on :root. Nowhere in Tintero is there a list of which names are allowed, so this page answers the question from two directions and lets you pick.

157
the app declares
Every property in the app stylesheet. The full list, most of which no theme ever touches.
12
the core palette
Set by 28 of the 29 built-in themes. Treat these as required.
47
some theme sets
Everything the built-in themes touch between them, including the rgba pairs they write by hand.

The core palette

The 12 variables that 28 of the 29 built-in themes all set. Nothing marks them as required in the source, but a theme that skips one inherits whatever the last theme left behind, so treat this as the floor.

--accent-color #c98a48
--accent-color-hover #e1a66b
--border-color #2d2d2d
--button-hover #1e1e1e
--dark-bg #121212
--dark-menu #1e1e1e
--dark-quaternary #2d2d2d
--dark-secondary #181818
--dark-tertiary #222222
--text-primary #e6d7c2
--text-secondary #a98e6b
--text-tertiary #a19591

The rgba siblings

Tintero builds its see-through surfaces by writing rgba(var(--dark-bg-rgba), 0.6), which means these 11 variables hold three bare numbers rather than a colour: 18, 18, 18, not #121212. They are not in variables.scss, so the only list of them is the one the built-in themes agree on.

--accent-color-hover-rgba --accent-color-rgba --border-color-rgba --button-hover-rgba --dark-bg-rgba --dark-menu-rgba --dark-quaternary-rgba --dark-secondary-rgba --dark-tertiary-rgba --text-primary-rgba --text-secondary-rgba

285 of the 308 values the built-in themes give these are written that way, by hand. The rest belong to the themes that borrow their colours from the operating system, where the value is a keyword like Canvas instead of a number.

What is cleared between themes

These 15 get wiped from :root on every theme switch and then put back from the person's own settings. They are the only ones where leaving a variable out really does mean "leave it to them" rather than "keep whatever the last theme said".

--editor-font --interface-font --tab-font --base-font-size --heading-font-size --editor-zoom --dialog-title-font --dialog-radius --dialog-padding --ui-scale-menus --ui-scale-sidebar --ui-scale-tabs --ui-scale-toolbar --ui-scale-docsidebar --ui-scale-tooltips

The editor zoom is a personal setting, kept between 50–200%. Your theme can suggest a starting value, but their slider wins from then on.

Every variable

All 157 custom properties the app declares, with the value it falls back to when nothing sets them. The number on the right is how many of the 29 built-in themes bother with each, which is the best hint you will get about whether you should too.

Base palette

--accent-color #c98a48 28/29
--accent-color-hover #e1a66b 28/29
--border-color #2d2d2d 28/29
--button-hover #1e1e1e 28/29
--dark-bg #121212 28/29
--dark-menu #1e1e1e 28/29
--dark-quaternary #2d2d2d 28/29
--dark-secondary #181818 28/29
--dark-tertiary #222222 28/29
--text-primary #e6d7c2 28/29
--text-secondary #a98e6b 28/29
--text-tertiary #a19591 28/29
--text-on-danger #ffffff none
--text-on-scene-type #ffffff none

Sidebar

--sidebar-container-background var(--dark-bg) derived 25/29
--sidebar-file-section-container-background var(--dark-secondary) derived 25/29
--sidebar-section-header-background linear-gradient(135deg, var(--dark-secondary), var(--dark-tertiary)) derived 25/29
--default-gradient linear-gradient(135deg, var(--dark-secondary) 0%, var(--dark-tertiary) 100%) derived 2/29
--sidebar-background linear-gradient(180deg, var(--sidebar-background-first-color) 0%, var(--sidebar-background-second-color) 100%) derived none
--sidebar-background-first-color var(--dark-tertiary) derived none
--sidebar-background-second-color var(--dark-quaternary) derived none
--sidebar-button-color var(--accent-color) derived none
--sidebar-button-padding 12px none
--sidebar-button-size 14px none

Dialogs

--dialog-padding 12px 6/29
--dialog-radius 16px 6/29

Interface scale

--ui-scale-docsidebar 1 6/29
--ui-scale-menus 1 6/29
--ui-scale-sidebar 1 6/29
--ui-scale-tabs 1 6/29
--ui-scale-toolbar 1 6/29
--ui-scale-tooltips 1 6/29

Typography

--dialog-title-font 'Lora', serif 6/29
--editor-font 'EB Garamond', serif 6/29
--editor-zoom 120% 6/29
--interface-font 'Inter Variable', sans-serif 6/29
--tab-font 'Inter Variable', sans-serif 6/29
--base-font-size 14px 3/29
--heading-font-size 18px 3/29
--label-font-size 13px 2/29
--small-font-size 12px 2/29
--font-help 'Source Sans Variable', sans-serif none

Buttons

--button-font-size 14px 2/29
--button-primary-background linear-gradient(135deg, var(--button-primary-first-color), var(--button-primary-second-color)) derived 2/29
--button-delete-first-color #e74c3c none
--button-delete-hover-second-color #a93226 none
--button-delete-second-color #c0392b none
--button-primary-first-color var(--accent-color) derived none
--button-primary-second-color var(--accent-color-hover) derived none
--button-primary-text var(--dark-bg) derived none
--button-secondary-first-color var(--dark-tertiary) derived none
--button-secondary-second-color var(--dark-quaternary) derived none
--button-secondary-text blue none

AI chat

--chat-code-bar-bg color-mix(in srgb, var(--text-primary) 6%, transparent) derived none
--chat-code-bg var(--dark-bg) derived none
--chat-code-border var(--border-color) derived none
--chat-inline-code-bg color-mix(in srgb, var(--text-primary) 10%, transparent) derived none
--chat-table-header-bg color-mix(in srgb, var(--text-primary) 6%, transparent) derived none

Badges

--badge-danger-bg #f8d7da none
--badge-danger-text #721c24 none
--badge-default-bg #e2e3e5 none
--badge-default-text #383d41 none
--badge-success-bg #d4edda none
--badge-success-text #155724 none
--badge-warning-bg #fff3cd none
--badge-warning-text #856404 none

Connection LED

--led-connected-color #4ade80 none
--led-disconnected-color #ef4444 none

Diff and history

--diff-added-color #6f9e6a none
--diff-conflict-warning var(--warning-color) derived none
--diff-mine #4FB3AF none
--diff-removed-color #b8604f none
--diff-theirs var(--accent-color) derived none
--snapshot-auto-color #5a86b0 none
--snapshot-warn-color #d9a441 none

File tree

--tree-icon-emoji-size 14px none
--tree-icon-project-size 16px none
--tree-icon-size 18px none
--tree-node-approved #8BC34A none
--tree-node-doc #4DD0E1 none
--tree-node-draft #FFD54F none
--tree-node-error #F06292 none
--tree-node-file #DEB887 none
--tree-node-file-name 12px none
--tree-node-finished #81C784 none
--tree-node-first-version var(--text-primary) derived none
--tree-node-folder-name 13px none
--tree-node-review #FFB74D none

Legacy aliases

--color-accent #FF6B6B none
--color-bg #373E40 none
--color-editor-background silver none
--color-editor-color black none
--color-editor-subbar-background #2f2f2f none
--color-editor-subbar-color grey none
--color-editor-toolbar-background #2f2f2f none
--color-editor-toolbar-buttons-background silver none
--color-primary #5C6AC4 none
--color-sidebar-background #2f2f2f none
--color-sidebar-buttons-background #2f2f2f none
--color-surface #2C2C2E none
--color-text #E5E5E5 none
--color-text-muted #A0A0A0 none
--color-toolbar-background #2f2f2f none
--color-toolbar-submenu-background #2f2f2f none
--mat-datepicker-calendar-date-outline-color var(--border-color) derived none
--mat-datepicker-calendar-date-text-color var(--text-primary) derived none
--os-accent-color #{color.adjust(#0078d7, $alpha: -0.7)} none

Menus

--menu-bar-background linear-gradient(180deg, var(--menu-bar-background-first-color) 0%, var(--menu-bar-background-second-color) 100%) derived none
--menu-bar-background-first-color var(--dark-quaternary) derived none
--menu-bar-background-second-color var(--dark-menu) derived none
--submenu-item-checked var(--accent-color) derived none
--submenu-item-checked-hover var(--accent-color-hover) derived none
--submenu-item-text var(--text-primary) derived none
--submenu-item-text-icons var(--accent-color-hover) derived none
--submenu-item-text-shortcut var(--text-secondary) derived none

Other

--card-bg var(--dark-secondary) derived none
--link-external-color #60a5fa none
--metric-grid-color color-mix(in srgb, var(--text-secondary) 22%, transparent) derived none
--metric-series-1 #3987e5 none
--metric-series-2 #d95926 none
--metric-series-3 #199e70 none
--scene-type-dream #7c3aed none
--scene-type-epilogue #374151 none
--scene-type-flashback #dc2626 none
--scene-type-interlude #0891b2 none
--scene-type-main-continuity #2563eb none
--scene-type-memory #d97706 none
--scene-type-montage #be123c none
--scene-type-prologue #4b5563 none
--scene-type-vision #059669 none
--warning-color #d9a441 none
--win-caption-active-bg color-mix(in srgb, var(--text-primary) 4%, transparent) derived none
--win-caption-btn-width 46px none
--win-caption-close-active-bg color-mix(in srgb, #c42b1c 90%, transparent) none
--win-caption-close-bg #c42b1c none
--win-caption-hover-bg color-mix(in srgb, var(--text-primary) 6%, transparent) derived none
--window-control-rest-bg color-mix(in srgb, var(--text-primary) 12%, transparent) derived none
--window-frame-border rgba(0, 0, 0, 0.6) none
--window-frame-highlight rgba(255, 255, 255, 0.07) none
--worldbuilding-color #a97fb0 none

Safe areas

--extra-margin-bottom 0px none
--extra-margin-left 0px none
--extra-margin-right 0px none
--extra-margin-top 0px none
--safe-area-bottom calc(env(safe-area-inset-bottom, 0px) + var(--extra-margin-bottom, 0px)) derived none
--safe-area-left calc(env(safe-area-inset-left, 0px) + var(--extra-margin-left, 0px)) derived none
--safe-area-right calc(env(safe-area-inset-right, 0px) + var(--extra-margin-right, 0px)) derived none
--safe-area-top calc(env(safe-area-inset-top, 0px) + var(--extra-margin-top, 0px)) derived none

Status colours

--error-color #dc3545 none
--info-color #5a86b0 none
--success-color #4caf50 none
--user-preset-color #6f9e6a none

Sync status

--sync-status-cloud-ahead #4DD0E1 none
--sync-status-conflict #F06292 none
--sync-status-local-ahead #E0A93D none
--sync-status-neutral var(--text-tertiary) derived none
--sync-status-synced #81C784 none

The built-in themes

The evidence behind the counts above. Each ships as a JSON file of variable assignments, which is why this page can state what a theme is expected to declare without anyone deciding it.

Theme Category Variables set
OLED Black advanced 41
Catppuccin Mocha advanced 39
Manuscript advanced 39
Rosé Pine advanced 39
Solarized Dark advanced 39
Solarized Light advanced 39
High Visibility Sepia uncategorised 33
High Visibility Sepia Dark uncategorised 33
Artic frost uncategorised 26
Default dark theme uncategorised 26
Default light theme uncategorised 26
Desert sunset uncategorised 26
Ember Nights uncategorised 26
Forest serenity uncategorised 26
Forest Writer uncategorised 26
Midnight Forest uncategorised 26
Midnight nebula uncategorised 26
Monochrome uncategorised 26
Monochrome Dark uncategorised 26
Monochrome Sepia uncategorised 26
Monochrome Sepia Dark uncategorised 26
Monochrome Soft uncategorised 26
Mystic Purple uncategorised 26
Retro arcade uncategorised 26
Vampyr Theme uncategorised 26
GNOME Adwaita uncategorised 23
macOS uncategorised 23
Windows 11 uncategorised 23
Native OS Colors uncategorised 1

A theme file of your own is capped at 500 KB. See Making a theme for the file layout, and Publishing a theme for how it reaches other people.