/**
 * Sentry Sentinel Dark Theme for Highlight.js
 * Beautiful, accessible dark theme inspired by Sentry's brand colors
 * 
 * @author Sentry
 * @version 1.0.0
 */

/* Base */
.hljs {
  color: #f9f8f9;
  background: #181225;
}

/* Comments */
.hljs-comment,
.hljs-quote {
  color: #898294;
  font-style: italic;
}

/* Keywords, selectors, tags */
.hljs-keyword,
.hljs-selector-tag,
.hljs-subst,
.hljs-type {
  color: #9E86FF;
  font-weight: bold;
}

/* Special keywords (this, new, etc) */
.hljs-variable.language_,
.hljs-keyword.hljs-this,
.hljs-keyword.hljs-new {
  color: #9E86FF;
  font-weight: bold;
}

/* Strings */
.hljs-string,
.hljs-doctag {
  color: #83da90;
}

/* Types, Classes, Interfaces */
.hljs-class .hljs-title,
.hljs-title.class_,
.hljs-title.class_.inherited__,
.hljs-params .hljs-type {
  color: #FF45A8;
}

/* Built-in constructors and classes */
.hljs-built_in {
  color: #FF45A8;
}

/* Functions */
.hljs-title.function_,
.hljs-function .hljs-title,
.hljs-function {
  color: #226DFC;
}

/* Method calls */
.hljs-property.hljs-function,
.hljs-title.function_.invoked__ {
  color: #226DFC;
}

/* HTML/JSX attributes specifically */
.language-xml .hljs-attr,
.language-html .hljs-attr {
  color: #3EDCFF;
}

/* Numbers, literals */
.hljs-number,
.hljs-symbol,
.hljs-bullet {
  color: #FDB81B;
}

/* Boolean literals */
.hljs-literal {
  color: #FDB81B;
  font-weight: bold;
}

/* Variables, attributes */
.hljs-variable,
.hljs-template-variable {
  color: #FF9838;
}

/* Constants */
.hljs-constant {
  color: #7553FF;
}

/* Built-in names, Hooks */
.hljs-builtin-name,
.hljs-built_in {
  color: #226DFC;
}



/* Deleted/removed */
.hljs-deletion {
  background: rgba(254, 65, 68, 0.15);
  color: #fe4144;
}

/* Inserted/added */
.hljs-addition {
  background: rgba(94, 206, 115, 0.15);
  color: #5ece73;
}

/* Emphasis */
.hljs-emphasis {
  font-style: italic;
}

/* Strong */
.hljs-strong {
  font-weight: bold;
}

/* Links */
.hljs-link {
  text-decoration: underline;
}

/* Section/headers */
.hljs-section {
  color: #9E86FF;
  font-weight: bold;
}

/* Attributes and object properties */
.hljs-attribute,
.hljs-property,
.hljs-attr {
  color: #FF70BC;
}

/* Object literal keys */
.hljs-attr,
.hljs-property {
  color: #FF70BC !important;
}

/* Regular expressions */
.hljs-regexp {
  color: #FF9838;
}

/* Meta strings */
.hljs-meta,
.hljs-meta .hljs-keyword,
.hljs-meta .hljs-string {
  color: #FF9838;
}

/* Operators */
.hljs-operator,
.hljs-punctuation.hljs-operator {
  color: #FF45A8;
}

/* Punctuation */
.hljs-punctuation {
  color: #D5D2DA;
}

/* Tags */
.hljs-tag {
  color: #7553FF;
}

/* Tag names */
.hljs-name,
.hljs-tag .hljs-name {
  color: #7553FF;
}

/* Tag attributes */
.hljs-tag .hljs-attr {
  color: #FF9838;
}

/* Selectors in CSS */
.hljs-selector-id,
.hljs-selector-class,
.hljs-selector-attr,
.hljs-selector-pseudo {
  color: #7553FF;
}

/* Template tags */
.hljs-template-tag {
  color: #7553FF;
}

