/**
 * Prism.js Theme: Catppuccin Mocha
 * Based on https://github.com/catppuccin/catppuccin
 */

/* Catppuccin Mocha Color Palette */
:root {
  --ctp-rosewater: #f5e0dc;
  --ctp-flamingo: #f2cdcd;
  --ctp-pink: #f5c2e7;
  --ctp-mauve: #cba6f7;
  --ctp-red: #f38ba8;
  --ctp-maroon: #eba0ac;
  --ctp-peach: #fab387;
  --ctp-yellow: #f9e2af;
  --ctp-green: #a6e3a1;
  --ctp-teal: #94e2d5;
  --ctp-sky: #89dceb;
  --ctp-sapphire: #74c7ec;
  --ctp-blue: #89b4fa;
  --ctp-lavender: #b4befe;
  --ctp-text: #cdd6f4;
  --ctp-subtext1: #bac2de;
  --ctp-subtext0: #a6adc8;
  --ctp-overlay2: #9399b2;
  --ctp-overlay1: #7f849c;
  --ctp-overlay0: #6c7086;
  --ctp-surface2: #585b70;
  --ctp-surface1: #45475a;
  --ctp-surface0: #313244;
  --ctp-base: #1e1e2e;
  --ctp-mantle: #181825;
  --ctp-crust: #11111b;
}

/* Base styles */
code[class*='language-'],
pre[class*='language-'] {
  color: var(--ctp-text);
  background: none;
  font-family: 'Fira Code', 'Cascadia Code', 'JetBrains Mono', Consolas, 'Courier New', monospace;
  font-feature-settings: normal;
  text-align: left;
  white-space: pre;
  word-spacing: normal;
  word-break: normal;
  word-wrap: normal;
  line-height: 1.5;
  -moz-tab-size: 4;
  -o-tab-size: 4;
  tab-size: 4;
  -webkit-hyphens: none;
  -moz-hyphens: none;
  -ms-hyphens: none;
  hyphens: none;
  font-size: 1em;
}

/* Code blocks */
pre[class*='language-'] {
  padding: 1em;
  margin: 0.5em 0;
  overflow: auto;
  border-radius: 0.5em;
  background: var(--ctp-base);
  border: 1px solid var(--ctp-surface0);
}

/* Inline code */
:not(pre) > code[class*='language-'] {
  padding: 0.2em 0.4em;
  border-radius: 0.3em;
  background: var(--ctp-surface0);
  color: var(--ctp-text);
  white-space: normal;
}

/* Scrollbars */
pre[class*='language-']::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}

pre[class*='language-']::-webkit-scrollbar-track {
  background: var(--ctp-surface0);
  border-radius: 4px;
}

pre[class*='language-']::-webkit-scrollbar-thumb {
  background: var(--ctp-overlay0);
  border-radius: 4px;
}

pre[class*='language-']::-webkit-scrollbar-thumb:hover {
  background: var(--ctp-overlay1);
}

/* Token styles */
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
  color: var(--ctp-overlay1);
  font-style: italic;
}

.token.punctuation {
  color: var(--ctp-overlay2);
}

.token.property,
.token.tag,
.token.constant,
.token.symbol,
.token.deleted {
  color: var(--ctp-red);
}

.token.boolean,
.token.number {
  color: var(--ctp-peach);
}

.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
  color: var(--ctp-green);
}

.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string,
.token.variable {
  color: var(--ctp-sky);
}

.token.atrule,
.token.attr-value,
.token.function,
.token.class-name {
  color: var(--ctp-yellow);
}

.token.keyword {
  color: var(--ctp-mauve);
}

.token.regex,
.token.important {
  color: var(--ctp-peach);
}

.token.important,
.token.bold {
  font-weight: bold;
}

.token.italic {
  font-style: italic;
}

.token.entity {
  cursor: help;
}

/* Language-specific overrides */
.token.namespace {
  color: var(--ctp-pink);
  opacity: 0.8;
}

/* JSON */
.language-json .token.property {
  color: var(--ctp-blue);
}

.language-json .token.string {
  color: var(--ctp-green);
}

/* CSS */
.language-css .token.selector {
  color: var(--ctp-pink);
}

.language-css .token.property {
  color: var(--ctp-blue);
}

/* HTML */
.language-markup .token.tag .token.punctuation {
  color: var(--ctp-overlay2);
}

.language-markup .token.tag .token.tag {
  color: var(--ctp-red);
}

.language-markup .token.attr-name {
  color: var(--ctp-yellow);
}

.language-markup .token.attr-value {
  color: var(--ctp-green);
}

/* JavaScript/TypeScript */
.language-javascript .token.template-string .token.string,
.language-typescript .token.template-string .token.string {
  color: var(--ctp-green);
}

.language-javascript .token.template-string .token.interpolation,
.language-typescript .token.template-string .token.interpolation {
  color: var(--ctp-text);
}

.language-javascript .token.template-string .token.interpolation .token.punctuation,
.language-typescript .token.template-string .token.interpolation .token.punctuation {
  color: var(--ctp-red);
}

/* Line highlighting */
.line-highlight {
  background: rgba(168, 239, 255, 0.1);
  background: linear-gradient(to right, rgba(168, 239, 255, 0.1) 70%, rgba(168, 239, 255, 0));
}

/* Line numbers plugin */
.line-numbers .line-numbers-rows {
  border-right: 1px solid var(--ctp-surface1);
  background: var(--ctp-mantle);
}

.line-numbers-rows > span:before {
  color: var(--ctp-overlay0);
}

/* Command line plugin */
.command-line-prompt > span:before {
  color: var(--ctp-overlay1);
}
