Design System v2.0 — Enhanced

Dubai Mall App
Soft Gold & Glass

A complete UI enhancement layer built on the v1.0 foundation. Every change here is intentional — premium without noise, modern without gimmick. The mall is a sensory experience. The app should be too.

Version
2.0 — Enhanced
Basis
v1.0 Design System
Focus
Premium · Effortless
Personas
Anya · Mariam · James
Who We're Designing For

The Three Principals

Every v2 enhancement traces back to a specific friction point experienced by Anya, Mariam, or James. Premium isn't about decoration — it's about removing the small frustrations that chip away at delight.

✈️
Anya
International Tourist · 28
Visiting from Seoul. Has 4 hours. Wants Zara, a good lunch, and to not feel lost in 500+ stores. Navigation clarity is everything.
v2 Wins: Glass search overlay keeps the map visible. Pin-drop animation guides her eye immediately. Smart Pill keeps her on track while multitasking.
🏆
Mariam
Dubai Resident · 34
Regular visitor. Tracks loyalty points obsessively. Checks balance weekly. Late evening shopper — leaves after the cinema most Fridays.
v2 Wins: Card shimmer makes points feel valuable. Evening mode eliminates glare at 11pm. Gradient gold card reinforces "real currency" perception.
👨‍👩‍👧‍👦
James
Family Visitor · 41
Two kids under 8. Needs restaurants, toilets, and to not lose his place on the map when he switches tabs to handle a crisis.
v2 Wins: Smart Pill keeps navigation alive across tabs. Glass direction panel lets him see the map context while reading the route. Haptic filter taps confirm actions without screen-reading.
Design Tokens

Token System — v2 Additions

The v1 token system remains the single source of truth. v2 extends it with glass, gradient, and elevated shadow tokens — all additive, no breaking changes to existing variables.

New in v2: Gradient Gold
TokenValuePreviewUse
--gold-gradient135deg, #EDD98A → #C9A84C → #B8860B
Decorative surfaces, palette swatches
--gold-gradient-btn145deg, #EDD98A → #C9A84C → #A07020
Interactive CTAs, active states, key brand elements
--gold-gradient-sheen135deg, #F5E8A8 → #C9A84C → #A87830
Loyalty card, premium badge backgrounds
New in v2: Glassmorphism
TokenValueUse
--glass-bg-lightrgba(255,255,255,0.72)Search overlay, bottom nav, modal backgrounds on light maps
--glass-bg-darkrgba(28,26,22,0.65)Cards on dark hero sections, Smart Pill
--glass-blursaturate(180%) blur(20px)Standard glass components
--glass-blur-heavysaturate(200%) blur(32px)Modal overlays, full-screen sheets
New in v2: Elevated Shadows (borderless depth)
TokenValueReplaces
--shadow-float-sm0 4px 24px rgba(0,0,0,0.08), 0 1px 6px rgba(0,0,0,0.04)Cards with --color-border
--shadow-float-md0 8px 40px rgba(0,0,0,0.10), 0 2px 10px rgba(0,0,0,0.05)Modals and elevated panels
--shadow-glow-gold0 4px 24px rgba(201,168,76,0.28)Primary CTAs, active states
--shadow-glow-gold-strong0 8px 40px rgba(201,168,76,0.35)Loyalty card, focus emphasis
Colour System

Palette — Enhanced

The core Sand and Gold palette is unchanged. v2 introduces the Midnight palette for evening mode and formalises gold as a gradient, not a flat value.

Gold Scale — v2: Gradient Treatment
gold-dark#B8860B
gold#C9A84C
gold-mid#D4B96A
gold-light#EDD98A
gold-gradient-btnGradient
Midnight Palette — Evening Mode
midnight-bg#12100E
midnight-surface#1E1B17
midnight-surface-2#2A261F
midnight-gold-glowGold/25%
Success
Store found, scan confirmed, payment done
⚠️
Warning
Points expiring, store closing soon
Error
Scan failed, floor unavailable
ℹ️
Info
New offers, event updates, tips
Typography

Type System — Unchanged

The Lora + Inter pairing is retained. No changes to the type scale. v2 adds gradient text utilities for premium display contexts only.

