diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Layout/AuthLayout.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Layout/AuthLayout.razor
new file mode 100644
index 00000000..e581d80a
--- /dev/null
+++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Layout/AuthLayout.razor
@@ -0,0 +1,49 @@
+@inherits LayoutComponentBase
+@inject IJSRuntime JS
+
+
+
+
+
+
+
+
+
+
+ @Body
+
+
+
+@code {
+ protected override async Task OnAfterRenderAsync(bool firstRender)
+ {
+ try { await JS.InvokeVoidAsync("lucide.createIcons"); } catch { }
+ }
+
+ private MudTheme _theme = new()
+ {
+ PaletteDark = new PaletteDark()
+ {
+ Primary = "#FF5C00",
+ PrimaryContrastText = "#FFFFFF",
+ AppbarBackground = "rgba(10,10,11,0.85)",
+ AppbarText = "#FFFFFF",
+ Background = "#0A0A0B",
+ Surface = "#111113",
+ TextPrimary = "#FFFFFF",
+ TextSecondary = "#ADADB0",
+ ActionDefault = "#FFFFFF",
+ LinesDefault = "#1F1F23"
+ }
+ };
+}
diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Onboarding/OnboardingStore.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Onboarding/OnboardingStore.razor
index 567687aa..64187b3a 100644
--- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Onboarding/OnboardingStore.razor
+++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Onboarding/OnboardingStore.razor
@@ -116,6 +116,7 @@
new StoreType("cafe", "Café", "coffee", "#FF5C00", "Quán cà phê, trà sữa"),
new StoreType("restaurant", "Nhà hàng", "utensils", "#3B82F6", "Nhà hàng, quán ăn"),
new StoreType("karaoke", "Karaoke", "mic", "#8B5CF6", "Karaoke, giải trí"),
+ new StoreType("spa", "Spa & Beauty", "sparkles", "#EC4899", "Spa, thẩm mỹ, nail"),
new StoreType("retail", "Bán lẻ", "shopping-bag", "#22C55E", "Cửa hàng bán lẻ"),
};
diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Auth/LoginSelect.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Auth/LoginSelect.razor
new file mode 100644
index 00000000..ab00d463
--- /dev/null
+++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Auth/LoginSelect.razor
@@ -0,0 +1,57 @@
+@page "/auth/login"
+@layout AuthLayout
+@inject NavigationManager Navigation
+@inject IJSRuntime JS
+
+Chọn loại tài khoản — GoodGo POS
+
+
+
+
+ Chọn loại tài khoản
+
+
+ Đăng nhập với vai trò phù hợp
+
+
+
+ @foreach (var role in _roles)
+ {
+
Navigation.NavigateTo(role.Href)"
+ style="background:var(--pos-bg-elevated, #18181B);border:2px solid var(--pos-border-default, #2A2A2E);border-radius:var(--pos-radius, 12px);padding:28px 20px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;cursor:pointer;transition:border-color 0.2s, transform 0.15s;"
+ onmouseover="this.style.borderColor='@role.Color';this.style.transform='translateY(-2px)';"
+ onmouseout="this.style.borderColor='var(--pos-border-default, #2A2A2E)';this.style.transform='none';">
+
+
+
+
@role.Title
+
@role.Description
+
+ }
+
+
+
+ Chưa có tài khoản?
+ Đăng ký ngay
+
+
+
+@code {
+ protected override async Task OnAfterRenderAsync(bool firstRender)
+ {
+ if (firstRender)
+ {
+ try { await JS.InvokeVoidAsync("lucide.createIcons"); } catch { }
+ }
+ }
+
+ private record RoleCard(string Title, string Href, string Icon, string Color, string Description);
+
+ private readonly RoleCard[] _roles =
+ [
+ new("Chủ doanh nghiệp", "/auth/login/admin", "building", "#3B82F6", "Quản lý toàn bộ hệ thống, cửa hàng, nhân viên"),
+ new("Quản lý chi nhánh", "/auth/login/branch", "store", "#8B5CF6", "Quản lý chi nhánh, ca làm việc, báo cáo"),
+ new("Nhân viên", "/auth/login/staff", "user-check", "#22C55E", "Thu ngân, barista, phục vụ, bếp"),
+ new("Khách hàng", "/auth/login/customer", "heart", "#EC4899", "Tích điểm, ưu đãi, lịch sử mua hàng"),
+ ];
+}
diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Home.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Home.razor
index 42db4f16..00de7347 100644
--- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Home.razor
+++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Home.razor
@@ -1,341 +1,80 @@
-@page "/"
-@page "/{culture}"
-@inject IStringLocalizer L
+@page "/"
+@layout AuthLayout
+@inject NavigationManager Navigation
@inject IJSRuntime JS
-aPOS - @L["HeroHeadline"]
+GoodGo POS — Hệ thống quản lý POS đa ngành
-
-
-
- @L["HeroBadge"]
-
+
-
- @L["HeroHeadline"]
+
+ GoodGo POS
-
- @L["HeroSubtext"]
+
+ Hệ thống quản lý POS đa ngành
-
+
+ Giải pháp toàn diện cho Café, Nhà hàng, Karaoke, Spa & Bán lẻ
+
-
-

