/* Prism dual-theme: light (default) + dark ([data-theme="dark"])          */
/* Light based on prism-one-light; dark based on prism-vsc-dark-plus  */

/* ===================================================================
   Shared layout / typography (mode-independent)
   =================================================================== */
pre[class*="language-"],
code[class*="language-"] {
  font-size: 13px;
  text-shadow: none;
  font-family: Menlo, Monaco, Consolas, "Andale Mono", "Ubuntu Mono",
    "Courier New", monospace;
  direction: ltr;
  text-align: left;
  white-space: pre;
  word-spacing: normal;
  word-break: 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[class*="language-"] {
  padding: 1em;
  margin: 0.5em 0;
  overflow: auto;
}

/* ===================================================================
   Light mode
   =================================================================== */
pre[class*="language-"],
code[class*="language-"] {
  color: #383a42;
  background: none;
}

pre[class*="language-"] {
  background: #fafafa;
}

:not(pre) > code[class*="language-"] {
  padding: 0.1em 0.3em;
  border-radius: 0.3em;
  color: #e45649;
  background: #f0f0f0;
}

pre[class*="language-"]::selection,
code[class*="language-"]::selection,
pre[class*="language-"] *::selection,
code[class*="language-"] *::selection {
  text-shadow: none;
  background: #bfceff;
}

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

/* --- Light tokens --- */
.token.comment,
.token.prolog,
.token.cdata {
  color: #a0a1a7;
  font-style: italic;
}

.token.doctype,
.token.punctuation {
  color: #383a42;
}

.token.namespace { opacity: 0.7; }

.token.property,
.token.tag,
.token.constant,
.token.symbol,
.token.deleted {
  color: #e45649;
}

.token.boolean,
.token.number {
  color: #986801;
}

.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
  color: #50a14f;
}

.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string,
.token.variable {
  color: #383a42;
}

.token.atrule,
.token.attr-value {
  color: #50a14f;
}

.token.keyword {
  color: #a626a4;
}

.token.keyword.module,
.token.keyword.control-flow {
  color: #a626a4;
}

.token.function,
.token.function .token.maybe-class-name {
  color: #4078f2;
}

.token.regex {
  color: #0184bb;
}

.token.important {
  color: #986801;
}

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

.token.class-name,
.token.maybe-class-name {
  color: #c18401;
}

.token.console,
.token.parameter,
.token.interpolation,
.token.constant {
  color: #986801;
}

.token.punctuation.interpolation-punctuation {
  color: #a626a4;
}

.token.tag .token.punctuation {
  color: #383a42;
}

.token.cdata {
  color: #0184bb;
}

pre[class*="language-javascript"],
code[class*="language-javascript"],
pre[class*="language-jsx"],
code[class*="language-jsx"],
pre[class*="language-typescript"],
code[class*="language-typescript"],
pre[class*="language-tsx"],
code[class*="language-tsx"] {
  color: #383a42;
}

pre[class*="language-css"],
code[class*="language-css"] {
  color: #50a14f;
}

pre[class*="language-html"],
code[class*="language-html"] {
  color: #383a42;
}

