SolarumAsteridion commited on
Commit
d3790ad
·
verified ·
1 Parent(s): b5b94fb

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +82 -434
index.html CHANGED
@@ -4,7 +4,10 @@
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
  <title>Exam Countdown</title>
7
- <link href="https://fonts.googleapis.com/css2?family=Inter:wght@200;300;400;500;600;700;800&family=Poppins:wght@200;300;400;500;600;700;800&display=swap" rel="stylesheet">
 
 
 
8
  <style>
9
  * { margin: 0; padding: 0; box-sizing: border-box; }
10
 
@@ -14,11 +17,11 @@
14
  --text-primary: rgba(255, 255, 255, 0.95);
15
  --text-secondary: rgba(255, 255, 255, 0.6);
16
  --text-muted: rgba(255, 255, 255, 0.4);
17
- --accent: #ffffff;
18
  }
19
 
20
  body {
21
- font-family: 'Inter', sans-serif;
 
22
  background: #000000;
23
  min-height: 100vh;
24
  color: var(--text-primary);
@@ -37,24 +40,17 @@
37
  animation: float 20s infinite ease-in-out;
38
  pointer-events: none;
39
  }
40
-
41
  body::before {
42
- width: 600px;
43
- height: 600px;
44
  background: radial-gradient(circle, #ffffff 0%, transparent 70%);
45
- top: -200px;
46
- right: -200px;
47
  }
48
-
49
  body::after {
50
- width: 800px;
51
- height: 800px;
52
  background: radial-gradient(circle, #ffffff 0%, transparent 70%);
53
- bottom: -300px;
54
- left: -300px;
55
  animation-delay: 10s;
56
  }
57
-
58
  @keyframes float {
59
  0%, 100% { transform: translate(0, 0) scale(1); }
60
  33% { transform: translate(30px, -30px) scale(1.1); }
@@ -62,473 +58,124 @@
62
  }
63
 
64
  /* Subtle particles */
65
- .particles {
66
- position: fixed;
67
- top: 0;
68
- left: 0;
69
- width: 100%;
70
- height: 100%;
71
- overflow: hidden;
72
- z-index: 1;
73
- pointer-events: none;
74
- }
75
-
76
- .particle {
77
- position: absolute;
78
- width: 1px;
79
- height: 1px;
80
- background: white;
81
- border-radius: 50%;
82
- opacity: 0;
83
- animation: twinkle 5s infinite;
84
- }
85
-
86
  @keyframes twinkle {
87
  0%, 100% { opacity: 0; transform: scale(0.5); }
88
  50% { opacity: 0.8; transform: scale(1); }
89
  }
90
 
91
- .container {
92
- max-width: 1200px;
93
- margin: 0 auto;
94
- padding: 3rem 2rem;
95
- position: relative;
96
- z-index: 2;
97
- }
98
 
99
  /* Clean header */
100
- .header {
101
- display: flex;
102
- justify-content: space-between;
103
- align-items: center;
104
- margin-bottom: 5rem;
105
- padding-bottom: 2rem;
106
- position: relative;
107
- }
108
-
109
- .header::after {
110
- content: '';
111
- position: absolute;
112
- bottom: 0;
113
- left: 0;
114
- right: 0;
115
- height: 1px;
116
- background: linear-gradient(90deg,
117
- transparent,
118
- rgba(255, 255, 255, 0.1) 20%,
119
- rgba(255, 255, 255, 0.1) 80%,
120
- transparent);
121
- }
122
 
123
  h1 {
124
- font-family: 'Poppins', sans-serif;
 
125
  font-size: 2.5rem;
126
- font-weight: 200;
127
  letter-spacing: -1px;
128
  background: linear-gradient(135deg, #ffffff 0%, rgba(255, 255, 255, 0.6) 100%);
129
- -webkit-background-clip: text;
130
- -webkit-text-fill-color: transparent;
131
- background-clip: text;
132
  }
133
 
134
  /* Glass settings button */
135
- .settings-btn {
136
- width: 50px;
137
- height: 50px;
138
- background: var(--glass-bg);
139
- backdrop-filter: blur(20px) saturate(180%);
140
- -webkit-backdrop-filter: blur(20px) saturate(180%);
141
- border: 1px solid var(--glass-border);
142
- border-radius: 16px;
143
- display: flex;
144
- align-items: center;
145
- justify-content: center;
146
- cursor: pointer;
147
- transition: all 0.4s cubic-bezier(0.23, 1, 0.320, 1);
148
- position: relative;
149
- overflow: hidden;
150
- }
151
-
152
- .settings-btn::before {
153
- content: '';
154
- position: absolute;
155
- top: 0;
156
- left: 0;
157
- right: 0;
158
- bottom: 0;
159
- background: radial-gradient(circle at center,
160
- rgba(255, 255, 255, 0.1) 0%,
161
- transparent 70%);
162
- opacity: 0;
163
- transition: opacity 0.3s ease;
164
- }
165
-
166
- .settings-btn:hover {
167
- transform: scale(1.05);
168
- background: rgba(255, 255, 255, 0.06);
169
- border-color: rgba(255, 255, 255, 0.2);
170
- }
171
-
172
- .settings-btn:hover::before {
173
- opacity: 1;
174
- }
175
-
176
- .settings-btn svg {
177
- width: 24px;
178
- height: 24px;
179
- fill: var(--text-primary);
180
- transition: transform 0.4s ease;
181
- }
182
-
183
- .settings-btn:hover svg {
184
- transform: rotate(90deg);
185
- }
186
 
187
  /* Glass exam grid */
188
- .exams-grid {
189
- display: grid;
190
- grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
191
- gap: 2rem;
192
- }
193
 
194
  /* Glassmorphic exam cards */
195
- .exam-card {
196
- background: var(--glass-bg);
197
- backdrop-filter: blur(40px) saturate(180%);
198
- -webkit-backdrop-filter: blur(40px) saturate(180%);
199
- border: 1px solid var(--glass-border);
200
- border-radius: 24px;
201
- padding: 2.5rem;
202
- text-align: center;
203
- transition: all 0.4s cubic-bezier(0.23, 1, 0.320, 1);
204
- position: relative;
205
- overflow: hidden;
206
- }
207
-
208
- .exam-card::before {
209
- content: '';
210
- position: absolute;
211
- top: 0;
212
- left: 0;
213
- right: 0;
214
- height: 1px;
215
- background: linear-gradient(90deg,
216
- transparent,
217
- rgba(255, 255, 255, 0.2) 50%,
218
- transparent);
219
- opacity: 0;
220
- transition: opacity 0.3s ease;
221
- }
222
-
223
- .exam-card::after {
224
- content: '';
225
- position: absolute;
226
- inset: 0;
227
- background: radial-gradient(
228
- 600px circle at var(--mouse-x) var(--mouse-y),
229
- rgba(255, 255, 255, 0.06),
230
- transparent 40%
231
- );
232
- opacity: 0;
233
- transition: opacity 0.3s ease;
234
- pointer-events: none;
235
- }
236
-
237
- .exam-card:hover {
238
- transform: translateY(-5px);
239
- background: rgba(255, 255, 255, 0.05);
240
- border-color: rgba(255, 255, 255, 0.15);
241
- box-shadow:
242
- 0 20px 40px rgba(0, 0, 0, 0.5),
243
- inset 0 1px 0 rgba(255, 255, 255, 0.1);
244
- }
245
-
246
- .exam-card:hover::before {
247
- opacity: 1;
248
- }
249
-
250
- .exam-card:hover::after {
251
- opacity: 1;
252
- }
253
 
254
  .exam-name {
255
- font-family: 'Poppins', sans-serif;
256
  font-size: 1.4rem;
257
- font-weight: 300;
258
  margin-bottom: 2rem;
259
  color: var(--text-primary);
260
  letter-spacing: -0.5px;
261
  }
262
 
263
  .countdown {
264
- font-size: 3.5rem;
265
- font-weight: 200;
 
 
266
  margin-bottom: 0.5rem;
267
  letter-spacing: -2px;
 
268
  background: linear-gradient(180deg, #ffffff 0%, rgba(255, 255, 255, 0.7) 100%);
269
- -webkit-background-clip: text;
270
- -webkit-text-fill-color: transparent;
271
- background-clip: text;
272
  }
273
 
274
- .countdown-label {
275
- font-size: 0.85rem;
276
- color: var(--text-secondary);
277
- text-transform: uppercase;
278
- letter-spacing: 2px;
279
- font-weight: 500;
280
- }
281
-
282
- .exam-date {
283
- font-size: 0.9rem;
284
- color: var(--text-muted);
285
- margin-top: 2rem;
286
- padding-top: 1.5rem;
287
- border-top: 1px solid rgba(255, 255, 255, 0.05);
288
- }
289
 
290
  /* Minimal delete button */
291
- .delete-btn {
292
- position: absolute;
293
- top: 1.5rem;
294
- right: 1.5rem;
295
- width: 32px;
296
- height: 32px;
297
- background: rgba(255, 255, 255, 0.03);
298
- border: 1px solid rgba(255, 255, 255, 0.08);
299
- border-radius: 10px;
300
- display: flex;
301
- align-items: center;
302
- justify-content: center;
303
- cursor: pointer;
304
- transition: all 0.3s ease;
305
- opacity: 0;
306
- }
307
-
308
- .exam-card:hover .delete-btn {
309
- opacity: 1;
310
- }
311
-
312
- .delete-btn:hover {
313
- background: rgba(255, 255, 255, 0.08);
314
- border-color: rgba(255, 255, 255, 0.2);
315
- transform: scale(1.1);
316
- }
317
-
318
- .delete-btn svg {
319
- width: 16px;
320
- height: 16px;
321
- fill: var(--text-secondary);
322
- transition: fill 0.3s ease;
323
- pointer-events: none; /* Important for event delegation */
324
- }
325
-
326
- .delete-btn:hover svg {
327
- fill: var(--text-primary);
328
- }
329
 
330
  /* Glass modal */
331
- .modal {
332
- display: none;
333
- position: fixed;
334
- top: 0;
335
- left: 0;
336
- width: 100%;
337
- height: 100%;
338
- background: rgba(0, 0, 0, 0.7);
339
- backdrop-filter: blur(10px);
340
- -webkit-backdrop-filter: blur(10px);
341
- z-index: 1000;
342
- align-items: center;
343
- justify-content: center;
344
- padding: 2rem;
345
- opacity: 0;
346
- transition: opacity 0.3s ease;
347
- }
348
-
349
- .modal.active {
350
- display: flex;
351
- opacity: 1;
352
- }
353
-
354
- .modal-content {
355
- background: rgba(255, 255, 255, 0.03);
356
- backdrop-filter: blur(40px) saturate(180%);
357
- -webkit-backdrop-filter: blur(40px) saturate(180%);
358
- border: 1px solid rgba(255, 255, 255, 0.1);
359
- border-radius: 24px;
360
- padding: 3rem;
361
- width: 100%;
362
- max-width: 450px;
363
- box-shadow:
364
- 0 20px 60px rgba(0, 0, 0, 0.5),
365
- inset 0 1px 0 rgba(255, 255, 255, 0.1);
366
- animation: modalSlide 0.4s cubic-bezier(0.23, 1, 0.320, 1);
367
- }
368
-
369
- @keyframes modalSlide {
370
- from {
371
- transform: translateY(-20px) scale(0.95);
372
- opacity: 0;
373
- }
374
- to {
375
- transform: translateY(0) scale(1);
376
- opacity: 1;
377
- }
378
- }
379
-
380
- .modal-header {
381
- display: flex;
382
- justify-content: space-between;
383
- align-items: center;
384
- margin-bottom: 2.5rem;
385
- padding-bottom: 1.5rem;
386
- border-bottom: 1px solid rgba(255, 255, 255, 0.05);
387
- }
388
-
389
- .modal-title {
390
- font-family: 'Poppins', sans-serif;
391
- font-size: 1.5rem;
392
- font-weight: 300;
393
- letter-spacing: -0.5px;
394
- }
395
-
396
- .close-btn {
397
- width: 36px;
398
- height: 36px;
399
- background: rgba(255, 255, 255, 0.03);
400
- border: 1px solid rgba(255, 255, 255, 0.08);
401
- border-radius: 10px;
402
- cursor: pointer;
403
- display: flex;
404
- align-items: center;
405
- justify-content: center;
406
- transition: all 0.3s ease;
407
- }
408
-
409
- .close-btn:hover {
410
- background: rgba(255, 255, 255, 0.08);
411
- transform: rotate(90deg);
412
- }
413
-
414
- .close-btn svg {
415
- width: 18px;
416
- height: 18px;
417
- fill: var(--text-secondary);
418
- }
419
 
420
  /* Clean form */
421
- .form-group {
422
- margin-bottom: 2rem;
423
- }
424
-
425
- .form-group label {
426
- display: block;
427
- margin-bottom: 0.75rem;
428
- font-size: 0.9rem;
429
- color: var(--text-secondary);
430
- font-weight: 500;
431
- letter-spacing: 0.5px;
432
- }
433
-
434
- .form-group input {
435
- width: 100%;
436
- padding: 1rem 1.25rem;
437
- background: rgba(255, 255, 255, 0.03);
438
- border: 1px solid rgba(255, 255, 255, 0.08);
439
- border-radius: 12px;
440
- color: var(--text-primary);
441
- font-size: 1rem;
442
- transition: all 0.3s ease;
443
- font-family: 'Inter', sans-serif;
444
- }
445
-
446
- .form-group input:focus {
447
- outline: none;
448
- background: rgba(255, 255, 255, 0.05);
449
- border-color: rgba(255, 255, 255, 0.2);
450
- box-shadow:
451
- 0 0 0 4px rgba(255, 255, 255, 0.02),
452
- inset 0 1px 0 rgba(255, 255, 255, 0.1);
453
- }
454
-
455
- .form-group input::placeholder {
456
- color: var(--text-muted);
457
- }
458
 
459
  /* Sleek add button */
460
- .add-btn {
461
- width: 100%;
462
- padding: 1.25rem;
463
- background: rgba(255, 255, 255, 0.95);
464
- border: none;
465
- border-radius: 12px;
466
- color: #000;
467
- font-size: 1rem;
468
- font-weight: 600;
469
- cursor: pointer;
470
- transition: all 0.3s cubic-bezier(0.23, 1, 0.320, 1);
471
- position: relative;
472
- overflow: hidden;
473
- letter-spacing: 0.5px;
474
- }
475
-
476
- .add-btn:hover {
477
- transform: translateY(-2px);
478
- background: white;
479
- box-shadow:
480
- 0 10px 30px rgba(255, 255, 255, 0.2),
481
- 0 1px 0 rgba(255, 255, 255, 0.2);
482
- }
483
-
484
- .add-btn:active {
485
- transform: translateY(0);
486
- }
487
 
488
  /* Elegant empty state */
489
- .empty-state {
490
- text-align: center;
491
- padding: 6rem 2rem;
492
- display: flex;
493
- flex-direction: column;
494
- align-items: center;
495
- justify-content: center;
496
- }
497
 
498
- .empty-icon {
499
- width: 80px;
500
- height: 80px;
501
- margin-bottom: 2rem;
502
- background: var(--glass-bg);
503
- backdrop-filter: blur(20px);
504
- border: 1px solid var(--glass-border);
505
- border-radius: 20px;
506
- display: flex;
507
- align-items: center;
508
- justify-content: center;
509
- font-size: 2rem;
510
- }
511
 
512
- .empty-state p {
513
- font-size: 1.1rem;
514
- color: var(--text-secondary);
515
- max-width: 400px;
516
- line-height: 1.6;
517
- font-weight: 300;
518
  }
519
-
520
- /* Input date styling for webkit browsers */
521
- input[type="date"]::-webkit-calendar-picker-indicator {
522
- filter: invert(1);
523
- cursor: pointer;
524
  }
525
-
526
- /* Responsive */
527
- @media (max-width: 768px) {
528
- h1 { font-size: 2rem; }
529
- .countdown { font-size: 2.5rem; }
530
- .exams-grid { grid-template-columns: 1fr; }
531
- .container { padding: 2rem 1rem; }
 
532
  }
533
  </style>
534
  </head>
@@ -578,6 +225,7 @@
578
  </div>
579
  </div>
580
 
 
581
  <script type="module">
582
  // Firebase SDK modules
583
  import { initializeApp } from "https://www.gstatic.com/firebasejs/10.7.1/firebase-app.js";
 
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
  <title>Exam Countdown</title>
7
+ <!-- NEW: Updated Google Fonts Link -->
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=Lexend:wght@300;400;500;600&family=Playfair+Display:wght@700&display=swap" rel="stylesheet">
11
  <style>
12
  * { margin: 0; padding: 0; box-sizing: border-box; }
13
 
 
17
  --text-primary: rgba(255, 255, 255, 0.95);
18
  --text-secondary: rgba(255, 255, 255, 0.6);
19
  --text-muted: rgba(255, 255, 255, 0.4);
 
20
  }
21
 
22
  body {
23
+ /* CHANGE: Font updated to Lexend */
24
+ font-family: 'Lexend', sans-serif;
25
  background: #000000;
26
  min-height: 100vh;
27
  color: var(--text-primary);
 
40
  animation: float 20s infinite ease-in-out;
41
  pointer-events: none;
42
  }
 
43
  body::before {
44
+ width: 600px; height: 600px;
 
45
  background: radial-gradient(circle, #ffffff 0%, transparent 70%);
46
+ top: -200px; right: -200px;
 
47
  }
 
48
  body::after {
49
+ width: 800px; height: 800px;
 
50
  background: radial-gradient(circle, #ffffff 0%, transparent 70%);
51
+ bottom: -300px; left: -300px;
 
52
  animation-delay: 10s;
53
  }
 
54
  @keyframes float {
55
  0%, 100% { transform: translate(0, 0) scale(1); }
56
  33% { transform: translate(30px, -30px) scale(1.1); }
 
58
  }
59
 
60
  /* Subtle particles */
61
+ .particles { position: fixed; top: 0; left: 0; width: 100%; height: 100%; overflow: hidden; z-index: 1; pointer-events: none; }
62
+ .particle { position: absolute; width: 1px; height: 1px; background: white; border-radius: 50%; opacity: 0; animation: twinkle 5s infinite; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  @keyframes twinkle {
64
  0%, 100% { opacity: 0; transform: scale(0.5); }
65
  50% { opacity: 0.8; transform: scale(1); }
66
  }
67
 
68
+ .container { max-width: 1200px; margin: 0 auto; padding: 3rem 2rem; position: relative; z-index: 2; }
 
 
 
 
 
 
69
 
70
  /* Clean header */
71
+ .header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 5rem; padding-bottom: 2rem; position: relative; }
72
+ .header::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1) 20%, rgba(255, 255, 255, 0.1) 80%, transparent); }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
 
74
  h1 {
75
+ /* CHANGE: Font updated to Lexend, slightly thicker */
76
+ font-family: 'Lexend', sans-serif;
77
  font-size: 2.5rem;
78
+ font-weight: 300;
79
  letter-spacing: -1px;
80
  background: linear-gradient(135deg, #ffffff 0%, rgba(255, 255, 255, 0.6) 100%);
81
+ -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;
 
 
82
  }
83
 
84
  /* Glass settings button */
85
+ .settings-btn { width: 50px; height: 50px; background: var(--glass-bg); backdrop-filter: blur(20px) saturate(180%); -webkit-backdrop-filter: blur(20px) saturate(180%); border: 1px solid var(--glass-border); border-radius: 16px; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: all 0.4s cubic-bezier(0.23, 1, 0.320, 1); position: relative; overflow: hidden; }
86
+ .settings-btn::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: radial-gradient(circle at center, rgba(255, 255, 255, 0.1) 0%, transparent 70%); opacity: 0; transition: opacity 0.3s ease; }
87
+ .settings-btn:hover { transform: scale(1.05); background: rgba(255, 255, 255, 0.06); border-color: rgba(255, 255, 255, 0.2); }
88
+ .settings-btn:hover::before { opacity: 1; }
89
+ .settings-btn svg { width: 24px; height: 24px; fill: var(--text-primary); transition: transform 0.4s ease; }
90
+ .settings-btn:hover svg { transform: rotate(90deg); }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
91
 
92
  /* Glass exam grid */
93
+ .exams-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 2rem; }
 
 
 
 
94
 
95
  /* Glassmorphic exam cards */
96
+ .exam-card { background: var(--glass-bg); backdrop-filter: blur(40px) saturate(180%); -webkit-backdrop-filter: blur(40px) saturate(180%); border: 1px solid var(--glass-border); border-radius: 24px; padding: 2.5rem; text-align: center; transition: all 0.4s cubic-bezier(0.23, 1, 0.320, 1); position: relative; overflow: hidden; }
97
+ .exam-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2) 50%, transparent); opacity: 0; transition: opacity 0.3s ease; }
98
+ .exam-card::after { content: ''; position: absolute; inset: 0; background: radial-gradient( 600px circle at var(--mouse-x) var(--mouse-y), rgba(255, 255, 255, 0.06), transparent 40% ); opacity: 0; transition: opacity 0.3s ease; pointer-events: none; }
99
+ .exam-card:hover { transform: translateY(-5px); background: rgba(255, 255, 255, 0.05); border-color: rgba(255, 255, 255, 0.15); box-shadow: 0 20px 40px rgba(0, 0, 0, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.1); }
100
+ .exam-card:hover::before, .exam-card:hover::after { opacity: 1; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101
 
102
  .exam-name {
103
+ /* CHANGE: Font weight increased */
104
  font-size: 1.4rem;
105
+ font-weight: 400;
106
  margin-bottom: 2rem;
107
  color: var(--text-primary);
108
  letter-spacing: -0.5px;
109
  }
110
 
111
  .countdown {
112
+ /* CHANGE: Font updated to Playfair Display, made larger and bolder */
113
+ font-family: 'Playfair Display', serif;
114
+ font-size: 4.5rem;
115
+ font-weight: 700;
116
  margin-bottom: 0.5rem;
117
  letter-spacing: -2px;
118
+ line-height: 1.1;
119
  background: linear-gradient(180deg, #ffffff 0%, rgba(255, 255, 255, 0.7) 100%);
120
+ -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;
 
 
121
  }
122
 
123
+ .countdown-label { font-size: 0.85rem; color: var(--text-secondary); text-transform: uppercase; letter-spacing: 2px; font-weight: 500; }
124
+ .exam-date { font-size: 0.9rem; color: var(--text-muted); margin-top: 2rem; padding-top: 1.5rem; border-top: 1px solid rgba(255, 255, 255, 0.05); }
 
 
 
 
 
 
 
 
 
 
 
 
 
125
 
126
  /* Minimal delete button */
127
+ .delete-btn { position: absolute; top: 1.5rem; right: 1.5rem; width: 32px; height: 32px; background: rgba(255, 255, 255, 0.03); border: 1px solid rgba(255, 255, 255, 0.08); border-radius: 10px; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: all 0.3s ease; opacity: 0; }
128
+ .exam-card:hover .delete-btn { opacity: 1; }
129
+ .delete-btn:hover { background: rgba(255, 255, 255, 0.08); border-color: rgba(255, 255, 255, 0.2); transform: scale(1.1); }
130
+ .delete-btn svg { width: 16px; height: 16px; fill: var(--text-secondary); transition: fill 0.3s ease; pointer-events: none; }
131
+ .delete-btn:hover svg { fill: var(--text-primary); }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
132
 
133
  /* Glass modal */
134
+ .modal { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.7); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); z-index: 1000; align-items: center; justify-content: center; padding: 2rem; opacity: 0; transition: opacity 0.3s ease; }
135
+ .modal.active { display: flex; opacity: 1; }
136
+ .modal-content { background: rgba(255, 255, 255, 0.03); backdrop-filter: blur(40px) saturate(180%); -webkit-backdrop-filter: blur(40px) saturate(180%); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 24px; padding: 3rem; width: 100%; max-width: 450px; box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.1); animation: modalSlide 0.4s cubic-bezier(0.23, 1, 0.320, 1); }
137
+ @keyframes modalSlide { from { transform: translateY(-20px) scale(0.95); opacity: 0; } to { transform: translateY(0) scale(1); opacity: 1; } }
138
+ .modal-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 2.5rem; padding-bottom: 1.5rem; border-bottom: 1px solid rgba(255, 255, 255, 0.05); }
139
+ .modal-title { font-family: 'Lexend', sans-serif; font-size: 1.5rem; font-weight: 400; letter-spacing: -0.5px; }
140
+ .close-btn { width: 36px; height: 36px; background: rgba(255, 255, 255, 0.03); border: 1px solid rgba(255, 255, 255, 0.08); border-radius: 10px; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: all 0.3s ease; }
141
+ .close-btn:hover { background: rgba(255, 255, 255, 0.08); transform: rotate(90deg); }
142
+ .close-btn svg { width: 18px; height: 18px; fill: var(--text-secondary); }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
 
