/* ============================================================ Halo Dark Mode — 富文本编辑器覆盖 @halo-dev/richtext-editor + TipTap / ProseMirror + Bytemd (Markdown 编辑器) + CodeMirror ============================================================ */ [data-halo-theme="dark"] { /* ===== Bytemd Markdown 编辑器 ===== */ .bytemd { background-color: var(--halo-bg-card) !important; color: var(--halo-text-primary) !important; border-color: var(--halo-border-base) !important; } .bytemd-toolbar { background-color: var(--halo-bg-content) !important; color: var(--halo-text-primary) !important; border-color: var(--halo-border-light) !important; } .bytemd-toolbar-icon { color: var(--halo-text-secondary) !important; } .bytemd-toolbar-icon:hover { background-color: var(--halo-bg-hover) !important; color: var(--halo-text-primary) !important; } .bytemd-toolbar-tab-active, .bytemd-toolbar-icon-active { color: var(--halo-accent-primary) !important; } .bytemd-editor, .bytemd-editor .CodeMirror { background-color: var(--halo-bg-input) !important; color: var(--halo-text-primary) !important; } .bytemd-preview { background-color: var(--halo-bg-card) !important; color: var(--halo-text-primary) !important; } .bytemd-status, .bytemd-status-right, .bytemd-status-left { background-color: var(--halo-bg-content) !important; color: var(--halo-text-secondary) !important; border-color: var(--halo-border-light) !important; } .bytemd-dropdown, .bytemd-dropdown-menu, [class*="bytemd-dropdown"] { background-color: var(--halo-bg-dropdown) !important; color: var(--halo-text-primary) !important; border-color: var(--halo-border-base) !important; } .bytemd-dropdown-title { color: var(--halo-text-secondary) !important; } .bytemd-dropdown-item { color: var(--halo-text-primary) !important; } .bytemd-dropdown-item:hover { background-color: var(--halo-bg-hover) !important; } .bytemd-sidebar, .bytemd-toc, .bytemd-toc ul, .bytemd-toc li { background-color: var(--halo-bg-content) !important; color: var(--halo-text-secondary) !important; } .bytemd-toc-active { background-color: var(--halo-bg-hover) !important; color: var(--halo-accent-primary) !important; } .bytemd-floating-btn { background-color: var(--halo-bg-card) !important; color: var(--halo-text-secondary) !important; border-color: var(--halo-border-base) !important; } .bytemd-floating-btn:hover { background-color: var(--halo-bg-hover) !important; } .bytemd-floating-btn.active { background-color: var(--halo-bg-active) !important; color: var(--halo-accent-primary) !important; } .bytemd-code-theme-toggle, .bytemd-copy-code-btn, [class*="bytemd"] button { color: var(--halo-text-secondary) !important; } .bytemd-copy-code-btn:hover, [class*="bytemd"] button:hover { color: var(--halo-text-primary) !important; background-color: var(--halo-bg-hover) !important; } /* 编辑器内 markdown 正文 */ .bytemd-preview .markdown-body, .bytemd-editor .markdown-body { color: var(--halo-text-primary) !important; } .bytemd-preview .markdown-body p, .bytemd-preview .markdown-body li, .bytemd-preview .markdown-body h1, .bytemd-preview .markdown-body h2, .bytemd-preview .markdown-body h3, .bytemd-preview .markdown-body h4, .bytemd-preview .markdown-body td, .bytemd-preview .markdown-body th, .bytemd-preview .markdown-body blockquote { color: var(--halo-text-primary) !important; } .bytemd-preview .markdown-body code, .bytemd-preview .markdown-body pre, .bytemd-preview .markdown-body pre code { background-color: oklch(22% 0.02 250) !important; color: oklch(85% 0.05 160) !important; } .bytemd-preview .markdown-body table tr, .bytemd-preview .markdown-body table tr:nth-child(2n) { background-color: var(--halo-bg-card) !important; } .bytemd-preview .markdown-body table td, .bytemd-preview .markdown-body table th { border-color: var(--halo-border-base) !important; } /* ===== CodeMirror 代码编辑器 ===== */ .CodeMirror { background-color: var(--halo-bg-input) !important; color: var(--halo-text-primary) !important; } .CodeMirror-gutters { background-color: var(--halo-bg-content) !important; border-color: var(--halo-border-light) !important; } .CodeMirror-linenumber { color: var(--halo-text-tertiary) !important; } .CodeMirror-cursor { border-color: var(--halo-text-primary) !important; } .CodeMirror-selected { background-color: oklch(30% 0.04 160 / 50%) !important; } .cm-s-default .cm-header, .cm-s-default .cm-strong, .cm-s-default .cm-em, .cm-s-default .cm-link, .cm-s-default .cm-url { color: var(--halo-text-primary) !important; } .cm-s-default .cm-comment { color: var(--halo-text-tertiary) !important; } .cm-s-default .cm-quote { color: var(--halo-accent-success) !important; } .cm-s-default .cm-tag { color: var(--halo-accent-primary) !important; } .CodeMirror pre.CodeMirror-placeholder { color: var(--halo-text-tertiary) !important; } .CodeMirror-activeline-background { background-color: var(--halo-bg-hover) !important; } .CodeMirror-lines { color: var(--halo-text-primary) !important; } /* ===== ProseMirror / TipTap 编辑器主体 ===== */ .ProseMirror, .tiptap, [class*="editor-content"] { color: var(--halo-text-primary); background-color: var(--halo-bg-input); } /* ===== 编辑器菜单栏 ===== */ .editor-toolbar, .editor-menubar, [class*="editor-toolbar"], [class*="editor-menubar"] { background-color: var(--halo-bg-card); border-color: var(--halo-border-base); } .editor-toolbar button, .editor-menubar button { color: var(--halo-text-secondary); } .editor-toolbar button:hover, .editor-menubar button:hover, .editor-toolbar button.is-active, .editor-menubar button.is-active { background-color: var(--halo-bg-hover); color: var(--halo-text-primary); } /* ===== 代码块 ===== */ .ProseMirror pre, .ProseMirror code, .tiptap pre, .tiptap code { background-color: oklch(20% 0.015 250); color: oklch(85% 0.03 160); } /* ===== Bubble menu / floating menu ===== */ .tippy-box, .tiptap-bubble-menu, .floating-menu { background-color: var(--halo-bg-dropdown); border-color: var(--halo-border-base); color: var(--halo-text-primary); } /* ===== 编辑器占位符 ===== */ .ProseMirror p.is-editor-empty:first-child::before { color: var(--halo-text-tertiary); } /* ===== 链接 ===== */ .ProseMirror a, .tiptap a { color: var(--halo-text-link); } /* ===== 选中文字 ===== */ .ProseMirror ::selection, .tiptap ::selection { background-color: oklch(30% 0.04 160 / 50%); } } /* ===== Monaco Editor(日志查看器,JS 主题优先,此处仅兜底) ===== */ html[data-halo-theme="dark"] .monaco-editor.vs, html[data-halo-theme="dark"] .monaco-editor.vs .margin, html[data-halo-theme="dark"] .monaco-editor.vs .lines-content, html[data-halo-theme="dark"] .monaco-editor.vs .monaco-scrollable-element { background-color: var(--halo-bg-input) !important; color: var(--halo-text-primary) !important; } html[data-halo-theme="dark"] .monaco-editor.vs .line-numbers { color: var(--halo-text-tertiary) !important; } html[data-halo-theme="dark"] .monaco-editor.vs .cursor { border-color: var(--halo-text-primary) !important; } html[data-halo-theme="dark"] .monaco-editor.vs .selected-text, html[data-halo-theme="dark"] .monaco-editor.vs .view-overlays .selected-text { background-color: oklch(30% 0.04 160 / 50%) !important; } html[data-halo-theme="dark"] .monaco-editor.vs .find-widget, html[data-halo-theme="dark"] .monaco-editor.vs .monaco-hover { background-color: var(--halo-bg-dropdown) !important; color: var(--halo-text-primary) !important; } /* ===== 编辑器链接(覆盖通用链接色规则) ===== */ html[data-halo-theme="dark"] .ProseMirror a, html[data-halo-theme="dark"] .tiptap a { color: var(--halo-text-link) !important; }