+
+
+
-
-
-
- @L["Trust_Label"]
-
- @L["Trust_Stat1"]
-
- @L["Trust_Stat2"]
-
+
+
+
+ @foreach (var card in _featureCards)
+ {
+
+
+
@card.Title
+
@card.Description
+
+ }
+
-
-
-
-
-
- @foreach (var f in _features)
- {
-
-
-
-
-
@L[f.Title]
-
@L[f.Desc]
-
- }
-
-
-
-
-
-
-
-
-
-
- @foreach (var ind in _industries)
- {
-
-
-
![@L[ind.Title]](@ind.Image)
-
-
-
@L[ind.Title]
-
@L[ind.Desc]
-
- @foreach (var chip in L[ind.Chips].Value.Split(','))
- {
- ✦ @chip.Trim()
- }
-
-
-
- }
-
-
-
-
-
-
-
-
-
-
-
-
1
-
@L["Step1_Title"]
-
@L["Step1_Desc"]
-
-
-
2
-
@L["Step2_Title"]
-
@L["Step2_Desc"]
-
-
-
3
-
@L["Step3_Title"]
-
@L["Step3_Desc"]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@L["Plan_Starter_Name"]
-
- @L["Plan_Starter_Price"]
- @L["Plan_Starter_Period"]
-
-
@L["Plan_Starter_Desc"]
-
-
- - @L["Plan_Starter_Feature1"]
- - @L["Plan_Starter_Feature2"]
- - @L["Plan_Starter_Feature3"]
-
-
@L["Plan_Starter_CTA"]
-
-
-
-
-
@L["Plan_Pro_Badge"]
-
@L["Plan_Pro_Name"]
-
- @L["Plan_Pro_Price"]
- @L["Plan_Pro_Period"]
-
-
@L["Plan_Pro_Desc"]
-
-
- - @L["Plan_Pro_Feature1"]
- - @L["Plan_Pro_Feature2"]
- - @L["Plan_Pro_Feature3"]
-
-
@L["Plan_Pro_CTA"]
-
-
-
-
-
@L["Plan_Enterprise_Name"]
-
- @L["Plan_Enterprise_Price"]
- @L["Plan_Enterprise_Period"]
-
-
@L["Plan_Enterprise_Desc"]
-
-
- - @L["Plan_Enterprise_Feature1"]
- - @L["Plan_Enterprise_Feature2"]
- - @L["Plan_Enterprise_Feature3"]
-
-
@L["Plan_Enterprise_CTA"]
-
-
-
-
-
-
@L["Addons_Title"]
-
- @foreach (var addon in _addons)
- {
-
-
-
- @L[addon.Name]
-
-
@L[addon.Price]
-
- }
-
-
-
-
-
-
-
- @((MarkupString)L["CTA_Title"].Value)
- @L["CTA_Subtitle"]
-
- @L["CTA_Trust"]
-
-
-
-