Hotfix for a regression introduced in v0.10.2. If you pulled v0.10.2 and noticed the apps-grid dropdown, modal panels, or list groups rendering transparent over content — this is the fix.
What broke
v0.10.2 cleaned up our tabler_overrides.css to stop shadowing Tabler 1.4's cool dark palette. Part of that cleanup removed our explicit --tblr-card-bg assignment from the body.theme-dark block, expecting Tabler 1.4's defaults to take over.
But Tabler 1.4 only defines --tblr-card-bg scoped to .card elements themselves (.card { --tblr-card-bg: var(--tblr-bg-surface); }) — not at the root. On non-.card elements that our overrides target (.dropdown-menu, .modal-content, .list-group-item, plus the ported SmallStack components), var(--tblr-card-bg) resolved to empty/transparent.
Visible symptom: clicking the apps-grid dropdown (top-right square icon) opened a transparent panel; the dashboard content bled through every menu item.
What's fixed
A one-line addition to the dark-mode root block: re-expose --tblr-card-bg pointing at Tabler's globally-defined --tblr-bg-surface. Both resolve to #1f2937 (Tailwind slate-800) so visuals on .card elements are unchanged. Off-card elements now get the proper opaque slate-800 surface instead of falling through to transparent.
Also updated our SmallStack --card-bg alias to point at var(--tblr-bg-surface) directly for the same reason.
Verified
Debug overlay reading computed CSS-var values on document.documentElement in dark mode:
--tblr-card-bg: #1f2937(was empty in v0.10.2)--card-bg: #1f2937(was empty in v0.10.2)--tblr-bg-surface: #1f2937(always was, unchanged)
Visually: apps-grid dropdown renders as a solid slate-800 panel. No bleed-through.
Upgrade
git pull origin main
# One-line CSS change. No tests/migrations/dependencies affected.If you're already on v0.10.2 and seeing transparent dropdowns/modals: this is your fix.
🤖 Co-Authored-By: Claude Opus 4.7 (1M context)