ProjectGenesis commited on
Commit
191d5ff
·
verified ·
1 Parent(s): b2c5f1e

Design a production-ready Wallet Page for a neon-casino theme. Use Nioplay’s established system:

Browse files

- Background: radial gradient (black → warm dark orange/brown).
- Glassmorphism cards (transparent, frosted, subtle noise), limited so layout breathes.
- Neon accents: orange #FF6A00, blue #00E4FF. Fonts: Orbitron (headings), Poppins (body).
- Modern pill buttons with seamless border-trail animation (continuous loop, no visible reset).
- Clean grid, large readable numbers, dense tooltips.

DO NOT implement any wallet math or API logic. Values are placeholders. Focus on layout, states, and components.

GLOBAL STYLE TOKENS:
- Background: radial-gradient(circle at center, #0a0a0a 0%, #1a0d00 40%, #2e1300 70%, #000000 100%)
- Text: #F5F5F5 primary, #B8B8B8 secondary
- Accent: Neon Orange #FF6A00, Neon Blue #00E4FF, Success #3CE27A, Warning #FEC84B, Danger #FF4D4D
- Glass card: rgba(255,255,255,0.05) bg, 1px border rgba(255,255,255,0.12), backdrop-blur(10–14px), rounded-2xl, shadow-xl
- Icon style: thin line + soft glow
- Progress bar: inner glow, smooth 0.6s ease, rounded-full

LAYOUT HIERARCHY:

(1) PAGE HEADER (full-width, glass card)
- Title: “Wallet”
- Sub: “Track balances, playthrough progress, and redeemables.”
- Right side: 2 CTA pills:
- [Deposit SC] (primary, neon orange, border-trail)
- [Withdraw] (secondary, neon blue, border-trail)
- Small links under CTAs: “Payment Methods”, “Withdrawal Policy”, “KYC Status”

(2) BALANCE OVERVIEW (4-card grid, responsive 1×4 → 2×2 on tablet → 1×4 scroll on mobile)
Card A — Purchase SC (1×)
- Label chip: “1× Playthrough”
- Big number: {{purchase_sc}}
- Mini stat: “Required: {{purchase_required}} | Progress: {{purchase_progress_pct}}%”
- Tiny info icon (hover): “Purchase SC requires 1× wagering before withdrawal.”

Card B — Bonus SC (5×)
- Label chip: “5× Playthrough”
- Big number: {{bonus_sc}}
- Mini stat: “Required: {{bonus_required}} | Progress: {{bonus_progress_pct}}%”
- Info hover: “Bonus SC requires 5× wagering. Table & live games may count less.”

Card C — Withdrawable SC (WSC)
- Label chip: “Redeemable Now”
- Big number: {{wsc}}
- Subtext: “Ready to withdraw.”

Card D — Gold Coins (GC)
- Label chip: “Gold Coins”
- Big number: {{gc}}
- Subtext: “For fun play.”

(3) PLAYTHROUGH PROGRESS (two half-width glass cards side-by-side; stack on mobile)

Left Card — Playthrough Bars
Section title: “Playthrough Progress”
- Row 1: Purchase SC (1×)
• Bar with endpoints: 0 → {{purchase_required}}
• Inline numbers: “{{purchase_wagered}} / {{purchase_required}}” and “{{purchase_progress_pct}}%”
• Color: gradient from #FF6A00 → #3CE27A near completion
- Divider
- Row 2: Bonus SC (5×)
• Bar with endpoints: 0 → {{bonus_required}}
• Inline: “{{bonus_wagered}} / {{bonus_required}}” and “{{bonus_progress_pct}}%”
• Color: gradient #00E4FF → #FF6A00

Right Card — Game Contribution Weights (collapsible)
Title row: “How your wagers count”
List with icons + weights:
• Slots — 100%
• Instant Win — 75%
• RNG Table — 25%
• Live Casino — 10%
Footnote text: “Weights affect progress only, not redemption math.”
(Add “ⓘ” tooltips explaining examples: “$100 on Live Casino → $10 progress.”)

(4) REDEEMABLES & ACTIONS (full-width glass card)
- Title: “Redeemable Amounts”
- Two numeric tiles:
• Redeemable Purchase SC (WSC): {{redeemable_wsc}}
• Redeemable Bonus SC: {{redeemable_bonus_sc}}
- Helper text: “Bonus SC becomes redeemable as you clear its playthrough.”
- Action buttons:
[Withdraw to Wallet] [Convert to WSC] [View Withdrawal History]
- Small alert banners (optional states):
• Warning if KYC incomplete.
• Info if withdrawal limit per day reached.
- Microcopy under buttons: “Processing time: 24–48h after KYC.”

(5) TRANSACTION HISTORY (glass card, full width)
- Tabs: All | Deposits | Withdrawals | Bonuses | Wagers | Adjustments
- Filters: Date range picker; Amount min/max; Status
- Table columns:
Date/Time | Type | Description | Amount | Balance Type (SC/GC/BSC/WSC) | Status | Ref ID
- Empty state with illustration + “No transactions yet. Top up your wallet to get started.”
- Button: [Export CSV] (ghost)

(6) STORE & PROMOS STRIP (two cards)
Left: “Buy Packages”
- Featured package tiles with price, bonus badge, “Best Value” tag.
- CTA: [Go to Store]

Right: “Active Bonuses & Codes”
- List of active promo balances with expiry timers and progress bars.
- Input: “Have a code?” [Apply]

(7) VIP & JACKPOT TIE-INS (two mini cards)
- VIP Snapshot: “This month wagered: {{monthly_wagered}} → VIP +{{vip_progress_pct}}%”
- Jackpot Contribution: “You’ve contributed {{jackpot_contrib}} to the pool.” Link: [View Jackpots]

(8) SECURITY & SETTINGS (accordion list)
- Payment Methods (cards on file)
- Set Withdrawal PIN
- KYC / Verification status + steps
- Notification preferences (wallet alerts)
- Responsible play links

(9) CONTEXTUAL TOOLTIP COPY (use exactly as hover content)
- “Playthrough Requirement”: “The total amount you must wager before funds are withdrawable.”
- “Contribution Weights”: “Different games count differently toward playthrough.”
- “WSC”: “Withdrawable Sweepstakes Coins you can cash out.”
- “Bonus SC”: “Promotional coins with 5× playthrough.”
- “Purchase SC”: “Coins bought by you; 1× playthrough.”

COMPONENT/ID MAP (for dev handoff & future binding)
- #btn-deposit, #btn-withdraw, #btn-convert
- #card-purchase-sc, #card-bonus-sc, #card-wsc, #card-gc
- #bar-purchase, #bar-bonus
- #redeemable-wsc, #redeemable-bonus
- #tx-table, #tx-filter, #tx-export
- #store-card, #promos-card
- #vip-card, #jackpot-card
- #security-accordion

ANIMATIONS (exact instructions)
- Button border-trail (continuous, no pause):
• Create an absolutely positioned gradient border layer that animates background-position from 0%→100% with linear infinite 2.5s.
• Use mask-composite to reveal only the 2px border.
• Ensure animation loops seamlessly by using a repeating conic or linear-gradient with matching start/end colors (avoid hard stops).
- Progress bars:
• Animate width from previous value to new value with 600ms ease; add subtle outer glow.
- Hover:
• Cards lift 4px, border alpha +0.08, glow of accent color.

RESPONSIVE RULES
- ≥1280px: 12-col grid; Overview (4 cols each), Progress (6/6), History full-width.
- 1024–1279: 12-col; Overview 6/6; Progress stack.
- <1024: Stack everything; sticky subheader with [Deposit], [Withdraw].

ACCESSIBILITY
- Min text 14px body, 18–22px numbers; 28–36px for big balances.
- Focus rings visible (accent blue).
- Tooltips accessible on keyboard (aria-describedby).
- Color contrast ≥ 4.5:1 for body.

PLACEHOLDER DATA (bind these to numbers for mock):
{
"purchase_sc": "18.74",
"purchase_required": "18.74",
"purchase_wagered": "12.10",
"purchase_progress_pct": "64.5",
"bonus_sc": "0.30",
"bonus_required": "1.50",
"bonus_wagered": "0.00",
"bonus_progress_pct": "0.0",
"wsc": "6.64",
"gc": "3,500",
"redeemable_wsc": "6.64",
"redeemable_bonus_sc": "0.00",
"monthly_wagered": "420.00",
"vip_progress_pct": "12",
"jackpot_contrib": "8.40"
}

VISUAL NOTES
- Purchase SC chip is orange outline with “1×”.
- Bonus SC chip is blue outline with “5×”.
- “Total Redeemable Now” should be visually emphasized near the top (mirrors WSC).
- Keep white space; limit glass cards to these sections to avoid clutter.

DELIVERABLES
- One responsive page with all sections above.
- Include a style block (or component CSS) for the seamless border-trail button and progress bars.
- Provide semantic HTML structure ready for data-binding.
- No external logic; values populated from placeholders. - Initial Deployment

Files changed (2) hide show
  1. README.md +7 -5
  2. index.html +768 -18
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Ui 2
3
- emoji: 📈
4
- colorFrom: gray
5
- colorTo: green
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: ui-2
3
+ emoji: 🐳
4
+ colorFrom: green
5
+ colorTo: red
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite
10
  ---
11
 
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
index.html CHANGED
@@ -1,19 +1,769 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  </html>
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Neon Wallet - Nioplay</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <link href="https://fonts.googleapis.com/css2?family=Orbitron:wght@400;500;600;700&family=Poppins:wght@300;400;500;600;700&display=swap" rel="stylesheet">
9
+ <link href="https://unpkg.com/aos@2.3.1/dist/aos.css" rel="stylesheet">
10
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
11
+ <script src="https://cdn.jsdelivr.net/npm/animejs/lib/anime.iife.min.js"></script>
12
+ <script src="https://unpkg.com/feather-icons"></script>
13
+ <script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
14
+
15
+ <script>
16
+ tailwind.config = {
17
+ theme: {
18
+ extend: {
19
+ colors: {
20
+ 'neon-orange': '#FF6A00',
21
+ 'neon-blue': '#00E4FF',
22
+ 'neon-success': '#3CE27A',
23
+ 'neon-warning': '#FEC84B',
24
+ 'neon-danger': '#FF4D4D',
25
+ 'glass-bg': 'rgba(255,255,255,0.05)',
26
+ 'glass-border': 'rgba(255,255,255,0.12)',
27
+ 'secondary-text': '#B8B8B8'
28
+ },
29
+ backgroundImage: {
30
+ 'global': 'radial-gradient(circle at center, #0a0a0a 0%, #1a0d00 40%, #2e1300 70%, #000000 100%)'
31
+ },
32
+ fontFamily: {
33
+ 'orbitron': ['Orbitron', 'sans-serif'],
34
+ 'poppins': ['Poppins', 'sans-serif']
35
+ },
36
+ backdropBlur: {
37
+ 'sm': '10px',
38
+ 'md': '14px'
39
+ },
40
+ boxShadow: {
41
+ 'glass': '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',
42
+ 'glow-orange': '0 0 10px rgba(255, 106, 0, 0.5)',
43
+ 'glow-blue': '0 0 10px rgba(0, 228, 255, 0.5)'
44
+ }
45
+ }
46
+ }
47
+ }
48
+ </script>
49
+ <style type="text/css">
50
+ body {
51
+ background-image: radial-gradient(circle at center, #0a0a0a 0%, #1a0d00 40%, #2e1300 70%, #000000 100%);
52
+ color: #F5F5F5;
53
+ font-family: 'Poppins', sans-serif;
54
+ min-height: 100vh;
55
+ }
56
+
57
+ h1, h2, h3, h4, h5 {
58
+ font-family: 'Orbitron', sans-serif;
59
+ letter-spacing: 0.025em;
60
+ }
61
+
62
+ .glass-card {
63
+ background: rgba(255,255,255,0.05);
64
+ border: 1px solid rgba(255,255,255,0.12);
65
+ backdrop-filter: blur(14px);
66
+ border-radius: 1rem;
67
+ box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -4px rgba(0,0,0,0.1);
68
+ overflow: hidden;
69
+ position: relative;
70
+ }
71
+
72
+ .glass-card::before {
73
+ content: "";
74
+ position: absolute;
75
+ top: 0;
76
+ left: 0;
77
+ right: 0;
78
+ bottom: 0;
79
+ background-image: url("data:image/svg+xml,%3Csvg width='100' height='100' viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 18c3.866 0 7-3.134 7-7s-3.134-7-7-7-7 3.134-7 7 3.134 7 7 7zm48 25c3.866 0 7-3.134 7-7s-3.134-7-7-7-7 3.134-7 7 3.134 7 7 7zm-43-7c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zm63 31c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zM34 90c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zm56-76c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zM12 86c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm28-65c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm23-11c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm-6 60c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm29 22c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zM32 63c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm57-13c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm-9-21c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM60 91c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM35 41c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM12 60c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2z' fill='%23ffffff' fill-opacity='0.05' fill-rule='evenodd'/%3E%3C/svg%3E");
80
+ z-index: -1;
81
+ opacity: 0.5;
82
+ }
83
+
84
+ .glass-card:hover {
85
+ border-color: rgba(255,255,255,0.2);
86
+ transform: translateY(-3px);
87
+ transition: all 0.2s ease-out;
88
+ }
89
+
90
+ .btn-trail {
91
+ position: relative;
92
+ display: inline-flex;
93
+ align-items: center;
94
+ justify-content: center;
95
+ padding: 0.75rem 1.5rem;
96
+ border-radius: 9999px;
97
+ font-weight: 600;
98
+ font-size: 0.9rem;
99
+ text-align: center;
100
+ overflow: hidden;
101
+ z-index: 1;
102
+ }
103
+
104
+ .btn-trail::before {
105
+ content: '';
106
+ position: absolute;
107
+ top: 0;
108
+ left: 0;
109
+ width: 200%;
110
+ height: 100%;
111
+ background: linear-gradient(
112
+ 115deg,
113
+ transparent,
114
+ rgba(255, 106, 0, 0.5),
115
+ #FF6A00,
116
+ rgba(255, 106, 0, 0.5),
117
+ transparent
118
+ );
119
+ background-size: 50% 100%;
120
+ animation: borderTrail 2.5s linear infinite;
121
+ z-index: -1;
122
+ }
123
+
124
+ .btn-orange-trail::before {
125
+ background: linear-gradient(
126
+ 115deg,
127
+ transparent,
128
+ rgba(255, 106, 0, 0.5),
129
+ #FF6A00,
130
+ rgba(255, 106, 0, 0.5),
131
+ transparent
132
+ );
133
+ }
134
+
135
+ .btn-blue-trail::before {
136
+ background: linear-gradient(
137
+ 115deg,
138
+ transparent,
139
+ rgba(0, 228, 255, 0.5),
140
+ #00E4FF,
141
+ rgba(0, 228, 255, 0.5),
142
+ transparent
143
+ );
144
+ }
145
+
146
+ .btn-trail span {
147
+ position: relative;
148
+ z-index: 2;
149
+ background: radial-gradient(circle at center, #0a0a0a 0%, #1a0d00 40%, #2e1300 70%, #000000 100%);
150
+ padding: 0.5rem 1.25rem;
151
+ border-radius: 9999px;
152
+ width: calc(100% - 4px);
153
+ height: calc(100% - 4px);
154
+ display: flex;
155
+ align-items: center;
156
+ justify-content: center;
157
+ }
158
+
159
+ @keyframes borderTrail {
160
+ 0% { transform: translateX(-100%); }
161
+ 100% { transform: translateX(100%); }
162
+ }
163
+
164
+ .big-number {
165
+ font-size: 2rem;
166
+ font-weight: 700;
167
+ font-family: 'Orbitron', sans-serif;
168
+ letter-spacing: 0.025em;
169
+ text-shadow: 0 0 8px rgba(255, 255, 255, 0.2);
170
+ }
171
+
172
+ .chip-label {
173
+ border-radius: 9999px;
174
+ border-width: 1px;
175
+ padding: 0.25rem 0.75rem;
176
+ font-size: 0.75rem;
177
+ font-weight: 500;
178
+ }
179
+
180
+ .progress-track {
181
+ height: 12px;
182
+ background: rgba(255,255,255,0.1);
183
+ border-radius: 9999px;
184
+ overflow: hidden;
185
+ }
186
+
187
+ .progress-bar {
188
+ height: 100%;
189
+ border-radius: 9999px;
190
+ transition: width 0.6s ease;
191
+ position: relative;
192
+ }
193
+
194
+ .progress-bar::after {
195
+ content: '';
196
+ position: absolute;
197
+ top: 0;
198
+ bottom: 0;
199
+ left: 0;
200
+ right: 0;
201
+ box-shadow: inset 0 0 8px rgba(255,255,255,0.5);
202
+ border-radius: 9999px;
203
+ }
204
+
205
+ .tooltip-container {
206
+ position: relative;
207
+ display: inline-flex;
208
+ margin-left: 0.25rem;
209
+ }
210
+
211
+ .tooltip {
212
+ visibility: hidden;
213
+ width: 200px;
214
+ background: rgba(10,10,10,0.95);
215
+ color: #F5F5F5;
216
+ border: 1px solid rgba(255,255,255,0.15);
217
+ padding: 12px;
218
+ border-radius: 8px;
219
+ position: absolute;
220
+ bottom: 125%;
221
+ left: 50%;
222
+ transform: translateX(-50%);
223
+ opacity: 0;
224
+ transition: opacity 0.3s;
225
+ font-size: 0.85rem;
226
+ font-weight: 400;
227
+ z-index: 10;
228
+ backdrop-filter: blur(4px);
229
+ }
230
+
231
+ .tooltip-container:hover .tooltip {
232
+ visibility: visible;
233
+ opacity: 1;
234
+ }
235
+
236
+ @media (min-width: 768px) {
237
+ .overview-grid {
238
+ grid-template-columns: repeat(2, minmax(0, 1fr));
239
+ }
240
+ }
241
+
242
+ @media (min-width: 1024px) {
243
+ .overview-grid {
244
+ grid-template-columns: repeat(4, minmax(0, 1fr));
245
+ }
246
+
247
+ .progress-grid {
248
+ grid-template-columns: repeat(2, minmax(0, 1fr));
249
+ }
250
+ }
251
+
252
+ @media (max-width: 640px) {
253
+ .overview-grid {
254
+ grid-template-columns: repeat(1, minmax(0, 1fr));
255
+ overflow-x: auto;
256
+ }
257
+
258
+ .big-number {
259
+ font-size: 1.75rem;
260
+ }
261
+ }
262
+
263
+ .accordion-content {
264
+ max-height: 0;
265
+ overflow: hidden;
266
+ transition: max-height 0.2s ease-out;
267
+ }
268
+
269
+ input:focus, button:focus {
270
+ outline: 2px solid #00E4FF;
271
+ outline-offset: 2px;
272
+ }
273
+ </style>
274
+ </head>
275
+ <body class="min-h-screen flex flex-col bg-cover">
276
+ <div class="container mx-auto px-4 py-8">
277
+ <!-- HEADER -->
278
+ <header class="glass-card mb-8 py-4 px-6" data-aos="fade-down">
279
+ <div class="flex flex-col md:flex-row md:items-center md:justify-between">
280
+ <div>
281
+ <h1 class="text-2xl md:text-3xl font-bold text-white">Wallet</h1>
282
+ <p class="text-sm text-secondary-text mt-1">Track balances, playthrough progress, and redeemables.</p>
283
+ </div>
284
+
285
+ <div class="mt-4 md:mt-0">
286
+ <div class="flex gap-3">
287
+ <button id="btn-deposit" class="btn-trail btn-orange-trail">
288
+ <span>Deposit SC</span>
289
+ </button>
290
+ <button id="btn-withdraw" class="btn-trail btn-blue-trail">
291
+ <span>Withdraw</span>
292
+ </button>
293
+ </div>
294
+ <div class="flex gap-3 mt-2 justify-center md:justify-end">
295
+ <a href="#" class="text-xs text-secondary-text hover:text-neon-blue">Payment Methods</a>
296
+ <a href="#" class="text-xs text-secondary-text hover:text-neon-blue">Withdrawal Policy</a>
297
+ <a href="#" class="text-xs text-secondary-text hover:text-neon-blue">KYC Status</a>
298
+ </div>
299
+ </div>
300
+ </div>
301
+ </header>
302
+
303
+ <!-- BALANCE OVERVIEW -->
304
+ <section class="mb-8">
305
+ <div class="overview-grid grid gap-4">
306
+ <!-- Purchase SC Card -->
307
+ <div id="card-purchase-sc" class="glass-card p-5" data-aos="fade-right">
308
+ <div class="flex justify-between">
309
+ <div class="flex items-center gap-1 mb-2">
310
+ <div class="chip-label border-neon-orange text-neon-orange">
311
+
312
+ </div>
313
+ <p class="text-sm font-semibold">Purchase SC</p>
314
+ </div>
315
+ <div class="tooltip-container">
316
+ <i data-feather="info" class="w-4 h-4 text-secondary-text"></i>
317
+ <div class="tooltip">Purchase SC requires 1× wagering before withdrawal.</div>
318
+ </div>
319
+ </div>
320
+ <p class="big-number text-white">18.74</p>
321
+ <p class="text-xs text-secondary-text mt-2">Required: 18.74 | Progress: 64.5%</p>
322
+ </div>
323
+
324
+ <!-- Bonus SC Card -->
325
+ <div id="card-bonus-sc" class="glass-card p-5" data-aos="fade-right" data-aos-delay="50">
326
+ <div class="flex justify-between">
327
+ <div class="flex items-center gap-1 mb-2">
328
+ <div class="chip-label border-neon-blue text-neon-blue">
329
+
330
+ </div>
331
+ <p class="text-sm font-semibold">Bonus SC</p>
332
+ </div>
333
+ <div class="tooltip-container">
334
+ <i data-feather="info" class="w-4 h-4 text-secondary-text"></i>
335
+ <div class="tooltip">Bonus SC requires 5× wagering. Table & live games may count less.</div>
336
+ </div>
337
+ </div>
338
+ <p class="big-number text-white">0.30</p>
339
+ <p class="text-xs text-secondary-text mt-2">Required: 1.50 | Progress: 0.0%</p>
340
+ </div>
341
+
342
+ <!-- WSC Card -->
343
+ <div id="card-wsc" class="glass-card p-5" data-aos="fade-right" data-aos-delay="100">
344
+ <div class="flex justify-between">
345
+ <div class="flex items-center gap-1 mb-2">
346
+ <div class="chip-label border-neon-success text-neon-success">
347
+ Redeemable Now
348
+ </div>
349
+ <p class="text-sm font-semibold">Withdrawable SC</p>
350
+ </div>
351
+ <div class="tooltip-container">
352
+ <i data-feather="info" class="w-4 h-4 text-secondary-text"></i>
353
+ <div class="tooltip">Withdrawable Sweepstakes Coins you can cash out.</div>
354
+ </div>
355
+ </div>
356
+ <p class="big-number text-white">6.64</p>
357
+ <p class="text-sm text-secondary-text mt-1">Ready to withdraw.</p>
358
+ </div>
359
+
360
+ <!-- GC Card -->
361
+ <div id="card-gc" class="glass-card p-5" data-aos="fade-right" data-aos-delay="150">
362
+ <div class="flex justify-between">
363
+ <div class="flex items-center gap-1 mb-2">
364
+ <div class="chip-label border-secondary-text text-secondary-text">
365
+ Gold Coins
366
+ </div>
367
+ <p class="text-sm font-semibold">Gold Coins</p>
368
+ </div>
369
+ <div class="tooltip-container">
370
+ <i data-feather="info" class="w-4 h-4 text-secondary-text"></i>
371
+ <div class="tooltip">For fun play only, no cash value.</div>
372
+ </div>
373
+ </div>
374
+ <p class="big-number text-white">3,500</p>
375
+ <p class="text-sm text-secondary-text mt-1">For fun play.</p>
376
+ </div>
377
+ </div>
378
+ </section>
379
+
380
+ <!-- PLAYTHROUGH PROGRESS -->
381
+ <section class="mb-8">
382
+ <div class="progress-grid grid gap-6">
383
+ <div id="bar-purchase" class="glass-card p-5" data-aos="fade-up">
384
+ <h3 class="text-lg font-semibold mb-4">Playthrough Progress</h3>
385
+
386
+ <div class="mb-5">
387
+ <div class="flex justify-between text-sm mb-2">
388
+ <div>
389
+ <span class="text-secondary-text">Purchase SC (1×)</span>
390
+ <span class="text-white ml-1">64.5%</span>
391
+ </div>
392
+ <div class="flex gap-1">
393
+ <span class="text-secondary-text">12.10 /</span>
394
+ <span>18.74</span>
395
+ </div>
396
+ </div>
397
+ <div class="progress-track">
398
+ <div class="progress-bar" style="width: 64.5%; background: linear-gradient(to right, #FF6A00, #3CE27A);"></div>
399
+ </div>
400
+ <div class="flex justify-between text-xs mt-1">
401
+ <span>0</span>
402
+ <span>Required: 18.74</span>
403
+ </div>
404
+ </div>
405
+
406
+ <div class="pt-2 border-t border-white/10"></div>
407
+
408
+ <div class="mt-5">
409
+ <div class="flex justify-between text-sm mb-2">
410
+ <div>
411
+ <span class="text-secondary-text">Bonus SC (5×)</span>
412
+ <span class="text-white ml-1">0.0%</span>
413
+ </div>
414
+ <div class="flex gap-1">
415
+ <span class="text-secondary-text">0.00 /</span>
416
+ <span>1.50</span>
417
+ </div>
418
+ </div>
419
+ <div class="progress-track">
420
+ <div class="progress-bar" style="width: 0%; background: linear-gradient(to right, #00E4FF, #FF6A00);"></div>
421
+ </div>
422
+ <div class="flex justify-between text-xs mt-1">
423
+ <span>0</span>
424
+ <span>Required: 1.50</span>
425
+ </div>
426
+ </div>
427
+ </div>
428
+
429
+ <div id="game-weights" class="glass-card p-5" data-aos="fade-up" data-aos-delay="50">
430
+ <div class="flex justify-between items-center mb-4">
431
+ <h3 class="text-lg font-semibold">How your wagers count</h3>
432
+ </div>
433
+
434
+ <div class="space-y-3">
435
+ <div class="flex justify-between items-center">
436
+ <div class="flex items-center gap-2">
437
+ <i data-feather="grid" class="w-4 h-4"></i>
438
+ <span>Slots</span>
439
+ </div>
440
+ <span>100%</span>
441
+ </div>
442
+
443
+ <div class="flex justify-between items-center">
444
+ <div class="flex items-center gap-2">
445
+ <i data-feather="target" class="w-4 h-4"></i>
446
+ <span>Instant Win</span>
447
+ </div>
448
+ <span>75%</span>
449
+ </div>
450
+
451
+ <div class="flex justify-between items-center">
452
+ <div class="flex items-center gap-2">
453
+ <i data-feather="sliders" class="w-4 h-4"></i>
454
+ <span>RNG Table</span>
455
+ </div>
456
+ <span>25%</span>
457
+ </div>
458
+
459
+ <div class="flex justify-between items-center">
460
+ <div class="flex items-center gap-2">
461
+ <i data-feather="users" class="w-4 h-4"></i>
462
+ <span>Live Casino</span>
463
+ <div class="tooltip-container ml-1">
464
+ <i data-feather="info" class="w-4 h-4 text-secondary-text"></i>
465
+ <div class="tooltip">$100 on Live Casino → $10 progress</div>
466
+ </div>
467
+ </div>
468
+ <span>10%</span>
469
+ </div>
470
+ </div>
471
+
472
+ <p class="text-xs text-secondary-text mt-4">
473
+ Weights affect progress only, not redemption math.
474
+ </p>
475
+ </div>
476
+ </div>
477
+ </section>
478
+
479
+ <!-- REDEEMABLES SECTION -->
480
+ <section class="mb-8">
481
+ <div class="glass-card p-5" data-aos="zoom-in">
482
+ <h3 class="text-lg font-semibold mb-4">Redeemable Amounts</h3>
483
+
484
+ <div class="flex flex-wrap gap-4 mb-4">
485
+ <div class="flex-1 min-w-[150px] glass-card p-4">
486
+ <p class="text-sm text-secondary-text mb-1">Redeemable WSC</p>
487
+ <p id="redeemable-wsc" class="text-xl font-semibold">6.64</p>
488
+ </div>
489
+
490
+ <div class="flex-1 min-w-[150px] glass-card p-4">
491
+ <p class="text-sm text-secondary-text mb-1">Redeemable Bonus SC</p>
492
+ <p id="redeemable-bonus" class="text-xl font-semibold">0.00</p>
493
+ </div>
494
+ </div>
495
+
496
+ <p class="text-xs text-secondary-text mb-3">Bonus SC becomes redeemable as you clear its playthrough.</p>
497
+
498
+ <div class="flex flex-wrap gap-2 mt-4">
499
+ <button id="btn-withdraw-action" class="px-4 py-2 rounded-lg bg-neon-orange font-medium">Withdraw to Wallet</button>
500
+ <button id="btn-convert" class="px-4 py-2 rounded-lg bg-glass-bg border border-glass-border font-medium">Convert to WSC</button>
501
+ <button class="px-4 py-2 rounded-lg bg-glass-bg border border-glass-border font-medium">View Withdrawal History</button>
502
+ </div>
503
+
504
+ <div class="mt-4">
505
+ <div class="px-4 py-2 rounded-lg bg-glass-bg border border-glass-border flex items-start">
506
+ <i data-feather="clock" class="w-4 h-4 mr-2 text-secondary-text flex-shrink-0 mt-0.5"></i>
507
+ <span class="text-sm">Processing time: 24–48h after KYC verification</span>
508
+ </div>
509
+ </div>
510
+ </div>
511
+ </section>
512
+
513
+ <!-- TRANSACTION HISTORY -->
514
+ <section class="mb-8" data-aos="fade-up">
515
+ <div class="glass-card p-5">
516
+ <div class="flex justify-between items-center mb-5 flex-wrap gap-3">
517
+ <h3 class="text-lg font-semibold">Transaction History</h3>
518
+ <div class="flex gap-2 flex-wrap">
519
+ <button id="tx-export" class="px-3 py-1.5 text-sm rounded-lg bg-glass-bg border border-glass-border">Export CSV</button>
520
+ <select class="px-3 py-1.5 text-sm rounded-lg bg-glass-bg border border-glass-border">
521
+ <option>All Status</option>
522
+ <option>Pending</option>
523
+ <option>Completed</option>
524
+ </select>
525
+ <input type="date" class="px-3 py-1.5 text-sm rounded-lg bg-glass-bg border border-glass-border" placeholder="Date">
526
+ </div>
527
+ </div>
528
+
529
+ <div class="overflow-x-auto">
530
+ <table id="tx-table" class="w-full">
531
+ <thead>
532
+ <tr class="text-left text-sm text-secondary-text">
533
+ <th class="pb-3">Date/Time</th>
534
+ <th class="pb-3">Type</th>
535
+ <th class="pb-3">Description</th>
536
+ <th class="pb-3">Amount</th>
537
+ <th class="pb-3">Balance Type</th>
538
+ <th class="pb-3">Status</th>
539
+ <th class="pb-3">Ref ID</th>
540
+ </tr>
541
+ </thead>
542
+ <tbody class="divide-y divide-white/10">
543
+ <tr>
544
+ <td class="py-3">-</td>
545
+ <td class="py-3">-</td>
546
+ <td class="py-3">-</td>
547
+ <td class="py-3">-</td>
548
+ <td class="py-3">-</td>
549
+ <td class="py-3">-</td>
550
+ <td class="py-3">-</td>
551
+ </tr>
552
+ </tbody>
553
+ </table>
554
+ </div>
555
+
556
+ <div id="empty-state" class="py-12 text-center">
557
+ <i data-feather="database" class="w-16 h-16 mx-auto text-secondary-text"></i>
558
+ <h4 class="mt-4 text-lg font-medium">No transactions yet</h4>
559
+ <p class="text-sm text-secondary-text max-w-md mx-auto mt-2">
560
+ Top up your wallet to get started with casino play
561
+ </p>
562
+ </div>
563
+
564
+ <div class="border-t border-white/10 mt-4 pt-4">
565
+ <ul class="flex flex-wrap gap-3 justify-center">
566
+ <li class="text-sm"><button>All</button></li>
567
+ <li class="text-sm"><button>Deposits</button></li>
568
+ <li class="text-sm"><button>Withdrawals</button></li>
569
+ <li class="text-sm"><button>Bonuses</button></li>
570
+ <li class="text-sm"><button>Wagers</button></li>
571
+ <li class="text-sm"><button>Adjustments</button></li>
572
+ </ul>
573
+ </div>
574
+ </div>
575
+ </section>
576
+
577
+ <!-- BOTTOM CARDS -->
578
+ <section class="mb-8 grid md:grid-cols-2 gap-6">
579
+ <div id="store-card" class="glass-card p-5" data-aos="fade-right">
580
+ <div class="flex items-center justify-between mb-4">
581
+ <h3 class="text-lg font-semibold">Buy Packages</h3>
582
+ <button class="px-4 py-1.5 text-sm rounded-lg bg-glass-bg border border-glass-border">Go to Store</button>
583
+ </div>
584
+
585
+ <div class="grid grid-cols-3 gap-3 mt-5">
586
+ <div class="glass-card p-3">
587
+ <p class="text-sm font-medium">$10</p>
588
+ <p class="text-xs text-secondary-text mt-1">10 SC + 50 GC</p>
589
+ </div>
590
+ <div class="glass-card p-3 relative">
591
+ <div class="absolute top-2 right-2 text-xs bg-neon-blue px-1.5 py-0.5 rounded">Best</div>
592
+ <p class="text-sm font-medium">$25</p>
593
+ <p class="text-xs text-secondary-text mt-1">25 SC + 250 GC</p>
594
+ </div>
595
+ <div class="glass-card p-3">
596
+ <p class="text-sm font-medium">$50</p>
597
+ <p class="text-xs text-secondary-text mt-1">50 SC + 1500 GC</p>
598
+ </div>
599
+ </div>
600
+ </div>
601
+
602
+ <div id="promos-card" class="glass-card p-5" data-aos="fade-left">
603
+ <h3 class="text-lg font-semibold mb-4">Active Bonuses & Codes</h3>
604
+
605
+ <div class="space-y-3">
606
+ <div class="glass-card p-3">
607
+ <div class="flex justify-between">
608
+ <p class="text-sm font-medium">Welcome Bonus</p>
609
+ <span class="text-xs">2 days left</span>
610
+ </div>
611
+ <div class="progress-track mt-2">
612
+ <div class="progress-bar" style="width: 15%; background: #00E4FF;"></div>
613
+ </div>
614
+ </div>
615
+
616
+ <div class="glass-card p-3">
617
+ <div class="flex justify-between">
618
+ <p class="text-sm font-medium">Weekly Reload</p>
619
+ <span class="text-xs">6 days left</span>
620
+ </div>
621
+ <div class="progress-track mt-2">
622
+ <div class="progress-bar" style="width: 65%; background: #FF6A00;"></div>
623
+ </div>
624
+ </div>
625
+ </div>
626
+
627
+ <div class="flex mt-5">
628
+ <input type="text" placeholder="Have a code?" class="px-3 py-2 text-sm rounded-l-lg bg-glass-bg border border-glass-border w-full">
629
+ <button class="px-4 py-2 text-sm rounded-r-lg bg-glass-bg border border-glass-border font-medium">Apply</button>
630
+ </div>
631
+ </div>
632
+ </section>
633
+
634
+ <!-- ADDITIONAL CARDS -->
635
+ <section class="mb-8 grid md:grid-cols-2 gap-6">
636
+ <div id="vip-card" class="glass-card p-5" data-aos="fade-right">
637
+ <h3 class="text-lg font-semibold mb-3">VIP Snapshot</h3>
638
+ <p class="text-sm">
639
+ This month wagered: <span class="font-semibold">420.00</span> → VIP +<span class="font-semibold">12%</span>
640
+ </p>
641
+ <button class="mt-3 text-sm text-neon-blue hover:underline">View VIP benefits</button>
642
+ </div>
643
+
644
+ <div id="jackpot-card" class="glass-card p-5" data-aos="fade-left">
645
+ <h3 class="text-lg font-semibold mb-3">Jackpot Contribution</h3>
646
+ <p class="text-sm">
647
+ You've contributed <span class="font-semibold">8.40</span> to the pool
648
+ </p>
649
+ <button class="mt-3 text-sm text-neon-blue hover:underline">View Jackpots</button>
650
+ </div>
651
+ </section>
652
+
653
+ <!-- SECURITY & SETTINGS -->
654
+ <section class="glass-card p-5" data-aos="fade-up">
655
+ <h3 class="text-lg font-semibold mb-4">Security & Settings</h3>
656
+
657
+ <div class="space-y-3">
658
+ <div>
659
+ <button class="w-full text-left py-3 flex justify-between items-center">
660
+ <span>Payment Methods</span>
661
+ <i data-feather="chevron-down" class="w-5 h-5"></i>
662
+ </button>
663
+ <div class="accordion-content">
664
+ <div class="pb-4 pl-2">
665
+ <p class="text-sm">Visa ending in 1234</p>
666
+ <p class="text-sm">Mastercard ending in 5678</p>
667
+ <button class="mt-3 text-sm text-neon-blue hover:underline">Add New Method</button>
668
+ </div>
669
+ </div>
670
+ </div>
671
+
672
+ <div class="border-t border-white/10 pt-3">
673
+ <button class="w-full text-left py-3 flex justify-between items-center">
674
+ <span>Set Withdrawal PIN</span>
675
+ <i data-feather="chevron-down" class="w-5 h-5"></i>
676
+ </button>
677
+ <div class="accordion-content">
678
+ <div class="pb-4 pl-2">
679
+ <div class="flex gap-2 max-w-md">
680
+ <input type="password" placeholder="New 4-digit PIN" class="px-3 py-2 text-sm rounded-lg bg-glass-bg border border-glass-border w-full">
681
+ <button class="px-4 py-2 text-sm rounded-lg bg-glass-bg border border-glass-border font-medium">Set</button>
682
+ </div>
683
+ </div>
684
+ </div>
685
+ </div>
686
+
687
+ <div class="border-t border-white/10 pt-3">
688
+ <button class="w-full text-left py-3 flex justify-between items-center">
689
+ <span>KYC / Verification</span>
690
+ <i data-feather="chevron-down" class="w-5 h-5"></i>
691
+ </button>
692
+ <div class="accordion-content">
693
+ <div class="pb-4 pl-2">
694
+ <div class="flex items-center gap-2 text-sm mb-2">
695
+ <div class="w-3 h-3 rounded-full bg-neon-success"></div>
696
+ <span>Email Verified</span>
697
+ </div>
698
+ <div class="flex items-center gap-2 text-sm">
699
+ <div class="w-3 h-3 rounded-full bg-neon-warning"></div>
700
+ <span>ID Verification: Pending</span>
701
+ <button class="ml-2 text-sm text-neon-blue hover:underline">Upload</button>
702
+ </div>
703
+ </div>
704
+ </div>
705
+ </div>
706
+
707
+ <div class="border-t border-white/10 pt-3">
708
+ <button class="w-full text-left py-3 flex justify-between items-center">
709
+ <span>Notification Preferences</span>
710
+ <i data-feather="chevron-down" class="w-5 h-5"></i>
711
+ </button>
712
+ </div>
713
+
714
+ <div class="border-t border-white/10 pt-3">
715
+ <a href="#" class="flex justify-between items-center py-3 text-neon-blue">
716
+ Responsible Play Guide
717
+ </a>
718
+ </div>
719
+ </div>
720
+ </section>
721
+ </div>
722
+
723
+ <script>
724
+ AOS.init({
725
+ duration: 600,
726
+ easing: 'ease-out-sine',
727
+ once: true
728
+ });
729
+
730
+ feather.replace();
731
+
732
+ // Button hover effects
733
+ const buttons = document.querySelectorAll('.btn-trail');
734
+ buttons.forEach(btn => {
735
+ btn.addEventListener('mouseenter', () => {
736
+ const type = btn.classList.contains('btn-orange-trail') ? 'glow-orange' : 'glow-blue';
737
+ btn.style.boxShadow = `0 0 15px rgba(var(--tw-${type.split('-')[1]} / 0.5))`;
738
+ });
739
+
740
+ btn.addEventListener('mouseleave', () => {
741
+ btn.style.boxShadow = 'none';
742
+ });
743
+ });
744
+
745
+ // Tooltip init
746
+ document.querySelectorAll('.tooltip-container').forEach(el => {
747
+ const tooltip = el.querySelector('.tooltip');
748
+
749
+ el.addEventListener('mouseenter', () => {
750
+ tooltip.style.opacity = '1';
751
+ tooltip.style.visibility = 'visible';
752
+ });
753
+
754
+ el.addEventListener('mouseleave', () => {
755
+ tooltip.style.opacity = '0';
756
+ tooltip.style.visibility = 'hidden';
757
+ });
758
+ });
759
+
760
+ // Accordion functionality
761
+ document.querySelectorAll('.accordion').forEach(acc => {
762
+ acc.addEventListener('click', function() {
763
+ const panel = this.nextElementSibling;
764
+ panel.style.maxHeight = panel.style.maxHeight ? null : `${panel.scrollHeight}px`;
765
+ });
766
+ });
767
+ </script>
768
+ </body>
769
  </html>