/*
 * Adapted from: https://github.com/dracula/prism/blob/master/src/css/dracula-prism.css
 */

:root {
  --background: #151417;
  --comment: #6272a4;
  --foreground: #f8f8f2;
  --selection: #44475a;
  --hover: #212024;

  --cyan: #80ffea;
  --green: #8aff80;
  --orange: #ffca80;
  --pink: #ff80bf;
  --purple: #9580ff;
  --red: #ff9580;
  --yellow: #ffff80;

  --code: var(--font-google-sans-code), "SF Mono", Menlo, monospace;

  /* Transparency */

  /** 30% of transparency **/
  --background-30: #282a3633;
  --comment-30: #6272a433;
  --foreground-30: #f8f8f233;
  --selection-30: #44475a33;

  --cyan-30: #80ffea33;
  --green-30: #8aff80;
  --orange-30: #ffca80;
  --pink-30: #FF80BF3;
  --purple-30: #9580ff;
  --red-30: #ff9580;
  --yellow-30: #ffff80;

  /** 40% of transparency **/
  --background-40: #282a3666;
  --comment-40: #6272a466;
  --foreground-40: #f8f8f266;
  --selection-40: #44475a66;

  --cyan-40: #80ffea66;
  --green-40: #8aff80;
  --orange-40: #ffca80;
  --pink-40: #FF80BF6;
  --purple-40: #9580ff;
  --red-40: #ff9580;
  --yellow-40: #ffff80;
}

/* Selection */

pre[class*='language-']::-moz-selection,
pre[class*='language-'] ::-moz-selection,
code[class*='language-']::-moz-selection,
code[class*='language-'] ::-moz-selection {
  text-shadow: none;
  background-color: var(--selection);
}

pre[class*='language-']::selection,
pre[class*='language-'] ::selection,
code[class*='language-']::selection,
code[class*='language-'] ::selection {
  text-shadow: none;
  background-color: var(--selection);
}

/* Line numbers */

pre.line-numbers {
  position: relative;
  padding-left: 3.8em;
  counter-reset: linenumber;
}

pre.line-numbers > code {
  position: relative;
  white-space: inherit;
}

