:root {
  color-scheme: dark;

  --cursor: #f3c09a;
  --bg-main: #232025;
  --bg-dim: #322f34;
  --bg-alt: #3b393e;
  --fg-main: #efd5c5;
  --fg-dim: #8f8886;
  --fg-alt: #b0a0cf;
  --bg-active: #5b595e;
  --bg-inactive: #3a373c;
  --border: #635850;

  --red: #ff6f6f;
  --red-warmer: #ff7a5f;
  --red-cooler: #e47980;
  --red-faint: #f3a0a0;
  --green: #51b04f;
  --green-warmer: #7fce5f;
  --green-cooler: #3fc489;
  --green-faint: #a9c99f;
  --yellow: #c0b24f;
  --yellow-warmer: #d09950;
  --yellow-cooler: #deb07a;
  --yellow-faint: #caa89f;
  --blue: #57b0ff;
  --blue-warmer: #80aadf;
  --blue-cooler: #12b4ff;
  --blue-faint: #a0a0cf;
  --magenta: #ffaacf;
  --magenta-warmer: #f498c0;
  --magenta-cooler: #d0b0ff;
  --magenta-faint: #e3b0c0;
  --cyan: #6fb3c0;
  --cyan-warmer: #8fcfd0;
  --cyan-cooler: #65c5a8;
  --cyan-faint: #99bfcf;

  --bg-red-intense: #a02f50;
  --bg-green-intense: #30682f;
  --bg-yellow-intense: #8f665f;
  --bg-blue-intense: #4f509f;
  --bg-magenta-intense: #885997;
  --bg-cyan-intense: #0280b9;

  --bg-red-subtle: #6f202a;
  --bg-green-subtle: #2a532f;
  --bg-yellow-subtle: #62432a;
  --bg-blue-subtle: #3a3e73;
  --bg-magenta-subtle: #66345a;
  --bg-cyan-subtle: #334d69;

  --bg-added: #304a4f;
  --bg-added-faint: #16383f;
  --bg-added-refine: #2f6767;
  --fg-added: #a0d0f0;

  --bg-changed: #51512f;
  --bg-changed-faint: #40332f;
  --bg-changed-refine: #64651f;
  --fg-changed: #dada90;

  --bg-removed: #5a3142;
  --bg-removed-faint: #4a2034;
  --bg-removed-refine: #782a4a;
  --fg-removed: #f0bfcf;

  --bg-mode-line-active: #675072;
  --fg-mode-line-active: #fedeff;
  --bg-completion: #503240;
  --bg-popup: #2e2a31;
  --bg-hover: #795056;
  --bg-hover-secondary: #665f7a;
  --bg-hl-line: #412f4f;
  --bg-paren-match: #885566;
  --bg-err: #501a2d;
  --bg-warning: #4e3930;
  --bg-info: #0f3f4f;
  --bg-region: #544a50;


 --err: var(--magenta-warmer);
  --warning: var(--yellow-warmer);
  --info: var(--cyan);

  --fg-link: var(--yellow-cooler);
  --fg-link-visited: var(--cyan-warmer);
  --name: var(--cyan-warmer);
  --keybind: var(--cyan);
  --identifier: var(--yellow-cooler);
  --fg-prompt: var(--magenta);

  --builtin: var(--magenta-faint);
  --comment: var(--blue-faint);
  --constant: var(--blue-warmer);
  --fnname: var(--cyan-warmer);
  --fnname-call: var(--cyan-faint);
  --keyword: var(--yellow-cooler);
  --preprocessor: var(--cyan-cooler);
  --docstring: var(--yellow-faint);
  --string: var(--red-faint);
  --type: var(--green-faint);
  --variable: var(--magenta);
  --variable-use: var(--magenta-faint);
  --rx-backslash: var(--cyan-cooler);
  --rx-construct: var(--red-cooler);

  --accent-0: var(--yellow-cooler);
  --accent-1: var(--red-cooler);
  --accent-2: var(--magenta-warmer);
  --accent-3: var(--blue-warmer);

  --date-common: var(--magenta-faint);
  --date-deadline: var(--red-cooler);
  --date-deadline-subtle: var(--red-faint);
  --date-event: var(--fg-alt);
  --date-holiday: var(--red-warmer);
  --date-now: var(--fg-main);
  --date-range: var(--fg-alt);
  --date-scheduled: var(--yellow-cooler);
  --date-scheduled-subtle: var(--yellow-faint);
  --date-weekday: var(--magenta);
  --date-weekend: var(--blue-faint);

  --fg-prose-code: var(--blue-warmer);
  --prose-done: var(--cyan-warmer);
  --fg-prose-macro: var(--green-cooler);
  --prose-metadata: var(--fg-dim);
  --prose-metadata-value: var(--fg-alt);
  --prose-table: var(--fg-alt);
  --prose-table-formula: var(--info);
  --prose-tag: var(--yellow-faint);
  --prose-todo: var(--yellow-warmer);
  --fg-prose-verbatim: var(--magenta-warmer);

  --mail-cite-0: var(--yellow-cooler);
  --mail-cite-1: var(--red-cooler);
  --mail-cite-2: var(--cyan-faint);
  --mail-cite-3: var(--green-faint);
  --mail-part: var(--red-faint);
  --mail-recipient: var(--cyan-faint);
  --mail-subject: var(--magenta-warmer);
  --mail-other: var(--magenta-faint);

  --bg-search-static: var(--bg-warning);
  --bg-search-current: var(--bg-yellow-intense);
  --bg-search-lazy: var(--bg-blue-intense);
  --bg-search-replace: var(--bg-red-intense);

  --bg-search-rx-group-0: var(--bg-magenta-intense);
  --bg-search-rx-group-1: var(--bg-green-intense);
  --bg-search-rx-group-2: var(--bg-red-subtle);
  --bg-search-rx-group-3: var(--bg-cyan-subtle);

  --bg-space-err: var(--bg-yellow-intense);

  --rainbow-0: var(--yellow-cooler);
  --rainbow-1: var(--magenta);
  --rainbow-2: var(--blue-warmer);
  --rainbow-3: var(--red-cooler);
  --rainbow-4: var(--magenta-cooler);
  --rainbow-5: var(--green-cooler);
  --rainbow-6: var(--cyan);
  --rainbow-7: var(--yellow);
  --rainbow-8: var(--red-faint);
}


