﻿/**
 * Visual Studio Code Dark+ Theme for Prism.js
 * Replaces the default light theme with a proper dark IDE color scheme.
 * Colors match VS Code's default Dark+ / One Dark Pro theme.
 */

/* ── Base token colors ─────────────────────────────────────────── */

/* Comments → muted green (VS Code: #6A9955) */
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
    color: #6A9955;
    font-style: italic;
}

/* Strings, template literals, attr-values → warm orange (VS Code: #CE9178) */
.token.string,
.token.attr-value,
.token.char,
.token.inserted {
    color: #CE9178;
}

/* Keywords → blue (VS Code: #569CD6) */
.token.keyword,
.token.atrule,
.token.important {
    color: #569CD6;
    font-weight: 600;
}

/* Control flow keywords (if/else/return/for) → magenta-ish */
.token.control,
.token.directive {
    color: #C586C0;
}

/* Class names, types → cyan-green (VS Code: #4EC9B0) */
.token.class-name,
.token.builtin {
    color: #4EC9B0;
}

/* Function names → yellow (VS Code: #DCDCAA) */
.token.function {
    color: #DCDCAA;
}

/* Numbers → light green (VS Code: #B5CEA8) */
.token.boolean,
.token.number {
    color: #B5CEA8;
}

/* HTML/JSX tags → blue (VS Code: #569CD6) */
.token.tag {
    color: #569CD6;
}

/* HTML attribute names → light blue (VS Code: #9CDCFE) */
.token.attr-name {
    color: #9CDCFE;
}

/* CSS properties → light blue */
.token.property {
    color: #9CDCFE;
}

/* Selectors → yellow */
.token.selector {
    color: #D7BA7D;
}

/* Punctuation, brackets, semicolons → soft white */
.token.punctuation {
    color: #D4D4D4;
}

/* Operators → soft white */
.token.operator,
.token.entity,
.token.url {
    color: #D4D4D4;
}

/* Regex → orange */
.token.regex {
    color: #D16969;
}

/* Variables → light blue (VS Code: #9CDCFE) */
.token.variable,
.token.parameter {
    color: #9CDCFE;
}

/* Deleted (diff) */
.token.deleted {
    color: #F44747;
}

.namespace {
    opacity: 0.75;
}

/* ── Line numbers layout ────────────────────────────────────────── */
.linenums     > ol { padding-left: 0; margin: 0; }
.linenumsltE1 > ol { padding-left: 2.2rem; }
.linenumsltE2 > ol { padding-left: 2.7rem; }
.linenumsltE3 > ol { padding-left: 3.2rem; }
.linenumsltE4 > ol { padding-left: 3.7rem; }
.linenumsltE5 > ol { padding-left: 4.2rem; }
.linenumsltE6 > ol { padding-left: 4.7rem; }
.linenumsltE7 > ol { padding-left: 5.2rem; }
.linenumsltE8 > ol { padding-left: 5.7rem; }
.linenumsltE9 > ol { padding-left: 6.2rem; }

/* ── Line styling — VS Code style, NO alternating bands ─────────── */

/* Base line — transparent, just the code text */
li.L0, li.L1, li.L2, li.L3, li.L4,
li.L5, li.L6, li.L7, li.L8, li.L9 {
    background: transparent !important;
    border: none !important;
}

/* Remove the odd-stripe that made rows unreadable */
.odd-code-line {
    background: transparent !important;
}

/* Subtle hover highlight like VS Code */
.linenums ol li:hover {
    background: rgba(255, 255, 255, 0.04) !important;
}

/* Line number gutter style (counter shown via ol > li ::marker) */
.linenums ol {
    counter-reset: linenumber;
    list-style: decimal;
}
