/* hljs 主题微调：教程/文章代码块更易读；行号与代码行高锁定对齐 */
:root {
    --hljs-font-size: 14px;
    --hljs-line-height: 22px;
    --hljs-pad-y: 12px;
    --hljs-gutter-width: 40px;
    --hljs-font: Consolas, "Sarasa Mono SC", "Cascadia Code", "Courier New", monospace;
}

pre code.hljs {
    border-radius: 0;
    border: 1px solid var(--color-border, #e2e8f0);
    padding: var(--hljs-pad-y) 16px;
    font-size: var(--hljs-font-size);
    line-height: var(--hljs-line-height);
    font-weight: 400;
    font-style: normal;
    font-family: var(--hljs-font);
    background: #f6f8fa;
    color: #24292f;
    tab-size: 4;
    -webkit-font-smoothing: antialiased;
}

/* 覆盖 atom-one-light：注释禁止斜体（会撑高行高导致行号错位） */
.hljs-comment,
.hljs-quote,
pre code.hljs .hljs-comment,
pre code.hljs .hljs-quote {
    color: #6a737d !important;
    font-style: normal !important;
    font-weight: 400 !important;
    line-height: inherit !important;
}

/* 柔化 token 颜色 */
.hljs-keyword,
.hljs-selector-tag,
.hljs-doctag,
.hljs-formula {
    color: #0550ae;
    font-weight: 500;
}
.hljs-subst {
    color: #24292f;
}
.hljs-string,
.hljs-regexp,
.hljs-addition,
.hljs-attribute,
.hljs-meta .hljs-string {
    color: #0a3069;
}
.hljs-number,
.hljs-literal,
.hljs-attr,
.hljs-variable,
.hljs-template-variable,
.hljs-selector-attr,
.hljs-selector-class,
.hljs-selector-pseudo,
.hljs-type {
    color: #953800;
}
.hljs-title,
.hljs-section,
.hljs-name,
.hljs-meta,
.hljs-symbol,
.hljs-bullet,
.hljs-link {
    color: #8250df;
}
.hljs-built_in,
.hljs-class .hljs-title,
.hljs-title.class_ {
    color: #953800;
}
.hljs-deletion,
.hljs-selector-id {
    color: #cf222e;
}
.hljs-emphasis {
    font-style: italic;
}
.hljs-strong {
    font-weight: 700;
}
.hljs-link {
    text-decoration: underline;
}

/* 文章页：代码与行号使用同一套字号/行高/顶边距 */
.info pre {
    border-color: #d0d7de;
    background: transparent;
    overflow: hidden;
}

.info pre code.hljs,
.info pre code {
    display: block;
    font-weight: 400 !important;
    font-family: var(--hljs-font) !important;
    font-size: var(--hljs-font-size) !important;
    line-height: var(--hljs-line-height) !important;
    padding: var(--hljs-pad-y) 16px var(--hljs-pad-y) 12px !important;
    box-sizing: border-box;
}

.info pre code.has-numbering {
    margin-left: var(--hljs-gutter-width) !important;
}

.info .pre-numbering {
    position: absolute;
    top: 0;
    left: 0;
    width: var(--hljs-gutter-width) !important;
    height: 100%;
    margin: 0 !important;
    padding: var(--hljs-pad-y) 6px !important;
    border-right: 1px solid #d0d7de;
    border-radius: 0;
    background-color: #eef1f4;
    text-align: right;
    font-family: var(--hljs-font) !important;
    font-size: var(--hljs-font-size) !important;
    line-height: var(--hljs-line-height) !important;
    color: #8b949e;
    box-sizing: border-box;
    list-style: none;
}

.info .pre-numbering li {
    height: var(--hljs-line-height) !important;
    line-height: var(--hljs-line-height) !important;
    margin: 0 !important;
    padding: 0 !important;
    font-size: var(--hljs-font-size) !important;
    font-style: normal !important;
    font-weight: 400 !important;
    list-style: none !important;
    text-indent: 0 !important;
}

.info .pre-numbering li::before {
    display: none !important;
    content: none !important;
}

/* 深色模式 */
html.dark-mode pre code.hljs {
    border-color: #30363d;
    background: #0d1117;
    color: #e6edf3;
}

html.dark-mode .info .pre-numbering {
    background-color: #161b22;
    border-right-color: #30363d;
    color: #7d8590;
}

html.dark-mode .hljs-comment,
html.dark-mode .hljs-quote {
    color: #8b949e !important;
    font-style: normal !important;
}
html.dark-mode .hljs-keyword,
html.dark-mode .hljs-selector-tag,
html.dark-mode .hljs-doctag {
    color: #ff7b72;
    font-weight: 500;
}
html.dark-mode .hljs-subst {
    color: #e6edf3;
}
html.dark-mode .hljs-string,
html.dark-mode .hljs-regexp,
html.dark-mode .hljs-addition,
html.dark-mode .hljs-meta .hljs-string {
    color: #a5d6ff;
}
html.dark-mode .hljs-number,
html.dark-mode .hljs-literal,
html.dark-mode .hljs-variable,
html.dark-mode .hljs-type {
    color: #79c0ff;
}
html.dark-mode .hljs-title,
html.dark-mode .hljs-section,
html.dark-mode .hljs-name,
html.dark-mode .hljs-meta {
    color: #d2a8ff;
}
html.dark-mode .hljs-attribute {
    color: #79c0ff;
}
html.dark-mode .hljs-built_in {
    color: #ffa657;
}
html.dark-mode .hljs-deletion,
html.dark-mode .hljs-selector-id {
    color: #ffa198;
}
