/* =========================================================================
   Syntax highlighting
   Colours come from custom properties, so the explicit theme toggle changes
   code as well. A `prefers-color-scheme` rule alone would leave code dark
   inside a manually selected light theme.
   ========================================================================= */

:root {
    --code-fg: #e6edf3;
    --code-keyword: #ff7b72;
    --code-type: #79c0ff;
    --code-call: #d2a8ff;
    --code-string: #a5d6ff;
    --code-number: #79c0ff;
    --code-comment: #8b949e;  /* 6.2:1 on --bg-subtle */
    --code-property: #ffa657;
    --code-added: #3fb950;
    --code-removed: #f85149;
}

@media (prefers-color-scheme: light) {
    :root:not([data-theme="dark"]) {
        --code-fg: #1f2328;
        --code-keyword: #cf222e;
        --code-type: #0550ae;
        --code-call: #8250df;
        --code-string: #0a3069;
        --code-number: #0550ae;
        --code-comment: #57606a;  /* 6.1:1 on --bg-subtle */
        --code-property: #953800;
        --code-added: #116329;
        --code-removed: #a40e26;
    }
}

:root[data-theme="light"] {
    --code-fg: #1f2328;
    --code-keyword: #cf222e;
    --code-type: #0550ae;
    --code-call: #8250df;
    --code-string: #0a3069;
    --code-number: #0550ae;
    --code-comment: #57606a;
    --code-property: #953800;
    --code-added: #116329;
    --code-removed: #a40e26;
}

pre code {
    color: var(--code-fg);
    font-family: var(--font-mono);
    tab-size: 4;
}

/* Splash emits these classes for Swift. The bare class names cover the
   client-side highlighters used on Linux, where Splash stays disabled. */

.keyword,
.swift .keyword,
.hljs-keyword,
.token.keyword {
    color: var(--code-keyword);
    font-weight: 500;
}

.type,
.swift .type,
.hljs-type,
.hljs-title.class_,
.token.class-name {
    color: var(--code-type);
}

.call,
.swift .call,
.hljs-title.function_,
.token.function {
    color: var(--code-call);
}

.string,
.swift .string,
.hljs-string,
.token.string {
    color: var(--code-string);
}

.number,
.swift .number,
.hljs-number,
.token.number {
    color: var(--code-number);
}

.comment,
.swift .comment,
.hljs-comment,
.token.comment {
    color: var(--code-comment);
    font-style: italic;
}

.property,
.swift .property,
.swift .dot,
.hljs-attr,
.token.property {
    color: var(--code-property);
}

.preprocessing,
.swift .preprocessing,
.hljs-meta,
.token.directive {
    color: var(--code-call);
}

.diff .addition,
.hljs-addition,
.token.inserted {
    color: var(--code-added);
}

.diff .deletion,
.hljs-deletion,
.token.deleted {
    color: var(--code-removed);
}