/* CSS units */
.css .hljs-number {
  color: #FDB81B;
}

/* JSON keys */
.json .hljs-attr {
  color: #FF45A8;
}

/* Object literal keys in JS/TS */
.language-javascript .hljs-attr,
.language-typescript .hljs-attr,
.language-jsx .hljs-attr:not(.hljs-tag .hljs-attr),
.language-tsx .hljs-attr:not(.hljs-tag .hljs-attr) {
  color: #FF70BC;
}

/* Markdown code */
.markdown .hljs-code {
  color: #83da90;
}

/* Markdown headings */
.markdown .hljs-section {
  color: #FF45A8;
  font-weight: bold;
}

/* SQL keywords */
.sql .hljs-keyword {
  color: #9E86FF;
  font-weight: bold;
}

/* Diff header */
.diff .hljs-meta {
  color: #06B6D4;
}

/* Diff additions */
.diff .hljs-addition {
  background-color: rgba(94, 206, 115, 0.2);
  color: #5ece73;
}

/* React/JSX specific */
.language-jsx .hljs-keyword,
.language-tsx .hljs-keyword,
.language-javascript .hljs-keyword,
.language-typescript .hljs-keyword {
  color: #9E86FF;
}

/* JavaScript/TypeScript object properties */
.language-javascript .hljs-property,
.language-typescript .hljs-property,
.language-jsx .hljs-property,
.language-tsx .hljs-property {
  color: #FF70BC !important;
}

/* JavaScript/TypeScript literals and constants */
.language-javascript .hljs-literal,
.language-typescript .hljs-literal,
.language-jsx .hljs-literal,
.language-tsx .hljs-literal {
  color: #FDB81B;
  font-weight: bold;
}

/* JavaScript 'this' keyword */
.language-javascript .hljs-variable.language_,
.language-typescript .hljs-variable.language_,
.language-jsx .hljs-variable.language_,
.language-tsx .hljs-variable.language_ {
  color: #9E86FF;
  font-weight: bold;
}

/* React Component Names and Types */
.language-jsx .hljs-title.class_,
.language-tsx .hljs-title.class_,
.language-jsx .hljs-title.function_,
.language-tsx .hljs-title.function_ {
  color: #FF45A8;
}

/* React Hooks and built-in functions */
.language-jsx .hljs-title,
.language-tsx .hljs-title,
.language-javascript .hljs-title,
.language-typescript .hljs-title {
  color: #226DFC;
}

/* JSX Tags */
.language-jsx .hljs-tag,
.language-tsx .hljs-tag,
.language-jsx .hljs-tag .hljs-name,
.language-tsx .hljs-tag .hljs-name {
  color: #FF45A8;
}

/* JSX/TSX Tag Attributes specifically */
.language-jsx .hljs-tag .hljs-attr,
.language-tsx .hljs-tag .hljs-attr {
  color: #3EDCFF;
}

/* Import/Export keywords */
.hljs-keyword.hljs-import,
.hljs-keyword.hljs-export,
.hljs-keyword.hljs-from,
.hljs-keyword.hljs-as {
  color: #9E86FF;
  font-weight: bold;
}

/* Import statement operators and keywords */
.language-javascript .hljs-operator,
.language-typescript .hljs-operator,
.language-jsx .hljs-operator,
.language-tsx .hljs-operator {
  color: #FF45A8;
}

/* Special characters in imports */
.language-javascript .hljs-punctuation,
.language-typescript .hljs-punctuation,
.language-jsx .hljs-punctuation,
.language-tsx .hljs-punctuation {
  color: #D5D2DA;
}

/* Correct property colors */
.hljs-property {
  color: #FF70BC !important;
}

/* Template literals */
.hljs-template-string,
.hljs-template-string .hljs-template-variable {
  color: #83da90;
}

/* Fix for const, let, var */
.hljs-keyword.hljs-const,
.hljs-keyword.hljs-let,
.hljs-keyword.hljs-var {
  color: #9E86FF;
  font-weight: bold;
}
