:root, but no element picks them up automatically — each one opts in. Two attributes are the entire contract:
data-ucs opts the element into the Substrate cascade. It takes no value.
data-mode is the element’s mode list — a space-separated set of tokens matched with ~=, so tokens compose orthogonally: data-mode="danger card frosted" is a danger-intent card with a frosted material. One attribute carries the full per-element mode composition:
The conventional intent roles are
brand, neutral, danger, warning, success, info, and beta, with brand-specific roles generated alongside them; the kernel’s mode resolver accumulates every active token’s effects in order (system modes first, component modes second).
Attributes the runtime writes
You authordata-ucs and data-mode; the runtime owns the rest:
Styling with the solved values
Your own CSS composes from the same primitives the attributes activate — see Web for thecalc() composition patterns, and the Color Token Reference for every variable an intent produces.
Runtime & Imports
The required call sequence that writes the values these attributes consume.
Surface Component
Required when a surface nests inside another — re-solves contrast locally.