/**
 * Compossa Prism Theme
 * Integrates with app.css theme variables for automatic dark/light switching
 */

/* Base code styling - uses existing app theme variables */
code[class*="language-"],
pre[class*="language-"] {
    color: var(--text-primary);
    background: none;
    font-family: var(--font-mono, 'Consolas', 'Monaco', 'Courier New', monospace);
    font-size: 0.875rem;
    text-align: left;
    white-space: pre;
    word-spacing: normal;
    word-break: normal;
    word-wrap: normal;
    line-height: 1.6;
    tab-size: 4;
    hyphens: none;
    text-shadow: none;
}

/* Code blocks */
pre[class*="language-"] {
    padding: 1em;
    margin: 0;
    overflow: auto;
    background: var(--bg-tertiary);
    border-radius: 6px;
}

/* Inline code */
:not(pre) > code[class*="language-"] {
    padding: 0.2em 0.4em;
    border-radius: 3px;
    background: var(--bg-tertiary);
}

/* Selection */
code[class*="language-"]::selection,
code[class*="language-"] *::selection,
pre[class*="language-"]::selection,
pre[class*="language-"] *::selection {
    background: var(--bg-active);
}

/* ============================================
   Token colors mapped to app theme variables
   ============================================ */

/* Comments - muted text with italic */
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
    color: var(--text-muted);
    font-style: italic;
}

/* Punctuation - secondary text */
.token.punctuation {
    color: var(--text-secondary);
}

.token.namespace {
    opacity: 0.7;
}

/* Keywords - info/blue color */
.token.keyword,
.token.atrule,
.token.attr-value {
    color: var(--info-color);
}

/* Booleans, constants, symbols - info color */
.token.boolean,
.token.constant,
.token.symbol,
.token.deleted {
    color: var(--info-color);
}

/* Numbers - accent color (Compossa green) */
.token.number {
    color: var(--accent-color);
}

/* Strings - warning/orange color */
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
    color: var(--warning-color);
}

/* Operators */
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
    color: var(--text-secondary);
}

/* Functions - link color */
.token.function {
    color: var(--link-color);
}

/* Classes/Types - accent color (Compossa green) */
.token.class-name {
    color: var(--accent-color);
}

/* Properties - link hover color */
.token.property,
.token.tag {
    color: var(--link-hover);
}

/* Regex, variables - tertiary/purple */
.token.regex,
.token.important,
.token.variable {
    color: var(--tertiary-color);
}

.token.important,
.token.bold {
    font-weight: bold;
}

.token.italic {
    font-style: italic;
}

.token.entity {
    cursor: help;
}

/* ============================================
   Language-specific overrides
   ============================================ */

/* C# specific */
.language-csharp .token.keyword {
    color: var(--info-color);
}

.language-csharp .token.class-name,
.language-csharp .token.type {
    color: var(--accent-color);
}

.language-csharp .token.function {
    color: var(--link-color);
}

.language-csharp .token.string {
    color: var(--warning-color);
}

/* XML/HTML */
.language-xml .token.tag,
.language-markup .token.tag {
    color: var(--info-color);
}

.language-xml .token.attr-name,
.language-markup .token.attr-name {
    color: var(--link-color);
}

.language-xml .token.attr-value,
.language-markup .token.attr-value {
    color: var(--warning-color);
}

/* JSON */
.language-json .token.property {
    color: var(--link-color);
}

.language-json .token.string {
    color: var(--warning-color);
}

.language-json .token.number {
    color: var(--accent-color);
}

.language-json .token.boolean {
    color: var(--info-color);
}

/* SQL */
.language-sql .token.keyword {
    color: var(--info-color);
}

.language-sql .token.string {
    color: var(--warning-color);
}

.language-sql .token.function {
    color: var(--link-color);
}

/* ============================================
   Toolbar styling (copy button)
   ============================================ */

div.code-toolbar > .toolbar {
    opacity: 0;
    transition: opacity 0.2s ease;
}

div.code-toolbar:hover > .toolbar {
    opacity: 1;
}

div.code-toolbar > .toolbar > .toolbar-item > button,
div.code-toolbar > .toolbar > .toolbar-item > span {
    background: var(--bg-hover);
    color: var(--text-muted);
    border-radius: 4px;
    padding: 4px 8px;
    font-size: 0.75rem;
    border: none;
    cursor: pointer;
    transition: background 0.15s, color 0.15s;
}

div.code-toolbar > .toolbar > .toolbar-item > button:hover {
    background: var(--bg-active);
    color: var(--text-primary);
}