.line-numbers .line-numbers-rows {
  position: absolute;
  pointer-events: none;
  top: 0;
  font-size: 100%;
  left: -3.8em;
  width: 3em; /* works for line-numbers below 1000 lines */
  letter-spacing: -1px;
  border-right: 1px solid #999;

  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

.line-numbers-rows > span {
  pointer-events: none;
  display: block;
  counter-increment: linenumber;
}

.line-numbers-rows > span:before {
  content: counter(linenumber);
  color: #999;
  display: block;
  padding-right: 0.8em;
  text-align: right;
}

/* Toolbar for copying */

div.code-toolbar {
  position: relative;
}

div.code-toolbar > .toolbar {
  position: absolute;
  top: 0.3em;
  right: 0.2em;
  transition: opacity 0.3s ease-in-out;
  opacity: 0;
}

div.code-toolbar:hover > .toolbar {
  opacity: 1;
}

div.code-toolbar > .toolbar .toolbar-item {
  display: inline-block;
  padding-right: 20px;
}

div.code-toolbar > .toolbar a {
  cursor: pointer;
}

div.code-toolbar > .toolbar button {
  background: none;
  border: 0;
  color: inherit;
  font: inherit;
  line-height: normal;
  overflow: visible;
  padding: 0;
  -webkit-user-select: none; /* for button */
  -moz-user-select: none;
  -ms-user-select: none;
}

div.code-toolbar > .toolbar a,
div.code-toolbar > .toolbar button,
div.code-toolbar > .toolbar span {
  color: var(--foreground);
  font-size: 0.8em;
  padding: 0.5em;
  background: var(--comment);
  border-radius: 0.5em;
}

div.code-toolbar > .toolbar a:hover,
div.code-toolbar > .toolbar a:focus,
div.code-toolbar > .toolbar button:hover,
div.code-toolbar > .toolbar button:focus,
div.code-toolbar > .toolbar span:hover,
div.code-toolbar > .toolbar span:focus {
  color: inherit;
  text-decoration: none;
  background-color: var(--green);
}

/* Remove text shadow for printing */

@media print {
  code[class*='language-'],
  pre[class*='language-'] {
    text-shadow: none;
  }
}

code[class*='language-'],
pre[class*='language-'] {
  color: var(--foreground);
  background: var(--background);
  text-shadow: none;
  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;
}

pre,
code,
pre code span {
  font-family: var(--code);
}

/* Code blocks */

pre[class*='language-'] {
  background: var(--background);
  border-radius: 0.5em;
  padding: 1em;
  margin: 0.5em 0;
  overflow: auto;
  height: auto;
}

:not(pre) > code[class*='language-'],
pre[class*='language-'] {
  background: var(--background);
}

/* Inline code */
:not(pre) > code[class*='language-'] {
  padding: 4px 7px;
  border-radius: 0.3em;
  white-space: normal;
}

/* Code box limit */

.limit-300 {
  height: 300px !important;
}

.limit-300 {
  height: 400px !important;
}

.limit-500 {
  height: 500px !important;
}

.limit-600 {
  height: 600px !important;
}

.limit-700 {
  height: 700px !important;
}

.limit-800 {
  height: 800px !important;
}

.language-css {
  color: var(--purple);
}

.token {
  color: var(--pink);
}

.language-css .token {
  color: var(--pink);
}

.language-css .token.color {
  color: var(--purple);
}

.token.script {
  color: var(--foreground);
}

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

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

.token.atrule,
.token.attr-name,
.token.attr-value {
  color: var(--green);
}

.language-css .token.atrule {
  color: var(--purple);
}

.language-html .token.attr-value,
.language-markup .token.attr-value {
  color: var(--yellow);
}

.token.boolean {
  color: var(--purple);
}

.token.builtin,
.token.class-name {
  color: var(--cyan);
}

.token.comment {
  color: var(--comment);
}

.token.constant {
  color: var(--purple);
}

.language-javascript .token.constant {
  color: var(--orange);
  font-style: italic;
}

.token.entity {
  color: var(--pink);
}

.token.maybe-class-name,
.token.property-access {
  color: var(--foreground);
}

.language-css .token.entity {
  color: var(--green);
}

.language-html .token.entity.named-entity {
  color: var(--purple);
}

.language-html .token.entity:not(.named-entity) {
  color: var(--pink);
}

.language-markup .token.entity.named-entity {
  color: var(--purple);
}

.language-markup .token.entity:not(.named-entity) {
  color: var(--pink);
}

.token.function {
  color: var(--green);
}

.language-css .token.function {
  color: var(--cyan);
}

.token.important,
.token.keyword {
  color: var(--pink);
}

.token.prolog {
  color: var(--foreground);
}

.token.property {
  color: var(--orange);
}

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

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

.language-css .token.punctuation {
  color: var(--foreground);
}

.language-html .token.punctuation,
.language-markup .token.punctuation {
  color: var(--foreground);
}

.token.selector {
  color: var(--pink);
}

.language-css .token.selector {
  color: var(--pink);
}

.token.regex {
  color: var(--red);
}

.language-css .token.rule:not(.atrule) {
  color: var(--foreground);
}

.token.string {
  color: var(--yellow);
}

.token.tag {
  color: var(--pink);
}

.token.url {
  color: var(--cyan);
}

.language-css .token.url {
  color: var(--orange);
}

.token.variable {
  color: var(--foreground);
}

.token.number {
  color: var(--purple);
}

.token.operator {
  color: var(--pink);
}

.token.char {
  color: var(--red);
}

.token.symbol {
  color: var(--orange);
}

.token.deleted {
  color: var(--red);
}

.token.namespace {
  color: var(--red);
}

/* Line Highlighter */

.highlight-line {
  color: inherit;
  display: inline-block;
  text-decoration: none;

  border-radius: 4px;
  padding: 2px 10px;
}

.highlight-line:empty:before {
  content: ' ';
}

.highlight-line:not(:last-child) {
  min-width: 100%;
}

.highlight-line .highlight-line:not(:last-child) {
  min-width: 0;
}

.highlight-line-isdir {
  color: var(--foreground);
  background-color: var(--selection-30);
}

.highlight-line-active {
  background-color: var(--comment-30);
}

.highlight-line-add {
  background-color: var(--green-30);
}

.highlight-line-remove {
  background-color: var(--red-30);
}
