claude-team-dashboard 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of claude-team-dashboard might be problematic. Click here for more details.

Files changed (49) hide show
  1. package/CHANGELOG.md +76 -0
  2. package/LICENSE +21 -0
  3. package/README.md +722 -0
  4. package/cleanup.js +73 -0
  5. package/config.js +50 -0
  6. package/dist/assets/icons-Ijf8rQIc.js +1 -0
  7. package/dist/assets/index-Cqc1m1x_.css +1 -0
  8. package/dist/assets/index-jGy3ms0W.js +9 -0
  9. package/dist/assets/react-vendor-DbmSkCAF.js +1 -0
  10. package/dist/index.html +16 -0
  11. package/index.html +13 -0
  12. package/package.json +93 -0
  13. package/server.js +953 -0
  14. package/src/App.jsx +372 -0
  15. package/src/animations-enhanced.css +929 -0
  16. package/src/animations.css +783 -0
  17. package/src/components/ActivityFeed.jsx +289 -0
  18. package/src/components/AgentActivity.jsx +104 -0
  19. package/src/components/AgentCard.jsx +163 -0
  20. package/src/components/AgentOutputViewer.jsx +334 -0
  21. package/src/components/ArchiveViewer.jsx +283 -0
  22. package/src/components/ConnectionStatus.jsx +124 -0
  23. package/src/components/DetailedTaskProgress.jsx +126 -0
  24. package/src/components/ErrorBoundary.jsx +132 -0
  25. package/src/components/Header.jsx +154 -0
  26. package/src/components/LiveAgentStream.jsx +176 -0
  27. package/src/components/LiveCommunication.jsx +326 -0
  28. package/src/components/LiveMetrics.jsx +100 -0
  29. package/src/components/RealTimeMessages.jsx +298 -0
  30. package/src/components/SkeletonLoader.jsx +384 -0
  31. package/src/components/StatsOverview.jsx +209 -0
  32. package/src/components/SystemStatus.jsx +57 -0
  33. package/src/components/TaskList.jsx +306 -0
  34. package/src/components/TeamCard.jsx +126 -0
  35. package/src/components/TeamHistory.jsx +204 -0
  36. package/src/components/__tests__/ConnectionStatus.test.jsx +54 -0
  37. package/src/components/__tests__/StatsOverview.test.jsx +66 -0
  38. package/src/config/constants.js +59 -0
  39. package/src/hooks/useCounterAnimation.js +219 -0
  40. package/src/hooks/useWebSocket.js +76 -0
  41. package/src/index.css +1818 -0
  42. package/src/main.jsx +17 -0
  43. package/src/polish-enhancements.css +303 -0
  44. package/src/premium-visual-polish.css +830 -0
  45. package/src/responsive-enhancements.css +666 -0
  46. package/src/styles/theme.css +395 -0
  47. package/src/test/setup.js +19 -0
  48. package/start.js +36 -0
  49. package/vite.config.js +37 -0
