Harshasnade commited on
Commit
062a0fb
Β·
1 Parent(s): 2a066ca

Update frontend to fully responsive Claymorphism UI

Browse files
Files changed (2) hide show
  1. frontend/index.html +1 -1
  2. frontend/style.css +675 -479
frontend/index.html CHANGED
@@ -7,7 +7,7 @@
7
  <title>LeadFlow β€” Lead Generation Dashboard</title>
8
  <link rel="preconnect" href="https://fonts.googleapis.com">
9
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
10
- <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap" rel="stylesheet">
11
  <link rel="stylesheet" href="style.css">
12
  <link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>πŸš€</text></svg>">
13
  </head>
 
7
  <title>LeadFlow β€” Lead Generation Dashboard</title>
8
  <link rel="preconnect" href="https://fonts.googleapis.com">
9
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
10
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=Poppins:wght@300;400;500;600;700;800;900&display=swap" rel="stylesheet">
11
  <link rel="stylesheet" href="style.css">
12
  <link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>πŸš€</text></svg>">
13
  </head>
frontend/style.css CHANGED
@@ -1,78 +1,112 @@
1
  /* ═══════════════════════════════════════════════════════════
2
- LeadFlow Dashboard β€” Ultra-Premium Dark Theme v3
3
- Complete UI/UX Overhaul with Sidebar, Drawer, Funnel
4
  ═══════════════════════════════════════════════════════════ */
5
 
6
  /* ──────────── CSS Variables / Design Tokens ──────────── */
7
  :root {
8
- --bg-primary: #050810;
9
- --bg-secondary: #0c1019;
10
- --bg-tertiary: #141a26;
11
- --bg-card: rgba(12, 16, 25, 0.85);
12
- --bg-glass: rgba(255, 255, 255, 0.025);
13
- --bg-glass-hover: rgba(255, 255, 255, 0.05);
14
- --bg-glass-active: rgba(255, 255, 255, 0.07);
15
- --bg-input: rgba(255, 255, 255, 0.04);
16
- --bg-input-focus: rgba(255, 255, 255, 0.07);
17
- --bg-sidebar: rgba(8, 11, 18, 0.95);
18
-
19
- --border-subtle: rgba(255, 255, 255, 0.05);
20
- --border-medium: rgba(255, 255, 255, 0.1);
21
- --border-focus: rgba(99, 102, 241, 0.5);
22
-
23
- --text-primary: #f0f6fc;
24
- --text-secondary: #8b949e;
25
- --text-muted: #484f58;
26
- --text-link: #58a6ff;
27
-
28
- --accent-primary: #6366f1;
29
- --accent-secondary: #8b5cf6;
30
- --accent-tertiary: #a78bfa;
31
- --accent-glow: rgba(99, 102, 241, 0.15);
32
- --accent-gradient: linear-gradient(135deg, #6366f1, #8b5cf6, #a78bfa);
33
-
34
- --status-new: #22d3ee;
35
- --status-new-bg: rgba(34, 211, 238, 0.08);
36
- --status-new-glow: rgba(34, 211, 238, 0.25);
37
- --status-contacted: #818cf8;
38
- --status-contacted-bg: rgba(129, 140, 248, 0.08);
39
- --status-contacted-glow: rgba(129, 140, 248, 0.25);
40
- --status-replied: #fbbf24;
41
- --status-replied-bg: rgba(251, 191, 36, 0.08);
42
- --status-replied-glow: rgba(251, 191, 36, 0.25);
43
- --status-closed: #34d399;
44
- --status-closed-bg: rgba(52, 211, 153, 0.08);
45
- --status-closed-glow: rgba(52, 211, 153, 0.25);
46
-
47
- --success: #34d399;
48
- --success-bg: rgba(52, 211, 153, 0.08);
49
- --danger: #f87171;
50
- --danger-bg: rgba(248, 113, 113, 0.08);
51
- --warning: #fbbf24;
52
- --whatsapp: #25D366;
53
- --whatsapp-bg: rgba(37, 211, 102, 0.08);
54
- --whatsapp-glow: rgba(37, 211, 102, 0.25);
55
-
56
- --radius-xs: 6px;
57
- --radius-sm: 8px;
58
- --radius-md: 12px;
59
- --radius-lg: 16px;
60
- --radius-xl: 20px;
61
- --radius-2xl: 24px;
 
 
 
 
 
 
 
62
  --radius-full: 9999px;
63
 
64
- --shadow-sm: 0 1px 3px rgba(0,0,0,0.3);
65
- --shadow-md: 0 4px 16px rgba(0,0,0,0.35);
66
- --shadow-lg: 0 8px 32px rgba(0,0,0,0.4);
67
- --shadow-xl: 0 16px 48px rgba(0,0,0,0.5);
68
- --shadow-glow: 0 0 40px var(--accent-glow);
69
- --shadow-inset: inset 0 1px 0 rgba(255,255,255,0.03);
70
-
71
- --transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1);
72
- --transition-base: 250ms cubic-bezier(0.4, 0, 0.2, 1);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  --transition-slow: 400ms cubic-bezier(0.4, 0, 0.2, 1);
74
  --transition-spring: 500ms cubic-bezier(0.34, 1.56, 0.64, 1);
75
 
 
76
  --sidebar-width: 240px;
77
  --sidebar-collapsed-width: 64px;
78
  --top-bar-height: 56px;
@@ -91,48 +125,46 @@ html {
91
  }
92
 
93
  body {
94
- font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
95
  background: var(--bg-primary);
96
  color: var(--text-primary);
97
  min-height: 100vh;
98
- overflow-x: hidden;
99
  line-height: 1.6;
100
  -webkit-font-smoothing: antialiased;
101
  -moz-osx-font-smoothing: grayscale;
102
  }
103
 
104
- /* Animated background mesh */
105
  body::before {
106
  content: '';
107
  position: fixed;
108
  top: 0; left: 0; right: 0; bottom: 0;
109
  background:
110
- radial-gradient(ellipse 70% 50% at 10% -10%, rgba(99, 102, 241, 0.1), transparent),
111
- radial-gradient(ellipse 50% 40% at 90% 105%, rgba(139, 92, 246, 0.06), transparent),
112
- radial-gradient(ellipse 40% 30% at 50% 50%, rgba(34, 211, 238, 0.03), transparent);
113
  pointer-events: none;
114
  z-index: 0;
115
  }
116
 
117
- /* Noise texture */
118
  body::after {
119
- content: '';
120
- position: fixed;
121
- top: 0; left: 0; right: 0; bottom: 0;
122
- background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.02'/%3E%3C/svg%3E");
123
- pointer-events: none;
124
- z-index: 0;
125
- opacity: 0.4;
126
  }
127
 
128
  /* ──────────── Scrollbar ──────────── */
129
- ::-webkit-scrollbar { width: 5px; height: 5px; }
130
- ::-webkit-scrollbar-track { background: transparent; }
131
- ::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.08); border-radius: 4px; }
132
- ::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,0.15); }
 
 
 
 
133
 
134
  /* ══════════════════════════════════════════════
135
- SIDEBAR
136
  ══════════════════════════════════════════════ */
137
 
