/* PrismJS 1.30.0 — Twilight 主题 + 暗色主题适配 */
/* 修改日期：2026-05-27 */
/* 修改原因：v3.7.0 代码块暗色主题重构，适配 code-block-wrapper 容器结构 */
/* 变更内容：移除 pre 的 border/box-shadow/margin（由 wrapper 控制），隐藏 Prism 工具栏（由自定义顶栏替代），新增 .actual-code-content 选择器支持 */
/* 保留内容：Token 颜色、行号、diff-highlight、treeview、inline-color 等子插件样式 */

/* ===== 基础样式 ===== */
/* 适配暗色主题：pre 背景透明（由 .code-block-wrapper 的 #1e1e1e 控制），移除边框和阴影 */
code[class*=language-],
pre[class*=language-],
pre.actual-code-content {
    color: #d4d4d4;
    background: transparent;
    font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
    font-size: 1em;
    text-align: left;
    white-space: pre;
    word-spacing: normal;
    word-break: normal;
    word-wrap: normal;
    line-height: 1.5;
    -moz-tab-size: 4;
    -o-tab-size: 4;
    tab-size: 4;
    -webkit-hyphens: none;
    -moz-hyphens: none;
    -ms-hyphens: none;
    hyphens: none;
}

/* 行内代码块样式保持 */
:not(pre) > code[class*=language-] {
    background: rgba(255, 255, 255, 0.1);
    border-radius: 3px;
    padding: 0.15em 0.2em 0.05em;
    white-space: normal;
}

/* 选中样式 */
pre[class*=language-]::-moz-selection,
pre.actual-code-content::-moz-selection {
    background: #27292a;
}
pre[class*=language-]::selection,
pre.actual-code-content::selection {
    background: #27292a;
}
code[class*=language-] ::-moz-selection,
code[class*=language-]::-moz-selection,
pre[class*=language-] ::-moz-selection,
pre[class*=language-]::-moz-selection,
pre.actual-code-content ::-moz-selection,
pre.actual-code-content::-moz-selection {
    text-shadow: none;
    background: hsla(0, 0%, 93%, .15);
}
code[class*=language-] ::selection,
code[class*=language-]::selection,
pre[class*=language-] ::selection,
pre[class*=language-]::selection,
pre.actual-code-content ::selection,
pre.actual-code-content::selection {
    text-shadow: none;
    background: hsla(0, 0%, 93%, .15);
}

