/*!
 * 代码高亮样式 —— One Light / One Dark 双主题
 * 由 smianao-toolkit / modules/code-highlight 提供
 *
 * 浅色模式：One Light（默认生效）
 * 深色模式：One Dark（通过 html[data-bs-theme="dark"] 覆盖）
 * 主题切换由属性驱动，不需要重新请求任何资源。
 * 未使用 JavaScript 的访客仍可正常阅读代码，只是没有高亮配色。
 */

/* ==========================================================================
 * 一、One Light（默认）
 * ========================================================================== */
code[class*="language-"],
pre[class*="language-"] {
	background: hsl(230, 1%, 98%);
	color: hsl(230, 8%, 24%);
	font-family: "Fira Code", "Fira Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace;
	direction: ltr;
	text-align: left;
	white-space: pre;
	word-spacing: normal;
	word-break: normal;
	line-height: 1.5;
	-moz-tab-size: 2;
	-o-tab-size: 2;
	tab-size: 2;
	-webkit-hyphens: none;
	-moz-hyphens: none;
	-ms-hyphens: none;
	hyphens: none;
}
code[class*="language-"]::-moz-selection,
code[class*="language-"] *::-moz-selection,
pre[class*="language-"] *::-moz-selection {
	background: hsl(230, 1%, 90%);
	color: inherit;
}
code[class*="language-"]::selection,
code[class*="language-"] *::selection,
pre[class*="language-"] *::selection {
	background: hsl(230, 1%, 90%);
	color: inherit;
}
pre[class*="language-"] {
	padding: 1em;
	margin: 0.5em 0;
	overflow: auto;
	border-radius: 0.3em;
}
:not(pre) > code[class*="language-"] {
	padding: 0.2em 0.3em;
	border-radius: 0.3em;
	white-space: normal;
}
.token.comment,
.token.prolog,
.token.cdata {
	color: hsl(230, 4%, 64%);
}
.token.doctype,
.token.punctuation,
.token.entity {
	color: hsl(230, 8%, 24%);
}
.token.attr-name,
.token.class-name,
.token.boolean,
.token.constant,
.token.number,
.token.atrule {
	color: hsl(35, 99%, 36%);
}
.token.keyword {
	color: hsl(301, 63%, 40%);
}
.token.property,
.token.tag,
.token.symbol,
.token.deleted,
.token.important {
	color: hsl(5, 74%, 59%);
}
.token.selector,
.token.string,
.token.char,
.token.builtin,
.token.inserted,
.token.regex,
.token.attr-value,
.token.attr-value > .token.punctuation {
	color: hsl(119, 34%, 47%);
}
.token.variable,
.token.operator,
.token.function {
	color: hsl(221, 87%, 60%);
}
.token.url {
	color: hsl(198, 99%, 37%);
}
.token.attr-value > .token.punctuation.attr-equals,
.token.special-attr > .token.attr-value > .token.value.css {
	color: hsl(230, 8%, 24%);
}
.language-css .token.selector {
	color: hsl(5, 74%, 59%);
}
.language-css .token.property {
	color: hsl(230, 8%, 24%);
}
.language-css .token.function,
.language-css .token.url > .token.function {
	color: hsl(198, 99%, 37%);
}
.language-css .token.url > .token.string.url {
	color: hsl(119, 34%, 47%);
}
.language-css .token.important,
.language-css .token.atrule .token.rule {
	color: hsl(301, 63%, 40%);
}
.language-javascript .token.operator {
	color: hsl(301, 63%, 40%);
}
.language-javascript .token.template-string > .token.interpolation > .token.interpolation-punctuation.punctuation {
	color: hsl(344, 84%, 43%);
}
.language-json .token.operator {
	color: hsl(230, 8%, 24%);
}
.language-json .token.null.keyword {
	color: hsl(35, 99%, 36%);
}
.language-markdown .token.url,
.language-markdown .token.url > .token.operator,
.language-markdown .token.url-reference.url > .token.string {
	color: hsl(230, 8%, 24%);
}
.language-markdown .token.url > .token.content {
	color: hsl(221, 87%, 60%);
}
.language-markdown .token.url > .token.url,
.language-markdown .token.url-reference.url {
	color: hsl(198, 99%, 37%);
}
.language-markdown .token.blockquote.punctuation,
.language-markdown .token.hr.punctuation {
	color: hsl(230, 4%, 64%);
	font-style: italic;
}
.language-markdown .token.code-snippet {
	color: hsl(119, 34%, 47%);
}
.language-markdown .token.bold .token.content {
	color: hsl(35, 99%, 36%);
}
.language-markdown .token.italic .token.content {
	color: hsl(301, 63%, 40%);
}
.language-markdown .token.strike .token.content,
.language-markdown .token.strike .token.punctuation,
.language-markdown .token.list.punctuation,
.language-markdown .token.title.important > .token.punctuation {
	color: hsl(5, 74%, 59%);
}
.token.bold {
	font-weight: bold;
}
.token.comment,
.token.italic {
	font-style: italic;
}
.token.entity {
	cursor: help;
}
.token.namespace {
	opacity: 0.8;
}
.token.token.tab:not(:empty):before,
.token.token.cr:before,
.token.token.lf:before,
.token.token.space:before {
	color: hsla(230, 8%, 24%, 0.2);
}
div.code-toolbar > .toolbar.toolbar > .toolbar-item {
	margin-right: 0.4em;
}
div.code-toolbar > .toolbar.toolbar > .toolbar-item > button,
div.code-toolbar > .toolbar.toolbar > .toolbar-item > a,
div.code-toolbar > .toolbar.toolbar > .toolbar-item > span {
	background: hsl(230, 1%, 90%);
	color: hsl(230, 6%, 44%);
	padding: 0.1em 0.4em;
	border-radius: 0.3em;
}
div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:hover,
div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:focus,
div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:hover,
div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:focus,
div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:hover,
div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:focus {
	background: hsl(230, 1%, 78%); 
	color: hsl(230, 8%, 24%);
}
.line-highlight.line-highlight {
	background: hsla(230, 8%, 24%, 0.05);
}
.line-highlight.line-highlight:before,
.line-highlight.line-highlight[data-end]:after {
	background: hsl(230, 1%, 90%);
	color: hsl(230, 8%, 24%);
	padding: 0.1em 0.6em;
	border-radius: 0.3em;
	box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.2); 
}
pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows > span:hover:before {
	background-color: hsla(230, 8%, 24%, 0.05);
}
.line-numbers.line-numbers .line-numbers-rows,
.command-line .command-line-prompt {
	border-right-color: hsla(230, 8%, 24%, 0.2);
}
.line-numbers .line-numbers-rows > span:before,
.command-line .command-line-prompt > span:before {
	color: hsl(230, 1%, 62%);
}
.rainbow-braces .token.token.punctuation.brace-level-1,
.rainbow-braces .token.token.punctuation.brace-level-5,
.rainbow-braces .token.token.punctuation.brace-level-9 {
	color: hsl(5, 74%, 59%);
}
.rainbow-braces .token.token.punctuation.brace-level-2,
.rainbow-braces .token.token.punctuation.brace-level-6,
.rainbow-braces .token.token.punctuation.brace-level-10 {
	color: hsl(119, 34%, 47%);
}
.rainbow-braces .token.token.punctuation.brace-level-3,
.rainbow-braces .token.token.punctuation.brace-level-7,
.rainbow-braces .token.token.punctuation.brace-level-11 {
	color: hsl(221, 87%, 60%);
}
.rainbow-braces .token.token.punctuation.brace-level-4,
.rainbow-braces .token.token.punctuation.brace-level-8,
.rainbow-braces .token.token.punctuation.brace-level-12 {
	color: hsl(301, 63%, 40%);
}
pre.diff-highlight > code .token.token.deleted:not(.prefix),
pre > code.diff-highlight .token.token.deleted:not(.prefix) {
	background-color: hsla(353, 100%, 66%, 0.15);
}
pre.diff-highlight > code .token.token.deleted:not(.prefix)::-moz-selection,
pre.diff-highlight > code .token.token.deleted:not(.prefix) *::-moz-selection,
pre > code.diff-highlight .token.token.deleted:not(.prefix)::-moz-selection,
pre > code.diff-highlight .token.token.deleted:not(.prefix) *::-moz-selection {
	background-color: hsla(353, 95%, 66%, 0.25);
}
pre.diff-highlight > code .token.token.deleted:not(.prefix)::selection,
pre.diff-highlight > code .token.token.deleted:not(.prefix) *::selection,
pre > code.diff-highlight .token.token.deleted:not(.prefix)::selection,
pre > code.diff-highlight .token.token.deleted:not(.prefix) *::selection {
	background-color: hsla(353, 95%, 66%, 0.25);
}
pre.diff-highlight > code .token.token.inserted:not(.prefix),
pre > code.diff-highlight .token.token.inserted:not(.prefix) {
	background-color: hsla(137, 100%, 55%, 0.15);
}
pre.diff-highlight > code .token.token.inserted:not(.prefix)::-moz-selection,
pre.diff-highlight > code .token.token.inserted:not(.prefix) *::-moz-selection,
pre > code.diff-highlight .token.token.inserted:not(.prefix)::-moz-selection,
pre > code.diff-highlight .token.token.inserted:not(.prefix) *::-moz-selection {
	background-color: hsla(135, 73%, 55%, 0.25);
}
pre.diff-highlight > code .token.token.inserted:not(.prefix)::selection,
pre.diff-highlight > code .token.token.inserted:not(.prefix) *::selection,
pre > code.diff-highlight .token.token.inserted:not(.prefix)::selection,
pre > code.diff-highlight .token.token.inserted:not(.prefix) *::selection {
	background-color: hsla(135, 73%, 55%, 0.25);
}
.prism-previewer.prism-previewer:before,
.prism-previewer-gradient.prism-previewer-gradient div {
	border-color: hsl(0, 0, 95%);
}
.prism-previewer-color.prism-previewer-color:before,
.prism-previewer-gradient.prism-previewer-gradient div,
.prism-previewer-easing.prism-previewer-easing:before {
	border-radius: 0.3em;
}
.prism-previewer.prism-previewer:after {
	border-top-color: hsl(0, 0, 95%);
}
.prism-previewer-flipped.prism-previewer-flipped.after {
	border-bottom-color: hsl(0, 0, 95%);
}
.prism-previewer-angle.prism-previewer-angle:before,
.prism-previewer-time.prism-previewer-time:before,
.prism-previewer-easing.prism-previewer-easing {
	background: hsl(0, 0%, 100%);
}
.prism-previewer-angle.prism-previewer-angle circle,
.prism-previewer-time.prism-previewer-time circle {
	stroke: hsl(230, 8%, 24%);
	stroke-opacity: 1;
}
.prism-previewer-easing.prism-previewer-easing circle,
.prism-previewer-easing.prism-previewer-easing path,
.prism-previewer-easing.prism-previewer-easing line {
	stroke: hsl(230, 8%, 24%);
}
.prism-previewer-easing.prism-previewer-easing circle {
	fill: transparent;
}

