@tushar-br/desktop 1.0.282 → 1.0.284

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

Potentially problematic release.


This version of @tushar-br/desktop might be problematic. Click here for more details.

Files changed (42) hide show
  1. package/package.json +1 -1
  2. package/staging_area/desktop/rilvox/node_modules/@next/swc-win32-x64-msvc/next-swc.win32-x64-msvc.node +0 -0
  3. package/staging_area/micro projects/CDCT-236340316058.docx +0 -0
  4. package/staging_area/micro projects/CDCT-236340316058.pdf +0 -0
  5. package/staging_area/micro projects/CSDF practicals/Practical 4.docx +0 -0
  6. package/staging_area/micro projects/CSDF practicals/Practical 4.pdf +0 -0
  7. package/staging_area/micro projects/CSDF practicals/Practical-10.docx +0 -0
  8. package/staging_area/micro projects/CSDF practicals/Practical-10.pdf +0 -0
  9. package/staging_area/micro projects/CSDF practicals/Practical-11.docx +0 -0
  10. package/staging_area/micro projects/CSDF practicals/Practical-11.pdf +0 -0
  11. package/staging_area/micro projects/CSDF practicals/Practical-12.docx +0 -0
  12. package/staging_area/micro projects/CSDF practicals/Practical-13.docx +0 -0
  13. package/staging_area/micro projects/CSDF practicals/Practical-5.docx +0 -0
  14. package/staging_area/micro projects/CSDF practicals/Practical-5.pdf +0 -0
  15. package/staging_area/micro projects/CSDF practicals/Practical-6.docx +0 -0
  16. package/staging_area/micro projects/CSDF practicals/Practical-6.pdf +0 -0
  17. package/staging_area/micro projects/CSDF practicals/Practical-7.docx +0 -0
  18. package/staging_area/micro projects/CSDF practicals/Practical-7.pdf +0 -0
  19. package/staging_area/micro projects/CSDF-236340316058.docx +0 -0
  20. package/staging_area/micro projects/CSDF-236340316058.pdf +0 -0
  21. package/staging_area/micro projects/FOB-236340316058.docx +0 -0
  22. package/staging_area/micro projects/FOB-236340316058.pdf +0 -0
  23. package/staging_area/micro projects/FOB-Electronic Voting System using Blockchain/README.md +0 -131
  24. package/staging_area/micro projects/FOB-Electronic Voting System using Blockchain/android-chrome-512x512.png +0 -0
  25. package/staging_area/micro projects/FOB-Electronic Voting System using Blockchain/app.py +0 -100
  26. package/staging_area/micro projects/FOB-Electronic Voting System using Blockchain/blockchain.py +0 -98
  27. package/staging_area/micro projects/FOB-Electronic Voting System using Blockchain/requirements.txt +0 -2
  28. package/staging_area/micro projects/FOB-Electronic Voting System using Blockchain/run_project.bat +0 -29
  29. package/staging_area/micro projects/FOB-Electronic Voting System using Blockchain/static/images/avatar_alice.svg +0 -12
  30. package/staging_area/micro projects/FOB-Electronic Voting System using Blockchain/static/images/avatar_bob.svg +0 -12
  31. package/staging_area/micro projects/FOB-Electronic Voting System using Blockchain/static/images/avatar_charlie.svg +0 -12
  32. package/staging_area/micro projects/FOB-Electronic Voting System using Blockchain/static/images/user_avatar.png +0 -0
  33. package/staging_area/micro projects/FOB-Electronic Voting System using Blockchain/static/style.css +0 -1435
  34. package/staging_area/micro projects/FOB-Electronic Voting System using Blockchain/static/terminal.js +0 -140
  35. package/staging_area/micro projects/FOB-Electronic Voting System using Blockchain/templates/PDF/FOB-236340316058.pdf +0 -0
  36. package/staging_area/micro projects/FOB-Electronic Voting System using Blockchain/templates/already_voted.html +0 -80
  37. package/staging_area/micro projects/FOB-Electronic Voting System using Blockchain/templates/confirmation.html +0 -64
  38. package/staging_area/micro projects/FOB-Electronic Voting System using Blockchain/templates/index.html +0 -241
  39. package/staging_area/micro projects/FOB-Electronic Voting System using Blockchain/templates/vote.html +0 -112
  40. package/staging_area/micro projects/FOB-Electronic Voting System using Blockchain/vercel.json +0 -15
  41. package/staging_area/micro projects/folder.py +0 -27
  42. package/staging_area/micro projects/infographic.png +0 -0
