## MODIFIED Requirements ### Requirement: B2B2C mall-style PC storefront shell The mall SHALL render a buyer-facing desktop shell modeled on a classic B2B2C PC mall: a 30px utility bar, logo/search/cart header, dark primary navigation with a hover category mega-menu, a 1200px content grid, and a value-proposition footer. The header SHALL remain fully visible while scrolling; no part of the shell SHALL auto-hide based on scroll position. The category mega-menu SHALL appear as a hover dropdown under the navigation "All Categories" entry on every page except the home page, where it is instead pinned in the hero row. The visual language SHALL use `#ca151e` for brand/price/active states, `#f5f5f5` section backgrounds, gray hairline borders, compact controls, and product-card hover lift/shadow. The implementation SHALL use the shared Tailwind theme and `@vmall/ui` primitives plus Nuxt-native semantic components, SHALL NOT depend on Element Plus, and SHALL NOT expose a theme-accent switcher. #### Scenario: shopper opens any mall page - **WHEN** a shopper navigates to a buyer-facing route - **THEN** the shared desktop shell wraps the route content and its nav/search/cart controls are usable #### Scenario: header persists while scrolling - **WHEN** a shopper scrolls any mall page - **THEN** the logo/search/cart header bar remains visible and is never collapsed or hidden by scroll position #### Scenario: hover categories on a non-home page - **WHEN** a shopper hovers "All Categories" in the navigation on a page other than `/` - **THEN** the category mega-menu dropdown appears below the navigation and hides again on mouse leave #### Scenario: mall has no accent switcher - **WHEN** a shopper inspects the mall shell - **THEN** there is no control to change brand accent and prices/active states remain `#ca151e` ## ADDED Requirements ### Requirement: Shared design system on the storefront Mall pages SHALL style layout with Tailwind utilities and shared primitives. Mall-only chrome (mega-menu, carousel crop, 1200px shell, product-card hover lift) MAY live in `apps/mall` components but MUST consume shared tokens, not a private global stylesheet. #### Scenario: storefront uses shared tokens - **WHEN** a shopper views the home page - **THEN** brand red, the 1200px grid, and the 450px hero height come from the shared theme keys rather than `mall.css`