/*!
 * dark.css - MinDoc 全站强制深色主题
 *
 * 覆盖范围：bootstrap3 / kancloud.css / main.css / markdown.css /
 *           editor.md preview / cherry-markdown / jstree / prismjs
 * 加载方式：各模板 </head> 前最后一个 <link>，确保压过所有前置样式。
 * 不加载的页面：views/document/export.tpl（导出/打印）、
 *               views/account/mail_template.tpl（邮件）。
 */

:root {
    color-scheme: dark;

    --dk-bg:        #1a1d21;  /* 页面底色 */
    --dk-surface:   #22262b;  /* 卡片 / 侧栏 / 面板 */
    --dk-surface-2: #2a2f36;  /* 抬升层：下拉、弹窗、输入框 */
    --dk-surface-3: #323841;  /* hover / 选中 */
    --dk-code:      #16191d;  /* 代码块 */
    --dk-border:    #363c45;
    --dk-text:      #c9d1d9;
    --dk-text-dim:  #8b949e;
    --dk-link:      #58a6ff;
    --dk-link-hover:#79b8ff;
}

/* ========== 1. 全局基底 ========== */

html,
body {
    background-color: var(--dk-bg) !important;
    color: var(--dk-text);
}

body,
p, li, dd, dt, td, th, label, span, div, section, article, aside, main {
    color: inherit;
}

/* UA 默认的 a:visited 特异度高于 a，不显式覆盖会漏出紫色 */
a,
a:visited { color: var(--dk-link); }
a:hover,
a:focus { color: var(--dk-link-hover); }

/* 顶栏 / 侧边菜单里的链接跟随正文色，不走链接蓝。
   必须排除 .btn —— 否则彩色按钮的白字会被这条盖成浅灰，落在绿/红底上反而看不清 */
