# Bubble
Bong bóng lời thoại: lời khách trong thẻ khách và ở quầy, lời linh vật ở mặt tiền. Khối dùng lại được, kích thước theo chữ nên chạy ở mọi cỡ DOM.
## Khi nào dùng
- Câu khách nói về ly nước muốn gọi ("Cho mình 1 ly **Trà sữa** size L…").
- Lời nhận xét ngắn trong review ("Làm nhanh, đúng vị").
- Lời gợi ý của linh vật ở mặt tiền.
- Chữ hướng dẫn thao tác thì dùng Coachmark, không dùng bubble.
## Biến thể
| Biến thể | Lớp | Dùng khi |
|---|---|---|
| Thường | `tt-bubble` | Đuôi trên-trái (bo 4px 12px 12px 12px), nền `bg`; đặt trên nền `panel` |
| Nổi | `tt-bubble tt-bubble--raised` | Đặt trên nền `bg`: nền `panel` + viền 2px `line` |
| Linh vật | `tt-bubble tt-bubble--mascot` | Viền vàng, đuôi giữa phía dưới, lơ lửng nhẹ (`tt-bob`) |
| Sân khấu | `tt-bubble tt-bubble--stage` | Lời khách ở quầy 768px: chữ 24px, không nền, từ khoá `stage-accent` |
## Cấu trúc
```html
Cho mình 1 ly Trà sữa size L,
thêm trân châu đen nha
```
Từ khoá món đặt trong `` (đậm 800, màu `pink-d`). Bubble là `inline-block`, `max-width: 100%`, tự xuống dòng.
## Trạng thái
| Trạng thái | Hiệu ứng |
|---|---|
| `--mascot` | Lơ lửng 4px chu kỳ 5s (`tt-bob`), tắt khi `prefers-reduced-motion` |
| Còn lại | Tĩnh |
## Token sử dụng
`bg`, `panel`, `ink`, `line`, `pink-d`, `gold`, `shadow-edge` (viền trong ở `hc`), `stage-ink`, `stage-accent`, `radius-12/14`, `space-6/12`.
## Khả năng tiếp cận
- Chỉ là chữ, không có role riêng; nằm trong luồng đọc bình thường.
- `pink-d` trên `bg` / `panel` đạt tương phản chữ nhỏ ở bốn theme gốc (và 12.18:1 ở `hc`, nơi bong bóng có thêm viền `shadow-edge`), nhưng từ khoá vẫn đã đậm 800 nên đừng chỉ dựa vào màu để báo "từ quan trọng".
- Nếu bubble đổi chữ liên tục (khách mới), đặt bubble trong vùng `aria-live="polite"` ở nơi dùng.
## Nên / Không nên
| Nên | Không nên |
|---|---|
| Bôi đậm tối đa 2–3 từ khoá món | Bôi đậm cả câu |
| Dùng `--raised` khi nền phía sau là `bg` | Để bubble `bg` trên nền `bg` (mất khung) |
| Với `--stage`, đặt trong `.tt-stage` 768px | Dùng `--stage` ở DOM thường (chữ 24px cố định) |
## Nguồn
`.say`, `.say b` — css/style.css dòng 355–356 (cỡ .74rem, padding 5px 7px, line-height 1.3); `.frontshop-karin-bubble` (+ `::after`, keyframes `floatBubble`) — dòng 2329–2360, viền `#f59e0b` đổi `gold`, nền trắng .96 đổi `panel`, chữ `#78350f` đổi `ink`, bóng `0 4px 15px rgba(0,0,0,.2)` viết bằng `color-mix`; `#q3bub`/`#q3say`, `#q3say b` — dòng 607–615 (24px, 600, 1.18; từ khoá `#c2506c` thành `stage-accent`).