package/src/index.css ADDED
@@ -0,0 +1,1818 @@
1
+ /* Reset and Base Styles */
2
+ * {
3
+ margin: 0;
4
+ padding: 0;
5
+ box-sizing: border-box;
6
+ }
7
+
8
+ body {
9
+ margin: 0;
10
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
11
+ 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
12
+ sans-serif;
13
+ -webkit-font-smoothing: antialiased;
14
+ -moz-osx-font-smoothing: grayscale;
15
+ background: linear-gradient(135deg, #0a0e1a 0%, #1a1f35 25%, #0f1729 50%, #1e2538 75%, #0a0e1a 100%);
16
+ background-size: 400% 400%;
17
+ animation: gradientShift 20s ease infinite;
18
+ color: #e2e8f0;
19
+ min-height: 100vh;
20
+ scroll-behavior: smooth;
21
+ }
22
+
23
+ @keyframes gradientShift {
24
+ 0% { background-position: 0% 50%; }
25
+ 50% { background-position: 100% 50%; }
26
+ 100% { background-position: 0% 50%; }
27
+ }
28
+
29
+ code {
30
+ font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace;
31
+ letter-spacing: 0;
32
+ font-size: 0.875em;
33
+ }
34
+
35
+ /* ========================================
36
+ TYPOGRAPHY SYSTEM - Optimized Hierarchy
37
+ ======================================== */
38
+
39
+ /* Heading Styles - Perfect hierarchy with optimal spacing */
40
+ h1, h2, h3, h4, h5, h6 {
41
+ font-weight: 700;
42
+ line-height: 1.2;
43
+ letter-spacing: -0.025em;
44
+ color: #ffffff;
45
+ margin-bottom: 0.5em;
46
+ }
47
+
48
+ h1 {
49
+ font-size: 2.25rem; /* 36px */
50
+ line-height: 1.1;
51
+ letter-spacing: -0.03em;
52
+ font-weight: 800;
53
+ }
54
+
55
+ h2 {
56
+ font-size: 1.875rem; /* 30px */
57
+ line-height: 1.15;
58
+ letter-spacing: -0.028em;
59
+ font-weight: 700;
60
+ }
61
+
62
+ h3 {
63
+ font-size: 1.5rem; /* 24px */
64
+ line-height: 1.25;
65
+ letter-spacing: -0.02em;
66
+ font-weight: 700;
67
+ }
68
+
69
+ h4 {
70
+ font-size: 1.25rem; /* 20px */
71
+ line-height: 1.3;
72
+ letter-spacing: -0.015em;
73
+ font-weight: 600;
74
+ }
75
+
76
+ h5 {
77
+ font-size: 1.125rem; /* 18px */
78
+ line-height: 1.4;
79
+ letter-spacing: -0.012em;
80
+ font-weight: 600;
81
+ }
82
+
83
+ h6 {
84
+ font-size: 1rem; /* 16px */
85
+ line-height: 1.5;
86
+ letter-spacing: -0.01em;
87
+ font-weight: 600;
88
+ }
89
+
90
+ /* Paragraph and body text */
91
+ p {
92
+ margin-bottom: 1em;
93
+ line-height: 1.7;
94
+ letter-spacing: -0.011em;
95
+ color: #d1d5db;
96
+ }
97
+
98
+ /* Small text */
99
+ small {
100
+ font-size: 0.875em;
101
+ line-height: 1.5;
102
+ letter-spacing: -0.008em;
103
+ }
104
+
105
+ /* Strong emphasis */
106
+ strong, b {
107
+ font-weight: 600;
108
+ color: #ffffff;
109
+ }
110
+
111
+ /* Layout */
112
+ .container {
113
+ max-width: 1400px;
114
+ margin: 0 auto;
115
+ padding: 0 24px;
116
+ }
117
+
118
+ /* Cards - Improved spacing and visual balance with enhanced glassmorphism */
119
+ .card {
120
+ background: linear-gradient(135deg, rgba(30, 41, 59, 0.85) 0%, rgba(15, 23, 42, 0.8) 100%);
121
+ border-radius: 20px;
122
+ box-shadow:
123
+ 0 8px 32px rgba(0, 0, 0, 0.4),
124
+ 0 2px 8px rgba(0, 0, 0, 0.3),
125
+ inset 0 1px 0 rgba(255, 255, 255, 0.08),
126
+ 0 0 0 1px rgba(255, 255, 255, 0.06);
127
+ padding: 1.75rem; /* 28px - increased for better breathing room */
128
+ backdrop-filter: blur(24px) saturate(180%);
129
+ -webkit-backdrop-filter: blur(24px) saturate(180%);
130
+ border: 1px solid rgba(249, 115, 22, 0.15);
131
+ transition: all 0.35s cubic-bezier(0.34, 1.56, 0.64, 1);
132
+ position: relative;
133
+ overflow: hidden;
134
+ }
135
+
136
+ .card::before {
137
+ content: '';
138
+ position: absolute;
139
+ top: 0;
140
+ left: -100%;
141
+ width: 100%;
142
+ height: 100%;
143
+ background: linear-gradient(
144
+ 90deg,
145
+ transparent,
146
+ rgba(249, 115, 22, 0.08),
147
+ transparent
148
+ );
149
+ transition: left 0.5s ease;
150
+ }
151
+
152
+ .card:hover {
153
+ transform: translateY(-4px) scale(1.005);
154
+ box-shadow:
155
+ 0 16px 48px rgba(0, 0, 0, 0.5),
156
+ 0 8px 24px rgba(0, 0, 0, 0.35),
157
+ 0 0 0 1px rgba(249, 115, 22, 0.3),
158
+ inset 0 1px 0 rgba(255, 255, 255, 0.12);
159
+ border-color: rgba(249, 115, 22, 0.3);
160
+ }
161
+
162
+ .card:hover::before {
163
+ left: 100%;
164
+ }
165
+
166
+ .stat-card {
167
+ background: linear-gradient(135deg, rgba(30, 41, 59, 0.88) 0%, rgba(15, 23, 42, 0.85) 50%, rgba(30, 41, 59, 0.88) 100%);
168
+ border-radius: 20px;
169
+ box-shadow:
170
+ 0 8px 32px rgba(0, 0, 0, 0.35),
171
+ 0 2px 8px rgba(0, 0, 0, 0.25),
172
+ inset 0 1px 0 rgba(255, 255, 255, 0.08),
173
+ 0 0 0 1px rgba(255, 255, 255, 0.06);
174
+ padding: 1.5rem; /* 24px - optimized for stat cards */
175
+ border: 1px solid rgba(55, 65, 81, 0.6);
176
+ backdrop-filter: blur(20px) saturate(160%);
177
+ -webkit-backdrop-filter: blur(20px) saturate(160%);
178
+ position: relative;
179
+ overflow: hidden;
180
+ transition: all 0.35s cubic-bezier(0.34, 1.56, 0.64, 1);
181
+ }
182
+
183
+ .stat-card::before {
184
+ content: '';
185
+ position: absolute;
186
+ top: 0;
187
+ left: 0;
188
+ right: 0;
189
+ height: 3px;
190
+ background: linear-gradient(90deg, transparent, rgba(249, 115, 22, 0.7), rgba(251, 146, 60, 0.6), transparent);
191
+ opacity: 0;
192
+ transition: opacity 0.4s ease;
193
+ box-shadow: 0 2px 8px rgba(249, 115, 22, 0.4);
194
+ }
195
+
196
+ .stat-card::after {
197
+ content: '';
198
+ position: absolute;
199
+ top: -50%;
200
+ right: -50%;
201
+ width: 200%;
202
+ height: 200%;
203
+ background: radial-gradient(circle, rgba(249, 115, 22, 0.08) 0%, transparent 70%);
204
+ opacity: 0;
205
+ transition: opacity 0.5s ease, transform 0.5s ease;
206
+ pointer-events: none;
207
+ }
208
+
209
+ .stat-card:hover {
210
+ transform: translateY(-6px) scale(1.01);
211
+ box-shadow:
212
+ 0 20px 60px rgba(0, 0, 0, 0.5),
213
+ 0 8px 24px rgba(0, 0, 0, 0.35),
214
+ 0 0 0 1px rgba(249, 115, 22, 0.4),
215
+ inset 0 1px 0 rgba(255, 255, 255, 0.12),
216
+ 0 0 40px rgba(249, 115, 22, 0.15);
217
+ border-color: rgba(249, 115, 22, 0.4);
218
+ }
219
+
220
+ .stat-card:hover::before {
221
+ opacity: 1;
222
+ }
223
+
224
+ .stat-card:hover::after {
225
+ opacity: 1;
226
+ transform: translate(-25%, -25%);
227
+ }
228
+
229
+ /* Badges - Improved typography and spacing */
230
+ .badge {
231
+ padding: 0.375rem 0.875rem; /* 6px 14px */
232
+ border-radius: 9999px;
233
+ font-size: 0.75rem; /* 12px */
234
+ font-weight: 600;
235
+ line-height: 1.4;
236
+ letter-spacing: 0.015em; /* Slightly wider for small caps feel */
237
+ display: inline-block;
238
+ position: relative;
239
+ transition: all 0.3s ease;
240
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
241
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15), inset 0 1px 0 rgba(255, 255, 255, 0.1);
242
+ text-transform: uppercase;
243
+ font-feature-settings: 'tnum' 1; /* Tabular numbers for consistency */
244
+ }
245
+
246
+ .badge-pending {
247
+ background: linear-gradient(135deg, rgba(251, 191, 36, 0.25) 0%, rgba(234, 179, 8, 0.2) 100%);
248
+ color: #fbbf24;
249
+ border: 1px solid rgba(251, 191, 36, 0.4);
250
+ box-shadow: 0 4px 12px rgba(234, 179, 8, 0.2), inset 0 1px 0 rgba(251, 191, 36, 0.2);
251
+ }
252
+
253
+ .badge-pending:hover {
254
+ background: linear-gradient(135deg, rgba(251, 191, 36, 0.35) 0%, rgba(234, 179, 8, 0.25) 100%);
255
+ box-shadow: 0 6px 16px rgba(234, 179, 8, 0.3), inset 0 1px 0 rgba(251, 191, 36, 0.3);
256
+ }
257
+
258
+ .badge-in-progress {
259
+ background: linear-gradient(135deg, rgba(96, 165, 250, 0.25) 0%, rgba(59, 130, 246, 0.2) 100%);
260
+ color: #60a5fa;
261
+ border: 1px solid rgba(96, 165, 250, 0.4);
262
+ box-shadow: 0 4px 12px rgba(59, 130, 246, 0.2), inset 0 1px 0 rgba(96, 165, 250, 0.2);
263
+ animation: pulse-glow 2s ease-in-out infinite;
264
+ }
265
+
266
+ .badge-in-progress:hover {
267
+ background: linear-gradient(135deg, rgba(96, 165, 250, 0.35) 0%, rgba(59, 130, 246, 0.25) 100%);
268
+ box-shadow: 0 6px 16px rgba(59, 130, 246, 0.3), inset 0 1px 0 rgba(96, 165, 250, 0.3);
269
+ }
270
+
271
+ .badge-completed {
272
+ background: linear-gradient(135deg, rgba(74, 222, 128, 0.25) 0%, rgba(34, 197, 94, 0.2) 100%);
273
+ color: #4ade80;
274
+ border: 1px solid rgba(74, 222, 128, 0.4);
275
+ box-shadow: 0 4px 12px rgba(34, 197, 94, 0.2), inset 0 1px 0 rgba(74, 222, 128, 0.2);
276
+ }
277
+
278
+ .badge-completed:hover {
279
+ background: linear-gradient(135deg, rgba(74, 222, 128, 0.35) 0%, rgba(34, 197, 94, 0.25) 100%);
280
+ box-shadow: 0 6px 16px rgba(34, 197, 94, 0.3), inset 0 1px 0 rgba(74, 222, 128, 0.3);
281
+ }
282
+
283
+ .badge-blocked {
284
+ background: linear-gradient(135deg, rgba(248, 113, 113, 0.25) 0%, rgba(239, 68, 68, 0.2) 100%);
285
+ color: #f87171;
286
+ border: 1px solid rgba(248, 113, 113, 0.4);
287
+ box-shadow: 0 4px 12px rgba(239, 68, 68, 0.2), inset 0 1px 0 rgba(248, 113, 113, 0.2);
288
+ }
289
+
290
+ .badge-blocked:hover {
291
+ background: linear-gradient(135deg, rgba(248, 113, 113, 0.35) 0%, rgba(239, 68, 68, 0.25) 100%);
292
+ box-shadow: 0 6px 16px rgba(239, 68, 68, 0.3), inset 0 1px 0 rgba(248, 113, 113, 0.3);
293
+ }
294
+
295
+ @keyframes pulse-glow {
296
+ 0%, 100% {
297
+ box-shadow: 0 4px 12px rgba(59, 130, 246, 0.2), inset 0 1px 0 rgba(96, 165, 250, 0.2);
298
+ }
299
+ 50% {
300
+ box-shadow: 0 4px 16px rgba(59, 130, 246, 0.4), inset 0 1px 0 rgba(96, 165, 250, 0.3);
301
+ }
302
+ }
303
+
304
+ /* Grid System */
305
+ .grid {
306
+ display: grid;
307
+ gap: 16px;
308
+ }
309
+
310
+ .grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }
311
+ .grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
312
+ .grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
313
+ .grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
314
+
315
+ @media (min-width: 768px) {
316
+ .md\\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
317
+ }
318
+
319
+ @media (min-width: 1024px) {
320
+ .lg\\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
321
+ .lg\\:col-span-2 { grid-column: span 2 / span 2; }
322
+ .lg\\:col-span-1 { grid-column: span 1 / span 1; }
323
+ }
324
+
325
+ @media (min-width: 1280px) {
326
+ .xl\\:grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
327
+ }
328
+
329
+ /* Flex */
330
+ .flex {
331
+ display: flex;
332
+ }
333
+
334
+ .flex-wrap {
335
+ flex-wrap: wrap;
336
+ }
337
+
338
+ .items-center {
339
+ align-items: center;
340
+ }
341
+
342
+ .items-start {
343
+ align-items: flex-start;
344
+ }
345
+
346
+ .justify-between {
347
+ justify-content: space-between;
348
+ }
349
+
350
+ .gap-1 { gap: 0.25rem; } /* 4px */
351
+ .gap-2 { gap: 0.5rem; } /* 8px */
352
+ .gap-3 { gap: 0.75rem; } /* 12px */
353
+ .gap-4 { gap: 1rem; } /* 16px */
354
+ .gap-5 { gap: 1.25rem; } /* 20px */
355
+ .gap-6 { gap: 1.5rem; } /* 24px */
356
+ .gap-8 { gap: 2rem; } /* 32px */
357
+ .gap-10 { gap: 2.5rem; } /* 40px */
358
+ .gap-12 { gap: 3rem; } /* 48px */
359
+
360
+ /* ========================================
361
+ SPACING SYSTEM - Optimized Rhythm
362
+ ======================================== */
363
+
364
+ /* Margin - Bottom */
365
+ .mb-0 { margin-bottom: 0; }
366
+ .mb-1 { margin-bottom: 0.25rem; } /* 4px */
367
+ .mb-2 { margin-bottom: 0.5rem; } /* 8px */
368
+ .mb-3 { margin-bottom: 0.75rem; } /* 12px */
369
+ .mb-4 { margin-bottom: 1rem; } /* 16px */
370
+ .mb-5 { margin-bottom: 1.25rem; } /* 20px */
371
+ .mb-6 { margin-bottom: 1.5rem; } /* 24px */
372
+ .mb-8 { margin-bottom: 2rem; } /* 32px */
373
+ .mb-10 { margin-bottom: 2.5rem; } /* 40px */
374
+ .mb-12 { margin-bottom: 3rem; } /* 48px */
375
+ .mb-16 { margin-bottom: 4rem; } /* 64px */
376
+
377
+ /* Margin - Top */
378
+ .mt-0 { margin-top: 0; }
379
+ .mt-1 { margin-top: 0.25rem; } /* 4px */
380
+ .mt-2 { margin-top: 0.5rem; } /* 8px */
381
+ .mt-3 { margin-top: 0.75rem; } /* 12px */
382
+ .mt-4 { margin-top: 1rem; } /* 16px */
383
+ .mt-5 { margin-top: 1.25rem; } /* 20px */
384
+ .mt-6 { margin-top: 1.5rem; } /* 24px */
385
+ .mt-8 { margin-top: 2rem; } /* 32px */
386
+ .mt-10 { margin-top: 2.5rem; } /* 40px */
387
+ .mt-12 { margin-top: 3rem; } /* 48px */
388
+
389
+ /* Margin - Left/Right */
390
+ .ml-auto { margin-left: auto; }
391
+ .mr-auto { margin-right: auto; }
392
+ .mx-auto { margin-left: auto; margin-right: auto; }
393
+ .ml-2 { margin-left: 0.5rem; }
394
+ .ml-3 { margin-left: 0.75rem; }
395
+ .ml-4 { margin-left: 1rem; }
396
+ .mr-2 { margin-right: 0.5rem; }
397
+ .mr-3 { margin-right: 0.75rem; }
398
+ .mr-4 { margin-right: 1rem; }
399
+
400
+ /* Padding - All sides */
401
+ .p-0 { padding: 0; }
402
+ .p-1 { padding: 0.25rem; } /* 4px */
403
+ .p-2 { padding: 0.5rem; } /* 8px */
404
+ .p-3 { padding: 0.75rem; } /* 12px */
405
+ .p-4 { padding: 1rem; } /* 16px */
406
+ .p-5 { padding: 1.25rem; } /* 20px */
407
+ .p-6 { padding: 1.5rem; } /* 24px */
408
+ .p-8 { padding: 2rem; } /* 32px */
409
+ .p-10 { padding: 2.5rem; } /* 40px */
410
+ .p-12 { padding: 3rem; } /* 48px */
411
+
412
+ /* Padding - Horizontal (left + right) */
413
+ .px-0 { padding-left: 0; padding-right: 0; }
414
+ .px-1 { padding-left: 0.25rem; padding-right: 0.25rem; }
415
+ .px-2 { padding-left: 0.5rem; padding-right: 0.5rem; }
416
+ .px-3 { padding-left: 0.75rem; padding-right: 0.75rem; }
417
+ .px-4 { padding-left: 1rem; padding-right: 1rem; }
418
+ .px-5 { padding-left: 1.25rem; padding-right: 1.25rem; }
419
+ .px-6 { padding-left: 1.5rem; padding-right: 1.5rem; }
420
+ .px-8 { padding-left: 2rem; padding-right: 2rem; }
421
+
422
+ /* Padding - Vertical (top + bottom) */
423
+ .py-0 { padding-top: 0; padding-bottom: 0; }
424
+ .py-1 { padding-top: 0.25rem; padding-bottom: 0.25rem; }
425
+ .py-2 { padding-top: 0.5rem; padding-bottom: 0.5rem; }
426
+ .py-3 { padding-top: 0.75rem; padding-bottom: 0.75rem; }
427
+ .py-4 { padding-top: 1rem; padding-bottom: 1rem; }
428
+ .py-5 { padding-top: 1.25rem; padding-bottom: 1.25rem; }
429
+ .py-6 { padding-top: 1.5rem; padding-bottom: 1.5rem; }
430
+ .py-8 { padding-top: 2rem; padding-bottom: 2rem; }
431
+ .py-10 { padding-top: 2.5rem; padding-bottom: 2.5rem; }
432
+ .py-12 { padding-top: 3rem; padding-bottom: 3rem; }
433
+
434
+ /* ========================================
435
+ TEXT UTILITIES - Enhanced Typography
436
+ ======================================== */
437
+
438
+ /* Text Colors - Improved contrast */
439
+ .text-white {
440
+ color: #ffffff;
441
+ }
442
+
443
+ .text-gray-300 {
444
+ color: #d1d5db;
445
+ letter-spacing: -0.011em;
446
+ }
447
+
448
+ .text-gray-400 {
449
+ color: #c4c9d4;
450
+ letter-spacing: -0.01em;
451
+ }
452
+
453
+ .text-gray-500 {
454
+ color: #a3aab7;
455
+ letter-spacing: -0.008em;
456
+ }
457
+
458
+ /* Font Sizes - With optimized line heights and letter spacing */
459
+ .text-xs {
460
+ font-size: 0.75rem; /* 12px */
461
+ line-height: 1.5;
462
+ letter-spacing: -0.006em;
463
+ }
464
+
465
+ .text-sm {
466
+ font-size: 0.875rem; /* 14px */
467
+ line-height: 1.6;
468
+ letter-spacing: -0.009em;
469
+ }
470
+
471
+ .text-base {
472
+ font-size: 1rem; /* 16px */
473
+ line-height: 1.6;
474
+ letter-spacing: -0.011em;
475
+ }
476
+
477
+ .text-lg {
478
+ font-size: 1.125rem; /* 18px */
479
+ line-height: 1.55;
480
+ letter-spacing: -0.014em;
481
+ }
482
+
483
+ .text-xl {
484
+ font-size: 1.25rem; /* 20px */
485
+ line-height: 1.4;
486
+ letter-spacing: -0.017em;
487
+ }
488
+
489
+ .text-2xl {
490
+ font-size: 1.5rem; /* 24px */
491
+ line-height: 1.33;
492
+ letter-spacing: -0.021em;
493
+ }
494
+
495
+ .text-3xl {
496
+ font-size: 1.875rem; /* 30px */
497
+ line-height: 1.27;
498
+ letter-spacing: -0.026em;
499
+ }
500
+
501
+ .text-4xl {
502
+ font-size: 2.25rem; /* 36px */
503
+ line-height: 1.2;
504
+ letter-spacing: -0.031em;
505
+ }
506
+
507
+ /* Font Weights - Refined */
508
+ .font-normal { font-weight: 400; }
509
+ .font-medium {
510
+ font-weight: 500;
511
+ letter-spacing: -0.012em;
512
+ }
513
+ .font-semibold {
514
+ font-weight: 600;
515
+ letter-spacing: -0.015em;
516
+ }
517
+ .font-bold {
518
+ font-weight: 700;
519
+ letter-spacing: -0.02em;
520
+ }
521
+ .font-extrabold {
522
+ font-weight: 800;
523
+ letter-spacing: -0.025em;
524
+ }
525
+
526
+ /* Text Alignment */
527
+ .text-left { text-align: left; }
528
+ .text-center { text-align: center; }
529
+ .text-right { text-align: right; }
530
+
531
+ /* Text Truncation */
532
+ .truncate {
533
+ overflow: hidden;
534
+ text-overflow: ellipsis;
535
+ white-space: nowrap;
536
+ }
537
+
538
+ .line-clamp-1 {
539
+ overflow: hidden;
540
+ display: -webkit-box;
541
+ -webkit-line-clamp: 1;
542
+ -webkit-box-orient: vertical;
543
+ }
544
+
545
+ .line-clamp-2 {
546
+ overflow: hidden;
547
+ display: -webkit-box;
548
+ -webkit-line-clamp: 2;
549
+ -webkit-box-orient: vertical;
550
+ line-height: 1.6;
551
+ }
552
+
553
+ .line-clamp-3 {
554
+ overflow: hidden;
555
+ display: -webkit-box;
556
+ -webkit-line-clamp: 3;
557
+ -webkit-box-orient: vertical;
558
+ line-height: 1.6;
559
+ }
560
+
561
+ /* Line Height Utilities */
562
+ .leading-none { line-height: 1; }
563
+ .leading-tight { line-height: 1.25; }
564
+ .leading-snug { line-height: 1.375; }
565
+ .leading-normal { line-height: 1.6; }
566
+ .leading-relaxed { line-height: 1.75; }
567
+ .leading-loose { line-height: 2; }
568
+
569
+ /* Letter Spacing Utilities */
570
+ .tracking-tighter { letter-spacing: -0.05em; }
571
+ .tracking-tight { letter-spacing: -0.025em; }
572
+ .tracking-normal { letter-spacing: -0.011em; }
573
+ .tracking-wide { letter-spacing: 0.025em; }
574
+ .tracking-wider { letter-spacing: 0.05em; }
575
+
576
+ /* Colors - Enhanced Palette */
577
+ .text-claude-orange {
578
+ color: #ff8a3d;
579
+ text-shadow: 0 0 20px rgba(249, 115, 22, 0.3);
580
+ }
581
+ .text-blue-400 {
582
+ color: #60a5fa;
583
+ text-shadow: 0 0 10px rgba(96, 165, 250, 0.2);
584
+ }
585
+ .text-purple-400 {
586
+ color: #c084fc;
587
+ text-shadow: 0 0 10px rgba(192, 132, 252, 0.2);
588
+ }
589
+ .text-cyan-400 {
590
+ color: #22d3ee;
591
+ text-shadow: 0 0 10px rgba(34, 211, 238, 0.2);
592
+ }
593
+ .text-green-400 {
594
+ color: #4ade80;
595
+ text-shadow: 0 0 10px rgba(74, 222, 128, 0.2);
596
+ }
597
+ .text-red-400 {
598
+ color: #f87171;
599
+ text-shadow: 0 0 10px rgba(248, 113, 113, 0.2);
600
+ }
601
+ .text-yellow-400 {
602
+ color: #fbbf24;
603
+ text-shadow: 0 0 10px rgba(251, 191, 36, 0.2);
604
+ }
605
+ .bg-claude-orange {
606
+ background: linear-gradient(135deg, #f97316 0%, #fb923c 100%);
607
+ }
608
+ .bg-gray-700 {
609
+ background: linear-gradient(135deg, rgba(55, 65, 81, 0.9) 0%, rgba(31, 41, 55, 0.9) 100%);
610
+ }
611
+ .bg-gray-800 {
612
+ background: linear-gradient(135deg, rgba(31, 41, 55, 0.95) 0%, rgba(17, 24, 39, 0.95) 100%);
613
+ }
614
+ .border-gray-600 { border-color: rgba(75, 85, 99, 0.6); }
615
+ .border-gray-700 { border-color: rgba(55, 65, 81, 0.6); }
616
+ .border-yellow-500 { border-color: rgba(234, 179, 8, 0.6); }
617
+
618
+ /* Background utilities - Enhanced with gradients */
619
+ .bg-yellow-500\/10 {
620
+ background: linear-gradient(135deg, rgba(251, 191, 36, 0.12) 0%, rgba(234, 179, 8, 0.08) 100%);
621
+ }
622
+ .bg-blue-500\/10 {
623
+ background: linear-gradient(135deg, rgba(96, 165, 250, 0.12) 0%, rgba(59, 130, 246, 0.08) 100%);
624
+ }
625
+ .bg-purple-500\/10 {
626
+ background: linear-gradient(135deg, rgba(192, 132, 252, 0.12) 0%, rgba(168, 85, 247, 0.08) 100%);
627
+ }
628
+ .bg-cyan-500\/10 {
629
+ background: linear-gradient(135deg, rgba(34, 211, 238, 0.12) 0%, rgba(6, 182, 212, 0.08) 100%);
630
+ }
631
+ .bg-green-500\/10 {
632
+ background: linear-gradient(135deg, rgba(74, 222, 128, 0.12) 0%, rgba(34, 197, 94, 0.08) 100%);
633
+ }
634
+ .bg-red-500\/10 {
635
+ background: linear-gradient(135deg, rgba(248, 113, 113, 0.12) 0%, rgba(239, 68, 68, 0.08) 100%);
636
+ }
637
+ .bg-gray-700\/30 {
638
+ background: linear-gradient(135deg, rgba(55, 65, 81, 0.35) 0%, rgba(31, 41, 55, 0.25) 100%);
639
+ }
640
+ .bg-gray-700\/50 {
641
+ background: linear-gradient(135deg, rgba(55, 65, 81, 0.55) 0%, rgba(31, 41, 55, 0.45) 100%);
642
+ }
643
+ .bg-yellow-500\/20 {
644
+ background: linear-gradient(135deg, rgba(251, 191, 36, 0.22) 0%, rgba(234, 179, 8, 0.18) 100%);
645
+ }
646
+ .bg-orange-500\/20 {
647
+ background: linear-gradient(135deg, rgba(251, 146, 60, 0.22) 0%, rgba(249, 115, 22, 0.18) 100%);
648
+ }
649
+ .bg-gradient-to-br {
650
+ background-image: linear-gradient(to bottom right, var(--tw-gradient-stops));
651
+ }
652
+
653
+ /* Border */
654
+ .border { border-width: 1px; }
655
+ .border-l-4 { border-left-width: 4px; }
656
+ .border-l-claude-orange { border-left-color: #f97316; }
657
+ .border-yellow-500\/30 { border-color: rgba(234, 179, 8, 0.3); }
658
+ .border-yellow-500\/50 { border-color: rgba(234, 179, 8, 0.5); }
659
+ .border-gray-500 { border-color: #a3aab7; }
660
+ .rounded { border-radius: 4px; }
661
+ .rounded-lg { border-radius: 12px; }
662
+ .rounded-full { border-radius: 9999px; }
663
+
664
+ /* Width/Height */
665
+ .h-3 { height: 12px; }
666
+ .h-3\.5 { height: 14px; }
667
+ .h-4 { height: 16px; }
668
+ .h-5 { height: 20px; }
669
+ .h-6 { height: 24px; }
670
+ .h-16 { height: 64px; }
671
+ .w-3 { width: 12px; }
672
+ .w-3\.5 { width: 14px; }
673
+ .w-4 { width: 16px; }
674
+ .w-5 { width: 20px; }
675
+ .w-6 { width: 24px; }
676
+ .w-16 { width: 64px; }
677
+ .min-w-0 { min-width: 0; }
678
+ .flex-1 { flex: 1 1 0%; }
679
+ .max-h-96 { max-height: 384px; }
680
+
681
+ /* Display */
682
+ .inline-block { display: inline-block; }
683
+ .inline-flex { display: inline-flex; }
684
+ .hidden { display: none; }
685
+
686
+ /* Position */
687
+ .sticky { position: sticky; }
688
+ .top-0 { top: 0; }
689
+ .z-50 { z-index: 50; }
690
+
691
+ /* Overflow */
692
+ .overflow-hidden { overflow: hidden; }
693
+ .overflow-y-auto { overflow-y: auto; }
694
+
695
+ /* Misc */
696
+ .shadow-lg { box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); }
697
+ .backdrop-blur-sm { backdrop-filter: blur(4px); }
698
+ .transition-colors { transition-property: color, background-color, border-color; transition-duration: 150ms; }
699
+
700
+ /* Hover states */
701
+ .hover\\:bg-gray-600:hover { background-color: #4b5563; }
702
+ .hover\\:bg-gray-700:hover { background-color: #374151; }
703
+ .hover\\:bg-orange-600:hover { background-color: #ea580c; }
704
+ .hover\\:border-gray-500:hover { border-color: #a3aab7; }
705
+ .hover\\:text-white:hover { color: #ffffff; }
706
+
707
+ /* Space between - Enhanced vertical rhythm */
708
+ .space-y-1 > * + * { margin-top: 0.25rem; } /* 4px */
709
+ .space-y-2 > * + * { margin-top: 0.5rem; } /* 8px */
710
+ .space-y-3 > * + * { margin-top: 0.75rem; } /* 12px */
711
+ .space-y-4 > * + * { margin-top: 1rem; } /* 16px */
712
+ .space-y-5 > * + * { margin-top: 1.25rem; } /* 20px */
713
+ .space-y-6 > * + * { margin-top: 1.5rem; } /* 24px */
714
+ .space-y-8 > * + * { margin-top: 2rem; } /* 32px */
715
+ .space-y-10 > * + * { margin-top: 2.5rem; } /* 40px */
716
+ .space-y-12 > * + * { margin-top: 3rem; } /* 48px */
717
+
718
+ /* Space between - Horizontal */
719
+ .space-x-1 > * + * { margin-left: 0.25rem; }
720
+ .space-x-2 > * + * { margin-left: 0.5rem; }
721
+ .space-x-3 > * + * { margin-left: 0.75rem; }
722
+ .space-x-4 > * + * { margin-left: 1rem; }
723
+ .space-x-6 > * + * { margin-left: 1.5rem; }
724
+
725
+ /* Min height */
726
+ .min-h-screen { min-height: 100vh; }
727
+
728
+ /* Animations */
729
+ @keyframes pulse {
730
+ 0%, 100% {
731
+ opacity: 1;
732
+ }
733
+ 50% {
734
+ opacity: 0.5;
735
+ }
736
+ }
737
+
738
+ @keyframes fadeIn {
739
+ from {
740
+ opacity: 0;
741
+ transform: translateY(10px);
742
+ }
743
+ to {
744
+ opacity: 1;
745
+ transform: translateY(0);
746
+ }
747
+ }
748
+
749
+ .animate-pulse {
750
+ animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
751
+ }
752
+
753
+ .card {
754
+ animation: fadeIn 0.3s ease-out;
755
+ }
756
+
757
+ /* Gradient text */
758
+ .gradient-text {
759
+ background: linear-gradient(135deg, #ff8a3d 0%, #fb923c 50%, #f97316 100%);
760
+ background-size: 200% auto;
761
+ -webkit-background-clip: text;
762
+ -webkit-text-fill-color: transparent;
763
+ background-clip: text;
764
+ animation: gradient-flow 3s ease infinite;
765
+ filter: drop-shadow(0 0 8px rgba(249, 115, 22, 0.3));
766
+ }
767
+
768
+ @keyframes gradient-flow {
769
+ 0%, 100% { background-position: 0% center; }
770
+ 50% { background-position: 100% center; }
771
+ }
772
+
773
+ /* Glass effect */
774
+ .glass {
775
+ background: rgba(30, 41, 59, 0.6);
776
+ backdrop-filter: blur(20px) saturate(180%);
777
+ border: 1px solid rgba(255, 255, 255, 0.15);
778
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.1);
779
+ }
780
+
781
+ /* Hover glow effect */
782
+ .hover-glow {
783
+ transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
784
+ }
785
+
786
+ .hover-glow:hover {
787
+ box-shadow: 0 0 30px rgba(249, 115, 22, 0.4), 0 8px 24px rgba(249, 115, 22, 0.2);
788
+ transform: translateY(-4px) scale(1.02);
789
+ }
790
+
791
+ /* ========================================
792
+ ADDITIONAL VISUAL ENHANCEMENTS
793
+ ======================================== */
794
+
795
+ /* Enhanced Animations */
796
+ @keyframes slideInRight {
797
+ from {
798
+ opacity: 0;
799
+ transform: translateX(30px);
800
+ }
801
+ to {
802
+ opacity: 1;
803
+ transform: translateX(0);
804
+ }
805
+ }
806
+
807
+ @keyframes shimmer {
808
+ 0% {
809
+ background-position: -1000px 0;
810
+ }
811
+ 100% {
812
+ background-position: 1000px 0;
813
+ }
814
+ }
815
+
816
+ /* Accent borders and highlights */
817
+ .accent-border-top {
818
+ position: relative;
819
+ }
820
+
821
+ .accent-border-top::before {
822
+ content: '';
823
+ position: absolute;
824
+ top: 0;
825
+ left: 0;
826
+ right: 0;
827
+ height: 3px;
828
+ background: linear-gradient(90deg, transparent, #f97316, #fb923c, transparent);
829
+ border-radius: 16px 16px 0 0;
830
+ }
831
+
832
+ .accent-glow {
833
+ box-shadow: 0 0 40px rgba(249, 115, 22, 0.15), 0 8px 32px rgba(0, 0, 0, 0.3);
834
+ }
835
+
836
+ /* Icon containers with enhanced gradients */
837
+ .icon-container-orange {
838
+ background: linear-gradient(135deg, #f97316 0%, #fb923c 100%);
839
+ box-shadow: 0 4px 12px rgba(249, 115, 22, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.2);
840
+ transition: all 0.3s ease;
841
+ }
842
+
843
+ .icon-container-orange:hover {
844
+ transform: scale(1.05);
845
+ box-shadow: 0 6px 16px rgba(249, 115, 22, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.25);
846
+ }
847
+
848
+ .icon-container-blue {
849
+ background: linear-gradient(135deg, #3b82f6 0%, #60a5fa 100%);
850
+ box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.2);
851
+ transition: all 0.3s ease;
852
+ }
853
+
854
+ .icon-container-blue:hover {
855
+ transform: scale(1.05);
856
+ box-shadow: 0 6px 16px rgba(59, 130, 246, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.25);
857
+ }
858
+
859
+ .icon-container-purple {
860
+ background: linear-gradient(135deg, #a855f7 0%, #c084fc 100%);
861
+ box-shadow: 0 4px 12px rgba(168, 85, 247, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.2);
862
+ transition: all 0.3s ease;
863
+ }
864
+
865
+ .icon-container-purple:hover {
866
+ transform: scale(1.05);
867
+ box-shadow: 0 6px 16px rgba(168, 85, 247, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.25);
868
+ }
869
+
870
+ .icon-container-green {
871
+ background: linear-gradient(135deg, #22c55e 0%, #4ade80 100%);
872
+ box-shadow: 0 4px 12px rgba(34, 197, 94, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.2);
873
+ transition: all 0.3s ease;
874
+ }
875
+
876
+ .icon-container-green:hover {
877
+ transform: scale(1.05);
878
+ box-shadow: 0 6px 16px rgba(34, 197, 94, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.25);
879
+ }
880
+
881
+ .icon-container-cyan {
882
+ background: linear-gradient(135deg, #06b6d4 0%, #22d3ee 100%);
883
+ box-shadow: 0 4px 12px rgba(6, 182, 212, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.2);
884
+ transition: all 0.3s ease;
885
+ }
886
+
887
+ .icon-container-cyan:hover {
888
+ transform: scale(1.05);
889
+ box-shadow: 0 6px 16px rgba(6, 182, 212, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.25);
890
+ }
891
+
892
+ .icon-container-red {
893
+ background: linear-gradient(135deg, #ef4444 0%, #f87171 100%);
894
+ box-shadow: 0 4px 12px rgba(239, 68, 68, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.2);
895
+ transition: all 0.3s ease;
896
+ }
897
+
898
+ .icon-container-red:hover {
899
+ transform: scale(1.05);
900
+ box-shadow: 0 6px 16px rgba(239, 68, 68, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.25);
901
+ }
902
+
903
+ .icon-container-yellow {
904
+ background: linear-gradient(135deg, #eab308 0%, #fbbf24 100%);
905
+ box-shadow: 0 4px 12px rgba(234, 179, 8, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.2);
906
+ transition: all 0.3s ease;
907
+ }
908
+
909
+ .icon-container-yellow:hover {
910
+ transform: scale(1.05);
911
+ box-shadow: 0 6px 16px rgba(234, 179, 8, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.25);
912
+ }
913
+
914
+ /* Status indicators with glow effects */
915
+ .status-indicator {
916
+ display: inline-block;
917
+ width: 8px;
918
+ height: 8px;
919
+ border-radius: 50%;
920
+ box-shadow: 0 0 8px currentColor;
921
+ animation: pulse-indicator 2s ease-in-out infinite;
922
+ }
923
+
924
+ @keyframes pulse-indicator {
925
+ 0%, 100% {
926
+ opacity: 1;
927
+ box-shadow: 0 0 8px currentColor;
928
+ }
929
+ 50% {
930
+ opacity: 0.8;
931
+ box-shadow: 0 0 12px currentColor;
932
+ }
933
+ }
934
+
935
+ /* Enhanced focus states for accessibility - Modern Approach */
936
+ *:focus-visible {
937
+ outline: 3px solid #f97316;
938
+ outline-offset: 3px;
939
+ border-radius: 6px;
940
+ box-shadow: 0 0 0 4px rgba(249, 115, 22, 0.2);
941
+ transition: outline-offset 0.15s ease, box-shadow 0.15s ease;
942
+ }
943
+
944
+ /* Specific focus states for interactive elements */
945
+ button:focus-visible,
946
+ a:focus-visible,
947
+ input:focus-visible,
948
+ select:focus-visible,
949
+ textarea:focus-visible {
950
+ outline: 3px solid #f97316;
951
+ outline-offset: 2px;
952
+ box-shadow:
953
+ 0 0 0 4px rgba(249, 115, 22, 0.25),
954
+ 0 4px 12px rgba(249, 115, 22, 0.3);
955
+ }
956
+
957
+ /* Filter button focus enhancement */
958
+ .filter-button:focus-visible {
959
+ outline: 2px solid #fb923c;
960
+ outline-offset: 2px;
961
+ box-shadow: 0 0 0 4px rgba(251, 146, 60, 0.3);
962
+ }
963
+
964
+ /* Message card focus for keyboard navigation */
965
+ .message-card:focus-visible {
966
+ outline: 2px solid #f97316;
967
+ outline-offset: 3px;
968
+ box-shadow:
969
+ 0 0 0 5px rgba(249, 115, 22, 0.2),
970
+ 0 8px 24px rgba(0, 0, 0, 0.4);
971
+ transform: scale(1.01);
972
+ }
973
+
974
+ /* ========================================
975
+ TYPOGRAPHY READABILITY ENHANCEMENTS
976
+ ======================================== */
977
+
978
+ /* Improved text contrast and hierarchy */
979
+ .text-primary {
980
+ color: #ffffff;
981
+ font-weight: 600;
982
+ letter-spacing: -0.015em;
983
+ }
984
+
985
+ .text-secondary {
986
+ color: #d1d5db;
987
+ letter-spacing: -0.011em;
988
+ }
989
+
990
+ .text-muted {
991
+ color: #c4c9d4;
992
+ letter-spacing: -0.009em;
993
+ }
994
+
995
+ .text-subtle {
996
+ color: #a3aab7;
997
+ font-size: 0.875rem;
998
+ letter-spacing: -0.008em;
999
+ }
1000
+
1001
+ /* Label styles for forms and UI elements */
1002
+ .label {
1003
+ display: block;
1004
+ font-size: 0.875rem;
1005
+ font-weight: 500;
1006
+ color: #d1d5db;
1007
+ margin-bottom: 0.5rem;
1008
+ letter-spacing: -0.009em;
1009
+ line-height: 1.5;
1010
+ }
1011
+
1012
+ /* Caption styles for small descriptive text */
1013
+ .caption {
1014
+ font-size: 0.75rem;
1015
+ color: #c4c9d4;
1016
+ line-height: 1.5;
1017
+ letter-spacing: -0.006em;
1018
+ }
1019
+
1020
+ /* Improved heading hierarchy in cards */
1021
+ .card h2,
1022
+ .card h3,
1023
+ .card h4,
1024
+ .stat-card h2,
1025
+ .stat-card h3,
1026
+ .stat-card h4 {
1027
+ margin-bottom: 1rem;
1028
+ line-height: 1.3;
1029
+ }
1030
+
1031
+ .card h2,
1032
+ .stat-card h2 {
1033
+ font-size: 1.5rem;
1034
+ letter-spacing: -0.02em;
1035
+ font-weight: 700;
1036
+ }
1037
+
1038
+ .card h3,
1039
+ .stat-card h3 {
1040
+ font-size: 1.25rem;
1041
+ line-height: 1.4;
1042
+ letter-spacing: -0.017em;
1043
+ font-weight: 700;
1044
+ }
1045
+
1046
+ .card h4,
1047
+ .stat-card h4 {
1048
+ font-size: 1.125rem;
1049
+ line-height: 1.45;
1050
+ letter-spacing: -0.014em;
1051
+ font-weight: 600;
1052
+ }
1053
+
1054
+ .card h5,
1055
+ .stat-card h5 {
1056
+ font-size: 1rem;
1057
+ line-height: 1.5;
1058
+ letter-spacing: -0.011em;
1059
+ font-weight: 600;
1060
+ margin-bottom: 0.75rem;
1061
+ }
1062
+
1063
+ /* Section spacing for consistent vertical rhythm */
1064
+ .section-spacing {
1065
+ margin-bottom: 3rem;
1066
+ }
1067
+
1068
+ .section-spacing-sm {
1069
+ margin-bottom: 2rem;
1070
+ }
1071
+
1072
+ .section-spacing-lg {
1073
+ margin-bottom: 4rem;
1074
+ }
1075
+
1076
+ /* Container with optimal line length for readability */
1077
+ .content-container {
1078
+ max-width: 65ch; /* Optimal line length: 45-75 characters */
1079
+ margin-left: auto;
1080
+ margin-right: auto;
1081
+ }
1082
+
1083
+ /* Stat number styling for better visual hierarchy */
1084
+ .stat-number {
1085
+ font-size: 2.25rem;
1086
+ font-weight: 800;
1087
+ line-height: 1;
1088
+ letter-spacing: -0.035em;
1089
+ color: #ffffff;
1090
+ font-feature-settings: 'tnum' 1, 'zero' 1;
1091
+ font-variant-numeric: tabular-nums;
1092
+ }
1093
+
1094
+ .stat-label {
1095
+ font-size: 0.875rem;
1096
+ font-weight: 500;
1097
+ color: #c4c9d4;
1098
+ text-transform: uppercase;
1099
+ letter-spacing: 0.05em;
1100
+ line-height: 1.5;
1101
+ }
1102
+
1103
+ /* List styling with proper spacing */
1104
+ ul, ol {
1105
+ padding-left: 1.5rem;
1106
+ margin-bottom: 1rem;
1107
+ }
1108
+
1109
+ li {
1110
+ margin-bottom: 0.5rem;
1111
+ line-height: 1.6;
1112
+ }
1113
+
1114
+ /* Blockquote styling */
1115
+ blockquote {
1116
+ border-left: 4px solid #f97316;
1117
+ padding-left: 1.5rem;
1118
+ margin: 1.5rem 0;
1119
+ font-style: italic;
1120
+ color: #d1d5db;
1121
+ line-height: 1.7;
1122
+ }
1123
+
1124
+ /* Code block improvements */
1125
+ pre {
1126
+ background: rgba(15, 23, 42, 0.9);
1127
+ border-radius: 12px;
1128
+ padding: 1.5rem;
1129
+ overflow-x: auto;
1130
+ margin: 1.5rem 0;
1131
+ border: 1px solid rgba(55, 65, 81, 0.5);
1132
+ }
1133
+
1134
+ code {
1135
+ font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace;
1136
+ font-size: 0.875em;
1137
+ color: #e2e8f0;
1138
+ letter-spacing: 0;
1139
+ }
1140
+
1141
+ /* Inline code */
1142
+ :not(pre) > code {
1143
+ background: rgba(249, 115, 22, 0.1);
1144
+ padding: 0.125rem 0.375rem;
1145
+ border-radius: 0.25rem;
1146
+ border: 1px solid rgba(249, 115, 22, 0.2);
1147
+ font-size: 0.875em;
1148
+ }
1149
+
1150
+ /* Horizontal rule styling */
1151
+ hr {
1152
+ border: none;
1153
+ height: 1px;
1154
+ background: linear-gradient(90deg, transparent, rgba(249, 115, 22, 0.3), transparent);
1155
+ margin: 2rem 0;
1156
+ }
1157
+
1158
+ /* Text selection */
1159
+ ::selection {
1160
+ background: rgba(249, 115, 22, 0.3);
1161
+ color: #ffffff;
1162
+ }
1163
+
1164
+ ::-moz-selection {
1165
+ background: rgba(249, 115, 22, 0.3);
1166
+ color: #ffffff;
1167
+ }
1168
+
1169
+ /* Tab content animation - Enhanced */
1170
+ .animate-fadeIn {
1171
+ animation: fadeInSlide 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
1172
+ }
1173
+
1174
+ @keyframes fadeInSlide {
1175
+ from {
1176
+ opacity: 0;
1177
+ transform: translateY(20px) scale(0.98);
1178
+ filter: blur(4px);
1179
+ }
1180
+ to {
1181
+ opacity: 1;
1182
+ transform: translateY(0) scale(1);
1183
+ filter: blur(0);
1184
+ }
1185
+ }
1186
+
1187
+ /* Tab Panel Container */
1188
+ .tab-content {
1189
+ position: relative;
1190
+ min-height: 400px;
1191
+ }
1192
+
1193
+ /* Individual Tab Panel */
1194
+ .tab-panel {
1195
+ animation: fadeInSlide 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
1196
+ }
1197
+
1198
+ /* Enhanced Tab Navigation Buttons */
1199
+ nav[role="tablist"] button {
1200
+ position: relative;
1201
+ overflow: hidden;
1202
+ backdrop-filter: blur(8px);
1203
+ -webkit-backdrop-filter: blur(8px);
1204
+ }
1205
+
1206
+ nav[role="tablist"] button[aria-selected="true"] {
1207
+ box-shadow:
1208
+ 0 4px 16px rgba(249, 115, 22, 0.4),
1209
+ 0 2px 8px rgba(249, 115, 22, 0.3),
1210
+ inset 0 1px 0 rgba(255, 255, 255, 0.2);
1211
+ transform: translateY(-2px);
1212
+ }
1213
+
1214
+ nav[role="tablist"] button[aria-selected="false"]:hover {
1215
+ background: linear-gradient(135deg, rgba(55, 65, 81, 0.7) 0%, rgba(31, 41, 55, 0.7) 100%);
1216
+ border: 1px solid rgba(249, 115, 22, 0.2);
1217
+ transform: translateY(-1px);
1218
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
1219
+ }
1220
+
1221
+ nav[role="tablist"] button .lucide {
1222
+ transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
1223
+ }
1224
+
1225
+ nav[role="tablist"] button:hover .lucide {
1226
+ transform: scale(1.15);
1227
+ }
1228
+
1229
+ nav[role="tablist"] button[aria-selected="true"] .lucide {
1230
+ filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.3));
1231
+ }
1232
+
1233
+ /* Special highlight for Communication tab */
1234
+ #tab-communication[aria-selected="false"] {
1235
+ position: relative;
1236
+ }
1237
+
1238
+ #tab-communication[aria-selected="false"]::before {
1239
+ content: '';
1240
+ position: absolute;
1241
+ inset: 0;
1242
+ border-radius: inherit;
1243
+ background: linear-gradient(135deg, rgba(249, 115, 22, 0.05) 0%, rgba(251, 146, 60, 0.03) 100%);
1244
+ opacity: 1;
1245
+ transition: opacity 0.3s ease;
1246
+ }
1247
+
1248
+ #tab-communication[aria-selected="false"]:hover::before {
1249
+ opacity: 0;
1250
+ background: linear-gradient(135deg, rgba(249, 115, 22, 0.1) 0%, rgba(251, 146, 60, 0.08) 100%);
1251
+ }
1252
+
1253
+ /* ========================================
1254
+ NATURAL LANGUAGE MESSAGE ENHANCEMENTS
1255
+ Highlight agent communication with premium styling
1256
+ ======================================== */
1257
+
1258
+ /* Message Cards - Enhanced Glassmorphism */
1259
+ .message-card {
1260
+ position: relative;
1261
+ overflow: hidden;
1262
+ transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
1263
+ backdrop-filter: blur(20px) saturate(150%);
1264
+ -webkit-backdrop-filter: blur(20px) saturate(150%);
1265
+ }
1266
+
1267
+ .message-card::before {
1268
+ content: '';
1269
+ position: absolute;
1270
+ inset: 0;
1271
+ background: linear-gradient(
1272
+ 135deg,
1273
+ rgba(255, 255, 255, 0.03) 0%,
1274
+ transparent 50%,
1275
+ rgba(249, 115, 22, 0.02) 100%
1276
+ );
1277
+ pointer-events: none;
1278
+ opacity: 0;
1279
+ transition: opacity 0.3s ease;
1280
+ }
1281
+
1282
+ .message-card:hover::before {
1283
+ opacity: 1;
1284
+ }
1285
+
1286
+ /* Message Type Indicators with Enhanced Glow */
1287
+ .message-status {
1288
+ background: linear-gradient(135deg, rgba(96, 165, 250, 0.25) 0%, rgba(59, 130, 246, 0.15) 100%);
1289
+ border: 1px solid rgba(96, 165, 250, 0.4);
1290
+ box-shadow:
1291
+ 0 4px 12px rgba(59, 130, 246, 0.2),
1292
+ inset 0 1px 0 rgba(96, 165, 250, 0.2),
1293
+ 0 0 20px rgba(59, 130, 246, 0.1);
1294
+ }
1295
+
1296
+ .message-completion {
1297
+ background: linear-gradient(135deg, rgba(74, 222, 128, 0.25) 0%, rgba(34, 197, 94, 0.15) 100%);
1298
+ border: 1px solid rgba(74, 222, 128, 0.4);
1299
+ box-shadow:
1300
+ 0 4px 12px rgba(34, 197, 94, 0.25),
1301
+ inset 0 1px 0 rgba(74, 222, 128, 0.2),
1302
+ 0 0 20px rgba(34, 197, 94, 0.15);
1303
+ animation: successPulse 2s ease-in-out infinite;
1304
+ }
1305
+
1306
+ @keyframes successPulse {
1307
+ 0%, 100% {
1308
+ box-shadow:
1309
+ 0 4px 12px rgba(34, 197, 94, 0.25),
1310
+ inset 0 1px 0 rgba(74, 222, 128, 0.2),
1311
+ 0 0 20px rgba(34, 197, 94, 0.15);
1312
+ }
1313
+ 50% {
1314
+ box-shadow:
1315
+ 0 4px 16px rgba(34, 197, 94, 0.35),
1316
+ inset 0 1px 0 rgba(74, 222, 128, 0.3),
1317
+ 0 0 30px rgba(34, 197, 94, 0.25);
1318
+ }
1319
+ }
1320
+
1321
+ .message-coordination {
1322
+ background: linear-gradient(135deg, rgba(192, 132, 252, 0.25) 0%, rgba(168, 85, 247, 0.15) 100%);
1323
+ border: 1px solid rgba(192, 132, 252, 0.4);
1324
+ box-shadow:
1325
+ 0 4px 12px rgba(168, 85, 247, 0.2),
1326
+ inset 0 1px 0 rgba(192, 132, 252, 0.2),
1327
+ 0 0 20px rgba(168, 85, 247, 0.1);
1328
+ }
1329
+
1330
+ .message-question {
1331
+ background: linear-gradient(135deg, rgba(251, 191, 36, 0.25) 0%, rgba(234, 179, 8, 0.15) 100%);
1332
+ border: 1px solid rgba(251, 191, 36, 0.4);
1333
+ box-shadow:
1334
+ 0 4px 12px rgba(234, 179, 8, 0.2),
1335
+ inset 0 1px 0 rgba(251, 191, 36, 0.2),
1336
+ 0 0 20px rgba(234, 179, 8, 0.1);
1337
+ }
1338
+
1339
+ /* Message Text Enhancement */
1340
+ .message-text {
1341
+ font-size: 0.9375rem; /* 15px - slightly larger for better readability */
1342
+ line-height: 1.65;
1343
+ letter-spacing: -0.011em;
1344
+ color: #f3f4f6;
1345
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
1346
+ }
1347
+
1348
+ /* Message Icon Glow */
1349
+ .message-icon {
1350
+ filter: drop-shadow(0 2px 4px currentColor);
1351
+ transition: transform 0.3s ease;
1352
+ }
1353
+
1354
+ .message-card:hover .message-icon {
1355
+ transform: scale(1.15) rotate(5deg);
1356
+ }
1357
+
1358
+ /* Emoji Enhancement */
1359
+ .message-emoji {
1360
+ font-size: 1.5rem;
1361
+ line-height: 1;
1362
+ display: inline-block;
1363
+ filter: drop-shadow(0 2px 6px rgba(0, 0, 0, 0.3));
1364
+ transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
1365
+ }
1366
+
1367
+ .message-card:hover .message-emoji {
1368
+ transform: scale(1.1) rotate(-5deg);
1369
+ }
1370
+
1371
+ /* Agent Name Badge in Messages */
1372
+ .agent-badge {
1373
+ display: inline-flex;
1374
+ align-items: center;
1375
+ gap: 0.375rem;
1376
+ padding: 0.25rem 0.75rem;
1377
+ border-radius: 6px;
1378
+ font-size: 0.8125rem;
1379
+ font-weight: 600;
1380
+ letter-spacing: 0.01em;
1381
+ background: linear-gradient(135deg, rgba(249, 115, 22, 0.2) 0%, rgba(251, 146, 60, 0.15) 100%);
1382
+ border: 1px solid rgba(249, 115, 22, 0.3);
1383
+ box-shadow:
1384
+ 0 2px 6px rgba(249, 115, 22, 0.2),
1385
+ inset 0 0.5px 0 rgba(255, 255, 255, 0.1);
1386
+ transition: all 0.2s ease;
1387
+ }
1388
+
1389
+ .agent-badge:hover {
1390
+ transform: scale(1.05);
1391
+ box-shadow:
1392
+ 0 3px 8px rgba(249, 115, 22, 0.3),
1393
+ inset 0 0.5px 0 rgba(255, 255, 255, 0.15);
1394
+ }
1395
+
1396
+ /* Message Timestamp Enhancement */
1397
+ .message-timestamp {
1398
+ font-size: 0.75rem;
1399
+ color: #9ca3af;
1400
+ font-feature-settings: 'tnum' 1;
1401
+ letter-spacing: 0.01em;
1402
+ transition: color 0.2s ease;
1403
+ }
1404
+
1405
+ .message-card:hover .message-timestamp {
1406
+ color: #d1d5db;
1407
+ }
1408
+
1409
+ /* Unread Indicator with Pulse */
1410
+ .unread-badge {
1411
+ position: relative;
1412
+ padding: 0.25rem 0.625rem;
1413
+ background: linear-gradient(135deg, rgba(59, 130, 246, 0.25) 0%, rgba(37, 99, 235, 0.2) 100%);
1414
+ border: 1px solid rgba(59, 130, 246, 0.4);
1415
+ border-radius: 6px;
1416
+ font-size: 0.6875rem;
1417
+ font-weight: 600;
1418
+ text-transform: uppercase;
1419
+ letter-spacing: 0.05em;
1420
+ box-shadow: 0 2px 6px rgba(59, 130, 246, 0.3);
1421
+ animation: unreadPulse 2s ease-in-out infinite;
1422
+ }
1423
+
1424
+ @keyframes unreadPulse {
1425
+ 0%, 100% {
1426
+ box-shadow: 0 2px 6px rgba(59, 130, 246, 0.3);
1427
+ transform: scale(1);
1428
+ }
1429
+ 50% {
1430
+ box-shadow: 0 2px 10px rgba(59, 130, 246, 0.5), 0 0 20px rgba(59, 130, 246, 0.2);
1431
+ transform: scale(1.05);
1432
+ }
1433
+ }
1434
+
1435
+ /* Message Arrow Enhancement */
1436
+ .message-arrow {
1437
+ color: #6b7280;
1438
+ transition: all 0.3s ease;
1439
+ }
1440
+
1441
+ .message-card:hover .message-arrow {
1442
+ color: #ff8a3d;
1443
+ transform: translateX(3px);
1444
+ }
1445
+
1446
+ /* Enhanced Filter Buttons */
1447
+ .filter-button {
1448
+ position: relative;
1449
+ padding: 0.5rem 1rem;
1450
+ border-radius: 12px;
1451
+ font-size: 0.8125rem;
1452
+ font-weight: 600;
1453
+ letter-spacing: 0.01em;
1454
+ transition: all 0.25s cubic-bezier(0.34, 1.56, 0.64, 1);
1455
+ backdrop-filter: blur(8px);
1456
+ -webkit-backdrop-filter: blur(8px);
1457
+ text-transform: capitalize;
1458
+ border: 1px solid transparent;
1459
+ }
1460
+
1461
+ .filter-button-active {
1462
+ background: linear-gradient(135deg, #f97316 0%, #fb923c 100%);
1463
+ color: #ffffff;
1464
+ box-shadow:
1465
+ 0 4px 12px rgba(249, 115, 22, 0.4),
1466
+ inset 0 1px 0 rgba(255, 255, 255, 0.2);
1467
+ border-color: rgba(251, 146, 60, 0.5);
1468
+ transform: translateY(-2px);
1469
+ }
1470
+
1471
+ .filter-button-inactive {
1472
+ background: linear-gradient(135deg, rgba(55, 65, 81, 0.6) 0%, rgba(31, 41, 55, 0.6) 100%);
1473
+ color: #d1d5db;
1474
+ border-color: rgba(75, 85, 99, 0.4);
1475
+ }
1476
+
1477
+ .filter-button-inactive:hover {
1478
+ background: linear-gradient(135deg, rgba(55, 65, 81, 0.8) 0%, rgba(31, 41, 55, 0.8) 100%);
1479
+ border-color: rgba(249, 115, 22, 0.3);
1480
+ transform: translateY(-1px);
1481
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
1482
+ }
1483
+
1484
+ /* Live Stats Enhancement */
1485
+ .live-stats-indicator {
1486
+ display: inline-flex;
1487
+ align-items: center;
1488
+ gap: 0.375rem;
1489
+ padding: 0.375rem 0.75rem;
1490
+ border-radius: 8px;
1491
+ font-size: 0.75rem;
1492
+ font-weight: 600;
1493
+ background: linear-gradient(135deg, rgba(34, 197, 94, 0.15) 0%, rgba(22, 163, 74, 0.1) 100%);
1494
+ border: 1px solid rgba(34, 197, 94, 0.3);
1495
+ color: #4ade80;
1496
+ box-shadow: 0 2px 8px rgba(34, 197, 94, 0.2), inset 0 0.5px 0 rgba(34, 197, 94, 0.2);
1497
+ }
1498
+
1499
+ /* ========================================
1500
+ ENHANCED LOADING & SKELETON STATES
1501
+ ======================================== */
1502
+
1503
+ /* Shimmer Effect for Loading Cards */
1504
+ .skeleton-shimmer {
1505
+ position: relative;
1506
+ overflow: hidden;
1507
+ background: linear-gradient(
1508
+ 90deg,
1509
+ rgba(55, 65, 81, 0.3) 0%,
1510
+ rgba(75, 85, 99, 0.5) 50%,
1511
+ rgba(55, 65, 81, 0.3) 100%
1512
+ );
1513
+ background-size: 200% 100%;
1514
+ animation: shimmerAnimation 1.8s ease-in-out infinite;
1515
+ border-radius: 8px;
1516
+ }
1517
+
1518
+ @keyframes shimmerAnimation {
1519
+ 0% {
1520
+ background-position: -200% 0;
1521
+ }
1522
+ 100% {
1523
+ background-position: 200% 0;
1524
+ }
1525
+ }
1526
+
1527
+ /* Skeleton Text Lines */
1528
+ .skeleton-text {
1529
+ height: 1rem;
1530
+ margin-bottom: 0.5rem;
1531
+ border-radius: 6px;
1532
+ }
1533
+
1534
+ .skeleton-text-sm {
1535
+ height: 0.875rem;
1536
+ margin-bottom: 0.375rem;
1537
+ border-radius: 4px;
1538
+ }
1539
+
1540
+ .skeleton-text-lg {
1541
+ height: 1.25rem;
1542
+ margin-bottom: 0.625rem;
1543
+ border-radius: 8px;
1544
+ }
1545
+
1546
+ /* Skeleton Message Card */
1547
+ .skeleton-message {
1548
+ padding: 1rem;
1549
+ border-radius: 16px;
1550
+ background: linear-gradient(135deg, rgba(30, 41, 59, 0.6) 0%, rgba(15, 23, 42, 0.5) 100%);
1551
+ border: 1px solid rgba(75, 85, 99, 0.3);
1552
+ backdrop-filter: blur(16px);
1553
+ -webkit-backdrop-filter: blur(16px);
1554
+ }
1555
+
1556
+ /* Loading Dots Animation */
1557
+ .loading-dots-bounce {
1558
+ display: inline-flex;
1559
+ gap: 0.375rem;
1560
+ align-items: center;
1561
+ }
1562
+
1563
+ .loading-dots-bounce span {
1564
+ display: inline-block;
1565
+ width: 8px;
1566
+ height: 8px;
1567
+ border-radius: 50%;
1568
+ background: currentColor;
1569
+ animation: bounceDot 1.4s ease-in-out infinite;
1570
+ }
1571
+
1572
+ .loading-dots-bounce span:nth-child(1) { animation-delay: 0s; }
1573
+ .loading-dots-bounce span:nth-child(2) { animation-delay: 0.2s; }
1574
+ .loading-dots-bounce span:nth-child(3) { animation-delay: 0.4s; }
1575
+
1576
+ @keyframes bounceDot {
1577
+ 0%, 80%, 100% {
1578
+ transform: scale(0.8);
1579
+ opacity: 0.5;
1580
+ }
1581
+ 40% {
1582
+ transform: scale(1.2);
1583
+ opacity: 1;
1584
+ }
1585
+ }
1586
+
1587
+ /* Spinner with Gradient */
1588
+ .spinner-gradient {
1589
+ width: 48px;
1590
+ height: 48px;
1591
+ border-radius: 50%;
1592
+ background: conic-gradient(
1593
+ from 0deg,
1594
+ transparent 0deg,
1595
+ #f97316 90deg,
1596
+ #fb923c 180deg,
1597
+ transparent 270deg
1598
+ );
1599
+ animation: spinGradient 1.2s linear infinite;
1600
+ position: relative;
1601
+ }
1602
+
1603
+ .spinner-gradient::before {
1604
+ content: '';
1605
+ position: absolute;
1606
+ inset: 4px;
1607
+ border-radius: 50%;
1608
+ background: linear-gradient(135deg, #0f1729 0%, #1e2538 100%);
1609
+ }
1610
+
1611
+ @keyframes spinGradient {
1612
+ to {
1613
+ transform: rotate(360deg);
1614
+ }
1615
+ }
1616
+
1617
+ /* Progress Bar with Glow */
1618
+ .progress-bar-glow {
1619
+ position: relative;
1620
+ height: 6px;
1621
+ background: rgba(55, 65, 81, 0.5);
1622
+ border-radius: 9999px;
1623
+ overflow: hidden;
1624
+ }
1625
+
1626
+ .progress-fill-glow {
1627
+ height: 100%;
1628
+ background: linear-gradient(90deg, #f97316 0%, #fb923c 50%, #f97316 100%);
1629
+ background-size: 200% 100%;
1630
+ border-radius: inherit;
1631
+ box-shadow: 0 0 12px rgba(249, 115, 22, 0.6);
1632
+ animation: progressGlow 2s ease-in-out infinite;
1633
+ transition: width 0.6s cubic-bezier(0.34, 1.56, 0.64, 1);
1634
+ }
1635
+
1636
+ @keyframes progressGlow {
1637
+ 0%, 100% {
1638
+ background-position: 0% center;
1639
+ box-shadow: 0 0 12px rgba(249, 115, 22, 0.6);
1640
+ }
1641
+ 50% {
1642
+ background-position: 100% center;
1643
+ box-shadow: 0 0 20px rgba(249, 115, 22, 0.8), 0 0 40px rgba(249, 115, 22, 0.4);
1644
+ }
1645
+ }
1646
+
1647
+ /* ========================================
1648
+ SCROLLBAR ENHANCEMENTS
1649
+ Modern, Minimal Scrollbars
1650
+ ======================================== */
1651
+
1652
+ /* Custom Scrollbar for Webkit Browsers (Chrome, Safari, Edge) */
1653
+ ::-webkit-scrollbar {
1654
+ width: 10px;
1655
+ height: 10px;
1656
+ }
1657
+
1658
+ ::-webkit-scrollbar-track {
1659
+ background: rgba(15, 23, 42, 0.5);
1660
+ border-radius: 10px;
1661
+ margin: 4px;
1662
+ }
1663
+
1664
+ ::-webkit-scrollbar-thumb {
1665
+ background: linear-gradient(135deg, rgba(249, 115, 22, 0.6) 0%, rgba(251, 146, 60, 0.5) 100%);
1666
+ border-radius: 10px;
1667
+ border: 2px solid rgba(15, 23, 42, 0.3);
1668
+ box-shadow: 0 2px 8px rgba(249, 115, 22, 0.3);
1669
+ transition: all 0.3s ease;
1670
+ }
1671
+
1672
+ ::-webkit-scrollbar-thumb:hover {
1673
+ background: linear-gradient(135deg, rgba(249, 115, 22, 0.8) 0%, rgba(251, 146, 60, 0.7) 100%);
1674
+ box-shadow: 0 4px 12px rgba(249, 115, 22, 0.5);
1675
+ }
1676
+
1677
+ ::-webkit-scrollbar-thumb:active {
1678
+ background: linear-gradient(135deg, #f97316 0%, #fb923c 100%);
1679
+ }
1680
+
1681
+ /* Firefox Scrollbar Styling */
1682
+ * {
1683
+ scrollbar-width: thin;
1684
+ scrollbar-color: rgba(249, 115, 22, 0.6) rgba(15, 23, 42, 0.5);
1685
+ }
1686
+
1687
+ /* ========================================
1688
+ VISUAL HIERARCHY ENHANCEMENTS
1689
+ Depth & Layering
1690
+ ======================================== */
1691
+
1692
+ /* Section Divider with Glow */
1693
+ .section-divider {
1694
+ position: relative;
1695
+ height: 1px;
1696
+ background: linear-gradient(90deg, transparent, rgba(249, 115, 22, 0.3), transparent);
1697
+ margin: 2rem 0;
1698
+ }
1699
+
1700
+ .section-divider::before {
1701
+ content: '';
1702
+ position: absolute;
1703
+ inset: -2px 0;
1704
+ background: linear-gradient(90deg, transparent, rgba(249, 115, 22, 0.1), transparent);
1705
+ filter: blur(4px);
1706
+ }
1707
+
1708
+ /* Elevated Surface */
1709
+ .surface-elevated {
1710
+ background: linear-gradient(135deg, rgba(30, 41, 59, 0.95) 0%, rgba(15, 23, 42, 0.9) 100%);
1711
+ box-shadow:
1712
+ 0 4px 16px rgba(0, 0, 0, 0.3),
1713
+ inset 0 1px 0 rgba(255, 255, 255, 0.05);
1714
+ border: 1px solid rgba(255, 255, 255, 0.06);
1715
+ backdrop-filter: blur(16px);
1716
+ -webkit-backdrop-filter: blur(16px);
1717
+ }
1718
+
1719
+ /* Floating Action Button Style */
1720
+ .fab {
1721
+ position: fixed;
1722
+ bottom: 2rem;
1723
+ right: 2rem;
1724
+ width: 56px;
1725
+ height: 56px;
1726
+ border-radius: 50%;
1727
+ background: linear-gradient(135deg, #f97316 0%, #fb923c 100%);
1728
+ box-shadow:
1729
+ 0 8px 24px rgba(249, 115, 22, 0.4),
1730
+ 0 4px 12px rgba(0, 0, 0, 0.3),
1731
+ inset 0 2px 0 rgba(255, 255, 255, 0.2);
1732
+ display: flex;
1733
+ align-items: center;
1734
+ justify-content: center;
1735
+ transition: all 0.35s cubic-bezier(0.34, 1.56, 0.64, 1);
1736
+ z-index: 1000;
1737
+ cursor: pointer;
1738
+ border: none;
1739
+ color: white;
1740
+ }
1741
+
1742
+ .fab:hover {
1743
+ transform: scale(1.1) translateY(-4px);
1744
+ box-shadow:
1745
+ 0 12px 32px rgba(249, 115, 22, 0.6),
1746
+ 0 6px 16px rgba(0, 0, 0, 0.4),
1747
+ inset 0 2px 0 rgba(255, 255, 255, 0.3);
1748
+ }
1749
+
1750
+ .fab:active {
1751
+ transform: scale(1) translateY(-2px);
1752
+ }
1753
+
1754
+ /* Tooltip with Arrow */
1755
+ .tooltip {
1756
+ position: absolute;
1757
+ padding: 0.5rem 0.875rem;
1758
+ background: rgba(17, 24, 39, 0.95);
1759
+ color: #f3f4f6;
1760
+ font-size: 0.8125rem;
1761
+ font-weight: 500;
1762
+ border-radius: 8px;
1763
+ box-shadow:
1764
+ 0 4px 12px rgba(0, 0, 0, 0.4),
1765
+ 0 0 0 1px rgba(249, 115, 22, 0.3);
1766
+ pointer-events: none;
1767
+ white-space: nowrap;
1768
+ z-index: 10000;
1769
+ backdrop-filter: blur(12px);
1770
+ -webkit-backdrop-filter: blur(12px);
1771
+ }
1772
+
1773
+ .tooltip::before {
1774
+ content: '';
1775
+ position: absolute;
1776
+ bottom: -4px;
1777
+ left: 50%;
1778
+ transform: translateX(-50%);
1779
+ width: 8px;
1780
+ height: 8px;
1781
+ background: inherit;
1782
+ transform: translateX(-50%) rotate(45deg);
1783
+ box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.2);
1784
+ }
1785
+
1786
+ /* Notification Badge */
1787
+ .notification-badge {
1788
+ position: absolute;
1789
+ top: -6px;
1790
+ right: -6px;
1791
+ min-width: 20px;
1792
+ height: 20px;
1793
+ display: flex;
1794
+ align-items: center;
1795
+ justify-content: center;
1796
+ padding: 0 6px;
1797
+ background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);
1798
+ color: white;
1799
+ font-size: 0.6875rem;
1800
+ font-weight: 700;
1801
+ border-radius: 10px;
1802
+ box-shadow:
1803
+ 0 2px 8px rgba(239, 68, 68, 0.5),
1804
+ 0 0 0 2px rgba(15, 23, 42, 1);
1805
+ animation: badgePulse 2s ease-in-out infinite;
1806
+ }
1807
+
1808
+ @keyframes badgePulse {
1809
+ 0%, 100% {
1810
+ transform: scale(1);
1811
+ }
1812
+ 50% {
1813
+ transform: scale(1.1);
1814
+ box-shadow:
1815
+ 0 3px 12px rgba(239, 68, 68, 0.6),
1816
+ 0 0 0 2px rgba(15, 23, 42, 1);
1817
+ }
1818
+ }