/**---------------------** *! Obsidian Everforest *? *? 1. Variables *? - Implementation *? 2. Themes *? - Dark *? - Light *? 2. General UI *? - Workspace *? - Menus *? - Sidebars *? - Canvas *? - Loading Screen *? 4. Markdown *? - Emphasis *? - Code *? - Links *? - Lists *? - Blockquotes *? - Tables *? - Tags *? - Embeds *? - YAML *? - Graph *? 5. Mobile *? 6. Cursor *? 7. Style Settings *? - Custom Stacked Panes *? - Custom Background Image *? 8. Extra Fixes *? - Callouts *? - Image Formatting *? - CSS Classes *? - Misc. *? **---------------------**/ /**** Implementation ****/ :root body:where(.theme-dark, .theme-light) { /** Miscellaneous **/ --checkbox-size: calc(var(--font-text-size) - 2px); --checkbox-radius: 25%; /* Adjusted in Style Settings */ --list-indent: var(--list-indent-custom, 28px); --list-spacing: 0; --list-bullet-size: 6px; --file-folding-offset: 22px; --shadow-l: 0 4px 14px -2px hsla(0, 0%, 0%, 40%); /* Adjusted in Style Settings */ --file-line-width: var(--readable-line-length-custom, 700px); /** Backgrounds **/ --background-modifier-border: var(--bg5); --background-modifier-border-hover: var(--bg3); --background-embed: var(--background-embed-transparent); --embed-block-shadow-hover: var(--shadow-l); --blockquote-background-color: var(--background-embed); --background-primary: var(--bg0); --background-primary-rgb: var(--bg0-rgb); --background-primary-alt: var(--bg0); --background-secondary: var(--bg0); --background-secondary-alt: var(--bg0); /** General Colors **/ --text-normal: var(--fg); --text-muted: var(--color-base-70); --text-faint: var(--grey1); --text-selection: var(--bg-visual); --link-color: var(--header-aqua); --link-color-hover: var(--fg-aqua); --link-external-color: var(--header-blue); --link-external-color-hover: var(--fg-blue); --text-accent: var(--header-blue); --text-accent-hover: var(--header-purple); --link-unresolved-decoration-style: dashed; --link-unresolved-color: var(--header-blue); --link-unresolved-color-hover: var(--header-purple); /* Non-standard */ --link-unresolved-decoration-color: var(--bg-red); --link-unresolved-decoration-color-hover: var(--fg-red); /* Non-standard */ --code-header: #0004; --code-background: var(--bg-dim); --code-normal: var(--text-muted); --code-inline: var(--fg-blue); --code-normal: var(--fg); --code-comment: var(--grey1); --code-function: var(--fg-green); --code-important: var(--fg-red); --code-keyword: var(--fg-blue); --code-operator: var(--fg-orange); --code-property: var(--fg-aqua); --code-punctuation: var(--grey1); --code-string: var(--fg-yellow); --code-tag: var(--fg-orange); --code-value: var(--fg-purple); --table-background: var(--bg2); --table-column-alt-background: unset; --table-row-alt-background: var(--bg1); --table-header-background: var(--bg-green); --table-header-background-hover: var(--bg-green); --table-row-background-hover: var(--bg4); --interactive-before: var(--bg4); --interactive-accent: var(--header-aqua); --interactive-accent-hover: var(--header-blue); --text-highlight-bg: var(--bg-yellow); --heading-formatting: ; --tag-color: var(--header-blue); --tag-background: hsla(var(--tag-color-hsl), 0.1); --tag-background-hover: hsla(var(--tag-color-hsl), 0.2); --checkbox-color: var(--fg-blue); --canvas-dot-pattern: var(--color-base-50); /** Headers **/ --h1-color: var(--header-red); --h2-color: var(--header-orange); --h3-color: var(--header-yellow); --h4-color: var(--header-green); --h5-color: var(--header-blue); --h6-color: var(--header-purple); --h1-size: 2.125em; --h2-size: 1.625em; --h3-size: 1.375em; --h4-size: 1.25em; --h5-size: 1.125em; --h6-size: 1em; --h1-line-height: 1.5; --h2-line-height: 1.5; --h3-line-height: 1.5; --h4-line-height: 1.5; --h5-line-height: 1.5; --h6-line-height: 1.5; --h1-weight: 500; --h2-weight: 500; --h3-weight: 500; --h4-weight: 500; --h5-weight: 500; --h6-weight: 500; } /** Mobile mode fixes **/ :root body.is-mobile { --input-shadow-hover: var(--input-shadow); --input-border-width: 1px; --file-margins: 16px 20px; } /* Dark mode */ :root body.is-mobile.theme-dark { --input-shadow: inset 0 1px 1px 0.5px rgba(255, 255, 255, 0.1), 0 2px 4px rgba(0, 0, 0, 0.4); --interactive-normal: var(--color-base-30); --background-modifier-form-field: var(--color-base-25); } /* Light mode */ :root body.is-mobile.theme-light { --input-shadow: inset 0 0 0.5px 1px rgba(0, 0, 0, 0.1), 0 2px 3px rgba(0, 0, 0, 0.1); --interactive-normal: var(--color-base-00); --background-modifier-form-field: var(--color-base-00); } /**** Theme Colors ****/ /** Dark Theme (Soft) **/ :root .theme-dark { --bg-dim-rgb: 41, 49, 54; --bg-dim: #293136; --bg0: #333c43; --bg1: #3a464c; --bg2: #434f55; --bg3: #4d5960; --bg4: #555f66; --bg5: #5d6b66; --bg-visual: #5c3f4f; --bg-red: #59464c; --bg-green: #48584e; --bg-blue: #3f5865; --bg-yellow: #55544a; --fg: #d3c6aa; --fg-red: #e67e80; --fg-orange: #e69875; --fg-yellow: #dbbc7f; --fg-green: #a7c080; --fg-aqua: #83c092; --fg-blue: #7fbbb3; --fg-purple: #ff8c69; --header-red: #da6362; --header-orange: #d77f48; --header-yellow: #bf983d; --header-green: #899c40; --header-aqua: #569d79; --header-blue: #5a93a2; --header-purple: #b87b9d; --grey0: #7a8478; --grey1: #859289; --grey2: #9da9a0; --statusline0: #a7c080; --statusline1: #d3c6aa; --statusline2: #e67e80; --bg0-rgb: 51, 60, 67; --background-embed-transparent: rgba(62, 75, 80, 0.7); --tag-color-hsl: 254, 80%, 68%; } /** Light Theme (Hard) **/ :root .theme-light { --bg-dim-rgb: 242, 239, 223; --bg-dim: #f2efdf; --bg0: #fffbef; --bg1: #f8f5e4; --bg2: #f2efdf; --bg3: #edeada; --bg4: #e8e5d5; --bg5: #bec5b2; --bg-visual: #ded8db; /* Changed for visibility */ --bg-red: #ffe7de; --bg-green: #f3f5d9; --bg-blue: #ecf5ed; --bg-yellow: #fef2d5; --fg: #5c6a72; --fg-red: #f85552; --fg-orange: #f57d26; --fg-yellow: #dfa000; --fg-green: #8da101; --fg-aqua: #35a77c; --fg-blue: #3a94c5; --fg-purple: #df69ba; --header-red: #f85552; --header-orange: #f88f44; --header-yellow: #f3b931; --header-green: #abd113; --header-aqua: #569d79; --header-blue: #5a93a2; --header-purple: #dd2b8d; --grey0: #a6b0a0; --grey1: #939f91; --grey2: #829181; --statusline0: #93b259; --statusline1: #708089; --statusline2: #e66868; --bg0-rgb: 255, 251, 239; --background-embed-transparent: rgb(238 236 213 / 70%); /* Using bg2 */ --tag-color-hsl: 254, 80%, 68%; } /**** General UI ****/ /** Workspace **/ /* Title bar */ .workspace-leaf .view-header { box-shadow: 0 0 8px -4px var(--divider-color); } /* Title text */ .view-header-title { font-weight: 600; } /* Gutters */ .markdown-source-view.mod-cm6 .cm-gutters { padding-inline-end: var(--file-folding-offset); pointer-events: none; } .cm-gutter .cm-active { color: var(--text-normal); } /* Make gutters not affect the content flow for unstacked tabs */ .workspace-tabs:not(.mod-stacked) .mod-cm6.is-readable-line-width:not(.full-width), body:not(.stacked-panes-gutter-disable-float) .workspace-tabs.mod-stacked .mod-cm6.is-readable-line-width { .cm-contentContainer { display: grid !important; } :is(.cm-gutters, .cm-content) { grid-area: 1 / -1; } .cm-content { width: unset !important; } .cm-gutters { justify-self: left; translate: -100% 0; } } /* Smaller margins for stacked tabs */ .mod-stacked { --file-margins: 32px 12px; } /* Collapse indicator */ .markdown-source-view.mod-cm6 .cm-fold-indicator .collapse-indicator { padding-right: 0.45rem; } .markdown-source-view.mod-cm6 .cm-line:not(.cm-active):not(.HyperMD-header):not( .HyperMD-task-line, .HyperMD-list-line-1 ) .cm-fold-indicator .collapse-indicator { padding-right: 0.75rem; } div ul.has-list-bullet ul.has-list-bullet .collapse-indicator { margin-left: -2.75rem; } .markdown-rendered .list-collapse-indicator { padding-right: 1rem; } /* Hide extra tab dividers */ .workspace-tab-header:has(+ .is-active) > .workspace-tab-header-inner::after { visibility: hidden; } /* Change outliner navigation highlight */ .is-flashing { background-color: transparent !important; color: inherit; border-radius: 0; box-shadow: 0 4px 0 var(--text-highlight-bg); } /* Fix gutter number vertical cutoff */ :root .cm-lineNumbers .cm-gutterElement { line-height: normal !important; } /** Menus **/ /* Checkboxes and dropdowns */ select:hover, select:focus-within, button:hover { transition: background-color var(--anim-duration-superfast) ease-out; } /* Modal transitions */ body:not(.disable-menu-animations, .enable-menu-blur) .modal-bg { animation: fade-in var(--anim-duration-superfast) linear; } body:not(.disable-menu-animations) :is(.modal, .prompt) { animation: fade-in var(--anim-duration-superfast), slide-in var(--anim-duration-superfast) ease-out; } @keyframes slide-in { 0% { translate: 0 4px; } 100% { translate: 0 0; } } @keyframes fade-in { 0% { opacity: 0; } 100% { opacity: 1; } } /** Sidebars **/ /* Stop the scrollbar from causing layout shifts */ .nav-files-container { scrollbar-gutter: stable; padding-right: var(--size-2-2); } /** Canvas **/ /* Changed in Style Settings */ /** Loading Screen **/ /* Text trees */ .progress-bar-message::before { content: "🌲 "; } .progress-bar-message::after { content: " 🌲"; } /* Progress bars */ .progress-bar-indicator { height: 12px; overflow-y: hidden; width: min(90vw, 1200px); } .progress-bar-indicator, .progress-bar-subline { border-radius: 12px; } .progress-bar-line, .progress-bar-subline { overflow: hidden; height: 100%; } /**** Markdown ****/ /** Headers **/ /* Fix update formatting coloring */ .cm-formatting-header { color: unset; } /* Remove top padding from the first element in reading mode (presumably a header) */ .mod-header + div:has(pre.frontmatter) + div > *, .mod-header + div > * { margin-top: 0; } /** Emphasis **/ /* Bold and italic */ .cm-s-obsidian span.cm-strong, strong, .cm-s-obsidian span.cm-em, em, .language-markdown :is(.bold, .italic) > *, span:is(.cm-em, .cm-strong) + .cm-widgetBuffer + span.math, span.math:has(+ .cm-widgetBuffer + span:is(.cm-em, .cm-strong)) { color: var(--fg-purple); } /* Strike through */ .cm-strikethrough, del { color: var(--text-faint); } /** Code **/ /* Inline code */ .cm-s-obsidian span.cm-inline-code:not(.cm-formatting):not( .cm-formatting + .cm-inline-code ), .markdown-rendered code { background-color: var(--code-background); padding: 0.1em 0.25em; border-radius: var(--radius-s); font-size: var(--code-size) !important; /* required for lp */ } /* Fix other elements' inline code */ .cm-s-obsidian span.cm-inline-code:not(.cm-formatting), .markdown-rendered :is(table, p, li, .callout-title-inner, h1, h2, h3, h4, h5, h6) code { color: var(--code-inline); } /* Codeblock */ .cm-s-obsidian pre.HyperMD-codeblock { background-color: var(--code-background); } pre { border: 1px solid var(--code-header); } .HyperMD-codeblock { border-color: var(--code-header); border-style: solid; border-width: 0 1px 0; } .HyperMD-codeblock-begin { border-width: 1px 1px 0; } .HyperMD-codeblock-end { border-width: 0 1px 1px; } /* Disable wrap on language blocks */ .markdown-reading-view .markdown-preview-view pre:not(.frontmatter) code { white-space: pre; } /* Codeblock top bars */ pre[class^="language-"] { padding-top: calc( var(--size-4-2) + var(--code-size) * var(--line-height-normal) + 1px ); } pre[class^="language-"]::before { content: ""; position: absolute; top: 0; right: 0; left: 0; height: calc(var(--code-size) * var(--line-height-normal)); background-color: var(--code-header); } .HyperMD-codeblock-begin-bg:not(:has(> .code-block-flair > *)):has( > .code-block-flair ) { overflow: hidden; &::before { content: ""; position: absolute; inset: 0; background-color: var(--code-header); /* border-radius: 4px 4px 0 0; */ } } /* Codeblock language labels */ pre[class^="language-"]::after { content: attr(class); position: absolute; top: 0; right: 6px; padding: 0 4px; height: calc(1em * var(--line-height-normal)); display: flex; place-items: center; color: var(--text-muted); font-size: 0.875em; } .markdown-source-view.mod-cm6 .code-block-flair:not(:has(> svg)) { top: 0; padding: 0 4px; height: calc(1em * var(--line-height-normal)); display: flex; place-items: center; font-family: var(--font-monospace); font-size: 1em; } .markdown-rendered pre[class^="language-"] button.copy-code-button { top: calc(6px + var(--code-size) * var(--line-height-normal)); } pre.language-applescript::after { content: "AppleScript"; } pre.language-armasm::after, pre.language-arm-asm::after { content: "ARM Assembly"; } pre.language-bash::after { content: "Bash"; } pre.language-c::after { content: "C"; } pre.language-cpp::after { content: "C++"; } pre.language-cs::after { content: "C#"; } pre.language-css::after { content: "CSS"; } pre.language-flow::after { content: "Flow"; } pre.language-git::after { content: "GIT"; } pre.language-haskell::after { content: "Haskell"; } pre.language-html::after { content: "HTML"; } pre.language-ini::after { content: "INI"; } pre.language-java::after { content: "JAVA"; } pre.language-javascript::after { content: "JavaScript"; } pre.language-js::after { content: "JavaScript"; } pre.language-json::after { content: "JSON"; } pre.language-lua::after { content: "Lua"; } pre.language-makefile::after { content: "Makefile"; } pre.language-md::after, pre.language-markdown::after { content: "Markdown"; } pre.language-matlab::after { content: "MATLAB"; } pre.language-nginx::after { content: "Nginx"; } pre.language-node::after { content: "Node"; } pre.language-php::after { content: "PHP"; } pre.language-py::after { content: "Python"; } pre.language-python::after { content: "Python"; } pre.language-r::after { content: "R"; } pre.language-react::after { content: "React"; } pre.language-regex::after { content: "Regex"; } pre.language-rust::after { content: "Rust"; } pre.language-sequence::after { content: "Sequence"; } pre.language-shell::after { content: "Shell"; } pre.language-sql::after { content: "SQL"; } pre.language-text::after { content: "Plain Text"; } pre.language-ts::after { content: "TypeScript"; } pre.language-toml::after { content: "TOML"; } pre.language-txt::after { content: "Plain Text"; } pre.language-typescript::after { content: "TypeScript"; } pre.language-url::after { content: "URL"; } pre.language-vim::after { content: "vimrc"; } pre.language-xml::after { content: "XML"; } pre.language-yaml::after { content: "YAML"; } pre.language-zsh::after { content: "zsh"; } /** Links **/ :root a { transition: opacity 0s; } /* Unresolved links */ :root:root a.is-unresolved:hover, .markdown-source-view.mod-cm6 .is-unresolved .cm-underline:hover { text-decoration-color: var(--link-unresolved-decoration-color-hover); color: var(--link-unresolved-color-hover); } .cm-s-obsidian span.cm-hmd-internal-link:hover { text-decoration: none; } /** Lists **/ .markdown-source-view span.list-bullet { padding-right: 0.3rem; } .markdown-preview-view .list-bullet::after { font-size: 19px; } .markdown-source-view .list-bullet::after { font-size: 19px; } /* Loose lists in reading mode */ :root:root:root li > p { margin-block: var(--p-spacing); } /* Fix list bullets and indentation lines offset for reading mode */ .markdown-rendered .list-bullet { margin-left: -12px; } :root .show-indentation-guide li :is(ul, ol)::before { left: -11px; } ul > .task-list-item { margin-left: 6px; } .show-indentation-guide .contains-task-list.has-list-bullet::before { margin-left: -6px; } /* Fix ordered list checkboxes */ ol > li.task-list-item.is-checked[data-task="x"] { text-decoration: var(--checklist-done-decoration); color: var(--checklist-done-color); } /* Indentation lines*/ .cm-indent::before, ul::before, ol::before { opacity: 0.5; border-right: 2px solid var(--fg-blue) !important; } /* Checkbox list */ .markdown-source-view.mod-cm6 input.task-list-item-checkbox { border-width: 1px; } input.task-list-item-checkbox:hover { border-color: var(--header-blue); } input.task-list-item-checkbox:checked { box-shadow: inset 0 0 0 calc(0.0625 * var(--font-text-size)) var(--background-primary); transition: box-shadow 0s; } input.task-list-item-checkbox:checked::after { -webkit-mask-size: calc(50% + 1px); } .checkbox-container { background-color: var(--interactive-before); transition: background-color var(--anim-duration-moderate) cubic-bezier(0, 0.5, 0, 1); } .checkbox-container:after { background-color: var(--interactive-accent); } .checkbox-container.is-enabled:after { background-color: var(--bg3); } /** Blockquotes **/ .markdown-preview-view blockquote { padding-block: 0.25em; padding-left: 1.7ch; } /* Make blockquotes work in source view */ .markdown-source-view:not(.is-live-preview) .HyperMD-quote { background-color: var(--background-embed); border-left: var(--blockquote-border-thickness) solid var(--blockquote-border-color); } .markdown-source-view:not(.is-live-preview) .cm-formatting-quote:not(.cm-formatting-quote-1) { position: relative; } .markdown-source-view:not(.is-live-preview) .cm-formatting-quote:not(.cm-formatting-quote-1)::before { content: "\200b"; position: absolute; width: 1px; border-left: var(--blockquote-border-thickness) solid var(--blockquote-border-color); color: transparent; left: -2px; } /** Tables **/ .markdown-rendered table { --line-height-tight: 1.375; } /* Fix table margin collapse bug and add table margins */ /* They keep changing this and it breaks the theme every time, I'm quite annoyed... */ .markdown-preview-view .block-language-dataview, .markdown-preview-view div:not([class]):has(> table) { overflow: unset !important; > table { margin-block: var(--p-spacing); } } /* Fix borders from Dataview */ .table-view-table > thead > tr > th { border-left: var(--table-header-border-width) solid var(--table-header-border-color); border-top: var(--table-header-border-width) solid var(--table-header-border-color); border-right: var(--table-header-border-width) solid var(--table-header-border-color); } :root .table-view-table thead > tr > th { border-width: var(--table-border-width) 0 3px var(--table-border-width); } :root .table-view-table thead > tr > th:last-child { border-right-width: var(--table-border-width); } :root .table-view-table tbody > tr + tr > td { border-top: var(--table-border-width) solid var(--table-border-color); } :root .table-view-table tbody > tr > td { border-left: var(--table-border-width) solid var(--table-border-color); } :root .table-view-table tbody > tr > td:last-child { border-right: var(--table-border-width) solid var(--table-border-color); } :root .table-view-table tbody > tr:last-child > td { border-bottom: var(--table-border-width) solid var(--table-border-color); } /** Tags **/ .cm-s-obsidian span.cm-hashtag, a.tag { font-weight: 500; } /* Remove spacing between h1 + tag */ div:has(+ div > p > .tag) > h1 { margin-bottom: 0; } div:has(h1) + div p:has(.tag) { margin-top: 0; } /** Embeds **/ .markdown-embed { --icon-opacity: 0.25; padding-inline: 10px; padding-block: 0.25rem; } /* Fix overflow blocks ruining margin collapse */ .markdown-embed .markdown-preview-sizer > div { overflow-x: unset !important; } /* Add a shadow to embeds */ .cm-embed-block { box-shadow: 0 4px 14px -2px hsla(0, 0%, 0%, 0%); transition: box-shadow var(--anim-duration-fast) ease-out; } /* Reduce embed edit button opacity */ .markdown-source-view.mod-cm6 .cm-embed-block:hover .edit-block-button { opacity: 0.5; } .markdown-source-view.mod-cm6 .cm-embed-block:hover .edit-block-button:hover { opacity: 1; } /*Embed titles*/ .markdown-embed-title { display: none; } /* Embed backgrounds */ .internal-embed.is-loaded:not(.image-embed, [src$=".excalidraw"]) { background-color: var(--blockquote-background-color); } /* Embed first header */ .markdown-embed-content .markdown-preview-section .mod-header + div :is(h1, h2, h3, h4, h5, h6) { margin-top: 0; } /* Embed last p */ .markdown-embed-content .markdown-preview-section > div:last-child > p { margin-bottom: 0; } /* This snippet adds modification in the [[markdown link|modification]] format */ /* Clean embed (no background, padding, borders) */ .markdown-embed[alt~="clean"] { --blockquote-background-color: transparent; border: none; padding: 0; } /* Removes the first title */ .markdown-embed[alt~="no-title"] .markdown-preview-section > :is(.mod-header, .mod-header + div:has(.frontmatter)) + div:has(h1, h2, h3, h4, h5, h6) { display: none; } /* Removes the embed icon */ .markdown-embed[alt~="no-link"] .markdown-embed-link { display: none; } /** YAML **/ /* Frontmatter error */ .markdown-rendered .frontmatter.mod-failed:after { height: 0; } .mod-error { font-weight: 500; } /**** Graph ****/ .graph-view.color-circle, .graph-view.color-fill-highlight { color: var(--text-muted); } .graph-view.color-arrow { color: var(--text-normal); opacity: 0.5; } .graph-view.color-line { color: var(--background-modifier-border); } .graph-view.color-fill-highlight, .graph-view.color-line-highlight { color: var(--interactive-accent); } .graph-view.color-fill-unresolved { color: var(--text-muted); opacity: 0.4; } /**** Mobile ****/ /* Add shadow to mobile navbar */ .mobile-navbar { box-shadow: 0 0 8px -4px var(--divider-color); } /* Remove new tab button backgrounds */ .is-mobile .empty-state-action { background-color: unset; } /**** Cursor ****/ .cm-cursorLayer .cm-cursor { } /* animation of the blinking */ .cm-cursorLayer { /* deactivate built-in animation from CodeMirror */ animation-name: none !important; /* important needed */ } .cm-cursorLayer .cm-cursor-secondary { border-left-color: var(--text-accent) !important; animation-iteration-count: infinite; animation-duration: 1200ms; animation-timing-function: steps(1); animation-name: cm-blink; } /* Vim mode cursor */ .cm-editor.cm-focused .cm-fat-cursor { background: var(--fg); color: var(--bg0); } .cm-editor:not(.cm-focused) .cm-fat-cursor { outline-color: var(--fg); } /**** Style Settings ****/ /* @settings name: Everforest Enchanted id: everforest-enchanted-theme collapsed: false settings: - id: test-main-description title: Welcome! description: | Use these settings to adjust basic extra settings or various extra elements of the theme. Visit the [GitHub Repo](https://github.com/FireIsGood/obsidian-everforest-enchanted) for more information. type: info-text markdown: true - id: editor-settings title: Editor description: Folders, line length, line numbers, menu modal blur type: heading level: 1 collapsed: true - id: folder-settings title: Folders type: heading level: 2 collapsed: true - id: highlighted-folders title: Enable highlighted active folders description: Adds a background on opened folders. type: class-toggle - id: line-length-settings title: Line Length type: heading level: 2 collapsed: true - id: readable-line-length-custom title: Line length description: Sets a custom readable line width in pixels. type: variable-number default: 700 format: px - id: wide-width-readable-line-length-custom title: Wide Line length description: Sets a custom readable line width for the CSS class "wide-width" in pixels. type: variable-number default: 1000 format: px - id: gutter-settings title: Line Numbers type: heading level: 2 collapsed: true - id: stacked-panes-gutter-disable-float title: Disable stacked tabs floating line numbers description: Disables custom line number floating in the stacked tab mode. This makes the line numbers shift over the content in stacked tabs. Use this if your panes are too thin to show them. type: class-toggle - id: menu-blur-settings title: Menu modals type: heading level: 2 collapsed: true - id: disable-menu-animations title: Disable menu animations description: Disables the floating-up animation of modal menus (e.g. settings, command palette). type: class-toggle - id: enable-menu-blur title: Enable menu blur description: Blur the content behind modal menus (e.g. settings, command palette). type: class-toggle - id: menu-blur-radius title: Menu blur radius description: The amount to blur in pixels. type: variable-number default: 5 format: px - id: vim-cursor-settings title: Vim type: heading level: 2 collapsed: true - id: vim-curor-animate title: Animate vim cursor description: Adds an animation when moving the vim cursor. type: class-toggle - id: vim-cursor-speed title: Vim cursor speed description: Speed at which the cursor will move type: variable-select default: var(--anim-duration-superfast) options: - label: FTL value: 30ms - label: Light speed value: 45ms - label: Fast value: 55ms - label: Normal value: var(--anim-duration-superfast) - label: Slow value: var(--anim-duration-fast) - label: Very slow value: var(--anim-duration-moderate) - label: Snail speed value: var(--anim-duration-slow) - label: Molases in January value: 1000ms - label: 0 degrees kelvin value: 5s - label: The seconds hand of the analogue clock in your least favorite middle school class value: 20s - label: Zeno's paradox value: 60s - id: element-settings title: Elements description: Canvas, headers, image embeds, links, lists, math blocks, tables type: heading level: 1 collapsed: true - id: canvas-settings title: Canvas type: heading level: 2 collapsed: true - id: canvas-dot-size title: Canvas - Background dot size description: The size of dots on the canvas. It starts breaking past 10. type: variable-number default: 0.7 format: px - id: header-settings title: Headers type: heading level: 2 collapsed: true - id: h1-settings title: Header 1 settings type: heading level: 3 collapsed: true - id: h1-underline title: Headers - h1 underline description: Enable h1 underline. type: class-toggle default: false - id: h1-underline-style title: Headers - h1 underline style description: Change style of the h1 underline type: variable-select default: solid options: - label: Solid value: solid - label: Dotted value: dotted - label: Dashed value: dashed - id: h2-settings title: Header 2 settings type: heading level: 3 collapsed: true - id: h2-underline title: Headers - H2 underline description: Enable h2 underline. type: class-toggle default: false - id: h2-underline-style title: Headers - H2 underline style description: Change style of the h2 underline type: variable-select default: solid options: - label: Solid value: solid - label: Dotted value: dotted - label: Dashed value: dashed - id: h3-settings title: Header 3 settings type: heading level: 3 collapsed: true - id: h3-underline title: Headers - h3 underline description: Enable h3 underline. type: class-toggle default: false - id: h3-underline-style title: Headers - h3 underline style description: Change style of the h3 underline type: variable-select default: solid options: - label: Solid value: solid - label: Dotted value: dotted - label: Dashed value: dashed - id: h4-settings title: Header 4 settings type: heading level: 3 collapsed: true - id: h4-underline title: Headers - h4 underline description: Enable h4 underline. type: class-toggle default: false - id: h4-underline-style title: Headers - h4 underline style description: Change style of the h4 underline type: variable-select default: solid options: - label: Solid value: solid - label: Dotted value: dotted - label: Dashed value: dashed - id: h5-settings title: Header 5 settings type: heading level: 3 collapsed: true - id: h5-underline title: Headers - h5 underline description: Enable h5 underline. type: class-toggle default: false - id: h5-underline-style title: Headers - h5 underline style description: Change style of the h5 underline type: variable-select default: solid options: - label: Solid value: solid - label: Dotted value: dotted - label: Dashed value: dashed - id: h6-settings title: Header 6 settings type: heading level: 3 collapsed: true - id: h6-underline title: Headers - h6 underline description: Enable h6 underline. type: class-toggle default: false - id: h6-underline-style title: Headers - h6 underline style description: Change style of the h6 underline type: variable-select default: solid options: - label: Solid value: solid - label: Dotted value: dotted - label: Dashed value: dashed - id: image-embed-settings title: Image Embeds type: heading level: 2 collapsed: true - id: image-embed-enable-zoom title: Image Embeds - Enable zoom description: Enable zooming in on images by clicking on them. Just like minimal! Note that mobile Obsidian already has this. type: class-toggle - id: image-embed-no-drag title: Image Embeds - Disable dragging description: Stop zoomed images from being dragged around. This breaks the blur keyword. type: class-toggle - id: image-embed-stretch title: Image Embeds - Stretch all images to fit the full width description: Makes all images stretch to fit the full width by default. Added as an option to revert behavior. type: class-toggle - id: link-settings title: Links type: heading level: 2 collapsed: true - id: external-link-remove-icon title: Links - Remove external link icon description: Removes the link icon from external links. type: class-toggle - id: list-settings title: Lists type: heading level: 2 collapsed: true - id: list-indent-custom title: Lists - List indent size description: The size of list item indents. The default value set here of 28px mimics the appearance of editing mode. If you want a more default experience, the default theme uses 2.25em which is essentially 36px. Currently does not work as intended due to JS changes in Obsidian 1.5 which is sad... There are technically workarounds but they would not be very clean. type: variable-number default: 28 format: px - id: math-settings title: Math blocks type: heading level: 2 collapsed: true - id: disable-math-outline title: Math blocks - Disable outline description: Removes the outline around math blocks. type: class-toggle - id: table-settings title: Tables type: heading level: 2 collapsed: true - id: centered-tables title: Tables - Center alignment description: Aligns tables to the center. type: class-toggle - id: full-width-tables title: Tables - Full width description: Makes tables fit the full width. type: class-toggle - id: rounded-tables title: Tables - Rounded corners description: Adds a rounded effect to table corners. Automatically disabled when a table has rowspan as it is not possible to guarantee the correct corners are rounded. type: class-toggle - id: rounded-tables-radius title: Tables - Rounded corners radius description: The corner radius of rounded tables. You may need to reload tabs to see the effect. type: variable-number default: 8 format: px - id: extra-appearance-settings title: Extras description: Background images, Stacked panes with a count, visual parity between modes type: heading level: 1 collapsed: true - id: background-image title: Background Image type: heading level: 2 collapsed: true - id: background-image-description title: Info description: | Adds background images. This is easiest to do with an external URL. If you want to use local images for offline access, you'll have to use a snippet. Check the [GitHub Repo documentation](https://github.com/FireIsGood/obsidian-everforest-enchanted/blob/main/custom_background_image.md) for more information. type: info-text markdown: true - id: background-image-enabled title: Background Image description: Enables the background image. type: class-toggle - id: background-image-dark-url title: Dark Mode Background URL description: Set an online background image. type: variable-text default: url("http://") - id: background-image-light-url title: Light Mode Background URL description: Set an online background image. type: variable-text default: url("http://") - id: background-image-position title: Background Position description: Change where the image is centered. type: variable-select default: center options: - label: Center value: center - label: Top value: top - label: Bottom value: bottom - label: Left value: left - label: Right value: right - label: Top Left value: top left - label: Top Right value: top right - label: Bottom Left value: bottom left - label: Bottom Right value: bottom right - id: pane-opacity title: Pane Opacity description: How opaque page backgrounds are. type: variable-number-slider default: 0.85 min: 0 max: 1 step: 0.05 - id: ui-opacity title: UI Opacity description: How opaque UI backgrounds are. type: variable-number-slider default: 0.85 min: 0 max: 1 step: 0.05 - id: tab-opacity title: Tab Opacity description: How opaque STACKED TAB backgrounds are. type: variable-number-slider default: 0.85 min: 0 max: 1 step: 0.05 - id: background-image-fun title: Fun Settings type: heading level: 3 collapsed: true - id: background-image-pane-view title: Pane view description: Changes pages to be panes on a transparent background. BEST USED WITH UI OPACITY 0! type: class-toggle - id: custom-stacked-panes title: Stacked Pane Count type: heading level: 2 collapsed: true - id: custom-stacked-panes-description title: Info description: | This setting turns stacked panes from a pixel width to a number visible on screen at once. Check the [GitHub Repo documentation](https://github.com/FireIsGood/obsidian-everforest-enchanted/blob/main/custom_stacked_panes.md) for more information. type: info-text markdown: true - id: custom-stacked-panes-enabled title: Custom Stacked Panes description: Changes stacked panes to fit a certain number on screen instead of using pixel values. type: class-toggle - id: custom-stacked-panes-count title: Pane Count description: The number of panes to show up at once. type: variable-number-slider default: 2 min: 1 max: 5 step: 1 - id: visual-parity title: Visual Parity type: heading level: 2 collapsed: true - id: visual-parity-description title: Info description: | Changes reading mode to match editing mode visually. This mainly modifies the sizes of margins and makes the top element not have margin to simulare how it works in editing mode. type: info-text markdown: true - id: visual-parity-enabled title: Visual Parity description: Enables visual parity. type: class-toggle */ /** Improve style setting appearance **/ /* Padding on the bottom */ [data-type="style-settings"] .view-content > div:last-child, .vertical-tab-content > div:has(.style-settings-heading):last-child { padding-bottom: 400px; } /* Remove default margins */ [data-id="everforest-enchanted-theme"] + .style-settings-container .setting-item-heading { margin-top: 0; margin-bottom: 0; } /* Style headings */ [data-id="everforest-enchanted-theme"] + .style-settings-container .setting-item-heading { border-color: var(--setting-border-color); } .setting-item-heading > .setting-item-info > .setting-item-name { color: var(--setting-border-color) !important; } /* Style heading containers */ [data-id="everforest-enchanted-theme"] + .style-settings-container .setting-item-heading + .style-settings-container { margin-top: 2px; padding-top: 16px; padding-left: 25px; border-width: 0 0 1px 1px; border-style: dashed; border-color: var(--setting-border-color); } /* Style the carat */ .style-settings-collapse-indicator { color: var(--setting-border-color); } /* Modify the style of setting items */ .view-content .style-settings-container :is(.setting-item-control:has(input), input[type="text"]) { width: 100%; place-content: flex-start; } /* Heading colors */ /* Yellow skipped for contrast. There will hopefully never be 6 levels of indentation */ [data-level="1"], [data-level="1"] + .style-settings-container { --setting-border-color: var(--header-red); --setting-icon-color: var(--fg-red); } [data-level="2"], [data-level="2"] + .style-settings-container { --setting-border-color: var(--header-orange); --setting-icon-color: var(--fg-orange); } [data-level="3"], [data-level="3"] + .style-settings-container { --setting-border-color: var(--header-green); --setting-icon-color: var(--fg-green); } [data-level="4"], [data-level="4"] + .style-settings-container { --setting-border-color: var(--header-blue); --setting-icon-color: var(--fg-blue); } [data-level="5"], [data-level="5"] + .style-settings-container { --setting-border-color: var(--header-purple); --setting-icon-color: var(--fg-purple); } /** Editor Settings **/ /* Highlighted folders */ body.highlighted-folders .nav-folder:not(.is-collapsed, .mod-root) { border-radius: var(--radius-s); background-color: rgba(var(--mono-rgb-100), 0.05); } /* Menu blur */ body:not(.is-translucent).enable-menu-blur .modal-bg { backdrop-filter: blur(var(--menu-blur-radius, 5px)); opacity: 1 !important; } /* Vim cursor options */ body.vim-curor-animate .cm-fat-cursor { transition: left var(--vim-cursor-speed, var(--anim-duration-superfast)) cubic-bezier(0.39, 0.575, 0.565, 1), top var(--vim-cursor-speed, var(--anim-duration-superfast)) cubic-bezier(0.39, 0.575, 0.565, 1); } /** Element Settings **/ /* Custom dot pattern size (style settings) */ .canvas-background > pattern > circle { cx: var(--canvas-dot-size, 0.7); cy: var(--canvas-dot-size, 0.7); r: var(--canvas-dot-size, 0.7); } /* Header underlines */ /* H1 underline option */ body.h1-underline h1, body.h1-underline .HyperMD-header-1.cm-line { border-bottom: 2px var(--h1-underline-style, solid) var(--background-modifier-border); padding-bottom: 2px; } /* H2 underline option */ body.h2-underline h2, body.h2-underline .HyperMD-header-2.cm-line { border-bottom: 2px var(--h2-underline-style, solid) var(--background-modifier-border); padding-bottom: 2px; } /* H3 underline option */ body.h3-underline h3, body.h3-underline .HyperMD-header-3.cm-line { border-bottom: 2px var(--h3-underline-style, solid) var(--background-modifier-border); padding-bottom: 2px; } /* H4 underline option */ body.h4-underline h4, body.h4-underline .HyperMD-header-4.cm-line { border-bottom: 2px var(--h4-underline-style, solid) var(--background-modifier-border); padding-bottom: 2px; } /* H5 underline option */ body.h5-underline h5, body.h5-underline .HyperMD-header-5.cm-line { border-bottom: 2px var(--h5-underline-style, solid) var(--background-modifier-border); padding-bottom: 2px; } /* H6 underline option */ body.h6-underline h6, body.h6-underline .HyperMD-header-6.cm-line { border-bottom: 2px var(--h6-underline-style, solid) var(--background-modifier-border); padding-bottom: 2px; } /* External links */ body.external-link-remove-icon { & .cm-formatting.external-link { display: none; } & a.external-link { background-image: none; padding-right: unset; } } /* Image zoom */ body.image-embed-enable-zoom { & .image-embed { & img { cursor: zoom-out; } &:active { --zoom-embed-size: min( 90%, calc(var(--readable-line-length-custom, 700px) + 120px) ); display: flex !important; flex-direction: column; align-items: center; justify-content: center; position: fixed; max-width: 100%; width: 100% !important; margin: auto 0 !important; inset: 0; object-fit: contain; z-index: 1; } &:active img { width: var(--zoom-embed-size) !important; max-height: 80%; margin: 0 !important; user-select: none; object-fit: contain; } &:active::after { margin-inline: 0 !important; padding: 1ch; font-size: large; box-sizing: border-box; width: var(--zoom-embed-size) !important; background-color: var(--background-primary); } &:active::before { content: ""; position: absolute; background-color: var(--color-base-00); width: 100%; height: 100%; z-index: -1; opacity: 0.75; } } /* Option to disable dragging */ &.image-embed-no-drag .image-embed:active img { pointer-events: none; } /* Hacky fix for callouts */ & .cm-embed-block.cm-callout:has(.image-embed:active) { contain: none !important; } } /* List indent size */ /* Set in the body selector at the top */ /* Math */ /* Outlines for math blocks (enabled by default) */ body:not(.disable-math-outline) :is( div.math-block, span.math-block > mjx-container, .math.math-block.cm-embed-block ) { border: 1px solid var(--bg5); border-radius: 5px; } /* Tables */ /* Centered tables */ body.centered-tables table { margin-inline: auto; } /* Full width tables */ body.full-width-tables table { width: 100%; } /* Rounded tables */ body.rounded-tables :where(table:not(:has([rowspan]))) { border-collapse: separate; border-spacing: 0; & :is(td, th) { border-width: 0 var(--table-border-width) var(--table-border-width) 0; } & th:first-of-type { border-top-left-radius: var(--rounded-tables-radius, 8px); } & th:last-of-type { border-top-right-radius: var(--rounded-tables-radius, 8px); } & tr:last-of-type td:first-of-type { border-bottom-left-radius: var(--rounded-tables-radius, 8px); } & tr:last-of-type td:last-of-type { border-bottom-right-radius: var(--rounded-tables-radius, 8px); } } /** Custom Stacked Panes **/ .custom-stacked-panes-enabled .mod-vertical .mod-stacked .workspace-leaf { max-width: calc( (100% / var(--custom-stacked-panes-count, 2)) - 2.5rem ) !important; width: 100% !important; } /** Custom Background Image **/ .theme-dark { --background-image-url: var(--background-image-dark-url); } .theme-light { --background-image-url: var(--background-image-light-url); } body.background-image-enabled { /* This breaks canvas screenshots! */ --canvas-background: transparent; --background-transparent: rgba( var(--background-primary-rgb), var(--pane-opacity, 0.85) ); --background-partially-transparent: rgba( var(--background-primary-rgb), var(--ui-opacity, 0.85) ); --background-tabs-transparent: rgba( var(--background-primary-rgb), var(--tab-opacity, 0.85) ); } /* Apply the background image */ .background-image-enabled .horizontal-main-container { background-color: var(--background-primary); background-image: var(--background-image-url); background-position: var(--background-image-position, center); background-size: cover; } /* Make panes transparent */ .workspace-tab-container::-webkit-scrollbar-track, .background-image-enabled :is(.mod-root .view-content, .view-header) { background-color: var(--background-transparent) !important; } /* Make workspace UI elements transparent */ .background-image-enabled :is( .mod-root .workspace-tab-header-container, .workspace-ribbon, .workspace-split, .graph-controls ), .workspace-ribbon::before { background-color: var(--background-partially-transparent) !important; } /* Make stacked tab headers transparent */ .background-image-enabled .workspace-tab-container .workspace-tab-header:not(.mod-active), .background-image-enabled .workspace-tab-container .workspace-tab-header.mod-active { background-color: var(--background-tabs-transparent) !important; } /* Remove other backgrounds */ .background-image-enabled :is( .titlebar-button-container, .mod-vertical .workspace-tab-header, .document-search-container, .workspace-leaf, .horizontal-main-container > .workspace, .pdf-sidebar-container, .pdf-container, .pdf-toolbar ), .background-image-enabled .workspace-split:not(.mod-root, .mod-horizontal) .workspace-tab-header-container, .background-image-enabled .workspace-split:not(.mod-left-split, .mod-right-split), .background-image-enabled .workspace-split.mod-left-split .workspace-sidedock-vault-profile { background-color: transparent !important; } /* Fix double side headers */ .background-image-enabled .workspace-tab-header-container { background-color: unset; } /* Remove tabs weird gradients and exterior curves */ .background-image-enabled .workspace-tab-header.is-active::before, .background-image-enabled .workspace-tab-header.is-active::after, .background-image-enabled .view-header-title-container:not(.mod-at-end):after { display: none; } /* Pane view */ .background-image-pane-view .view-content:has(.markdown-reading-view) { background-color: transparent !important; } .background-image-pane-view .view-content .cm-sizer, .background-image-pane-view .view-content > .markdown-reading-view > .markdown-rendered > .markdown-preview-sizer { box-sizing: content-box; padding-inline: 2rem; padding-top: 2rem; border-radius: 1rem; background-color: var(--background-transparent) !important; } .background-image-pane-view .view-content .cm-sizer:has(.cm-gutters) { padding-left: calc(2rem + 24px); } :root .background-image-pane-view .view-header { background-color: var(--background-partially-transparent) !important; } /* New tab page */ :root .background-image-pane-view .view-content:has(> .empty-state) { width: fit-content; height: unset; margin: auto; padding: clamp(2rem, 5vw, 4rem); border-radius: 1rem; } .background-image-enabled .empty-state { position: static; } /** Visual Parity **/ body.visual-parity-enabled { --p-spacing: calc(1.5 * var(--font-text-size)); --heading-spacing: calc(var(--p-spacing) * 1); /* Fix hr elements */ .markdown-rendered hr { margin-block: calc( ( var(--font-text-size, 1rem) * var(--line-height-normal) - var(--hr-thickness) ) / 2 + var(--p-spacing) ); } /* Fix header top margins */ .is-live-preview .cm-content > .HyperMD-header { padding-top: unset; } .markdown-source-view.mod-cm6 .cm-table-widget { padding-block: 0; } /* Fix collapsed headers in live preview */ .HyperMD-header:has(> .is-collapsed) { padding-block: 0 var(--p-spacing); } /* Fix blockquotes */ & :not(blockquote) + blockquote, & .cm-line:not(.HyperMD-quote-1) + .HyperMD-quote-1, & .HyperMD-quote-1:first-child { padding-top: 0.25em !important; } & blockquote:has(+ :not(blockquote)), & .HyperMD-quote-1:has(+ .cm-line:not(.HyperMD-quote-1)), & .HyperMD-quote-1:last-child { padding-bottom: 0.25em !important; } } /**** Extra Fixes ****/ /** Callouts **/ .callout { --callout-content-padding: var(--size-4-2) var(--size-4-4); --callout-content-color: rgba(var(--bg-dim-rgb), 0.3); --callout-border-solid: 1px solid rgba(var(--callout-color), 0.3); --callout-border-dashed: 1px dashed rgba(var(--callout-color), 0.4); padding: 0; border-left: 0.125rem solid rgba(var(--callout-color), 0.7); border-top: var(--callout-border-solid); border-right: var(--callout-border-solid); border-bottom: var(--callout-border-solid); border-radius: 4px; mix-blend-mode: normal !important; } .callout, .cm-callout { box-shadow: 2px 2px 3px #0004; } .callout-title { padding: 0.5rem 0.75rem; gap: 0.5rem; border-radius: 2px 2px 0 0; background-color: rgba(var(--callout-color), 0.2); } .callout.is-collapsible .callout-title { cursor: pointer !important; } .callout-icon svg.svg-icon { color: rgb(var(--callout-color)); } .callout-title-inner { color: color-mix( in srgb, rgb(var(--callout-color)) 70%, var(--color-base-100) ); filter: contrast(2); } .callout-title-inner > * { filter: contrast(0.5); } .callout-fold { margin-left: auto; } .callout-content { border-top: var(--callout-border-dashed); border-radius: 0 0 2px 2px; background-color: rgba(var(--bg-dim-rgb), 0.3); } .callout-content > *:first-child { margin-top: 0; } .callout-content > *:last-child { margin-bottom: 0; } /* Quote callout */ .callout[data-callout="quote"] { display: flex; flex-direction: column-reverse; position: relative; } .callout[data-callout="quote"] .callout-title { background-color: var(--callout-content-color); padding: 0 1ch 1ch; display: block; text-align: right; } .callout[data-callout="quote"] .callout-title .callout-icon { display: none; } .callout[data-callout="quote"] .callout-content { border: none; padding-top: var(--size-4-4); } /* Custom callouts */ /* Uses Material Colors 300-500 + A100 */ .callout[data-callout="math"] { --callout-color: 132, 255, 255; --callout-icon: lucide-sigma; } .callout[data-callout="math"] .callout-content { padding: 0 !important; } .callout[data-callout="math"] .callout-content .math-block { border: none; } .callout[data-callout="graph"] { --callout-color: 255, 152, 0; --callout-icon: lucide-line-chart; } .callout[data-callout="image"] { --callout-color: 234, 128, 252; --callout-icon: lucide-image; } .callout[data-callout="image"] .callout-content { padding: 0 !important; } .callout[data-callout="code"] { --callout-color: 76, 175, 80; --callout-icon: lucide-curly-braces; } .callout[data-callout="code"] .callout-content { padding: 0 !important; } .callout[data-callout="code"] .callout-content > pre { margin-block: 0; background-color: var(--code-background); } /** Image Formatting **/ img { display: block; margin-inline: auto; image-rendering: auto !important; } /* Makes multiple images on the same line appear in a flex grid */ /* Editing mode part */ .cm-line:not(.cm-active):has( .image-embed ~ .image-embed, img:not(.cm-widgetBuffer) ~ img:not(.cm-widgetBuffer) ):not(:has([alt="inline"])), p:has(.image-embed ~ .image-embed, img ~ img):not(:has([alt="inline"])) { display: flex; gap: 0.5rem; align-items: start; & > .image-embed { flex: 1 1 0; display: flex; justify-content: center; } & > .cm-widgetBuffer { display: none !important; } } /* Makes a highlighted line shrink the image */ :root:root .cm-line.cm-active > :is(.image-embed:not([alt="inline"]), img:not([alt="inline"])) { width: 100px; display: inline-block; } /* Centers the image if it is modified */ :root:root .cm-line:not(.cm-active) > .image-embed:not([alt="inline"]), p > .image-embed:not([alt="inline"]) { display: flex; place-items: center; flex-direction: column; } /* Disable changes if images have the alt text is exactly inline */ img[alt="inline"] { display: inline !important; } /* This snippet adds modification in the ![[image link# modification|caption]] format Excalidraw is not supported as it has its own format of using alt text set max width in pixels */ /* Style setting to revert to old behavior */ .image-embed-stretch { --img-width: 100; } /* Sizing */ .image-embed > img:not([width]), span > img[src^="http"]:not([width]) { display: block; width: calc(var(--img-width) / 100 * min(100%, var(--file-line-width))); margin-right: auto; } .image-embed[src~="1/4"], img[src^="http"][alt~="1/4"] { --img-width: 25; } .image-embed[src~="2/5"], img[src^="http"][alt~="2/5"] { --img-width: 40; } .image-embed[src~="1/3"], img[src^="http"][alt~="1/3"] { --img-width: 33.3; } .image-embed[src~="1/2"], img[src^="http"][alt~="1/2"] { --img-width: 50; } .image-embed[src~="3/5"], img[src^="http"][alt~="3/5"] { --img-width: 60; } .image-embed[src~="2/3"], img[src^="http"][alt~="2/3"] { --img-width: 66.6; } .image-embed[src~="3/4"], img[src^="http"][alt~="3/4"] { --img-width: 75; } .image-embed[src~="4/5"], img[src^="http"][alt~="4/5"] { --img-width: 80; } .image-embed[src~="1/1"], .image-embed[src~="full"], img[src^="http"][alt~="1/1"], img[src^="http"][alt~="full"] { --img-width: 100; } /* Alignment */ .image-embed[src~="left"] > img, .markdown-source-view.mod-cm6 .cm-content img[src^="http"][alt~="left"], img[src^="http"][alt~="left"] { margin-left: 0 !important; } .image-embed[src~="right"] > img, .markdown-source-view.mod-cm6 .cm-content img[src^="http"][alt~="right"], img[src^="http"][alt~="right"] { margin-right: 0 !important; } /* External images */ .markdown-source-view.mod-cm6 .cm-content > img { margin-inline: auto !important; } /* Floats */ .markdown-reading-view .image-embed[src~="float"] > img:not([width]) { width: calc( var(--img-width, 100) / 100 * min(100vw, var(--file-line-width)) ); margin: 0 !important; } .markdown-reading-view .image-embed[src~="float"] { clear: both; } .markdown-reading-view .image-embed[src~="float"][src~="left"] { float: left; margin-right: 2%; } .markdown-reading-view .image-embed[src~="float"][src~="right"] { float: right; margin-left: 2%; } /* Image alt text other modifications */ .image-embed[src~="white"] > img, img[src^="http"][alt~="white"] { background-color: white; } .image-embed[src~="black"] > img, img[src^="http"][alt~="black"] { background-color: black; } .image-embed[src~="border"] > img, img[src^="http"][alt~="border"] { border: 0.25rem solid var(--background-modifier-border); } .image-embed[src~="shadow"] > img, img[src^="http"][alt~="shadow"] { box-shadow: 2px 2px 4px #0007; } .image-embed[src~="rounded"] > img, img[src^="http"][alt~="rounded"] { border-radius: 0.5rem; } .image-embed[src~="blur"] > img, img[src^="http"][alt~="blur"] { filter: blur(5px); transition: filter 500ms 250ms ease; } .image-embed[src~="blur"] > img:hover, img[src^="http"][alt~="blur"]:hover { filter: blur(0); } /* Alt text as caption under image */ body:not(.no-image-alttext-caption) .image-embed:not( [alt*=".png"], [alt*=".gif"], [alt*=".jpg"], [alt*=".jpeg"], [alt*=".tiff"], [alt*=".avif"], [alt*=".webp"], [alt="inline"], [width] )::after { content: attr(alt); display: block; color: var(--text-muted); text-align: center; width: calc( var(--img-width, 100) / 100 * min(100%, var(--file-line-width)) ); } /* Align the text boxes correctly */ .image-embed { &::after { margin-inline: auto; } &[src~="left"]::after { margin-inline: 0 auto; } &[src~="right"]::after { margin-inline: auto 0; } :root .markdown-preview-view &[src~="float"]::after { width: 100%; } } /** CSS Classes **/ /* Custom width layouts */ .full-width { --file-line-width: 100%; } .wide-width { --file-line-width: var(--wide-width-readable-line-length-custom, 1000px); } /* Numbered lists to columns in read mode */ .columns :where(div, li) > ol { list-style: none; display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 0.5rem; padding-left: 0; } .columns :where(div, li) > ol > li { outline: 1px solid var(--color-base-40); padding: 0.5rem 0.75rem; } .columns :where(div, li) > ol > li > ul { background: none; } .columns :where(div, li) > ol > li > .list-collapse-indicator { display: none; } .columns :where(div, li) > ol > li > :where(ul, ol):before { border-right: none !important; } /* Custom dashboard */ /* Title at top of the document */ .dashboard { & .markdown-preview-section .title { top: 60px; left: 50%; transform: translateX(-50%); position: absolute; font-size: 26pt !important; font-weight: bolder; letter-spacing: 8px; } & h1 { border-bottom-style: dotted !important; border-width: 1px !important; padding-bottom: 3px !important; } & div > ul:not(.dataview) { list-style: none; display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 0.5rem; padding-left: 0; & > li { outline: 1px solid var(--bg5); padding: 0.5rem 0.25rem; } } & div > ul > li { & > .list-bullet { display: none; } & .list-collapse-indicator { display: none; } & ul:before { border-right: none !important; } } } /** Misc. **/ /* Fix Dataview markers */ .dataview.list-view-ul li { list-style-type: none; } .dataview.list-view-ul li::before { visibility: visible; position: absolute; content: "\200B"; pointer-events: none; border-radius: var(--list-bullet-radius); width: var(--list-bullet-size); height: var(--list-bullet-size); border: var(--list-bullet-border); transform: translate(-0.85em, 0.6em); background-color: var(--list-marker-color); transition: transform 0.15s, box-shadow 0.15s; } .table-view-table > tbody > tr:hover { background-color: var(--table-row-background-hover) !important; } /* Make math display better */ div.math-block { padding-block: 0.125em; } /* Make the weird span ones also work */ span.math-block > mjx-container { padding-block: 1rem; } /* Make MathJax text bigger */ .MJX-TEX { font-size: 110%; } /* Make \overline{} display on higher resolution screens*/ mjx-stretchy-h.mjx-c2013 mjx-ext mjx-c::before { font-weight: 900; } /* Make print break hr elements */ hr.page-break { opacity: 0.5; height: 1.5rem; display: flex; border-top: 4px dotted; background-color: unset; } hr.page-break::before { content: "Page Break"; font-size: 0.75em; margin-inline: auto; } @media print { hr.page-break { visibility: hidden; page-break-after: always; } } /* Fix weird ol bug */ ol > li > p { margin: 0; } /* Make backlinks padding more consistent */ .markdown-preview-view .embedded-backlinks { margin-top: 100px; } /* Fix specific word break difference */ :root .cm-lineWrapping { white-space: unset; }