geoalgo rerosillo commited on
Commit
0877d91
Β·
1 Parent(s): ca50c7a

Redesign UI with Ethereal Glass and Aurora Noir themes (#1)

Browse files

- Redesign UI with Ethereal Glass and Aurora Noir themes (b7ab51d42aa33ccc2e2e2c6e4a4b71ed71c0e534)


Co-authored-by: Renee <rerosillo@users.noreply.huggingface.co>

Files changed (2) hide show
  1. .gitignore +3 -0
  2. app.py +493 -26
.gitignore CHANGED
@@ -8,3 +8,6 @@ wheels/
8
 
9
  # Virtual environments
10
  .venv
 
 
 
 
8
 
9
  # Virtual environments
10
  .venv
11
+
12
+ # macOS
13
+ .DS_Store
app.py CHANGED
@@ -38,60 +38,527 @@ def build_plots(metric, subdataset):
38
 
39
 
40
  CUSTOM_CSS = """\
41
- /* ── Page background ────────────────────────────────────── */
 
 
 
 
42
  .gradio-container {
43
- background: #f0f4f8 !important;
 
 
 
 
 
44
  }
45
 
46
- /* ── Title banner ───────────────────────────────────────── */
47
  .title-banner {
48
- background: #2d3748 !important;
49
- padding: 16px 24px !important;
50
- border-radius: 8px;
51
- margin-bottom: 6px !important;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
  }
53
  .title-banner h1 {
54
- color: #fff !important;
55
  margin: 0 !important;
 
 
 
56
  }
57
 
58
- /* ── Accent top bar ─────────────────────────────────────── */
59
  .gradio-container::before {
60
  content: "";
61
  display: block;
62
- height: 4px;
63
- background: linear-gradient(90deg, #2b6cb0, #38b2ac);
 
 
64
  margin: -16px -16px 16px -16px;
65
  }
 
 
 
 
66
 
67
- /* ── Header card (title + description) ──────────────────── */
68
  .gradio-container > .main > .wrap > div:first-child {
69
- background: #f7fafc;
70
- border: 1px solid #e2e8f0;
71
- border-radius: 10px;
72
- padding: 20px 24px;
73
- margin-bottom: 12px;
 
 
 
 
 
 
74
  }
75
 
76
- /* ── Active tab accent ──────────────────────────────────── */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
  button.tab-nav-button.selected {
78
- border-bottom-color: #2b6cb0 !important;
79
- color: #2b6cb0 !important;
 
 
 
 
80
  }
81
 
82
- /* ── Table header ───────────────────────────────────────── */
 
 
 
 
 
 
83
  .table-wrap thead th {
84
- background-color: #e2e8f0 !important;
 
 
 
 
 
 
 
 
85
  }
86
 
87
- /* ── Dropdown borders ───────────────────────────────────── */
88
  .gr-dropdown, .multiselect-dropdown {
89
- border-radius: 6px !important;
 
 
 
 
 
 
90
  }
91
 
92
- /* ── Tab content spacing ────────────────────────────────── */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
93
  .tabitem {
94
- padding-top: 12px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95
  }
96
  """
97
 
 
38
 
39
 
40
  CUSTOM_CSS = """\
41
+ /* ═══════════════════════════════════════════════════════════
42
+ LIGHT MODE β€” Ethereal Glass
43
+ ═══════════════════════════════════════════════════════════ */
44
+
45
+ /* ── Page background with floating aurora ─────────────────── */
46
  .gradio-container {
47
+ background:
48
+ radial-gradient(ellipse at 20% 0%, rgba(124, 58, 237, 0.15) 0%, transparent 50%),
49
+ radial-gradient(ellipse at 80% 100%, rgba(59, 130, 246, 0.12) 0%, transparent 50%),
50
+ radial-gradient(ellipse at 50% 50%, rgba(6, 182, 212, 0.08) 0%, transparent 60%),
51
+ linear-gradient(160deg, #f5f3ff 0%, #eef2ff 40%, #f0fdfa 100%) !important;
52
+ color: #1e1b4b !important;
53
  }
54
 
55
+ /* ── Title banner β€” gradient with glow ────────────────────── */
56
  .title-banner {
57
+ background: linear-gradient(120deg, #7c3aed, #3b82f6, #06b6d4) !important;
58
+ padding: 20px 28px !important;
59
+ border-radius: 20px;
60
+ margin-bottom: 14px !important;
61
+ box-shadow:
62
+ 0 8px 32px rgba(124, 58, 237, 0.3),
63
+ 0 0 60px rgba(59, 130, 246, 0.15),
64
+ inset 0 1px 0 rgba(255, 255, 255, 0.2);
65
+ border: 1px solid rgba(255, 255, 255, 0.2);
66
+ position: relative;
67
+ overflow: hidden;
68
+ }
69
+ .title-banner::after {
70
+ content: "";
71
+ position: absolute;
72
+ top: -50%;
73
+ left: -50%;
74
+ width: 200%;
75
+ height: 200%;
76
+ background: linear-gradient(
77
+ 45deg,
78
+ transparent 40%,
79
+ rgba(255, 255, 255, 0.08) 50%,
80
+ transparent 60%
81
+ );
82
+ animation: shimmer 6s ease-in-out infinite;
83
+ }
84
+ @keyframes shimmer {
85
+ 0%, 100% { transform: translateX(-30%) translateY(-30%) rotate(0deg); }
86
+ 50% { transform: translateX(30%) translateY(30%) rotate(5deg); }
87
  }
88
  .title-banner h1 {
89
+ color: #ffffff !important;
90
  margin: 0 !important;
91
+ position: relative;
92
+ z-index: 1;
93
+ letter-spacing: -0.02em;
94
  }
95
 
96
+ /* ── Accent top bar β€” animated gradient ───────────────────── */
97
  .gradio-container::before {
98
  content: "";
99
  display: block;
100
+ height: 3px;
101
+ background: linear-gradient(90deg, #7c3aed, #3b82f6, #06b6d4, #7c3aed);
102
+ background-size: 200% 100%;
103
+ animation: gradientSlide 4s linear infinite;
104
  margin: -16px -16px 16px -16px;
105
  }
106
+ @keyframes gradientSlide {
107
+ 0% { background-position: 0% 50%; }
108
+ 100% { background-position: 200% 50%; }
109
+ }
110
 
111
+ /* ── Header card β€” frosted glass ──────────────────────────── */
112
  .gradio-container > .main > .wrap > div:first-child {
113
+ background: rgba(255, 255, 255, 0.55) !important;
114
+ border: 1px solid rgba(124, 58, 237, 0.1);
115
+ border-radius: 16px;
116
+ padding: 24px 28px;
117
+ margin-bottom: 14px;
118
+ backdrop-filter: blur(20px) saturate(1.4);
119
+ -webkit-backdrop-filter: blur(20px) saturate(1.4);
120
+ box-shadow:
121
+ 0 4px 24px rgba(124, 58, 237, 0.08),
122
+ inset 0 1px 0 rgba(255, 255, 255, 0.6);
123
+ color: #1e1b4b !important;
124
  }
125
 
126
+ /* ── Tab buttons β€” pill glass ─────────────────────────────── */
127
+ button.tab-nav-button {
128
+ color: #4c1d95 !important;
129
+ background: rgba(255, 255, 255, 0.5) !important;
130
+ border-radius: 999px !important;
131
+ border: 1px solid rgba(124, 58, 237, 0.12) !important;
132
+ backdrop-filter: blur(8px);
133
+ -webkit-backdrop-filter: blur(8px);
134
+ transition: all 0.3s ease !important;
135
+ box-shadow: 0 2px 8px rgba(124, 58, 237, 0.06);
136
+ }
137
+ button.tab-nav-button:hover {
138
+ background: rgba(124, 58, 237, 0.08) !important;
139
+ box-shadow: 0 4px 16px rgba(124, 58, 237, 0.12);
140
+ transform: translateY(-1px);
141
+ }
142
  button.tab-nav-button.selected {
143
+ color: #ffffff !important;
144
+ border-color: transparent !important;
145
+ background-image: linear-gradient(120deg, #7c3aed, #3b82f6) !important;
146
+ box-shadow:
147
+ 0 6px 24px rgba(124, 58, 237, 0.35),
148
+ 0 0 40px rgba(59, 130, 246, 0.1);
149
  }
150
 
151
+ /* ── Table β€” glass with depth ─────────────────────────────── */
152
+ .table-wrap {
153
+ border-radius: 16px !important;
154
+ overflow: hidden;
155
+ border: 1px solid rgba(124, 58, 237, 0.1) !important;
156
+ box-shadow: 0 4px 24px rgba(124, 58, 237, 0.08);
157
+ }
158
  .table-wrap thead th {
159
+ background: linear-gradient(120deg, #4c1d95, #1e40af) !important;
160
+ color: #ffffff !important;
161
+ letter-spacing: 0.03em;
162
+ }
163
+ .table-wrap tbody tr {
164
+ transition: all 0.2s ease;
165
+ }
166
+ .table-wrap tbody tr:hover {
167
+ background: rgba(124, 58, 237, 0.06) !important;
168
  }
169
 
170
+ /* ── Dropdowns & form elements ────────────────────────────── */
171
  .gr-dropdown, .multiselect-dropdown {
172
+ border-radius: 12px !important;
173
+ border: 1px solid rgba(124, 58, 237, 0.18) !important;
174
+ background: rgba(245, 243, 255, 0.6) !important;
175
+ backdrop-filter: blur(12px);
176
+ -webkit-backdrop-filter: blur(12px);
177
+ color: #1e1b4b !important;
178
+ box-shadow: 0 2px 12px rgba(124, 58, 237, 0.06);
179
  }
180
 
181
+ /* ── Light mode: inputs ───────────────────────────────────── */
182
+ .gradio-container input,
183
+ .gradio-container textarea,
184
+ .gradio-container select {
185
+ background: rgba(245, 243, 255, 0.5) !important;
186
+ border: 1px solid rgba(124, 58, 237, 0.15) !important;
187
+ border-radius: 10px !important;
188
+ color: #1e1b4b !important;
189
+ }
190
+
191
+ /* ── Light mode: all panels/blocks transparent ────────────── */
192
+ .gr-group,
193
+ .gr-box,
194
+ .gr-panel,
195
+ .gr-form,
196
+ .gr-block,
197
+ .block,
198
+ .form,
199
+ .panel,
200
+ .tabitem,
201
+ .tabitem > div,
202
+ .tab-content,
203
+ .gap,
204
+ .gr-padded,
205
+ .wrap,
206
+ .dropdown-container,
207
+ .secondary-wrap,
208
+ .input-container {
209
+ background: transparent !important;
210
+ border: none !important;
211
+ box-shadow: none !important;
212
+ }
213
+
214
+ /* ── Light mode: tags / chips ─────────────────────────────── */
215
+ .token,
216
+ .token-remove,
217
+ .tag,
218
+ span.tag,
219
+ .multiselect-token,
220
+ .pill {
221
+ background: rgba(124, 58, 237, 0.1) !important;
222
+ border: 1px solid rgba(124, 58, 237, 0.25) !important;
223
+ border-radius: 999px !important;
224
+ color: #4c1d95 !important;
225
+ backdrop-filter: blur(6px);
226
+ -webkit-backdrop-filter: blur(6px);
227
+ }
228
+ .token:hover,
229
+ .tag:hover,
230
+ .multiselect-token:hover,
231
+ .pill:hover {
232
+ background: rgba(124, 58, 237, 0.18) !important;
233
+ border-color: rgba(124, 58, 237, 0.4) !important;
234
+ }
235
+
236
+ /* ── Light mode: dropdown lists when open ─────────────────── */
237
+ .dropdown-content,
238
+ ul[role="listbox"],
239
+ .options {
240
+ background: rgba(255, 255, 255, 0.85) !important;
241
+ border: 1px solid rgba(124, 58, 237, 0.15) !important;
242
+ border-radius: 12px !important;
243
+ backdrop-filter: blur(16px);
244
+ -webkit-backdrop-filter: blur(16px);
245
+ box-shadow: 0 8px 32px rgba(124, 58, 237, 0.1);
246
+ }
247
+ .dropdown-content li:hover,
248
+ ul[role="listbox"] li:hover,
249
+ .options li:hover {
250
+ background: rgba(124, 58, 237, 0.08) !important;
251
+ }
252
+
253
+ /* ── Light mode: labels ───────────────────────────────────── */
254
+ label,
255
+ .gr-block label,
256
+ .label-text,
257
+ .block-label {
258
+ color: #4c1d95 !important;
259
+ }
260
+
261
+ /* ── Tab content spacing ──────────────────────────────────── */
262
  .tabitem {
263
+ padding-top: 14px;
264
+ }
265
+
266
+ /* ═══════════════════════════════════════════════════════════
267
+ DARK MODE β€” Aurora Noir
268
+ ═══════════════════════════════════════════════════════════ */
269
+
270
+ .dark .gradio-container {
271
+ background:
272
+ radial-gradient(ellipse at 25% 15%, rgba(124, 58, 237, 0.18) 0%, transparent 50%),
273
+ radial-gradient(ellipse at 75% 70%, rgba(59, 130, 246, 0.14) 0%, transparent 50%),
274
+ radial-gradient(ellipse at 50% 40%, rgba(6, 182, 212, 0.06) 0%, transparent 55%),
275
+ linear-gradient(180deg, #110d24 0%, #0d0b1a 50%, #080614 100%) !important;
276
+ color: #f1f5f9 !important;
277
+ position: relative;
278
+ }
279
+
280
+ /* ── Body glare effect ────────────────────────────────────── */
281
+ .dark .gradio-container::after {
282
+ content: "";
283
+ position: fixed;
284
+ top: -50%;
285
+ left: -50%;
286
+ width: 200%;
287
+ height: 200%;
288
+ background: linear-gradient(
289
+ 35deg,
290
+ transparent 0%,
291
+ transparent 42%,
292
+ rgba(124, 58, 237, 0.04) 45%,
293
+ rgba(255, 255, 255, 0.03) 50%,
294
+ rgba(59, 130, 246, 0.04) 55%,
295
+ transparent 58%,
296
+ transparent 100%
297
+ );
298
+ animation: bodyGlare 10s ease-in-out infinite;
299
+ pointer-events: none;
300
+ z-index: 0;
301
+ }
302
+ @keyframes bodyGlare {
303
+ 0%, 100% { transform: translateX(-20%) translateY(-10%) rotate(-5deg); }
304
+ 50% { transform: translateX(20%) translateY(10%) rotate(5deg); }
305
+ }
306
+
307
+ /* ── Force all text readable ──────────────────────────────── */
308
+ .dark .gradio-container,
309
+ .dark .gradio-container *:not(.title-banner *):not(button.tab-nav-button) {
310
+ color: #f1f5f9 !important;
311
+ }
312
+ .dark .gradio-container .prose,
313
+ .dark .gradio-container .prose * {
314
+ color: #e2e8f0 !important;
315
+ }
316
+ .dark .gradio-container .markdown-text,
317
+ .dark .gradio-container .markdown-text * {
318
+ color: #e2e8f0 !important;
319
+ }
320
+ .dark .gradio-container strong,
321
+ .dark .gradio-container b {
322
+ color: #ffffff !important;
323
+ }
324
+ .dark .gradio-container h2,
325
+ .dark .gradio-container h3,
326
+ .dark .gradio-container h4 {
327
+ color: #ffffff !important;
328
+ text-shadow: 0 0 30px rgba(124, 58, 237, 0.3);
329
+ }
330
+ .dark .gradio-container a {
331
+ color: #93c5fd !important;
332
+ }
333
+
334
+ /* ── All inputs β€” normal + focus + active ─────────────────── */
335
+ .dark .gradio-container input,
336
+ .dark .gradio-container textarea,
337
+ .dark .gradio-container select,
338
+ .dark .gradio-container input[type="text"],
339
+ .dark .gradio-container input[type="search"],
340
+ .dark .gradio-container input[type="number"],
341
+ .dark .gradio-container input:focus,
342
+ .dark .gradio-container input:active,
343
+ .dark .gradio-container textarea:focus,
344
+ .dark .gradio-container textarea:active,
345
+ .dark .gradio-container select:focus,
346
+ .dark .gradio-container select:active {
347
+ color: #f1f5f9 !important;
348
+ background: rgba(10, 6, 32, 0.8) !important;
349
+ border: 1px solid rgba(124, 58, 237, 0.25) !important;
350
+ border-radius: 10px !important;
351
+ outline: none !important;
352
+ caret-color: #a78bfa !important;
353
+ }
354
+
355
+ /* ── Title banner β€” frosted glass ─────────────────────────── */
356
+ .dark .title-banner {
357
+ background: linear-gradient(120deg, rgba(124, 58, 237, 0), rgba(59, 130, 246, 0), rgba(34, 211, 238, 0)) !important;
358
+ padding: 20px 28px !important;
359
+ border-radius: 20px;
360
+ margin-bottom: 14px !important;
361
+ box-shadow:
362
+ 0 4px 16px rgba(0, 0, 0, 0.3),
363
+ inset 0 1px 0 rgba(255, 255, 255, 0.15),
364
+ inset 0 -1px 0 rgba(0, 0, 0, 0.1);
365
+ border: 1px solid rgba(255, 255, 255, 0.1);
366
+ backdrop-filter: blur(4px);
367
+ -webkit-backdrop-filter: blur(20px);
368
+ position: relative;
369
+ z-index: 1;
370
+ }
371
+ .dark .title-banner h1 {
372
+ color: #ffffff !important;
373
+ }
374
+
375
+ /* ── Kill all block/panel backgrounds β€” seamless look ─────── */
376
+ .dark .gr-group,
377
+ .dark .gr-box,
378
+ .dark .gr-panel,
379
+ .dark .gr-form,
380
+ .dark .gr-block,
381
+ .dark .block,
382
+ .dark .form,
383
+ .dark .panel,
384
+ .dark .gradio-container > .main,
385
+ .dark .gradio-container > .main > .wrap,
386
+ .dark .gradio-container > .main > .wrap > div,
387
+ .dark .tabitem,
388
+ .dark .tabitem > div,
389
+ .dark .tabitem > .gr-group,
390
+ .dark .tabitem > .gr-box,
391
+ .dark .tab-content,
392
+ .dark .gap,
393
+ .dark .gr-padded {
394
+ background: transparent !important;
395
+ border: none !important;
396
+ box-shadow: none !important;
397
+ }
398
+
399
+ /* ── Header card β€” keep its glass style ───────────────────── */
400
+ .dark .gradio-container > .main > .wrap > div:first-child {
401
+ background: rgba(10, 6, 32, 0.6) !important;
402
+ border: 1px solid rgba(124, 58, 237, 0.15) !important;
403
+ border-radius: 16px !important;
404
+ backdrop-filter: blur(24px) saturate(1.2);
405
+ -webkit-backdrop-filter: blur(24px) saturate(1.2);
406
+ box-shadow:
407
+ 0 8px 32px rgba(0, 0, 0, 0.4),
408
+ inset 0 1px 0 rgba(124, 58, 237, 0.1);
409
+ position: relative;
410
+ z-index: 1;
411
+ }
412
+
413
+ /* ── Dropdowns β€” glass ────────────────────────────────────── */
414
+ .dark .gr-dropdown,
415
+ .dark .multiselect-dropdown {
416
+ background: rgba(10, 6, 32, 0.5) !important;
417
+ border: 1px solid rgba(124, 58, 237, 0.2) !important;
418
+ border-radius: 12px !important;
419
+ backdrop-filter: blur(16px);
420
+ -webkit-backdrop-filter: blur(16px);
421
+ }
422
+
423
+ /* ── Dropdown containers + select wrappers ────────────────── */
424
+ .dark .wrap,
425
+ .dark .dropdown-container,
426
+ .dark .secondary-wrap,
427
+ .dark .input-container {
428
+ background: transparent !important;
429
+ border-color: rgba(124, 58, 237, 0.15) !important;
430
+ }
431
+
432
+ /* ── Dropdown/listbox popups (scoped β€” no markdown lists) ── */
433
+ .dark .gradio-container [role="listbox"],
434
+ .dark .gradio-container [role="listbox"] [role="option"],
435
+ .dark .gradio-container .dropdown-content,
436
+ .dark .gradio-container .dropdown-content li {
437
+ background: rgba(10, 6, 32, 0.95) !important;
438
+ color: #f1f5f9 !important;
439
+ }
440
+ .dark .gradio-container [role="listbox"],
441
+ .dark .gradio-container .dropdown-content {
442
+ border: 1px solid rgba(124, 58, 237, 0.25) !important;
443
+ border-radius: 12px !important;
444
+ backdrop-filter: blur(20px);
445
+ -webkit-backdrop-filter: blur(20px);
446
+ box-shadow: 0 12px 40px rgba(0, 0, 0, 0.6);
447
+ }
448
+
449
+ /* ── Dropdown items: hover + selected ─────────────────────── */
450
+ .dark .gradio-container [role="option"]:hover,
451
+ .dark .gradio-container .dropdown-content li:hover {
452
+ background: rgba(124, 58, 237, 0.2) !important;
453
+ color: #ffffff !important;
454
+ }
455
+ .dark .gradio-container [role="option"][aria-selected="true"],
456
+ .dark .gradio-container .dropdown-content li.selected {
457
+ background: rgba(124, 58, 237, 0.35) !important;
458
+ color: #ffffff !important;
459
+ }
460
+
461
+ /* ── Checkmarks and icons inside dropdowns ────────────────── */
462
+ .dark .gradio-container [role="option"] svg,
463
+ .dark .gradio-container .dropdown-content li svg {
464
+ color: #a78bfa !important;
465
+ fill: #a78bfa !important;
466
+ }
467
+
468
+ /* ── Tags / chips (model selectors) ───────────────────────── */
469
+ .dark .token,
470
+ .dark .token-remove,
471
+ .dark .tag,
472
+ .dark span.tag,
473
+ .dark .multiselect-token,
474
+ .dark .pill {
475
+ background: rgba(124, 58, 237, 0.2) !important;
476
+ border: 1px solid rgba(124, 58, 237, 0.3) !important;
477
+ border-radius: 999px !important;
478
+ color: #e2e8f0 !important;
479
+ backdrop-filter: blur(8px);
480
+ -webkit-backdrop-filter: blur(8px);
481
+ }
482
+ .dark .token:hover,
483
+ .dark .tag:hover,
484
+ .dark .multiselect-token:hover,
485
+ .dark .pill:hover {
486
+ background: rgba(124, 58, 237, 0.3) !important;
487
+ border-color: rgba(124, 58, 237, 0.5) !important;
488
+ }
489
+ .dark .token-remove:hover,
490
+ .dark .remove-btn:hover {
491
+ color: #f87171 !important;
492
+ }
493
+
494
+ /* ── Label text above inputs ──────────────────────────────── */
495
+ .dark label,
496
+ .dark .gr-block label,
497
+ .dark .label-text,
498
+ .dark .block-label {
499
+ color: #cbd5e1 !important;
500
+ }
501
+
502
+ /* ── Tab buttons β€” glass pills ────────────────────────────── */
503
+ .dark button.tab-nav-button {
504
+ color: #cbd5e1 !important;
505
+ background: rgba(10, 6, 32, 0.5) !important;
506
+ border-radius: 999px !important;
507
+ border: 1px solid rgba(124, 58, 237, 0.15) !important;
508
+ backdrop-filter: blur(12px);
509
+ -webkit-backdrop-filter: blur(12px);
510
+ transition: all 0.3s ease !important;
511
+ position: relative;
512
+ z-index: 1;
513
+ }
514
+ .dark button.tab-nav-button:hover {
515
+ background: rgba(124, 58, 237, 0.12) !important;
516
+ box-shadow: 0 4px 20px rgba(124, 58, 237, 0.15);
517
+ border-color: rgba(124, 58, 237, 0.3) !important;
518
+ }
519
+ .dark button.tab-nav-button.selected {
520
+ color: #ffffff !important;
521
+ border-color: transparent !important;
522
+ background-image: linear-gradient(120deg, rgba(124, 58, 237, 1), rgba(59, 130, 246, 1)) !important;
523
+ box-shadow:
524
+ 0 10px 30px rgba(37, 99, 235, 0.5),
525
+ 0 0 50px rgba(124, 58, 237, 0.15);
526
+ }
527
+
528
+ /* ── Table β€” aurora glass ─────────────────────────────────── */
529
+ .dark .table-wrap {
530
+ border-radius: 16px !important;
531
+ overflow: hidden;
532
+ border: 1px solid rgba(124, 58, 237, 0.2) !important;
533
+ box-shadow:
534
+ 0 8px 40px rgba(0, 0, 0, 0.5),
535
+ 0 0 60px rgba(124, 58, 237, 0.08);
536
+ position: relative;
537
+ z-index: 1;
538
+ }
539
+ .dark .table-wrap thead th {
540
+ background: linear-gradient(120deg, rgba(46, 16, 101, 0.9), rgba(30, 58, 138, 0.9)) !important;
541
+ color: #ffffff !important;
542
+ border-bottom: 1px solid rgba(124, 58, 237, 0.3) !important;
543
+ letter-spacing: 0.03em;
544
+ text-shadow: 0 0 10px rgba(124, 58, 237, 0.4);
545
+ backdrop-filter: blur(12px);
546
+ }
547
+ .dark .table-wrap tbody tr {
548
+ background: rgba(0, 0, 0, 0.35) !important;
549
+ color: #f1f5f9 !important;
550
+ transition: all 0.25s ease;
551
+ }
552
+ .dark .table-wrap tbody tr:nth-child(even) {
553
+ background: rgba(10, 6, 32, 0.4) !important;
554
+ }
555
+ .dark .table-wrap tbody tr:hover {
556
+ background: linear-gradient(120deg, rgba(124, 58, 237, 0.12), rgba(59, 130, 246, 0.12)) !important;
557
+ box-shadow: inset 0 0 30px rgba(124, 58, 237, 0.06);
558
+ }
559
+ .dark .table-wrap tbody td {
560
+ color: #f1f5f9 !important;
561
+ border-bottom: 1px solid rgba(124, 58, 237, 0.06) !important;
562
  }
563
  """
564