diff --git a/book/quarto/_extensions/mlsysbook-ext/custom-numbered-blocks/style/foldbox.css b/book/quarto/_extensions/mlsysbook-ext/custom-numbered-blocks/style/foldbox.css index c98ab55100..49386d8d1d 100644 --- a/book/quarto/_extensions/mlsysbook-ext/custom-numbered-blocks/style/foldbox.css +++ b/book/quarto/_extensions/mlsysbook-ext/custom-numbered-blocks/style/foldbox.css @@ -257,7 +257,12 @@ details[class*="callout-"] li { /* Dark mode support - Quarto-aligned dark theme */ /* Per-callout dark mode colors (--background-color, --text-color, border-color, summary text, code text) are dynamically generated by foldbox.lua from YAML. - Only structural dark mode rules remain here. */ + Only structural dark mode rules remain here. + Both selectors are required: + - @media covers OS-level dark preference + - body.quarto-dark covers Quarto's manual toggle button */ + +/* OS-level dark preference */ @media (prefers-color-scheme: dark) { /* Base foldbox dark styling */ @@ -283,4 +288,26 @@ details[class*="callout-"] li { details.fbx-question>summary::after { background-color: var(--text-color); } +} + +/* Quarto manual toggle button - body.quarto-dark */ +body.quarto-dark details.fbx-default, +body.quarto-dark details.fbx-answer, +body.quarto-dark details.fbx-question { + --text-color: #e6e6e6; + border-color: #454d55; +} + +body.quarto-dark details.fbx-default>div, +body.quarto-dark details.fbx-answer>div, +body.quarto-dark details.fbx-question>div, +body.quarto-dark details[class*="callout-"]>div { + background-color: var(--bs-dark, #212529); + color: #e6e6e6; +} + +body.quarto-dark details.fbx-default>summary::after, +body.quarto-dark details.fbx-answer>summary::after, +body.quarto-dark details.fbx-question>summary::after { + background-color: var(--text-color); } \ No newline at end of file diff --git a/book/quarto/_extensions/mlsysbook-ext/custom-numbered-blocks/style/foldbox.lua b/book/quarto/_extensions/mlsysbook-ext/custom-numbered-blocks/style/foldbox.lua index 82cf96120f..2bec0af489 100644 --- a/book/quarto/_extensions/mlsysbook-ext/custom-numbered-blocks/style/foldbox.lua +++ b/book/quarto/_extensions/mlsysbook-ext/custom-numbered-blocks/style/foldbox.lua @@ -166,37 +166,47 @@ insertPreamble = function(doc, classDefs, fmt) return(result) end - -- Generate dark mode CSS overrides from YAML colors - -- This covers BOTH @media (prefers-color-scheme: dark) AND manual toggle + -- Generate dark mode CSS overrides from YAML colors. + -- Emits two parallel rule-sets so dark styling works regardless of how dark + -- mode is activated: + -- 1. @media (prefers-color-scheme: dark) -- OS-level system preference + -- 2. body.quarto-dark selector -- Quarto's manual toggle button local generateDarkModeCSS = function () local darkCSS = {} if classDefs == nil then return "" end - -- 1. @media query block for system-level dark mode (detected by OS) - table.insert(darkCSS, "\n") + + -- 1. OS-level dark mode via @media query + table.insert(darkCSS, "\n") return pandoc.utils.stringify(darkCSS) end