138
  .sidebar {
@@ -142,9 +174,11 @@ body::after {
142
  width: var(--sidebar-width);
143
  height: 100vh;
144
  background: var(--bg-sidebar);
145
- border-right: 1px solid var(--border-subtle);
146
- backdrop-filter: blur(24px);
147
- -webkit-backdrop-filter: blur(24px);
 
 
148
  z-index: 100;
149
  display: flex;
150
  flex-direction: column;
@@ -171,7 +205,7 @@ body::after {
171
  align-items: center;
172
  justify-content: space-between;
173
  padding: 18px 16px;
174
- border-bottom: 1px solid var(--border-subtle);
175
  min-height: 60px;
176
  }
177
 
@@ -183,8 +217,8 @@ body::after {
183
  }
184
 
185
  .sidebar-logo-icon {
186
- width: 36px;
187
- height: 36px;
188
  background: var(--accent-gradient);
189
  border-radius: var(--radius-sm);
190
  display: flex;
@@ -192,7 +226,7 @@ body::after {
192
  justify-content: center;
193
  font-size: 18px;
194
  flex-shrink: 0;
195
- box-shadow: 0 4px 16px var(--accent-glow);
196
  position: relative;
197
  }
198
 
@@ -201,46 +235,50 @@ body::after {
201
  position: absolute;
202
  inset: -4px;
203
  border-radius: var(--radius-md);
204
- border: 1.5px solid var(--accent-primary);
205
  opacity: 0;
206
  animation: logoPulse 4s ease-in-out infinite;
207
  }
208
 
209
  .sidebar-logo-text {
210
- font-size: 1.15rem;
211
  font-weight: 800;
212
  letter-spacing: -0.3px;
213
- background: linear-gradient(135deg, #fff 0%, var(--accent-tertiary) 100%);
214
- -webkit-background-clip: text;
215
- -webkit-text-fill-color: transparent;
216
- background-clip: text;
217
  white-space: nowrap;
218
  transition: opacity var(--transition-fast);
219
  }
220
 
221
  .sidebar-toggle {
222
- background: none;
223
  border: none;
224
  color: var(--text-muted);
225
  cursor: pointer;
226
- padding: 6px;
227
  border-radius: var(--radius-xs);
228
  transition: var(--transition-fast);
229
  display: flex;
230
  align-items: center;
231
  flex-shrink: 0;
 
232
  }
233
  .sidebar-toggle:hover {
234
- background: var(--bg-glass-hover);
235
  color: var(--text-primary);
 
 
 
 
 
 
236
  }
237
 
238
  .sidebar-menu {
239
  flex: 1;
240
- padding: 12px 8px;
241
  display: flex;
242
  flex-direction: column;
243
- gap: 2px;
244
  overflow-y: auto;
245
  }
246
 
@@ -248,7 +286,7 @@ body::after {
248
  display: flex;
249
  align-items: center;
250
  gap: 12px;
251
- padding: 10px 12px;
252
  border-radius: var(--radius-sm);
253
  color: var(--text-secondary);
254
  text-decoration: none;
@@ -266,29 +304,33 @@ body::after {
266
  }
267
 
268
  .sidebar-link:hover {
269
- background: var(--bg-glass-hover);
270
  color: var(--text-primary);
 
 
271
  }
272
 
273
  .sidebar-link.active {
274
- background: rgba(99, 102, 241, 0.1);
275
  color: var(--accent-tertiary);
 
 
276
  }
277
 
278
  .sidebar-link.active::before {
279
  content: '';
280
  position: absolute;
281
  left: 0;
282
- top: 6px;
283
- bottom: 6px;
284
- width: 3px;
285
- border-radius: 0 3px 3px 0;
286
  background: var(--accent-gradient);
287
  }
288
 
289
  .sidebar-footer {
290
- padding: 12px 8px;
291
- border-top: 1px solid var(--border-subtle);
292
  display: flex;
293
  flex-direction: column;
294
  gap: 4px;
@@ -296,7 +338,7 @@ body::after {
296
 
297
  .sidebar-divider {
298
  height: 1px;
299
- background: var(--border-subtle);
300
  margin: 4px 8px;
301
  }
302
 
@@ -304,7 +346,7 @@ body::after {
304
  display: flex;
305
  align-items: center;
306
  justify-content: space-between;
307
- padding: 8px 12px;
308
  font-size: 0.78rem;
309
  color: var(--text-muted);
310
  cursor: pointer;
@@ -312,16 +354,18 @@ body::after {
312
  transition: var(--transition-fast);
313
  }
314
  .sidebar-kbd-hint:hover {
315
- background: var(--bg-glass-hover);
316
  color: var(--text-secondary);
317
  }
318
  .sidebar-kbd-hint kbd {
319
- background: rgba(255,255,255,0.06);
320
- padding: 2px 7px;
321
- border-radius: 4px;
322
  font-size: 0.72rem;
323
  font-family: inherit;
324
- border: 1px solid var(--border-subtle);
 
 
325
  }
326
 
327
  /* ══════════════════════════════════════════════
@@ -341,7 +385,7 @@ body::after {
341
  margin-left: var(--sidebar-collapsed-width);
342
  }
343
 
344
- /* ──────────── Top Bar ──────────── */
345
  .top-bar {
346
  position: sticky;
347
  top: 0;
@@ -350,10 +394,10 @@ body::after {
350
  align-items: center;
351
  justify-content: space-between;
352
  padding: 12px 0;
353
- margin-bottom: 20px;
354
- background: rgba(5, 8, 16, 0.8);
355
- backdrop-filter: blur(16px);
356
- -webkit-backdrop-filter: blur(16px);
357
  }
358
 
359
  .top-bar-left {
@@ -364,12 +408,13 @@ body::after {
364
 
365
  .mobile-menu-btn {
366
  display: none;
367
- background: none;
368
  border: none;
369
  color: var(--text-secondary);
370
  cursor: pointer;
371
- padding: 6px;
372
  border-radius: var(--radius-xs);
 
373
  }
374
 
375
  .breadcrumb {
@@ -391,7 +436,7 @@ body::after {
391
 
392
  .breadcrumb-current {
393
  color: var(--text-secondary);
394
- font-weight: 500;
395
  }
396
 
397
  .top-bar-right {
@@ -410,55 +455,56 @@ body::after {
410
  .connection-status {
411
  display: flex;
412
  align-items: center;
413
- gap: 6px;
414
- padding: 5px 12px;
415
- background: var(--bg-glass);
416
- border: 1px solid var(--border-subtle);
417
  border-radius: var(--radius-full);
418
  font-size: 0.76rem;
419
  color: var(--text-muted);
 
420
  }
421
 
422
  .connection-dot {
423
- width: 7px;
424
- height: 7px;
425
  border-radius: 50%;
426
  background: var(--success);
427
- box-shadow: 0 0 8px rgba(52, 211, 153, 0.5);
428
  animation: statusPulse 2s ease-in-out infinite;
429
  }
430
 
431
  .connection-status.disconnected .connection-dot {
432
  background: var(--danger);
433
- box-shadow: 0 0 8px rgba(248, 113, 113, 0.5);
434
  }
435
 
436
  .connection-text {
437
  letter-spacing: 0.3px;
 
438
  }
439
 
440
  /* ══════════════════════════════════════════════
441
- STATS SECTION
442
  ══════════════════════════════════════════════ */
443
 
444
  .stats-grid {
445
  display: grid;
446
  grid-template-columns: repeat(5, 1fr);
447
- gap: 14px;
448
- margin-bottom: 20px;
449
  }
450
 
451
  .stat-card {
452
- background: var(--bg-glass);
453
- backdrop-filter: blur(16px);
454
- -webkit-backdrop-filter: blur(16px);
455
- border: 1px solid var(--border-subtle);
456
- border-radius: var(--radius-lg);
457
- padding: 20px 22px;
458
  position: relative;
459
  overflow: hidden;
460
  cursor: default;
461
  transition: all var(--transition-base);
 
462
  animation: statPop 0.5s cubic-bezier(0.34, 1.56, 0.64, 1) backwards;
463
  }
464
 
@@ -470,8 +516,7 @@ body::after {
470
 
471
  .stat-card:hover {
472
  transform: translateY(-4px) scale(1.01);
473
- border-color: var(--border-medium);
474
- box-shadow: var(--shadow-md);
475
  }
476
 
477
  .stat-card-top {
@@ -482,14 +527,15 @@ body::after {
482
  }
483
 
484
  .stat-card .stat-icon {
485
- width: 40px;
486
- height: 40px;
487
  border-radius: var(--radius-md);
488
  display: flex;
489
  align-items: center;
490
  justify-content: center;
491
  font-size: 18px;
492
  transition: var(--transition-base);
 
493
  }
494
 
495
  .stat-card:hover .stat-icon {
@@ -499,16 +545,17 @@ body::after {
499
  .stat-card .stat-trend {
500
  font-size: 0.72rem;
501
  font-weight: 600;
502
- padding: 3px 8px;
503
  border-radius: var(--radius-full);
504
  display: flex;
505
  align-items: center;
506
  gap: 3px;
 
507
  }
508
 
509
  .stat-card .stat-value {
510
  font-size: 2.2rem;
511
- font-weight: 900;
512
  line-height: 1;
513
  margin-bottom: 4px;
514
  letter-spacing: -1px;
@@ -518,35 +565,41 @@ body::after {
518
  .stat-card .stat-label {
519
  font-size: 0.72rem;
520
  color: var(--text-muted);
521
- font-weight: 500;
522
  text-transform: uppercase;
523
  letter-spacing: 1px;
524
  }
525
 
526
- /* Stat card color variants */
527
- .stat-card.total .stat-icon { background: var(--accent-glow); color: var(--accent-primary); }
 
528
  .stat-card.total .stat-value { color: var(--accent-tertiary); }
529
- .stat-card.total .stat-trend { background: var(--accent-glow); color: var(--accent-tertiary); }
530
 
 
531
  .stat-card.new-stat .stat-icon { background: var(--status-new-bg); color: var(--status-new); }
532
  .stat-card.new-stat .stat-value { color: var(--status-new); }
533
 
 
534
  .stat-card.contacted .stat-icon { background: var(--status-contacted-bg); color: var(--status-contacted); }
535
  .stat-card.contacted .stat-value { color: var(--status-contacted); }
536
 
 
537
  .stat-card.replied .stat-icon { background: var(--status-replied-bg); color: var(--status-replied); }
538
  .stat-card.replied .stat-value { color: var(--status-replied); }
539
 
 
540
  .stat-card.closed .stat-icon { background: var(--status-closed-bg); color: var(--status-closed); }
541
  .stat-card.closed .stat-value { color: var(--status-closed); }
542
 
543
  /* Progress bar under each stat card */
544
  .stat-bar {
545
- margin-top: 14px;
546
- height: 3px;
547
- background: rgba(255,255,255,0.03);
548
  border-radius: var(--radius-full);
549
  overflow: hidden;
 
550
  }
551
 
552
  .stat-bar-fill {
@@ -557,24 +610,24 @@ body::after {
557
  }
558
 
559
  .stat-card.total .stat-bar-fill { background: var(--accent-gradient); }
560
- .stat-card.new-stat .stat-bar-fill { background: var(--status-new); }
561
- .stat-card.contacted .stat-bar-fill { background: var(--status-contacted); }
562
- .stat-card.replied .stat-bar-fill { background: var(--status-replied); }
563
- .stat-card.closed .stat-bar-fill { background: var(--status-closed); }
564
 
565
- /* Decorative glow */
566
  .stat-card::after {
567
  content: '';
568
  position: absolute;
569
  top: -20px; right: -20px;
570
- width: 80px; height: 80px;
571
  border-radius: 50%;
572
  filter: blur(40px);
573
- opacity: 0.06;
574
  pointer-events: none;
575
  transition: opacity var(--transition-base);
576
  }
577
- .stat-card:hover::after { opacity: 0.12; }
578
  .stat-card.total::after { background: var(--accent-primary); }
579
  .stat-card.new-stat::after { background: var(--status-new); }
580
  .stat-card.contacted::after { background: var(--status-contacted); }
@@ -586,7 +639,7 @@ body::after {
586
  ══════════════════════════════════════════════ */
587
 
588
  .funnel-panel {
589
- margin-bottom: 20px;
590
  }
591
 
592
  .funnel-legend {
@@ -601,12 +654,14 @@ body::after {
601
  gap: 6px;
602
  font-size: 0.78rem;
603
  color: var(--text-muted);
 
604
  }
605
 
606
  .funnel-legend-item .dot {
607
- width: 8px;
608
- height: 8px;
609
  border-radius: 50%;
 
610
  }
611
  .dot.new { background: var(--status-new); }
612
  .dot.contacted { background: var(--status-contacted); }
@@ -616,8 +671,8 @@ body::after {
616
  .funnel-bars {
617
  display: flex;
618
  flex-direction: column;
619
- gap: 12px;
620
- margin-top: 8px;
621
  }
622
 
623
  .funnel-step {
@@ -628,11 +683,12 @@ body::after {
628
 
629
  .funnel-bar-track {
630
  flex: 1;
631
- height: 28px;
632
- background: rgba(255,255,255,0.02);
633
  border-radius: var(--radius-sm);
634
  overflow: hidden;
635
  position: relative;
 
636
  }
637
 
638
  .funnel-bar-fill {
@@ -643,10 +699,10 @@ body::after {
643
  min-width: 0;
644
  }
645
 
646
- .funnel-bar-fill.new { background: linear-gradient(90deg, rgba(34, 211, 238, 0.3), var(--status-new)); }
647
- .funnel-bar-fill.contacted { background: linear-gradient(90deg, rgba(129, 140, 248, 0.3), var(--status-contacted)); }
648
- .funnel-bar-fill.replied { background: linear-gradient(90deg, rgba(251, 191, 36, 0.3), var(--status-replied)); }
649
- .funnel-bar-fill.closed { background: linear-gradient(90deg, rgba(52, 211, 153, 0.3), var(--status-closed)); }
650
 
651
  .funnel-step-info {
652
  display: flex;
@@ -660,6 +716,7 @@ body::after {
660
  color: var(--text-muted);
661
  text-transform: uppercase;
662
  letter-spacing: 0.5px;
 
663
  }
664
 
665
  .funnel-step-value {
@@ -670,19 +727,17 @@ body::after {
670
  }
671
 
672
  /* ══════════════════════════════════════════════
673
- SECTION PANELS
674
  ══════════════════════════════════════════════ */
675
 
676
  .panel {
677
- background: var(--bg-glass);
678
- backdrop-filter: blur(16px);
679
- -webkit-backdrop-filter: blur(16px);
680
- border: 1px solid var(--border-subtle);
681
  border-radius: var(--radius-xl);
682
- padding: 22px 26px;
683
- margin-bottom: 20px;
684
  animation: panelReveal 0.6s cubic-bezier(0.16, 1, 0.3, 1) backwards;
685
- box-shadow: var(--shadow-inset);
686
  position: relative;
687
  }
688
 
@@ -695,22 +750,24 @@ body::after {
695
  display: flex;
696
  align-items: center;
697
  justify-content: space-between;
698
- margin-bottom: 18px;
699
  flex-wrap: wrap;
700
  gap: 12px;
701
  }
702
 
703
  .panel-title {
704
- font-size: 1rem;
705
  font-weight: 700;
706
  display: flex;
707
  align-items: center;
708
  gap: 10px;
709
  letter-spacing: -0.2px;
 
710
  }
711
 
712
  .panel-title svg {
713
- opacity: 0.6;
 
714
  }
715
 
716
  /* Collapsible panels */
@@ -721,13 +778,17 @@ body::after {
721
  }
722
 
723
  .collapsible-panel.expanded .panel-header.clickable {
724
- margin-bottom: 18px;
725
  }
726
 
727
  .panel-collapse-icon {
728
  color: var(--text-muted);
729
  transition: transform var(--transition-base);
730
  display: flex;
 
 
 
 
731
  }
732
 
733
  .collapsible-panel.expanded .panel-collapse-icon {
@@ -749,11 +810,12 @@ body::after {
749
  .lead-count-badge {
750
  background: var(--accent-glow);
751
  color: var(--accent-tertiary);
752
- padding: 2px 10px;
753
  border-radius: var(--radius-full);
754
  font-size: 0.76rem;
755
  font-weight: 700;
756
  letter-spacing: 0.3px;
 
757
  }
758
 
759
  /* ══════════════════════════════════════════════
@@ -763,12 +825,12 @@ body::after {
763
  .scraper-form {
764
  display: flex;
765
  flex-direction: column;
766
- gap: 14px;
767
  }
768
 
769
  .form-row {
770
  display: flex;
771
- gap: 12px;
772
  flex-wrap: wrap;
773
  align-items: flex-end;
774
  }
@@ -776,7 +838,7 @@ body::after {
776
  .form-group {
777
  display: flex;
778
  flex-direction: column;
779
- gap: 6px;
780
  flex: 1;
781
  min-width: 180px;
782
  }
@@ -797,26 +859,27 @@ body::after {
797
  font-size: 0.72rem;
798
  }
799
 
 
800
  .form-group input,
801
  .form-group select,
802
  .form-group textarea {
803
  background: var(--bg-input);
804
- border: 1px solid var(--border-subtle);
805
  border-radius: var(--radius-sm);
806
- padding: 11px 14px;
807
  color: var(--text-primary);
808
  font-family: inherit;
809
  font-size: 0.88rem;
810
  transition: all var(--transition-fast);
811
  outline: none;
 
812
  }
813
 
814
  .form-group input:focus,
815
  .form-group select:focus,
816
  .form-group textarea:focus {
817
  background: var(--bg-input-focus);
818
- border-color: var(--border-focus);
819
- box-shadow: 0 0 0 3px var(--accent-glow), var(--shadow-inset);
820
  }
821
 
822
  .form-group input::placeholder,
@@ -830,7 +893,7 @@ body::after {
830
 
831
  .input-with-icon svg {
832
  position: absolute;
833
- left: 12px;
834
  top: 50%;
835
  transform: translateY(-50%);
836
  color: var(--text-muted);
@@ -838,11 +901,11 @@ body::after {
838
  }
839
 
840
  .input-with-icon input {
841
- padding-left: 38px;
842
  width: 100%;
843
  }
844
 
845
- /* Toggle switch */
846
  .toggle-label {
847
  display: flex;
848
  align-items: center;
@@ -855,8 +918,8 @@ body::after {
855
 
856
  .toggle-switch {
857
  position: relative;
858
- width: 38px;
859
- height: 20px;
860
  flex-shrink: 0;
861
  }
862
 
@@ -870,60 +933,64 @@ body::after {
870
  position: absolute;
871
  inset: 0;
872
  cursor: pointer;
873
- background: rgba(255,255,255,0.08);
874
  border-radius: var(--radius-full);
875
  transition: var(--transition-fast);
 
876
  }
877
 
878
  .toggle-slider::before {
879
  content: '';
880
  position: absolute;
881
- width: 14px;
882
- height: 14px;
883
- left: 3px;
884
- top: 3px;
885
  background: var(--text-muted);
886
  border-radius: 50%;
887
  transition: var(--transition-fast);
 
888
  }
889
 
890
  .toggle-switch input:checked + .toggle-slider {
891
- background: rgba(99, 102, 241, 0.3);
892
  }
893
 
894
  .toggle-switch input:checked + .toggle-slider::before {
895
  transform: translateX(18px);
896
- background: var(--accent-primary);
 
897
  }
898
 
899
  /* Scrape status with progress bar */
900
  .scrape-status {
901
  display: flex;
902
  align-items: center;
903
- gap: 12px;
904
- margin-top: 14px;
905
- padding: 14px 18px;
906
  background: var(--bg-input);
907
  border-radius: var(--radius-md);
908
  font-size: 0.84rem;
909
  color: var(--text-secondary);
910
- border: 1px solid var(--border-subtle);
911
  animation: fadeIn 0.3s ease;
 
912
  }
913
 
914
  .scrape-status.running {
915
- border-color: rgba(99, 102, 241, 0.25);
916
- background: linear-gradient(135deg, rgba(99, 102, 241, 0.05), rgba(139, 92, 246, 0.03));
917
  }
918
 
919
  .scrape-status.completed {
920
- border-color: rgba(52, 211, 153, 0.25);
921
- background: linear-gradient(135deg, rgba(52, 211, 153, 0.05), rgba(16, 185, 129, 0.03));
922
  }
923
 
924
  .scrape-status.failed {
925
- border-color: rgba(248, 113, 113, 0.25);
926
- background: rgba(248, 113, 113, 0.04);
927
  }
928
 
929
  .scrape-progress-wrap {
@@ -934,10 +1001,11 @@ body::after {
934
  }
935
 
936
  .scrape-progress-bar {
937
- height: 4px;
938
- background: rgba(255,255,255,0.04);
939
  border-radius: var(--radius-full);
940
  overflow: hidden;
 
941
  }
942
 
943
  .scrape-progress-fill {
@@ -952,15 +1020,15 @@ body::after {
952
  content: '';
953
  position: absolute;
954
  top: 0; left: 0; right: 0; bottom: 0;
955
- background: linear-gradient(90deg, transparent, rgba(255,255,255,0.3), transparent);
956
  animation: shimmer 1.5s infinite;
957
  }
958
 
959
  .spinner {
960
- width: 18px;
961
- height: 18px;
962
- border: 2px solid rgba(255,255,255,0.08);
963
- border-top: 2px solid var(--accent-primary);
964
  border-radius: 50%;
965
  animation: spin 0.7s linear infinite;
966
  flex-shrink: 0;
@@ -972,7 +1040,7 @@ body::after {
972
 
973
  .toolbar {
974
  display: flex;
975
- gap: 10px;
976
  flex-wrap: wrap;
977
  align-items: center;
978
  }
@@ -986,20 +1054,20 @@ body::after {
986
  .search-box input {
987
  width: 100%;
988
  background: var(--bg-input);
989
- border: 1px solid var(--border-subtle);
990
  border-radius: var(--radius-full);
991
- padding: 9px 60px 9px 40px;
992
  color: var(--text-primary);
993
  font-family: inherit;
994
  font-size: 0.84rem;
995
  transition: var(--transition-fast);
996
  outline: none;
 
997
  }
998
 
999
  .search-box input:focus {
1000
  background: var(--bg-input-focus);
1001
- border-color: var(--border-focus);
1002
- box-shadow: 0 0 0 3px var(--accent-glow);
1003
  }
1004
 
1005
  .search-box input::placeholder {
@@ -1008,7 +1076,7 @@ body::after {
1008
 
1009
  .search-box .search-icon {
1010
  position: absolute;
1011
- left: 13px;
1012
  top: 50%;
1013
  transform: translateY(-50%);
1014
  color: var(--text-muted);
@@ -1017,18 +1085,19 @@ body::after {
1017
 
1018
  .search-kbd {
1019
  position: absolute;
1020
- right: 10px;
1021
  top: 50%;
1022
  transform: translateY(-50%);
1023
- background: rgba(255,255,255,0.04);
1024
- padding: 2px 8px;
1025
- border-radius: 4px;
1026
  font-size: 0.68rem;
1027
  font-family: inherit;
1028
  color: var(--text-muted);
1029
  font-weight: 600;
1030
- border: 1px solid var(--border-subtle);
1031
  pointer-events: none;
 
1032
  }
1033
 
1034
  /* View toggle buttons */
@@ -1036,14 +1105,15 @@ body::after {
1036
  display: flex;
1037
  background: var(--bg-input);
1038
  border-radius: var(--radius-sm);
1039
- border: 1px solid var(--border-subtle);
1040
  overflow: hidden;
 
1041
  }
1042
 
1043
  .view-toggle-btn {
1044
  background: transparent;
1045
  border: none;
1046
- padding: 8px 12px;
1047
  color: var(--text-muted);
1048
  cursor: pointer;
1049
  display: flex;
@@ -1054,19 +1124,22 @@ body::after {
1054
 
1055
  .view-toggle-btn:hover {
1056
  color: var(--text-secondary);
1057
- background: var(--bg-glass-hover);
1058
  }
1059
 
1060
  .view-toggle-btn.active {
1061
- background: var(--accent-glow);
1062
  color: var(--accent-tertiary);
 
 
 
1063
  }
1064
 
1065
  .filter-select {
1066
  background: var(--bg-input);
1067
- border: 1px solid var(--border-subtle);
1068
  border-radius: var(--radius-full);
1069
- padding: 9px 32px 9px 14px;
1070
  color: var(--text-primary);
1071
  font-family: inherit;
1072
  font-size: 0.84rem;
@@ -1076,14 +1149,14 @@ body::after {
1076
  min-width: 130px;
1077
  -webkit-appearance: none;
1078
  appearance: none;
1079
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23484f58' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
1080
  background-repeat: no-repeat;
1081
  background-position: right 12px center;
 
1082
  }
1083
 
1084
  .filter-select:focus {
1085
- border-color: var(--border-focus);
1086
- box-shadow: 0 0 0 3px var(--accent-glow);
1087
  }
1088
 
1089
  .filter-select option {
@@ -1092,7 +1165,7 @@ body::after {
1092
  }
1093
 
1094
  /* ═══════════════════════════════════════════���══
1095
- BUTTONS
1096
  ══════════════════════════════════════════════ */
1097
 
1098
  .btn {
@@ -1100,9 +1173,9 @@ body::after {
1100
  align-items: center;
1101
  justify-content: center;
1102
  gap: 7px;
1103
- padding: 9px 18px;
1104
- border: 1px solid transparent;
1105
- border-radius: var(--radius-sm);
1106
  font-family: inherit;
1107
  font-size: 0.82rem;
1108
  font-weight: 600;
@@ -1112,124 +1185,137 @@ body::after {
1112
  text-decoration: none;
1113
  position: relative;
1114
  overflow: hidden;
 
 
 
 
 
 
1115
  }
1116
 
1117
  .btn:active {
1118
- transform: scale(0.96);
 
1119
  }
1120
 
1121
  .btn-primary {
1122
  background: var(--accent-gradient);
1123
  color: #fff;
1124
- box-shadow: 0 2px 16px var(--accent-glow);
1125
- border: none;
 
 
1126
  }
1127
 
1128
  .btn-primary::before {
1129
  content: '';
1130
  position: absolute;
1131
  inset: 0;
1132
- background: linear-gradient(135deg, rgba(255,255,255,0.15), transparent);
1133
  opacity: 0;
1134
  transition: var(--transition-fast);
 
1135
  }
1136
 
1137
  .btn-primary:hover {
1138
- box-shadow: 0 6px 28px rgba(99, 102, 241, 0.35);
1139
- transform: translateY(-1px);
 
 
 
1140
  }
1141
 
1142
  .btn-primary:hover::before {
1143
  opacity: 1;
1144
  }
1145
 
 
 
 
 
 
 
 
 
1146
  .btn-primary:disabled {
1147
- opacity: 0.4;
1148
  cursor: not-allowed;
1149
  transform: none;
1150
- box-shadow: none;
1151
  }
1152
 
1153
  .btn-secondary {
1154
- background: var(--bg-glass-hover);
1155
  color: var(--text-primary);
1156
- border: 1px solid var(--border-subtle);
1157
  }
1158
 
1159
  .btn-secondary:hover {
1160
- background: var(--bg-glass-active);
1161
- border-color: var(--border-medium);
1162
- transform: translateY(-1px);
1163
  }
1164
 
1165
  .btn-success {
1166
- background: var(--success-bg);
1167
- color: var(--success);
1168
- border-color: rgba(52, 211, 153, 0.12);
1169
  }
1170
  .btn-success:hover {
1171
- background: rgba(52, 211, 153, 0.15);
1172
- box-shadow: 0 0 16px rgba(52, 211, 153, 0.12);
1173
  }
1174
 
1175
  .btn-danger {
1176
- background: var(--danger-bg);
1177
- color: var(--danger);
1178
- border-color: rgba(248, 113, 113, 0.12);
1179
  }
1180
  .btn-danger:hover {
1181
- background: rgba(248, 113, 113, 0.15);
1182
- box-shadow: 0 0 16px rgba(248, 113, 113, 0.12);
1183
  }
1184
 
1185
  .btn-whatsapp {
1186
- background: var(--whatsapp-bg);
1187
- color: var(--whatsapp);
1188
- border-color: rgba(37, 211, 102, 0.12);
1189
  }
1190
  .btn-whatsapp:hover {
1191
- background: rgba(37, 211, 102, 0.15);
1192
- box-shadow: 0 0 16px var(--whatsapp-glow);
1193
  }
1194
 
1195
  .btn-sm {
1196
- padding: 6px 12px;
1197
  font-size: 0.76rem;
1198
- border-radius: var(--radius-xs);
1199
  }
1200
 
1201
  .btn-icon {
1202
- padding: 7px;
1203
- border-radius: var(--radius-xs);
1204
  font-size: 0.9rem;
1205
  }
1206
 
1207
  .btn-ghost {
1208
  background: transparent;
1209
  color: var(--text-secondary);
1210
- border: none;
1211
- padding: 6px 10px;
1212
  }
1213
  .btn-ghost:hover {
1214
- background: var(--bg-glass-hover);
1215
  color: var(--text-primary);
 
1216
  }
1217
 
1218
  .btn-ghost-accent {
1219
  background: transparent;
1220
  color: var(--text-secondary);
1221
- border: 1px solid var(--border-subtle);
1222
  }
1223
  .btn-ghost-accent:hover {
1224
- background: var(--accent-glow);
1225
  color: var(--accent-tertiary);
1226
- border-color: rgba(99, 102, 241, 0.2);
1227
  }
1228
 
1229
  .btn-scrape-start {
1230
- padding: 12px 28px;
1231
- font-size: 0.88rem;
1232
- border-radius: var(--radius-md);
1233
  }
1234
 
1235
  /* ══════════════════════════════════════════════
@@ -1239,13 +1325,14 @@ body::after {
1239
  .bulk-bar {
1240
  display: flex;
1241
  align-items: center;
1242
- gap: 12px;
1243
- padding: 10px 18px;
1244
- background: linear-gradient(135deg, rgba(99, 102, 241, 0.06), rgba(139, 92, 246, 0.04));
1245
- border: 1px solid rgba(99, 102, 241, 0.15);
1246
- border-radius: var(--radius-md);
1247
- margin-bottom: 14px;
1248
  animation: slideDown 0.3s ease;
 
1249
  }
1250
 
1251
  .bulk-bar .bulk-count {
@@ -1264,24 +1351,24 @@ body::after {
1264
 
1265
  .bulk-bar .bulk-actions {
1266
  display: flex;
1267
- gap: 6px;
1268
  flex-wrap: wrap;
1269
  }
1270
 
1271
  /* ══════════════════════════════════════════════
1272
- LEADS TABLE
1273
  ══════════════════════════════════════════════ */
1274
 
1275
  .table-wrapper {
1276
  overflow-x: auto;
1277
- border-radius: var(--radius-md);
1278
  margin-top: 4px;
1279
  }
1280
 
1281
  .leads-table {
1282
  width: 100%;
1283
  border-collapse: separate;
1284
- border-spacing: 0;
1285
  font-size: 0.85rem;
1286
  }
1287
 
@@ -1292,26 +1379,33 @@ body::after {
1292
  }
1293
 
1294
  .leads-table th {
1295
- background: rgba(255,255,255,0.025);
1296
- padding: 11px 14px;
1297
  text-align: left;
1298
  font-weight: 600;
1299
  font-size: 0.7rem;
1300
  color: var(--text-muted);
1301
  text-transform: uppercase;
1302
  letter-spacing: 0.8px;
1303
- border-bottom: 1px solid var(--border-subtle);
1304
  white-space: nowrap;
1305
  user-select: none;
1306
  }
1307
 
 
 
 
1308
  .leads-table td {
1309
- padding: 12px 14px;
1310
- border-bottom: 1px solid rgba(255,255,255,0.02);
1311
  vertical-align: middle;
1312
  transition: var(--transition-fast);
 
1313
  }
1314
 
 
 
 
1315
  .leads-table tbody tr {
1316
  transition: all var(--transition-fast);
1317
  animation: rowSlideIn 0.35s ease backwards;
@@ -1329,37 +1423,43 @@ body::after {
1329
  .leads-table tbody tr:nth-child(9) { animation-delay: 0.18s; }
1330
  .leads-table tbody tr:nth-child(10) { animation-delay: 0.2s; }
1331
 
 
 
 
 
 
1332
  .leads-table tbody tr:hover {
1333
- background: var(--bg-glass-hover);
1334
  }
1335
 
1336
- .leads-table tbody tr.selected {
1337
- background: rgba(99, 102, 241, 0.05);
1338
  }
1339
 
1340
  /* Checkbox column */
1341
  .leads-table .checkbox-cell {
1342
- width: 36px;
1343
  text-align: center;
1344
  }
1345
 
1346
  .checkbox-cell input[type="checkbox"] {
1347
  appearance: none;
1348
  -webkit-appearance: none;
1349
- width: 16px;
1350
- height: 16px;
1351
- border: 2px solid var(--border-medium);
1352
- border-radius: 4px;
1353
- background: transparent;
1354
  cursor: pointer;
1355
  transition: var(--transition-fast);
1356
  position: relative;
1357
  vertical-align: middle;
 
1358
  }
1359
 
1360
  .checkbox-cell input[type="checkbox"]:checked {
1361
  background: var(--accent-primary);
1362
- border-color: var(--accent-primary);
1363
  }
1364
 
1365
  .checkbox-cell input[type="checkbox"]:checked::after {
@@ -1368,12 +1468,12 @@ body::after {
1368
  top: 50%; left: 50%;
1369
  transform: translate(-50%, -50%);
1370
  color: #fff;
1371
- font-size: 10px;
1372
  font-weight: 800;
1373
  }
1374
 
1375
  .checkbox-cell input[type="checkbox"]:hover {
1376
- border-color: var(--accent-primary);
1377
  }
1378
 
1379
  /* Lead name with avatar */
@@ -1384,8 +1484,8 @@ body::after {
1384
  }
1385
 
1386
  .lead-avatar {
1387
- width: 32px;
1388
- height: 32px;
1389
  border-radius: var(--radius-sm);
1390
  display: flex;
1391
  align-items: center;
@@ -1395,6 +1495,7 @@ body::after {
1395
  color: #fff;
1396
  flex-shrink: 0;
1397
  text-transform: uppercase;
 
1398
  }
1399
 
1400
  .lead-name {
@@ -1404,7 +1505,7 @@ body::after {
1404
  }
1405
 
1406
  .lead-phone {
1407
- font-family: 'Inter', monospace;
1408
  color: var(--text-secondary);
1409
  font-size: 0.82rem;
1410
  font-variant-numeric: tabular-nums;
@@ -1439,20 +1540,21 @@ body::after {
1439
  white-space: nowrap;
1440
  cursor: pointer;
1441
  transition: var(--transition-fast);
1442
- padding: 4px 8px;
1443
  border-radius: var(--radius-xs);
1444
  }
1445
  .lead-notes:hover {
1446
  color: var(--text-secondary);
1447
- background: var(--bg-glass-hover);
 
1448
  }
1449
 
1450
- /* Status Badges */
1451
  .status-badge {
1452
  display: inline-flex;
1453
  align-items: center;
1454
  gap: 6px;
1455
- padding: 4px 12px;
1456
  border-radius: var(--radius-full);
1457
  font-size: 0.7rem;
1458
  font-weight: 700;
@@ -1460,70 +1562,66 @@ body::after {
1460
  letter-spacing: 0.5px;
1461
  cursor: pointer;
1462
  transition: all var(--transition-fast);
1463
- border: 1px solid transparent;
 
1464
  }
1465
 
1466
  .status-badge::before {
1467
  content: '';
1468
- width: 6px;
1469
- height: 6px;
1470
  border-radius: 50%;
1471
  flex-shrink: 0;
1472
  animation: statusPulse 2s ease-in-out infinite;
1473
  }
1474
 
1475
  .status-badge.new {
1476
- background: var(--status-new-bg);
1477
- color: var(--status-new);
1478
- border-color: rgba(34, 211, 238, 0.12);
1479
  }
1480
  .status-badge.new::before { background: var(--status-new); }
1481
 
1482
  .status-badge.contacted {
1483
- background: var(--status-contacted-bg);
1484
- color: var(--status-contacted);
1485
- border-color: rgba(129, 140, 248, 0.12);
1486
  }
1487
  .status-badge.contacted::before { background: var(--status-contacted); }
1488
 
1489
  .status-badge.replied {
1490
- background: var(--status-replied-bg);
1491
- color: var(--status-replied);
1492
- border-color: rgba(251, 191, 36, 0.12);
1493
  }
1494
  .status-badge.replied::before { background: var(--status-replied); }
1495
 
1496
  .status-badge.closed {
1497
- background: var(--status-closed-bg);
1498
- color: var(--status-closed);
1499
- border-color: rgba(52, 211, 153, 0.12);
1500
  }
1501
  .status-badge.closed::before { background: var(--status-closed); }
1502
 
1503
  .status-badge:hover {
1504
- filter: brightness(1.15);
1505
- transform: scale(1.04);
1506
- box-shadow: 0 2px 12px rgba(0,0,0,0.15);
1507
  }
1508
 
1509
  /* Actions column */
1510
  .actions-cell {
1511
  display: flex;
1512
- gap: 4px;
1513
  flex-wrap: nowrap;
1514
  }
1515
 
1516
  /* ══════════════════════════════════════════════
1517
- PAGINATION
1518
  ══════════════════════════════════════════════ */
1519
 
1520
  .pagination {
1521
  display: flex;
1522
  align-items: center;
1523
  justify-content: space-between;
1524
- margin-top: 16px;
1525
- padding-top: 16px;
1526
- border-top: 1px solid var(--border-subtle);
1527
  flex-wrap: wrap;
1528
  gap: 12px;
1529
  }
@@ -1541,14 +1639,14 @@ body::after {
1541
  .pagination-controls {
1542
  display: flex;
1543
  align-items: center;
1544
- gap: 4px;
1545
  }
1546
 
1547
  .pagination-controls button {
1548
- width: 34px;
1549
- height: 34px;
1550
- border: 1px solid var(--border-subtle);
1551
- background: var(--bg-glass);
1552
  color: var(--text-secondary);
1553
  border-radius: var(--radius-sm);
1554
  cursor: pointer;
@@ -1559,36 +1657,46 @@ body::after {
1559
  display: flex;
1560
  align-items: center;
1561
  justify-content: center;
 
1562
  }
1563
 
1564
  .pagination-controls button:hover:not(:disabled) {
1565
- background: var(--bg-glass-hover);
1566
- border-color: var(--border-medium);
1567
  color: var(--text-primary);
1568
  }
1569
 
 
 
 
 
 
1570
  .pagination-controls button.active {
1571
- background: var(--accent-primary);
1572
- border-color: var(--accent-primary);
1573
  color: #fff;
1574
- box-shadow: 0 2px 8px var(--accent-glow);
 
 
 
1575
  }
1576
 
1577
  .pagination-controls button:disabled {
1578
  opacity: 0.3;
1579
  cursor: not-allowed;
 
1580
  }
1581
 
1582
  .page-size-select {
1583
  background: var(--bg-input);
1584
- border: 1px solid var(--border-subtle);
1585
  border-radius: var(--radius-sm);
1586
- padding: 6px 10px;
1587
  color: var(--text-primary);
1588
  font-family: inherit;
1589
  font-size: 0.8rem;
1590
  cursor: pointer;
1591
  outline: none;
 
1592
  }
1593
 
1594
  /* ══════════════════════════════════════════════
@@ -1606,10 +1714,20 @@ body::after {
1606
  animation: float 4s ease-in-out infinite;
1607
  }
1608
 
 
 
 
 
 
 
 
 
 
 
1609
  .empty-state h3 {
1610
  font-size: 1.1rem;
1611
  color: var(--text-secondary);
1612
- font-weight: 600;
1613
  margin-bottom: 6px;
1614
  }
1615
 
@@ -1619,13 +1737,15 @@ body::after {
1619
  }
1620
 
1621
  /* ══════════════════════════════════════════════
1622
- LEAD DETAIL DRAWER
1623
  ══════════════════════════════════════════════ */
1624
 
1625
  .drawer-overlay {
1626
  position: fixed;
1627
  inset: 0;
1628
- background: rgba(0, 0, 0, 0.5);
 
 
1629
  z-index: 200;
1630
  opacity: 0;
1631
  visibility: hidden;
@@ -1645,13 +1765,14 @@ body::after {
1645
  max-width: 100%;
1646
  height: 100vh;
1647
  background: var(--bg-secondary);
1648
- border-left: 1px solid var(--border-subtle);
1649
  z-index: 210;
1650
  transform: translateX(100%);
1651
  transition: transform var(--transition-slow);
1652
  display: flex;
1653
  flex-direction: column;
1654
  overflow-y: auto;
 
1655
  }
1656
 
1657
  .lead-drawer.open {
@@ -1662,8 +1783,8 @@ body::after {
1662
  display: flex;
1663
  align-items: center;
1664
  justify-content: space-between;
1665
- padding: 20px 24px;
1666
- border-bottom: 1px solid var(--border-subtle);
1667
  position: sticky;
1668
  top: 0;
1669
  background: var(--bg-secondary);
@@ -1676,22 +1797,25 @@ body::after {
1676
  }
1677
 
1678
  .drawer-close {
1679
- background: var(--bg-glass-hover);
1680
  border: none;
1681
  border-radius: var(--radius-sm);
1682
  color: var(--text-secondary);
1683
- padding: 6px;
1684
  cursor: pointer;
1685
  display: flex;
1686
  transition: var(--transition-fast);
 
1687
  }
1688
  .drawer-close:hover {
1689
- background: var(--danger-bg);
1690
  color: var(--danger);
 
 
1691
  }
1692
 
1693
  .drawer-body {
1694
- padding: 24px;
1695
  display: flex;
1696
  flex-direction: column;
1697
  gap: 20px;
@@ -1699,7 +1823,7 @@ body::after {
1699
 
1700
  .drawer-section-title {
1701
  font-size: 0.72rem;
1702
- font-weight: 600;
1703
  text-transform: uppercase;
1704
  letter-spacing: 0.8px;
1705
  color: var(--text-muted);
@@ -1716,6 +1840,10 @@ body::after {
1716
  display: flex;
1717
  flex-direction: column;
1718
  gap: 4px;
 
 
 
 
1719
  }
1720
 
1721
  .drawer-info-label {
@@ -1723,6 +1851,7 @@ body::after {
1723
  color: var(--text-muted);
1724
  text-transform: uppercase;
1725
  letter-spacing: 0.5px;
 
1726
  }
1727
 
1728
  .drawer-info-value {
@@ -1746,15 +1875,15 @@ body::after {
1746
  }
1747
 
1748
  /* ══════════════════════════════════════════════
1749
- MODALS
1750
  ══════════════════════════════════════════════ */
1751
 
1752
  .modal-overlay {
1753
  position: fixed;
1754
  inset: 0;
1755
- background: rgba(0, 0, 0, 0.65);
1756
- backdrop-filter: blur(10px);
1757
- -webkit-backdrop-filter: blur(10px);
1758
  z-index: 1000;
1759
  display: flex;
1760
  align-items: center;
@@ -1772,9 +1901,9 @@ body::after {
1772
 
1773
  .modal {
1774
  background: var(--bg-secondary);
1775
- border: 1px solid var(--border-subtle);
1776
  border-radius: var(--radius-2xl);
1777
- padding: 28px;
1778
  width: 100%;
1779
  max-width: 520px;
1780
  max-height: 90vh;
@@ -1793,7 +1922,7 @@ body::after {
1793
  content: '';
1794
  position: absolute;
1795
  top: 0; left: 0; right: 0;
1796
- height: 2px;
1797
  background: var(--accent-gradient);
1798
  border-radius: var(--radius-2xl) var(--radius-2xl) 0 0;
1799
  }
@@ -1806,7 +1935,7 @@ body::after {
1806
  display: flex;
1807
  align-items: center;
1808
  justify-content: space-between;
1809
- margin-bottom: 20px;
1810
  }
1811
 
1812
  .modal-header h2 {
@@ -1815,10 +1944,10 @@ body::after {
1815
  }
1816
 
1817
  .modal-close {
1818
- width: 32px;
1819
- height: 32px;
1820
  border: none;
1821
- background: var(--bg-glass-hover);
1822
  border-radius: var(--radius-sm);
1823
  color: var(--text-secondary);
1824
  font-size: 1.1rem;
@@ -1827,18 +1956,20 @@ body::after {
1827
  align-items: center;
1828
  justify-content: center;
1829
  transition: var(--transition-fast);
 
1830
  }
1831
 
1832
  .modal-close:hover {
1833
- background: var(--danger-bg);
1834
  color: var(--danger);
1835
  transform: rotate(90deg);
 
1836
  }
1837
 
1838
  .modal-body {
1839
  display: flex;
1840
  flex-direction: column;
1841
- gap: 14px;
1842
  }
1843
 
1844
  .modal-body textarea {
@@ -1849,34 +1980,36 @@ body::after {
1849
  .modal-footer {
1850
  display: flex;
1851
  justify-content: flex-end;
1852
- gap: 8px;
1853
- margin-top: 20px;
1854
  }
1855
 
1856
  /* WhatsApp recipient card in modal */
1857
  .wa-recipient-card {
1858
  display: flex;
1859
  align-items: center;
1860
- gap: 12px;
1861
- padding: 12px 16px;
1862
- background: var(--bg-glass);
1863
- border: 1px solid var(--border-subtle);
1864
- border-radius: var(--radius-md);
1865
  margin-bottom: 4px;
 
1866
  }
1867
 
1868
  .wa-recipient-avatar {
1869
- width: 40px;
1870
- height: 40px;
1871
  border-radius: var(--radius-sm);
1872
- background: var(--whatsapp-bg);
1873
- color: var(--whatsapp);
1874
  display: flex;
1875
  align-items: center;
1876
  justify-content: center;
1877
  font-weight: 700;
1878
  font-size: 1.1rem;
1879
  flex-shrink: 0;
 
1880
  }
1881
 
1882
  .wa-recipient-name {
@@ -1904,25 +2037,27 @@ body::after {
1904
  display: flex;
1905
  align-items: center;
1906
  gap: 8px;
1907
- padding: 10px 14px;
1908
- background: var(--bg-glass);
1909
- border: 1px solid var(--border-subtle);
1910
  border-radius: var(--radius-sm);
1911
  font-size: 0.84rem;
1912
  color: var(--text-secondary);
 
1913
  }
1914
 
1915
  .shortcut-item kbd {
1916
- background: rgba(255,255,255,0.06);
1917
- border: 1px solid var(--border-subtle);
1918
- border-radius: 4px;
1919
- padding: 2px 8px;
1920
  font-size: 0.76rem;
1921
  font-family: inherit;
1922
  color: var(--text-primary);
1923
  font-weight: 600;
1924
- min-width: 28px;
1925
  text-align: center;
 
1926
  }
1927
 
1928
  .shortcut-item span:last-child {
@@ -1938,29 +2073,34 @@ body::after {
1938
  .templates-list {
1939
  display: grid;
1940
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
1941
- gap: 12px;
1942
  }
1943
 
1944
  .template-card {
1945
- background: var(--bg-input);
1946
- border: 1px solid var(--border-subtle);
1947
- border-radius: var(--radius-md);
1948
- padding: 16px 18px;
1949
  transition: all var(--transition-fast);
1950
  position: relative;
 
1951
  }
1952
 
1953
  .template-card:hover {
1954
- border-color: var(--border-medium);
1955
- transform: translateY(-2px);
1956
- box-shadow: var(--shadow-md);
 
 
 
 
1957
  }
1958
 
1959
  .template-card-header {
1960
  display: flex;
1961
  align-items: center;
1962
  justify-content: space-between;
1963
- margin-bottom: 8px;
1964
  }
1965
 
1966
  .template-card-name {
@@ -1987,7 +2127,7 @@ body::after {
1987
  }
1988
 
1989
  /* ══════════════════════════════════════════════
1990
- TOAST NOTIFICATIONS
1991
  ══════════════════════════════════════════════ */
1992
 
1993
  .toast-container {
@@ -1997,21 +2137,21 @@ body::after {
1997
  z-index: 2000;
1998
  display: flex;
1999
  flex-direction: column-reverse;
2000
- gap: 8px;
2001
  pointer-events: none;
2002
  }
2003
 
2004
  .toast {
2005
  background: var(--bg-secondary);
2006
- border: 1px solid var(--border-subtle);
2007
- border-radius: var(--radius-md);
2008
- padding: 14px 18px;
2009
  min-width: 300px;
2010
  max-width: 400px;
2011
- box-shadow: var(--shadow-lg);
2012
  display: flex;
2013
  align-items: center;
2014
- gap: 10px;
2015
  animation: toastIn 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
2016
  pointer-events: auto;
2017
  position: relative;
@@ -2027,7 +2167,8 @@ body::after {
2027
  position: absolute;
2028
  bottom: 0;
2029
  left: 0;
2030
- height: 2px;
 
2031
  animation: toastProgress 4s linear forwards;
2032
  }
2033
 
@@ -2043,17 +2184,17 @@ body::after {
2043
  line-height: 1.4;
2044
  }
2045
 
2046
- .toast.success { border-left: 3px solid var(--success); }
2047
  .toast.success .toast-icon { color: var(--success); }
2048
  .toast.success::after { background: var(--success); }
2049
 
2050
- .toast.error { border-left: 3px solid var(--danger); }
2051
  .toast.error .toast-icon { color: var(--danger); }
2052
  .toast.error::after { background: var(--danger); }
2053
 
2054
- .toast.info { border-left: 3px solid var(--accent-primary); }
2055
- .toast.info .toast-icon { color: var(--accent-primary); }
2056
- .toast.info::after { background: var(--accent-primary); }
2057
 
2058
  /* ══════════════════════════════════════════════
2059
  STATUS DROPDOWN
@@ -2062,12 +2203,12 @@ body::after {
2062
  .status-dropdown {
2063
  position: fixed;
2064
  background: var(--bg-secondary);
2065
- border: 1px solid var(--border-medium);
2066
- border-radius: var(--radius-md);
2067
- padding: 6px;
2068
  box-shadow: var(--shadow-xl);
2069
  z-index: 100;
2070
- min-width: 150px;
2071
  animation: dropdownPop 0.2s cubic-bezier(0.34, 1.56, 0.64, 1);
2072
  }
2073
 
@@ -2076,7 +2217,7 @@ body::after {
2076
  align-items: center;
2077
  gap: 8px;
2078
  width: 100%;
2079
- padding: 8px 12px;
2080
  border: none;
2081
  background: transparent;
2082
  color: var(--text-primary);
@@ -2084,12 +2225,13 @@ body::after {
2084
  font-size: 0.82rem;
2085
  font-weight: 500;
2086
  cursor: pointer;
2087
- border-radius: var(--radius-xs);
2088
  transition: var(--transition-fast);
2089
  }
2090
 
2091
  .status-dropdown button:hover {
2092
- background: var(--bg-glass-hover);
 
2093
  }
2094
 
2095
  /* ══════════════════════════════════════════════
@@ -2098,33 +2240,34 @@ body::after {
2098
 
2099
  input[type="date"] {
2100
  background: var(--bg-input);
2101
- border: 1px solid var(--border-subtle);
2102
  border-radius: var(--radius-sm);
2103
- padding: 9px 12px;
2104
  color: var(--text-primary);
2105
  font-family: inherit;
2106
  font-size: 0.85rem;
2107
  outline: none;
2108
  transition: var(--transition-fast);
 
2109
  }
2110
 
2111
  input[type="date"]:focus {
2112
- border-color: var(--border-focus);
2113
- box-shadow: 0 0 0 3px var(--accent-glow);
2114
  }
2115
 
2116
  input[type="date"]::-webkit-calendar-picker-indicator {
2117
- filter: invert(0.6);
2118
  cursor: pointer;
 
2119
  }
2120
 
2121
  /* ══════════════════════════════════════════════
2122
- KANBAN BOARD
2123
  ══════════════════════════════════════════════ */
2124
 
2125
  .kanban-board {
2126
  display: flex;
2127
- gap: 14px;
2128
  overflow-x: auto;
2129
  padding-bottom: 8px;
2130
  min-height: 400px;
@@ -2133,25 +2276,25 @@ input[type="date"]::-webkit-calendar-picker-indicator {
2133
  .kanban-column {
2134
  flex: 1;
2135
  min-width: 260px;
2136
- background: rgba(255, 255, 255, 0.015);
2137
- border: 1px solid var(--border-subtle);
2138
- border-radius: var(--radius-md);
2139
  display: flex;
2140
  flex-direction: column;
2141
  transition: var(--transition-fast);
 
2142
  }
2143
 
2144
  .kanban-column.drag-over {
2145
- background: rgba(255, 255, 255, 0.035);
2146
- border-color: var(--border-medium);
2147
- box-shadow: inset 0 0 20px rgba(99, 102, 241, 0.05);
2148
  }
2149
 
2150
  .kanban-col-header {
2151
- padding: 14px 16px;
2152
  font-weight: 700;
2153
  font-size: 0.84rem;
2154
- border-bottom: 1px solid var(--border-subtle);
2155
  display: flex;
2156
  align-items: center;
2157
  justify-content: space-between;
@@ -2164,10 +2307,11 @@ input[type="date"]::-webkit-calendar-picker-indicator {
2164
  }
2165
 
2166
  .kanban-col-dot {
2167
- width: 8px;
2168
- height: 8px;
2169
  border-radius: 50%;
2170
  flex-shrink: 0;
 
2171
  }
2172
 
2173
  .kanban-col-dot.new { background: var(--status-new); }
@@ -2175,43 +2319,44 @@ input[type="date"]::-webkit-calendar-picker-indicator {
2175
  .kanban-col-dot.replied { background: var(--status-replied); }
2176
  .kanban-col-dot.closed { background: var(--status-closed); }
2177
 
2178
- .kanban-col-header.new { color: var(--status-new); }
2179
- .kanban-col-header.contacted { color: var(--status-contacted); }
2180
- .kanban-col-header.replied { color: var(--status-replied); }
2181
- .kanban-col-header.closed { color: var(--status-closed); }
2182
 
2183
  .col-count {
2184
- background: rgba(255,255,255,0.05);
2185
- padding: 2px 9px;
2186
  border-radius: var(--radius-full);
2187
  font-size: 0.74rem;
2188
  color: var(--text-muted);
2189
  font-weight: 600;
 
2190
  }
2191
 
2192
  .kanban-col-body {
2193
- padding: 10px;
2194
  flex: 1;
2195
  display: flex;
2196
  flex-direction: column;
2197
- gap: 8px;
2198
  overflow-y: auto;
2199
  }
2200
 
2201
  .kanban-card {
2202
  background: var(--bg-card);
2203
- border: 1px solid var(--border-subtle);
2204
- border-radius: var(--radius-sm);
2205
- padding: 14px;
2206
  cursor: grab;
2207
  position: relative;
2208
  transition: all var(--transition-fast);
 
2209
  }
2210
 
2211
  .kanban-card:hover {
2212
- border-color: var(--border-medium);
2213
- transform: translateY(-2px);
2214
- box-shadow: var(--shadow-md);
2215
  }
2216
 
2217
  .kanban-card:active { cursor: grabbing; }
@@ -2240,24 +2385,25 @@ input[type="date"]::-webkit-calendar-picker-indicator {
2240
  }
2241
 
2242
  .social-icon {
2243
- width: 24px;
2244
- height: 24px;
2245
  display: inline-flex;
2246
  align-items: center;
2247
  justify-content: center;
2248
  background: var(--bg-input);
2249
- border-radius: 5px;
2250
  text-decoration: none;
2251
  font-size: 0.75rem;
2252
  transition: var(--transition-fast);
 
2253
  }
2254
  .social-icon:hover {
2255
- background: var(--bg-glass-hover);
2256
- transform: scale(1.12);
2257
  }
2258
- .social-icon.email { color: #f87171; }
2259
- .social-icon.instagram { color: #f472b6; }
2260
- .social-icon.linkedin { color: #60a5fa; }
2261
 
2262
  /* ══════════════════════════════════════════════
2263
  ANIMATIONS
@@ -2390,13 +2536,24 @@ input[type="date"]::-webkit-calendar-picker-indicator {
2390
  }
2391
 
2392
  @media (max-width: 768px) {
 
 
 
 
 
 
 
 
 
 
2393
  .stats-grid {
2394
- grid-template-columns: repeat(2, 1fr);
2395
- gap: 8px;
2396
  }
2397
 
2398
  .stat-card {
2399
- padding: 14px 16px;
 
2400
  }
2401
 
2402
  .stat-card .stat-value {
@@ -2404,13 +2561,24 @@ input[type="date"]::-webkit-calendar-picker-indicator {
2404
  }
2405
 
2406
  .panel {
2407
- padding: 16px 14px;
2408
  border-radius: var(--radius-lg);
2409
  }
 
 
 
 
 
 
 
 
 
 
2410
 
2411
  .toolbar {
2412
  flex-direction: column;
2413
  align-items: stretch;
 
2414
  }
2415
 
2416
  .search-box {
@@ -2421,14 +2589,27 @@ input[type="date"]::-webkit-calendar-picker-indicator {
2421
  .search-kbd {
2422
  display: none;
2423
  }
 
 
 
 
 
 
 
 
 
 
 
2424
 
2425
  .leads-table {
2426
  font-size: 0.82rem;
 
 
2427
  }
2428
 
2429
  .leads-table th,
2430
  .leads-table td {
2431
- padding: 10px 10px;
2432
  }
2433
 
2434
  .hide-mobile {
@@ -2440,12 +2621,15 @@ input[type="date"]::-webkit-calendar-picker-indicator {
2440
  }
2441
 
2442
  .modal {
2443
- padding: 20px;
2444
- border-radius: var(--radius-lg);
 
2445
  }
2446
 
2447
  .pagination {
2448
  justify-content: center;
 
 
2449
  }
2450
 
2451
  .bulk-bar {
@@ -2480,7 +2664,7 @@ input[type="date"]::-webkit-calendar-picker-indicator {
2480
 
2481
  @media (max-width: 480px) {
2482
  .stats-grid {
2483
- grid-template-columns: 1fr 1fr;
2484
  }
2485
 
2486
  .stat-card:last-child {
@@ -2488,12 +2672,24 @@ input[type="date"]::-webkit-calendar-picker-indicator {
2488
  }
2489
 
2490
  .top-bar {
2491
- padding: 8px 0;
 
 
 
 
2492
  }
2493
 
2494
  .connection-text {
2495
  display: none;
2496
  }
 
 
 
 
 
 
 
 
2497
  }
2498
 
2499
  /* ══════════════════════════════════════════════
@@ -2517,7 +2713,7 @@ input[type="date"]::-webkit-calendar-picker-indicator {
2517
  .sidebar-mobile-overlay {
2518
  position: fixed;
2519
  inset: 0;
2520
- background: rgba(0,0,0,0.5);
2521
  z-index: 99;
2522
  opacity: 0;
2523
  visibility: hidden;
 
1
  /* ═══════════════════════════════════════════════════════════
2
+ LeadFlow Dashboard β€” Claymorphism Design v1
3
+ Soft, Extruded, Plastic-like UI with Pastel Palette
4
  ═══════════════════════════════════════════════════════════ */
5
 
6
  /* ──────────── CSS Variables / Design Tokens ──────────── */
7
  :root {
8
+ /* Backgrounds */
9
+ --bg-primary: #F0EBE3;
10
+ --bg-secondary: #F7F3EE;
11
+ --bg-tertiary: #EDE7DD;
12
+ --bg-card: #F5F0E8;
13
+ --bg-surface: #F7F3EE;
14
+ --bg-sidebar: #E8E0D4;
15
+ --bg-input: #EDE8E0;
16
+ --bg-input-focus: #E8E2D8;
17
+ --bg-hover: rgba(195, 177, 225, 0.12);
18
+ --bg-active: rgba(195, 177, 225, 0.2);
19
+
20
+ /* Borders */
21
+ --border-subtle: rgba(0, 0, 0, 0.04);
22
+ --border-medium: rgba(0, 0, 0, 0.08);
23
+ --border-focus: rgba(195, 177, 225, 0.6);
24
+
25
+ /* Text */
26
+ --text-primary: #3D3535;
27
+ --text-secondary: #6B5E5E;
28
+ --text-muted: #9E8F8F;
29
+ --text-link: #7B68AE;
30
+
31
+ /* Accent β€” Lavender */
32
+ --accent-primary: #C3B1E1;
33
+ --accent-secondary: #A78BCA;
34
+ --accent-tertiary: #8B6FB0;
35
+ --accent-glow: rgba(195, 177, 225, 0.25);
36
+ --accent-gradient: linear-gradient(135deg, #C3B1E1, #A78BCA, #D4A5E5);
37
+
38
+ /* Status Colors β€” Pastel */
39
+ --status-new: #7BB8D9;
40
+ --status-new-bg: rgba(167, 199, 231, 0.25);
41
+ --status-new-surface: #D6EAF5;
42
+ --status-contacted: #B39DDB;
43
+ --status-contacted-bg: rgba(179, 157, 219, 0.2);
44
+ --status-contacted-surface: #E8DEFA;
45
+ --status-replied: #E6C06B;
46
+ --status-replied-bg: rgba(255, 229, 160, 0.3);
47
+ --status-replied-surface: #FFF3D6;
48
+ --status-closed: #7CC9A0;
49
+ --status-closed-bg: rgba(168, 230, 207, 0.25);
50
+ --status-closed-surface: #D2F5E3;
51
+
52
+ /* Semantic Colors */
53
+ --success: #7CC9A0;
54
+ --success-bg: rgba(168, 230, 207, 0.25);
55
+ --danger: #E88F8F;
56
+ --danger-bg: rgba(255, 183, 178, 0.2);
57
+ --warning: #E6C06B;
58
+ --whatsapp: #4CAF76;
59
+ --whatsapp-bg: rgba(76, 175, 118, 0.12);
60
+ --whatsapp-surface: #D5F0E0;
61
+
62
+ /* Radii β€” Generous clay curves */
63
+ --radius-xs: 10px;
64
+ --radius-sm: 14px;
65
+ --radius-md: 18px;
66
+ --radius-lg: 22px;
67
+ --radius-xl: 26px;
68
+ --radius-2xl: 30px;
69
  --radius-full: 9999px;
70
 
71
+ /* Clay Shadows β€” The magic formula */
72
+ --clay-shadow:
73
+ 8px 8px 16px rgba(0, 0, 0, 0.07),
74
+ -6px -6px 14px rgba(255, 255, 255, 0.7),
75
+ inset 0 2px 3px rgba(255, 255, 255, 0.6);
76
+ --clay-shadow-hover:
77
+ 12px 12px 24px rgba(0, 0, 0, 0.09),
78
+ -8px -8px 18px rgba(255, 255, 255, 0.85),
79
+ inset 0 2px 4px rgba(255, 255, 255, 0.7);
80
+ --clay-shadow-active:
81
+ 4px 4px 8px rgba(0, 0, 0, 0.05),
82
+ -3px -3px 6px rgba(255, 255, 255, 0.5),
83
+ inset 0 1px 2px rgba(255, 255, 255, 0.4);
84
+ --clay-shadow-sm:
85
+ 5px 5px 10px rgba(0, 0, 0, 0.05),
86
+ -4px -4px 8px rgba(255, 255, 255, 0.6),
87
+ inset 0 1px 2px rgba(255, 255, 255, 0.5);
88
+ --clay-inset:
89
+ inset 4px 4px 8px rgba(0, 0, 0, 0.06),
90
+ inset -3px -3px 6px rgba(255, 255, 255, 0.6);
91
+ --clay-inset-focus:
92
+ inset 5px 5px 10px rgba(0, 0, 0, 0.07),
93
+ inset -4px -4px 8px rgba(255, 255, 255, 0.7),
94
+ 0 0 0 3px rgba(195, 177, 225, 0.25);
95
+
96
+ /* Legacy shadow compat */
97
+ --shadow-sm: var(--clay-shadow-sm);
98
+ --shadow-md: var(--clay-shadow);
99
+ --shadow-lg: var(--clay-shadow-hover);
100
+ --shadow-xl: 16px 16px 32px rgba(0, 0, 0, 0.1), -10px -10px 24px rgba(255, 255, 255, 0.8);
101
+ --shadow-inset: var(--clay-inset);
102
+
103
+ /* Transitions */
104
+ --transition-fast: 180ms cubic-bezier(0.4, 0, 0.2, 1);
105
+ --transition-base: 280ms cubic-bezier(0.4, 0, 0.2, 1);
106
  --transition-slow: 400ms cubic-bezier(0.4, 0, 0.2, 1);
107
  --transition-spring: 500ms cubic-bezier(0.34, 1.56, 0.64, 1);
108
 
109
+ /* Layout */
110
  --sidebar-width: 240px;
111
  --sidebar-collapsed-width: 64px;
112
  --top-bar-height: 56px;
 
125
  }
126
 
127
  body {
128
+ font-family: 'Poppins', 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
129
  background: var(--bg-primary);
130
  color: var(--text-primary);
131
  min-height: 100vh;
132
+ overflow-x: hidden !important;
133
  line-height: 1.6;
134
  -webkit-font-smoothing: antialiased;
135
  -moz-osx-font-smoothing: grayscale;
136
  }
137
 
138
+ /* Soft warm gradient background */
139
  body::before {
140
  content: '';
141
  position: fixed;
142
  top: 0; left: 0; right: 0; bottom: 0;
143
  background:
144
+ radial-gradient(ellipse 70% 50% at 10% 10%, rgba(195, 177, 225, 0.12), transparent),
145
+ radial-gradient(ellipse 50% 40% at 90% 90%, rgba(168, 230, 207, 0.1), transparent),
146
+ radial-gradient(ellipse 60% 50% at 50% 50%, rgba(255, 229, 160, 0.08), transparent);
147
  pointer-events: none;
148
  z-index: 0;
149
  }
150
 
151
+ /* Remove dark noise texture β€” claymorphism uses clean surfaces */
152
  body::after {
153
+ display: none;
 
 
 
 
 
 
154
  }
155
 
156
  /* ──────────── Scrollbar ──────────── */
157
+ ::-webkit-scrollbar { width: 8px; height: 8px; }
158
+ ::-webkit-scrollbar-track { background: rgba(0,0,0,0.02); border-radius: 4px; }
159
+ ::-webkit-scrollbar-thumb {
160
+ background: rgba(195, 177, 225, 0.35);
161
+ border-radius: 8px;
162
+ border: 2px solid var(--bg-primary);
163
+ }
164
+ ::-webkit-scrollbar-thumb:hover { background: rgba(195, 177, 225, 0.55); }
165
 
166
  /* ══════════════════════════════════════════════
167
+ SIDEBAR β€” Clay Panel
168
  ══════════════════════════════════════════════ */
169
 
170
  .sidebar {
 
174
  width: var(--sidebar-width);
175
  height: 100vh;
176
  background: var(--bg-sidebar);
177
+ border-right: none;
178
+ box-shadow:
179
+ 6px 0 16px rgba(0, 0, 0, 0.05),
180
+ inset -1px 0 0 rgba(255, 255, 255, 0.5),
181
+ inset 0 2px 4px rgba(255, 255, 255, 0.4);
182
  z-index: 100;
183
  display: flex;
184
  flex-direction: column;
 
205
  align-items: center;
206
  justify-content: space-between;
207
  padding: 18px 16px;
208
+ border-bottom: 1px solid rgba(0, 0, 0, 0.05);
209
  min-height: 60px;
210
  }
211
 
 
217
  }
218
 
219
  .sidebar-logo-icon {
220
+ width: 40px;
221
+ height: 40px;
222
  background: var(--accent-gradient);
223
  border-radius: var(--radius-sm);
224
  display: flex;
 
226
  justify-content: center;
227
  font-size: 18px;
228
  flex-shrink: 0;
229
+ box-shadow: var(--clay-shadow-sm);
230
  position: relative;
231
  }
232
 
 
235
  position: absolute;
236
  inset: -4px;
237
  border-radius: var(--radius-md);
238
+ border: 2px solid var(--accent-primary);
239
  opacity: 0;
240
  animation: logoPulse 4s ease-in-out infinite;
241
  }
242
 
243
  .sidebar-logo-text {
244
+ font-size: 1.2rem;
245
  font-weight: 800;
246
  letter-spacing: -0.3px;
247
+ color: var(--accent-tertiary);
 
 
 
248
  white-space: nowrap;
249
  transition: opacity var(--transition-fast);
250
  }
251
 
252
  .sidebar-toggle {
253
+ background: var(--bg-card);
254
  border: none;
255
  color: var(--text-muted);
256
  cursor: pointer;
257
+ padding: 8px;
258
  border-radius: var(--radius-xs);
259
  transition: var(--transition-fast);
260
  display: flex;
261
  align-items: center;
262
  flex-shrink: 0;
263
+ box-shadow: var(--clay-shadow-sm);
264
  }
265
  .sidebar-toggle:hover {
266
+ background: var(--bg-secondary);
267
  color: var(--text-primary);
268
+ transform: translateY(-1px);
269
+ box-shadow: var(--clay-shadow);
270
+ }
271
+ .sidebar-toggle:active {
272
+ transform: translateY(1px);
273
+ box-shadow: var(--clay-shadow-active);
274
  }
275
 
276
  .sidebar-menu {
277
  flex: 1;
278
+ padding: 14px 10px;
279
  display: flex;
280
  flex-direction: column;
281
+ gap: 4px;
282
  overflow-y: auto;
283
  }
284
 
 
286
  display: flex;
287
  align-items: center;
288
  gap: 12px;
289
+ padding: 11px 14px;
290
  border-radius: var(--radius-sm);
291
  color: var(--text-secondary);
292
  text-decoration: none;
 
304
  }
305
 
306
  .sidebar-link:hover {
307
+ background: var(--bg-card);
308
  color: var(--text-primary);
309
+ box-shadow: var(--clay-shadow-sm);
310
+ transform: translateX(2px);
311
  }
312
 
313
  .sidebar-link.active {
314
+ background: var(--bg-card);
315
  color: var(--accent-tertiary);
316
+ box-shadow: var(--clay-shadow-sm);
317
+ font-weight: 600;
318
  }
319
 
320
  .sidebar-link.active::before {
321
  content: '';
322
  position: absolute;
323
  left: 0;
324
+ top: 8px;
325
+ bottom: 8px;
326
+ width: 4px;
327
+ border-radius: 0 4px 4px 0;
328
  background: var(--accent-gradient);
329
  }
330
 
331
  .sidebar-footer {
332
+ padding: 12px 10px;
333
+ border-top: 1px solid rgba(0, 0, 0, 0.05);
334
  display: flex;
335
  flex-direction: column;
336
  gap: 4px;
 
338
 
339
  .sidebar-divider {
340
  height: 1px;
341
+ background: rgba(0, 0, 0, 0.05);
342
  margin: 4px 8px;
343
  }
344
 
 
346
  display: flex;
347
  align-items: center;
348
  justify-content: space-between;
349
+ padding: 8px 14px;
350
  font-size: 0.78rem;
351
  color: var(--text-muted);
352
  cursor: pointer;
 
354
  transition: var(--transition-fast);
355
  }
356
  .sidebar-kbd-hint:hover {
357
+ background: var(--bg-card);
358
  color: var(--text-secondary);
359
  }
360
  .sidebar-kbd-hint kbd {
361
+ background: var(--bg-card);
362
+ padding: 3px 8px;
363
+ border-radius: 8px;
364
  font-size: 0.72rem;
365
  font-family: inherit;
366
+ border: none;
367
+ box-shadow: var(--clay-shadow-sm);
368
+ color: var(--text-secondary);
369
  }
370
 
371
  /* ══════════════════════════════════════════════
 
385
  margin-left: var(--sidebar-collapsed-width);
386
  }
387
 
388
+ /* ──────────── Top Bar β€” Floating Clay + Glass Combo ──────────── */
389
  .top-bar {
390
  position: sticky;
391
  top: 0;
 
394
  align-items: center;
395
  justify-content: space-between;
396
  padding: 12px 0;
397
+ margin-bottom: 24px;
398
+ background: rgba(240, 235, 227, 0.75);
399
+ backdrop-filter: blur(20px);
400
+ -webkit-backdrop-filter: blur(20px);
401
  }
402
 
403
  .top-bar-left {
 
408
 
409
  .mobile-menu-btn {
410
  display: none;
411
+ background: var(--bg-card);
412
  border: none;
413
  color: var(--text-secondary);
414
  cursor: pointer;
415
+ padding: 8px;
416
  border-radius: var(--radius-xs);
417
+ box-shadow: var(--clay-shadow-sm);
418
  }
419
 
420
  .breadcrumb {
 
436
 
437
  .breadcrumb-current {
438
  color: var(--text-secondary);
439
+ font-weight: 600;
440
  }
441
 
442
  .top-bar-right {
 
455
  .connection-status {
456
  display: flex;
457
  align-items: center;
458
+ gap: 7px;
459
+ padding: 7px 14px;
460
+ background: var(--bg-card);
461
+ border: none;
462
  border-radius: var(--radius-full);
463
  font-size: 0.76rem;
464
  color: var(--text-muted);
465
+ box-shadow: var(--clay-shadow-sm);
466
  }
467
 
468
  .connection-dot {
469
+ width: 8px;
470
+ height: 8px;
471
  border-radius: 50%;
472
  background: var(--success);
473
+ box-shadow: 0 0 8px rgba(124, 201, 160, 0.5);
474
  animation: statusPulse 2s ease-in-out infinite;
475
  }
476
 
477
  .connection-status.disconnected .connection-dot {
478
  background: var(--danger);
479
+ box-shadow: 0 0 8px rgba(232, 143, 143, 0.5);
480
  }
481
 
482
  .connection-text {
483
  letter-spacing: 0.3px;
484
+ font-weight: 500;
485
  }
486
 
487
  /* ══════════════════════════════════════════════
488
+ STATS SECTION β€” Clay Tiles
489
  ══════════════════════════════════════════════ */
490
 
491
  .stats-grid {
492
  display: grid;
493
  grid-template-columns: repeat(5, 1fr);
494
+ gap: 18px;
495
+ margin-bottom: 24px;
496
  }
497
 
498
  .stat-card {
499
+ background: var(--bg-card);
500
+ border: none;
501
+ border-radius: var(--radius-xl);
502
+ padding: 22px 24px;
 
 
503
  position: relative;
504
  overflow: hidden;
505
  cursor: default;
506
  transition: all var(--transition-base);
507
+ box-shadow: var(--clay-shadow);
508
  animation: statPop 0.5s cubic-bezier(0.34, 1.56, 0.64, 1) backwards;
509
  }
510
 
 
516
 
517
  .stat-card:hover {
518
  transform: translateY(-4px) scale(1.01);
519
+ box-shadow: var(--clay-shadow-hover);
 
520
  }
521
 
522
  .stat-card-top {
 
527
  }
528
 
529
  .stat-card .stat-icon {
530
+ width: 44px;
531
+ height: 44px;
532
  border-radius: var(--radius-md);
533
  display: flex;
534
  align-items: center;
535
  justify-content: center;
536
  font-size: 18px;
537
  transition: var(--transition-base);
538
+ box-shadow: var(--clay-shadow-sm);
539
  }
540
 
541
  .stat-card:hover .stat-icon {
 
545
  .stat-card .stat-trend {
546
  font-size: 0.72rem;
547
  font-weight: 600;
548
+ padding: 4px 10px;
549
  border-radius: var(--radius-full);
550
  display: flex;
551
  align-items: center;
552
  gap: 3px;
553
+ box-shadow: var(--clay-shadow-sm);
554
  }
555
 
556
  .stat-card .stat-value {
557
  font-size: 2.2rem;
558
+ font-weight: 800;
559
  line-height: 1;
560
  margin-bottom: 4px;
561
  letter-spacing: -1px;
 
565
  .stat-card .stat-label {
566
  font-size: 0.72rem;
567
  color: var(--text-muted);
568
+ font-weight: 600;
569
  text-transform: uppercase;
570
  letter-spacing: 1px;
571
  }
572
 
573
+ /* Stat card color variants β€” soft pastel tints */
574
+ .stat-card.total { background: linear-gradient(135deg, #F0EAF7, #F5F0E8); }
575
+ .stat-card.total .stat-icon { background: rgba(195, 177, 225, 0.25); color: var(--accent-tertiary); }
576
  .stat-card.total .stat-value { color: var(--accent-tertiary); }
577
+ .stat-card.total .stat-trend { background: rgba(195, 177, 225, 0.2); color: var(--accent-tertiary); }
578
 
579
+ .stat-card.new-stat { background: linear-gradient(135deg, #E5F2F8, #F5F0E8); }
580
  .stat-card.new-stat .stat-icon { background: var(--status-new-bg); color: var(--status-new); }
581
  .stat-card.new-stat .stat-value { color: var(--status-new); }
582
 
583
+ .stat-card.contacted { background: linear-gradient(135deg, #EDE4F7, #F5F0E8); }
584
  .stat-card.contacted .stat-icon { background: var(--status-contacted-bg); color: var(--status-contacted); }
585
  .stat-card.contacted .stat-value { color: var(--status-contacted); }
586
 
587
+ .stat-card.replied { background: linear-gradient(135deg, #FFF5E0, #F5F0E8); }
588
  .stat-card.replied .stat-icon { background: var(--status-replied-bg); color: var(--status-replied); }
589
  .stat-card.replied .stat-value { color: var(--status-replied); }
590
 
591
+ .stat-card.closed { background: linear-gradient(135deg, #E5F5EC, #F5F0E8); }
592
  .stat-card.closed .stat-icon { background: var(--status-closed-bg); color: var(--status-closed); }
593
  .stat-card.closed .stat-value { color: var(--status-closed); }
594
 
595
  /* Progress bar under each stat card */
596
  .stat-bar {
597
+ margin-top: 16px;
598
+ height: 6px;
599
+ background: rgba(0, 0, 0, 0.04);
600
  border-radius: var(--radius-full);
601
  overflow: hidden;
602
+ box-shadow: inset 2px 2px 4px rgba(0, 0, 0, 0.04), inset -1px -1px 2px rgba(255, 255, 255, 0.5);
603
  }
604
 
605
  .stat-bar-fill {
 
610
  }
611
 
612
  .stat-card.total .stat-bar-fill { background: var(--accent-gradient); }
613
+ .stat-card.new-stat .stat-bar-fill { background: linear-gradient(90deg, rgba(123, 184, 217, 0.4), var(--status-new)); }
614
+ .stat-card.contacted .stat-bar-fill { background: linear-gradient(90deg, rgba(179, 157, 219, 0.4), var(--status-contacted)); }
615
+ .stat-card.replied .stat-bar-fill { background: linear-gradient(90deg, rgba(230, 192, 107, 0.4), var(--status-replied)); }
616
+ .stat-card.closed .stat-bar-fill { background: linear-gradient(90deg, rgba(124, 201, 160, 0.4), var(--status-closed)); }
617
 
618
+ /* Decorative glow β€” subtle pastel circle */
619
  .stat-card::after {
620
  content: '';
621
  position: absolute;
622
  top: -20px; right: -20px;
623
+ width: 90px; height: 90px;
624
  border-radius: 50%;
625
  filter: blur(40px);
626
+ opacity: 0.15;
627
  pointer-events: none;
628
  transition: opacity var(--transition-base);
629
  }
630
+ .stat-card:hover::after { opacity: 0.25; }
631
  .stat-card.total::after { background: var(--accent-primary); }
632
  .stat-card.new-stat::after { background: var(--status-new); }
633
  .stat-card.contacted::after { background: var(--status-contacted); }
 
639
  ══════════════════════════════════════════════ */
640
 
641
  .funnel-panel {
642
+ margin-bottom: 24px;
643
  }
644
 
645
  .funnel-legend {
 
654
  gap: 6px;
655
  font-size: 0.78rem;
656
  color: var(--text-muted);
657
+ font-weight: 500;
658
  }
659
 
660
  .funnel-legend-item .dot {
661
+ width: 10px;
662
+ height: 10px;
663
  border-radius: 50%;
664
+ box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1), -1px -1px 2px rgba(255, 255, 255, 0.8);
665
  }
666
  .dot.new { background: var(--status-new); }
667
  .dot.contacted { background: var(--status-contacted); }
 
671
  .funnel-bars {
672
  display: flex;
673
  flex-direction: column;
674
+ gap: 14px;
675
+ margin-top: 10px;
676
  }
677
 
678
  .funnel-step {
 
683
 
684
  .funnel-bar-track {
685
  flex: 1;
686
+ height: 32px;
687
+ background: var(--bg-input);
688
  border-radius: var(--radius-sm);
689
  overflow: hidden;
690
  position: relative;
691
+ box-shadow: inset 3px 3px 6px rgba(0, 0, 0, 0.04), inset -2px -2px 4px rgba(255, 255, 255, 0.5);
692
  }
693
 
694
  .funnel-bar-fill {
 
699
  min-width: 0;
700
  }
701
 
702
+ .funnel-bar-fill.new { background: linear-gradient(90deg, var(--status-new-surface), var(--status-new)); }
703
+ .funnel-bar-fill.contacted { background: linear-gradient(90deg, var(--status-contacted-surface), var(--status-contacted)); }
704
+ .funnel-bar-fill.replied { background: linear-gradient(90deg, var(--status-replied-surface), var(--status-replied)); }
705
+ .funnel-bar-fill.closed { background: linear-gradient(90deg, var(--status-closed-surface), var(--status-closed)); }
706
 
707
  .funnel-step-info {
708
  display: flex;
 
716
  color: var(--text-muted);
717
  text-transform: uppercase;
718
  letter-spacing: 0.5px;
719
+ font-weight: 600;
720
  }
721
 
722
  .funnel-step-value {
 
727
  }
728
 
729
  /* ══════════════════════════════════════════════
730
+ SECTION PANELS β€” Clay Cards
731
  ══════════════════════════════════════════════ */
732
 
733
  .panel {
734
+ background: var(--bg-card);
735
+ border: none;
 
 
736
  border-radius: var(--radius-xl);
737
+ padding: 24px 28px;
738
+ margin-bottom: 24px;
739
  animation: panelReveal 0.6s cubic-bezier(0.16, 1, 0.3, 1) backwards;
740
+ box-shadow: var(--clay-shadow);
741
  position: relative;
742
  }
743
 
 
750
  display: flex;
751
  align-items: center;
752
  justify-content: space-between;
753
+ margin-bottom: 20px;
754
  flex-wrap: wrap;
755
  gap: 12px;
756
  }
757
 
758
  .panel-title {
759
+ font-size: 1.05rem;
760
  font-weight: 700;
761
  display: flex;
762
  align-items: center;
763
  gap: 10px;
764
  letter-spacing: -0.2px;
765
+ color: var(--text-primary);
766
  }
767
 
768
  .panel-title svg {
769
+ opacity: 0.5;
770
+ color: var(--accent-tertiary);
771
  }
772
 
773
  /* Collapsible panels */
 
778
  }
779
 
780
  .collapsible-panel.expanded .panel-header.clickable {
781
+ margin-bottom: 20px;
782
  }
783
 
784
  .panel-collapse-icon {
785
  color: var(--text-muted);
786
  transition: transform var(--transition-base);
787
  display: flex;
788
+ background: var(--bg-input);
789
+ padding: 6px;
790
+ border-radius: var(--radius-xs);
791
+ box-shadow: var(--clay-shadow-sm);
792
  }
793
 
794
  .collapsible-panel.expanded .panel-collapse-icon {
 
810
  .lead-count-badge {
811
  background: var(--accent-glow);
812
  color: var(--accent-tertiary);
813
+ padding: 3px 12px;
814
  border-radius: var(--radius-full);
815
  font-size: 0.76rem;
816
  font-weight: 700;
817
  letter-spacing: 0.3px;
818
+ box-shadow: var(--clay-shadow-sm);
819
  }
820
 
821
  /* ══════════════════════════════════════════════
 
825
  .scraper-form {
826
  display: flex;
827
  flex-direction: column;
828
+ gap: 16px;
829
  }
830
 
831
  .form-row {
832
  display: flex;
833
+ gap: 14px;
834
  flex-wrap: wrap;
835
  align-items: flex-end;
836
  }
 
838
  .form-group {
839
  display: flex;
840
  flex-direction: column;
841
+ gap: 7px;
842
  flex: 1;
843
  min-width: 180px;
844
  }
 
859
  font-size: 0.72rem;
860
  }
861
 
862
+ /* ──── Inputs β€” Clay Inset (Pressed-in) ──── */
863
  .form-group input,
864
  .form-group select,
865
  .form-group textarea {
866
  background: var(--bg-input);
867
+ border: none;
868
  border-radius: var(--radius-sm);
869
+ padding: 12px 16px;
870
  color: var(--text-primary);
871
  font-family: inherit;
872
  font-size: 0.88rem;
873
  transition: all var(--transition-fast);
874
  outline: none;
875
+ box-shadow: var(--clay-inset);
876
  }
877
 
878
  .form-group input:focus,
879
  .form-group select:focus,
880
  .form-group textarea:focus {
881
  background: var(--bg-input-focus);
882
+ box-shadow: var(--clay-inset-focus);
 
883
  }
884
 
885
  .form-group input::placeholder,
 
893
 
894
  .input-with-icon svg {
895
  position: absolute;
896
+ left: 14px;
897
  top: 50%;
898
  transform: translateY(-50%);
899
  color: var(--text-muted);
 
901
  }
902
 
903
  .input-with-icon input {
904
+ padding-left: 40px;
905
  width: 100%;
906
  }
907
 
908
+ /* Toggle switch β€” Clay style */
909
  .toggle-label {
910
  display: flex;
911
  align-items: center;
 
918
 
919
  .toggle-switch {
920
  position: relative;
921
+ width: 42px;
922
+ height: 24px;
923
  flex-shrink: 0;
924
  }
925
 
 
933
  position: absolute;
934
  inset: 0;
935
  cursor: pointer;
936
+ background: var(--bg-input);
937
  border-radius: var(--radius-full);
938
  transition: var(--transition-fast);
939
+ box-shadow: inset 3px 3px 6px rgba(0, 0, 0, 0.06), inset -2px -2px 4px rgba(255, 255, 255, 0.5);
940
  }
941
 
942
  .toggle-slider::before {
943
  content: '';
944
  position: absolute;
945
+ width: 16px;
946
+ height: 16px;
947
+ left: 4px;
948
+ top: 4px;
949
  background: var(--text-muted);
950
  border-radius: 50%;
951
  transition: var(--transition-fast);
952
+ box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1);
953
  }
954
 
955
  .toggle-switch input:checked + .toggle-slider {
956
+ background: rgba(195, 177, 225, 0.3);
957
  }
958
 
959
  .toggle-switch input:checked + .toggle-slider::before {
960
  transform: translateX(18px);
961
+ background: var(--accent-secondary);
962
+ box-shadow: 2px 2px 6px rgba(167, 139, 202, 0.3);
963
  }
964
 
965
  /* Scrape status with progress bar */
966
  .scrape-status {
967
  display: flex;
968
  align-items: center;
969
+ gap: 14px;
970
+ margin-top: 16px;
971
+ padding: 16px 20px;
972
  background: var(--bg-input);
973
  border-radius: var(--radius-md);
974
  font-size: 0.84rem;
975
  color: var(--text-secondary);
976
+ border: none;
977
  animation: fadeIn 0.3s ease;
978
+ box-shadow: var(--clay-inset);
979
  }
980
 
981
  .scrape-status.running {
982
+ background: linear-gradient(135deg, rgba(195, 177, 225, 0.1), rgba(167, 199, 231, 0.1));
983
+ box-shadow: var(--clay-inset);
984
  }
985
 
986
  .scrape-status.completed {
987
+ background: linear-gradient(135deg, rgba(168, 230, 207, 0.15), rgba(124, 201, 160, 0.1));
988
+ box-shadow: var(--clay-inset);
989
  }
990
 
991
  .scrape-status.failed {
992
+ background: rgba(255, 183, 178, 0.15);
993
+ box-shadow: var(--clay-inset);
994
  }
995
 
996
  .scrape-progress-wrap {
 
1001
  }
1002
 
1003
  .scrape-progress-bar {
1004
+ height: 6px;
1005
+ background: rgba(0, 0, 0, 0.04);
1006
  border-radius: var(--radius-full);
1007
  overflow: hidden;
1008
+ box-shadow: inset 2px 2px 4px rgba(0, 0, 0, 0.04);
1009
  }
1010
 
1011
  .scrape-progress-fill {
 
1020
  content: '';
1021
  position: absolute;
1022
  top: 0; left: 0; right: 0; bottom: 0;
1023
+ background: linear-gradient(90deg, transparent, rgba(255,255,255,0.4), transparent);
1024
  animation: shimmer 1.5s infinite;
1025
  }
1026
 
1027
  .spinner {
1028
+ width: 20px;
1029
+ height: 20px;
1030
+ border: 2.5px solid rgba(0, 0, 0, 0.06);
1031
+ border-top: 2.5px solid var(--accent-secondary);
1032
  border-radius: 50%;
1033
  animation: spin 0.7s linear infinite;
1034
  flex-shrink: 0;
 
1040
 
1041
  .toolbar {
1042
  display: flex;
1043
+ gap: 12px;
1044
  flex-wrap: wrap;
1045
  align-items: center;
1046
  }
 
1054
  .search-box input {
1055
  width: 100%;
1056
  background: var(--bg-input);
1057
+ border: none;
1058
  border-radius: var(--radius-full);
1059
+ padding: 11px 60px 11px 42px;
1060
  color: var(--text-primary);
1061
  font-family: inherit;
1062
  font-size: 0.84rem;
1063
  transition: var(--transition-fast);
1064
  outline: none;
1065
+ box-shadow: var(--clay-inset);
1066
  }
1067
 
1068
  .search-box input:focus {
1069
  background: var(--bg-input-focus);
1070
+ box-shadow: var(--clay-inset-focus);
 
1071
  }
1072
 
1073
  .search-box input::placeholder {
 
1076
 
1077
  .search-box .search-icon {
1078
  position: absolute;
1079
+ left: 15px;
1080
  top: 50%;
1081
  transform: translateY(-50%);
1082
  color: var(--text-muted);
 
1085
 
1086
  .search-kbd {
1087
  position: absolute;
1088
+ right: 12px;
1089
  top: 50%;
1090
  transform: translateY(-50%);
1091
+ background: var(--bg-card);
1092
+ padding: 3px 9px;
1093
+ border-radius: 8px;
1094
  font-size: 0.68rem;
1095
  font-family: inherit;
1096
  color: var(--text-muted);
1097
  font-weight: 600;
1098
+ border: none;
1099
  pointer-events: none;
1100
+ box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.04), -1px -1px 2px rgba(255, 255, 255, 0.5);
1101
  }
1102
 
1103
  /* View toggle buttons */
 
1105
  display: flex;
1106
  background: var(--bg-input);
1107
  border-radius: var(--radius-sm);
1108
+ border: none;
1109
  overflow: hidden;
1110
+ box-shadow: var(--clay-inset);
1111
  }
1112
 
1113
  .view-toggle-btn {
1114
  background: transparent;
1115
  border: none;
1116
+ padding: 9px 14px;
1117
  color: var(--text-muted);
1118
  cursor: pointer;
1119
  display: flex;
 
1124
 
1125
  .view-toggle-btn:hover {
1126
  color: var(--text-secondary);
1127
+ background: rgba(255, 255, 255, 0.4);
1128
  }
1129
 
1130
  .view-toggle-btn.active {
1131
+ background: var(--bg-card);
1132
  color: var(--accent-tertiary);
1133
+ box-shadow: var(--clay-shadow-sm);
1134
+ border-radius: var(--radius-xs);
1135
+ margin: 3px;
1136
  }
1137
 
1138
  .filter-select {
1139
  background: var(--bg-input);
1140
+ border: none;
1141
  border-radius: var(--radius-full);
1142
+ padding: 10px 34px 10px 16px;
1143
  color: var(--text-primary);
1144
  font-family: inherit;
1145
  font-size: 0.84rem;
 
1149
  min-width: 130px;
1150
  -webkit-appearance: none;
1151
  appearance: none;
1152
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239E8F8F' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
1153
  background-repeat: no-repeat;
1154
  background-position: right 12px center;
1155
+ box-shadow: var(--clay-inset);
1156
  }
1157
 
1158
  .filter-select:focus {
1159
+ box-shadow: var(--clay-inset-focus);
 
1160
  }
1161
 
1162
  .filter-select option {
 
1165
  }
1166
 
1167
  /* ═══════════════════════════════════════════���══
1168
+ BUTTONS β€” Pill-shaped Clay 3D
1169
  ══════════════════════════════════════════════ */
1170
 
1171
  .btn {
 
1173
  align-items: center;
1174
  justify-content: center;
1175
  gap: 7px;
1176
+ padding: 10px 22px;
1177
+ border: none;
1178
+ border-radius: var(--radius-full);
1179
  font-family: inherit;
1180
  font-size: 0.82rem;
1181
  font-weight: 600;
 
1185
  text-decoration: none;
1186
  position: relative;
1187
  overflow: hidden;
1188
+ box-shadow: var(--clay-shadow-sm);
1189
+ }
1190
+
1191
+ .btn:hover {
1192
+ transform: translateY(-2px);
1193
+ box-shadow: var(--clay-shadow);
1194
  }
1195
 
1196
  .btn:active {
1197
+ transform: translateY(1px) scale(0.97);
1198
+ box-shadow: var(--clay-shadow-active);
1199
  }
1200
 
1201
  .btn-primary {
1202
  background: var(--accent-gradient);
1203
  color: #fff;
1204
+ box-shadow:
1205
+ 6px 6px 12px rgba(167, 139, 202, 0.3),
1206
+ -4px -4px 8px rgba(255, 255, 255, 0.6),
1207
+ inset 0 2px 3px rgba(255, 255, 255, 0.4);
1208
  }
1209
 
1210
  .btn-primary::before {
1211
  content: '';
1212
  position: absolute;
1213
  inset: 0;
1214
+ background: linear-gradient(135deg, rgba(255,255,255,0.2), transparent);
1215
  opacity: 0;
1216
  transition: var(--transition-fast);
1217
+ border-radius: inherit;
1218
  }
1219
 
1220
  .btn-primary:hover {
1221
+ box-shadow:
1222
+ 8px 8px 18px rgba(167, 139, 202, 0.35),
1223
+ -6px -6px 12px rgba(255, 255, 255, 0.7),
1224
+ inset 0 2px 4px rgba(255, 255, 255, 0.5);
1225
+ transform: translateY(-3px);
1226
  }
1227
 
1228
  .btn-primary:hover::before {
1229
  opacity: 1;
1230
  }
1231
 
1232
+ .btn-primary:active {
1233
+ transform: translateY(1px) scale(0.97);
1234
+ box-shadow:
1235
+ 3px 3px 6px rgba(167, 139, 202, 0.2),
1236
+ -2px -2px 4px rgba(255, 255, 255, 0.4),
1237
+ inset 0 1px 2px rgba(255, 255, 255, 0.3);
1238
+ }
1239
+
1240
  .btn-primary:disabled {
1241
+ opacity: 0.5;
1242
  cursor: not-allowed;
1243
  transform: none;
1244
+ box-shadow: var(--clay-shadow-sm);
1245
  }
1246
 
1247
  .btn-secondary {
1248
+ background: var(--bg-card);
1249
  color: var(--text-primary);
 
1250
  }
1251
 
1252
  .btn-secondary:hover {
1253
+ background: var(--bg-secondary);
 
 
1254
  }
1255
 
1256
  .btn-success {
1257
+ background: var(--status-closed-surface);
1258
+ color: #4A9A72;
 
1259
  }
1260
  .btn-success:hover {
1261
+ box-shadow: var(--clay-shadow), 0 0 16px rgba(124, 201, 160, 0.2);
 
1262
  }
1263
 
1264
  .btn-danger {
1265
+ background: rgba(255, 183, 178, 0.3);
1266
+ color: #C75050;
 
1267
  }
1268
  .btn-danger:hover {
1269
+ box-shadow: var(--clay-shadow), 0 0 16px rgba(232, 143, 143, 0.2);
 
1270
  }
1271
 
1272
  .btn-whatsapp {
1273
+ background: var(--whatsapp-surface);
1274
+ color: #3A8A5C;
 
1275
  }
1276
  .btn-whatsapp:hover {
1277
+ box-shadow: var(--clay-shadow), 0 0 16px rgba(76, 175, 118, 0.2);
 
1278
  }
1279
 
1280
  .btn-sm {
1281
+ padding: 7px 14px;
1282
  font-size: 0.76rem;
1283
+ border-radius: var(--radius-full);
1284
  }
1285
 
1286
  .btn-icon {
1287
+ padding: 8px;
1288
+ border-radius: var(--radius-sm);
1289
  font-size: 0.9rem;
1290
  }
1291
 
1292
  .btn-ghost {
1293
  background: transparent;
1294
  color: var(--text-secondary);
1295
+ box-shadow: none;
1296
+ padding: 7px 12px;
1297
  }
1298
  .btn-ghost:hover {
1299
+ background: var(--bg-input);
1300
  color: var(--text-primary);
1301
+ box-shadow: var(--clay-shadow-sm);
1302
  }
1303
 
1304
  .btn-ghost-accent {
1305
  background: transparent;
1306
  color: var(--text-secondary);
1307
+ box-shadow: none;
1308
  }
1309
  .btn-ghost-accent:hover {
1310
+ background: rgba(195, 177, 225, 0.15);
1311
  color: var(--accent-tertiary);
1312
+ box-shadow: var(--clay-shadow-sm);
1313
  }
1314
 
1315
  .btn-scrape-start {
1316
+ padding: 14px 32px;
1317
+ font-size: 0.9rem;
1318
+ border-radius: var(--radius-full);
1319
  }
1320
 
1321
  /* ══════════════════════════════════════════════
 
1325
  .bulk-bar {
1326
  display: flex;
1327
  align-items: center;
1328
+ gap: 14px;
1329
+ padding: 12px 20px;
1330
+ background: linear-gradient(135deg, rgba(195, 177, 225, 0.12), rgba(212, 165, 229, 0.08));
1331
+ border: none;
1332
+ border-radius: var(--radius-lg);
1333
+ margin-bottom: 16px;
1334
  animation: slideDown 0.3s ease;
1335
+ box-shadow: var(--clay-shadow-sm);
1336
  }
1337
 
1338
  .bulk-bar .bulk-count {
 
1351
 
1352
  .bulk-bar .bulk-actions {
1353
  display: flex;
1354
+ gap: 8px;
1355
  flex-wrap: wrap;
1356
  }
1357
 
1358
  /* ══════════════════════════════════════════════
1359
+ LEADS TABLE β€” Clay Rows
1360
  ══════════════════════════════════════════════ */
1361
 
1362
  .table-wrapper {
1363
  overflow-x: auto;
1364
+ border-radius: var(--radius-lg);
1365
  margin-top: 4px;
1366
  }
1367
 
1368
  .leads-table {
1369
  width: 100%;
1370
  border-collapse: separate;
1371
+ border-spacing: 0 6px;
1372
  font-size: 0.85rem;
1373
  }
1374
 
 
1379
  }
1380
 
1381
  .leads-table th {
1382
+ background: var(--bg-tertiary);
1383
+ padding: 12px 16px;
1384
  text-align: left;
1385
  font-weight: 600;
1386
  font-size: 0.7rem;
1387
  color: var(--text-muted);
1388
  text-transform: uppercase;
1389
  letter-spacing: 0.8px;
1390
+ border-bottom: none;
1391
  white-space: nowrap;
1392
  user-select: none;
1393
  }
1394
 
1395
+ .leads-table th:first-child { border-radius: var(--radius-sm) 0 0 var(--radius-sm); }
1396
+ .leads-table th:last-child { border-radius: 0 var(--radius-sm) var(--radius-sm) 0; }
1397
+
1398
  .leads-table td {
1399
+ padding: 14px 16px;
1400
+ border-bottom: none;
1401
  vertical-align: middle;
1402
  transition: var(--transition-fast);
1403
+ background: var(--bg-card);
1404
  }
1405
 
1406
+ .leads-table td:first-child { border-radius: var(--radius-sm) 0 0 var(--radius-sm); }
1407
+ .leads-table td:last-child { border-radius: 0 var(--radius-sm) var(--radius-sm) 0; }
1408
+
1409
  .leads-table tbody tr {
1410
  transition: all var(--transition-fast);
1411
  animation: rowSlideIn 0.35s ease backwards;
 
1423
  .leads-table tbody tr:nth-child(9) { animation-delay: 0.18s; }
1424
  .leads-table tbody tr:nth-child(10) { animation-delay: 0.2s; }
1425
 
1426
+ .leads-table tbody tr:hover td {
1427
+ background: var(--bg-secondary);
1428
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.04);
1429
+ }
1430
+
1431
  .leads-table tbody tr:hover {
1432
+ transform: translateY(-1px);
1433
  }
1434
 
1435
+ .leads-table tbody tr.selected td {
1436
+ background: rgba(195, 177, 225, 0.1);
1437
  }
1438
 
1439
  /* Checkbox column */
1440
  .leads-table .checkbox-cell {
1441
+ width: 40px;
1442
  text-align: center;
1443
  }
1444
 
1445
  .checkbox-cell input[type="checkbox"] {
1446
  appearance: none;
1447
  -webkit-appearance: none;
1448
+ width: 18px;
1449
+ height: 18px;
1450
+ border: none;
1451
+ border-radius: 6px;
1452
+ background: var(--bg-input);
1453
  cursor: pointer;
1454
  transition: var(--transition-fast);
1455
  position: relative;
1456
  vertical-align: middle;
1457
+ box-shadow: inset 2px 2px 4px rgba(0, 0, 0, 0.06), inset -1px -1px 2px rgba(255, 255, 255, 0.5);
1458
  }
1459
 
1460
  .checkbox-cell input[type="checkbox"]:checked {
1461
  background: var(--accent-primary);
1462
+ box-shadow: var(--clay-shadow-sm);
1463
  }
1464
 
1465
  .checkbox-cell input[type="checkbox"]:checked::after {
 
1468
  top: 50%; left: 50%;
1469
  transform: translate(-50%, -50%);
1470
  color: #fff;
1471
+ font-size: 11px;
1472
  font-weight: 800;
1473
  }
1474
 
1475
  .checkbox-cell input[type="checkbox"]:hover {
1476
+ background: rgba(195, 177, 225, 0.2);
1477
  }
1478
 
1479
  /* Lead name with avatar */
 
1484
  }
1485
 
1486
  .lead-avatar {
1487
+ width: 34px;
1488
+ height: 34px;
1489
  border-radius: var(--radius-sm);
1490
  display: flex;
1491
  align-items: center;
 
1495
  color: #fff;
1496
  flex-shrink: 0;
1497
  text-transform: uppercase;
1498
+ box-shadow: var(--clay-shadow-sm);
1499
  }
1500
 
1501
  .lead-name {
 
1505
  }
1506
 
1507
  .lead-phone {
1508
+ font-family: 'Poppins', 'Inter', monospace;
1509
  color: var(--text-secondary);
1510
  font-size: 0.82rem;
1511
  font-variant-numeric: tabular-nums;
 
1540
  white-space: nowrap;
1541
  cursor: pointer;
1542
  transition: var(--transition-fast);
1543
+ padding: 5px 10px;
1544
  border-radius: var(--radius-xs);
1545
  }
1546
  .lead-notes:hover {
1547
  color: var(--text-secondary);
1548
+ background: var(--bg-input);
1549
+ box-shadow: var(--clay-inset);
1550
  }
1551
 
1552
+ /* Status Badges β€” Soft pills */
1553
  .status-badge {
1554
  display: inline-flex;
1555
  align-items: center;
1556
  gap: 6px;
1557
+ padding: 5px 14px;
1558
  border-radius: var(--radius-full);
1559
  font-size: 0.7rem;
1560
  font-weight: 700;
 
1562
  letter-spacing: 0.5px;
1563
  cursor: pointer;
1564
  transition: all var(--transition-fast);
1565
+ border: none;
1566
+ box-shadow: var(--clay-shadow-sm);
1567
  }
1568
 
1569
  .status-badge::before {
1570
  content: '';
1571
+ width: 7px;
1572
+ height: 7px;
1573
  border-radius: 50%;
1574
  flex-shrink: 0;
1575
  animation: statusPulse 2s ease-in-out infinite;
1576
  }
1577
 
1578
  .status-badge.new {
1579
+ background: var(--status-new-surface);
1580
+ color: #4A8BAD;
 
1581
  }
1582
  .status-badge.new::before { background: var(--status-new); }
1583
 
1584
  .status-badge.contacted {
1585
+ background: var(--status-contacted-surface);
1586
+ color: #7B5EA8;
 
1587
  }
1588
  .status-badge.contacted::before { background: var(--status-contacted); }
1589
 
1590
  .status-badge.replied {
1591
+ background: var(--status-replied-surface);
1592
+ color: #B8943A;
 
1593
  }
1594
  .status-badge.replied::before { background: var(--status-replied); }
1595
 
1596
  .status-badge.closed {
1597
+ background: var(--status-closed-surface);
1598
+ color: #4A9A72;
 
1599
  }
1600
  .status-badge.closed::before { background: var(--status-closed); }
1601
 
1602
  .status-badge:hover {
1603
+ transform: translateY(-2px) scale(1.04);
1604
+ box-shadow: var(--clay-shadow);
 
1605
  }
1606
 
1607
  /* Actions column */
1608
  .actions-cell {
1609
  display: flex;
1610
+ gap: 5px;
1611
  flex-wrap: nowrap;
1612
  }
1613
 
1614
  /* ══════════════════════════════════════════════
1615
+ PAGINATION β€” Clay Buttons
1616
  ══════════════════════════════════════════════ */
1617
 
1618
  .pagination {
1619
  display: flex;
1620
  align-items: center;
1621
  justify-content: space-between;
1622
+ margin-top: 18px;
1623
+ padding-top: 18px;
1624
+ border-top: 1px solid rgba(0, 0, 0, 0.05);
1625
  flex-wrap: wrap;
1626
  gap: 12px;
1627
  }
 
1639
  .pagination-controls {
1640
  display: flex;
1641
  align-items: center;
1642
+ gap: 6px;
1643
  }
1644
 
1645
  .pagination-controls button {
1646
+ width: 36px;
1647
+ height: 36px;
1648
+ border: none;
1649
+ background: var(--bg-card);
1650
  color: var(--text-secondary);
1651
  border-radius: var(--radius-sm);
1652
  cursor: pointer;
 
1657
  display: flex;
1658
  align-items: center;
1659
  justify-content: center;
1660
+ box-shadow: var(--clay-shadow-sm);
1661
  }
1662
 
1663
  .pagination-controls button:hover:not(:disabled) {
1664
+ transform: translateY(-2px);
1665
+ box-shadow: var(--clay-shadow);
1666
  color: var(--text-primary);
1667
  }
1668
 
1669
+ .pagination-controls button:active:not(:disabled) {
1670
+ transform: translateY(1px);
1671
+ box-shadow: var(--clay-shadow-active);
1672
+ }
1673
+
1674
  .pagination-controls button.active {
1675
+ background: var(--accent-gradient);
 
1676
  color: #fff;
1677
+ box-shadow:
1678
+ 5px 5px 10px rgba(167, 139, 202, 0.25),
1679
+ -3px -3px 6px rgba(255, 255, 255, 0.6),
1680
+ inset 0 1px 2px rgba(255, 255, 255, 0.3);
1681
  }
1682
 
1683
  .pagination-controls button:disabled {
1684
  opacity: 0.3;
1685
  cursor: not-allowed;
1686
+ box-shadow: none;
1687
  }
1688
 
1689
  .page-size-select {
1690
  background: var(--bg-input);
1691
+ border: none;
1692
  border-radius: var(--radius-sm);
1693
+ padding: 7px 12px;
1694
  color: var(--text-primary);
1695
  font-family: inherit;
1696
  font-size: 0.8rem;
1697
  cursor: pointer;
1698
  outline: none;
1699
+ box-shadow: var(--clay-inset);
1700
  }
1701
 
1702
  /* ══════════════════════════════════════════════
 
1714
  animation: float 4s ease-in-out infinite;
1715
  }
1716
 
1717
+ .empty-illustration svg circle {
1718
+ fill: rgba(195, 177, 225, 0.08);
1719
+ stroke: rgba(195, 177, 225, 0.2);
1720
+ }
1721
+
1722
+ .empty-illustration svg path,
1723
+ .empty-illustration svg line {
1724
+ stroke: rgba(195, 177, 225, 0.45);
1725
+ }
1726
+
1727
  .empty-state h3 {
1728
  font-size: 1.1rem;
1729
  color: var(--text-secondary);
1730
+ font-weight: 700;
1731
  margin-bottom: 6px;
1732
  }
1733
 
 
1737
  }
1738
 
1739
  /* ══════════════════════════════════════════════
1740
+ LEAD DETAIL DRAWER β€” Clay Slide Panel
1741
  ══════════════════════════════════════════════ */
1742
 
1743
  .drawer-overlay {
1744
  position: fixed;
1745
  inset: 0;
1746
+ background: rgba(61, 53, 53, 0.25);
1747
+ backdrop-filter: blur(4px);
1748
+ -webkit-backdrop-filter: blur(4px);
1749
  z-index: 200;
1750
  opacity: 0;
1751
  visibility: hidden;
 
1765
  max-width: 100%;
1766
  height: 100vh;
1767
  background: var(--bg-secondary);
1768
+ border-left: none;
1769
  z-index: 210;
1770
  transform: translateX(100%);
1771
  transition: transform var(--transition-slow);
1772
  display: flex;
1773
  flex-direction: column;
1774
  overflow-y: auto;
1775
+ box-shadow: -12px 0 32px rgba(0, 0, 0, 0.08);
1776
  }
1777
 
1778
  .lead-drawer.open {
 
1783
  display: flex;
1784
  align-items: center;
1785
  justify-content: space-between;
1786
+ padding: 22px 26px;
1787
+ border-bottom: 1px solid rgba(0, 0, 0, 0.05);
1788
  position: sticky;
1789
  top: 0;
1790
  background: var(--bg-secondary);
 
1797
  }
1798
 
1799
  .drawer-close {
1800
+ background: var(--bg-card);
1801
  border: none;
1802
  border-radius: var(--radius-sm);
1803
  color: var(--text-secondary);
1804
+ padding: 7px;
1805
  cursor: pointer;
1806
  display: flex;
1807
  transition: var(--transition-fast);
1808
+ box-shadow: var(--clay-shadow-sm);
1809
  }
1810
  .drawer-close:hover {
1811
+ background: rgba(255, 183, 178, 0.25);
1812
  color: var(--danger);
1813
+ transform: rotate(90deg);
1814
+ box-shadow: var(--clay-shadow);
1815
  }
1816
 
1817
  .drawer-body {
1818
+ padding: 26px;
1819
  display: flex;
1820
  flex-direction: column;
1821
  gap: 20px;
 
1823
 
1824
  .drawer-section-title {
1825
  font-size: 0.72rem;
1826
+ font-weight: 700;
1827
  text-transform: uppercase;
1828
  letter-spacing: 0.8px;
1829
  color: var(--text-muted);
 
1840
  display: flex;
1841
  flex-direction: column;
1842
  gap: 4px;
1843
+ padding: 12px 14px;
1844
+ background: var(--bg-input);
1845
+ border-radius: var(--radius-sm);
1846
+ box-shadow: var(--clay-inset);
1847
  }
1848
 
1849
  .drawer-info-label {
 
1851
  color: var(--text-muted);
1852
  text-transform: uppercase;
1853
  letter-spacing: 0.5px;
1854
+ font-weight: 600;
1855
  }
1856
 
1857
  .drawer-info-value {
 
1875
  }
1876
 
1877
  /* ══════════════════════════════════════════════
1878
+ MODALS β€” Clay Dialogs
1879
  ══════════════════════════════════════════════ */
1880
 
1881
  .modal-overlay {
1882
  position: fixed;
1883
  inset: 0;
1884
+ background: rgba(61, 53, 53, 0.3);
1885
+ backdrop-filter: blur(8px);
1886
+ -webkit-backdrop-filter: blur(8px);
1887
  z-index: 1000;
1888
  display: flex;
1889
  align-items: center;
 
1901
 
1902
  .modal {
1903
  background: var(--bg-secondary);
1904
+ border: none;
1905
  border-radius: var(--radius-2xl);
1906
+ padding: 30px;
1907
  width: 100%;
1908
  max-width: 520px;
1909
  max-height: 90vh;
 
1922
  content: '';
1923
  position: absolute;
1924
  top: 0; left: 0; right: 0;
1925
+ height: 3px;
1926
  background: var(--accent-gradient);
1927
  border-radius: var(--radius-2xl) var(--radius-2xl) 0 0;
1928
  }
 
1935
  display: flex;
1936
  align-items: center;
1937
  justify-content: space-between;
1938
+ margin-bottom: 22px;
1939
  }
1940
 
1941
  .modal-header h2 {
 
1944
  }
1945
 
1946
  .modal-close {
1947
+ width: 34px;
1948
+ height: 34px;
1949
  border: none;
1950
+ background: var(--bg-card);
1951
  border-radius: var(--radius-sm);
1952
  color: var(--text-secondary);
1953
  font-size: 1.1rem;
 
1956
  align-items: center;
1957
  justify-content: center;
1958
  transition: var(--transition-fast);
1959
+ box-shadow: var(--clay-shadow-sm);
1960
  }
1961
 
1962
  .modal-close:hover {
1963
+ background: rgba(255, 183, 178, 0.25);
1964
  color: var(--danger);
1965
  transform: rotate(90deg);
1966
+ box-shadow: var(--clay-shadow);
1967
  }
1968
 
1969
  .modal-body {
1970
  display: flex;
1971
  flex-direction: column;
1972
+ gap: 16px;
1973
  }
1974
 
1975
  .modal-body textarea {
 
1980
  .modal-footer {
1981
  display: flex;
1982
  justify-content: flex-end;
1983
+ gap: 10px;
1984
+ margin-top: 22px;
1985
  }
1986
 
1987
  /* WhatsApp recipient card in modal */
1988
  .wa-recipient-card {
1989
  display: flex;
1990
  align-items: center;
1991
+ gap: 14px;
1992
+ padding: 14px 18px;
1993
+ background: var(--bg-input);
1994
+ border: none;
1995
+ border-radius: var(--radius-lg);
1996
  margin-bottom: 4px;
1997
+ box-shadow: var(--clay-inset);
1998
  }
1999
 
2000
  .wa-recipient-avatar {
2001
+ width: 44px;
2002
+ height: 44px;
2003
  border-radius: var(--radius-sm);
2004
+ background: var(--whatsapp-surface);
2005
+ color: #3A8A5C;
2006
  display: flex;
2007
  align-items: center;
2008
  justify-content: center;
2009
  font-weight: 700;
2010
  font-size: 1.1rem;
2011
  flex-shrink: 0;
2012
+ box-shadow: var(--clay-shadow-sm);
2013
  }
2014
 
2015
  .wa-recipient-name {
 
2037
  display: flex;
2038
  align-items: center;
2039
  gap: 8px;
2040
+ padding: 12px 16px;
2041
+ background: var(--bg-card);
2042
+ border: none;
2043
  border-radius: var(--radius-sm);
2044
  font-size: 0.84rem;
2045
  color: var(--text-secondary);
2046
+ box-shadow: var(--clay-shadow-sm);
2047
  }
2048
 
2049
  .shortcut-item kbd {
2050
+ background: var(--bg-input);
2051
+ border: none;
2052
+ border-radius: 8px;
2053
+ padding: 3px 10px;
2054
  font-size: 0.76rem;
2055
  font-family: inherit;
2056
  color: var(--text-primary);
2057
  font-weight: 600;
2058
+ min-width: 30px;
2059
  text-align: center;
2060
+ box-shadow: var(--clay-shadow-sm);
2061
  }
2062
 
2063
  .shortcut-item span:last-child {
 
2073
  .templates-list {
2074
  display: grid;
2075
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
2076
+ gap: 14px;
2077
  }
2078
 
2079
  .template-card {
2080
+ background: var(--bg-card);
2081
+ border: none;
2082
+ border-radius: var(--radius-lg);
2083
+ padding: 18px 20px;
2084
  transition: all var(--transition-fast);
2085
  position: relative;
2086
+ box-shadow: var(--clay-shadow-sm);
2087
  }
2088
 
2089
  .template-card:hover {
2090
+ transform: translateY(-3px);
2091
+ box-shadow: var(--clay-shadow);
2092
+ }
2093
+
2094
+ .template-card:active {
2095
+ transform: translateY(1px);
2096
+ box-shadow: var(--clay-shadow-active);
2097
  }
2098
 
2099
  .template-card-header {
2100
  display: flex;
2101
  align-items: center;
2102
  justify-content: space-between;
2103
+ margin-bottom: 10px;
2104
  }
2105
 
2106
  .template-card-name {
 
2127
  }
2128
 
2129
  /* ══════════════════════════════════════════════
2130
+ TOAST NOTIFICATIONS β€” Clay Pills
2131
  ══════════════════════════════════════════════ */
2132
 
2133
  .toast-container {
 
2137
  z-index: 2000;
2138
  display: flex;
2139
  flex-direction: column-reverse;
2140
+ gap: 10px;
2141
  pointer-events: none;
2142
  }
2143
 
2144
  .toast {
2145
  background: var(--bg-secondary);
2146
+ border: none;
2147
+ border-radius: var(--radius-lg);
2148
+ padding: 16px 20px;
2149
  min-width: 300px;
2150
  max-width: 400px;
2151
+ box-shadow: var(--clay-shadow);
2152
  display: flex;
2153
  align-items: center;
2154
+ gap: 12px;
2155
  animation: toastIn 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
2156
  pointer-events: auto;
2157
  position: relative;
 
2167
  position: absolute;
2168
  bottom: 0;
2169
  left: 0;
2170
+ height: 3px;
2171
+ border-radius: 0 0 var(--radius-lg) var(--radius-lg);
2172
  animation: toastProgress 4s linear forwards;
2173
  }
2174
 
 
2184
  line-height: 1.4;
2185
  }
2186
 
2187
+ .toast.success { border-left: 4px solid var(--success); }
2188
  .toast.success .toast-icon { color: var(--success); }
2189
  .toast.success::after { background: var(--success); }
2190
 
2191
+ .toast.error { border-left: 4px solid var(--danger); }
2192
  .toast.error .toast-icon { color: var(--danger); }
2193
  .toast.error::after { background: var(--danger); }
2194
 
2195
+ .toast.info { border-left: 4px solid var(--accent-secondary); }
2196
+ .toast.info .toast-icon { color: var(--accent-secondary); }
2197
+ .toast.info::after { background: var(--accent-secondary); }
2198
 
2199
  /* ══════════════════════════════════════════════
2200
  STATUS DROPDOWN
 
2203
  .status-dropdown {
2204
  position: fixed;
2205
  background: var(--bg-secondary);
2206
+ border: none;
2207
+ border-radius: var(--radius-lg);
2208
+ padding: 8px;
2209
  box-shadow: var(--shadow-xl);
2210
  z-index: 100;
2211
+ min-width: 160px;
2212
  animation: dropdownPop 0.2s cubic-bezier(0.34, 1.56, 0.64, 1);
2213
  }
2214
 
 
2217
  align-items: center;
2218
  gap: 8px;
2219
  width: 100%;
2220
+ padding: 10px 14px;
2221
  border: none;
2222
  background: transparent;
2223
  color: var(--text-primary);
 
2225
  font-size: 0.82rem;
2226
  font-weight: 500;
2227
  cursor: pointer;
2228
+ border-radius: var(--radius-sm);
2229
  transition: var(--transition-fast);
2230
  }
2231
 
2232
  .status-dropdown button:hover {
2233
+ background: var(--bg-input);
2234
+ box-shadow: var(--clay-shadow-sm);
2235
  }
2236
 
2237
  /* ══════════════════════════════════════════════
 
2240
 
2241
  input[type="date"] {
2242
  background: var(--bg-input);
2243
+ border: none;
2244
  border-radius: var(--radius-sm);
2245
+ padding: 10px 14px;
2246
  color: var(--text-primary);
2247
  font-family: inherit;
2248
  font-size: 0.85rem;
2249
  outline: none;
2250
  transition: var(--transition-fast);
2251
+ box-shadow: var(--clay-inset);
2252
  }
2253
 
2254
  input[type="date"]:focus {
2255
+ box-shadow: var(--clay-inset-focus);
 
2256
  }
2257
 
2258
  input[type="date"]::-webkit-calendar-picker-indicator {
2259
+ filter: none;
2260
  cursor: pointer;
2261
+ opacity: 0.5;
2262
  }
2263
 
2264
  /* ══════════════════════════════════════════════
2265
+ KANBAN BOARD β€” Clay Columns & Cards
2266
  ══════════════════════════════════════════════ */
2267
 
2268
  .kanban-board {
2269
  display: flex;
2270
+ gap: 16px;
2271
  overflow-x: auto;
2272
  padding-bottom: 8px;
2273
  min-height: 400px;
 
2276
  .kanban-column {
2277
  flex: 1;
2278
  min-width: 260px;
2279
+ background: var(--bg-tertiary);
2280
+ border: none;
2281
+ border-radius: var(--radius-lg);
2282
  display: flex;
2283
  flex-direction: column;
2284
  transition: var(--transition-fast);
2285
+ box-shadow: var(--clay-inset);
2286
  }
2287
 
2288
  .kanban-column.drag-over {
2289
+ background: rgba(195, 177, 225, 0.08);
2290
+ box-shadow: var(--clay-inset), inset 0 0 20px rgba(195, 177, 225, 0.1);
 
2291
  }
2292
 
2293
  .kanban-col-header {
2294
+ padding: 16px 18px;
2295
  font-weight: 700;
2296
  font-size: 0.84rem;
2297
+ border-bottom: 1px solid rgba(0, 0, 0, 0.05);
2298
  display: flex;
2299
  align-items: center;
2300
  justify-content: space-between;
 
2307
  }
2308
 
2309
  .kanban-col-dot {
2310
+ width: 10px;
2311
+ height: 10px;
2312
  border-radius: 50%;
2313
  flex-shrink: 0;
2314
+ box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1), -1px -1px 2px rgba(255, 255, 255, 0.8);
2315
  }
2316
 
2317
  .kanban-col-dot.new { background: var(--status-new); }
 
2319
  .kanban-col-dot.replied { background: var(--status-replied); }
2320
  .kanban-col-dot.closed { background: var(--status-closed); }
2321
 
2322
+ .kanban-col-header.new { color: #4A8BAD; }
2323
+ .kanban-col-header.contacted { color: #7B5EA8; }
2324
+ .kanban-col-header.replied { color: #B8943A; }
2325
+ .kanban-col-header.closed { color: #4A9A72; }
2326
 
2327
  .col-count {
2328
+ background: var(--bg-card);
2329
+ padding: 3px 10px;
2330
  border-radius: var(--radius-full);
2331
  font-size: 0.74rem;
2332
  color: var(--text-muted);
2333
  font-weight: 600;
2334
+ box-shadow: var(--clay-shadow-sm);
2335
  }
2336
 
2337
  .kanban-col-body {
2338
+ padding: 12px;
2339
  flex: 1;
2340
  display: flex;
2341
  flex-direction: column;
2342
+ gap: 10px;
2343
  overflow-y: auto;
2344
  }
2345
 
2346
  .kanban-card {
2347
  background: var(--bg-card);
2348
+ border: none;
2349
+ border-radius: var(--radius-md);
2350
+ padding: 16px;
2351
  cursor: grab;
2352
  position: relative;
2353
  transition: all var(--transition-fast);
2354
+ box-shadow: var(--clay-shadow-sm);
2355
  }
2356
 
2357
  .kanban-card:hover {
2358
+ transform: translateY(-3px);
2359
+ box-shadow: var(--clay-shadow);
 
2360
  }
2361
 
2362
  .kanban-card:active { cursor: grabbing; }
 
2385
  }
2386
 
2387
  .social-icon {
2388
+ width: 28px;
2389
+ height: 28px;
2390
  display: inline-flex;
2391
  align-items: center;
2392
  justify-content: center;
2393
  background: var(--bg-input);
2394
+ border-radius: var(--radius-xs);
2395
  text-decoration: none;
2396
  font-size: 0.75rem;
2397
  transition: var(--transition-fast);
2398
+ box-shadow: var(--clay-shadow-sm);
2399
  }
2400
  .social-icon:hover {
2401
+ transform: translateY(-2px) scale(1.1);
2402
+ box-shadow: var(--clay-shadow);
2403
  }
2404
+ .social-icon.email { color: var(--danger); }
2405
+ .social-icon.instagram { color: #C06090; }
2406
+ .social-icon.linkedin { color: #5B8DB8; }
2407
 
2408
  /* ══════════════════════════════════════════════
2409
  ANIMATIONS
 
2536
  }
2537
 
2538
  @media (max-width: 768px) {
2539
+ .main-content {
2540
+ padding: 0 16px 20px;
2541
+ }
2542
+
2543
+ .top-bar {
2544
+ padding: 16px 0;
2545
+ flex-wrap: wrap;
2546
+ gap: 12px;
2547
+ }
2548
+
2549
  .stats-grid {
2550
+ grid-template-columns: 1fr 1fr;
2551
+ gap: 12px;
2552
  }
2553
 
2554
  .stat-card {
2555
+ padding: 16px 18px;
2556
+ border-radius: var(--radius-lg);
2557
  }
2558
 
2559
  .stat-card .stat-value {
 
2561
  }
2562
 
2563
  .panel {
2564
+ padding: 18px 16px;
2565
  border-radius: var(--radius-lg);
2566
  }
2567
+
2568
+ .form-row {
2569
+ flex-direction: column;
2570
+ align-items: stretch;
2571
+ }
2572
+
2573
+ .btn-scrape-start {
2574
+ width: 100%;
2575
+ margin-top: 10px;
2576
+ }
2577
 
2578
  .toolbar {
2579
  flex-direction: column;
2580
  align-items: stretch;
2581
+ gap: 12px;
2582
  }
2583
 
2584
  .search-box {
 
2589
  .search-kbd {
2590
  display: none;
2591
  }
2592
+
2593
+ .kanban-board {
2594
+ flex-direction: column;
2595
+ min-height: auto;
2596
+ }
2597
+
2598
+ .table-wrapper {
2599
+ overflow-x: hidden;
2600
+ border-radius: var(--radius-md);
2601
+ padding-bottom: 5px;
2602
+ }
2603
 
2604
  .leads-table {
2605
  font-size: 0.82rem;
2606
+ border-spacing: 0 4px;
2607
+ width: 100%;
2608
  }
2609
 
2610
  .leads-table th,
2611
  .leads-table td {
2612
+ padding: 10px 12px;
2613
  }
2614
 
2615
  .hide-mobile {
 
2621
  }
2622
 
2623
  .modal {
2624
+ padding: 22px;
2625
+ border-radius: var(--radius-xl);
2626
+ width: 95%;
2627
  }
2628
 
2629
  .pagination {
2630
  justify-content: center;
2631
+ flex-direction: column;
2632
+ gap: 16px;
2633
  }
2634
 
2635
  .bulk-bar {
 
2664
 
2665
  @media (max-width: 480px) {
2666
  .stats-grid {
2667
+ grid-template-columns: 1fr;
2668
  }
2669
 
2670
  .stat-card:last-child {
 
2672
  }
2673
 
2674
  .top-bar {
2675
+ padding: 10px 0;
2676
+ }
2677
+
2678
+ .sidebar {
2679
+ width: 85% !important;
2680
  }
2681
 
2682
  .connection-text {
2683
  display: none;
2684
  }
2685
+
2686
+ .modal {
2687
+ padding: 16px;
2688
+ }
2689
+
2690
+ .panel {
2691
+ padding: 16px 14px;
2692
+ }
2693
  }
2694
 
2695
  /* ══════════════════════════════════════════════
 
2713
  .sidebar-mobile-overlay {
2714
  position: fixed;
2715
  inset: 0;
2716
+ background: rgba(61, 53, 53, 0.3);
2717
  z-index: 99;
2718
  opacity: 0;
2719
  visibility: hidden;