/* ==========================================================================
 * 二、One Dark（深色模式覆盖）
 * ========================================================================== */
html[data-bs-theme="dark"] code[class*="language-"],
html[data-bs-theme="dark"] pre[class*="language-"] {
	background: hsl(220, 13%, 18%);
	color: hsl(220, 14%, 71%);
	text-shadow: 0 1px rgba(0, 0, 0, 0.3);
	font-family: "Fira Code", "Fira Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace;
	direction: ltr;
	text-align: left;
	white-space: pre;
	word-spacing: normal;
	word-break: normal;
	line-height: 1.5;
	-moz-tab-size: 2;
	-o-tab-size: 2;
	tab-size: 2;
	-webkit-hyphens: none;
	-moz-hyphens: none;
	-ms-hyphens: none;
	hyphens: none;
}html[data-bs-theme="dark"] code[class*="language-"]::-moz-selection,
html[data-bs-theme="dark"] code[class*="language-"] *::-moz-selection,
html[data-bs-theme="dark"] pre[class*="language-"] *::-moz-selection {
	background: hsl(220, 13%, 28%);
	color: inherit;
	text-shadow: none;
}html[data-bs-theme="dark"] code[class*="language-"]::selection,
html[data-bs-theme="dark"] code[class*="language-"] *::selection,
html[data-bs-theme="dark"] pre[class*="language-"] *::selection {
	background: hsl(220, 13%, 28%);
	color: inherit;
	text-shadow: none;
}html[data-bs-theme="dark"] pre[class*="language-"] {
	padding: 1em;
	margin: 0.5em 0;
	overflow: auto;
	border-radius: 0.3em;
}html[data-bs-theme="dark"] :not(pre) > code[class*="language-"] {
	padding: 0.2em 0.3em;
	border-radius: 0.3em;
	white-space: normal;
}html[data-bs-theme="dark"] .token.comment,
html[data-bs-theme="dark"] .token.prolog,
html[data-bs-theme="dark"] .token.cdata {
	color: hsl(220, 10%, 40%);
}html[data-bs-theme="dark"] .token.doctype,
html[data-bs-theme="dark"] .token.punctuation,
html[data-bs-theme="dark"] .token.entity {
	color: hsl(220, 14%, 71%);
}html[data-bs-theme="dark"] .token.attr-name,
html[data-bs-theme="dark"] .token.class-name,
html[data-bs-theme="dark"] .token.boolean,
html[data-bs-theme="dark"] .token.constant,
html[data-bs-theme="dark"] .token.number,
html[data-bs-theme="dark"] .token.atrule {
	color: hsl(29, 54%, 61%);
}html[data-bs-theme="dark"] .token.keyword {
	color: hsl(286, 60%, 67%);
}html[data-bs-theme="dark"] .token.property,
html[data-bs-theme="dark"] .token.tag,
html[data-bs-theme="dark"] .token.symbol,
html[data-bs-theme="dark"] .token.deleted,
html[data-bs-theme="dark"] .token.important {
	color: hsl(355, 65%, 65%);
}html[data-bs-theme="dark"] .token.selector,
html[data-bs-theme="dark"] .token.string,
html[data-bs-theme="dark"] .token.char,
html[data-bs-theme="dark"] .token.builtin,
html[data-bs-theme="dark"] .token.inserted,
html[data-bs-theme="dark"] .token.regex,
html[data-bs-theme="dark"] .token.attr-value,
html[data-bs-theme="dark"] .token.attr-value > .token.punctuation {
	color: hsl(95, 38%, 62%);
}html[data-bs-theme="dark"] .token.variable,
html[data-bs-theme="dark"] .token.operator,
html[data-bs-theme="dark"] .token.function {
	color: hsl(207, 82%, 66%);
}html[data-bs-theme="dark"] .token.url {
	color: hsl(187, 47%, 55%);
}html[data-bs-theme="dark"] .token.attr-value > .token.punctuation.attr-equals,
html[data-bs-theme="dark"] .token.special-attr > .token.attr-value > .token.value.css {
	color: hsl(220, 14%, 71%);
}html[data-bs-theme="dark"] .language-css .token.selector {
	color: hsl(355, 65%, 65%);
}html[data-bs-theme="dark"] .language-css .token.property {
	color: hsl(220, 14%, 71%);
}html[data-bs-theme="dark"] .language-css .token.function,
html[data-bs-theme="dark"] .language-css .token.url > .token.function {
	color: hsl(187, 47%, 55%);
}html[data-bs-theme="dark"] .language-css .token.url > .token.string.url {
	color: hsl(95, 38%, 62%);
}html[data-bs-theme="dark"] .language-css .token.important,
html[data-bs-theme="dark"] .language-css .token.atrule .token.rule {
	color: hsl(286, 60%, 67%);
}html[data-bs-theme="dark"] .language-javascript .token.operator {
	color: hsl(286, 60%, 67%);
}html[data-bs-theme="dark"] .language-javascript .token.template-string > .token.interpolation > .token.interpolation-punctuation.punctuation {
	color: hsl(5, 48%, 51%);
}html[data-bs-theme="dark"] .language-json .token.operator {
	color: hsl(220, 14%, 71%);
}html[data-bs-theme="dark"] .language-json .token.null.keyword {
	color: hsl(29, 54%, 61%);
}html[data-bs-theme="dark"] .language-markdown .token.url,
html[data-bs-theme="dark"] .language-markdown .token.url > .token.operator,
html[data-bs-theme="dark"] .language-markdown .token.url-reference.url > .token.string {
	color: hsl(220, 14%, 71%);
}html[data-bs-theme="dark"] .language-markdown .token.url > .token.content {
	color: hsl(207, 82%, 66%);
}html[data-bs-theme="dark"] .language-markdown .token.url > .token.url,
html[data-bs-theme="dark"] .language-markdown .token.url-reference.url {
	color: hsl(187, 47%, 55%);
}html[data-bs-theme="dark"] .language-markdown .token.blockquote.punctuation,
html[data-bs-theme="dark"] .language-markdown .token.hr.punctuation {
	color: hsl(220, 10%, 40%);
	font-style: italic;
}html[data-bs-theme="dark"] .language-markdown .token.code-snippet {
	color: hsl(95, 38%, 62%);
}html[data-bs-theme="dark"] .language-markdown .token.bold .token.content {
	color: hsl(29, 54%, 61%);
}html[data-bs-theme="dark"] .language-markdown .token.italic .token.content {
	color: hsl(286, 60%, 67%);
}html[data-bs-theme="dark"] .language-markdown .token.strike .token.content,
html[data-bs-theme="dark"] .language-markdown .token.strike .token.punctuation,
html[data-bs-theme="dark"] .language-markdown .token.list.punctuation,
html[data-bs-theme="dark"] .language-markdown .token.title.important > .token.punctuation {
	color: hsl(355, 65%, 65%);
}html[data-bs-theme="dark"] .token.bold {
	font-weight: bold;
}html[data-bs-theme="dark"] .token.comment,
html[data-bs-theme="dark"] .token.italic {
	font-style: italic;
}html[data-bs-theme="dark"] .token.entity {
	cursor: help;
}html[data-bs-theme="dark"] .token.namespace {
	opacity: 0.8;
}html[data-bs-theme="dark"] .token.token.tab:not(:empty):before,
html[data-bs-theme="dark"] .token.token.cr:before,
html[data-bs-theme="dark"] .token.token.lf:before,
html[data-bs-theme="dark"] .token.token.space:before {
	color: hsla(220, 14%, 71%, 0.15);
	text-shadow: none;
}html[data-bs-theme="dark"] div.code-toolbar > .toolbar.toolbar > .toolbar-item {
	margin-right: 0.4em;
}html[data-bs-theme="dark"] div.code-toolbar > .toolbar.toolbar > .toolbar-item > button,
html[data-bs-theme="dark"] div.code-toolbar > .toolbar.toolbar > .toolbar-item > a,
html[data-bs-theme="dark"] div.code-toolbar > .toolbar.toolbar > .toolbar-item > span {
	background: hsl(220, 13%, 26%);
	color: hsl(220, 9%, 55%);
	padding: 0.1em 0.4em;
	border-radius: 0.3em;
}html[data-bs-theme="dark"] div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:hover,
html[data-bs-theme="dark"] div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:focus,
html[data-bs-theme="dark"] div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:hover,
html[data-bs-theme="dark"] div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:focus,
html[data-bs-theme="dark"] div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:hover,
html[data-bs-theme="dark"] div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:focus {
	background: hsl(220, 13%, 28%);
	color: hsl(220, 14%, 71%);
}html[data-bs-theme="dark"] .line-highlight.line-highlight {
	background: hsla(220, 100%, 80%, 0.04);
}html[data-bs-theme="dark"] .line-highlight.line-highlight:before,
html[data-bs-theme="dark"] .line-highlight.line-highlight[data-end]:after {
	background: hsl(220, 13%, 26%);
	color: hsl(220, 14%, 71%);
	padding: 0.1em 0.6em;
	border-radius: 0.3em;
	box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.2); 
}html[data-bs-theme="dark"] pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows > span:hover:before {
	background-color: hsla(220, 100%, 80%, 0.04);
}html[data-bs-theme="dark"] .line-numbers.line-numbers .line-numbers-rows,
html[data-bs-theme="dark"] .command-line .command-line-prompt {
	border-right-color: hsla(220, 14%, 71%, 0.15);
}html[data-bs-theme="dark"] .line-numbers .line-numbers-rows > span:before,
html[data-bs-theme="dark"] .command-line .command-line-prompt > span:before {
	color: hsl(220, 14%, 45%);
}html[data-bs-theme="dark"] .rainbow-braces .token.token.punctuation.brace-level-1,
html[data-bs-theme="dark"] .rainbow-braces .token.token.punctuation.brace-level-5,
html[data-bs-theme="dark"] .rainbow-braces .token.token.punctuation.brace-level-9 {
	color: hsl(355, 65%, 65%);
}html[data-bs-theme="dark"] .rainbow-braces .token.token.punctuation.brace-level-2,
html[data-bs-theme="dark"] .rainbow-braces .token.token.punctuation.brace-level-6,
html[data-bs-theme="dark"] .rainbow-braces .token.token.punctuation.brace-level-10 {
	color: hsl(95, 38%, 62%);
}html[data-bs-theme="dark"] .rainbow-braces .token.token.punctuation.brace-level-3,
html[data-bs-theme="dark"] .rainbow-braces .token.token.punctuation.brace-level-7,
html[data-bs-theme="dark"] .rainbow-braces .token.token.punctuation.brace-level-11 {
	color: hsl(207, 82%, 66%);
}html[data-bs-theme="dark"] .rainbow-braces .token.token.punctuation.brace-level-4,
html[data-bs-theme="dark"] .rainbow-braces .token.token.punctuation.brace-level-8,
html[data-bs-theme="dark"] .rainbow-braces .token.token.punctuation.brace-level-12 {
	color: hsl(286, 60%, 67%);
}html[data-bs-theme="dark"] pre.diff-highlight > code .token.token.deleted:not(.prefix),
html[data-bs-theme="dark"] pre > code.diff-highlight .token.token.deleted:not(.prefix) {
	background-color: hsla(353, 100%, 66%, 0.15);
}html[data-bs-theme="dark"] pre.diff-highlight > code .token.token.deleted:not(.prefix)::-moz-selection,
html[data-bs-theme="dark"] pre.diff-highlight > code .token.token.deleted:not(.prefix) *::-moz-selection,
html[data-bs-theme="dark"] pre > code.diff-highlight .token.token.deleted:not(.prefix)::-moz-selection,
html[data-bs-theme="dark"] pre > code.diff-highlight .token.token.deleted:not(.prefix) *::-moz-selection {
	background-color: hsla(353, 95%, 66%, 0.25);
}html[data-bs-theme="dark"] pre.diff-highlight > code .token.token.deleted:not(.prefix)::selection,
html[data-bs-theme="dark"] pre.diff-highlight > code .token.token.deleted:not(.prefix) *::selection,
html[data-bs-theme="dark"] pre > code.diff-highlight .token.token.deleted:not(.prefix)::selection,
html[data-bs-theme="dark"] pre > code.diff-highlight .token.token.deleted:not(.prefix) *::selection {
	background-color: hsla(353, 95%, 66%, 0.25);
}html[data-bs-theme="dark"] pre.diff-highlight > code .token.token.inserted:not(.prefix),
html[data-bs-theme="dark"] pre > code.diff-highlight .token.token.inserted:not(.prefix) {
	background-color: hsla(137, 100%, 55%, 0.15);
}html[data-bs-theme="dark"] pre.diff-highlight > code .token.token.inserted:not(.prefix)::-moz-selection,
html[data-bs-theme="dark"] pre.diff-highlight > code .token.token.inserted:not(.prefix) *::-moz-selection,
html[data-bs-theme="dark"] pre > code.diff-highlight .token.token.inserted:not(.prefix)::-moz-selection,
html[data-bs-theme="dark"] pre > code.diff-highlight .token.token.inserted:not(.prefix) *::-moz-selection {
	background-color: hsla(135, 73%, 55%, 0.25);
}html[data-bs-theme="dark"] pre.diff-highlight > code .token.token.inserted:not(.prefix)::selection,
html[data-bs-theme="dark"] pre.diff-highlight > code .token.token.inserted:not(.prefix) *::selection,
html[data-bs-theme="dark"] pre > code.diff-highlight .token.token.inserted:not(.prefix)::selection,
html[data-bs-theme="dark"] pre > code.diff-highlight .token.token.inserted:not(.prefix) *::selection {
	background-color: hsla(135, 73%, 55%, 0.25);
}html[data-bs-theme="dark"] .prism-previewer.prism-previewer:before,
html[data-bs-theme="dark"] .prism-previewer-gradient.prism-previewer-gradient div {
	border-color: hsl(224, 13%, 17%);
}html[data-bs-theme="dark"] .prism-previewer-color.prism-previewer-color:before,
html[data-bs-theme="dark"] .prism-previewer-gradient.prism-previewer-gradient div,
html[data-bs-theme="dark"] .prism-previewer-easing.prism-previewer-easing:before {
	border-radius: 0.3em;
}html[data-bs-theme="dark"] .prism-previewer.prism-previewer:after {
	border-top-color: hsl(224, 13%, 17%);
}html[data-bs-theme="dark"] .prism-previewer-flipped.prism-previewer-flipped.after {
	border-bottom-color: hsl(224, 13%, 17%);
}html[data-bs-theme="dark"] .prism-previewer-angle.prism-previewer-angle:before,
html[data-bs-theme="dark"] .prism-previewer-time.prism-previewer-time:before,
html[data-bs-theme="dark"] .prism-previewer-easing.prism-previewer-easing {
	background: hsl(219, 13%, 22%);
}html[data-bs-theme="dark"] .prism-previewer-angle.prism-previewer-angle circle,
html[data-bs-theme="dark"] .prism-previewer-time.prism-previewer-time circle {
	stroke: hsl(220, 14%, 71%);
	stroke-opacity: 1;
}html[data-bs-theme="dark"] .prism-previewer-easing.prism-previewer-easing circle,
html[data-bs-theme="dark"] .prism-previewer-easing.prism-previewer-easing path,
html[data-bs-theme="dark"] .prism-previewer-easing.prism-previewer-easing line {
	stroke: hsl(220, 14%, 71%);
}html[data-bs-theme="dark"] .prism-previewer-easing.prism-previewer-easing circle {
	fill: transparent;
}

