/**---------------------**
*!  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: #d699b6;

  --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;
}
