// The code snippets in this file are derived from the Halcyon theme
// - https://github.com/dbarenholz/halcyon-obsidian?tab=readme-ov-file */
// A huge shout out too to kepano's flexoki color scheme
// - https://github.com/kepano/flexoki-obsidian
// And the great origami theme
// - https://github.com/7368697661/Origami

body.theme-dark {
  --code-background: var(--flexcyon-base-01);
}

body.theme-light {
  --code-background: var(--flexcyon-base-01-02-mix);
}

body {
  /* ------------------------------ */
  --flexcyon-code-variable: var(--flexcyon-base-grey-dark);
  --flexcyon-code-function: var(--flexcyon-yellow);
  --flexcyon-code-operator: var(--flexcyon-orange);
  --flexcyon-code-error: var(--flexcyon-red-salmon);
  --flexcyon-code-keyword: var(--flexcyon-purple-lilac);

  --code-normal: var(--flexcyon-cyan);
  --code-comment: var(--text-faint);
  --code-function: var(--flexcyon-code-function);
  --code-important: var(--flexcyon-code-error);
  --code-keyword: var(--flexcyon-code-keyword);
  --code-property: var(--text-muted);
  --code-operator: var(--flexcyon-code-operator);
  --code-punctuation: var(--flexcyon-purple-lilac);
  --code-string: var(--flexcyon-lime-green);
  --code-tag: var(--flexcyon-base-grey-dark);

  --flexcyon-code-file-ext-font-w: 500;
  --flexcyon-codeblock-fmt-ext: lowercase;
  --flexcyon-code-file-ext-prefix: ".";

  .cm-s-obsidian span.cm-inline-code {
    color: var(--flexcyon-orange);
  }

  .cm-def {
    color: var(--flexcyon-yellow);
  }

  :is(
    .cm-comment.cm-hmd-internal-link,
    .cm-comment.cm-link,
    .cm-comment.cm-string
  ) {
    color: var(--code-comment);
  }

  :is(
    .cm-comment.cm-string,
    .cm-comment.cm-hmd-internal-link:hover,
    .cm-comment.cm-link:hover
  ) {
    text-decoration: none;
  }

  .HyperMD-codeblock span.code-block-flair {
    text-transform: var(--flexcyon-codeblock-fmt-ext);
    font-weight: var(--flexcyon-code-file-ext-font-w);
  }
}

mark {
  color: var(--text-normal);
  background-color: var(--text-highlight-bg);
  padding: var(--flexcyon-highlight-verti-padding)
    var(--flexcyon-highlight-horiz-padding);
  border-radius: var(--flexcyon-highlight-border-radius);
  font-weight: 525;
}

body.flexcyon-syntax-catppuccin {
  --flexcyon-code-variable: var(--flexcyon-cyan);
  --flexcyon-code-function: var(--flexcyon-yellow);
  --flexcyon-code-operator: var(--flexcyon-blue);
  --flexcyon-code-error: var(--flexcyon-red-salmon);
  --flexcyon-code-keyword: var(--flexcyon-cyan);

  --code-normal: var(--text-normal);
  --code-comment: var(--text-faint);
  --code-function: var(--flexcyon-code-function);
  --code-important: var(--flexcyon-code-error);
  --code-keyword: var(--flexcyon-code-keyword);
  --code-property: var(--flexcyon-cyan);
  --code-operator: var(--flexcyon-code-operator);
  --code-punctuation: rgba(var(--color-red-rgb), var(--dimmed));
  --code-string: var(--flexcyon-lime-green);
  --code-tag: var(--flexcyon-base-grey-dark);
  --code-value: var(--flexcyon-yellow);

  .cm-def {
    color: var(--flexcyon-blue);
  }
}

body.flexcyon-syntax-lego {
  --flexcyon-code-variable: var(--text-normal);
  --flexcyon-code-function: var(--text-accent);
  --flexcyon-code-operator: var(--flexcyon-pink);
  --flexcyon-code-error: var(--flexcyon-orange);
  --flexcyon-code-keyword: var(--flexcyon-red-salmon);

  --code-normal: var(--text-normal);
  --code-comment: var(--text-faint);
  --code-function: var(--flexcyon-code-function);
  --code-important: var(--flexcyon-code-error);
  --code-keyword: var(--flexcyon-code-keyword);
  --code-property: var(--text-normal);
  --code-operator: var(--flexcyon-code-operator);
  --code-punctuation: var(--text-normal);
  --code-string: var(--flexcyon-cyan);
  --code-tag: var(--flexcyon-base-grey-dark);
  --code-value: var(--text-normal);

  .cm-def {
    color: var(--flexcyon-blue);
  }
}

body.flexcyon-syntax-monochrome {
  --flexcyon-code-variable: var(--text-normal);
  --flexcyon-code-function: var(--text-muted);
  --flexcyon-code-operator: var(--text-normal);
  --flexcyon-code-error: var(--text-muted);
  --flexcyon-code-keyword: var(--text-normal);

  --code-normal: var(--text-normal);
  --code-comment: var(--text-faint);
  --code-function: var(--flexcyon-code-function);
  --code-important: var(--flexcyon-code-error);
  --code-keyword: var(--flexcyon-code-keyword);
  --code-property: var(--text-normal);
  --code-operator: var(--flexcyon-code-operator);
  --code-punctuation: var(--text-normal);
  --code-string: var(--text-normal);
  --code-tag: var(--flexcyon-base-grey-dark);
  --code-value: var(--text-normal);

  .cm-def {
    color: var(--text-normal);
  }
}

body.flexcyon-codeblock-prefix-ext {
  .HyperMD-codeblock span.code-block-flair::before {
    content: var(--flexcyon-code-file-ext-prefix);
  }
}