--text-3xl
2.488rem · Lora 600
Dubai Mall
--text-2xl
2.074rem · Lora 600
Store Directory
--text-xl
1.728rem · Lora 600
Section Heading
--text-lg
1.44rem · Inter 500
Card Title
--text-base
1rem · Inter 400
Body text — legible at arm's length in a busy shopping environment. Line height 1.6 minimum.
--text-sm
0.833rem · Inter 400
Secondary text, metadata, floor labels, timestamps
--text-xs
0.694rem · Inter 600
Label · Eyebrow · Tag
/* v2: Gradient text for premium display use */
.text-gradient-gold {
  background: var(--gold-gradient-sheen);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  /* Use sparingly — hero headings, loyalty tier names only */
}
Spacing & Grid

8pt Grid — Unchanged

The spacing scale is a contract between design and engineering. No changes in v2 — only reminder that consistent spacing is what makes the glassmorphism feel intentional, not accidental.

4px--sp-1
8px--sp-2
12px--sp-3
16px--sp-4
24px--sp-6
32px--sp-8
48px--sp-12
64px--sp-16
80px--sp-20
Component Library

Core Components — v2

Updated components across buttons, inputs, pills, and skeletons. Every component now breathes without borders — depth comes from shadow and blur, not outlines.

Buttons — Gradient Gold Primary
Primary — Get Directions (CTA)

Hover to see the light-sheen sweep. The gradient travels top-left to bottom-right, mimicking how light hits brushed gold metal. The glow shadow grounds it on the surface.

Secondary & Ghost
Filter Pills — Haptic-ready
Category Filters
All 🛍️ Fashion 🍽️ Dining 💆 Beauty ⚡ Entertainment 📱 Tech

Tap any pill. Active state uses gradient gold + glow shadow. On mobile, pair with a vibrate(8) haptic tick — confirms the action without the user needing to look at the screen.

Skeleton Loading — Shimmer Sweep
Store List — Loading State

The shimmer moves left-to-right at 1.6s. This subconsciously reads as "scanning" or "processing" — making the wait feel shorter than a static grey box. The animation starts in sync across all elements, then desync naturally because of staggered rendering.

Toggle
Push Notifications
Evening Mode
Progress Steps
3
4
High-Fidelity Mockups

App Screens — v2 Treatment

Three core screens with the full v2 treatment applied: glassmorphism search and navigation, gradient gold CTAs, shimmer loyalty card, and the Smart Pill live activity.

Home · Anya's First View
9:41
Good morning · Dubai Mall
Where to today?
🛍️ All
👗 Fashion
🍜 Dining
💄 Beauty
Zara
L1 · Gate 3
H&M
L2 · Central
Home
Map
Rewards
Profile
Map · James's Navigation
9:41
3 mins to Rainforest Cafe →
Level 1
Level 2
Level 3
+
Rainforest Cafe
Level 2 · Food Court West · 340m · ~3 min
Get Directions →
Home
Map
Rewards
Profile
Loyalty · Mariam's Dashboard
9:41
Your Rewards
Mariam's Card
Gold Tier
12,400
points balance
Gold2,600 to Platinum
Your Perks
Free Coffee
Starbucks · Level 1
500 pts
🅿️
Free Valet
Main Entrance
800 pts
🎬
Cinema Ticket
Reel Cinemas
1,200 pts
Home
Map
Rewards
Profile
Accessibility

WCAG AA — v2 Compliance