.manual-header a:not(.btn),
.manual-header a:not(.btn):visited,
.navbar a:not(.btn),
.navbar a:not(.btn):visited,
.manual-body .page-left .menu a,
.manual-body .page-left .menu a:visited,
.jstree-anchor,
.jstree-anchor:visited { color: var(--dk-text); }
.manual-header a:not(.btn):hover,
.navbar a:not(.btn):hover { color: #fff; }

/* 彩色按钮始终白字 */
.btn-primary, .btn-success, .btn-info, .btn-warning, .btn-danger,
a.btn-primary, a.btn-success, a.btn-info, a.btn-warning, a.btn-danger,
.btn-primary:hover, .btn-success:hover, .btn-info:hover, .btn-warning:hover, .btn-danger:hover,
.btn-primary:focus, .btn-success:focus, .btn-info:focus, .btn-warning:focus, .btn-danger:focus {
    color: #fff !important;
}

hr { border-top-color: var(--dk-border); }

::selection { background: #2f5b8c; color: #fff; }

/* 结构性容器一律不自带底色，由 body 透出深色 */
.container,
.container-fluid,
.row,
.wrapper,
.content,
.main-body {
    background-color: transparent !important;
}

/* ========== 2. Bootstrap 3 ========== */

.panel,
.panel-footer,
.panel-default > .panel-heading,
.well,
.modal-content,
.popover,
.popover-title,
.jumbotron,
.thumbnail,
.progress,
.breadcrumb,
.list-group-item {
    background-color: var(--dk-surface) !important;
    border-color: var(--dk-border) !important;
    color: var(--dk-text);
}

.panel-heading,
.panel-body,
.panel-footer,
.modal-header,
.modal-body,
.modal-footer {
    border-color: var(--dk-border) !important;
}

.modal-backdrop { background-color: #000; }
.modal-backdrop.in { opacity: .7; }

/* 表格 */
.table,
.table > thead > tr > th,
.table > tbody > tr > td,
.table > tbody > tr > th,
.table > tfoot > tr > td,
.table td,
.table th,
.table .table {
    background-color: transparent !important;
    border-color: var(--dk-border) !important;
    color: var(--dk-text);
}
.table > thead > tr > th { border-bottom-color: var(--dk-border) !important; }
.table-striped > tbody > tr:nth-of-type(odd) { background-color: #1f2328 !important; }
.table-hover > tbody > tr:hover { background-color: var(--dk-surface-3) !important; }
.table > tbody > tr.active > td,
.table > tbody > tr.active > th,
.table > tbody > tr > td.active,
.table > tbody > tr > th.active,
.table > tfoot > tr.active > td,
.table > tfoot > tr.active > th,
.table > thead > tr.active > td,
.table > thead > tr.active > th { background-color: var(--dk-surface-3) !important; }

/* 表单 */
.form-control,
.input-readonly,
input[type="text"],
input[type="password"],
input[type="email"],
input[type="number"],
input[type="search"],
input[type="url"],
input[type="tel"],
input[type="date"],
textarea,
select {
    background-color: var(--dk-surface-2) !important;
    border-color: var(--dk-border) !important;
    color: var(--dk-text) !important;
    box-shadow: none;
}
.form-control:focus,
input:focus,
textarea:focus,
select:focus {
    border-color: #4a86c5 !important;
    box-shadow: 0 0 0 2px rgba(74, 134, 197, .25);
}
.form-control[disabled],
.form-control[readonly],
fieldset[disabled] .form-control,
input[disabled],
textarea[disabled] {
    background-color: #202429 !important;
    color: var(--dk-text-dim) !important;
}
::placeholder { color: #6e7681 !important; }
.input-group-addon {
    background-color: var(--dk-surface-3) !important;
    border-color: var(--dk-border) !important;
    color: var(--dk-text);
}
.help-block { color: var(--dk-text-dim); }
fieldset,
legend { border-color: var(--dk-border) !important; color: var(--dk-text); }

/* 按钮 */
.btn-default,
.btn-default.disabled,
.btn-default[disabled],
.btn-default.disabled.focus,
.btn-default.disabled:focus,
.btn-default.disabled:hover,
.btn-default[disabled].focus,
.btn-default[disabled]:focus,
.btn-default[disabled]:hover {
    background-color: var(--dk-surface-2) !important;
    border-color: var(--dk-border) !important;
    color: var(--dk-text) !important;
}
.btn-default:hover,
.btn-default:focus,
.btn-default.active,
.btn-default:active {
    background-color: var(--dk-surface-3) !important;
    border-color: #454c56 !important;
    color: #fff !important;
}
.close {
    color: var(--dk-text);
    text-shadow: none;
    opacity: .6;
}
.close:hover { color: #fff; opacity: 1; }

/* 徽标：彩色按钮里的 badge 原本是白底 */
.btn-primary .badge,
.btn-success .badge,
.btn-info .badge,
.btn-warning .badge,
.btn-danger .badge,
.list-group-item.active > .badge,
.nav-pills > .active > a > .badge {
    background-color: rgba(0, 0, 0, .35) !important;
    color: #fff !important;
}

/* 导航 / 下拉 */
.navbar-default,
.dropdown-menu,
.nav-tabs > li.active > a,
.nav-tabs > li.active > a:focus,
.nav-tabs > li.active > a:hover {
    background-color: var(--dk-surface) !important;
    border-color: var(--dk-border) !important;
    color: var(--dk-text) !important;
}
.dropdown-menu { box-shadow: 0 6px 18px rgba(0, 0, 0, .5); }
.dropdown-menu > li > a { color: var(--dk-text); }
.dropdown-menu > li > a:focus,
.dropdown-menu > li > a:hover,
.nav > li > a:focus,
.nav > li > a:hover,
.nav .open > a,
.nav .open > a:focus,
.nav .open > a:hover {
    background-color: var(--dk-surface-3) !important;
    color: #fff !important;
    border-color: var(--dk-border) !important;
}
.dropdown-menu .divider { background-color: var(--dk-border); }
.nav-tabs { border-bottom-color: var(--dk-border); }
.navbar-default .navbar-nav > li > a,
.navbar-default .navbar-brand { color: var(--dk-text); }

/* 分页 */
.pagination > li > a,
.pagination > li > span,
.pager li > a,
.pager li > span {
    background-color: var(--dk-surface-2) !important;
    border-color: var(--dk-border) !important;
    color: var(--dk-link) !important;
}
.pagination > li > a:focus,
.pagination > li > a:hover,
.pagination > li > span:focus,
.pagination > li > span:hover,
.pager li > a:focus,
.pager li > a:hover {
    background-color: var(--dk-surface-3) !important;
    border-color: var(--dk-border) !important;
}
.pagination > .disabled > a,
.pagination > .disabled > a:focus,
.pagination > .disabled > a:hover,
.pagination > .disabled > span,
.pagination > .disabled > span:focus,
.pagination > .disabled > span:hover,
.pager .disabled > a,
.pager .disabled > a:focus,
.pager .disabled > a:hover,
.pager .disabled > span {
    background-color: #202429 !important;
    border-color: var(--dk-border) !important;
    color: #5c636b !important;
}

.list-group-item.disabled,
.list-group-item.disabled:focus,
.list-group-item.disabled:hover {
    background-color: #202429 !important;
    color: var(--dk-text-dim) !important;
}
a.list-group-item:focus,
a.list-group-item:hover,
button.list-group-item:focus,
button.list-group-item:hover {
    background-color: var(--dk-surface-3) !important;
    color: #fff !important;
}

.img-thumbnail {
    background-color: var(--dk-surface) !important;
    border-color: var(--dk-border) !important;
}
.carousel-indicators .active { background-color: var(--dk-text) !important; }

/* ========== 3. kancloud.css：阅读页主布局 ========== */

.m-manual .manual-head,
.m-manual .manual-left,
.m-manual .manual-left .m-copyright,
.m-manual .manual-right .manual-article,
.m-manual .manual-tab .tab-item,
.m-manual .manual-search .btn-search {
    background-color: var(--dk-surface) !important;
    border-color: var(--dk-border) !important;
    color: var(--dk-text);
}
.m-manual .manual-right .manual-article { background-color: var(--dk-bg) !important; }
.m-manual .manual-tab .tab-item.active { background-color: var(--dk-surface-3) !important; }
table > tbody > tr:hover { background-color: var(--dk-surface-3) !important; }

/* 评论区 */
.m-comment .comment-item .avatar,
.m-comment .comment-item .vote .agree,
.m-comment .comment-item .vote .oppose,
.m-comment .comment-item .vote .count {
    background-color: var(--dk-surface-2) !important;
    border-color: var(--dk-border) !important;
    color: var(--dk-text);
}
.m-comment .comment-item .content pre {
    background-color: var(--dk-code) !important;
    border-color: var(--dk-border) !important;
    color: var(--dk-text);
}

.editor-content table tr:nth-child(2n) { background-color: #1f2328 !important; }
.editor-content .markdown-toc {
    background-color: var(--dk-surface) !important;
    border-color: var(--dk-border) !important;
}

/* ========== 4. main.css：头部 / 列表 / 后台 ========== */

.manual-header,
.user-info,
.manual-body .page-left,
.manual-list .list-item .manual-item-standard .cover,
.login .login-body,
.manager .dashboard-item,
.footer {
    background-color: var(--dk-surface) !important;
    border-color: var(--dk-border) !important;
    color: var(--dk-text);
}
.user-info:hover,
.manual-body .page-left .menu .item:hover,
.users-list .list-item:hover,
.manual-search-reader .search-item:hover {
    background-color: var(--dk-surface-3) !important;
}
.footer,
.footer a { color: var(--dk-text-dim); }
.footer a:hover { color: var(--dk-link-hover); }

/* ========== 5. markdown.css：编辑器周边 ========== */

.manual-category,
.markdown-category,
.manual-editor-status,
.markdown-editor-status,
.attach-list,
.attach-drop-panel .webuploader-pick,
.editormd-group a > i,
.editormd-group .disabled i:hover,
.attach-list .attach-item .close {
    background-color: var(--dk-surface) !important;
    border-color: var(--dk-border) !important;
    color: var(--dk-text) !important;
}

/* ========== 6. editor.md 预览 ========== */

.editormd-preview-container,
.editormd-html-preview,
.markdown-body {
    background-color: var(--dk-bg) !important;
    color: var(--dk-text) !important;
}
.markdown-body table tr,
.editormd-preview-container table tr {
    background-color: transparent !important;
    border-color: var(--dk-border) !important;
    color: var(--dk-text);
}
.markdown-body table tr:nth-child(2n),
.editormd-preview-container table tr:nth-child(2n) { background-color: #1f2328 !important; }
.editormd-preview-container table thead tr,
.editormd-html-preview table thead tr { background-color: var(--dk-surface) !important; }
.markdown-body table td,
.markdown-body table th { border-color: var(--dk-border) !important; }

.markdown-body h1,
.markdown-body h2 { border-bottom-color: var(--dk-border) !important; }
.markdown-body blockquote {
    color: var(--dk-text-dim) !important;
    border-left-color: #444c56 !important;
    background-color: transparent !important;
}
.markdown-body hr { background-color: var(--dk-border) !important; }

.editormd-preview-container .editormd-toc-menu > .markdown-toc > ul,
.editormd-html-preview .editormd-toc-menu > .markdown-toc > ul,
.editormd-preview-container .editormd-toc-menu > .markdown-toc > ul > li ul,
.editormd-html-preview .editormd-toc-menu > .markdown-toc > ul > li ul {
    background-color: var(--dk-surface-2) !important;
    border-color: var(--dk-border) !important;
}

li.L1, li.L3, li.L5, li.L7, li.L9 { background-color: transparent !important; }

/* ========== 7. 代码块 / 语法高亮 ========== */

pre,
code,
kbd,
samp,
.markdown-body pre,
.markdown-body .highlight pre,
.markdown-body code,
.hljs,
pre[class*="language-"],
code[class*="language-"] {
    background-color: var(--dk-code) !important;
    color: #d5dae1 !important;
    border-color: var(--dk-border) !important;
    text-shadow: none !important;
}
.markdown-body code { background-color: rgba(110, 118, 129, .25) !important; }
.markdown-body pre > code { background-color: transparent !important; }
:not(pre) > code[class*="language-"] { background-color: rgba(110, 118, 129, .25) !important; }

/* prismjs 行号栏 */
.line-numbers .line-numbers-rows { border-right-color: var(--dk-border) !important; }
.line-numbers-rows > span:before { color: #5c636b !important; }

/* prismjs 代码块「复制」工具条：默认 opacity:0，只在 hover 时才露出，
   底色是 #f5f2f0 —— 运行时探针默认会跳过透明元素，所以这里必须手动盯住 */
div.code-toolbar > .toolbar > .toolbar-item > a,
div.code-toolbar > .toolbar > .toolbar-item > button,
div.code-toolbar > .toolbar > .toolbar-item > span {
    background: var(--dk-surface-3) !important;
    color: var(--dk-text) !important;
    box-shadow: 0 2px 0 0 rgba(0, 0, 0, .4) !important;
}

/* CodeMirror（cherry / editor.md 编辑区） */
.CodeMirror,
.CodeMirror-gutters,
.CodeMirror-scrollbar-filler,
.CodeMirror-gutter-filler {
    background-color: var(--dk-code) !important;
    color: var(--dk-text) !important;
    border-color: var(--dk-border) !important;
}
.CodeMirror-linenumber { color: #5c636b !important; }
.CodeMirror-cursor { border-left-color: var(--dk-text) !important; }
.CodeMirror-selected { background: #2f5b8c !important; }

/* ========== 8. cherry-markdown（含 theme__light/green/violet 强制拉黑） ========== */

.cherry,
.cherry-markdown,
.cherry-toolbar,
.cherry-dropdown,
.cherry-bubble,
.cherry-sidebar,
.cherry-floatmenu,
.cherry-editor,
.cherry-previewer,
.cherry-color-wrap,
.cherry-suggester-panel,
.cherry .ace_search,
.cherry-previewer .cherry-mobile-previewer-content,
.cherry.theme__light .cherry-toolbar,
.cherry.theme__light .cherry-floatmenu,
.cherry.theme__light .cherry-bubble,
.cherry.theme__light .cherry-sidebar,
.cherry.theme__light .cherry-dropdown,
.cherry.theme__light .cherry-editor,
.cherry.theme__light .cherry-editor .CodeMirror,
.cherry.theme__light .cherry-previewer,
.cherry.theme__light .cherry-previewer .cherry-mobile-previewer-content,
.cherry.theme__green .cherry-toolbar,
.cherry.theme__green .cherry-floatmenu,
.cherry.theme__green .cherry-bubble,
.cherry.theme__green .cherry-sidebar,
.cherry.theme__green .cherry-dropdown,
.cherry.theme__green .cherry-editor,
.cherry.theme__green .cherry-editor .CodeMirror,
.cherry.theme__green .cherry-previewer .cherry-mobile-previewer-content,
.cherry.theme__violet .cherry-toolbar,
.cherry.theme__violet .cherry-floatmenu,
.cherry.theme__violet .cherry-bubble,
.cherry.theme__violet .cherry-sidebar,
.cherry.theme__violet .cherry-dropdown,
.cherry.theme__violet .cherry-editor,
.cherry.theme__violet .cherry-editor .CodeMirror,
.cherry.theme__violet .cherry-previewer,
.cherry.theme__violet .cherry-previewer .cherry-mobile-previewer-content,
.manual-article.theme__light,
.manual-article.theme__violet,
.cherry-markdown.theme__light,
.cherry-markdown.theme__violet {
    background-color: var(--dk-surface) !important;
    color: var(--dk-text) !important;
    border-color: var(--dk-border) !important;
}
.cherry-previewer,
.cherry-markdown,
.manual-article.theme__light,
.manual-article.theme__violet,
.cherry-markdown.theme__light,
.cherry-markdown.theme__violet { background-color: var(--dk-bg) !important; }
.cherry-editor,
.cherry.theme__light .cherry-editor .CodeMirror,
.cherry.theme__green .cherry-editor .CodeMirror,
.cherry.theme__violet .cherry-editor .CodeMirror { background-color: var(--dk-code) !important; }
.cherry-markdown table th { background-color: var(--dk-surface) !important; }
.cherry-markdown table th,
.cherry-markdown table td { border-color: var(--dk-border) !important; }
.cherry-toolbar-button,
.cherry-dropdown-item { color: var(--dk-text) !important; }
.cherry-toolbar-button:hover,
.cherry-dropdown-item:hover { background-color: var(--dk-surface-3) !important; }
.cherry .cherry-previewer-table-hover-handler__symbol,
.cherry-previewer div[data-type="codeBlock"]:hover .cherry-copy-code-block:hover {
    background-color: var(--dk-surface-3) !important;
    color: var(--dk-text) !important;
}
.cherry-previewer-table-content-hander__input textarea {
    background-color: var(--dk-surface-2) !important;
    color: var(--dk-text) !important;
}

/* ========== 9. jstree 目录树 ========== */

.jstree-default .jstree-anchor,
.jstree-anchor { color: var(--dk-text) !important; }
.jstree-default .jstree-hovered,
.jstree-default .jstree-clicked,
.jstree-default .jstree-wholerow-hovered,
.jstree-default .jstree-wholerow-clicked {
    background: var(--dk-surface-3) !important;
    box-shadow: none !important;
    color: #fff !important;
}
.vakata-context,
.vakata-context ul {
    background-color: var(--dk-surface-2) !important;
    border-color: var(--dk-border) !important;
    box-shadow: 0 6px 18px rgba(0, 0, 0, .5) !important;
}
.vakata-context li > a { color: var(--dk-text) !important; }
.vakata-context li > a:hover { background-color: var(--dk-surface-3) !important; }
.vakata-context .vakata-context-separator > a,
.vakata-context .vakata-context-separator > a:hover,
.vakata-context li > a .vakata-contextmenu-sep {
    background-color: var(--dk-border) !important;
}

/* ========== 10. 第三方弹层 / 组件 ========== */

/* layer 弹层 */
.layui-layer,
.layui-layer-title,
.layui-layer-content,
.layui-layer-btn {
    background-color: var(--dk-surface-2) !important;
    border-color: var(--dk-border) !important;
    color: var(--dk-text) !important;
}
.layui-layer-btn a {
    background-color: var(--dk-surface-3) !important;
    border-color: var(--dk-border) !important;
    color: var(--dk-text) !important;
}

/* select2 */
.select2-container--default .select2-selection--single,
.select2-container--default .select2-selection--multiple,
.select2-dropdown,
.select2-search__field {
    background-color: var(--dk-surface-2) !important;
    border-color: var(--dk-border) !important;
    color: var(--dk-text) !important;
}
.select2-container--default .select2-results__option[aria-selected="true"],
.select2-container--default .select2-results__option--highlighted[aria-selected] {
    background-color: var(--dk-surface-3) !important;
    color: #fff !important;
}
.select2-container--default .select2-selection--single .select2-selection__rendered { color: var(--dk-text) !important; }

/* nprogress 顶部进度条 */
#nprogress .bar { background: var(--dk-link) !important; }
#nprogress .peg { box-shadow: 0 0 10px var(--dk-link), 0 0 5px var(--dk-link) !important; }

/* ========== 10b. kancloud.css 补漏 ========== */

.m-manual .manual-search .search-list a.active {
    background: var(--dk-surface-3) !important;
    color: #fff !important;
}
.m-manual .manual-progress { background-color: var(--dk-border) !important; }
.m-comment .comment-more .more-inner:hover,
.m-comment .comment-replace .more-inner:hover {
    background-color: var(--dk-surface-3) !important;
}
/* 搜索命中高亮：保留黄色，但文字必须转深色才看得清 */
.m-manual .search-highlight {
    background-color: #ffd54f !important;
    color: #1a1d21 !important;
}
/* 提示型引用块：改成深色底 + 彩色左边框 */
.editor-content blockquote.info {
    background-color: #17303f !important;
    border-color: #2b6ea8 !important;
    color: var(--dk-text) !important;
}
.editor-content blockquote.warning {
    background-color: #3a2f16 !important;
    border-color: #a5822a !important;
    color: var(--dk-text) !important;
}
.editor-content blockquote.danger {
    background-color: #3d1f1f !important;
    border-color: #a34141 !important;
    color: var(--dk-text) !important;
}
.editor-content blockquote.success {
    background-color: #1b3324 !important;
    border-color: #37814f !important;
    color: var(--dk-text) !important;
}

/* ========== 10c. main.css 补漏 ========== */

.manual-body .page-left .menu .item:hover,
.book-list .list-item:hover,
.pagination-container .pagination > .active > a {
    background-color: var(--dk-surface-3) !important;
    color: #fff !important;
}
/* 左侧菜单选中项原本是 #DDB 卡其色 */
.manual-body .page-left .menu li.active .item {
    background-color: #2f5b8c !important;
    color: #fff !important;
}
.tag-container-outer .tags a,
#upload-logo-panel .wraper,
#upload-logo-panel .watch-crop-list {
    background-color: var(--dk-surface-2) !important;
    border-color: var(--dk-border) !important;
    color: var(--dk-text) !important;
}

/* ========== 10d. markdown.css / markdown.preview.css 补漏 ========== */

.editormd-group a i:hover { background-color: var(--dk-surface-3) !important; }
.template-list .container .section,
.template-list .container .section > a .fa {
    background-color: var(--dk-surface) !important;
    border-color: var(--dk-border) !important;
    color: var(--dk-text) !important;
}
/* 表头原本 #f2f2f2 —— 静态扫描按“纯白”找不出来，靠运行时探针抓到的 */
.editormd-preview-container table th,
.editormd-html-preview table th,
.markdown-body table th,
.editor-content table th {
    background-color: var(--dk-surface) !important;
    color: var(--dk-text) !important;
    border-color: var(--dk-border) !important;
}

/* ========== 10e. editor.md 编辑器外壳 ========== */

.editormd-toolbar,
.editormd-dropdown-menu,
.editormd-container,
.editormd-dialog,
.editormd-mask,
.editormd-dialog-mask-bg,
.editormd-container-mask,
.editormd-preview,
.editormd-tab-head li.active a,
.editormd-code-block-dialog textarea,
.editormd-preformatted-text-dialog textarea,
.editormd-form input[type="submit"],
.editormd-form .editormd-btn,
.editormd-form button,
.editormd-dialog-container input,
.editormd-tab-head li a {
    background-color: var(--dk-surface) !important;
    border-color: var(--dk-border) !important;
    color: var(--dk-text) !important;
}
.editormd-menu > li > a:hover,
.editormd-menu > li > a.active,
.editormd-dropdown-menu > li > a:hover,
.editormd-dialog-header:hover,
.editormd-grid-table-row a.selected,
.editormd-grid-table-row a:hover,
.editormd-tab-head li a:hover,
.editormd-form input[type="submit"]:hover,
.editormd-form .editormd-btn:hover,
.editormd-form button:hover,
.editormd-file-input:hover input[type="submit"],
.editormd-preview-container .editormd-toc-menu > .markdown-toc > ul > li a:hover,
.editormd-html-preview .editormd-toc-menu > .markdown-toc > ul > li a:hover,
.editormd-preview-container .editormd-toc-menu .toc-menu-btn:hover,
.editormd-html-preview .editormd-toc-menu .toc-menu-btn:hover {
    background-color: var(--dk-surface-3) !important;
    color: #fff !important;
}
.editormd-mask,
.editormd-dialog-mask-bg,
.editormd-container-mask { background-color: rgba(0, 0, 0, .6) !important; }
.editormd-preview-close-btn { background-color: var(--dk-surface-3) !important; }
.editormd-preview-container abbr,
.editormd-html-preview abbr { background-color: #3a2f16 !important; }
.editormd-preview-container code,
.editormd-html-preview code,
.editormd-preview-container pre,
.editormd-html-preview pre { background-color: var(--dk-code) !important; }
.markdown-body kbd {
    background-color: var(--dk-surface-2) !important;
    border-color: var(--dk-border) !important;
    color: var(--dk-text) !important;
}
.markdown-body .pl-md,
.markdown-body .pl-mdhf { background-color: #3d1f1f !important; }
.markdown-body .pl-mdht,
.markdown-body .pl-mi1 { background-color: #1b3324 !important; }
.editormd .styled-background { background-color: #4a4020 !important; }
.editormd-preview-theme-dark .editormd-toc-menu > .markdown-toc {
    background-color: var(--dk-surface-2) !important;
}

/* ========== 10f. jstree 默认主题的浅色选中态 ========== */

.jstree-default .jstree-hovered,
.jstree-default .jstree-context,
.jstree-default.jstree-checkbox-no-clicked .jstree-clicked.jstree-hovered,
.jstree-default.jstree-checkbox-no-clicked > .jstree-wholerow-ul .jstree-wholerow-clicked.jstree-wholerow-hovered,
.jstree-default-responsive .jstree-wholerow-hovered {
    background: var(--dk-surface-3) !important;
    color: #fff !important;
}
.jstree-default .jstree-clicked,
.jstree-default .jstree-wholerow-clicked,
.jstree-default-responsive .jstree-wholerow-clicked {
    background: #2f5b8c !important;
    background-image: none !important;
    color: #fff !important;
}
.jstree-default .jstree-disabled.jstree-clicked,
.jstree-default-small .jstree-disabled.jstree-clicked,
.jstree-default-large .jstree-disabled.jstree-clicked,
.jstree-default-responsive .jstree-wholerow {
    background: #202429 !important;
    color: var(--dk-text-dim) !important;
}
.jstree-contextmenu.jstree-default-contextmenu,
.vakata-context .vakata-context-hover > a {
    background-color: var(--dk-surface-2) !important;
    color: var(--dk-text) !important;
}

/* ========== 10g. layer 弹层补漏 ========== */

.layui-layer-move,
.layui-layer-tab .layui-layer-title,
.layui-layer-tab .layui-layer-title span.layui-layer-tabnow {
    background-color: var(--dk-surface-2) !important;
    color: var(--dk-text) !important;
}
.layui-layer-load { background-color: var(--dk-surface-2) !important; }
.layui-layer-shade { background-color: #000 !important; }

/* ========== 10h. Bootstrap 语义色块（alert / 上下文行 / 校验态） ========== */

.alert-success,
.bg-success,
.panel-success > .panel-heading,
.list-group-item-success,
.table > tbody > tr.success > td,
.table > tbody > tr > td.success {
    background-color: #1b3324 !important;
    border-color: #37814f !important;
    color: #9ad4ac !important;
}
.alert-info,
.bg-info,
.panel-info > .panel-heading,
.list-group-item-info,
.table > tbody > tr.info > td,
.table > tbody > tr > td.info {
    background-color: #17303f !important;
    border-color: #2b6ea8 !important;
    color: #9ecbe8 !important;
}
.alert-warning,
.bg-warning,
.panel-warning > .panel-heading,
.list-group-item-warning,
.table > tbody > tr.warning > td,
.table > tbody > tr > td.warning {
    background-color: #3a2f16 !important;
    border-color: #a5822a !important;
    color: #e0c078 !important;
}
.alert-danger,
.bg-danger,
.panel-danger > .panel-heading,
.list-group-item-danger,
.table > tbody > tr.danger > td,
.table > tbody > tr > td.danger {
    background-color: #3d1f1f !important;
    border-color: #a34141 !important;
    color: #e79c9c !important;
}
.panel-primary > .panel-heading { background-color: #1f3d5c !important; border-color: #2f5b8c !important; }

.has-error .form-control { border-color: #a34141 !important; }
.has-warning .form-control { border-color: #a5822a !important; }
.has-success .form-control { border-color: #37814f !important; }
.has-error .control-label,
.has-error .help-block { color: #e79c9c !important; }
.has-warning .control-label,
.has-warning .help-block { color: #e0c078 !important; }
.has-success .control-label,
.has-success .help-block { color: #9ad4ac !important; }

/* ========== 10i. 悬浮目录组件（JS 注入 <style>，需要 ID 权重压制） ========== */

#mdoc-outline .mdoc-panel {
    background: var(--dk-surface) !important;
    border-color: var(--dk-border) !important;
    box-shadow: 0 6px 24px rgba(0, 0, 0, .5) !important;
}
#mdoc-outline .mdoc-hd {
    color: var(--dk-text) !important;
    border-bottom-color: var(--dk-border) !important;
}
#mdoc-outline li a { color: var(--dk-text-dim) !important; }
#mdoc-outline li a:hover {
    background: var(--dk-surface-3) !important;
    color: #fff !important;
}
#mdoc-outline li a.mdoc-active {
    background: #1f3d5c !important;
    color: var(--dk-link) !important;
    border-left-color: var(--dk-link) !important;
}
#mdoc-outline li.lv4 a { color: #6e7681 !important; }
#mdoc-outline .mdoc-list::-webkit-scrollbar-thumb { background: #3c434d !important; }

/* ========== 10j. 登录页内联 <style> 的浅色块 ========== */

/* 「第三方登录」文字用白底盖住分割线，必须跟卡片同色 */
.line { border-top-color: var(--dk-border) !important; }
.line > .text { background-color: var(--dk-surface) !important; color: var(--dk-text-dim) !important; }
.icon-disable { background-color: var(--dk-surface-3) !important; }
.icon-disable:hover { background-color: #3c434d !important; }

/* ========== 10k. CodeMirror 选区与默认语法配色 ========== */

.CodeMirror-activeline-background { background: #232a33 !important; }
.CodeMirror-selected { background: #2f4a6b !important; }
.CodeMirror-focused .CodeMirror-selected { background: #2f5b8c !important; }
.CodeMirror-line::selection,
.CodeMirror-line > span::selection,
.CodeMirror-line > span > span::selection { background: #2f5b8c !important; }
.cm-searching { background-color: rgba(255, 213, 79, .35) !important; }
.CodeMirror-ruler { border-left-color: var(--dk-border) !important; }
.CodeMirror-guttermarker { color: var(--dk-text) !important; }

/* cm-s-default 是给白底配的深墨色，直接放在深色上几乎看不见 */
.cm-s-default .cm-header    { color: #79b8ff !important; }
.cm-s-default .cm-quote     { color: #9ad4ac !important; }
.cm-s-default .cm-keyword   { color: #d2a8ff !important; }
.cm-s-default .cm-atom      { color: #79b8ff !important; }
.cm-s-default .cm-number    { color: #79c0ff !important; }
.cm-s-default .cm-def       { color: #d2a8ff !important; }
.cm-s-default .cm-variable,
.cm-s-default .cm-variable-2{ color: #79b8ff !important; }
.cm-s-default .cm-type,
.cm-s-default .cm-variable-3{ color: #7ee787 !important; }
.cm-s-default .cm-comment   { color: #8b949e !important; }
.cm-s-default .cm-string    { color: #a5d6ff !important; }
.cm-s-default .cm-string-2  { color: #ffab70 !important; }
.cm-s-default .cm-meta,
.cm-s-default .cm-qualifier { color: #8b949e !important; }
.cm-s-default .cm-builtin   { color: #d2a8ff !important; }
.cm-s-default .cm-bracket   { color: var(--dk-text) !important; }
.cm-s-default .cm-tag       { color: #7ee787 !important; }
.cm-s-default .cm-attribute { color: #79b8ff !important; }
.cm-s-default .cm-hr        { color: #8b949e !important; }
.cm-s-default .cm-link      { color: var(--dk-link) !important; }
.cm-negative { color: #f85149 !important; }
.cm-positive { color: #56d364 !important; }

/* ========== 10l. bootstrap-switch 开关 ========== */

.bootstrap-switch,
.bootstrap-switch .bootstrap-switch-label,
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default,
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default {
    background-color: var(--dk-surface-2) !important;
    border-color: var(--dk-border) !important;
    color: var(--dk-text) !important;
}
.bootstrap-switch .bootstrap-switch-label { background-color: var(--dk-surface-3) !important; }

/* ========== 10m. 文字色重映射 ==========
   mindoc 的 CSS 把正文/次要文字写死成 #222 #333 #666 这类近黑色，
   放到深色底上等于隐形。下面按“主要文字 / 次要文字 / 语义色”三档重映射。 */

/* 主要文字（原 #222 / #333 / #24292e / #272727 / #3d444f 等） */
body,
.m-manual .manual-head .manual-title,
.m-manual .manual-tab .tab-navg .navg-item.active,
.m-manual .manual-tab .tab-navg .navg-item.active:hover,
.m-manual .manual-tab .tab-navg .navg-item.active .icon,
.manual-reader .book-title,
.manual-reader .book-title:hover,
.manual-article .article-head h1,
.manual-article .article-head h3,
.manual-article .wiki-bottom,
.manual-article .wiki-bottom-left,
.user-info-dropdown a,
.userbar-content span,
.manual-body .page-right .box-body label,
.text-label,
.manager .dashboard-item,
.ui-card,
.manual-category .manual-nav,
.markdown-category .markdown-nav,
.manual-category .manual-nav .nav-plus:hover,
.markdown-category .markdown-nav .nav-plus:hover,
.attach-drop-panel .webuploader-pick:hover,
.attach-list .attach-item .close:hover,
.markdown-body,
.jstree .jstree-node .m-tree-operate:hover .operate-show i,
.pagination-container .pagination > li > a,
.pagination-container .pagination > li > span,
.pagination-container .pagination > .active > a,
.footer a,
.navbar-mobile,
.manual-header .navbar-brand,
.manual-list .list-item .manual-item-standard a.name:hover {
    color: var(--dk-text) !important;
}

/* 次要文字（原 #666 / #555 / #595959 / #5D5D5D / #484848 / #636363 等） */
.m-manual .manual-search .search-list a,
.m-comment .comment-item .vote .agree,
.m-comment .comment-item .vote .oppose,
.m-comment .comment-empty .text,
.editor-content p,
.tag-container-outer .tags a:hover,
.manual-body .page-left .menu .item,
.manual-list .list-item .manual-item-standard a.name,
.manual-list .list-item .manual-item-standard .author,
.manual-list .list-item .manual-item-standard .author > .text,
.book-list .list-item a,
.book-list .list-item .info,
.manual-search-reader .search-item .description,
.ui-card > .description,
.manual-category .manual-nav .nav-item,
.markdown-category .markdown-nav .nav-item,
.manual-editor-status,
.markdown-editor-status,
.editormd-group a > i,
.attach-list .attach-item .close,
.template-list .container .section > h3 a,
.markdown-toc .markdown-toc-list > li,
.markdown-toc-list .directory-item,
.markdown-toc-list .directory-item-link,
.jstree .jstree-node .jstree-anchor,
.markdown-body kbd,
.editormd-preview-container blockquote,
.editormd-html-preview blockquote,
.editormd-preview-container .editormd-toc-menu > .markdown-toc > ul > li a,
.editormd-html-preview .editormd-toc-menu > .markdown-toc > ul > li a,
.editormd-preview-container .editormd-toc-menu .toc-menu-btn,
.editormd-html-preview .editormd-toc-menu .toc-menu-btn,
.markdown-body h1 .octicon-link,
.markdown-body h2 .octicon-link,
.markdown-body h3 .octicon-link,
.markdown-body h4 .octicon-link,
.markdown-body h5 .octicon-link,
.markdown-body h6 .octicon-link {
    color: var(--dk-text-dim) !important;
}

/* 语义色 */
.m-comment .comment-item .name,
.ui.items > .item > .content > a.header:hover { color: var(--dk-link) !important; }
.m-comment .comment-item .vote .agree:hover,
.m-comment .comment-item .vote .oppose:hover { color: #fff !important; }
.manual-search-reader .search-item .site { color: #56d364 !important; }
.editormd-preview-container table th { color: var(--dk-text) !important; }
.pagination-container .pagination > .disabled > a { color: #6e7681 !important; }

/* ========== 10n. 代码高亮取词色（给白底配的，须整体换成深色版） ==========
   markdown-body 的 .pl-* 是 GitHub 旧版着色；.pln/.str/.kwd 等是 prettify。 */

.markdown-body .pl-c1, .markdown-body .pl-mdh, .markdown-body .pl-mm,
.markdown-body .pl-mp, .markdown-body .pl-mr, .markdown-body .pl-s3,
.markdown-body .pl-sok, .markdown-body .pl-sw { color: #79c0ff !important; }
.markdown-body .pl-e, .markdown-body .pl-en, .markdown-body .pl-mdr { color: #d2a8ff !important; }
.markdown-body .pl-smi, .markdown-body .pl-s1 .pl-s2, .markdown-body .pl-smp,
.markdown-body .pl-stj, .markdown-body .pl-vo, .markdown-body .pl-vpf,
.markdown-body .pl-mi, .markdown-body .pl-mb { color: var(--dk-text) !important; }
.markdown-body .pl-k, .markdown-body .pl-s, .markdown-body .pl-st { color: #ff7b72 !important; }
.markdown-body .pl-pds, .markdown-body .pl-s1, .markdown-body .pl-sr,
.markdown-body .pl-sr .pl-cce, .markdown-body .pl-sr .pl-sra,
.markdown-body .pl-sr .pl-sre { color: #a5d6ff !important; }
.markdown-body .pl-mo, .markdown-body .pl-v, .markdown-body .pl-mh,
.markdown-body .pl-mh .pl-en, .markdown-body .pl-ms { color: #79b8ff !important; }
.markdown-body .pl-id, .markdown-body .pl-md, .markdown-body .pl-mdhf { color: #ffa198 !important; }
.markdown-body .pl-ml { color: #ffab70 !important; }
.markdown-body .pl-mq { color: #56d4dd !important; }

.pln, .pun, .opn, .clo { color: var(--dk-text) !important; }
.str, .atv { color: #a5d6ff !important; }
.kwd, .tag { color: #ff7b72 !important; }
.com { color: #8b949e !important; }
.typ, .atn, .dec, .var { color: #d2a8ff !important; }
.lit { color: #79c0ff !important; }

/* ========== 11. 滚动条 ========== */

/* main.css / markdown.css 也声明了 ::-webkit-scrollbar（含 body .scrollbar-track-color），需 !important */
::-webkit-scrollbar,
body .scrollbar-track-color {
    width: 10px;
    height: 10px;
    background: var(--dk-bg) !important;
}
::-webkit-scrollbar:hover { background: var(--dk-bg) !important; }
::-webkit-scrollbar-track { background: var(--dk-bg) !important; }
::-webkit-scrollbar-thumb {
    background: #3c434d !important;
    border-radius: 5px;
    border: 2px solid var(--dk-bg);
}
::-webkit-scrollbar-thumb:hover { background: #4c545f !important; }
::-webkit-scrollbar-corner { background: var(--dk-bg) !important; }

/* ========== 11b. 白底占位图 ==========
   CSS 改不了图片像素。这里只反色两张“默认封面”占位资源，
   刻意不动用户上传的图片与文档里的截图——把那些反色会毁掉内容。 */

img[src*="/static/images/book.png"],
img[src*="/static/images/book.jpg"] {
    filter: invert(1) hue-rotate(180deg);
    border-color: var(--dk-border) !important;
}

/* ========== 11c. mermaid 图表 ==========

   mermaid 用自带的浅色 default 主题出图：文字 #333、连线/箭头 #333333、
   时序图生命线 grey。这套配色是按白底设计的，落到深色页面上，
   画在“页面背景”而非节点色块上的元素——正文文字、实线、虚线、箭头——
   与底色几乎同明度，肉眼看不见。

   已发布文档的图是**渲染完成后连同 <style> 一起存进库**的
   （容器上带 data-processed="true"，阅读页不会重渲染），
   所以改 mermaid 初始化主题只对新图生效，救不了存量。
   因此在**呈现层**整体反相：

     invert(0.88)       白底 → #1f1f1f（贴近 --dk-bg），#333 文字 → 浅灰；
                        留 0.12 不反，避免黄/绿系被压成死黑而丢掉分支区分度
     hue-rotate(180deg) 把反相翻掉的色相转回来，节点/分支的语义配色不串味
     saturate/brightness 补回反相后掉的饱和度与亮度

   选反相而不是逐类改色：反相对图元与其上文字是同一次逐像素变换，
   **对比度天然守恒**，不会出现「浅底 + 浅字」——那正是手工枚举
   mermaid 内联 <style> 里几十个类时最容易漏出的翻车组合；
   同时它自动覆盖 classDef、themeVariables 等任意作者自定义色。

   前提：mermaid 保持浅色 default 主题出图。若哪天改成 theme:'dark'，
   这里会翻两次，须同步撤掉本节。
   已知边界：图里若嵌位图/图标，会跟着一起反相（本站文档未使用）。 */

.lang-mermaid svg,
.mermaid svg,
[data-type="mermaid"] svg {
    filter: invert(0.88) hue-rotate(180deg) saturate(1.15) brightness(1.1);
}

/* ========== 12. 兜底：残留的内联白底 ========== */

[style*="background:#fff"],
[style*="background: #fff"],
[style*="background-color:#fff"],
[style*="background-color: #fff"],
[style*="background:#FFF"],
[style*="background-color:#FFF"],
[style*="background:white"],
[style*="background-color:white"] {
    background-color: var(--dk-surface) !important;
}

/* 打印时恢复浅色，避免打出满页黑 */
@media print {
    html, body, .markdown-body, .editormd-preview-container,
    .m-manual .manual-right .manual-article, pre, code {
        background: #fff !important;
        color: #000 !important;
    }
    /* 打印回到白底，mermaid 的反相必须一起撤，否则打出来是深色图 */
    .lang-mermaid svg,
    .mermaid svg,
    [data-type="mermaid"] svg {
        filter: none !important;
    }
}
