# DSSL
> DSSL is a style language for the web. For JS-guaranteed pages it replaces writing CSS; it does not replace the CSS platform. You write `.dssl` files, the page loads the engine (about 58 kB gzipped, about 190 kB as plain source), and the engine walks the DOM in real time applying every matched rule as inline styles. Nothing compiles to CSS at runtime, but v0.8.0 adds the exit lane: `dssl build` compiles the static subset to a real .css file for no-JS, strict-CSP or size-critical pages. Elements added later are styled the moment they appear; signals, states and motion share one grammar.
- Site (docs, playground, changelog, bench): https://dssl-sable.vercel.app
- Repo + full docs in the README: https://huggingface.co/EHS-Studio/dssl
- Install: `curl -fsSL https://dssl-sable.vercel.app/install.sh | sh` (or the zip: https://dssl-sable.vercel.app/dssl-engine.zip)
- Version: 0.15.0 (engine), MIT license
- Feature matrix vs CSS: see PARITY.md in the repo
- For agents working ON the codebase: see AGENTS.md in the repo
## The five things reviewers ask about
1. No build step. Styles are source files linked with `` or embedded in the page as ``; the engine adds `dssl-ready` to ``.
- Showcase: /showcase/wood/ is a whole page (Heartwood) built with these.
## CLI (v0.8.0)
```sh
node cli/dssl.mjs check styles.dssl --strict # CI: exit 1 on errors, --json for machines
node cli/dssl.mjs build styles.dssl -o styles.css # the static subset as real CSS
```
`check` runs the real compiler with file:line diagnostics and did-you-mean hints. `build` compiles the static subset (tokens → custom properties, states → :hover, layers → @layer, motions → @keyframes, raw { } verbatim, pin → !important, seen → its no-JS final state) and prints a report of what was emitted and what stays runtime-only.
Wait for the `dssl-ready` event on `window` before measuring layout: the engine styles the DOM after DOMContentLoaded, and scripts that measure earlier read a half-styled world.
## Editor support
The official extension (VS Code and VSCodium, same .vsix) bundles the real parser and resolver: diagnostics identical to the browser console, completions from the workspace token registry, hover docs for the semantic vocabulary. In VSCodium, search "DSSL" in the Extensions tab (it is on Open VSX: https://open-vsx.org/extension/ehs-studio/dssl-vscode). In VS Code, download `dssl-vscode/dssl-vscode-0.15.0.vsix` from the repo files, then Extensions panel -> ... -> Install from VSIX. Source lives in `dssl-vscode/` in the repo.