/**
 * Custom Prism theme for Leaf specification
 * Integrates with site's dark/light theme using CSS variables
 */

/* Define syntax highlighting colors that work with our theme */
:root {
    --prism-text: #2a2620;
    --prism-bg: #f5f3eb;
    --prism-comment: #8b8580;
    --prism-keyword: #8b5e3c;
    --prism-builtin: #6b7a3c;
    --prism-string: #9b6b3c;
    --prism-number: #b5754e;
    --prism-function: #5b6e7c;
    --prism-operator: #6b6560;
    --prism-punctuation: #6b6560;
    --prism-constant: #8b5e3c;
    --prism-class: #6b7a3c;
}

/* Dark theme colors (applied via media query or manual override) */
@media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) {
        --prism-text: #e8e5dc;
        --prism-bg: #2a2622;
        --prism-comment: #8b8580;
        --prism-keyword: #d9b385;
        --prism-builtin: #a8b877;
        --prism-string: #d9a36c;
        --prism-number: #e8a87c;
        --prism-function: #8ba8c0;
        --prism-operator: #c9c4ba;
        --prism-punctuation: #a8a49a;
        --prism-constant: #d9b385;
        --prism-class: #a8b877;
    }
}

/* Manual dark theme override */
:root[data-theme="dark"] {
    --prism-text: #e8e5dc;
    --prism-bg: #2a2622;
    --prism-comment: #8b8580;
    --prism-keyword: #d9b385;
    --prism-builtin: #a8b877;
    --prism-string: #d9a36c;
    --prism-number: #e8a87c;
    --prism-function: #8ba8c0;
    --prism-operator: #c9c4ba;
    --prism-punctuation: #a8a49a;
    --prism-constant: #d9b385;
    --prism-class: #a8b877;
}

/* Base styles */
code[class*="language-"],
pre[class*="language-"] {
    color: var(--prism-text);
    background: none;
    font-family: "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", Consolas, "Courier New", monospace;
    font-size: 0.88em;
    text-align: left;
    white-space: pre;
    word-spacing: normal;
    word-break: normal;
    word-wrap: 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;
}

/* Code blocks */
pre[class*="language-"] {
    padding: 1.25rem;
    margin: 1.5rem 0;
    overflow: auto;
    background: var(--prism-bg);
    border: 1px solid var(--border-color);
    border-radius: 3px;
}

/* Inline code */
:not(pre) > code[class*="language-"] {
    padding: 0.1rem 0.25rem;
    border-radius: 2px;
    white-space: normal;
    background: var(--prism-bg);
}

/* Token colors */
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
    color: var(--prism-comment);
    font-style: italic;
}

.token.punctuation {
    color: var(--prism-punctuation);
}

.token.namespace {
    opacity: 0.7;
}

.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant {
    color: var(--prism-constant);
}

.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
    color: var(--prism-string);
}

.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
    color: var(--prism-operator);
}

.token.atrule,
.token.attr-value,
.token.keyword {
    color: var(--prism-keyword);
    font-weight: 500;
}

.token.function,
.token.function-definition {
    color: var(--prism-function);
}

.token.class-name {
    color: var(--prism-class);
}

.token.regex,
.token.important,
.token.variable {
    color: var(--prism-builtin);
}

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

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

.token.entity {
    cursor: help;
}

/* Selection */
pre[class*="language-"]::-moz-selection,
pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection,
code[class*="language-"] ::-moz-selection {
    background: rgba(139, 94, 60, 0.2);
}

pre[class*="language-"]::selection,
pre[class*="language-"] ::selection,
code[class*="language-"]::selection,
code[class*="language-"] ::selection {
    background: rgba(139, 94, 60, 0.2);
}