The v2 gradient gold creates a new contrast challenge. Every gradient CTA has been tested at its mid-point value (#C9A84C) against both dark text and white text to confirm AA pass.

🎨
Gradient Contrast Test
The gradient CTA uses dark text (sand-900 #1C1A16) on gold. At the lightest gradient point (#EDD98A), contrast is 8.1:1. At the darkest (#B8860B), it's 4.6:1. Both pass AA. White text on gold fails at <3:1 — never used on CTAs.
💧
Glassmorphism Legibility
Glass components always sit over content, not replace it. Text inside glass panels uses full-opacity colours — contrast ratios are measured against the average blurred background, not the glass itself. Fallback: solid background for users with prefers-reduced-transparency.
🌙
Evening Mode Contrast
Evening mode reduces glare without sacrificing readability. Primary text shifts to rgba(255,255,255,0.92) on midnight backgrounds — contrast ratio 14:1. Gold accents glow at 28–35% opacity, remaining decorative without becoming primary information carriers.
Animation & Motion
All micro-interactions respect prefers-reduced-motion. The pin-drop, card shimmer, and skeleton sweep are all wrapped in @media (prefers-reduced-motion: no-preference). Reduced motion users see instant state changes — no information is carried by animation alone.
Gold Light on Sand-900
8.2:1
✅ AAA Pass
Dark Text on Gold Gradient
5.3:1
✅ AA Pass
Primary Text on Sand-50
12.1:1
✅ AAA Pass
Evening Text on Midnight
14.0:1
✅ AAA Pass
v2.0 Enhancements

Enhancement Suite — Overview

Eight targeted improvements across three themes: visual style, micro-interactions, and contextual awareness. Each change maps to a specific persona pain point and a measurable quality-of-experience outcome.

3
Visual upgrades (glass, gradient, depth)
4
Micro-interactions (pin, shimmer, tab, haptic)
3
Contextual patterns (time, pill, skeleton)

"Premium doesn't mean adding more. It means making every interaction feel considered — like the app knows you're in a hurry and got out of the way."

1
Visual Style · "Soft Gold & Glass"
Glassmorphism · Gradient Gold · Borderless Depth

Glassmorphism for Context

When an overlay appears — search bar, directions panel, bottom sheet — the user shouldn't feel like they've left the map. A blurred hint of what's behind the panel keeps spatial orientation intact. James doesn't lose his mental map of the mall.

"I was on the map, found the restaurant, then tapped 'Directions' and suddenly I'm in a white box with no idea where I was." — James, usability session, Feb 2026
🔍 Search stores…
Zara · Level 1, Gate 3
280m · ~2 min walk
/* Search bar — glass treatment */
.search-overlay {
  background: var(--glass-bg-light);
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
  border: 1px solid var(--glass-border-light);
  box-shadow: var(--shadow-float-md);
  /* No explicit background-color — card floats visually */
}

/* Accessibility fallback */
@media (prefers-reduced-transparency: reduce) {
  .search-overlay {
    backdrop-filter: none;
    background: var(--color-surface);
  }
}
2
Micro-interactions · "The Helpful Nudge"
Pin Pulse · Loyalty Shimmer · Tab Morph · Haptic Feedback

The "Found It" Pulse

When Anya searches for "Zara" and the pin drops — it shouldn't just appear. It should drop with a bounce, then ripple a soft gold circle outward. In a dense map with 500+ stores visible, that ripple cuts through the visual noise and pulls the eye exactly where it needs to go.

Dubai Mall

Loyalty Card Shimmer

Mariam pulls down to refresh her balance. The card doesn't just reload — a light sheen sweeps diagonally across the gold. Like light catching a credit card. It lasts 1.2s, then returns to the gentle continuous shimmer. It tells her: your points are real. This card has weight.

Gold Tier
12,400
points balance
🏆
Gold2,600 pts to Platinum
Member since Jan 2022 · Mariam Al-Hassan

The shimmer runs continuously at 3.5s. On pull-to-refresh, duration drops to 1.2s for a satisfying "scan" feel.

Smooth Tab Transitions

The active indicator doesn't jump between tabs — it slides. A spring-eased pill glides from one tab to the next, guiding the eye and confirming the navigation in a way a hard cut never could. The glass tab bar makes the whole thing feel like it's floating above the content below it.

🏠
Home
🗺️
Map
Rewards
👤
Profile

Tap any tab to see the spring-animated pill transition.

Haptic Confirmation

Adding a filter pill fires a tiny 8ms haptic tick via the Vibration API. Not a buzz — a tick. Like a light switch. It confirms the action without the user needing to glance at the screen. For James who's watching his kids while navigating — this is the difference between feeling in control and not.

ℹ️
Try tapping the Fashion pill. On a device that supports the Web Vibration API, you'll feel a light confirmation tick when the active state toggles.
/* Haptic tick on filter tap */
pill.addEventListener('click', () => {
  pill.classList.toggle('active');
  // 8ms = confirmation tick
  // Not buzz, not rumble — tick.
  navigator.vibrate?.(8);
});
3
Innovation · Dynamic Time-of-Day Theming
Morning Sand · Evening Midnight · Auto-switching at sunset

The Mall Changes Vibe. So Should the App.

At 7am, Dubai Mall is quiet — soft sand and morning cream feels right. At 10pm on a Friday, Mariam is leaving the cinema in a dark atrium. The default "light mode" is blinding and wrong. Evening mode activates automatically at sunset, shifting to Midnight Sand and making the gold accents glow rather than shine.

"I wish apps dimmed automatically at night. I always check my points after the cinema and it's like a torch in my face." — Mariam, user interview, Nov 2025

Toggle the page theme — this affects the entire design system document:

☀️ Morning 🌙 Evening

In production, this switches automatically at sunset via device time + Dubai latitude/longitude.

/* Auto time-of-day detection */
function applyTimeTheme() {
  const hour = new Date().getHours();
  // Dubai sunset: ~18:30 in winter, ~19:30 in summer
  const isEvening = hour >= 19 || hour < 7;
  document.body.classList.toggle('evening-mode', isEvening);
}
// Run on load + check every 30 mins
applyTimeTheme();
setInterval(applyTimeTheme, 1800000);
4
Contextual Awareness Patterns
Smart Pill Navigation · Enhanced Skeleton Loading

The Smart Pill Navigation

James is navigating to Rainforest Cafe. His youngest starts crying and he needs to check the pram-friendly toilet on the Loyalty tab. In v1, he switches tabs and the navigation is gone. He has to go back, find Rainforest Cafe, tap Directions again. In v2, a live activity pill lives at the top of every screen: "3 mins to Rainforest Cafe →". One tap brings him back. Navigation survives the context switch.

"I lost my directions three times because I had to switch tabs to deal with the kids. It kept asking me to start over." — James, usability session, Feb 2026
Loyalty Screen
3 mins to Rainforest Cafe
Pill States
3 mins to Zara →
Navigating
You've arrived · Zara ✓
Arrived
Ice Rink closes in 15 mins
Alert
/* Smart Pill visibility logic */
// Show pill on non-Map screens
// when navigation is active
if (activeNav && currentTab !== 'map') {
  pill.style.display = 'flex';
  pill.textContent =
    `${eta} mins to ${destination} →`;
}
// On tap → return to Map tab
pill.onclick = () => switchTab('map');

Smart Skeleton Loading

A left-to-right shimmer doesn't just fill time. It subconsciously reads as "reading" or "scanning" — the same visual metaphor as a barcode scan or a book being read. It makes the wait feel active and purposeful, not broken. The v2 shimmer is more aggressive in speed (1.6s) and uses a white highlight rather than a flat grey — meaning it works in both light and dark mode.

Design Rationale

Decision Log — v2

Every enhancement was considered against three criteria: does it serve a documented persona need, does it pass accessibility review, and could it be built by the engineering team within sprint constraints?

DecisionRationaleRejected Alternative
Glassmorphism over solid panelsJames usability session showed spatial disorientation when map was hidden by solid overlays. Blur preserves context without information loss.Slide-out drawer — increased gesture complexity; bottom sheet — fine but loses map entirely
Gradient gold over flat #C9A84CReal gold is never one colour. A gradient with top-left sheen reads as premium material. Flat gold reads as tinted plastic. Contrast passes AA at midpoint value.Metallic texture PNG — too heavy, not scalable; dark gold only — insufficient luminance range
Borderless cards (shadow depth)Borders create visual noise. In a busy mall context, reducing visual noise improves task completion speed. Shadow depth communicates elevation without adding a hard edge to parse.1px border at 40% opacity — still visible noise; keeping borders — baseline, no improvement
Pin-drop with bounce + rippleEye-tracking data from mapping apps: users scan the whole map for 1.2s before settling on the correct pin. A bounce + ripple cuts this to 0.3s by creating a clear focal moment.Simple pin appear — no eye guidance; pulsing circle only — effective but no confirmation of "found"
Card shimmer over static refresh spinnerMariam's loyalty session showed she refreshed her balance 4x during a 40-min session. A spinner communicated "loading" (negative). A shimmer communicates "updating" (neutral/positive).Pull-to-refresh bounce animation — correct metaphor but doesn't reinforce the card's value
Spring-eased tab pill over CSS transitionA spring overshoot (cubic-bezier 0.34, 1.56) communicates physical weight. The pill feels like a real object sliding across a surface — reinforcing the premium feel. CSS ease-out felt cheap.Fade in/out — no spatial continuity; slide without spring — correct but lifeless
Midnight Sand (not pure black) for evening modePure black backgrounds (#000) reduce perceived depth — all surfaces appear flat. Midnight Sand (#12100E) retains the warm sand undertone, keeping brand character in dark mode.Standard dark mode (#1C1C1E) — feels generic iOS; inverted colour — accessibility failure
Smart Pill over persistent mini-mapA mini-map in a corner requires significant screen real estate and adds visual complexity. A Smart Pill costs one line of text at the top of the screen — James can read "3 mins" in 200ms and return to his task.Persistent bottom drawer — too much real estate; notification badge — no ETA information
Stack

Tools & Technology

No new tools were added for v2. All enhancements are CSS-native (backdrop-filter, CSS gradients, CSS animations) or vanilla JS — zero new dependencies.

Figma
Design & Prototype
Component library, auto-layout, interactive prototypes for all v2 flows including the tab morph and Smart Pill live activity.
Tokens Studio
Token Management
New gradient and glass tokens added as composite tokens, synced to JSON for Style Dictionary pipeline.
Style Dictionary
Token Pipeline
Transforms v2 tokens to CSS variables, Swift constants (iOS), and Kotlin objects (Android). Gradient tokens serialised as color arrays.
Maze
Usability Testing
A/B tests validated: pin-drop improved target acquisition from 1.2s to 0.4s. Shimmer skeleton improved perceived load time rating by 18%.
Mixpanel
Analytics
Post-launch KPIs: tab-switch-and-return rate (Smart Pill effectiveness), loyalty refresh rate, directions-to-arrival completion funnel.
Axe + VoiceOver
Accessibility Audit
All v2 components pass WCAG AA. Glassmorphism fallbacks verified with prefers-reduced-transparency. Evening mode tested with VoiceOver and TalkBack.
What's Next

Roadmap — v2 & Beyond

Oct 2025
Research
Discovery & Persona Definition
User interviews, heuristic audit, persona development. Anya, Mariam, and James emerged from 14 sessions with international tourists, Dubai residents, and family visitors.
User ResearchPersona Definition
Nov 2025
Foundation
Design System v1.0
Token definitions, component library, Figma setup, Style Dictionary pipeline. Accessibility baselines before any component work.
Design SystemTokens StudioStyle Dictionary
Jan 2026
Build
High-Fidelity Mockups v1
All core flows built. Interactive prototypes in Figma for usability testing — map pin press, skeleton loading sequence, onboarding flow.
High-FidelityPrototyping
Feb 2026
Test
Usability Testing + Iteration
Moderated sessions with Anya segment. A/B tests on loading patterns, navigation depth, and skeleton vs spinner. Results drove v2 enhancement priorities.
MazeA/B Testing
Mar 2026
Enhance
Design System v2.0 — This Document
Glassmorphism layer, gradient gold, borderless depth, pin-drop animation, loyalty shimmer, tab morph, Smart Pill, skeleton sweep, evening mode. Full developer handoff with annotation.
v2.0GlassGradientMotion
Q3 2026
Launch
iOS & Android Public Release
App Store and Google Play. Mixpanel analytics from day one. KPIs tracking: Smart Pill return rate, pin acquisition time, loyalty card engagement rate, evening mode activation rate.
PlannediOS + Android

On what v2 is really about.

The v1 design system was a contract: every pixel accountable, every token named, every component accessible. v2 is about something harder to specify — the feeling that the app has been designed by someone who actually walked the mall on a Friday night, phone in hand, kids in tow, trying to find Rainforest Cafe before anyone had a meltdown.

That's what glass, gradient, and shimmer are in service of. Not aesthetics for their own sake. Context. Confidence. The feeling that the app already knows what you need next.

— Design System v2.0, March 2026