diff --git a/src/command/render/pandoc-html.ts b/src/command/render/pandoc-html.ts
index 86f08e4dc9d..1ba9fde76d1 100644
--- a/src/command/render/pandoc-html.ts
+++ b/src/command/render/pandoc-html.ts
@@ -142,7 +142,7 @@ export async function resolveSassBundles(
)
? "dark"
: "light";
- const targets: SassTarget[] = [{
+ let targets: SassTarget[] = [{
name: `${dependency}.min.css`,
bundles: (bundles as any),
attribs: {
@@ -175,10 +175,22 @@ export async function resolveSassBundles(
...attribForThemeStyle("dark"),
},
};
- if (defaultStyle === "dark") {
+ if (defaultStyle === "dark") { // light, dark
targets.push(darkTarget);
- } else {
- targets.unshift(darkTarget);
+ } else { // light, dark, light
+ const lightTargetExtra = {
+ ...targets[0],
+ attribs: {
+ ...targets[0].attribs,
+ class: "quarto-color-scheme-extra",
+ },
+ };
+
+ targets = [
+ targets[0],
+ darkTarget,
+ lightTargetExtra,
+ ];
}
hasDarkStyles = true;
diff --git a/src/resources/formats/html/templates/quarto-html-before-body.ejs b/src/resources/formats/html/templates/quarto-html-before-body.ejs
index 9a8f5a2cf6f..0cbb9891031 100644
--- a/src/resources/formats/html/templates/quarto-html-before-body.ejs
+++ b/src/resources/formats/html/templates/quarto-html-before-body.ejs
@@ -41,7 +41,7 @@
const alternateStylesheets = window.document.querySelectorAll('link.quarto-color-scheme.quarto-color-alternate');
manageTransitions('#quarto-margin-sidebar .nav-link', false);
if (alternate) {
- disableStylesheet(primaryStylesheets)
+ // note: dark is layered on light, we don't disable primary!
enableStylesheet(alternateStylesheets);
for (const sheetNode of alternateStylesheets) {
if (sheetNode.id === "quarto-bootstrap") {
@@ -170,6 +170,10 @@
<% } else { %>
const darkModeDefault = <%= darkModeDefault %>;
<% } %>
+
+ <% if (!darkModeDefault) { %>
+ document.querySelector('link.quarto-color-scheme-extra').rel = 'disabled-stylesheet';
+ <% } %>
let localAlternateSentinel = darkModeDefault ? 'alternate' : 'default';