html {
  background: var(--bg-main);
  color: var(--fg-main);
  caret-color: var(--cursor);
  accent-color: var(--accent-0);
}

body {
  background: var(--bg-main);
  color: var(--fg-main);
}

::selection {
  background: var(--bg-region);
  color: var(--fg-main);
}

h1 { color: var(--rainbow-0); }
h2 { color: var(--rainbow-1); }
h3 { color: var(--rainbow-2); }
h4 { color: var(--rainbow-3); }
h5 { color: var(--rainbow-4); }
h6 { color: var(--rainbow-5); }

a { color: var(--fg-link); }
a:visited { color: var(--fg-link-visited); }
a:hover { background: var(--bg-hover); }

:focus-visible {
  outline: 2px solid var(--accent-0);
  outline-offset: 2px;
}

code, kbd, samp {
  color: var(--fg-prose-code);
  background: var(--bg-dim);
  border-radius: 3px;
  padding: 0.1em 0.3em;
}

kbd {
  color: var(--keybind);
  border: 1px solid var(--border);
}

pre {
  background: var(--bg-dim);
  color: var(--fg-main);
  border: 1px solid var(--border);
  border-radius: 4px;
  padding: 0.75em 1em;
  overflow-x: auto;
}

pre code {
  background: none;
  color: inherit;
  padding: 0;
}

blockquote {
  color: var(--fg-alt);
  border-left: 3px solid var(--border);
  margin-left: 0;
  padding-left: 1em;
}

blockquote blockquote { border-left-color: var(--mail-cite-1); }

hr {
  border: none;
  border-top: 1px solid var(--border);
}

table { border-collapse: collapse; color: var(--prose-table); }
th, td { border: 1px solid var(--border); padding: 0.3em 0.6em; }
th { background: var(--bg-alt); color: var(--fg-main); }
tr:hover td { background: var(--bg-hl-line); }

mark { background: var(--bg-search-current); color: var(--fg-main); }

ins { background: var(--bg-added); color: var(--fg-added); text-decoration: none; }
del { background: var(--bg-removed); color: var(--fg-removed); }

small, figcaption { color: var(--fg-dim); }

input, textarea, select, button {
  background: var(--bg-alt);
  color: var(--fg-main);
  border: 1px solid var(--border);
}

button:hover { background: var(--bg-hover-secondary); }

input::placeholder, textarea::placeholder { color: var(--fg-dim); }


.hljs { background: var(--bg-dim); color: var(--fg-main); }

.hljs-comment,
.hljs-quote { color: var(--comment); font-style: italic; }

.hljs-doctag { color: var(--docstring); }

.hljs-keyword,
.hljs-selector-tag { color: var(--keyword); }

.hljs-built_in { color: var(--builtin); }

.hljs-string,
.hljs-template-tag { color: var(--string); }

.hljs-regexp { color: var(--rx-construct); }
.hljs-char.escape_ { color: var(--rx-backslash); }

.hljs-number,
.hljs-literal,
.hljs-symbol { color: var(--constant); }

.hljs-title.function_,
.hljs-section { color: var(--fnname); }

.hljs-title.function_.invoke__ { color: var(--fnname-call); }

.hljs-title,
.hljs-title.class_,
.hljs-type { color: var(--type); }

.hljs-variable,
.hljs-template-variable { color: var(--variable); }

.hljs-params,
.hljs-variable.language_ { color: var(--variable-use); }

.hljs-attr,
.hljs-attribute,
.hljs-property,
.hljs-selector-attr,
.hljs-selector-class,
.hljs-selector-id { color: var(--name); }

.hljs-tag,
.hljs-name { color: var(--keyword); }

.hljs-meta { color: var(--preprocessor); }
.hljs-meta .hljs-keyword { color: var(--preprocessor); }

.hljs-link { color: var(--fg-link); text-decoration: underline; }

.hljs-bullet { color: var(--accent-0); }
.hljs-code { color: var(--fg-prose-verbatim); }
.hljs-emphasis { font-style: italic; }
.hljs-strong { font-weight: bold; }

.hljs-addition { background: var(--bg-added); color: var(--fg-added); }
.hljs-deletion { background: var(--bg-removed); color: var(--fg-removed); }


