# Progress
Thanh tiến độ mảnh: tiến độ mục tiêu ngày, độ kiên nhẫn của khách và thanh doanh thu trong bảng kê.
## Khi nào dùng
- Mục tiêu ngày (Bán 20 ly): `--goal`, đạt rồi thêm `is-done`.
- Độ kiên nhẫn của khách trên thẻ khách: `--patience`.
- Thanh so sánh nhỏ dưới tên món trong bảng kê cuối ngày: `--revenue`.
## Biến thể
| Biến thể | Lớp | Dùng khi |
|---|---|---|
| Mục tiêu | `tt-progress tt-progress--goal` | Cao 6px, fill `gold`, bo 3 |
| Mục tiêu đạt | `tt-progress tt-progress--goal is-done` | Fill chuyển `mint` |
| Kiên nhẫn | `tt-progress tt-progress--patience` | Cao 5px, fill `mint`, chiếm cả hàng lưới (`grid-column: 1/-1`) |
| Doanh thu | `tt-progress tt-progress--revenue` | Cao 4px, fill `link` |
## Cấu trúc
```html
```
Người dùng tự đặt `width` của `__fill` (phần trăm) và giữ `aria-valuenow` đồng bộ. Khi dùng trong thẻ khách (CustomerCard), đặt `tt-progress--patience` làm con trực tiếp của lưới.
## Trạng thái
| Trạng thái | Hiệu ứng |
|---|---|
| `is-done` | Fill đổi sang `mint` (dùng cho `--goal`) |
## Token sử dụng
`fill-muted` (rãnh), `gold`, `mint`, `link`, `space-4`.
## Khả năng tiếp cận
- Luôn có `role="progressbar"`, `aria-valuemin`, `aria-valuemax`, `aria-valuenow` và `aria-label`.
- Cạnh thanh nên có số ("12/20") hoặc tên để không chỉ dựa vào chiều dài.
- Rãnh `line` rất nhạt so với panel (dưới 3:1): thanh là phần trang trí, thông tin chính nằm ở chữ.
## Nên / Không nên
| Nên | Không nên |
|---|---|
| Kẹp `width` trong 0–100% | Để fill vượt rãnh |
| Dùng `--patience` ngay dưới tên khách | Tự đổi màu fill bằng hex |
## Nguồn
`.gb`, `.gb i`, `.gr.ok .gb i`, `.pat`, `.pat i`, `.tbar`, `.tbar i` — css/style.css; markup trong js/game.js (`goalc`, thẻ khách, `trow`).
- `.pat i` mặc định `width:100%`; ở đây fill do trang đặt.
- Game không có transition cho fill; DS giữ nguyên.