diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/KaraokeJourney.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/KaraokeJourney.razor
new file mode 100644
index 00000000..36bbcb31
--- /dev/null
+++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/KaraokeJourney.razor
@@ -0,0 +1,287 @@
+@*
+ EN: Karaoke Journey — End-to-end session workflow tracker with 6 steps from reception to payment.
+ VI: Hành trình Karaoke — Theo dõi quy trình phiên từ đón khách đến thanh toán qua 6 bước.
+*@
+@page "/pos/karaoke/karaoke-journey"
+@layout PosLayout
+@inherits PosBase
+
+
+ @* ═══ HEADER / TIÊU ĐỀ ═══ *@
+
+
+ Hành trình Karaoke
+ Bước @(_activeStep + 1)/6
+
+
+ @* ═══ STEP INDICATOR / CHỈ BÁO BƯỚC ═══ *@
+
+ @for (var i = 0; i < _steps.Length; i++)
+ {
+ var idx = i;
+
_activeStep = idx"
+ style="flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer;min-width:90px;">
+
+
+
+
+ @_steps[idx].Label
+
+
+ @if (i < _steps.Length - 1)
+ {
+
+ }
+ }
+
+
+ @* ═══ STEP CONTENT / NỘI DUNG BƯỚC ═══ *@
+
+ @switch (_activeStep)
+ {
+ @* EN: Step 1 — Guest reception / VI: Bước 1 — Đón khách *@
+ case 0:
+
+
+ Đón khách
+
+
+
+
Số khách
+
+
+ @_guestCount
+
+
+
+
+
Thẻ thành viên
+
+ @if (!string.IsNullOrEmpty(_memberSearch))
+ {
+
+
+ Nguyễn Văn Minh — Gold • 2,450 điểm
+
+ }
+
+
+
+ break;
+
+ @* EN: Step 2 — Room selection / VI: Bước 2 — Chọn phòng *@
+ case 1:
+
+
+ Chọn phòng
+
+
+
+ Tầng 3 • Khu Deluxe • @FormatPrice(200_000)/giờ
+
+
+ break;
+
+ @* EN: Step 3 — Open room / VI: Bước 3 — Mở phòng *@
+ case 2:
+
+
+ Mở phòng
+
+
+
+ Giờ bắt đầu
+ 19:30
+
+
+ Thời lượng đặt
+ 2.5 giờ
+
+
+ Giá/giờ
+ @FormatPrice(200_000)
+
+
+ Giờ kết thúc dự kiến
+ 22:00
+
+
+ Tạm tính phòng
+ @FormatPrice(500_000)
+
+
+
+ break;
+
+ @* EN: Step 4 — In room / VI: Bước 4 — Trong phòng *@
+ case 3:
+
+
+ THỜI GIAN SỬ DỤNG
+
+
+ 02:15:00
+
+
+ Bắt đầu: 19:30 • Dự kiến: 22:00
+
+
+
+
Đơn F&B hiện tại
+
+ Số món
+ 6 món
+
+
+ Tổng F&B
+ @FormatPrice(830_000)
+
+
+
+
+
+
+ break;
+
+ @* EN: Step 5 — Close room / VI: Bước 5 — Đóng phòng *@
+ case 4:
+
+
+ Kết thúc phiên
+
+
+
+ Thời gian sử dụng
+ 2 giờ 30 phút
+
+
+ Tiền phòng
+ @FormatPrice(500_000)
+
+
+ Tiền F&B
+ @FormatPrice(830_000)
+
+
+ Tổng cộng
+ @FormatPrice(1_330_000)
+
+
+
+ break;
+
+ @* EN: Step 6 — Payment / VI: Bước 6 — Thanh toán *@
+ case 5:
+
+
+ TỔNG THANH TOÁN
+
+
+ @FormatPrice(1_330_000)
+
+
+ Phòng VIP 2 • 2h30 • 6 món F&B
+
+
+
+
+
+
+ break;
+ }
+
+
+ @* ═══ NAVIGATION BUTTONS / NÚT ĐIỀU HƯỚNG ═══ *@
+
+
+
+
+
+
+@code {
+ // EN: Active step index / VI: Chỉ số bước hiện tại
+ private int _activeStep;
+ private int _guestCount = 8;
+ private string _memberSearch = "0901234567";
+
+ // EN: Journey steps / VI: Các bước hành trình
+ private readonly StepInfo[] _steps =
+ {
+ new("Đón khách", "users"),
+ new("Chọn phòng", "door-open"),
+ new("Mở phòng", "play"),
+ new("Trong phòng", "music"),
+ new("Đóng phòng", "lock"),
+ new("Thanh toán", "credit-card"),
+ };
+
+ private record StepInfo(string Label, string Icon);
+}
diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/PeakWarning.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/PeakWarning.razor
new file mode 100644
index 00000000..9c88fc13
--- /dev/null
+++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/PeakWarning.razor
@@ -0,0 +1,169 @@
+@*
+ EN: Karaoke Peak Warning — Peak hours pricing comparison, room type multipliers, cost estimator.
+ VI: Cảnh báo giờ cao điểm Karaoke — So sánh giá giờ cao điểm, hệ số phòng, ước tính chi phí.
+*@
+@page "/pos/karaoke/peak-warning"
+@layout PosLayout
+@inherits PosBase
+
+
+ @* ═══ HEADER / TIÊU ĐỀ ═══ *@
+
+
+
+
+ Giờ cao điểm
+
+
+
+
+ @* ═══ CURRENT TIME / THỜI GIAN HIỆN TẠI ═══ *@
+
+
+ KHUNG GIỜ HIỆN TẠI
+
+
+ 20:30 — Thứ 7
+
+
+ Đang áp dụng giá cuối tuần
+
+
+
+ @* ═══ PRICING TABLE / BẢNG GIÁ ═══ *@
+
+
Bảng giá theo khung giờ (Standard)
+
+ @foreach (var rate in _pricingRates)
+ {
+
+
+
+ @rate.Label
+
+
@rate.TimeRange
+
+
+
+ @FormatPrice(rate.Price)/giờ
+
+
x@rate.Multiplier.ToString("0.0")
+
+ @if (rate.IsActive)
+ {
+
Hiện tại
+ }
+
+ }
+
+
+
+ @* ═══ ROOM TYPE SELECTOR / CHỌN LOẠI PHÒNG ═══ *@
+
+
Loại phòng
+
+ @foreach (var room in _roomTypes)
+ {
+
+ }
+
+
+
+ @* ═══ COST ESTIMATOR / ƯỚC TÍNH CHI PHÍ ═══ *@
+
+
Ước tính chi phí
+
+ Số giờ:
+
+ @_estimateHours
+
+ giờ
+
+
+ Giá hiện tại (@_selectedRoomType.Name)
+ @FormatPrice(CurrentRatePrice)/giờ
+
+
+ Số giờ
+ @_estimateHours giờ
+
+
+ Tổng ước tính
+ @FormatPrice(CurrentRatePrice * _estimateHours)
+
+
+
+
+ @* ═══ CONFIRM BUTTON / NÚT XÁC NHẬN ═══ *@
+
+
+
+
+
+@code {
+ // EN: Estimate hours / VI: Số giờ ước tính
+ private int _estimateHours = 2;
+
+ // EN: Pricing rates / VI: Bảng giá
+ private readonly List