:root {
    --code-bg: #1e1e1e;
    --code-border: #3c3c3c;
    --line-num-bg: #252526;
    --line-num-color: #ffffff;
    --copy-btn-bg: #3a3a3a;
    --copy-btn-hover-bg: #444444;
    --copy-success-bg: #6a9955;
    --cmake-keyword: #569cd6;
    --cmake-string: #ce9178;
    --cmake-comment: #6a9955;
    --cmake-builtin: #4ec9b0;
    --cmake-function: #dcdcaa;
    --cmake-def: #c586c0;
    --cmake-variable: #9cdcfe;
    --transition: all 0.2s ease;
    --copy-btn-width: 48px;
    --copy-btn-height: 24px;
    --copy-btn-right: 8px;
    --copy-btn-top: 8px;
}

/* 1. 代码块外层容器 - 核心：开启定位 + 禁止 overflow 遮挡行号/按钮 */
#cnblogs_post_body pre {
    background-color: var(--code-bg) !important;
    border: 1px solid var(--code-border) !important;
    border-radius: 2px !important;
    margin: 1.5em 0 !important;
    padding: 0 !important;
    position: relative !important;
    z-index: 1 !important;
    overflow: hidden !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.5) !important;
    pointer-events: auto !important;
    line-height: 1.5 !important;
}

/* 2. 代码内容区域 - 左内边距预留行号位置 */
#cnblogs_post_body pre code {
    display: block !important;
    background-color: transparent !important;
    border: none !important;
    color: #d4d4d4 !important;
    font-family: Consolas, Monaco, Courier New, monospace !important;
    font-size: 14px !important;
    line-height: 1.5 !important;
    padding: 1em !important;
    padding-left: 4em !important; /* 给行号留3em宽度 + 1em间距 */
    overflow-x: auto !important;
    white-space: pre !important;
}

/* 3. 行号容器样式 - JS 动态生成 */
#cnblogs_post_body pre .line-number {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    width: 3em !important;
    height: 100% !important;
    background-color: var(--line-num-bg) !important;
    border-right: 1px solid var(--code-border) !important;
    box-sizing: border-box !important;
    padding: 1em 10px 0 !important;
    text-align: right !important;
    user-select: none !important;
    z-index: 2 !important;
    pointer-events: none !important;
}
#cnblogs_post_body pre .line-number span {
    display: block !important;
    color: var(--line-num-color) !important;
    font-family: Consolas, Monaco, Courier New, monospace !important;
    font-size: 14px !important;
    line-height: 1.5 !important;
}


/* 按钮 hover 样式 - 仅 JS 触发时生效 */
#cnblogs_post_body pre.btn-hover::after {
    background-color: var(--copy-btn-hover-bg) !important;
    border-color: #555555 !important;
    transform: translateY(-1px) !important;
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.4) !important;
}

/* 复制成功样式 - 加宽按钮适配文字 */
#cnblogs_post_body pre.copy-success::after {
    content: "复制成功" !important;
    width: 64px !important;
    background-color: var(--copy-success-bg) !important;
    color: #ffffff !important;
    border-color: #7bb969 !important;
}

/* 5. CMake 语法高亮 */
#cnblogs_post_body pre code .hljs-keyword { color: var(--cmake-keyword) !important; }
#cnblogs_post_body pre code .hljs-string { color: var(--cmake-string) !important; }
#cnblogs_post_body pre code .hljs-comment { color: var(--cmake-comment) !important; font-style: italic !important; }
#cnblogs_post_body pre code .hljs-built_in { color: var(--cmake-builtin) !important; }
#cnblogs_post_body pre code .hljs-function { color: var(--cmake-function) !important; font-weight: 700 !important; }
#cnblogs_post_body pre code .hljs-title { color: var(--cmake-def) !important; font-weight: 700 !important; }
#cnblogs_post_body pre code .hljs-variable { color: var(--cmake-variable) !important; }
#cnblogs_post_body pre code .hljs-number { color: #b5cea8 !important; }

/* 6. 行内代码样式 */
#cnblogs_post_body code:not(pre code) {
    background-color: #2d2d2d !important;
    color: #d4d4d4 !important;
    border: 1px solid var(--code-border) !important;
    border-radius: 2px !important;
    padding: 2px 4px !important;
    font-family: Consolas, Monaco, Courier New, monospace !important;
    font-size: 13px !important;
    margin: 0 2px !important;
}