/* ==========================================================================
 * 代码块工具栏：语言标签 + 复制按钮
 * 由 smianao-toolkit / modules/code-highlight 提供
 * ========================================================================== */

.smn-code-block {
    position: relative;
    margin: 1.5em 0;
}

/* 代码块本体：上圆角交给工具栏，下圆角保留 */
.smn-code-block > pre[class*="language-"] {
    margin: 0 !important;
    border-radius: 0 0 0.75em 0.75em !important;
}

/* 万一工具栏没能生成（JS 未执行），让 pre 自己四角都圆 */
.smn-code-block > pre[class*="language-"]:first-child {
    border-radius: 0.75em !important;
}

.smn-code-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 7px 10px 7px 14px;
    font-family: system-ui, -apple-system, "Segoe UI", "Microsoft YaHei", sans-serif;
    font-size: 12px;
    line-height: 1.4;
    background: #eceff3;
    color: #5b626b;
    border: 1px solid #e0e4e9;
    border-bottom: none;
    border-radius: 0.75em 0.75em 0 0;
    -webkit-user-select: none;
    user-select: none;
}

.smn-code-lang {
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.02em;
    opacity: 0.9;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.smn-code-copy {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    flex: none;
    padding: 4px 10px;
    margin: 0;
    border: 1px solid #d8dde3;
    border-radius: 6px;
    background: #fff;
    color: #4a5058;
    font-family: inherit;
    font-size: 12px;
    line-height: 1.5;
    cursor: pointer;
    -webkit-appearance: none;
    appearance: none;
    transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}

.smn-code-copy:hover {
    background: #f5f7f9;
    border-color: #c3cad3;
}

.smn-code-copy:active {
    background: #eaedf1;
}

.smn-code-copy svg {
    display: block;
    width: 13px;
    height: 13px;
    flex: none;
}

.smn-code-copy.is-done {
    color: #2b8a3e;
    border-color: #b2e0c0;
    background: #f0fbf3;
}

/* ---------- 深色模式 ---------- */

html[data-bs-theme="dark"] .smn-code-bar {
    background: #1b2028;
    color: #98a2b3;
    border-color: #2c333f;
}

html[data-bs-theme="dark"] .smn-code-copy {
    background: #262d38;
    color: #c6cedb;
    border-color: #38404d;
}

html[data-bs-theme="dark"] .smn-code-copy:hover {
    background: #2f3744;
    border-color: #454f5e;
}

html[data-bs-theme="dark"] .smn-code-copy:active {
    background: #232a34;
}

html[data-bs-theme="dark"] .smn-code-copy.is-done {
    color: #69db7c;
    border-color: #2f5138;
    background: #1c2a20;
}

/* ---------- 移动端 ---------- */

@media (max-width: 575px) {
    .smn-code-bar {
        padding: 6px 8px 6px 11px;
    }

    .smn-code-lang {
        font-size: 11px;
    }

    .smn-code-copy {
        padding: 3px 8px;
        font-size: 11px;
    }
}

/* ==========================================================================
 * 行号（由 Prism line-numbers 插件生成结构，这里只负责外观）
 * 结构：pre.line-numbers > code + span.line-numbers-rows > span × N
 * ========================================================================== */

.smn-code-block > pre[class*="language-"].line-numbers {
    position: relative;
    padding: 1em 1em 1em 3.7em !important;
    counter-reset: linenumber;
}

.smn-code-block > pre[class*="language-"].line-numbers > code {
    position: relative;
    white-space: inherit;
}

/* 行号列由插件插入在 <code> 内部，而 code 是 position:relative，
 * 所以它的包含块是 code 而非 pre。用负偏移把它挪到 pre 的左侧留白区。 */
.smn-code-block .line-numbers-rows {
    position: absolute;
    top: 0;
    left: -3.7em;
    width: 3.2em;
    padding-right: 0.45em;
    box-sizing: border-box;
    font-size: 100%;
    line-height: inherit;
    text-align: right;
    letter-spacing: -0.5px;
    color: #b3b9c2;
    border-right: 1px solid #e2e6eb;
    pointer-events: none;
    -webkit-user-select: none;
    user-select: none;
}

.smn-code-block .line-numbers-rows > span {
    display: block;
    counter-increment: linenumber;
}

.smn-code-block .line-numbers-rows > span::before {
    content: counter(linenumber);
    display: block;
    padding-right: 0.6em;
    text-align: right;
}

html[data-bs-theme="dark"] .smn-code-block .line-numbers-rows {
    color: #5a6270;
    border-right-color: #333b47;
}

/* 移动端收窄行号列，给代码多留一点宽度 */
@media (max-width: 575px) {
    .smn-code-block > pre[class*="language-"].line-numbers {
        padding-left: 3.2em !important;
    }

    .smn-code-block .line-numbers-rows {
        left: -3.2em;
        width: 2.8em;
    }
}
