/* Prism Sigil Theme - Glass-morphism code highlighting */

/* Code block container */
pre[class*="language-"] {
  position: relative;
  margin: 2em 0;
  padding: 1.5em;
  background: rgba(16, 16, 24, 0.85);
  border: 1px solid var(--accent-glow);
  border-radius: 12px;
  overflow-x: auto;
  font-size: 0.875em;
  line-height: 1.65;
  -webkit-overflow-scrolling: touch;
  max-width: 100%;
}

code[class*="language-"] {
  font-family: "SF Mono", "Fira Code", "JetBrains Mono", Consolas, Monaco, monospace;
  color: var(--text-light);
  text-shadow: none;
  direction: ltr;
  text-align: left;
  white-space: pre;
  word-spacing: normal;
  word-break: normal;
  tab-size: 2;
  hyphens: none;
}

/* Language label */
pre[class*="language-"]::before {
  content: attr(data-language);
  position: absolute;
  top: 0;
  right: 0;
  padding: 0.35em 0.75em;
  font-size: 0.7em;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--text-faint);
  background: var(--surface-dark-subtle);
  border-bottom-left-radius: 8px;
  border-top-right-radius: 11px;
}

/* Language-specific labels */
pre.language-javascript::before,
pre.language-js::before { content: "js"; }
pre.language-typescript::before,
pre.language-ts::before { content: "ts"; }
pre.language-python::before,
pre.language-py::before { content: "python"; }
pre.language-bash::before,
pre.language-shell::before { content: "bash"; }
pre.language-css::before { content: "css"; }
pre.language-html::before { content: "html"; }
pre.language-json::before { content: "json"; }
pre.language-yaml::before,
pre.language-yml::before { content: "yaml"; }
pre.language-markdown::before,
pre.language-md::before { content: "md"; }
pre.language-rust::before,
pre.language-rs::before { content: "rust"; }
pre.language-go::before { content: "go"; }
pre.language-ruby::before,
pre.language-rb::before { content: "ruby"; }
pre.language-java::before { content: "java"; }
pre.language-c::before { content: "c"; }
pre.language-cpp::before { content: "c++"; }
pre.language-csharp::before,
pre.language-cs::before { content: "c#"; }
pre.language-sql::before { content: "sql"; }
pre.language-graphql::before { content: "graphql"; }
pre.language-diff::before { content: "diff"; }

/* Token colors */
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
  color: rgba(244, 239, 226, 0.4);
  font-style: italic;
}

.token.punctuation {
  color: rgba(244, 239, 226, 0.6);
}

.token.namespace {
  opacity: 0.7;
}

.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
  color: #f0a370;
}

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

.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
  color: #56b6c2;
}

.token.atrule,
.token.attr-value,
.token.keyword {
  color: var(--accent);
}

.token.function,
.token.class-name {
  color: #61afef;
}

.token.regex,
.token.important,
.token.variable {
  color: #c678dd;
}

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

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

.token.entity {
  cursor: help;
}

/* Diff highlighting */
.token.deleted {
  background: rgba(255, 100, 100, 0.15);
}

.token.inserted {
  background: rgba(100, 255, 100, 0.1);
}

/* Line highlighting */
.highlight-line {
  background: rgba(234, 160, 28, 0.1);
  display: block;
  margin: 0 -1.5em;
  padding: 0 1.5em;
  border-left: 3px solid var(--accent);
}

/* Line numbers (if enabled) */
.line-numbers .line-numbers-rows {
  position: absolute;
  pointer-events: none;
  top: 1.5em;
  left: 0;
  font-size: 100%;
  width: 3em;
  letter-spacing: -1px;
  border-right: 1px solid var(--accent-faint);
  user-select: none;
}

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

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

/* Inline code (not in pre blocks) */
:not(pre) > code[class*="language-"] {
  padding: 0.15em 0.4em;
  border-radius: 4px;
  background: var(--surface-dark-subtle);
  color: var(--accent);
  white-space: normal;
}

/* Selection */
code[class*="language-"]::selection,
code[class*="language-"] *::selection,
pre[class*="language-"]::selection,
pre[class*="language-"] *::selection {
  background: rgba(234, 160, 28, 0.25);
  text-shadow: none;
}

/* Scrollbar styling */
pre[class*="language-"]::-webkit-scrollbar {
  height: 8px;
}

pre[class*="language-"]::-webkit-scrollbar-track {
  background: transparent;
}

pre[class*="language-"]::-webkit-scrollbar-thumb {
  background: var(--accent-faint);
  border-radius: 4px;
}

pre[class*="language-"]::-webkit-scrollbar-thumb:hover {
  background: var(--accent-glow);
}

/* Copy button */
.code-copy-btn {
  position: absolute;
  bottom: 0.5em;
  right: 0.5em;
  padding: 0.4em;
  background: var(--surface-dark-subtle);
  border: 1px solid var(--accent-faint);
  border-radius: 6px;
  color: var(--text-faint);
  cursor: pointer;
  opacity: 0;
  transition: opacity 0.2s, color 0.2s, border-color 0.2s;
  display: flex;
  align-items: center;
  justify-content: center;
}

pre[class*="language-"]:hover .code-copy-btn {
  opacity: 1;
}

.code-copy-btn:hover {
  color: var(--accent);
  border-color: var(--accent-glow);
}

.code-copy-btn.copied {
  color: #98c379;
  border-color: rgba(152, 195, 121, 0.5);
}

.code-copy-btn:focus {
  opacity: 1;
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}

/* Mobile code blocks */
@media (max-width: 600px) {
  pre[class*="language-"] {
    padding: 1em;
    font-size: 0.8em;
    border-radius: 8px;
  }

  .code-copy-btn {
    opacity: 1;
  }
}
