mirror of
https://github.com/real-fruit-snacks/terminal-workbench.git
synced 2026-07-22 05:00:25 +00:00
Rework colored folders from nesting-depth coloring to the model used on the Terminal Workbench notes site: each top-level folder takes one of six palette colors and its whole subtree inherits it, so folders read at a glance. - Six folder tokens (accent, accent-alt, warm, violet, orange, red) - Each top-level folder assigned a cascading --ta-fc, cycled by folder order via :nth-child(6n+k of .nav-folder) so loose files and the tree's virtualization spacer never shift the cycle; nested folders inherit - Titles remap --nav-item-color so hover/active states are unaffected - Style Settings now exposes all six folder colors - Update showcase copy
2301 lines
64 KiB
CSS
2301 lines
64 KiB
CSS
/* @settings
|
|
|
|
name: Terminal Workbench
|
|
id: terminal-workbench
|
|
settings:
|
|
- id: ta-colors
|
|
title: Colors
|
|
type: heading
|
|
level: 1
|
|
- id: ta-accent
|
|
title: Primary accent
|
|
description: Main prompt, active tab, and link color. Follows your Obsidian accent color until overridden here.
|
|
type: variable-themed-color
|
|
format: hex
|
|
default-light: '#007a4d'
|
|
default-dark: '#63f2ab'
|
|
- id: ta-accent-alt
|
|
title: Secondary accent
|
|
description: Used for sidebars, metadata, and quiet highlights.
|
|
type: variable-themed-color
|
|
format: hex
|
|
default-light: '#006f9e'
|
|
default-dark: '#6bdcff'
|
|
- id: ta-warm
|
|
title: Warm accent
|
|
description: Used for warnings, highlights, and subtle attention.
|
|
type: variable-themed-color
|
|
format: hex
|
|
default-light: '#a46600'
|
|
default-dark: '#f0c674'
|
|
- id: ta-layout
|
|
title: Layout
|
|
type: heading
|
|
level: 1
|
|
- id: ta-editor-line-width
|
|
title: Editor line width
|
|
description: Reading and editing width in pixels.
|
|
type: variable-number-slider
|
|
format: px
|
|
default: 780
|
|
min: 620
|
|
max: 1040
|
|
step: 20
|
|
- id: ta-ui-radius
|
|
title: UI radius
|
|
description: Corner radius for controls and panes.
|
|
type: variable-number-slider
|
|
format: px
|
|
default: 6
|
|
min: 0
|
|
max: 8
|
|
step: 1
|
|
- id: ta-compact
|
|
title: Compact workspace
|
|
description: Tightens sidebars, tabs, and headers.
|
|
type: class-toggle
|
|
default: false
|
|
- id: ta-soft-neon
|
|
title: Soft neon highlights
|
|
description: Adds a restrained glow to active elements.
|
|
type: class-toggle
|
|
default: false
|
|
- id: ta-terminal-prompts
|
|
title: Active-line prompt marker
|
|
description: Shows a small terminal prompt beside the active editor line.
|
|
type: class-toggle
|
|
default: false
|
|
- id: ta-fonts
|
|
title: Fonts
|
|
type: heading
|
|
level: 1
|
|
- id: ta-font-editor
|
|
title: Editor font
|
|
type: variable-text
|
|
default: '"Berkeley Mono", "JetBrains Mono", "Cascadia Code", "IBM Plex Mono", "SFMono-Regular", Consolas, monospace'
|
|
- id: ta-font-ui
|
|
title: UI font
|
|
type: variable-text
|
|
default: '"Inter", "SF Pro Text", "Segoe UI", system-ui, sans-serif'
|
|
- id: ta-font-code
|
|
title: Code font
|
|
type: variable-text
|
|
default: '"Berkeley Mono", "JetBrains Mono", "Cascadia Code", "IBM Plex Mono", "SFMono-Regular", Consolas, monospace'
|
|
- id: ta-explorer
|
|
title: File explorer
|
|
type: heading
|
|
level: 1
|
|
- id: ta-colored-folders
|
|
title: Colored folders
|
|
description: Gives each top-level folder its own color from the six below, cycled by order; every subfolder and note inside inherits its top folder's color.
|
|
type: class-toggle
|
|
default: false
|
|
- id: ta-folder-1
|
|
title: Folder color 1
|
|
type: variable-themed-color
|
|
format: hex
|
|
default-light: '#007a4d'
|
|
default-dark: '#63f2ab'
|
|
- id: ta-folder-2
|
|
title: Folder color 2
|
|
type: variable-themed-color
|
|
format: hex
|
|
default-light: '#006f9e'
|
|
default-dark: '#6bdcff'
|
|
- id: ta-folder-3
|
|
title: Folder color 3
|
|
type: variable-themed-color
|
|
format: hex
|
|
default-light: '#a46600'
|
|
default-dark: '#f0c674'
|
|
- id: ta-folder-4
|
|
title: Folder color 4
|
|
type: variable-themed-color
|
|
format: hex
|
|
default-light: '#7357b8'
|
|
default-dark: '#b78cff'
|
|
- id: ta-folder-5
|
|
title: Folder color 5
|
|
type: variable-themed-color
|
|
format: hex
|
|
default-light: '#b65800'
|
|
default-dark: '#f7a35c'
|
|
- id: ta-folder-6
|
|
title: Folder color 6
|
|
type: variable-themed-color
|
|
format: hex
|
|
default-light: '#c8324c'
|
|
default-dark: '#ff6e7a'
|
|
- id: ta-file-color
|
|
title: File name color
|
|
type: variable-themed-color
|
|
format: hex
|
|
default-light: '#60706a'
|
|
default-dark: '#879994'
|
|
- id: ta-headings
|
|
title: Headings
|
|
type: heading
|
|
level: 1
|
|
- id: ta-plain-headings
|
|
title: Neutral heading colors
|
|
description: Uses the normal text color for H2-H4 instead of the accent colors.
|
|
type: class-toggle
|
|
default: false
|
|
- id: ta-no-heading-rules
|
|
title: Hide heading underline rules
|
|
description: Removes the fading rule below H1 and H2.
|
|
type: class-toggle
|
|
default: false
|
|
- id: ta-editor
|
|
title: Editor
|
|
type: heading
|
|
level: 1
|
|
- id: ta-no-active-line
|
|
title: Hide active line highlight
|
|
description: Removes the tinted background and accent bar on the active editor line.
|
|
type: class-toggle
|
|
default: false
|
|
- id: ta-no-blockquote-glyph
|
|
title: Hide blockquote marker
|
|
description: Removes the ">" glyph at the start of blockquotes.
|
|
type: class-toggle
|
|
default: false
|
|
- id: line-height-normal
|
|
title: Text line height
|
|
type: variable-number-slider
|
|
default: 1.7
|
|
min: 1.4
|
|
max: 1.9
|
|
step: 0.05
|
|
- id: ta-code-blocks
|
|
title: Code blocks
|
|
type: heading
|
|
level: 1
|
|
- id: ta-plain-code-header
|
|
title: Hide code block header band
|
|
description: Removes the header strip and glyph, leaving a plain framed block.
|
|
type: class-toggle
|
|
default: false
|
|
- id: ta-chrome
|
|
title: Workspace chrome
|
|
type: heading
|
|
level: 1
|
|
- id: ta-plain-tabs
|
|
title: Plain tab titles
|
|
description: Interface font tab titles instead of uppercase monospace.
|
|
type: class-toggle
|
|
default: false
|
|
- id: ta-plain-breadcrumb
|
|
title: Plain breadcrumb
|
|
description: Interface font note path instead of the monospace shell style.
|
|
type: class-toggle
|
|
default: false
|
|
- id: ta-tasks-tags
|
|
title: Tasks and tags
|
|
type: heading
|
|
level: 1
|
|
- id: ta-plain-tasks
|
|
title: Neutral task states
|
|
description: Cancelled, deferred, and important tasks use the standard checkbox color.
|
|
type: class-toggle
|
|
default: false
|
|
- id: tag-radius
|
|
title: Tag shape
|
|
type: variable-select
|
|
default: '4px'
|
|
options:
|
|
- label: Square
|
|
value: '4px'
|
|
- label: Pill
|
|
value: '999px'
|
|
- id: ta-mermaid
|
|
title: Mermaid
|
|
type: heading
|
|
level: 1
|
|
- id: ta-plain-mermaid
|
|
title: Stock Mermaid diagrams
|
|
description: Disables the theme's diagram styling and uses Obsidian's defaults.
|
|
type: class-toggle
|
|
default: false
|
|
- id: ta-callouts
|
|
title: Callout colors
|
|
type: heading
|
|
level: 1
|
|
collapsed: true
|
|
- id: ta-callouts-info
|
|
title: Recolor callouts
|
|
description: Pick a palette color for each callout type. Aliases follow their base type (for example, hint follows Tip, and caution follows Warning).
|
|
type: info-text
|
|
markdown: false
|
|
- id: callout-default
|
|
title: Note callout
|
|
type: variable-select
|
|
default: 'var(--ta-green-rgb)'
|
|
options:
|
|
- label: Blue
|
|
value: 'var(--color-blue-rgb)'
|
|
- label: Green
|
|
value: 'var(--ta-green-rgb)'
|
|
- label: Cyan
|
|
value: 'var(--ta-cyan-rgb)'
|
|
- label: Amber
|
|
value: 'var(--ta-amber-rgb)'
|
|
- label: Orange
|
|
value: 'var(--ta-orange-rgb)'
|
|
- label: Red
|
|
value: 'var(--ta-red-rgb)'
|
|
- label: Violet
|
|
value: 'var(--ta-violet-rgb)'
|
|
- label: Gray
|
|
value: 'var(--ta-gray-rgb)'
|
|
- id: callout-summary
|
|
title: Abstract / Summary callout
|
|
type: variable-select
|
|
default: 'var(--ta-cyan-rgb)'
|
|
options:
|
|
- label: Blue
|
|
value: 'var(--color-blue-rgb)'
|
|
- label: Green
|
|
value: 'var(--ta-green-rgb)'
|
|
- label: Cyan
|
|
value: 'var(--ta-cyan-rgb)'
|
|
- label: Amber
|
|
value: 'var(--ta-amber-rgb)'
|
|
- label: Orange
|
|
value: 'var(--ta-orange-rgb)'
|
|
- label: Red
|
|
value: 'var(--ta-red-rgb)'
|
|
- label: Violet
|
|
value: 'var(--ta-violet-rgb)'
|
|
- label: Gray
|
|
value: 'var(--ta-gray-rgb)'
|
|
- id: callout-info
|
|
title: Info callout
|
|
type: variable-select
|
|
default: 'var(--ta-cyan-rgb)'
|
|
options:
|
|
- label: Blue
|
|
value: 'var(--color-blue-rgb)'
|
|
- label: Green
|
|
value: 'var(--ta-green-rgb)'
|
|
- label: Cyan
|
|
value: 'var(--ta-cyan-rgb)'
|
|
- label: Amber
|
|
value: 'var(--ta-amber-rgb)'
|
|
- label: Orange
|
|
value: 'var(--ta-orange-rgb)'
|
|
- label: Red
|
|
value: 'var(--ta-red-rgb)'
|
|
- label: Violet
|
|
value: 'var(--ta-violet-rgb)'
|
|
- label: Gray
|
|
value: 'var(--ta-gray-rgb)'
|
|
- id: callout-todo
|
|
title: Todo callout
|
|
type: variable-select
|
|
default: 'var(--ta-cyan-rgb)'
|
|
options:
|
|
- label: Blue
|
|
value: 'var(--color-blue-rgb)'
|
|
- label: Green
|
|
value: 'var(--ta-green-rgb)'
|
|
- label: Cyan
|
|
value: 'var(--ta-cyan-rgb)'
|
|
- label: Amber
|
|
value: 'var(--ta-amber-rgb)'
|
|
- label: Orange
|
|
value: 'var(--ta-orange-rgb)'
|
|
- label: Red
|
|
value: 'var(--ta-red-rgb)'
|
|
- label: Violet
|
|
value: 'var(--ta-violet-rgb)'
|
|
- label: Gray
|
|
value: 'var(--ta-gray-rgb)'
|
|
- id: callout-tip
|
|
title: Tip / Hint callout
|
|
type: variable-select
|
|
default: 'var(--ta-cyan-rgb)'
|
|
options:
|
|
- label: Blue
|
|
value: 'var(--color-blue-rgb)'
|
|
- label: Green
|
|
value: 'var(--ta-green-rgb)'
|
|
- label: Cyan
|
|
value: 'var(--ta-cyan-rgb)'
|
|
- label: Amber
|
|
value: 'var(--ta-amber-rgb)'
|
|
- label: Orange
|
|
value: 'var(--ta-orange-rgb)'
|
|
- label: Red
|
|
value: 'var(--ta-red-rgb)'
|
|
- label: Violet
|
|
value: 'var(--ta-violet-rgb)'
|
|
- label: Gray
|
|
value: 'var(--ta-gray-rgb)'
|
|
- id: callout-important
|
|
title: Important callout
|
|
type: variable-select
|
|
default: 'var(--ta-cyan-rgb)'
|
|
options:
|
|
- label: Blue
|
|
value: 'var(--color-blue-rgb)'
|
|
- label: Green
|
|
value: 'var(--ta-green-rgb)'
|
|
- label: Cyan
|
|
value: 'var(--ta-cyan-rgb)'
|
|
- label: Amber
|
|
value: 'var(--ta-amber-rgb)'
|
|
- label: Orange
|
|
value: 'var(--ta-orange-rgb)'
|
|
- label: Red
|
|
value: 'var(--ta-red-rgb)'
|
|
- label: Violet
|
|
value: 'var(--ta-violet-rgb)'
|
|
- label: Gray
|
|
value: 'var(--ta-gray-rgb)'
|
|
- id: callout-success
|
|
title: Success / Done callout
|
|
type: variable-select
|
|
default: 'var(--ta-green-rgb)'
|
|
options:
|
|
- label: Blue
|
|
value: 'var(--color-blue-rgb)'
|
|
- label: Green
|
|
value: 'var(--ta-green-rgb)'
|
|
- label: Cyan
|
|
value: 'var(--ta-cyan-rgb)'
|
|
- label: Amber
|
|
value: 'var(--ta-amber-rgb)'
|
|
- label: Orange
|
|
value: 'var(--ta-orange-rgb)'
|
|
- label: Red
|
|
value: 'var(--ta-red-rgb)'
|
|
- label: Violet
|
|
value: 'var(--ta-violet-rgb)'
|
|
- label: Gray
|
|
value: 'var(--ta-gray-rgb)'
|
|
- id: callout-question
|
|
title: Question / Help callout
|
|
type: variable-select
|
|
default: 'var(--ta-violet-rgb)'
|
|
options:
|
|
- label: Blue
|
|
value: 'var(--color-blue-rgb)'
|
|
- label: Green
|
|
value: 'var(--ta-green-rgb)'
|
|
- label: Cyan
|
|
value: 'var(--ta-cyan-rgb)'
|
|
- label: Amber
|
|
value: 'var(--ta-amber-rgb)'
|
|
- label: Orange
|
|
value: 'var(--ta-orange-rgb)'
|
|
- label: Red
|
|
value: 'var(--ta-red-rgb)'
|
|
- label: Violet
|
|
value: 'var(--ta-violet-rgb)'
|
|
- label: Gray
|
|
value: 'var(--ta-gray-rgb)'
|
|
- id: callout-warning
|
|
title: Warning / Caution callout
|
|
type: variable-select
|
|
default: 'var(--ta-orange-rgb)'
|
|
options:
|
|
- label: Blue
|
|
value: 'var(--color-blue-rgb)'
|
|
- label: Green
|
|
value: 'var(--ta-green-rgb)'
|
|
- label: Cyan
|
|
value: 'var(--ta-cyan-rgb)'
|
|
- label: Amber
|
|
value: 'var(--ta-amber-rgb)'
|
|
- label: Orange
|
|
value: 'var(--ta-orange-rgb)'
|
|
- label: Red
|
|
value: 'var(--ta-red-rgb)'
|
|
- label: Violet
|
|
value: 'var(--ta-violet-rgb)'
|
|
- label: Gray
|
|
value: 'var(--ta-gray-rgb)'
|
|
- id: callout-fail
|
|
title: Failure / Missing callout
|
|
type: variable-select
|
|
default: 'var(--ta-red-rgb)'
|
|
options:
|
|
- label: Blue
|
|
value: 'var(--color-blue-rgb)'
|
|
- label: Green
|
|
value: 'var(--ta-green-rgb)'
|
|
- label: Cyan
|
|
value: 'var(--ta-cyan-rgb)'
|
|
- label: Amber
|
|
value: 'var(--ta-amber-rgb)'
|
|
- label: Orange
|
|
value: 'var(--ta-orange-rgb)'
|
|
- label: Red
|
|
value: 'var(--ta-red-rgb)'
|
|
- label: Violet
|
|
value: 'var(--ta-violet-rgb)'
|
|
- label: Gray
|
|
value: 'var(--ta-gray-rgb)'
|
|
- id: callout-error
|
|
title: Danger / Error callout
|
|
type: variable-select
|
|
default: 'var(--ta-red-rgb)'
|
|
options:
|
|
- label: Blue
|
|
value: 'var(--color-blue-rgb)'
|
|
- label: Green
|
|
value: 'var(--ta-green-rgb)'
|
|
- label: Cyan
|
|
value: 'var(--ta-cyan-rgb)'
|
|
- label: Amber
|
|
value: 'var(--ta-amber-rgb)'
|
|
- label: Orange
|
|
value: 'var(--ta-orange-rgb)'
|
|
- label: Red
|
|
value: 'var(--ta-red-rgb)'
|
|
- label: Violet
|
|
value: 'var(--ta-violet-rgb)'
|
|
- label: Gray
|
|
value: 'var(--ta-gray-rgb)'
|
|
- id: callout-bug
|
|
title: Bug callout
|
|
type: variable-select
|
|
default: 'var(--ta-red-rgb)'
|
|
options:
|
|
- label: Blue
|
|
value: 'var(--color-blue-rgb)'
|
|
- label: Green
|
|
value: 'var(--ta-green-rgb)'
|
|
- label: Cyan
|
|
value: 'var(--ta-cyan-rgb)'
|
|
- label: Amber
|
|
value: 'var(--ta-amber-rgb)'
|
|
- label: Orange
|
|
value: 'var(--ta-orange-rgb)'
|
|
- label: Red
|
|
value: 'var(--ta-red-rgb)'
|
|
- label: Violet
|
|
value: 'var(--ta-violet-rgb)'
|
|
- label: Gray
|
|
value: 'var(--ta-gray-rgb)'
|
|
- id: callout-example
|
|
title: Example callout
|
|
type: variable-select
|
|
default: 'var(--ta-violet-rgb)'
|
|
options:
|
|
- label: Blue
|
|
value: 'var(--color-blue-rgb)'
|
|
- label: Green
|
|
value: 'var(--ta-green-rgb)'
|
|
- label: Cyan
|
|
value: 'var(--ta-cyan-rgb)'
|
|
- label: Amber
|
|
value: 'var(--ta-amber-rgb)'
|
|
- label: Orange
|
|
value: 'var(--ta-orange-rgb)'
|
|
- label: Red
|
|
value: 'var(--ta-red-rgb)'
|
|
- label: Violet
|
|
value: 'var(--ta-violet-rgb)'
|
|
- label: Gray
|
|
value: 'var(--ta-gray-rgb)'
|
|
- id: callout-quote
|
|
title: Quote / Cite callout
|
|
type: variable-select
|
|
default: 'var(--ta-gray-rgb)'
|
|
options:
|
|
- label: Blue
|
|
value: 'var(--color-blue-rgb)'
|
|
- label: Green
|
|
value: 'var(--ta-green-rgb)'
|
|
- label: Cyan
|
|
value: 'var(--ta-cyan-rgb)'
|
|
- label: Amber
|
|
value: 'var(--ta-amber-rgb)'
|
|
- label: Orange
|
|
value: 'var(--ta-orange-rgb)'
|
|
- label: Red
|
|
value: 'var(--ta-red-rgb)'
|
|
- label: Violet
|
|
value: 'var(--ta-violet-rgb)'
|
|
- label: Gray
|
|
value: 'var(--ta-gray-rgb)'
|
|
|
|
*/
|
|
|
|
body {
|
|
--ta-accent: hsl(var(--accent-h), var(--accent-s), var(--accent-l));
|
|
--ta-accent-alt: #6bdcff;
|
|
--ta-warm: #f0c674;
|
|
--ta-red: #ff6e7a;
|
|
--ta-orange: #f7a35c;
|
|
--ta-violet: #b78cff;
|
|
--ta-folder-1: var(--ta-accent);
|
|
--ta-folder-2: var(--ta-accent-alt);
|
|
--ta-folder-3: var(--ta-warm);
|
|
--ta-folder-4: var(--ta-violet);
|
|
--ta-folder-5: var(--ta-orange);
|
|
--ta-folder-6: var(--ta-red);
|
|
--ta-file-color: var(--nav-item-color);
|
|
--ta-font-editor: "Berkeley Mono", "JetBrains Mono", "Cascadia Code", "IBM Plex Mono", "SFMono-Regular", Consolas, monospace;
|
|
--ta-font-ui: "Inter", "SF Pro Text", "Segoe UI", system-ui, sans-serif;
|
|
--ta-font-code: "Berkeley Mono", "JetBrains Mono", "Cascadia Code", "IBM Plex Mono", "SFMono-Regular", Consolas, monospace;
|
|
--ta-editor-line-width: 780px;
|
|
--ta-ui-radius: 6px;
|
|
--ta-border-width: 1px;
|
|
--ta-pane-shadow: 0 20px 60px rgba(0, 0, 0, 0.22);
|
|
--ta-glow: 0 0 0 transparent;
|
|
|
|
--font-interface-theme: var(--ta-font-ui);
|
|
--font-text-theme: var(--ta-font-editor);
|
|
--font-monospace-theme: var(--ta-font-code);
|
|
--font-ui-small: 12px;
|
|
--font-ui-smaller: 11px;
|
|
--font-ui-medium: 13px;
|
|
--font-ui-large: 15px;
|
|
--line-height-normal: 1.7;
|
|
--line-height-tight: 1.45;
|
|
--icon-color: var(--text-soft);
|
|
--icon-color-hover: var(--text-normal);
|
|
--icon-color-active: var(--ta-accent);
|
|
--icon-color-focused: var(--text-normal);
|
|
--icon-opacity: 1;
|
|
--icon-opacity-hover: 1;
|
|
--icon-opacity-active: 1;
|
|
--icon-stroke: 2px;
|
|
|
|
--radius-s: calc(var(--ta-ui-radius) - 2px);
|
|
--radius-m: var(--ta-ui-radius);
|
|
--radius-l: calc(var(--ta-ui-radius) + 2px);
|
|
--input-radius: var(--ta-ui-radius);
|
|
--tab-radius-active: var(--ta-ui-radius);
|
|
--checkbox-radius: 4px;
|
|
--checkbox-color: var(--ta-accent);
|
|
--checkbox-border-color: var(--background-modifier-border-hover);
|
|
|
|
--tag-radius: var(--radius-s);
|
|
--tag-border-width: var(--ta-border-width);
|
|
--tag-color: var(--ta-accent);
|
|
--tag-color-hover: var(--text-on-accent);
|
|
--tag-background: color-mix(in srgb, var(--ta-accent) 13%, transparent);
|
|
--tag-background-hover: var(--ta-accent);
|
|
--tag-border-color: color-mix(in srgb, var(--ta-accent) 28%, transparent);
|
|
--tag-border-color-hover: var(--ta-accent);
|
|
--tag-size: 0.82em;
|
|
--tag-weight: 650;
|
|
--tag-padding-x: 0.5em;
|
|
--tag-padding-y: 0.12em;
|
|
--toggle-radius: 999px;
|
|
--toggle-thumb-radius: 999px;
|
|
--slider-thumb-radius: 999px;
|
|
|
|
--file-line-width: var(--ta-editor-line-width);
|
|
--line-width: var(--ta-editor-line-width);
|
|
--line-width-adaptive: var(--ta-editor-line-width);
|
|
}
|
|
|
|
body.theme-dark {
|
|
color-scheme: dark;
|
|
--accent-h: 150;
|
|
--accent-s: 85%;
|
|
--accent-l: 67%;
|
|
--ta-bg-0: #090c0d;
|
|
--ta-bg-1: #0e1214;
|
|
--ta-bg-2: #13191c;
|
|
--ta-bg-3: #182024;
|
|
--ta-bg-4: #202a2f;
|
|
--ta-border: #2a363d;
|
|
--ta-border-strong: #39484f;
|
|
--ta-selection: color-mix(in srgb, var(--ta-accent) 20%, transparent);
|
|
--ta-active-line: color-mix(in srgb, var(--ta-accent-alt) 7.5%, transparent);
|
|
--ta-text: #dce4df;
|
|
--ta-text-soft: #b4c3bd;
|
|
--ta-muted: #879994;
|
|
--ta-faint: #63736f;
|
|
--ta-inverted: #07100d;
|
|
--ta-green-rgb: 99, 242, 171;
|
|
--ta-cyan-rgb: 107, 220, 255;
|
|
--ta-amber-rgb: 240, 198, 116;
|
|
--ta-orange-rgb: 247, 163, 92;
|
|
--ta-red-rgb: 255, 110, 122;
|
|
--ta-violet-rgb: 183, 140, 255;
|
|
--ta-gray-rgb: 135, 153, 148;
|
|
--ta-mermaid-node-bg: #102022;
|
|
--ta-mermaid-node-border: #35d8c3;
|
|
--ta-mermaid-cluster-bg: #0d1618;
|
|
--ta-mermaid-edge: #5d746f;
|
|
|
|
--background-primary: var(--ta-bg-0);
|
|
--background-primary-alt: var(--ta-bg-1);
|
|
--background-secondary: var(--ta-bg-1);
|
|
--background-secondary-alt: var(--ta-bg-2);
|
|
--background-modifier-border: var(--ta-border);
|
|
--background-modifier-border-hover: var(--ta-border-strong);
|
|
--background-modifier-border-focus: var(--ta-accent);
|
|
--background-modifier-hover: rgba(255, 255, 255, 0.045);
|
|
--background-modifier-active-hover: color-mix(in srgb, var(--ta-accent) 12%, transparent);
|
|
--background-modifier-form-field: var(--ta-bg-1);
|
|
--background-modifier-form-field-highlighted: var(--ta-bg-2);
|
|
--background-modifier-box-shadow: rgba(0, 0, 0, 0.45);
|
|
--background-modifier-success: color-mix(in srgb, var(--ta-accent) 18%, transparent);
|
|
--background-modifier-error: color-mix(in srgb, var(--ta-red) 18%, transparent);
|
|
--background-modifier-error-hover: color-mix(in srgb, var(--ta-red) 28%, transparent);
|
|
|
|
--text-normal: var(--ta-text);
|
|
--text-soft: var(--ta-text-soft);
|
|
--text-muted: var(--ta-muted);
|
|
--text-faint: var(--ta-faint);
|
|
--text-on-accent: var(--ta-inverted);
|
|
--text-on-accent-inverted: var(--ta-bg-0);
|
|
--text-accent: var(--ta-accent);
|
|
--text-accent-hover: color-mix(in srgb, var(--ta-accent) 76%, white);
|
|
--text-selection: var(--ta-selection);
|
|
--text-highlight-bg: color-mix(in srgb, var(--ta-warm) 22%, transparent);
|
|
--text-highlight-bg-active: color-mix(in srgb, var(--ta-warm) 32%, transparent);
|
|
--text-error: var(--ta-red);
|
|
--text-success: var(--ta-accent);
|
|
--caret-color: var(--ta-accent);
|
|
|
|
--interactive-normal: var(--ta-bg-2);
|
|
--interactive-hover: var(--ta-bg-3);
|
|
--interactive-accent: var(--ta-accent);
|
|
--interactive-accent-hover: color-mix(in srgb, var(--ta-accent) 86%, white);
|
|
|
|
--titlebar-background: var(--ta-bg-1);
|
|
--titlebar-background-focused: var(--ta-bg-0);
|
|
--titlebar-text-color: var(--ta-muted);
|
|
--titlebar-text-color-focused: var(--ta-text-soft);
|
|
--ribbon-background: var(--ta-bg-1);
|
|
--tab-container-background: var(--ta-bg-1);
|
|
--tab-background-active: var(--ta-bg-0);
|
|
--tab-text-color: var(--ta-muted);
|
|
--tab-text-color-focused: var(--ta-text-soft);
|
|
--tab-text-color-focused-active: var(--ta-text);
|
|
--tab-outline-color: var(--ta-border);
|
|
--divider-color: var(--ta-border);
|
|
--status-bar-background: var(--ta-bg-1);
|
|
--modal-background: var(--ta-bg-1);
|
|
--prompt-border-color: var(--ta-border-strong);
|
|
|
|
--nav-item-color: var(--ta-muted);
|
|
--nav-item-color-hover: var(--ta-text);
|
|
--nav-item-color-active: var(--ta-accent);
|
|
--nav-item-background-hover: rgba(255, 255, 255, 0.04);
|
|
--nav-item-background-active: color-mix(in srgb, var(--ta-accent) 10.5%, transparent);
|
|
|
|
--link-color: var(--ta-accent-alt);
|
|
--link-color-hover: color-mix(in srgb, var(--ta-accent-alt) 70%, white);
|
|
--link-external-color: var(--ta-accent-alt);
|
|
--link-external-color-hover: color-mix(in srgb, var(--ta-accent-alt) 70%, white);
|
|
--link-unresolved-color: var(--ta-warm);
|
|
--link-unresolved-opacity: 0.82;
|
|
|
|
--ta-code-header-bg: #0c1113;
|
|
--code-background: #0f1517;
|
|
--code-normal: var(--ta-text-soft);
|
|
--code-comment: #6f807b;
|
|
--code-function: var(--ta-accent-alt);
|
|
--code-important: var(--ta-red);
|
|
--code-keyword: var(--ta-violet);
|
|
--code-operator: var(--ta-accent);
|
|
--code-property: var(--ta-warm);
|
|
--code-punctuation: var(--ta-muted);
|
|
--code-string: var(--ta-accent);
|
|
--code-tag: var(--ta-red);
|
|
--code-value: var(--ta-orange);
|
|
|
|
--blockquote-border-color: var(--ta-accent);
|
|
--blockquote-background-color: color-mix(in srgb, var(--ta-accent) 7%, transparent);
|
|
--table-header-background: var(--ta-bg-2);
|
|
--table-row-alt-background: rgba(255, 255, 255, 0.025);
|
|
--table-border-color: var(--ta-border);
|
|
}
|
|
|
|
body.theme-light {
|
|
color-scheme: light;
|
|
--accent-h: 158;
|
|
--accent-s: 100%;
|
|
--accent-l: 24%;
|
|
--ta-bg-0: #f5f7f4;
|
|
--ta-bg-1: #edf2ee;
|
|
--ta-bg-2: #e2eae5;
|
|
--ta-bg-3: #d6e1db;
|
|
--ta-bg-4: #c8d5cf;
|
|
--ta-border: #bfcbc5;
|
|
--ta-border-strong: #9daea7;
|
|
--ta-selection: color-mix(in srgb, var(--ta-accent) 17%, transparent);
|
|
--ta-active-line: color-mix(in srgb, var(--ta-accent-alt) 7.5%, transparent);
|
|
--ta-text: #17201d;
|
|
--ta-text-soft: #34443f;
|
|
--ta-muted: #60706a;
|
|
--ta-faint: #81918a;
|
|
--ta-accent-alt: #006f9e;
|
|
--ta-mermaid-node-bg: #ddebe6;
|
|
--ta-mermaid-node-border: #007e73;
|
|
--ta-mermaid-cluster-bg: #edf4f1;
|
|
--ta-mermaid-edge: #6b8078;
|
|
--ta-warm: #a46600;
|
|
--ta-red: #c8324c;
|
|
--ta-orange: #b65800;
|
|
--ta-violet: #7357b8;
|
|
--ta-inverted: #f9fbf8;
|
|
--ta-green-rgb: 0, 122, 77;
|
|
--ta-cyan-rgb: 0, 111, 158;
|
|
--ta-amber-rgb: 164, 102, 0;
|
|
--ta-orange-rgb: 182, 88, 0;
|
|
--ta-red-rgb: 200, 50, 76;
|
|
--ta-violet-rgb: 115, 87, 184;
|
|
--ta-gray-rgb: 96, 112, 106;
|
|
|
|
--background-primary: var(--ta-bg-0);
|
|
--background-primary-alt: var(--ta-bg-1);
|
|
--background-secondary: var(--ta-bg-1);
|
|
--background-secondary-alt: var(--ta-bg-2);
|
|
--background-modifier-border: var(--ta-border);
|
|
--background-modifier-border-hover: var(--ta-border-strong);
|
|
--background-modifier-border-focus: var(--ta-accent);
|
|
--background-modifier-hover: rgba(23, 32, 29, 0.055);
|
|
--background-modifier-active-hover: color-mix(in srgb, var(--ta-accent) 12%, transparent);
|
|
--background-modifier-form-field: #ffffff;
|
|
--background-modifier-form-field-highlighted: var(--ta-bg-1);
|
|
--background-modifier-box-shadow: rgba(23, 32, 29, 0.18);
|
|
--background-modifier-success: color-mix(in srgb, var(--ta-accent) 15%, transparent);
|
|
--background-modifier-error: color-mix(in srgb, var(--ta-red) 14%, transparent);
|
|
--background-modifier-error-hover: color-mix(in srgb, var(--ta-red) 21%, transparent);
|
|
|
|
--text-normal: var(--ta-text);
|
|
--text-soft: var(--ta-text-soft);
|
|
--text-muted: var(--ta-muted);
|
|
--text-faint: var(--ta-faint);
|
|
--text-on-accent: var(--ta-inverted);
|
|
--text-on-accent-inverted: var(--ta-bg-0);
|
|
--text-accent: var(--ta-accent);
|
|
--text-accent-hover: #006a43;
|
|
--text-selection: var(--ta-selection);
|
|
--text-highlight-bg: color-mix(in srgb, var(--ta-warm) 16%, transparent);
|
|
--text-highlight-bg-active: color-mix(in srgb, var(--ta-warm) 23%, transparent);
|
|
--text-error: var(--ta-red);
|
|
--text-success: var(--ta-accent);
|
|
--caret-color: var(--ta-accent);
|
|
|
|
--interactive-normal: var(--ta-bg-2);
|
|
--interactive-hover: var(--ta-bg-3);
|
|
--interactive-accent: var(--ta-accent);
|
|
--interactive-accent-hover: #00794d;
|
|
|
|
--titlebar-background: var(--ta-bg-1);
|
|
--titlebar-background-focused: var(--ta-bg-0);
|
|
--titlebar-text-color: var(--ta-muted);
|
|
--titlebar-text-color-focused: var(--ta-text-soft);
|
|
--ribbon-background: var(--ta-bg-1);
|
|
--tab-container-background: var(--ta-bg-1);
|
|
--tab-background-active: var(--ta-bg-0);
|
|
--tab-text-color: var(--ta-muted);
|
|
--tab-text-color-focused: var(--ta-text-soft);
|
|
--tab-text-color-focused-active: var(--ta-text);
|
|
--tab-outline-color: var(--ta-border);
|
|
--divider-color: var(--ta-border);
|
|
--status-bar-background: var(--ta-bg-1);
|
|
--modal-background: var(--ta-bg-0);
|
|
--prompt-border-color: var(--ta-border-strong);
|
|
|
|
--nav-item-color: var(--ta-muted);
|
|
--nav-item-color-hover: var(--ta-text);
|
|
--nav-item-color-active: var(--ta-accent);
|
|
--nav-item-background-hover: rgba(23, 32, 29, 0.055);
|
|
--nav-item-background-active: color-mix(in srgb, var(--ta-accent) 11%, transparent);
|
|
|
|
--link-color: var(--ta-accent-alt);
|
|
--link-color-hover: #00577b;
|
|
--link-external-color: var(--ta-accent-alt);
|
|
--link-external-color-hover: #00577b;
|
|
--link-unresolved-color: var(--ta-warm);
|
|
--link-unresolved-opacity: 0.86;
|
|
|
|
--ta-code-header-bg: #d6e1db;
|
|
--code-background: #e2eae5;
|
|
--code-normal: var(--ta-text-soft);
|
|
--code-comment: #75847e;
|
|
--code-function: var(--ta-accent-alt);
|
|
--code-important: var(--ta-red);
|
|
--code-keyword: var(--ta-violet);
|
|
--code-operator: var(--ta-accent);
|
|
--code-property: var(--ta-warm);
|
|
--code-punctuation: var(--ta-muted);
|
|
--code-string: var(--ta-accent);
|
|
--code-tag: var(--ta-red);
|
|
--code-value: var(--ta-orange);
|
|
|
|
--blockquote-border-color: var(--ta-accent);
|
|
--blockquote-background-color: color-mix(in srgb, var(--ta-accent) 7.5%, transparent);
|
|
--table-header-background: var(--ta-bg-2);
|
|
--table-row-alt-background: rgba(23, 32, 29, 0.032);
|
|
--table-border-color: var(--ta-border);
|
|
}
|
|
|
|
body.ta-soft-neon.theme-dark {
|
|
--ta-glow: 0 0 18px color-mix(in srgb, var(--ta-accent) 28%, transparent);
|
|
}
|
|
|
|
body.ta-soft-neon.theme-light {
|
|
--ta-glow: 0 0 14px color-mix(in srgb, var(--ta-accent) 16%, transparent);
|
|
}
|
|
|
|
.app-container,
|
|
.horizontal-main-container,
|
|
.workspace,
|
|
.workspace-split.mod-root {
|
|
background: var(--background-primary);
|
|
}
|
|
|
|
.mod-root .workspace-leaf-content,
|
|
.workspace-tabs .workspace-leaf {
|
|
background: var(--background-primary);
|
|
}
|
|
|
|
.workspace-split.mod-left-split,
|
|
.workspace-split.mod-right-split,
|
|
.workspace-ribbon {
|
|
background: var(--background-secondary);
|
|
border-color: var(--background-modifier-border);
|
|
}
|
|
|
|
.workspace-ribbon {
|
|
border-right: var(--ta-border-width) solid var(--background-modifier-border);
|
|
}
|
|
|
|
.workspace-ribbon.mod-right {
|
|
border-left: var(--ta-border-width) solid var(--background-modifier-border);
|
|
border-right: 0;
|
|
}
|
|
|
|
.side-dock-ribbon-action,
|
|
.workspace-ribbon-collapse-btn,
|
|
.nav-action-button,
|
|
.clickable-icon {
|
|
color: var(--text-soft);
|
|
border-radius: var(--radius-s);
|
|
opacity: 0.96;
|
|
}
|
|
|
|
.side-dock-ribbon-action:hover,
|
|
.workspace-ribbon-collapse-btn:hover,
|
|
.nav-action-button:hover,
|
|
.clickable-icon:hover {
|
|
color: var(--text-normal);
|
|
background: var(--background-modifier-hover);
|
|
opacity: 1;
|
|
}
|
|
|
|
.side-dock-ribbon-action.is-active,
|
|
.nav-action-button.is-active,
|
|
.clickable-icon.is-active {
|
|
color: var(--ta-accent);
|
|
background: var(--nav-item-background-active);
|
|
box-shadow: var(--ta-glow);
|
|
}
|
|
|
|
/* With the hidden window frame, Obsidian renders .titlebar as a transparent
|
|
click-through overlay on top of the tab bar; painting it would hide the
|
|
tabs beneath. Only style it when it is a real bar. */
|
|
body:not(.is-hidden-frameless) .titlebar,
|
|
body:not(.is-hidden-frameless) .titlebar-inner {
|
|
background: var(--titlebar-background);
|
|
color: var(--titlebar-text-color);
|
|
border-color: var(--background-modifier-border);
|
|
}
|
|
|
|
body.is-focused:not(.is-hidden-frameless) .titlebar,
|
|
body.is-focused:not(.is-hidden-frameless) .titlebar-inner {
|
|
background: var(--titlebar-background-focused);
|
|
color: var(--titlebar-text-color-focused);
|
|
}
|
|
|
|
.titlebar-text,
|
|
.titlebar-button,
|
|
.titlebar-button-container,
|
|
.titlebar .clickable-icon {
|
|
color: var(--titlebar-text-color-focused);
|
|
opacity: 0.98;
|
|
}
|
|
|
|
.is-focused .titlebar-text,
|
|
.is-focused .titlebar-button,
|
|
.is-focused .titlebar-button-container,
|
|
.is-focused .titlebar .clickable-icon {
|
|
color: var(--text-soft);
|
|
opacity: 1;
|
|
}
|
|
|
|
.titlebar-button:hover,
|
|
.titlebar .clickable-icon:hover {
|
|
color: var(--text-normal);
|
|
background: var(--background-modifier-hover);
|
|
}
|
|
|
|
.titlebar-button.mod-close:hover {
|
|
color: var(--ta-red);
|
|
}
|
|
|
|
.workspace-tab-header-container {
|
|
background: var(--tab-container-background);
|
|
border-bottom: var(--ta-border-width) solid var(--tab-outline-color);
|
|
}
|
|
|
|
/* --header-height also sizes the frameless titlebar overlay, view headers,
|
|
and the ribbon corner, so set the variable instead of raw heights. */
|
|
body:not(.is-mobile) {
|
|
--header-height: 38px;
|
|
}
|
|
|
|
.workspace-tab-header {
|
|
color: var(--tab-text-color);
|
|
border-radius: var(--radius-s);
|
|
margin: 4px 2px;
|
|
min-width: 0;
|
|
}
|
|
|
|
.workspace-tab-header::before,
|
|
.workspace-tab-header::after {
|
|
display: none;
|
|
}
|
|
|
|
.workspace-tab-header-inner {
|
|
padding: 0 10px;
|
|
}
|
|
|
|
.workspace-tab-header-inner-title {
|
|
font-family: var(--font-monospace);
|
|
font-size: 10.5px;
|
|
font-weight: 600;
|
|
letter-spacing: 0.06em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.workspace-tab-header:hover {
|
|
background: var(--background-modifier-hover);
|
|
color: var(--tab-text-color-focused);
|
|
}
|
|
|
|
/* tmux-style solid block for the active main-area tab; scoped to .mod-top
|
|
so sidebar tabs keep Obsidian's compact icon styling. */
|
|
.workspace-tabs.mod-top .workspace-tab-header.is-active {
|
|
background: var(--ta-bg-3);
|
|
color: var(--ta-accent);
|
|
box-shadow: var(--ta-glow);
|
|
}
|
|
|
|
.workspace-tabs.mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-title {
|
|
color: var(--ta-accent);
|
|
}
|
|
|
|
.workspace-tab-container-before,
|
|
.workspace-tab-container-after {
|
|
background: transparent;
|
|
}
|
|
|
|
.view-header {
|
|
background: var(--background-primary);
|
|
border-bottom: var(--ta-border-width) solid var(--background-modifier-border);
|
|
color: var(--text-muted);
|
|
}
|
|
|
|
.view-header-title {
|
|
color: var(--text-normal);
|
|
font-family: var(--font-monospace);
|
|
font-size: 11.5px;
|
|
font-weight: 500;
|
|
opacity: 1;
|
|
}
|
|
|
|
.view-header-title-parent,
|
|
.view-header-breadcrumb {
|
|
font-family: var(--font-monospace);
|
|
font-size: 11.5px;
|
|
color: var(--text-muted);
|
|
}
|
|
|
|
.view-header-breadcrumb-separator {
|
|
color: var(--text-faint);
|
|
}
|
|
|
|
.view-header-title-container,
|
|
.view-header-nav-buttons .clickable-icon,
|
|
.view-actions .clickable-icon,
|
|
.view-header .clickable-icon {
|
|
color: var(--text-soft);
|
|
opacity: 0.98;
|
|
}
|
|
|
|
.workspace-leaf.mod-active .view-header-title {
|
|
color: var(--text-normal);
|
|
}
|
|
|
|
.view-header:hover .view-header-title,
|
|
.view-header-title-container:not(.mod-at-start):before {
|
|
color: var(--text-normal);
|
|
}
|
|
|
|
.view-header .clickable-icon:hover,
|
|
.view-header-nav-buttons .clickable-icon:hover,
|
|
.view-actions .clickable-icon:hover {
|
|
color: var(--text-normal);
|
|
opacity: 1;
|
|
}
|
|
|
|
.status-bar {
|
|
background: var(--status-bar-background);
|
|
color: var(--text-faint);
|
|
border: var(--ta-border-width) solid var(--background-modifier-border);
|
|
border-right: 0;
|
|
border-bottom: 0;
|
|
border-radius: var(--radius-s) 0 0 0;
|
|
font-family: var(--font-interface);
|
|
font-size: 11px;
|
|
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.025);
|
|
}
|
|
|
|
.status-bar-item:hover {
|
|
color: var(--text-normal);
|
|
}
|
|
|
|
.nav-header {
|
|
padding: 10px 12px 7px;
|
|
}
|
|
|
|
.nav-buttons-container {
|
|
gap: 4px;
|
|
}
|
|
|
|
.nav-files-container {
|
|
padding: 2px 8px 12px;
|
|
}
|
|
|
|
.workspace-leaf-content[data-type="file-explorer"] .nav-folder-children {
|
|
margin-left: 7px;
|
|
padding-left: 9px;
|
|
border-left: var(--ta-border-width) solid color-mix(in srgb, var(--background-modifier-border) 82%, transparent);
|
|
}
|
|
|
|
.workspace-leaf-content[data-type="file-explorer"] .nav-folder.mod-root > .nav-folder-children {
|
|
margin-left: 0;
|
|
padding-left: 0;
|
|
border-left: 0;
|
|
}
|
|
|
|
.tree-item-self,
|
|
.nav-file-title,
|
|
.nav-folder-title {
|
|
color: var(--nav-item-color);
|
|
border-radius: var(--radius-s);
|
|
min-height: 27px;
|
|
margin: 1px 0;
|
|
padding-top: 3px;
|
|
padding-bottom: 3px;
|
|
}
|
|
|
|
.tree-item-self:hover,
|
|
.nav-file-title:hover,
|
|
.nav-folder-title:hover {
|
|
color: var(--nav-item-color-hover);
|
|
background: var(--nav-item-background-hover);
|
|
}
|
|
|
|
.tree-item-self.is-active,
|
|
.nav-file-title.is-active,
|
|
.nav-folder-title.is-active {
|
|
color: var(--nav-item-color-active);
|
|
background: var(--nav-item-background-active);
|
|
box-shadow: inset 2px 0 0 var(--ta-accent);
|
|
font-weight: 650;
|
|
}
|
|
|
|
.nav-file-title-content,
|
|
.nav-folder-title-content,
|
|
.tree-item-inner {
|
|
font-family: var(--font-interface);
|
|
font-size: 12.5px;
|
|
}
|
|
|
|
.nav-file-title {
|
|
color: var(--ta-file-color);
|
|
}
|
|
|
|
.nav-folder.mod-root > .nav-folder-title,
|
|
.tree-item-self.mod-root {
|
|
color: var(--text-faint);
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.08em;
|
|
font-size: 10px;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.workspace-leaf-content[data-type="file-explorer"] .nav-file-tag {
|
|
color: var(--ta-warm);
|
|
background: transparent;
|
|
}
|
|
|
|
.search-input-container input,
|
|
.prompt-input,
|
|
input[type="text"],
|
|
input[type="search"],
|
|
input[type="email"],
|
|
input[type="password"],
|
|
textarea {
|
|
background: var(--background-modifier-form-field);
|
|
color: var(--text-normal);
|
|
border: var(--ta-border-width) solid var(--background-modifier-border);
|
|
border-radius: var(--input-radius);
|
|
box-shadow: none;
|
|
}
|
|
|
|
.search-input-container input:focus,
|
|
.prompt-input:focus,
|
|
input[type="text"]:focus,
|
|
input[type="search"]:focus,
|
|
textarea:focus {
|
|
border-color: var(--background-modifier-border-focus);
|
|
box-shadow: 0 0 0 2px color-mix(in srgb, var(--ta-accent) 18%, transparent);
|
|
}
|
|
|
|
button,
|
|
.mod-cta {
|
|
border-radius: var(--input-radius);
|
|
box-shadow: none;
|
|
}
|
|
|
|
button.mod-cta,
|
|
.mod-cta {
|
|
background: var(--interactive-accent);
|
|
color: var(--text-on-accent);
|
|
font-weight: 650;
|
|
}
|
|
|
|
button.mod-cta:hover,
|
|
.mod-cta:hover {
|
|
background: var(--interactive-accent-hover);
|
|
}
|
|
|
|
.menu,
|
|
.suggestion-container,
|
|
.prompt,
|
|
.modal,
|
|
.popover,
|
|
.popover.hover-popover {
|
|
background: var(--modal-background);
|
|
border: var(--ta-border-width) solid var(--background-modifier-border);
|
|
border-radius: var(--radius-m);
|
|
box-shadow: var(--ta-pane-shadow);
|
|
}
|
|
|
|
.menu-item,
|
|
.suggestion-item {
|
|
border-radius: var(--radius-s);
|
|
color: var(--text-muted);
|
|
}
|
|
|
|
.menu-item:hover,
|
|
.suggestion-item.is-selected {
|
|
color: var(--text-normal);
|
|
background: var(--nav-item-background-active);
|
|
}
|
|
|
|
.markdown-source-view.mod-cm6,
|
|
.markdown-reading-view,
|
|
.markdown-preview-view {
|
|
background: var(--background-primary);
|
|
}
|
|
|
|
.markdown-source-view.mod-cm6 .cm-editor,
|
|
.markdown-source-view.mod-cm6 .cm-scroller,
|
|
.markdown-preview-view {
|
|
font-family: var(--font-text);
|
|
color: var(--text-normal);
|
|
line-height: var(--line-height-normal);
|
|
}
|
|
|
|
/* Constrain and center the editing/reading column even when Obsidian's
|
|
"Readable line length" is off. Obsidian only adds the centering margins
|
|
under .is-readable-line-width, so without this the forced max-width would
|
|
hug the left. Mirrors Obsidian's own mechanism (margins on the sizer). */
|
|
.markdown-source-view.mod-cm6 .cm-sizer,
|
|
.markdown-preview-view .markdown-preview-sizer {
|
|
max-width: var(--file-line-width);
|
|
margin-inline: auto;
|
|
}
|
|
|
|
.markdown-source-view.mod-cm6 .cm-content {
|
|
max-width: var(--file-line-width);
|
|
}
|
|
|
|
.markdown-source-view.mod-cm6 .cm-line {
|
|
caret-color: var(--caret-color);
|
|
}
|
|
|
|
.markdown-source-view.mod-cm6 .cm-line.cm-active {
|
|
background: linear-gradient(90deg, var(--ta-active-line), transparent 72%);
|
|
box-shadow: inset 2px 0 0 color-mix(in srgb, var(--ta-accent-alt) 50%, transparent);
|
|
}
|
|
|
|
.cm-gutters,
|
|
.markdown-source-view.mod-cm6 .cm-gutters {
|
|
background: var(--background-primary);
|
|
border-right: var(--ta-border-width) solid var(--background-modifier-border);
|
|
color: var(--text-faint);
|
|
}
|
|
|
|
.cm-lineNumbers .cm-gutterElement {
|
|
font-family: var(--font-monospace);
|
|
font-size: 11px;
|
|
}
|
|
|
|
.markdown-rendered,
|
|
.markdown-source-view.mod-cm6 .cm-line {
|
|
font-size: var(--font-text-size);
|
|
}
|
|
|
|
.markdown-rendered p,
|
|
.markdown-rendered ul,
|
|
.markdown-rendered ol {
|
|
margin-block-start: 0.85em;
|
|
margin-block-end: 0.85em;
|
|
}
|
|
|
|
.inline-title,
|
|
.markdown-rendered h1,
|
|
.markdown-rendered h2,
|
|
.markdown-rendered h3,
|
|
.markdown-rendered h4,
|
|
.markdown-rendered h5,
|
|
.markdown-rendered h6,
|
|
.HyperMD-header,
|
|
.cm-header {
|
|
font-family: var(--font-text);
|
|
letter-spacing: 0;
|
|
}
|
|
|
|
.inline-title {
|
|
color: var(--text-normal);
|
|
font-size: 2.1em;
|
|
font-weight: 760;
|
|
line-height: 1.18;
|
|
margin-bottom: 0.75em;
|
|
}
|
|
|
|
.markdown-rendered h1,
|
|
.HyperMD-header-1,
|
|
.cm-header-1 {
|
|
color: var(--text-normal);
|
|
font-size: 1.72em;
|
|
font-weight: 760;
|
|
line-height: 1.22;
|
|
}
|
|
|
|
.markdown-rendered h2,
|
|
.HyperMD-header-2,
|
|
.cm-header-2 {
|
|
color: var(--ta-accent);
|
|
font-size: 1.38em;
|
|
font-weight: 740;
|
|
line-height: 1.28;
|
|
}
|
|
|
|
.markdown-rendered h3,
|
|
.HyperMD-header-3,
|
|
.cm-header-3 {
|
|
color: var(--ta-accent-alt);
|
|
font-size: 1.16em;
|
|
font-weight: 720;
|
|
}
|
|
|
|
.markdown-rendered h4,
|
|
.HyperMD-header-4,
|
|
.cm-header-4 {
|
|
color: var(--ta-warm);
|
|
font-size: 1.04em;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.markdown-rendered h5,
|
|
.HyperMD-header-5,
|
|
.cm-header-5,
|
|
.markdown-rendered h6,
|
|
.HyperMD-header-6,
|
|
.cm-header-6 {
|
|
color: var(--text-muted);
|
|
font-size: 0.95em;
|
|
font-weight: 700;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.07em;
|
|
}
|
|
|
|
.cm-formatting-header {
|
|
color: var(--text-faint);
|
|
font-weight: 500;
|
|
}
|
|
|
|
.markdown-rendered h1::after,
|
|
.markdown-rendered h2::after {
|
|
content: "";
|
|
display: block;
|
|
height: 1px;
|
|
margin-top: 0.38em;
|
|
background: linear-gradient(90deg, color-mix(in srgb, currentColor 42%, transparent), transparent);
|
|
}
|
|
|
|
.markdown-rendered a,
|
|
.cm-hmd-internal-link,
|
|
.cm-link,
|
|
.internal-link,
|
|
.external-link {
|
|
color: var(--link-color);
|
|
text-decoration: none;
|
|
}
|
|
|
|
.markdown-rendered a:hover,
|
|
.internal-link:hover,
|
|
.external-link:hover {
|
|
color: var(--link-color-hover);
|
|
text-decoration: underline;
|
|
text-decoration-thickness: 1px;
|
|
text-underline-offset: 3px;
|
|
}
|
|
|
|
.markdown-rendered mark,
|
|
.cm-highlight {
|
|
color: var(--text-normal);
|
|
background: var(--text-highlight-bg);
|
|
border-radius: 3px;
|
|
padding: 0.05em 0.2em;
|
|
}
|
|
|
|
.markdown-rendered strong,
|
|
.cm-strong {
|
|
color: var(--text-normal);
|
|
font-weight: 760;
|
|
}
|
|
|
|
.markdown-rendered em,
|
|
.cm-em {
|
|
color: var(--text-soft, var(--text-normal));
|
|
}
|
|
|
|
.markdown-rendered hr {
|
|
border: 0;
|
|
height: 1px;
|
|
background: linear-gradient(90deg, transparent, var(--background-modifier-border), transparent);
|
|
margin: 2em 0;
|
|
}
|
|
|
|
.markdown-rendered blockquote {
|
|
border-left: 2px solid var(--blockquote-border-color);
|
|
background: var(--blockquote-background-color);
|
|
border-radius: 0 var(--radius-s) var(--radius-s) 0;
|
|
margin: 1em 0;
|
|
padding: 0.7em 1em;
|
|
color: var(--text-soft, var(--text-normal));
|
|
}
|
|
|
|
.markdown-rendered blockquote p:first-child {
|
|
margin-top: 0;
|
|
}
|
|
|
|
.markdown-rendered blockquote p:last-child {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.markdown-rendered blockquote::before {
|
|
content: ">";
|
|
color: var(--ta-accent);
|
|
font-family: var(--font-monospace);
|
|
font-weight: 700;
|
|
margin-right: 0.5em;
|
|
}
|
|
|
|
.markdown-rendered code,
|
|
.cm-inline-code {
|
|
font-family: var(--font-monospace);
|
|
font-size: 0.92em;
|
|
color: var(--code-normal);
|
|
background: var(--code-background);
|
|
border: var(--ta-border-width) solid var(--background-modifier-border);
|
|
border-radius: var(--radius-s);
|
|
padding: 0.12em 0.34em;
|
|
}
|
|
|
|
.markdown-rendered pre {
|
|
position: relative;
|
|
background: var(--code-background);
|
|
border: var(--ta-border-width) solid var(--background-modifier-border);
|
|
border-radius: var(--radius-m);
|
|
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.035);
|
|
padding: 0;
|
|
overflow: hidden;
|
|
}
|
|
|
|
/* Header band; the ">_" glyph is language-neutral because reading view
|
|
does not expose the code block language. */
|
|
.markdown-rendered pre::before {
|
|
content: ">_";
|
|
display: block;
|
|
background: var(--ta-code-header-bg);
|
|
border-bottom: var(--ta-border-width) solid color-mix(in srgb, var(--background-modifier-border) 70%, transparent);
|
|
padding: 5px 12px;
|
|
font-family: var(--font-monospace);
|
|
font-size: 9.5px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.09em;
|
|
line-height: 1.5;
|
|
color: var(--text-faint);
|
|
}
|
|
|
|
.markdown-rendered pre code {
|
|
display: block;
|
|
padding: 0.9em 1.2em 1.1em;
|
|
border: 0;
|
|
background: transparent;
|
|
color: var(--code-normal);
|
|
line-height: 1.62;
|
|
overflow-x: auto;
|
|
}
|
|
|
|
.markdown-rendered button.copy-code-button {
|
|
margin: 2px 6px;
|
|
padding: 3px 8px;
|
|
font-family: var(--font-monospace);
|
|
font-size: 9.5px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.09em;
|
|
text-transform: uppercase;
|
|
color: var(--text-faint);
|
|
border-radius: var(--radius-s);
|
|
}
|
|
|
|
.markdown-rendered button.copy-code-button:hover {
|
|
color: var(--ta-accent);
|
|
background: var(--background-modifier-hover);
|
|
}
|
|
|
|
.HyperMD-codeblock,
|
|
.cm-line.HyperMD-codeblock {
|
|
font-family: var(--font-monospace);
|
|
color: var(--code-normal);
|
|
background: var(--code-background);
|
|
border-left: var(--ta-border-width) solid var(--background-modifier-border);
|
|
border-right: var(--ta-border-width) solid var(--background-modifier-border);
|
|
}
|
|
|
|
.cm-line.HyperMD-codeblock-begin {
|
|
background: var(--ta-code-header-bg);
|
|
border-top: var(--ta-border-width) solid var(--background-modifier-border);
|
|
border-bottom: var(--ta-border-width) solid color-mix(in srgb, var(--background-modifier-border) 70%, transparent);
|
|
border-top-left-radius: var(--radius-m);
|
|
border-top-right-radius: var(--radius-m);
|
|
}
|
|
|
|
.cm-line.HyperMD-codeblock-end {
|
|
border-bottom: var(--ta-border-width) solid var(--background-modifier-border);
|
|
border-bottom-left-radius: var(--radius-m);
|
|
border-bottom-right-radius: var(--radius-m);
|
|
}
|
|
|
|
.markdown-source-view.mod-cm6 .code-block-flair {
|
|
font-family: var(--font-monospace);
|
|
font-size: 9.5px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.09em;
|
|
text-transform: uppercase;
|
|
color: var(--text-muted);
|
|
}
|
|
|
|
.token.comment {
|
|
color: var(--code-comment);
|
|
}
|
|
|
|
.token.keyword,
|
|
.cm-keyword {
|
|
color: var(--code-keyword);
|
|
}
|
|
|
|
.token.string,
|
|
.cm-string {
|
|
color: var(--code-string);
|
|
}
|
|
|
|
.token.function,
|
|
.cm-def,
|
|
.cm-variable-2 {
|
|
color: var(--code-function);
|
|
}
|
|
|
|
.token.property,
|
|
.cm-property {
|
|
color: var(--code-property);
|
|
}
|
|
|
|
.token.number,
|
|
.cm-number {
|
|
color: var(--code-value);
|
|
}
|
|
|
|
.token.operator,
|
|
.cm-operator {
|
|
color: var(--code-operator);
|
|
}
|
|
|
|
.token.punctuation {
|
|
color: var(--code-punctuation);
|
|
}
|
|
|
|
.markdown-rendered table {
|
|
border-collapse: separate;
|
|
border-spacing: 0;
|
|
width: 100%;
|
|
margin: 1.25em 0;
|
|
overflow: hidden;
|
|
border: var(--ta-border-width) solid var(--table-border-color);
|
|
border-radius: var(--radius-m);
|
|
}
|
|
|
|
.markdown-rendered th,
|
|
.markdown-rendered td {
|
|
border: 0;
|
|
border-bottom: var(--ta-border-width) solid var(--table-border-color);
|
|
border-right: var(--ta-border-width) solid var(--table-border-color);
|
|
padding: 0.62em 0.75em;
|
|
}
|
|
|
|
.markdown-rendered tr:last-child td {
|
|
border-bottom: 0;
|
|
}
|
|
|
|
.markdown-rendered th:last-child,
|
|
.markdown-rendered td:last-child {
|
|
border-right: 0;
|
|
}
|
|
|
|
.markdown-rendered th {
|
|
background: var(--table-header-background);
|
|
color: var(--text-normal);
|
|
font-weight: 720;
|
|
}
|
|
|
|
.markdown-rendered tr:nth-child(even) td {
|
|
background: var(--table-row-alt-background);
|
|
}
|
|
|
|
.markdown-rendered tbody tr:hover td {
|
|
background: color-mix(in srgb, var(--ta-accent-alt) 7%, transparent);
|
|
}
|
|
|
|
/* Tag shape and color come from the native --tag-* variables (set on body),
|
|
which also drive the begin/end hashtag merge in the editor and the
|
|
Properties tag pills. Only the font needs a rule. */
|
|
.tag,
|
|
.cm-hashtag {
|
|
font-family: var(--font-interface);
|
|
}
|
|
|
|
input[type="checkbox"] {
|
|
border-radius: var(--checkbox-radius);
|
|
border-color: var(--checkbox-border-color);
|
|
background: var(--background-primary-alt);
|
|
}
|
|
|
|
input[type="checkbox"]:checked {
|
|
border-color: var(--checkbox-color);
|
|
background: var(--checkbox-color);
|
|
box-shadow: 0 0 0 2px color-mix(in srgb, var(--checkbox-color) 14%, transparent);
|
|
}
|
|
|
|
.task-list-item-checkbox {
|
|
margin-inline-end: 0.55em;
|
|
}
|
|
|
|
.markdown-rendered .task-list-item.is-checked,
|
|
.cm-line.HyperMD-task-line[data-task="x"] {
|
|
color: var(--text-faint);
|
|
text-decoration-color: var(--text-faint);
|
|
}
|
|
|
|
.markdown-rendered .task-list-item[data-task="-"],
|
|
.cm-line.HyperMD-task-line[data-task="-"] {
|
|
--checkbox-color: var(--ta-red);
|
|
--checkbox-color-hover: var(--ta-red);
|
|
--checkbox-border-color: var(--ta-red);
|
|
--checkbox-border-color-hover: var(--ta-red);
|
|
--checkbox-marker-color: var(--ta-inverted);
|
|
color: color-mix(in srgb, var(--ta-red) 72%, var(--text-muted));
|
|
text-decoration: line-through;
|
|
text-decoration-thickness: 1px;
|
|
text-decoration-color: color-mix(in srgb, var(--ta-red) 68%, transparent);
|
|
}
|
|
|
|
.markdown-rendered .task-list-item[data-task=">"],
|
|
.cm-line.HyperMD-task-line[data-task=">"] {
|
|
--checkbox-color: var(--ta-accent-alt);
|
|
--checkbox-color-hover: var(--ta-accent-alt);
|
|
--checkbox-border-color: var(--ta-accent-alt);
|
|
--checkbox-border-color-hover: var(--ta-accent-alt);
|
|
--checkbox-marker-color: var(--ta-inverted);
|
|
color: var(--ta-accent-alt);
|
|
}
|
|
|
|
.markdown-rendered .task-list-item[data-task="!"],
|
|
.cm-line.HyperMD-task-line[data-task="!"] {
|
|
--checkbox-color: var(--ta-warm);
|
|
--checkbox-color-hover: var(--ta-warm);
|
|
--checkbox-border-color: var(--ta-warm);
|
|
--checkbox-border-color-hover: var(--ta-warm);
|
|
--checkbox-marker-color: var(--ta-inverted);
|
|
color: var(--ta-warm);
|
|
font-weight: 700;
|
|
}
|
|
|
|
.math,
|
|
.math-block,
|
|
.markdown-rendered .math,
|
|
.markdown-rendered .math-block,
|
|
.cm-math,
|
|
.cm-formatting-math {
|
|
color: var(--text-soft);
|
|
}
|
|
|
|
.markdown-rendered .math-block,
|
|
.mjx-container[jax="CHTML"][display="true"] {
|
|
background: color-mix(in srgb, var(--ta-accent-alt) 4%, transparent);
|
|
border-radius: var(--radius-s);
|
|
padding: 0.6em 0.8em;
|
|
}
|
|
|
|
.mjx-container,
|
|
.MathJax {
|
|
font-size: 0.98em;
|
|
}
|
|
|
|
.cm-formatting-math {
|
|
color: var(--ta-accent-alt);
|
|
opacity: 0.75;
|
|
}
|
|
|
|
.footnotes {
|
|
margin-top: 2.2em;
|
|
padding-top: 1em;
|
|
border-top: var(--ta-border-width) solid var(--background-modifier-border);
|
|
color: var(--text-muted);
|
|
font-size: 0.92em;
|
|
}
|
|
|
|
.footnotes ol,
|
|
.markdown-rendered .footnotes ol {
|
|
padding-left: 1.45em;
|
|
}
|
|
|
|
.footnotes li,
|
|
.markdown-rendered .footnotes li {
|
|
padding-left: 0.25em;
|
|
color: var(--text-soft);
|
|
}
|
|
|
|
.footnotes li::marker,
|
|
.markdown-rendered .footnotes li::marker {
|
|
color: var(--ta-accent-alt);
|
|
font-family: var(--font-monospace);
|
|
font-size: 0.84em;
|
|
}
|
|
|
|
.footnote-ref,
|
|
.footnote-link,
|
|
.footnote-backref,
|
|
.cm-footref,
|
|
.cm-hmd-footnote {
|
|
color: var(--ta-accent-alt);
|
|
font-family: var(--font-monospace);
|
|
font-size: 0.84em;
|
|
text-decoration: none;
|
|
}
|
|
|
|
.markdown-rendered sup {
|
|
color: var(--ta-accent-alt);
|
|
line-height: 0;
|
|
}
|
|
|
|
.footnote-definition,
|
|
.markdown-rendered .footnote-definition {
|
|
display: grid;
|
|
grid-template-columns: auto minmax(0, 1fr);
|
|
align-items: start;
|
|
gap: 0 0.7em;
|
|
margin: 0.45em 0;
|
|
color: var(--text-muted);
|
|
}
|
|
|
|
.footnote-definition-label,
|
|
.markdown-rendered .footnote-definition-label {
|
|
color: var(--ta-accent-alt);
|
|
background: color-mix(in srgb, var(--ta-accent-alt) 10%, transparent);
|
|
border: var(--ta-border-width) solid color-mix(in srgb, var(--ta-accent-alt) 22%, transparent);
|
|
border-radius: var(--radius-s);
|
|
padding: 0.08em 0.38em;
|
|
font-family: var(--font-monospace);
|
|
font-size: 0.78em;
|
|
line-height: 1.55;
|
|
}
|
|
|
|
.footnote-definition p,
|
|
.markdown-rendered .footnote-definition p {
|
|
margin: 0;
|
|
color: var(--text-soft);
|
|
}
|
|
|
|
.cm-comment,
|
|
.cm-formatting-comment,
|
|
.markdown-source-view.mod-cm6 .cm-comment {
|
|
color: color-mix(in srgb, var(--code-comment) 82%, var(--background-primary));
|
|
font-style: normal;
|
|
}
|
|
|
|
.markdown-embed,
|
|
.file-embed {
|
|
border: var(--ta-border-width) solid var(--background-modifier-border);
|
|
border-radius: var(--radius-m);
|
|
background: var(--background-primary-alt);
|
|
}
|
|
|
|
.markdown-embed-title,
|
|
.file-embed-title {
|
|
color: var(--ta-accent-alt);
|
|
font-family: var(--font-interface);
|
|
font-size: 0.86em;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.markdown-embed-link,
|
|
.file-embed-link {
|
|
color: var(--ta-accent);
|
|
}
|
|
|
|
.embed-error {
|
|
color: var(--text-muted);
|
|
background: var(--background-primary-alt);
|
|
border: var(--ta-border-width) dashed var(--background-modifier-border);
|
|
border-radius: var(--radius-m);
|
|
font-family: var(--font-monospace);
|
|
}
|
|
|
|
body:not(.ta-plain-mermaid) .mermaid {
|
|
display: flex;
|
|
justify-content: center;
|
|
margin: 1.2em 0;
|
|
padding: 1em;
|
|
border: var(--ta-border-width) solid var(--background-modifier-border);
|
|
border-radius: var(--radius-m);
|
|
background: color-mix(in srgb, var(--ta-accent-alt) 4%, var(--background-primary));
|
|
}
|
|
|
|
body:not(.ta-plain-mermaid) .mermaid svg {
|
|
max-width: 100%;
|
|
height: auto;
|
|
}
|
|
|
|
/* In dark mode Obsidian pixel-inverts Mermaid SVGs (invert + hue-rotate),
|
|
which would flip the palette below. Disable the filter only for diagram
|
|
types this theme fully restyles; pie, gantt, and other types keep the
|
|
invert treatment that makes their stock colors dark-friendly. */
|
|
body.theme-dark:not(.ta-plain-mermaid) .mermaid > svg:is(
|
|
[aria-roledescription="flowchart-v2"],
|
|
[aria-roledescription="flowchart"],
|
|
[aria-roledescription="stateDiagram"],
|
|
[aria-roledescription="stateDiagram-v2"],
|
|
[aria-roledescription="class"],
|
|
[aria-roledescription="classDiagram"],
|
|
[aria-roledescription="sequence"]) {
|
|
filter: none;
|
|
}
|
|
|
|
/* Readability net for diagram text this theme does not explicitly style,
|
|
in the unfiltered diagram types above. */
|
|
body.theme-dark:not(.ta-plain-mermaid) .mermaid > svg:is(
|
|
[aria-roledescription="flowchart-v2"],
|
|
[aria-roledescription="flowchart"],
|
|
[aria-roledescription="stateDiagram"],
|
|
[aria-roledescription="stateDiagram-v2"],
|
|
[aria-roledescription="class"],
|
|
[aria-roledescription="classDiagram"],
|
|
[aria-roledescription="sequence"]) text {
|
|
fill: var(--text-normal);
|
|
}
|
|
|
|
/* Mermaid injects a per-diagram <style> element with ID selectors, so
|
|
recoloring diagram parts cannot win without !important. Selectors are
|
|
scoped to flowchart/state/sequence part classes to leave pie, gantt,
|
|
and other chart types untouched. */
|
|
body:not(.ta-plain-mermaid) .mermaid .node rect,
|
|
body:not(.ta-plain-mermaid) .mermaid .node circle,
|
|
body:not(.ta-plain-mermaid) .mermaid .node ellipse,
|
|
body:not(.ta-plain-mermaid) .mermaid .node polygon,
|
|
body:not(.ta-plain-mermaid) .mermaid .node path {
|
|
fill: var(--ta-mermaid-node-bg) !important;
|
|
stroke: var(--ta-mermaid-node-border) !important;
|
|
stroke-width: 1.4px !important;
|
|
}
|
|
|
|
body:not(.ta-plain-mermaid) .mermaid .cluster rect {
|
|
fill: var(--ta-mermaid-cluster-bg) !important;
|
|
stroke: var(--ta-mermaid-edge) !important;
|
|
}
|
|
|
|
body:not(.ta-plain-mermaid) .mermaid .nodeLabel,
|
|
body:not(.ta-plain-mermaid) .mermaid .nodeLabel p,
|
|
body:not(.ta-plain-mermaid) .mermaid .cluster-label span,
|
|
body:not(.ta-plain-mermaid) .mermaid .node text,
|
|
body:not(.ta-plain-mermaid) .mermaid .label text {
|
|
color: var(--text-normal) !important;
|
|
fill: var(--text-normal) !important;
|
|
background-color: transparent !important;
|
|
}
|
|
|
|
body:not(.ta-plain-mermaid) .mermaid .edgeLabel,
|
|
body:not(.ta-plain-mermaid) .mermaid .edgeLabel p,
|
|
body:not(.ta-plain-mermaid) .mermaid rect.labelBkg {
|
|
color: var(--text-soft) !important;
|
|
fill: var(--ta-mermaid-cluster-bg) !important;
|
|
background-color: var(--ta-mermaid-cluster-bg) !important;
|
|
}
|
|
|
|
body:not(.ta-plain-mermaid) .mermaid .edgePath .path,
|
|
body:not(.ta-plain-mermaid) .mermaid .flowchart-link,
|
|
body:not(.ta-plain-mermaid) .mermaid .transition {
|
|
stroke: var(--ta-mermaid-edge) !important;
|
|
}
|
|
|
|
body:not(.ta-plain-mermaid) .mermaid .marker,
|
|
body:not(.ta-plain-mermaid) .mermaid .arrowheadPath {
|
|
fill: var(--ta-accent) !important;
|
|
stroke: var(--ta-accent) !important;
|
|
}
|
|
|
|
body:not(.ta-plain-mermaid) .mermaid .actor {
|
|
fill: var(--ta-mermaid-node-bg) !important;
|
|
stroke: var(--ta-mermaid-node-border) !important;
|
|
}
|
|
|
|
body:not(.ta-plain-mermaid) .mermaid text.actor > tspan {
|
|
fill: var(--text-normal) !important;
|
|
}
|
|
|
|
body:not(.ta-plain-mermaid) .mermaid .messageLine0,
|
|
body:not(.ta-plain-mermaid) .mermaid .messageLine1,
|
|
body:not(.ta-plain-mermaid) .mermaid .loopLine {
|
|
stroke: var(--ta-mermaid-edge) !important;
|
|
}
|
|
|
|
body:not(.ta-plain-mermaid) .mermaid .messageText,
|
|
body:not(.ta-plain-mermaid) .mermaid .loopText,
|
|
body:not(.ta-plain-mermaid) .mermaid .loopText > tspan {
|
|
fill: var(--text-soft) !important;
|
|
}
|
|
|
|
body:not(.ta-plain-mermaid) .mermaid .labelBox {
|
|
fill: var(--ta-mermaid-cluster-bg) !important;
|
|
stroke: var(--ta-mermaid-node-border) !important;
|
|
}
|
|
|
|
body:not(.ta-plain-mermaid) .mermaid .labelText,
|
|
body:not(.ta-plain-mermaid) .mermaid .labelText > tspan {
|
|
fill: var(--text-normal) !important;
|
|
}
|
|
|
|
/* Default callout palette — each type maps to the theme palette so callouts
|
|
match the theme out of the box: green for the default/note flavor, cyan for
|
|
the info family, orange for warnings, red for danger, violet for questions,
|
|
gray for quotes. Style Settings can override any of these per type. */
|
|
body {
|
|
--callout-default: var(--ta-green-rgb);
|
|
--callout-summary: var(--ta-cyan-rgb);
|
|
--callout-info: var(--ta-cyan-rgb);
|
|
--callout-todo: var(--ta-cyan-rgb);
|
|
--callout-tip: var(--ta-cyan-rgb);
|
|
--callout-important: var(--ta-cyan-rgb);
|
|
--callout-success: var(--ta-green-rgb);
|
|
--callout-question: var(--ta-violet-rgb);
|
|
--callout-warning: var(--ta-orange-rgb);
|
|
--callout-fail: var(--ta-red-rgb);
|
|
--callout-error: var(--ta-red-rgb);
|
|
--callout-bug: var(--ta-red-rgb);
|
|
--callout-example: var(--ta-violet-rgb);
|
|
--callout-quote: var(--ta-gray-rgb);
|
|
}
|
|
|
|
.callout {
|
|
background: color-mix(in srgb, rgb(var(--callout-color)) 9%, var(--background-primary));
|
|
border: var(--ta-border-width) solid color-mix(in srgb, rgb(var(--callout-color)) 34%, var(--background-modifier-border));
|
|
border-left: 3px solid rgb(var(--callout-color));
|
|
border-radius: var(--radius-m);
|
|
box-shadow: none;
|
|
}
|
|
|
|
.callout-title {
|
|
color: var(--text-normal);
|
|
font-family: var(--font-interface);
|
|
font-size: 0.92em;
|
|
font-weight: 750;
|
|
}
|
|
|
|
.metadata-container {
|
|
--metadata-label-font: var(--font-monospace);
|
|
--metadata-label-font-size: 12px;
|
|
--metadata-label-text-color: var(--text-muted);
|
|
--metadata-label-text-color-hover: var(--text-soft);
|
|
--metadata-divider-width: var(--ta-border-width);
|
|
--metadata-divider-color: color-mix(in srgb, var(--background-modifier-border) 55%, transparent);
|
|
border: var(--ta-border-width) solid var(--background-modifier-border);
|
|
border-radius: var(--radius-m);
|
|
background: var(--background-primary-alt);
|
|
padding: 8px 10px;
|
|
}
|
|
|
|
/* The theme's global text-input chrome would box the chromeless property
|
|
fields; hand them back to Obsidian's variable-driven styling. */
|
|
.metadata-container input[type="text"],
|
|
.metadata-container input[type="search"],
|
|
.metadata-container textarea {
|
|
background: transparent;
|
|
border: none;
|
|
box-shadow: none;
|
|
}
|
|
|
|
.metadata-container input[type="text"]:focus,
|
|
.metadata-container input[type="search"]:focus,
|
|
.metadata-container textarea:focus {
|
|
background: var(--background-modifier-hover);
|
|
box-shadow: none;
|
|
}
|
|
|
|
.metadata-properties-heading {
|
|
display: block;
|
|
padding: 2px 4px 6px;
|
|
margin-bottom: 4px;
|
|
border-bottom: var(--ta-border-width) solid color-mix(in srgb, var(--background-modifier-border) 70%, transparent);
|
|
}
|
|
|
|
.metadata-properties-title {
|
|
font-family: var(--font-monospace);
|
|
font-size: 10.5px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.09em;
|
|
text-transform: uppercase;
|
|
color: var(--text-muted);
|
|
}
|
|
|
|
.metadata-property {
|
|
--metadata-label-background: transparent;
|
|
--metadata-input-background: transparent;
|
|
border-radius: var(--radius-s);
|
|
}
|
|
|
|
.metadata-property:hover {
|
|
background: var(--background-modifier-hover);
|
|
}
|
|
|
|
.metadata-container .metadata-property-key-input {
|
|
font-family: var(--metadata-label-font);
|
|
font-size: var(--metadata-label-font-size);
|
|
color: var(--metadata-label-text-color);
|
|
}
|
|
|
|
.metadata-property-icon {
|
|
color: var(--text-faint);
|
|
}
|
|
|
|
.metadata-container .metadata-add-button {
|
|
color: var(--text-faint);
|
|
}
|
|
|
|
.metadata-container .metadata-add-button:hover {
|
|
color: var(--ta-accent);
|
|
}
|
|
|
|
.graph-view.color-fill {
|
|
color: var(--ta-accent-alt);
|
|
}
|
|
|
|
.graph-view.color-line {
|
|
color: var(--background-modifier-border-hover);
|
|
}
|
|
|
|
.graph-view.color-fill-highlight,
|
|
.graph-view.color-line-highlight {
|
|
color: var(--ta-accent);
|
|
}
|
|
|
|
.canvas-wrapper {
|
|
--canvas-background: var(--background-primary);
|
|
--canvas-dot-pattern: var(--background-modifier-border);
|
|
}
|
|
|
|
.canvas-node {
|
|
border-radius: var(--radius-m);
|
|
}
|
|
|
|
.canvas-node.is-focused,
|
|
.canvas-node.is-selected {
|
|
box-shadow: 0 0 0 2px color-mix(in srgb, var(--ta-accent) 60%, transparent), var(--ta-glow);
|
|
}
|
|
|
|
.notice {
|
|
background: var(--background-secondary-alt);
|
|
border: var(--ta-border-width) solid var(--background-modifier-border);
|
|
border-left: 3px solid var(--ta-accent);
|
|
color: var(--text-normal);
|
|
border-radius: var(--radius-m);
|
|
}
|
|
|
|
::-webkit-scrollbar {
|
|
width: 10px;
|
|
height: 10px;
|
|
}
|
|
|
|
::-webkit-scrollbar-track {
|
|
background: transparent;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb {
|
|
background: color-mix(in srgb, var(--text-faint) 46%, transparent);
|
|
border: 3px solid transparent;
|
|
border-radius: 999px;
|
|
background-clip: padding-box;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb:hover {
|
|
background: color-mix(in srgb, var(--text-muted) 58%, transparent);
|
|
border: 2px solid transparent;
|
|
background-clip: padding-box;
|
|
}
|
|
|
|
body.ta-compact {
|
|
--font-ui-small: 11.5px;
|
|
--font-ui-smaller: 10.5px;
|
|
--font-ui-medium: 12px;
|
|
--line-height-normal: 1.62;
|
|
}
|
|
|
|
body.ta-compact:not(.is-mobile) {
|
|
--header-height: 32px;
|
|
}
|
|
|
|
body.ta-compact .workspace-tab-header {
|
|
margin-top: 3px;
|
|
}
|
|
|
|
body.ta-compact .workspace-tab-header-inner {
|
|
padding: 0 8px;
|
|
}
|
|
|
|
body.ta-compact .nav-header {
|
|
padding: 7px 8px 5px;
|
|
}
|
|
|
|
body.ta-compact .nav-files-container {
|
|
padding: 0 5px 8px;
|
|
}
|
|
|
|
body.ta-compact .tree-item-self,
|
|
body.ta-compact .nav-file-title,
|
|
body.ta-compact .nav-folder-title {
|
|
min-height: 23px;
|
|
padding-top: 1px;
|
|
padding-bottom: 1px;
|
|
}
|
|
|
|
body.ta-terminal-prompts .markdown-source-view.mod-cm6 .cm-content {
|
|
padding-left: 2.4em;
|
|
}
|
|
|
|
body.ta-terminal-prompts .markdown-source-view.mod-cm6 .cm-line {
|
|
position: relative;
|
|
}
|
|
|
|
body.ta-terminal-prompts .markdown-source-view.mod-cm6 .cm-line.cm-active::before {
|
|
content: "$";
|
|
position: absolute;
|
|
left: -1.55em;
|
|
color: var(--ta-accent);
|
|
font-family: var(--font-monospace);
|
|
font-weight: 800;
|
|
opacity: 0.9;
|
|
}
|
|
|
|
body.ta-soft-neon .workspace-tab-header.is-active,
|
|
body.ta-soft-neon .tree-item-self.is-active,
|
|
body.ta-soft-neon .nav-file-title.is-active,
|
|
body.ta-soft-neon .nav-folder-title.is-active,
|
|
body.ta-soft-neon .side-dock-ribbon-action.is-active {
|
|
box-shadow: inset 0 2px 0 var(--ta-accent), var(--ta-glow);
|
|
}
|
|
|
|
body.ta-soft-neon .nav-file-title.is-active,
|
|
body.ta-soft-neon .nav-folder-title.is-active,
|
|
body.ta-soft-neon .tree-item-self.is-active {
|
|
box-shadow: inset 2px 0 0 var(--ta-accent), var(--ta-glow);
|
|
}
|
|
|
|
/* Colored folders — modeled on the Terminal Workbench site, where a folder and
|
|
everything inside it share one color drawn from the palette. Each TOP-LEVEL
|
|
folder is assigned one of six colors, cycled by its order among sibling
|
|
folders, and hands that color down to its whole subtree via a cascading
|
|
custom property (--ta-fc). Notes:
|
|
- `:nth-child(6n+k of .nav-folder)` counts only folders, so loose files and
|
|
the file tree's virtualization spacer never shift the cycle.
|
|
- `:not(.nav-folder .nav-folder)` restricts the assignment to top-level
|
|
folders; nested folders don't re-assign --ta-fc, so they inherit instead.
|
|
- Titles remap --nav-item-color (not `color`), leaving hover/active states,
|
|
which use their own variables, untouched.
|
|
Obsidian sorts folders alphabetically, so the colors are stable in practice;
|
|
a pure-CSS theme can key off order but not the folder name itself. */
|
|
body.ta-colored-folders .nav-files-container { --ta-fc: var(--nav-item-color); }
|
|
|
|
body.ta-colored-folders .nav-folder:not(.nav-folder .nav-folder):nth-child(6n+1 of .nav-folder) { --ta-fc: var(--ta-folder-1); }
|
|
body.ta-colored-folders .nav-folder:not(.nav-folder .nav-folder):nth-child(6n+2 of .nav-folder) { --ta-fc: var(--ta-folder-2); }
|
|
body.ta-colored-folders .nav-folder:not(.nav-folder .nav-folder):nth-child(6n+3 of .nav-folder) { --ta-fc: var(--ta-folder-3); }
|
|
body.ta-colored-folders .nav-folder:not(.nav-folder .nav-folder):nth-child(6n+4 of .nav-folder) { --ta-fc: var(--ta-folder-4); }
|
|
body.ta-colored-folders .nav-folder:not(.nav-folder .nav-folder):nth-child(6n+5 of .nav-folder) { --ta-fc: var(--ta-folder-5); }
|
|
body.ta-colored-folders .nav-folder:not(.nav-folder .nav-folder):nth-child(6n+6 of .nav-folder) { --ta-fc: var(--ta-folder-6); }
|
|
|
|
body.ta-colored-folders .nav-folder-title { --nav-item-color: var(--ta-fc); }
|
|
|
|
body.ta-plain-headings .markdown-rendered h2,
|
|
body.ta-plain-headings .HyperMD-header-2,
|
|
body.ta-plain-headings .cm-header-2,
|
|
body.ta-plain-headings .markdown-rendered h3,
|
|
body.ta-plain-headings .HyperMD-header-3,
|
|
body.ta-plain-headings .cm-header-3,
|
|
body.ta-plain-headings .markdown-rendered h4,
|
|
body.ta-plain-headings .HyperMD-header-4,
|
|
body.ta-plain-headings .cm-header-4 {
|
|
color: var(--text-normal);
|
|
}
|
|
|
|
body.ta-no-heading-rules .markdown-rendered h1::after,
|
|
body.ta-no-heading-rules .markdown-rendered h2::after {
|
|
content: none;
|
|
}
|
|
|
|
body.ta-no-active-line .markdown-source-view.mod-cm6 .cm-line.cm-active {
|
|
background: transparent;
|
|
box-shadow: none;
|
|
}
|
|
|
|
body.ta-no-blockquote-glyph .markdown-rendered blockquote::before {
|
|
content: none;
|
|
}
|
|
|
|
body.ta-plain-code-header .markdown-rendered pre::before {
|
|
content: none;
|
|
}
|
|
|
|
body.ta-plain-code-header .cm-line.HyperMD-codeblock-begin {
|
|
background: var(--code-background);
|
|
border-bottom: 0;
|
|
}
|
|
|
|
body.ta-plain-tabs .workspace-tab-header-inner-title {
|
|
font-family: var(--font-interface);
|
|
font-size: 12px;
|
|
font-weight: 500;
|
|
letter-spacing: 0;
|
|
text-transform: none;
|
|
}
|
|
|
|
body.ta-plain-tabs .workspace-tabs.mod-top .workspace-tab-header.is-active,
|
|
body.ta-plain-tabs .workspace-tabs.mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-title {
|
|
color: var(--text-normal);
|
|
}
|
|
|
|
body.ta-plain-breadcrumb .view-header-title,
|
|
body.ta-plain-breadcrumb .view-header-title-parent,
|
|
body.ta-plain-breadcrumb .view-header-breadcrumb {
|
|
font-family: var(--font-interface);
|
|
font-size: 12px;
|
|
}
|
|
|
|
body.ta-plain-tasks .markdown-rendered .task-list-item[data-task="-"],
|
|
body.ta-plain-tasks .cm-line.HyperMD-task-line[data-task="-"],
|
|
body.ta-plain-tasks .markdown-rendered .task-list-item[data-task=">"],
|
|
body.ta-plain-tasks .cm-line.HyperMD-task-line[data-task=">"],
|
|
body.ta-plain-tasks .markdown-rendered .task-list-item[data-task="!"],
|
|
body.ta-plain-tasks .cm-line.HyperMD-task-line[data-task="!"] {
|
|
--checkbox-color: var(--ta-accent);
|
|
--checkbox-color-hover: var(--ta-accent);
|
|
--checkbox-border-color: var(--background-modifier-border-hover);
|
|
--checkbox-border-color-hover: var(--background-modifier-border-hover);
|
|
color: var(--text-faint);
|
|
font-weight: inherit;
|
|
text-decoration-color: var(--text-faint);
|
|
}
|
|
|
|
@media (prefers-reduced-motion: no-preference) {
|
|
.clickable-icon,
|
|
.workspace-tab-header,
|
|
.nav-file-title,
|
|
.nav-folder-title,
|
|
.tree-item-self,
|
|
button,
|
|
.menu-item,
|
|
.suggestion-item {
|
|
transition: background-color 120ms ease, color 120ms ease, border-color 120ms ease, box-shadow 120ms ease;
|
|
}
|
|
}
|
|
|
|
@media print {
|
|
body {
|
|
--background-primary: #ffffff;
|
|
--text-normal: #111111;
|
|
--text-muted: #444444;
|
|
--text-faint: #666666;
|
|
--link-color: #005f8f;
|
|
--code-background: #f2f4f3;
|
|
}
|
|
|
|
.markdown-rendered pre,
|
|
.markdown-rendered code {
|
|
border-color: #d7ddda;
|
|
}
|
|
|
|
.markdown-rendered blockquote::before,
|
|
.markdown-rendered pre::before {
|
|
content: none;
|
|
}
|
|
}
|
|
|
|
/* Static fallbacks for engines without color-mix() (older Android WebViews) */
|
|
@supports not (color: color-mix(in srgb, red 50%, transparent)) {
|
|
body.theme-dark {
|
|
--ta-selection: rgba(99, 242, 171, 0.2);
|
|
--text-accent-hover: #88f5bf;
|
|
--interactive-accent-hover: #79f4b7;
|
|
--link-color-hover: #97e6ff;
|
|
--link-external-color-hover: #97e6ff;
|
|
}
|
|
|
|
body.theme-light {
|
|
--ta-selection: rgba(0, 122, 77, 0.17);
|
|
}
|
|
|
|
body.ta-soft-neon.theme-dark {
|
|
--ta-glow: 0 0 18px rgba(99, 242, 171, 0.28);
|
|
}
|
|
|
|
body.ta-soft-neon.theme-light {
|
|
--ta-glow: 0 0 14px rgba(0, 122, 77, 0.16);
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb {
|
|
background: var(--text-faint);
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb:hover {
|
|
background: var(--text-muted);
|
|
}
|
|
}
|