.language-regex .token.anchor { color: #4078f2; }
.language-html .token.punctuation { color: #383a42; }

/* ===================================================================
   Dark mode  (all rules scoped to [data-theme="dark"])
   =================================================================== */
[data-theme="dark"] pre[class*="language-"],
[data-theme="dark"] code[class*="language-"] {
  color: #d4d4d4;
  background: none;
}

[data-theme="dark"] pre[class*="language-"] {
  background: #292929;
}

[data-theme="dark"] :not(pre) > code[class*="language-"] {
  padding: 0.1em 0.3em;
  border-radius: 0.3em;
  color: #db4c69;
  background: #f9f2f4;
}

[data-theme="dark"] pre[class*="language-"]::selection,
[data-theme="dark"] code[class*="language-"]::selection,
[data-theme="dark"] pre[class*="language-"] *::selection,
[data-theme="dark"] code[class*="language-"] *::selection {
  text-shadow: none;
  background: #75a7ca;
}

/* --- Dark tokens --- */
[data-theme="dark"] .token.doctype .token.doctype-tag { color: #569cd6; }
[data-theme="dark"] .token.doctype .token.name { color: #9cdcfe; }

[data-theme="dark"] .token.comment,
[data-theme="dark"] .token.prolog { color: #6a9955; }

[data-theme="dark"] .token.punctuation,
[data-theme="dark"] .language-html .language-css .token.punctuation,
[data-theme="dark"] .language-html .language-javascript .token.punctuation { color: #d4d4d4; }

[data-theme="dark"] .token.property,
[data-theme="dark"] .token.tag,
[data-theme="dark"] .token.boolean,
[data-theme="dark"] .token.number,
[data-theme="dark"] .token.constant,
[data-theme="dark"] .token.symbol,
[data-theme="dark"] .token.inserted,
[data-theme="dark"] .token.unit { color: #b5cea8; }

[data-theme="dark"] .token.selector,
[data-theme="dark"] .token.attr-name,
[data-theme="dark"] .token.string,
[data-theme="dark"] .token.char,
[data-theme="dark"] .token.builtin,
[data-theme="dark"] .token.deleted { color: #ce9178; }

[data-theme="dark"] .language-css .token.string.url { text-decoration: underline; }

[data-theme="dark"] .token.operator,
[data-theme="dark"] .token.entity { color: #d4d4d4; }

[data-theme="dark"] .token.operator.arrow { color: #569cd6; }
[data-theme="dark"] .token.atrule { color: #ce9178; }
[data-theme="dark"] .token.atrule .token.rule { color: #c586c0; }
[data-theme="dark"] .token.atrule .token.url { color: #9cdcfe; }
[data-theme="dark"] .token.atrule .token.url .token.function { color: #dcdcaa; }
[data-theme="dark"] .token.atrule .token.url .token.punctuation { color: #d4d4d4; }

[data-theme="dark"] .token.keyword { color: #569cd6; }
[data-theme="dark"] .token.keyword.module,
[data-theme="dark"] .token.keyword.control-flow { color: #c586c0; }

[data-theme="dark"] .token.function,
[data-theme="dark"] .token.function .token.maybe-class-name { color: #dcdcaa; }

[data-theme="dark"] .token.regex { color: #d16969; }
[data-theme="dark"] .token.important { color: #569cd6; }
[data-theme="dark"] .token.italic { font-style: italic; }
[data-theme="dark"] .token.constant { color: #9cdcfe; }

[data-theme="dark"] .token.class-name,
[data-theme="dark"] .token.maybe-class-name { color: #4ec9b0; }

[data-theme="dark"] .token.console { color: #9cdcfe; }
[data-theme="dark"] .token.parameter { color: #9cdcfe; }
[data-theme="dark"] .token.interpolation { color: #9cdcfe; }
[data-theme="dark"] .token.punctuation.interpolation-punctuation { color: #569cd6; }
[data-theme="dark"] .token.boolean { color: #569cd6; }

[data-theme="dark"] .token.property,
[data-theme="dark"] .token.variable,
[data-theme="dark"] .token.imports .token.maybe-class-name,
[data-theme="dark"] .token.exports .token.maybe-class-name { color: #9cdcfe; }

[data-theme="dark"] .token.selector { color: #d7ba7d; }
[data-theme="dark"] .token.escape { color: #d7ba7d; }
[data-theme="dark"] .token.tag { color: #569cd6; }
[data-theme="dark"] .token.tag .token.punctuation { color: #808080; }
[data-theme="dark"] .token.cdata { color: #808080; }
[data-theme="dark"] .token.attr-name { color: #9cdcfe; }

[data-theme="dark"] .token.attr-value,
[data-theme="dark"] .token.attr-value .token.punctuation { color: #ce9178; }

[data-theme="dark"] .token.attr-value .token.punctuation.attr-equals { color: #d4d4d4; }
[data-theme="dark"] .token.entity { color: #569cd6; }
[data-theme="dark"] .token.namespace { color: #4ec9b0; }

[data-theme="dark"] pre[class*="language-javascript"],
[data-theme="dark"] code[class*="language-javascript"],
[data-theme="dark"] pre[class*="language-jsx"],
[data-theme="dark"] code[class*="language-jsx"],
[data-theme="dark"] pre[class*="language-typescript"],
[data-theme="dark"] code[class*="language-typescript"],
[data-theme="dark"] pre[class*="language-tsx"],
[data-theme="dark"] code[class*="language-tsx"] { color: #9cdcfe; }

[data-theme="dark"] pre[class*="language-css"],
[data-theme="dark"] code[class*="language-css"] { color: #ce9178; }

[data-theme="dark"] pre[class*="language-html"],
[data-theme="dark"] code[class*="language-html"] { color: #d4d4d4; }

[data-theme="dark"] .language-regex .token.anchor { color: #dcdcaa; }
[data-theme="dark"] .language-html .token.punctuation { color: #808080; }

/* ===================================================================
   Line highlighting (shared)
   =================================================================== */
pre[data-line] { position: relative; }
pre[class*="language-"] > code[class*="language-"] { position: relative; z-index: 1; }

.line-highlight {
  position: absolute;
  left: 0;
  right: 0;
  padding: inherit 0;
  margin-top: 1em;
  background: #f7ebc6;
  box-shadow: inset 5px 0 0 #f7d87c;
  z-index: 0;
  pointer-events: none;
  line-height: inherit;
  white-space: pre;
}
