Native parser public API and integration work
The current CSS target is LightPanda-style renderless text. This supersedes the former full-computed-CSS plan and its V0-V9/R3-R7/C6 grammar obligations. Removing these features is an intentional behavior change, not deferred implementation debt. Historical implementation measurements in git history do not describe the current engine.
CSS boundary
| Area | Disposition |
|---|---|
| Syntax, selectors, media | Retained, including bounded work and existing selector specificity. |
| Style/media/supports/layer/import/font-face CSSOM | Retained; declarations and font descriptors store text. |
| Other at-rules | Generic CSSRule with source cssText; no cascade effects or specialized interfaces. |
| V0-V9 typed grammars, math, colors, transforms, all resets | Removed by design: parsing cost is not justified by renderless automation. Catalog names are data, not grammar obligations. |
| Keyframes, property registrations, container queries, pages/counters/namespaces | Semantic models removed by design; opaque rule text remains. |
| Computed values | Text cascade, inheritance and small defaults; synthetic width/height only. No unit/color computation. |
| Variables | Inherited custom text, with optional depth/size-bounded textual substitution in ordinary properties; no typed substitution graph. |
| Retained limitations | Nested conditional rules/interleaved declarations and import layer()/supports() still have explicit unsupported boundaries; stylesheet byte/MIME work remains below. |
UA/shadow/import handling, broader selectors/media conditions, basic synthetic flex geometry and textual variables are deliberate conveniences beyond LightPanda. CSS parsing remains on demand. Public XPath, HTML/XML serialization, syntax-only ParseCss and the native parser improvements remain unchanged. No HTML tokenizer, DOM, XML or XPath work is part of this CSS reduction.
Retained completed slices
Browser loading, selectors and parser integration
Public API dependencies still required
Each public slice requires intentional API snapshots on net8.0/net10.0 and execution from the unsigned local-feed package consumer, without friend access or a project reference. A separate native pack/run is required for AOT evidence.
Acceptance still required
Routine checks are Release builds/tests, ParserDependencyTests, DomBindingsStalenessTests, the public API snapshots, the packed consumer and the dependency inventory. Raw CSS values are intentional; do not misrepresent them as full computed-style conformance.