# SHARP-ER design tokens Two tiers, so changing the brand is a one-line edit in one file. ``` app/app.css entry - imports tailwindcss then the three files below app/styles/primitives.css TIER 1 raw values, no meaning (@theme) app/styles/semantic.css TIER 2 roles that alias tier 1 (per surface) app/styles/typography.css TIER 2 type roles, @font-face, EN/AR font switch ``` ## The one rule **Components may reference only tier-2 tokens.** Never a raw hex, never a tier-1 primitive. This binds `app/app.css` too. Its `@layer base` block styles the document, so the body type is set from `--type-body-base-size` / `--type-body-base-leading` (the semantic alias of the Body/Medium role, declared in `semantic.css`) rather than from `--text-md` / `--leading-6` directly. Only `primitives.css`, `semantic.css` and `typography.css` may name a tier-1 token. ```tsx // yes