Supported CSS

← Back to index

Property names and values match the CSS spec exactly — no prefixes, no -unity- renames. Both parsers (tokenizer and rule/property grammar) are hand-rolled for full control over the supported subset and error reporting.

This page covers selectors, the cascade, values/units, and at-rules. The property surface is split across three sub-pages:

For the authoritative supported / partial / parse-only / missing matrix, see CSS_FEATURE_AUDIT.md and CSS_OPEN_GAPS.md at the repo root. This page is a readable overview, not a line-by-line conformance table.

Selectors

TypeExamples
Simple*, tag, .class, #id
Attribute[name], [name=val], [name~=val], [name^=val], [name$=val], [name*=val]
Combinatorsdescendant (space), child >, adjacent +, general sibling ~
Structural pseudo:first-child, :last-child, :only-child, :nth-child(an+b), :nth-of-type, :empty, :not(...), :is(...), :where(...), :has(...), :lang(...), :dir(...)
State pseudo:hover, :focus, :focus-visible, :focus-within, :active, :link, :visited, :any-link, :target, :scope, :disabled, :enabled, :checked, :default, :required, :optional, :valid, :invalid, :user-valid, :user-invalid, :in-range, :out-of-range, :read-only, :read-write, :placeholder-shown, :autofill, :root
Pseudo-elements::before / :before, ::after / :after, ::placeholder, ::selection, ::backdrop, ::marker

Specificity follows the spec; !important is honored. State pseudo-classes flip automatically off event-driven interaction state — no controller code.

Known divergence: :nth-child(... of <selector>) parses but the of <selector> filter is dropped — the index counts all children. Use a more specific selector instead.

Cascade & inheritance

Values & units

At-rules

Known divergences from Chrome

These are intentional or phase-scoped. The full list lives in PLAN.md §11 "Known v1 simplifications".


Next: CSS Layout · CSS Visual · CSS Text