144
  /* Clean form */
145
+ .form-group { margin-bottom: 2rem; }
146
+ .form-group label { display: block; margin-bottom: 0.75rem; font-size: 0.9rem; color: var(--text-secondary); font-weight: 500; letter-spacing: 0.5px; }
147
+ .form-group input { width: 100%; padding: 1rem 1.25rem; background: rgba(255, 255, 255, 0.03); border: 1px solid rgba(255, 255, 255, 0.08); border-radius: 12px; color: var(--text-primary); font-size: 1rem; transition: all 0.3s ease; font-family: 'Lexend', sans-serif; }
148
+ .form-group input:focus { outline: none; background: rgba(255, 255, 255, 0.05); border-color: rgba(255, 255, 255, 0.2); box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.02), inset 0 1px 0 rgba(255, 255, 255, 0.1); }
149
+ .form-group input::placeholder { color: var(--text-muted); }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
150
 
151
  /* Sleek add button */
152
+ .add-btn { width: 100%; padding: 1.25rem; background: rgba(255, 255, 255, 0.95); border: none; border-radius: 12px; color: #000; font-size: 1rem; font-weight: 600; cursor: pointer; transition: all 0.3s cubic-bezier(0.23, 1, 0.320, 1); position: relative; overflow: hidden; letter-spacing: 0.5px; }
153
+ .add-btn:hover { transform: translateY(-2px); background: white; box-shadow: 0 10px 30px rgba(255, 255, 255, 0.2), 0 1px 0 rgba(255, 255, 255, 0.2); }
154
+ .add-btn:active { transform: translateY(0); }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
155
 
156
  /* Elegant empty state */
157
+ .empty-state { text-align: center; padding: 6rem 2rem; display: flex; flex-direction: column; align-items: center; justify-content: center; }
158
+ .empty-icon { width: 80px; height: 80px; margin-bottom: 2rem; background: var(--glass-bg); backdrop-filter: blur(20px); border: 1px solid var(--glass-border); border-radius: 20px; display: flex; align-items: center; justify-content: center; font-size: 2rem; }
159
+ .empty-state p { font-size: 1.1rem; color: var(--text-secondary); max-width: 400px; line-height: 1.6; font-weight: 300; }
 
 
 
 
 
160
 
161
+ input[type="date"]::-webkit-calendar-picker-indicator { filter: invert(1); cursor: pointer; }
162
+ @media (max-width: 768px) { h1 { font-size: 2rem; } .countdown { font-size: 3.5rem; } .exams-grid { grid-template-columns: 1fr; } .container { padding: 2rem 1rem; } }
 
 
 
 
 
 
 
 
 
 
 
163
 
164
+ /* NEW: Enhanced Scrollbar */
165
+ ::-webkit-scrollbar {
166
+ width: 8px;
 
 
 
167
  }
168
+ ::-webkit-scrollbar-track {
169
+ background: transparent;
 
 
 
170
  }
171
+ ::-webkit-scrollbar-thumb {
172
+ background: rgba(255, 255, 255, 0.1);
173
+ border-radius: 10px;
174
+ border: 2px solid transparent;
175
+ background-clip: content-box;
176
+ }
177
+ ::-webkit-scrollbar-thumb:hover {
178
+ background: rgba(255, 255, 255, 0.2);
179
  }
180
  </style>
181
  </head>
 
225
  </div>
226
  </div>
227
 
228
+ <!-- The Javascript below is unchanged and remains fully functional -->
229
  <script type="module">
230
  // Firebase SDK modules
231
  import { initializeApp } from "https://www.gstatic.com/firebasejs/10.7.1/firebase-app.js";