Code cell numbering in embeds is invisible in dark themes
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 75/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- css, html, scss
- Domain
- documentation, frontend
Research direction
The issue is in the SCSS files for Bootstrap themes. Look at src/resources/formats/html/bootstrap/_bootstrap-rules.scss lines 949-953 and compare with the dark theme files like darkly.scss line 184. The fix is to ensure the pre color inherits properly in dark themes. Test by modifying the theme SCSS, then rendering a sample Quarto document with a dark theme to verify the cell numbers are visible.
Written by the indexing model from the issue text.
Description
I have
- searched the issue tracker for similar issues
- installed the latest version of Quarto CLI
- formatted my issue following the Bug Reports guide
Bug description
In dark themes, the cell number (e.g. In [1]:, In [2]:, ...) from an embedded code cell ends up very dark on a dark background and fails contrast minimums.
These cell numbers are a bare <pre> inside a .cell-decorator div (<div class="cell-decorator"><pre>In [2]:</pre></div>) — the <pre> itself has no class, so its text color comes from an unscoped, generic pre rule rather than anything specific to .cell-decorator.
Bootstrap's own pre rule (_reboot.scss#L300) sets color: $pre-color, which defaults to $body-emphasis-color (_variables.scss#L1774-L1775) — a light-mode-oriented near-black. Quarto's own override (_bootstrap-rules.scss#L949-L953) resets background-color to initial (so .cell-decorator's bare <pre> blends into the page) but never resets color, so the hardcoded near-black text is left sitting on whatever background the page inherits.
Bootstrap's own dark themes carry a defensive fix for exactly this: darkly.scss#L184 and cyborg.scss#L192 both set $pre-color: inherit !default;.
Steps to reproduce
---
title: "Repro"
theme: dark.scss
---
{{< embed source.qmd#cell-one >}}
with dark.scss:
/*-- scss:defaults --*/
$body-bg: #151515;
$body-color: #f8f8f8;
/*-- scss:rules --*/
and source.qmd:
---
title: "Source"
---
```{r}
#| label: cell-one
1 + 1
```
quarto render index.qmd
Actual behavior
The compiled theme CSS resolves to:
pre{...color:#000;background-color:#f8f9fa;...}
pre{background-color:initial;padding:initial;border:initial}
.cell-decorator's <pre> ends up with color: #000 on the page's
$body-bg (#151515) — a contrast ratio of ~1.15:1.
Expected behavior
.cell-decorator's <pre> text should meet 4.5:1 contrast against the
theme's own background, the same way Bootswatch's dark themes handle it.
Author workaround (that generated screenshot): add $pre-color: inherit !default; to the theme's
scss:defaults block:
/*-- scss:defaults --*/
$body-bg: #151515;
$body-color: #f8f8f8;
$pre-color: inherit !default;
/*-- scss:rules --*/
Your environment
- IDE: none (CLI render)
- OS: macOS 26.6.2 (build 25G83)
Quarto check output
Quarto 1.11.4
[✓] Checking environment information...
Quarto cache location: /Users/charlottewickham/Library/Caches/quarto
[✓] Checking versions of quarto binary dependencies...
Pandoc version 3.10.0: OK
Dart Sass version 1.101.0: OK
Deno version 2.7.14: OK
Typst version 0.15.1: OK
[✓] Checking versions of quarto dependencies......OK
[✓] Checking Quarto installation......OK
Version: 1.11.4
Path: /Applications/quarto/bin
[✓] Checking tools....................OK
TinyTeX: v2026.04
Chrome Headless Shell: 150.0.7871.115
VeraPDF: 1.28.2
[✓] Checking LaTeX....................OK
Using: TinyTex
Path: /Users/charlottewickham/Library/TinyTeX/bin/universal-darwin
Version: 2026
[✓] Checking Chrome Headless....................OK
Using: Chrome Headless Shell installed by Quarto
Path: /Users/charlottewickham/Library/Application Support/quarto/chrome-headless-shell/chrome-headless-shell-mac-arm64/chrome-headless-shell
Version: 150.0.7871.115
[✓] Checking basic markdown render....OK
[✓] Checking R installation...........OK
Version: 4.6.0
Path: /Library/Frameworks/R.framework/Versions/4.6/Resources
LibPaths:
- /Users/charlottewickham/Library/R/arm64/4.6/library
- /Library/Frameworks/R.framework/Versions/4.6/Resources/library
knitr: 1.51
rmarkdown: 2.31
[✓] Checking Knitr engine render......OK
[✓] Checking Python 3 installation....OK
Version: 3.12.2
Path: /Users/charlottewickham/.pyenv/versions/3.12.2/bin/python3
Jupyter: 5.9.1
Kernels: python3
[✓] Checking Jupyter engine render....OK
[✓] Checking Julia installation...
Investigated with AI assistance, grounded in a local clone of quarto-cli
(see CONTRIBUTING.md "Using AI tools to investigate").
- Dominant language
- JavaScript
- Stars
- 6k
- Forks
- 458
- Avg merge
- 1d 5h
- Merged PRs (30d)
- 53
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from quarto-dev/quarto-cli
-
maintenance ojs-engine
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
quarto-dev/quarto-cli#14934 ·
-
documentation
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
quarto-dev/quarto-cli#14915 ·
-
binder bug
Difficulty 1/5 Under an hour Newbie friendliness 92/100
quarto-dev/quarto-cli#14907 · 3 comments · 1 reaction ·
-
brand bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
quarto-dev/quarto-cli#14891 ·
-
brand bug html revealjs
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
quarto-dev/quarto-cli#14882 ·
All issues in quarto-dev/quarto-cli
Similar issues
-
bug confirmed issue
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
open-webui/open-webui#30750 · 1 comment ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
-
Mend: dependency security vulnerability untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 70/100