역할 토큰이 WCAG AA 를 받치지 못하던 문제를 두 테마 모두에서 수정한다. 종전 측정은
"면 위의 흰 글자" 한 방향만 재고 있었고, 같은 토큰이 "바탕 위의 글자"로도 쓰이는데
그쪽은 다크가 미달이었다(primary 3.07 · danger 2.74). 실제로 깨져 있던 자리는 입력
오류 문구 7곳, 링크 버튼(3.12), 복사 완료 표시, hover 텍스트·아이콘이다.
- 역할 단을 팔레트 번호가 아니라 **대비**로 선택. 계열마다 테마마다 다르다
(라이트 blue-700 · red-700 · green-800 / 다크 -strong 을 800 으로)
- `-color` = 면(on-color 4.5) · `-strong` = 글자(바탕 4.5)로 용도 확정.
다크에서 바탕과 on-color 가 정반대라 한 단이 둘을 맡을 수 없다
- warning 은 어떤 단으로도 흰 글자를 못 받쳐 전경을 뒤집었다(--u-neutral-1000)
- 알림 배경을 `-weakest`(그래픽 단) → `--u-*-bg-color`. 아이콘 대비 라이트 4/4 미달
→ 두 테마 8/8 통과. `--u-warning-bg-color` 신설로 5역할 완비
- `--u-bg-color-raised` 신설 — 크롬 면(툴바·표 헤더·푸터)의 높이 축
- `u-badge[color=blue]` 가 장식 축에서 역할 토큰을 읽던 문제(브랜드 누출)
- `u-button[variant=link]` 이 미사용 상태이던 `--u-link-txt-color` 를 무시하던 문제
신설: `tests/build/token-contrast.test.ts` (조합 대비 계약) ·
`token-fallbacks.mjs --refresh` (스테일 폴백 갱신 — 종전 생성기는 배선만 했다)