# T503 — fe-radar-css-shell-token-guard > Status: `done`(2026-07-31) > Milestone: `M0` > Kind: `chore` > Est. change: `~60 lines` ## Goal 完成後系統應:新頁樣式有獨立落點 `src/styles/radar.css`(已匯入且通過 token 守門),後續 radar/crm 樣式一律不進 `global.css`。 ## Depends on - — ## Inputs - Spec:`../spec.md` §5.3(不再灌 6,171 行的 `global.css`) - 既有:`apps/web/src/styles/tokens.css`、`src/main.tsx`、`scripts/check-tokens.mjs` ## Outputs ### 程式變更(預期路徑) | 路徑 | 動作 | 說明 | |------|------|------| | `apps/web/src/styles/radar.css` | add | 分區骨架:雷達統計列、商機卡、CRM 八格、時間軸、統計 | | `apps/web/src/main.tsx` | edit | 匯入 `radar.css`(在 `global.css` 之後) | ### 行為變更 - 樣式檔存在且被載入;顏色/間距一律引用 `tokens.css` 變數,無硬編碼色值。 ## Out of scope - 實際頁面樣式內容(跟著各 FE task 寫進本檔) - 調整既有 `global.css` ## Acceptance - [x] `npm run check:tokens` 通過(`radar.css` 無硬編碼色值) - [x] 建置產物含新樣式,既有頁面外觀無變化(一處例外見 Notes) - [x] 指令: ```bash cd apps/web && npm run check:tokens && npm run build ``` ## Notes(2026-07-31) `src/styles/radar.css` 依交付順序分區(共用/M1/M2/M3/M4/M5/M6),只放骨架與版面, 文案與元件結構跟著各 FE task 進來。`main.tsx` 在 `global.css` 之後匯入。 ### 順手修掉一個擋門的既有錯字 `npm run check:tokens` **在本 task 之前就是紅的**,不是 `radar.css` 造成的: ```text src/styles/global.css:688 用了 tokens.css 沒有的 --hb-text-md(拼錯?) ``` `.hb-public__lead`(行銷頁前言段)寫的是 `var(--hb-text-md, 1.05rem)`,而 `--hb-text-md` 從來沒定義過,所以一直吃 fallback 1.05rem。這正是 `check-tokens.mjs` 第 3 條規則要抓的情況, 不修掉這行,本 task 的驗收指令永遠不會綠。 改成 `var(--hb-text-lg)`(1.125rem)。**這會讓公開頁前言段從 16.8px 變 18px**: 選 lg 是因為原意顯然是「比內文大一階」,改成 `--hb-text-base` 會讓它跟內文同大小、失去原意; token 尺標本身沒有 17px 這一階,我也不打算為了保住 0.05rem 去新增一個設計尺標。 如果你想保持原樣,就在 `tokens.css` 補 `--hb-text-md: 1.05rem`,兩種都能過門。