@@ -1,1435 +0,0 @@
1
- :root {
2
- --bg-dark: #0f172a;
3
- --bg-card: #1e293b;
4
- --text-primary: #f1f5f9;
5
- --text-secondary: #94a3b8;
6
- --accent-primary: #00f2ea;
7
- --accent-secondary: #3b82f6;
8
- --success: #10b981;
9
- --border-dark: #334155;
10
- --shadow-soft: 0 10px 30px -10px rgba(0, 0, 0, 0.5);
11
- --font-family: 'Inter', system-ui, -apple-system, sans-serif;
12
- }
13
-
14
- * {
15
- box-sizing: border-box;
16
- margin: 0;
17
- padding: 0;
18
- }
19
-
20
- body {
21
- font-family: var(--font-family);
22
- background-color: var(--bg-dark);
23
- color: var(--text-primary);
24
- min-height: 100vh;
25
- display: flex;
26
- flex-direction: column;
27
- overflow-x: hidden;
28
- position: relative;
29
- }
30
-
31
- /* Background Effects */
32
- .background-overlay {
33
- position: fixed;
34
- top: 0;
35
- left: 0;
36
- width: 100%;
37
- height: 100%;
38
- background: radial-gradient(circle at 10% 20%, #1e293b 0%, #0f172a 80%);
39
- z-index: -1;
40
- }
41
-
42
- .background-overlay::after {
43
- content: '';
44
- position: absolute;
45
- top: 0;
46
- left: 0;
47
- width: 100%;
48
- height: 100%;
49
- background-image:
50
- linear-gradient(rgba(255, 255, 255, 0.03) 1px, transparent 1px),
51
- linear-gradient(90deg, rgba(255, 255, 255, 0.03) 1px, transparent 1px);
52
- background-size: 50px 50px;
53
- mask-image: linear-gradient(to bottom, rgba(0, 0, 0, 1) 40%, rgba(0, 0, 0, 0) 100%);
54
- z-index: -1;
55
- }
56
-
57
- /* --- NEW HOME PAGE STYLES --- */
58
-
59
- /* Tech Background with Blur Effect */
60
- .tech-background {
61
- position: fixed;
62
- top: 0;
63
- left: 0;
64
- width: 100%;
65
- height: 100%;
66
- z-index: -2;
67
- background: radial-gradient(circle at 15% 50%, rgba(59, 130, 246, 0.15), transparent 25%),
68
- radial-gradient(circle at 85% 30%, rgba(0, 242, 234, 0.15), transparent 25%);
69
- background-color: var(--bg-dark);
70
- }
71
-
72
- .tech-background::after {
73
- content: '';
74
- position: absolute;
75
- top: 0;
76
- left: 0;
77
- width: 100%;
78
- height: 100%;
79
- background-image: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%2394a3b8' fill-opacity='0.05'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
80
- z-index: -1;
81
- }
82
-
83
- /* Navbar */
84
- .navbar {
85
- display: flex;
86
- justify-content: space-between;
87
- align-items: center;
88
- padding: 1.5rem 5%;
89
- position: relative;
90
- z-index: 10;
91
- }
92
-
93
- .logo {
94
- display: flex;
95
- align-items: center;
96
- gap: 12px;
97
- font-size: 1.5rem;
98
- font-weight: 800;
99
- letter-spacing: -0.5px;
100
- color: var(--text-primary);
101
- }
102
-
103
- .status-indicator {
104
- font-size: 0.85rem;
105
- color: var(--success);
106
- background: rgba(16, 185, 129, 0.1);
107
- padding: 6px 12px;
108
- border-radius: 20px;
109
- border: 1px solid rgba(16, 185, 129, 0.2);
110
- }
111
-
112
- /* --- Hero Section & ID Card Visual --- */
113
- .hero-section {
114
- display: flex;
115
- align-items: center;
116
- justify-content: center;
117
- min-height: 85vh;
118
- padding: 0 5%;
119
- gap: 4rem;
120
- position: relative;
121
- z-index: 5;
122
- perspective: 1200px;
123
- overflow: hidden;
124
- /* Hide top of string */
125
- }
126
-
127
- .hero-left-section {
128
- flex: 1;
129
- display: flex;
130
- justify-content: center;
131
- align-items: center;
132
- height: 600px;
133
- /* Space for swinging */
134
- position: relative;
135
- }
136
-
137
- /* Swinging Animation Container */
138
- .swing-container {
139
- transform-origin: top center;
140
- animation: swing 6s ease-in-out infinite;
141
- position: relative;
142
- top: -100px;
143
- /* Start higher so string comes from "ceiling" */
144
- display: flex;
145
- flex-direction: column;
146
- align-items: center;
147
- }
148
-
149
- @keyframes swing {
150
- 0% {
151
- transform: rotate(5deg);
152
- }
153
-
154
- 50% {
155
- transform: rotate(-5deg);
156
- }
157
-
158
- 100% {
159
- transform: rotate(5deg);
160
- }
161
- }
162
-
163
- /* Lanyard String */
164
- .lanyard-string {
165
- width: 4px;
166
- height: 300px;
167
- background: linear-gradient(90deg, #333, #555, #333);
168
- position: relative;
169
- z-index: 10;
170
- }
171
-
172
- .lanyard-clip {
173
- width: 30px;
174
- height: 40px;
175
- background: #475569;
176
- border-radius: 4px;
177
- margin-top: -5px;
178
- z-index: 11;
179
- display: flex;
180
- justify-content: center;
181
- align-items: flex-end;
182
- box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);
183
- }
184
-
185
- .clip-ring {
186
- width: 20px;
187
- height: 10px;
188
- border: 3px solid #cbd5e1;
189
- border-top: none;
190
- border-radius: 0 0 10px 10px;
191
- margin-bottom: -8px;
192
- }
193
-
194
- /* 3D ID Card */
195
- .id-card-3d {
196
- width: 300px;
197
- height: 460px;
198
- background: linear-gradient(135deg, rgba(30, 41, 59, 0.95), rgba(15, 23, 42, 0.98));
199
- border-radius: 16px;
200
- border: 1px solid rgba(255, 255, 255, 0.1);
201
- box-shadow:
202
- 0 20px 50px rgba(0, 0, 0, 0.5),
203
- inset 0 0 0 2px rgba(255, 255, 255, 0.05);
204
- padding: 20px;
205
- display: flex;
206
- flex-direction: column;
207
- align-items: center;
208
- position: relative;
209
- margin-top: 5px;
210
- transform-style: preserve-3d;
211
- backface-visibility: hidden;
212
- backdrop-filter: blur(10px);
213
- }
214
-
215
- /* Hole for clip */
216
- .card-hole {
217
- width: 40px;
218
- height: 10px;
219
- background: #0f172a;
220
- border-radius: 20px;
221
- margin-bottom: 20px;
222
- box-shadow: inset 0 2px 4px rgba(0, 0, 0, 1);
223
- }
224
-
225
- .card-top-bar {
226
- width: 100%;
227
- height: 60px;
228
- background: linear-gradient(90deg, var(--accent-primary), var(--accent-secondary));
229
- border-radius: 8px 8px 0 0;
230
- margin-bottom: -30px;
231
- z-index: 0;
232
- opacity: 0.8;
233
- }
234
-
235
- .card-logo-mini {
236
- z-index: 2;
237
- background: #0f172a;
238
- padding: 10px;
239
- border-radius: 50%;
240
- border: 2px solid var(--accent-primary);
241
- box-shadow: 0 0 15px rgba(0, 242, 234, 0.3);
242
- margin-bottom: 20px;
243
- }
244
-
245
- .card-avatar {
246
- width: 120px;
247
- height: 120px;
248
- background: #1e293b;
249
- border-radius: 12px;
250
- display: flex;
251
- justify-content: center;
252
- align-items: center;
253
- margin-bottom: 25px;
254
- border: 2px dashed rgba(255, 255, 255, 0.2);
255
- color: var(--text-secondary);
256
- }
257
-
258
- .card-info {
259
- width: 100%;
260
- text-align: center;
261
- }
262
-
263
- .card-info h3 {
264
- margin: 0 0 20px 0;
265
- letter-spacing: 2px;
266
- font-size: 1.5rem;
267
- background: linear-gradient(to right, #fff, #cbd5e1);
268
- -webkit-background-clip: text;
269
- -webkit-text-fill-color: transparent;
270
- }
271
-
272
- .info-row {
273
- display: flex;
274
- justify-content: space-between;
275
- padding: 8px 15px;
276
- background: rgba(255, 255, 255, 0.03);
277
- margin-bottom: 8px;
278
- border-radius: 6px;
279
- font-family: monospace;
280
- font-size: 0.9rem;
281
- }
282
-
283
- .info-row .label {
284
- color: var(--text-secondary);
285
- }
286
-
287
- .info-row .val {
288
- color: var(--text-primary);
289
- font-weight: bold;
290
- }
291
-
292
- .info-row .val.valid {
293
- color: var(--success);
294
- text-shadow: 0 0 10px rgba(16, 185, 129, 0.4);
295
- }
296
-
297
- .barcode {
298
- height: 40px;
299
- background: repeating-linear-gradient(90deg,
300
- #fff,
301
- #fff 2px,
302
- transparent 2px,
303
- transparent 4px);
304
- margin-top: 20px;
305
- opacity: 0.8;
306
- border-radius: 4px;
307
- }
308
-
309
- .hologram-overlay {
310
- position: absolute;
311
- top: 0;
312
- left: 0;
313
- width: 100%;
314
- height: 100%;
315
- background: linear-gradient(135deg, transparent 40%, rgba(255, 255, 255, 0.05) 45%, transparent 50%);
316
- pointer-events: none;
317
- border-radius: 16px;
318
- z-index: 10;
319
- }
320
-
321
- @media (max-width: 900px) {
322
- .hero-section {
323
- flex-direction: column;
324
- text-align: center;
325
- justify-content: center;
326
- padding-top: 2rem;
327
- }
328
-
329
- .hero-left-section {
330
- height: 400px;
331
- /* Reduced swing space on mobile */
332
- margin-bottom: -50px;
333
- }
334
-
335
- .id-card-3d {
336
- width: 260px;
337
- height: 400px;
338
- }
339
- }
340
-
341
- /* Glassmorphism Login Card */
342
- .login-wrapper {
343
- flex: 1;
344
- display: flex;
345
- justify-content: flex-end;
346
- }
347
-
348
- .glass-card {
349
- background: rgba(30, 41, 59, 0.6);
350
- /* Semi-transparent */
351
- backdrop-filter: blur(20px);
352
- /* The "Blur Image" effect */
353
- -webkit-backdrop-filter: blur(20px);
354
- border: 1px solid rgba(255, 255, 255, 0.1);
355
- padding: 2.5rem;
356
- border-radius: 24px;
357
- width: 100%;
358
- max-width: 420px;
359
- box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
360
- position: relative;
361
- overflow: hidden;
362
- transition: transform 0.3s;
363
- }
364
-
365
- .glass-card:hover {
366
- transform: translateY(-5px);
367
- border-color: rgba(255, 255, 255, 0.2);
368
- }
369
-
370
- /* Glow Effect inside Card */
371
- .card-glow-effect {
372
- position: absolute;
373
- top: -50%;
374
- left: -50%;
375
- width: 200%;
376
- height: 200%;
377
- background: radial-gradient(circle at 50% 50%, rgba(0, 242, 234, 0.05), transparent 60%);
378
- pointer-events: none;
379
- z-index: 0;
380
- }
381
-
382
- .login-header {
383
- text-align: center;
384
- margin-bottom: 2rem;
385
- position: relative;
386
- z-index: 1;
387
- }
388
-
389
- .login-header h2 {
390
- font-size: 1.8rem;
391
- color: white;
392
- margin-bottom: 0.5rem;
393
- }
394
-
395
- /* Input Fields */
396
- .input-group label {
397
- font-size: 0.9rem;
398
- color: var(--text-secondary);
399
- margin-bottom: 0.5rem;
400
- display: block;
401
- }
402
-
403
- .input-field {
404
- display: flex;
405
- align-items: center;
406
- background: rgba(15, 23, 42, 0.6);
407
- border: 1px solid var(--border-dark);
408
- border-radius: 12px;
409
- padding: 0 1rem;
410
- transition: 0.3s;
411
- }
412
-
413
- .input-field:focus-within {
414
- border-color: var(--accent-primary);
415
- box-shadow: 0 0 0 3px rgba(0, 242, 234, 0.1);
416
- }
417
-
418
- .input-icon {
419
- margin-right: 0.8rem;
420
- opacity: 0.7;
421
- flex-shrink: 0;
422
- }
423
-
424
- .input-field input {
425
- background: transparent;
426
- border: none;
427
- padding: 1rem 0;
428
- color: white;
429
- width: 100%;
430
- font-size: 1rem;
431
- }
432
-
433
- .input-field input:focus {
434
- outline: none;
435
- }
436
-
437
- /* Security Footer */
438
- .security-footer {
439
- display: flex;
440
- align-items: center;
441
- justify-content: center;
442
- gap: 8px;
443
- margin-top: 1.5rem;
444
- font-size: 0.8rem;
445
- color: var(--accent-primary);
446
- opacity: 0.8;
447
- }
448
-
449
- .glow-on-hover {
450
- margin-top: 1.5rem;
451
- background: linear-gradient(135deg, var(--accent-secondary), #00f2ea);
452
- color: #0f172a;
453
- }
454
-
455
- /* Voting Page Specifics */
456
- .voting-page .top-nav {
457
- display: flex;
458
- justify-content: space-between;
459
- align-items: center;
460
- padding: 1rem 2rem;
461
- background: rgba(30, 41, 59, 0.8);
462
- backdrop-filter: blur(10px);
463
- border-bottom: 1px solid var(--border-dark);
464
- }
465
-
466
- .nav-brand {
467
- display: flex;
468
- align-items: center;
469
- gap: 0.5rem;
470
- font-weight: 700;
471
- font-size: 1.2rem;
472
- color: var(--text-primary);
473
- }
474
-
475
- .voter-info {
476
- font-family: monospace;
477
- background: rgba(0, 242, 234, 0.1);
478
- padding: 0.5rem 1rem;
479
- border-radius: 4px;
480
- border: 1px solid rgba(0, 242, 234, 0.2);
481
- }
482
-
483
- .voter-info .label {
484
- color: var(--text-secondary);
485
- margin-right: 0.5rem;
486
- }
487
-
488
- .voter-info .value-mask {
489
- color: var(--accent-primary);
490
- letter-spacing: 1px;
491
- }
492
-
493
- .page-header {
494
- text-align: center;
495
- margin: 3rem 0;
496
- }
497
-
498
- /* --- Premium Candidate Cards --- */
499
-
500
- .candidates-grid {
501
- display: grid;
502
- grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
503
- gap: 2.5rem;
504
- padding: 2rem 0;
505
- max-width: 1200px;
506
- margin: 0 auto;
507
- }
508
-
509
- .candidate-card {
510
- background: rgba(30, 41, 59, 0.4);
511
- backdrop-filter: blur(12px);
512
- -webkit-backdrop-filter: blur(12px);
513
- border-radius: 20px;
514
- overflow: hidden;
515
- position: relative;
516
- border: 1px solid rgba(255, 255, 255, 0.08);
517
- /* Brighter border for glass effect */
518
- cursor: pointer;
519
- transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
520
- box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
521
- }
522
-
523
- .candidate-card:hover {
524
- transform: translateY(-8px) scale(1.02);
525
- box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
526
- border-color: rgba(255, 255, 255, 0.2);
527
- background: rgba(30, 41, 59, 0.6);
528
- }
529
-
530
- .candidate-card.selected {
531
- border-color: var(--accent-primary);
532
- box-shadow: 0 0 0 2px rgba(0, 242, 234, 0.3), 0 20px 25px -5px rgba(0, 0, 0, 0.3);
533
- background: rgba(15, 23, 42, 0.8);
534
- }
535
-
536
- /* Add a gradient overlay on select */
537
- .candidate-card.selected::before {
538
- content: '';
539
- position: absolute;
540
- inset: 0;
541
- border-radius: 20px;
542
- padding: 1px;
543
- background: linear-gradient(45deg, var(--accent-primary), transparent 60%);
544
- -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
545
- -webkit-mask-composite: xor;
546
- mask-composite: exclude;
547
- pointer-events: none;
548
- }
549
-
550
- .card-content {
551
- padding: 2.5rem 2rem;
552
- text-align: center;
553
- position: relative;
554
- z-index: 2;
555
- }
556
-
557
- /* Floating colored glow blob behind avatar */
558
- .card-glow {
559
- position: absolute;
560
- top: 0;
561
- left: 0;
562
- width: 100%;
563
- height: 100%;
564
- opacity: 0.1;
565
- z-index: 1;
566
- transition: opacity 0.3s;
567
- background: radial-gradient(circle at 50% 30%, currentColor, transparent 70%);
568
- }
569
-
570
- .candidate-card:hover .card-glow {
571
- opacity: 0.2;
572
- }
573
-
574
- .candidate-avatar {
575
- width: 120px;
576
- height: 120px;
577
- border-radius: 50%;
578
- margin: 0 auto 1.5rem;
579
- position: relative;
580
- /* For Pseudo-elements */
581
- z-index: 2;
582
- border: 4px solid rgba(255, 255, 255, 0.1);
583
- box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2);
584
- transition: transform 0.4s ease, border-color 0.3s;
585
- background: #1e293b;
586
- }
587
-
588
- .candidate-card:hover .candidate-avatar {
589
- transform: scale(1.1);
590
- border-color: var(--text-primary);
591
- }
592
-
593
- .candidate-avatar img {
594
- width: 100%;
595
- height: 100%;
596
- object-fit: cover;
597
- border-radius: 50%;
598
- }
599
-
600
- .candidate-name {
601
- font-size: 1.5rem;
602
- font-weight: 700;
603
- margin-bottom: 0.5rem;
604
- color: var(--text-primary);
605
- text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
606
- }
607
-
608
- .party-name {
609
- font-size: 0.9rem;
610
- text-transform: uppercase;
611
- letter-spacing: 1px;
612
- color: var(--accent-secondary);
613
- font-weight: 600;
614
- margin-bottom: 2rem;
615
- display: inline-block;
616
- padding: 4px 12px;
617
- background: rgba(59, 130, 246, 0.1);
618
- border-radius: 20px;
619
- border: 1px solid rgba(59, 130, 246, 0.2);
620
- }
621
-
622
- /* Styled Selection Button */
623
- .selection-status {
624
- display: flex;
625
- align-items: center;
626
- justify-content: center;
627
- gap: 10px;
628
- padding: 1rem;
629
- background: rgba(255, 255, 255, 0.03);
630
- border: 1px solid rgba(255, 255, 255, 0.1);
631
- border-radius: 12px;
632
- font-size: 1rem;
633
- font-weight: 600;
634
- color: var(--text-secondary);
635
- transition: all 0.3s;
636
- }
637
-
638
- .candidate-card:hover .selection-status {
639
- background: rgba(255, 255, 255, 0.1);
640
- color: var(--text-primary);
641
- }
642
-
643
- .status-circle {
644
- width: 12px;
645
- height: 12px;
646
- border-radius: 50%;
647
- border: 2px solid var(--text-secondary);
648
- background: transparent;
649
- transition: all 0.3s;
650
- }
651
-
652
- .candidate-card.selected .status-circle {
653
- background: var(--accent-primary);
654
- border-color: var(--accent-primary);
655
- box-shadow: 0 0 15px var(--accent-primary);
656
- }
657
-
658
- .candidate-card.selected .selection-status {
659
- background: rgba(0, 242, 234, 0.15);
660
- color: var(--accent-primary);
661
- border-color: var(--accent-primary);
662
- }
663
-
664
- .card-glow-bar {
665
- /* Replaces old .card-glow line */
666
- height: 6px;
667
- width: 100%;
668
- position: absolute;
669
- top: 0;
670
- left: 0;
671
- z-index: 3;
672
- }
673
-
674
- .candidate-card.selected .status-text::after {
675
- content: 'ed';
676
- }
677
-
678
- .candidate-card:not(.selected) .status-text::after {
679
- content: '';
680
- }
681
-
682
- /* Confirmation Page */
683
- .confirmation-page {
684
- justify-content: center;
685
- align-items: center;
686
- }
687
-
688
- .center-container {
689
- max-width: 500px;
690
- }
691
-
692
- .success-card {
693
- background: var(--bg-card);
694
- padding: 3rem 2rem;
695
- border-radius: 16px;
696
- text-align: center;
697
- border: 1px solid var(--border-dark);
698
- box-shadow: var(--shadow-soft);
699
- }
700
-
701
- .block-details {
702
- background: #0f172a;
703
- padding: 1.5rem;
704
- border-radius: 8px;
705
- margin: 2rem 0;
706
- text-align: left;
707
- border: 1px solid var(--border-dark);
708
- }
709
-
710
- .detail-row {
711
- display: flex;
712
- justify-content: space-between;
713
- margin-bottom: 0.5rem;
714
- font-size: 0.9rem;
715
- }
716
-
717
- .detail-row:last-child {
718
- margin-bottom: 0;
719
- }
720
-
721
- .detail-label {
722
- color: var(--text-secondary);
723
- }
724
-
725
- .detail-value {
726
- font-family: monospace;
727
- color: var(--text-primary);
728
- }
729
-
730
- .status-verified {
731
- color: var(--success);
732
- font-weight: 600;
733
- display: flex;
734
- align-items: center;
735
- gap: 0.25rem;
736
- }
737
-
738
- .status-verified::before {
739
- content: '•';
740
- font-size: 1.5rem;
741
- line-height: 0;
742
- }
743
-
744
- .ledger-note {
745
- font-size: 0.8rem;
746
- opacity: 0.6;
747
- margin-bottom: 2rem;
748
- }
749
-
750
- /* Buttons */
751
- .primary-btn {
752
- width: 100%;
753
- padding: 1rem;
754
- background: linear-gradient(135deg, var(--accent-secondary), #2563eb);
755
- color: white;
756
- border: none;
757
- border-radius: 8px;
758
- font-size: 1rem;
759
- font-weight: 600;
760
- cursor: pointer;
761
- transition: transform 0.2s, box-shadow 0.2s;
762
- display: flex;
763
- justify-content: center;
764
- align-items: center;
765
- gap: 0.5rem;
766
- }
767
-
768
- .primary-btn:hover {
769
- transform: translateY(-1px);
770
- box-shadow: 0 4px 12px rgba(37, 99, 235, 0.3);
771
- }
772
-
773
- .primary-btn:disabled {
774
- background: #334155;
775
- cursor: not-allowed;
776
- transform: none;
777
- box-shadow: none;
778
- opacity: 0.7;
779
- }
780
-
781
- .primary-btn.pulse-btn:not(:hover) {
782
- animation: pulse 2s infinite;
783
- }
784
-
785
- .huge-btn {
786
- padding: 1.2rem;
787
- font-size: 1.1rem;
788
- }
789
-
790
- .secondary-btn {
791
- display: inline-block;
792
- padding: 0.75rem 2rem;
793
- background: transparent;
794
- border: 1px solid var(--border-dark);
795
- color: var(--text-secondary);
796
- border-radius: 6px;
797
- text-decoration: none;
798
- font-size: 0.9rem;
799
- transition: all 0.2s;
800
- }
801
-
802
- .secondary-btn:hover {
803
- border-color: var(--text-primary);
804
- color: var(--text-primary);
805
- background: rgba(255, 255, 255, 0.05);
806
- }
807
-
808
- /* Animations */
809
- @keyframes pulse {
810
- 0% {
811
- box-shadow: 0 0 0 0 rgba(37, 99, 235, 0.4);
812
- }
813
-
814
- 70% {
815
- box-shadow: 0 0 0 10px rgba(37, 99, 235, 0);
816
- }
817
-
818
- 100% {
819
- box-shadow: 0 0 0 0 rgba(37, 99, 235, 0);
820
- }
821
- }
822
-
823
- .animated-entry {
824
- animation: slideUp 0.6s cubic-bezier(0.16, 1, 0.3, 1);
825
- }
826
-
827
- @keyframes slideUp {
828
- from {
829
- opacity: 0;
830
- transform: translateY(20px);
831
- }
832
-
833
- to {
834
- opacity: 1;
835
- transform: translateY(0);
836
- }
837
- }
838
-
839
- /* Success Checkmark CSS */
840
- .checkmark {
841
- width: 80px;
842
- height: 80px;
843
- border-radius: 50%;
844
- display: block;
845
- stroke-width: 2;
846
- stroke: var(--success);
847
- stroke-miterlimit: 10;
848
- margin: 0 auto 1.5rem;
849
- box-shadow: inset 0px 0px 0px var(--success);
850
- animation: fill .4s ease-in-out .4s forwards, scale .3s ease-in-out .9s both;
851
- }
852
-
853
- .checkmark__circle {
854
- stroke-dasharray: 166;
855
- stroke-dashoffset: 166;
856
- stroke-width: 2;
857
- stroke-miterlimit: 10;
858
- stroke: var(--success);
859
- fill: none;
860
- animation: stroke 0.6s cubic-bezier(0.65, 0, 0.45, 1) forwards;
861
- }
862
-
863
- .checkmark__check {
864
- transform-origin: 50% 50%;
865
- stroke-dasharray: 48;
866
- stroke-dashoffset: 48;
867
- animation: stroke 0.3s cubic-bezier(0.65, 0, 0.45, 1) 0.8s forwards;
868
- }
869
-
870
- @keyframes stroke {
871
- 100% {
872
- stroke-dashoffset: 0;
873
- }
874
- }
875
-
876
- @keyframes scale {
877
-
878
- 0%,
879
- 100% {
880
- transform: none;
881
- }
882
-
883
- 50% {
884
- transform: scale3d(1.1, 1.1, 1);
885
- }
886
- }
887
-
888
- @keyframes fill {
889
- 100% {
890
- box-shadow: inset 0px 0px 0px 50px rgba(16, 185, 129, 0.1);
891
- }
892
- }
893
-
894
- /* Error / Already Voted Page */
895
- .error-page {
896
- justify-content: center;
897
- align-items: center;
898
- position: relative;
899
- z-index: 100;
900
- }
901
-
902
- .error-card {
903
- position: relative;
904
- z-index: 101;
905
- background: var(--bg-card);
906
- padding: 3rem 2rem;
907
- border-radius: 16px;
908
- text-align: center;
909
- border: 1px solid rgba(239, 68, 68, 0.3);
910
- /* Red border */
911
- box-shadow: 0 10px 40px -10px rgba(239, 68, 68, 0.2);
912
- }
913
-
914
- .error-card .icon-wrapper {
915
- margin-bottom: 1.5rem;
916
- display: inline-flex;
917
- padding: 1rem;
918
- background: rgba(239, 68, 68, 0.1);
919
- border-radius: 50%;
920
- }
921
-
922
- .error-card h2 {
923
- color: #ef4444;
924
- /* Red */
925
- margin-bottom: 1rem;
926
- }
927
-
928
- .error-message-box {
929
- background: rgba(255, 255, 255, 0.03);
930
- padding: 1.5rem;
931
- border-radius: 8px;
932
- margin-bottom: 2rem;
933
- border: 1px solid rgba(255, 255, 255, 0.1);
934
- }
935
-
936
- .highlight-text {
937
- font-size: 1.1rem;
938
- font-weight: 600;
939
- color: var(--text-primary);
940
- margin-bottom: 0.5rem;
941
- }
942
-
943
- .sub-text {
944
- font-size: 0.9rem;
945
- color: var(--text-secondary);
946
- }
947
-
948
- .security-info {
949
- display: flex;
950
- align-items: center;
951
- justify-content: center;
952
- gap: 8px;
953
- margin: 1.5rem 0;
954
- padding: 1rem;
955
- background: rgba(0, 242, 234, 0.05);
956
- border-radius: 8px;
957
- font-size: 0.85rem;
958
- color: var(--accent-primary);
959
- }
960
-
961
- .secondary-btn {
962
- display: inline-flex;
963
- align-items: center;
964
- gap: 8px;
965
- }
966
-
967
- /* Live Terminal Overlay (90% Screen) */
968
- .live-terminal {
969
- position: fixed;
970
- top: 50%;
971
- left: 50%;
972
- transform: translate(-50%, -50%) scale(0.9);
973
- width: 90vw;
974
- height: 90vh;
975
- background-color: #000000;
976
- border: 2px solid var(--accent-primary);
977
- border-radius: 12px;
978
- box-shadow: 0 0 50px rgba(0, 0, 0, 0.8), 0 0 20px rgba(0, 242, 234, 0.2);
979
- display: flex;
980
- flex-direction: column;
981
- z-index: 2000;
982
- font-family: 'Courier New', Courier, monospace;
983
- opacity: 0;
984
- pointer-events: none;
985
- transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
986
- }
987
-
988
- .live-terminal.active {
989
- opacity: 1;
990
- pointer-events: all;
991
- transform: translate(-50%, -50%) scale(1);
992
- }
993
-
994
- .terminal-header {
995
- background: #111;
996
- padding: 15px 20px;
997
- border-bottom: 1px solid #333;
998
- display: flex;
999
- align-items: center;
1000
- justify-content: space-between;
1001
- font-size: 1.2rem;
1002
- font-weight: 600;
1003
- color: var(--accent-primary);
1004
- letter-spacing: 1px;
1005
- }
1006
-
1007
- .terminal-close-btn {
1008
- background: transparent;
1009
- border: 1px solid #ef4444;
1010
- color: #ef4444;
1011
- padding: 5px 15px;
1012
- border-radius: 4px;
1013
- cursor: pointer;
1014
- font-weight: bold;
1015
- transition: all 0.2s;
1016
- }
1017
-
1018
- .terminal-close-btn:hover {
1019
- background: #ef4444;
1020
- color: white;
1021
- }
1022
-
1023
- /* Floating Trigger Button */
1024
- .terminal-trigger-btn {
1025
- position: fixed;
1026
- bottom: 30px;
1027
- right: 30px;
1028
- background: rgba(0, 0, 0, 0.9);
1029
- border: 1px solid var(--accent-primary);
1030
- color: var(--accent-primary);
1031
- width: 60px;
1032
- height: 60px;
1033
- border-radius: 50%;
1034
- display: flex;
1035
- justify-content: center;
1036
- align-items: center;
1037
- cursor: pointer;
1038
- z-index: 1000;
1039
- box-shadow: 0 0 20px rgba(0, 242, 234, 0.2);
1040
- transition: all 0.3s ease;
1041
- }
1042
-
1043
- .terminal-trigger-btn:hover {
1044
- background: var(--accent-primary);
1045
- color: #000;
1046
- transform: scale(1.1);
1047
- box-shadow: 0 0 30px rgba(0, 242, 234, 0.4);
1048
- }
1049
-
1050
- .status-dot {
1051
- width: 10px;
1052
- height: 10px;
1053
- background-color: #22c55e;
1054
- border-radius: 50%;
1055
- box-shadow: 0 0 8px #22c55e;
1056
- animation: blink 2s infinite;
1057
- }
1058
-
1059
- @keyframes blink {
1060
-
1061
- 0%,
1062
- 100% {
1063
- opacity: 1;
1064
- }
1065
-
1066
- 50% {
1067
- opacity: 0.5;
1068
- }
1069
- }
1070
-
1071
- .terminal-content {
1072
- flex: 1;
1073
- padding: 15px;
1074
- overflow-y: auto;
1075
- font-size: 0.85rem;
1076
- color: #22c55e;
1077
- line-height: 1.4;
1078
- font-family: 'Consolas', 'Monaco', monospace;
1079
- scrollbar-width: thin;
1080
- scrollbar-color: #333 #000;
1081
- }
1082
-
1083
- .terminal-content::-webkit-scrollbar {
1084
- width: 8px;
1085
- }
1086
-
1087
- .terminal-content::-webkit-scrollbar-track {
1088
- background: #000;
1089
- }
1090
-
1091
- .terminal-content::-webkit-scrollbar-thumb {
1092
- background-color: #333;
1093
- border-radius: 4px;
1094
- }
1095
-
1096
- .log-entry {
1097
- margin-bottom: 5px;
1098
- }
1099
-
1100
- .header-log {
1101
- color: #fff;
1102
- font-weight: bold;
1103
- margin-top: 10px;
1104
- margin-bottom: 10px;
1105
- border-bottom: 1px dashed #555;
1106
- padding-bottom: 5px;
1107
- }
1108
-
1109
- .log-json {
1110
- white-space: pre-wrap;
1111
- word-break: break-all;
1112
- margin: 0;
1113
- color: #22c55e;
1114
- }
1115
-
1116
- .log-time {
1117
- color: #64748b;
1118
- margin-right: 5px;
1119
- }
1120
-
1121
- .log-hash {
1122
- color: #0ea5e9;
1123
- /* Sky blue for hash highlight */
1124
- }
1125
-
1126
- /* --- How It Works Section (Diagram Flow) --- */
1127
- .how-it-works {
1128
- padding: 6rem 5%;
1129
- position: relative;
1130
- z-index: 5;
1131
- background: linear-gradient(to bottom, var(--bg-dark), #0b1120);
1132
- }
1133
-
1134
- .works-header {
1135
- text-align: center;
1136
- margin-bottom: 5rem;
1137
- max-width: 800px;
1138
- margin-left: auto;
1139
- margin-right: auto;
1140
- }
1141
-
1142
- .works-header h2 {
1143
- font-size: 2.5rem;
1144
- margin-bottom: 1rem;
1145
- background: linear-gradient(to right, #fff, #cbd5e1);
1146
- background-clip: text;
1147
- -webkit-background-clip: text;
1148
- -webkit-text-fill-color: transparent;
1149
- }
1150
-
1151
- .works-header p {
1152
- color: var(--text-secondary);
1153
- font-size: 1.1rem;
1154
- }
1155
-
1156
- .steps-container {
1157
- display: flex;
1158
- justify-content: space-between;
1159
- align-items: center;
1160
- /* Vertically center cards and arrows */
1161
- gap: 1rem;
1162
- max-width: 1200px;
1163
- margin: 0 auto;
1164
- position: relative;
1165
- }
1166
-
1167
- .step-card {
1168
- background: rgba(30, 41, 59, 0.4);
1169
- backdrop-filter: blur(10px);
1170
- border: 1px solid rgba(255, 255, 255, 0.05);
1171
- border-radius: 20px;
1172
- padding: 2.5rem 2rem;
1173
- flex: 1;
1174
- display: flex;
1175
- flex-direction: column;
1176
- align-items: center;
1177
- text-align: center;
1178
- transition: transform 0.3s, border-color 0.3s, box-shadow 0.3s, background 0.3s;
1179
- min-width: 250px;
1180
- }
1181
-
1182
- .step-card:hover {
1183
- transform: translateY(-10px);
1184
- border-color: rgba(59, 130, 246, 0.3);
1185
- box-shadow: 0 20px 40px -10px rgba(0, 0, 0, 0.5);
1186
- background: rgba(30, 41, 59, 0.6);
1187
- }
1188
-
1189
- .step-icon {
1190
- width: 80px;
1191
- height: 80px;
1192
- border-radius: 50%;
1193
- background: rgba(59, 130, 246, 0.1);
1194
- display: flex;
1195
- align-items: center;
1196
- justify-content: center;
1197
- margin-bottom: 1.5rem;
1198
- color: var(--accent-secondary);
1199
- border: 1px solid rgba(59, 130, 246, 0.2);
1200
- box-shadow: 0 0 20px rgba(59, 130, 246, 0.1);
1201
- transition: transform 0.3s, color 0.3s, border-color 0.3s;
1202
- }
1203
-
1204
- .step-card:hover .step-icon {
1205
- transform: scale(1.1) rotate(5deg);
1206
- color: var(--accent-primary);
1207
- border-color: rgba(0, 242, 234, 0.3);
1208
- }
1209
-
1210
- .step-card h3 {
1211
- font-size: 1.5rem;
1212
- margin-bottom: 1rem;
1213
- color: var(--text-primary);
1214
- font-weight: 700;
1215
- }
1216
-
1217
- .step-card p {
1218
- font-size: 0.95rem;
1219
- color: var(--text-secondary);
1220
- line-height: 1.6;
1221
- }
1222
-
1223
- .step-arrow {
1224
- display: flex;
1225
- align-items: center;
1226
- justify-content: center;
1227
- color: var(--text-secondary);
1228
- opacity: 0.5;
1229
- flex-shrink: 0;
1230
- padding: 0 1rem;
1231
- transition: transform 0.3s;
1232
- }
1233
-
1234
- .step-arrow svg {
1235
- width: 32px;
1236
- height: 32px;
1237
- }
1238
-
1239
- /* Responsive Design for Steps */
1240
- @media (max-width: 900px) {
1241
- .steps-container {
1242
- flex-direction: column;
1243
- gap: 2rem;
1244
- }
1245
-
1246
- .step-arrow {
1247
- transform: rotate(90deg);
1248
- /* Point down on mobile */
1249
- padding: 0;
1250
- }
1251
-
1252
- .step-card {
1253
- width: 100%;
1254
- max-width: 500px;
1255
- }
1256
- }
1257
-
1258
-
1259
- /* PDF Preview Section */
1260
- .pdf-section {
1261
- padding: 4rem 5%;
1262
- position: relative;
1263
- z-index: 5;
1264
- margin-bottom: 4rem;
1265
- }
1266
-
1267
- .pdf-container {
1268
- max-width: 1200px;
1269
- margin: 0 auto;
1270
- background: rgba(30, 41, 59, 0.6);
1271
- backdrop-filter: blur(20px);
1272
- -webkit-backdrop-filter: blur(20px);
1273
- border: 1px solid rgba(255, 255, 255, 0.1);
1274
- border-radius: 24px;
1275
- padding: 2rem;
1276
- box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
1277
- transition: transform 0.3s, border-color 0.3s;
1278
- }
1279
-
1280
- .pdf-container:hover {
1281
- transform: translateY(-5px);
1282
- border-color: rgba(255, 255, 255, 0.2);
1283
- }
1284
-
1285
- .pdf-header {
1286
- display: flex;
1287
- justify-content: space-between;
1288
- align-items: center;
1289
- margin-bottom: 2rem;
1290
- flex-wrap: wrap;
1291
- gap: 1rem;
1292
- }
1293
-
1294
- .pdf-title {
1295
- display: flex;
1296
- align-items: center;
1297
- gap: 12px;
1298
- }
1299
-
1300
- .pdf-title svg {
1301
- color: var(--accent-primary);
1302
- flex-shrink: 0;
1303
- }
1304
-
1305
- .pdf-title h2 {
1306
- font-size: 1.8rem;
1307
- font-weight: 700;
1308
- background: linear-gradient(to right, #fff, #cbd5e1);
1309
- background-clip: text;
1310
- -webkit-background-clip: text;
1311
- -webkit-text-fill-color: transparent;
1312
- margin: 0;
1313
- }
1314
-
1315
- .pdf-badge {
1316
- background: rgba(0, 242, 234, 0.1);
1317
- border: 1px solid rgba(0, 242, 234, 0.3);
1318
- color: var(--accent-primary);
1319
- padding: 8px 16px;
1320
- border-radius: 20px;
1321
- font-size: 0.85rem;
1322
- font-family: monospace;
1323
- font-weight: 600;
1324
- }
1325
-
1326
- .pdf-preview-wrapper {
1327
- position: relative;
1328
- width: 100%;
1329
- height: 600px;
1330
- background: rgba(15, 23, 42, 0.8);
1331
- border-radius: 16px;
1332
- overflow: hidden;
1333
- border: 1px solid var(--border-dark);
1334
- margin-bottom: 1.5rem;
1335
- box-shadow: inset 0 2px 10px rgba(0, 0, 0, 0.3);
1336
- }
1337
-
1338
- .pdf-preview-frame {
1339
- width: 100%;
1340
- height: 100%;
1341
- border: none;
1342
- display: block;
1343
- }
1344
-
1345
- .pdf-actions {
1346
- display: flex;
1347
- gap: 1rem;
1348
- justify-content: center;
1349
- flex-wrap: wrap;
1350
- }
1351
-
1352
- .pdf-btn {
1353
- display: inline-flex;
1354
- align-items: center;
1355
- gap: 10px;
1356
- padding: 1rem 2rem;
1357
- border-radius: 12px;
1358
- font-size: 1rem;
1359
- font-weight: 600;
1360
- text-decoration: none;
1361
- transition: all 0.3s;
1362
- cursor: pointer;
1363
- border: none;
1364
- }
1365
-
1366
- .view-btn {
1367
- background: linear-gradient(135deg, var(--accent-secondary), #2563eb);
1368
- color: white;
1369
- box-shadow: 0 4px 15px rgba(59, 130, 246, 0.3);
1370
- }
1371
-
1372
- .view-btn:hover {
1373
- transform: translateY(-2px);
1374
- box-shadow: 0 6px 20px rgba(59, 130, 246, 0.4);
1375
- }
1376
-
1377
- .download-btn {
1378
- background: linear-gradient(135deg, #10b981, #059669);
1379
- color: white;
1380
- box-shadow: 0 4px 15px rgba(16, 185, 129, 0.3);
1381
- }
1382
-
1383
- .download-btn:hover {
1384
- transform: translateY(-2px);
1385
- box-shadow: 0 6px 20px rgba(16, 185, 129, 0.4);
1386
- }
1387
-
1388
- .pdf-btn svg {
1389
- flex-shrink: 0;
1390
- }
1391
-
1392
- /* Responsive Design for PDF Section */
1393
- @media (max-width: 768px) {
1394
- .pdf-section {
1395
- padding: 2rem 3%;
1396
- }
1397
-
1398
- .pdf-container {
1399
- padding: 1.5rem;
1400
- }
1401
-
1402
- .pdf-title h2 {
1403
- font-size: 1.4rem;
1404
- }
1405
-
1406
- .pdf-preview-wrapper {
1407
- height: 400px;
1408
- }
1409
-
1410
- .pdf-header {
1411
- flex-direction: column;
1412
- align-items: flex-start;
1413
- }
1414
-
1415
- .pdf-actions {
1416
- flex-direction: column;
1417
- width: 100%;
1418
- }
1419
-
1420
- .pdf-btn {
1421
- width: 100%;
1422
- justify-content: center;
1423
- }
1424
- }
1425
-
1426
- @media (max-width: 480px) {
1427
- .pdf-preview-wrapper {
1428
- height: 300px;
1429
- }
1430
-
1431
- .pdf-badge {
1432
- font-size: 0.75rem;
1433
- padding: 6px 12px;
1434
- }
1435
- }