Three tiers, one direction of reference. A primitive holds a raw value; a semantic token gives it a role; a component token wires that role to one part of one component. Implementers read the --tasty-* name — the value resolves down the chain.
1 primitive · raw value2 semantic · role3 component · part
Tier 1 · Primitive
The only literals
Context-free raw values on numeric scales. No roles, no opinions. Theme lives here (Mocha / Latte re-point the same names).
✓ re-theme a component by overriding only its tokens
Reading a chain
The blue primitive becomes the primary accent, which the Button's primary background reads. Change --tasty-color-blue once and every consumer downstream follows.