/**
 * Prospect Highlight.js Theme
 * Syntax highlighting that matches Prospect's restrained aesthetic
 *
 * Usage:
 *   1. Include highlight.js core: https://highlightjs.org/
 *   2. Include this theme CSS after prospect.css
 *   3. Call hljs.highlightAll() or configure as needed
 *
 * Colors follow Prospect's philosophy:
 *   - Muted, restrained palette
 *   - Sage accent sparingly (keywords)
 *   - Most code remains near default text color
 *   - Comments clearly differentiated but not distracting
 */

/* =============================================================================
   Light Mode (Default)
   ============================================================================= */

.hljs {
  color: var(--color-text, #1A1A1A);
  background: transparent;
}

/* Comments — subtle, italic, clearly secondary */
.hljs-comment,
.hljs-quote {
  color: var(--color-text-subtle, #999999);
  font-style: italic;
}

/* Keywords — sage accent, the only real "color" */
.hljs-keyword,
.hljs-selector-tag,
.hljs-addition {
  color: var(--color-accent, #7C9A82);
}

/* Strings — warm muted terracotta */
.hljs-string,
.hljs-doctag,
.hljs-regexp,
.hljs-meta .hljs-string {
  color: #B5695C;
}

/* Numbers — slate blue, muted */
.hljs-number,
.hljs-literal,
.hljs-variable,
.hljs-template-variable,
.hljs-tag .hljs-attr {
  color: #6B8A9C;
}

/* Functions/Methods — slightly emphasized but restrained */
.hljs-title,
.hljs-section,
.hljs-name,
.hljs-selector-id,
.hljs-selector-class {
  color: var(--color-text, #1A1A1A);
  font-weight: 500;
}

/* Types/Classes — muted purple-gray */
.hljs-type,
.hljs-class .hljs-title,
.hljs-built_in {
  color: #7A6C8A;
}

/* Attributes — near default, subtle differentiation */
.hljs-attr,
.hljs-attribute {
  color: var(--color-text-muted, #666666);
}

/* Symbols/Constants — match keywords */
.hljs-symbol,
.hljs-bullet,
.hljs-link {
  color: var(--color-accent, #7C9A82);
}

/* Deletion — error color */
.hljs-deletion {
  color: var(--color-error, #DC3545);
}

/* Meta/Preprocessor — subtle */
.hljs-meta,
.hljs-meta .hljs-keyword {
  color: var(--color-text-subtle, #999999);
}

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

.hljs-strong {
  font-weight: 600;
}

/* =============================================================================
   Dark Mode
   ============================================================================= */

[data-theme="dark"] .hljs,
.hljs[data-theme="dark"] {
  color: var(--color-text, #E8E8E8);
}

[data-theme="dark"] .hljs-comment,
[data-theme="dark"] .hljs-quote {
  color: var(--color-text-subtle, #666666);
}

[data-theme="dark"] .hljs-keyword,
[data-theme="dark"] .hljs-selector-tag,
[data-theme="dark"] .hljs-addition {
  color: var(--color-accent, #8FB596);
}

/* Strings — warmer coral for dark mode */
[data-theme="dark"] .hljs-string,
[data-theme="dark"] .hljs-doctag,
[data-theme="dark"] .hljs-regexp,
[data-theme="dark"] .hljs-meta .hljs-string {
  color: #D4847A;
}

/* Numbers — lighter slate blue */
[data-theme="dark"] .hljs-number,
[data-theme="dark"] .hljs-literal,
[data-theme="dark"] .hljs-variable,
[data-theme="dark"] .hljs-template-variable,
[data-theme="dark"] .hljs-tag .hljs-attr {
  color: #8AAFC4;
}

[data-theme="dark"] .hljs-title,
[data-theme="dark"] .hljs-section,
[data-theme="dark"] .hljs-name,
[data-theme="dark"] .hljs-selector-id,
[data-theme="dark"] .hljs-selector-class {
  color: var(--color-text, #E8E8E8);
  font-weight: 500;
}

/* Types — lighter purple for dark mode */
[data-theme="dark"] .hljs-type,
[data-theme="dark"] .hljs-class .hljs-title,
[data-theme="dark"] .hljs-built_in {
  color: #A99AB8;
}

[data-theme="dark"] .hljs-attr,
[data-theme="dark"] .hljs-attribute {
  color: var(--color-text-muted, #888888);
}

[data-theme="dark"] .hljs-symbol,
[data-theme="dark"] .hljs-bullet,
[data-theme="dark"] .hljs-link {
  color: var(--color-accent, #8FB596);
}

[data-theme="dark"] .hljs-deletion {
  color: var(--color-error, #FF6B6B);
}

[data-theme="dark"] .hljs-meta,
[data-theme="dark"] .hljs-meta .hljs-keyword {
  color: var(--color-text-subtle, #666666);
}

/* =============================================================================
   System Preference Dark Mode
   ============================================================================= */

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .hljs {
    color: var(--color-text, #E8E8E8);
  }

  :root:not([data-theme="light"]) .hljs-comment,
  :root:not([data-theme="light"]) .hljs-quote {
    color: var(--color-text-subtle, #666666);
  }

  :root:not([data-theme="light"]) .hljs-keyword,
  :root:not([data-theme="light"]) .hljs-selector-tag,
  :root:not([data-theme="light"]) .hljs-addition {
    color: var(--color-accent, #8FB596);
  }

  :root:not([data-theme="light"]) .hljs-string,
  :root:not([data-theme="light"]) .hljs-doctag,
  :root:not([data-theme="light"]) .hljs-regexp,
  :root:not([data-theme="light"]) .hljs-meta .hljs-string {
    color: #D4847A;
  }

  :root:not([data-theme="light"]) .hljs-number,
  :root:not([data-theme="light"]) .hljs-literal,
  :root:not([data-theme="light"]) .hljs-variable,
  :root:not([data-theme="light"]) .hljs-template-variable,
  :root:not([data-theme="light"]) .hljs-tag .hljs-attr {
    color: #8AAFC4;
  }

  :root:not([data-theme="light"]) .hljs-title,
  :root:not([data-theme="light"]) .hljs-section,
  :root:not([data-theme="light"]) .hljs-name,
  :root:not([data-theme="light"]) .hljs-selector-id,
  :root:not([data-theme="light"]) .hljs-selector-class {
    color: var(--color-text, #E8E8E8);
    font-weight: 500;
  }

  :root:not([data-theme="light"]) .hljs-type,
  :root:not([data-theme="light"]) .hljs-class .hljs-title,
  :root:not([data-theme="light"]) .hljs-built_in {
    color: #A99AB8;
  }

  :root:not([data-theme="light"]) .hljs-attr,
  :root:not([data-theme="light"]) .hljs-attribute {
    color: var(--color-text-muted, #888888);
  }

  :root:not([data-theme="light"]) .hljs-symbol,
  :root:not([data-theme="light"]) .hljs-bullet,
  :root:not([data-theme="light"]) .hljs-link {
    color: var(--color-accent, #8FB596);
  }

  :root:not([data-theme="light"]) .hljs-deletion {
    color: var(--color-error, #FF6B6B);
  }

  :root:not([data-theme="light"]) .hljs-meta,
  :root:not([data-theme="light"]) .hljs-meta .hljs-keyword {
    color: var(--color-text-subtle, #666666);
  }
}
