Quarto auto-applies !default to every variable in scss:defaults, and
Quarto compiles the theme list in order: style.scss is processed before
dark-mode.scss. style.scss declares `$mlsysim-accent: #0284C7` (the light
cyan); dark-mode.scss reassigning the same name to #38BDF8 was silently
ignored because the variable was already locked by !default. Result:
every `rgba($mlsysim-accent, X)` call in dark-mode.scss compiled with the
light value, so the active sidebar link and active TOC link rendered with
Bootstrap's --bs-primary cyan instead of the brighter dark accent.
Renamed the dark variable to $mlsysim-accent-dark across the file.
Also tightened the active-state cascade by moving color/background/weight
into the high-specificity #quarto-sidebar guard block, matching the look
in instructors/ (white text on subtle 15% accent tint, weight 500).
Documented the gotcha inline so future edits don't repeat it.
Extends PR #1633's instructors fix to the rest of the Quarto ecosystem.
Quarto renders floating sidebars with `<a class="sidebar-link">` and
`<a class="sidebar-item-toggle">` directly (not nested inside an
`.sidebar-item a` wrapper), so the legacy selector missed all real DOM
nodes.
Sites updated:
* slides, interviews, tinytorch/quarto, mlsysim/docs: full hardening
(toggle, leaf-link, active-state, search input, TOC rail).
* labs, kits, book/quarto: added missing search-input theming
(core sidebar and TOC fix already present from earlier work).
Each site's accent color is preserved: indigo for instructors and
interviews, pink for slides, amber for tinytorch, cyan for mlsysim,
teal for kits and labs, crimson for book.
Before: four Quarto sites each shipped their own copy of the
`.sidebar-navigation .sidebar-item a` rule block, each hard-wired to a
different accent variable ($accent, $kits-accent, $colabs-accent,
$mlsysim-accent). Plus one 1350-line orphan file
(book/quarto/assets/styles/style.scss) that was referenced nowhere and
carried yet another copy of the same rules.
After: every site imports shared/styles/partials/_sidebar.scss once.
Each site aliases $accent to its own site-accent (book does it via
themes/_theme-harvard which sets `$accent: $brand-crimson`; kits/labs/
mlsysim already had `$accent: $site-accent` at the top of their
style.scss), so the partial's accent-keyed hover/active states resolve
to the right color per site without needing a per-site rule copy.
Files:
- shared/styles/partials/_sidebar.scss
(unchanged in this PR — already is the canonical form after #1514)
- book/quarto/assets/styles/_base-styles.scss
replace ~40 lines of local sidebar rules + .part-divider with
`@import '.../partials/sidebar'`
- book/quarto/assets/styles/style.scss
DELETE (1350 lines, zero build references — confirmed by grep
across _quarto*.yml, Makefile, .sh, .py, .js)
- kits/assets/styles/style.scss
replace local sidebar rules with partial import; keep the
site-specific `.sidebar-title` rule (not part of the shared shape)
- labs/assets/styles/style.scss
replace local sidebar rules with partial import
- mlsysim/docs/styles/style.scss
replace local sidebar rules with partial import; the
.sidebar-navigation > .sidebar-menu-container dividers below
are site-specific and stay
Net: +23 / -1531 lines. Behavior is identical (the partial was already
tightened to these same values in PR #1514, so this is a
refactor-not-redesign). slides and instructors already had no sidebar
overrides and are not touched.
TinyTorch was already importing the partial directly and is unchanged.
The ecosystem now has one sidebar rule block, in one file, controlling
every Quarto site.
- Replace inline Google Fonts <link> tags in all 8 site configs with
a single `- file: shared/config/site-head.html` reference, so fonts
(Inter 400-800, JetBrains Mono) and Font Awesome are inherited from
one shared file instead of duplicated across every _quarto.yml
- Add missing Inter weight 800 (was only in site-head.html, not configs)
- Add carousel CSS + JS for MLSys·im landing page (arrows, dots, slides,
auto-rotation, keyboard nav) — fixes non-functional < > buttons
Replace duplicated navbar/mobile responsive rules in satellite sites
(instructors, kits, labs, mlsysim, slides) with a single import of
shared/styles/partials/_mobile.scss. Removes ~169 lines of copy-pasted
CSS that would drift out of sync when the shared partial is updated.
- instructors: remove rogue desktop padding, add _mobile import
- kits: remove ~50 lines of duplicated mobile rules, add _mobile import
- labs: remove ~55 lines of duplicated mobile rules, add _mobile import
- mlsysim: remove ~55 lines of duplicated mobile rules, add _mobile import
- slides: add _mobile import (had no mobile rules before)
Every subsite now sets $accent to its brand color and imports
shared/styles/partials/_navbar.scss instead of duplicating the
~40-line navbar block locally. Single source of truth for link
color, hover/active states, brand image height, icon-collapse
media query, and color-scheme toggle.
Drift fix: before this, instructors had font-size: 0.9rem +
weight 500 (making navbar look smaller than peer sites) and
slides had no navbar CSS at all (fell back to Bootstrap defaults).
Both now match the ecosystem.
Also renames $accent in labs/style.scss (previously hot pink
#e94560, used only by .coming-badge) to $coming-badge-pink to
free $accent for the ecosystem convention.
Net: -168 lines of duplicated SCSS across 6 files.
Replace 9 old tutorials with 12 new numbered tutorials (00-11) covering
roofline through full-stack audit. Redesign landing page, add
models-and-solvers and extending-the-engine guides. Add __main__.py,
cli.py, and cli/ package for command-line interface.
- Add mlsysim-validate-dev, mlsysim-preview-dev, and mlsysim-publish-live workflows
- Move mlsysim docs config to config/ dir with symlink (matching kits/labs pattern)
- Add MLSYSIM to ecosystem navbar across all 7 site configs
- Add mlsysim/ URL rewrite to book-preview-dev for dev site
- Replace hardcoded paths with GitHub variables in kits and labs workflows
- New repo variables: MLSYSIM_ROOT, MLSYSIM_DOCS, DEV_MLSYSIM_PATH, KITS_ROOT,
KITS_DOCS, LABS_ROOT, LABS_DOCS
- Elevate 5-Layer Progressive Lowering mental model to architecture.qmd
- Clean up landing page copy to be a punchy one-liner
- Re-render architecture composition diagram as SVG for reliability
- Move math derivations out of tutorials and into math.qmd with citations
- Add DGX Spark to Silicon Zoo