/* ===== Token 颜色（Twilight 主题，与暗色背景 #1e1e1e 完美兼容） ===== */
.token.cdata,
.token.comment,
.token.doctype,
.token.prolog { color: #777; }
.token.punctuation { opacity: .7; }
.token.namespace { opacity: .7; }
.token.boolean,
.token.deleted,
.token.number,
.token.tag { color: #ce6849; }
.token.builtin,
.token.constant,
.token.keyword,
.token.property,
.token.selector,
.token.symbol { color: #f9ed99; }
.language-css .token.string,
.style .token.string,
.token.attr-name,
.token.attr-value,
.token.char,
.token.entity,
.token.inserted,
.token.operator,
.token.string,
.token.url,
.token.variable { color: #909e6a; }
.token.atrule { color: #7385a5; }
.token.important,
.token.regex { color: #e8c062; }
.token.bold,
.token.important { font-weight: 700; }
.token.italic { font-style: italic; }
.token.entity { cursor: help; }
.language-markup .token.attr-name,
.language-markup .token.punctuation,
.language-markup .token.tag { color: #ac885c; }
.token { position: relative; z-index: 1; }

/* 修复：主题 .tag 类样式污染导致代码块内出现白色不明功能物 */
/* Prism.js 为 PHP/markup 类语言的 HTML 标签 token 生成 <span class="token tag">， */
/* 与主题用于标签云的 .tag 类选择器冲突，导致 padding/background-color/border-radius 等样式泄漏 */
/* 修改日期：2026-05-28 修改原因：v3.8.0 修正主题样式对代码块 token 的视觉污染 */
/* 影响范围：仅重置布局属性，保留 Prism 主题定义的 token 颜色（如 .token.tag 的 #ce6849） */
pre[class*=language-] .token.tag,
pre.actual-code-content .token.tag,
code[class*=language-] .token.tag {
    background: none !important;
    border: none !important;
    padding: 0 !important;
    margin: 0 !important;
    box-shadow: none !important;
    border-radius: 0 !important;
    display: inline !important;
    font-size: inherit !important;
    line-height: inherit !important;
}

/* ===== 行高亮插件 ===== */
.line-highlight.line-highlight {
    background: hsla(0, 0%, 33%, .25);
    background: linear-gradient(to right, hsla(0, 0%, 33%, .1) 70%, hsla(0, 0%, 33%, 0));
    border-bottom: 1px dashed #545454;
    border-top: 1px dashed #545454;
    margin-top: .75em;
    z-index: 0;
}
.line-highlight.line-highlight:before,
.line-highlight.line-highlight[data-end]:after {
    background-color: #8693a6;
    color: #f4f1ef;
}
pre[data-line] {
    position: relative;
    padding: 1em 0 1em 3em;
}
.line-highlight {
    position: absolute;
    left: 0;
    right: 0;
    padding: inherit 0;
    margin-top: 1em;
    background: hsla(24, 20%, 50%, .08);
    background: linear-gradient(to right, hsla(24, 20%, 50%, .1) 70%, hsla(24, 20%, 50%, 0));
    pointer-events: none;
    line-height: inherit;
    white-space: pre;
}
@media print {
    .line-highlight {
        -webkit-print-color-adjust: exact;
        color-adjust: exact;
    }
}
.line-highlight:before,
.line-highlight[data-end]:after {
    content: attr(data-start);
    position: absolute;
    top: .4em;
    left: .6em;
    min-width: 1em;
    padding: 0 .5em;
    background-color: hsla(24, 20%, 50%, .4);
    color: #f4f1ef;
    font: bold 65%/1.5 sans-serif;
    text-align: center;
    vertical-align: .3em;
    border-radius: 999px;
    text-shadow: none;
    box-shadow: 0 1px #fff;
}
.line-highlight[data-end]:after {
    content: attr(data-end);
    top: auto;
    bottom: .4em;
}
.line-numbers .line-highlight:after,
.line-numbers .line-highlight:before {
    content: none;
}
pre[id].linkable-line-numbers span.line-numbers-rows {
    pointer-events: all;
}
pre[id].linkable-line-numbers span.line-numbers-rows > span:before {
    cursor: pointer;
}
pre[id].linkable-line-numbers span.line-numbers-rows > span:hover:before {
    background-color: rgba(128, 128, 128, .2);
}

/* ===== 行号插件（适配 .actual-code-content 结构） ===== */
pre[class*=language-].line-numbers,
pre.actual-code-content.line-numbers {
    position: relative;
    padding-left: 3.8em;
    counter-reset: linenumber;
}
pre[class*=language-].line-numbers > code,
pre.actual-code-content.line-numbers > code {
    position: relative;
    white-space: inherit;
}
.line-numbers .line-numbers-rows {
    position: absolute;
    pointer-events: none;
    top: 0;
    font-size: 100%;
    left: -3.8em;
    width: 3em;
    letter-spacing: -1px;
    border-right: 1px solid #999;
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}
.line-numbers-rows > span {
    display: block;
    counter-increment: linenumber;
}
.line-numbers-rows > span:before {
    content: counter(linenumber);
    color: #999;
    display: block;
    padding-right: .8em;
    text-align: right;
}

/* ===== Prism.js Toolbar 插件 — v3.7.0 隐藏（由自定义顶栏替代） ===== */
/* 修改日期：2026-05-27 修改原因：暗色主题重构，语言名和复制按钮由自定义 code-top-bar 提供 */
div.code-toolbar > .toolbar {
    display: none !important;
}

/* ===== Inline Color 插件 ===== */
span.inline-color-wrapper {
    background: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyIDIiPjxwYXRoIGZpbGw9ImdyYXkiIGQ9Ik0wIDBoMnYySDB6Ii8+PHBhdGggZmlsbD0id2hpdGUiIGQ9Ik0wIDBoMXYxSDB6TTEgMWgxdjFIMXoiLz48L3N2Zz4=);
    background-position: center;
    background-size: 110%;
    display: inline-block;
    height: 1.333ch;
    width: 1.333ch;
    margin: 0 .333ch;
    box-sizing: border-box;
    border: 1px solid #fff;
    outline: 1px solid rgba(0, 0, 0, .5);
    overflow: hidden;
}
span.inline-color {
    display: block;
    height: 120%;
    width: 120%;
}

/* ===== Diff Highlight 插件 ===== */
pre.diff-highlight > code .token.deleted:not(.prefix),
pre > code.diff-highlight .token.deleted:not(.prefix) {
    background-color: rgba(255, 0, 0, .1);
    color: inherit;
    display: block;
}
pre.diff-highlight > code .token.inserted:not(.prefix),
pre > code.diff-highlight .token.inserted:not(.prefix) {
    background-color: rgba(0, 255, 128, .1);
    color: inherit;
    display: block;
}

/* ===== Treeview 插件 ===== */
.token.treeview-part .entry-line {
    position: relative;
    text-indent: -99em;
    display: inline-block;
    vertical-align: top;
    width: 1.2em;
}
.token.treeview-part .entry-line:before,
.token.treeview-part .line-h:after {
    content: "";
    position: absolute;
    top: 0;
    left: 50%;
    width: 50%;
    height: 100%;
}
.token.treeview-part .line-h:before,
.token.treeview-part .line-v:before {
    border-left: 1px solid #ccc;
}
.token.treeview-part .line-v-last:before {
    height: 50%;
    border-left: 1px solid #ccc;
    border-bottom: 1px solid #ccc;
}
.token.treeview-part .line-h:after {
    height: 50%;
    border-bottom: 1px solid #ccc;
}
.token.treeview-part .entry-name {
    position: relative;
    display: inline-block;
    vertical-align: top;
}
.token.treeview-part .entry-name.dotfile {
    opacity: .5;
}
@font-face {
    font-family: PrismTreeview;
    src: url(data:application/font-woff;base64,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) format("woff");
}
.token.treeview-part .entry-name:before {
    content: "\ea01";
    font-family: PrismTreeview;
    font-size: inherit;
    font-style: normal;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    width: 2.5ex;
    display: inline-block;
}
.token.treeview-part .entry-name.dir:before { content: "\ea02"; }
.token.treeview-part .entry-name.ext-bmp:before,
.token.treeview-part .entry-name.ext-eps:before,
.token.treeview-part .entry-name.ext-gif:before,
.token.treeview-part .entry-name.ext-jpe:before,
.token.treeview-part .entry-name.ext-jpeg:before,
.token.treeview-part .entry-name.ext-jpg:before,
.token.treeview-part .entry-name.ext-png:before,
.token.treeview-part .entry-name.ext-svg:before,
.token.treeview-part .entry-name.ext-tiff:before { content: "\ea03"; }
.token.treeview-part .entry-name.ext-cfg:before,
.token.treeview-part .entry-name.ext-conf:before,
.token.treeview-part .entry-name.ext-config:before,
.token.treeview-part .entry-name.ext-csv:before,
.token.treeview-part .entry-name.ext-ini:before,
.token.treeview-part .entry-name.ext-log:before,
.token.treeview-part .entry-name.ext-md:before,
.token.treeview-part .entry-name.ext-nfo:before,
.token.treeview-part .entry-name.ext-txt:before { content: "\ea06"; }
.token.treeview-part .entry-name.ext-asp:before,
.token.treeview-part .entry-name.ext-aspx:before,
.token.treeview-part .entry-name.ext-c:before,
.token.treeview-part .entry-name.ext-cc:before,
.token.treeview-part .entry-name.ext-cpp:before,
.token.treeview-part .entry-name.ext-cs:before,
.token.treeview-part .entry-name.ext-css:before,
.token.treeview-part .entry-name.ext-h:before,
.token.treeview-part .entry-name.ext-hh:before,
.token.treeview-part .entry-name.ext-htm:before,
.token.treeview-part .entry-name.ext-html:before,
.token.treeview-part .entry-name.ext-jav:before,
.token.treeview-part .entry-name.ext-java:before,
.token.treeview-part .entry-name.ext-js:before,
.token.treeview-part .entry-name.ext-php:before,
.token.treeview-part .entry-name.ext-rb:before,
.token.treeview-part .entry-name.ext-xml:before { content: "\ea07"; }
.token.treeview-part .entry-name.ext-7z:before,
.token.treeview-part .entry-name.ext-bz2:before,
.token.treeview-part .entry-name.ext-bz:before,
.token.treeview-part .entry-name.ext-gz:before,
.token.treeview-part .entry-name.ext-rar:before,
.token.treeview-part .entry-name.ext-tar:before,
.token.treeview-part .entry-name.ext-tgz:before,
.token.treeview-part .entry-name.ext-zip:before { content: "\ea08"; }
.token.treeview-part .entry-name.ext-aac:before,
.token.treeview-part .entry-name.ext-au:before,
.token.treeview-part .entry-name.ext-cda:before,
.token.treeview-part .entry-name.ext-flac:before,
.token.treeview-part .entry-name.ext-mp3:before,
.token.treeview-part .entry-name.ext-oga:before,
.token.treeview-part .entry-name.ext-ogg:before,
.token.treeview-part .entry-name.ext-wav:before,
.token.treeview-part .entry-name.ext-wma:before { content: "\ea04"; }
.token.treeview-part .entry-name.ext-avi:before,
.token.treeview-part .entry-name.ext-flv:before,
.token.treeview-part .entry-name.ext-mkv:before,
.token.treeview-part .entry-name.ext-mov:before,
.token.treeview-part .entry-name.ext-mp4:before,
.token.treeview-part .entry-name.ext-mpeg:before,
.token.treeview-part .entry-name.ext-mpg:before,
.token.treeview-part .entry-name.ext-ogv:before,
.token.treeview-part .entry-name.ext-webm:before { content: "\ea05"; }
.token.treeview-part .entry-name.ext-pdf:before { content: "\ea09"; }
.token.treeview-part .entry-name.ext-xls:before,
.token.treeview-part .entry-name.ext-xlsx:before { content: "\ea0a"; }
.token.treeview-part .entry-name.ext-doc:before,
.token.treeview-part .entry-name.ext-docm:before,
.token.treeview-part .entry-name.ext-docx:before { content: "\ea0c"; }
.token.treeview-part .entry-name.ext-pps:before,
.token.treeview-part .entry-name.ext-ppt:before,
.token.treeview-part .entry-name.ext-pptx:before { content: "\ea0b"; }
