/* Monaco Dark+ look for Pygments (.codehilite) */
pre {
    line-height: 125%;
}

/* Line numbers */
td.linenos .normal,
span.linenos {
    color: #858585;
    background: transparent;
}

td.linenos .special,
span.linenos.special {
    color: #ffffff;
    background-color: #4b5632;
}

/* Code block base */
.codehilite {
    background: #0a0f18;
    color: #d4d4d4;
    border-radius: 8px;
    border: 1px solid var(--border);
    display: block;
    overflow: hidden;
}

.codehilite .hll {
    background-color: #264f78;
}

/* Comments */
.codehilite .c,
.codehilite .ch,
.codehilite .cm,
.codehilite .c1,
.codehilite .cs,
.codehilite .cpf {
    color: #6a9955;
    font-style: italic;
}

/* Errors / diagnostics */
.codehilite .err {
    color: #f44747;
    background: transparent;
    border: 1px solid #f44747;
}

.codehilite .gr,
.codehilite .gt,
.codehilite .gd {
    color: #f44747;
}

.codehilite .gi {
    color: #b5cea8;
}

/* Keywords */
.codehilite .k,
.codehilite .kd,
.codehilite .kn,
.codehilite .kp,
.codehilite .kr {
    color: #569cd6;
    font-weight: normal;
}

.codehilite .kc {
    color: #ce9178;
    /* constants */
}

.codehilite .kt {
    color: #b5cea8;
    /* types now match numbers */
}

/* Operator & punctuation */
.codehilite .o {
    color: #d4d4d4;
}

.codehilite .ow {
    color: #569cd6;
}

.codehilite .p {
    color: #c586c0;
}

/* Numbers */
.codehilite .m,
.codehilite .mb,
.codehilite .mf,
.codehilite .mi,
.codehilite .mo,
.codehilite .il {
    color: #b5cea8;
}

.codehilite .mh {
    color: #ce9178;
    /* hex numbers */
}

/* Strings */
.codehilite .s,
.codehilite .sb,
.codehilite .sc,
.codehilite .dl,
.codehilite .sd,
.codehilite .s1,
.codehilite .sh {
    color: #ce9178;
}

.codehilite .s2 {
    color: #ce9178;
}

.codehilite .sa {
    color: #569cd6;
}

.codehilite .si {
    color: #569cd6;
}

.codehilite .se,
.codehilite .ss {
    color: #d7ba7d;
}

.codehilite .sr {
    color: #d16969;
}

/* Names */
.codehilite .n {
    color: #d4d4d4;
}

.codehilite .na {
    color: #9cdcfe;
}

.codehilite .nb {
    color: #4ec9b0;
}

.codehilite .bp {
    color: #9cdcfe;
    /* builtins (self, cls) now light blue */
}

.codehilite .nc {
    color: #4ec9b0;
    /* classes now green */
}

.codehilite .nn {
    color: #4ec9b0;
}

.codehilite .no {
    color: #4fc1ff;
}

.codehilite .nd {
    color: #d7ba7d;
    /* decorators now match class/tag */
}

.codehilite .ne {
    color: #4ec9b0;
}

.codehilite .nf,
.codehilite .fm {
    color: #dcdcaa;
}

.codehilite .nv,
.codehilite .vc,
.codehilite .vg,
.codehilite .vi,
.codehilite .vm {
    color: #9cdcfe;
}

.codehilite .nx {
    color: #9cdcfe;
}

.codehilite .nt {
    color: #569cd6;
    /* tag names */
}

/* Generics / misc */
.codehilite .gh,
.codehilite .gp,
.codehilite .gu {
    color: #d4d4d4;
    font-weight: bold;
}

.codehilite .gs {
    font-weight: bold;
}

.codehilite .ge {
    font-style: italic;
}

.codehilite .go {
    color: #808080;
}

.codehilite .w {
    color: #d4d4d4;
    opacity: 0.3;
}

/* Optional: selection inside code */
.codehilite ::selection {
    background: #264f78;
    color: inherit;
}

/* --- Alignment fixes for Pygments table layout --- */
.codehilite,
.codehilite pre,
.codehilite code,
.codehilite .linenodiv pre {
    font: 13px/1.5 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
        "Liberation Mono", "Courier New", monospace;
}

.codehilite pre,
.codehilite code,
.codehilite .linenodiv pre {
    white-space: pre;
    word-break: normal;
    overflow-wrap: normal;
}

.codehilite pre,
.codehilite .linenodiv pre {
    margin: 0;
}

/* Table layout */
.codehilitetable {
    width: 100%;
    max-width: 100%;
    border-spacing: 0;
    table-layout: auto;
}

.codehilitetable td {
    vertical-align: top;
}

/* Gutter (line numbers) */
.codehilitetable td.linenos {
    width: 1%;
    min-width: max-content;
    white-space: nowrap;
    text-align: right;
    user-select: none;
    overflow: hidden;
    font-variant-numeric: tabular-nums;
    border-right: 1px solid var(--border);
}

.codehilitetable td.linenos pre {
    margin: 0;
    white-space: pre;
    overflow: hidden;
}

/* Code column */
.codehilitetable td.code {
    width: 100%;
    min-width: 0;
    padding-right: 0.8rem;
}

.codehilitetable td.code pre {
    margin: 0;
}

/* Horizontal scroll inside code cell */
.codehilitetable td.code>div {
    display: block;
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    contain: inline-size;

    scrollbar-width: thin;
    scrollbar-color: var(--accent-weak) transparent;
}

.codehilitetable td.code>div::-webkit-scrollbar {
    height: 8px;
}

.codehilitetable td.code>div::-webkit-scrollbar-track {
    background: transparent;
}

.codehilitetable td.code>div::-webkit-scrollbar-thumb {
    background: var(--accent-weak);
    border-radius: 999px;
    border: 2px solid transparent;
    background-clip: padding-box;
}

.codehilitetable td.code>div:hover::-webkit-scrollbar-thumb {
    background: var(--accent);
}

.codehilitetable td.code>div::-webkit-scrollbar-corner {
    background: transparent;
}

.codehilitetable td.code>div::-webkit-scrollbar-button {
    width: 0;
    height: 0;
    display: none;
}