Ricardo Lamadrid74 downloadsAfterglow — an Obsidian theme in two coordinated modes: Pastel Archive and Ultraviolet Library
Afterglow — an Obsidian theme in two coordinated modes: Pastel Archive and Ultraviolet Library
Afterglow is an in-development Obsidian theme for long reading and writing sessions. Its light and dark modes share one semantic token system, so switching the base color scheme changes the palette without changing the theme's typography, spacing, borders, or component shapes.


Both images show the same purpose-written sample note, at the same scroll position and with the same panes open.
Afterglow treats light and dark as two expressions of one identity rather than separate themes or a mechanical inversion. Shared semantic roles keep layout and meaning stable while each mode supplies its own color values. Readability comes first: body text stays neutral and meets WCAG AA, while color carries hierarchy, state, and interaction.
Pastel Archive is the light expression: an ivory reading canvas with violet-pale surfaces and restrained pastel accents. It uses the same five hue families as Ultraviolet Library — violet, sky, mint, amber, and blush — and every light family sits within 5° of its dark counterpart. Deeper values from those families carry text so the soft palette never becomes low-contrast body copy.
Ultraviolet Library is the dark expression: a black-violet foundation, aubergine surfaces, ivory text, and focused ultraviolet and sky accents. It uses the same five hue families as Pastel Archive, with every dark family within 5° of its light counterpart. Glow is restrained to interactive emphasis such as links and focus, never paragraph text.
Afterglow currently supports manual installation:
Afterglow inside your vault at
.obsidian/themes/Afterglow.manifest.json and theme.css from the repository root into that
directory.For local development, symlink the repository instead of copying generated files:
ln -s /absolute/path/to/obsidian-afterglow /path/to/vault/.obsidian/themes/Afterglow
Run npm run build after changing src/; Obsidian reads the regenerated
theme.css through the link.
Afterglow is not in the Obsidian community directory. Its initial GitHub release is published, and the theme is installed manually from this repository. The shared token foundation, both coordinated modes, automated foundation checks, brand assets, and real Obsidian previews are in place. Dedicated per-surface refinement is still pending.
The remaining work is unstarted:
Development requires Node.js 18 or newer. Tooling is development-only; no JavaScript or dependency ships with the theme.
npm ci
npm run build
npm test
npm run lint
Author CSS in src/. The build concatenates the modules in numeric order into
the committed theme.css; never edit that generated file by hand.
| Module | Responsibility |
|---|---|
01-shared.css |
Shared typography, spacing, shapes, motion values, and runtime identity |
02-palette.css |
Raw mode-specific palette values |
03-roles.css |
Semantic roles defined for both modes |
04-obsidian.css |
Semantic roles mapped to Obsidian variables |
05-motion.css |
Reduced-motion behavior |
To confirm Afterglow is loaded, select it in Obsidian and run this in the developer console:
getComputedStyle(document.body).getPropertyValue('--ag-theme').trim()
The result is afterglow.
npm test currently runs eleven repository checks followed by twenty negative
cases that deliberately break each contract and prove the responsible check can
fail.
| Check | Verifies |
|---|---|
required-files |
Required shipping files exist and screenshot.png is 512×288 |
screenshot-content |
The listing screenshot clears the flat-placeholder content threshold |
docs-assets |
README-local paths, expected documentation assets, safe SVGs, and optimized matching previews |
manifest |
Theme metadata is complete and uses strict semantic versioning |
build-sync |
Committed theme.css matches the output from src/ |
css-validity |
Source and generated stylesheets parse and satisfy stylelint |
css-policy |
No remote assets, !important, or :root; the runtime marker is present |
token-parity |
Both modes define the same semantic roles |
contrast |
Important text/background pairs meet WCAG AA |
surface-separation |
Adjacent grounds remain distinguishable |
hue-coordination |
Corresponding light and dark roles stay in the intended hue families |
Automated checks verify the shipped artifact and its contracts. Real-vault review remains the evidence for visual claims.
!important; users' own CSS snippets retain control.body, .theme-light, or .theme-dark,
never :root.prefers-reduced-motion.Afterglow is designed and maintained by Ricardo Lamadrid.