Diff of /web/style.css [000000] .. [8c4ad8]

Switch to unified view

a b/web/style.css
1
/* DNA Helix Animation */
2
.dna-helix {
3
  position: relative;
4
  width: 200px;
5
  height: 400px;
6
  margin: 0 auto;
7
  perspective: 1200px;
8
  transform-style: preserve-3d;
9
  will-change: transform; /* Optimize animation performance */
10
}
11
12
.base-pair {
13
  position: absolute;
14
  width: 100%;
15
  height: 20px;
16
  animation: rotate 8s linear infinite;
17
  transform-style: preserve-3d;
18
  backface-visibility: hidden; /* Prevent flickering */
19
  will-change: transform;
20
}
21
22
.base {
23
  position: absolute;
24
  width: 25px;
25
  height: 25px;
26
  border-radius: 50%;
27
  display: flex;
28
  align-items: center;
29
  justify-content: center;
30
  font-weight: bold;
31
  color: white;
32
  text-shadow: 0 0 3px rgba(0,0,0,0.5);
33
  box-shadow: 0 0 15px rgba(0,0,0,0.2);
34
  backface-visibility: hidden;
35
}
36
37
.left-base {
38
  left: 35px;
39
  background: #FF0066;
40
  animation: pulse 3s ease-in-out infinite;
41
  filter: brightness(1.1);
42
}
43
44
.right-base {
45
  right: 35px;
46
  background: #00B7FF;
47
  animation: pulse 3s ease-in-out infinite;
48
  filter: brightness(1.1);
49
}
50
51
.base-connector {
52
  position: absolute;
53
  left: 50%;
54
  width: 90px;
55
  height: 3px;
56
  background: linear-gradient(90deg, 
57
      rgba(255, 0, 102, 0.8), 
58
      rgba(255, 255, 255, 0.3) 50%,
59
      rgba(0, 183, 255, 0.8)
60
  );
61
  transform: translateX(-50%);
62
  box-shadow: 0 0 8px rgba(0,0,0,0.15);
63
}
64
65
@keyframes rotate {
66
  0% { transform: rotateY(0deg) translateZ(40px) translateX(-20px); }
67
  12.5% { transform: rotateY(45deg) translateZ(40px) translateX(-15px); }
68
  25% { transform: rotateY(90deg) translateZ(40px) translateX(0px); }
69
  37.5% { transform: rotateY(135deg) translateZ(40px) translateX(15px); }
70
  50% { transform: rotateY(180deg) translateZ(40px) translateX(20px); }
71
  62.5% { transform: rotateY(225deg) translateZ(40px) translateX(15px); }
72
  75% { transform: rotateY(270deg) translateZ(40px) translateX(0px); }
73
  87.5% { transform: rotateY(315deg) translateZ(40px) translateX(-15px); }
74
  100% { transform: rotateY(360deg) translateZ(40px) translateX(-20px); }
75
}
76
77
@keyframes pulse {
78
  0% { transform: scale(1); opacity: 0.9; filter: brightness(1.1); }
79
  50% { transform: scale(1.15); opacity: 1; filter: brightness(1.3); }
80
  100% { transform: scale(1); opacity: 0.9; filter: brightness(1.1); }
81
}
82
/* DNAnalyzer - Main Stylesheet
83
* Global styles for all pages
84
*/
85
/* Notification Banner Styling */
86
.notification-banner {
87
  background: linear-gradient(135deg, #FF6F00, #FF9100);
88
  color: var(--white);
89
  padding: 0.75rem 1rem 0.75rem 0.75rem;
90
  text-align: center;
91
  font-size: 1rem;
92
  font-weight: 600;
93
  position: fixed;
94
  top: 0;
95
  left: 0;
96
  width: 100%;
97
  z-index: var(--z-navbar);
98
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
99
  animation: notifPulse 3s infinite;
100
  transition: transform 0.3s ease-in-out;
101
  display: flex;
102
  flex-wrap: wrap;
103
  justify-content: center;
104
  align-items: center;
105
}
106
107
.notification-banner.hide-notification {
108
  transform: translateY(-100%);
109
}
110
111
.notification-banner.closed {
112
  display: none !important;
113
}
114
115
.notification-banner .notification-link {
116
  color: inherit;
117
  text-decoration: none;
118
  font-weight: 700;
119
  background-color: rgba(255, 255, 255, 0.2);
120
  padding: 0.25rem 0.5rem;
121
  border-radius: 4px;
122
  margin: 0 0.5rem;
123
  transition: all 0.3s ease;
124
  white-space: nowrap;
125
}
126
127
.notification-banner .notification-link:hover {
128
  color: #FFD700;
129
  text-shadow: 0 0 5px rgba(255, 215, 0, 0.5);
130
}
131
132
.notification-banner .notification-close {
133
  background: rgba(255, 255, 255, 0.1);
134
  border: none;
135
  color: var(--white);
136
  font-size: 1.25rem;
137
  line-height: 1;
138
  position: absolute;
139
  right: 0.5rem;
140
  top: 50%;
141
  transform: translateY(-50%);
142
  cursor: pointer;
143
  transition: all 0.3s ease;
144
  width: 24px;
145
  height: 24px;
146
  display: flex;
147
  align-items: center;
148
  justify-content: center;
149
  border-radius: 50%;
150
  padding: 0;
151
}
152
153
.notification-banner .notification-close::before {
154
  content: "×";
155
  display: block;
156
  position: relative;
157
  top: -1px;
158
}
159
160
.notification-banner .notification-close:hover {
161
  background: rgba(255, 255, 255, 0.2);
162
  transform: translateY(-50%) rotate(90deg);
163
  color: #FFD700;
164
  text-shadow: 0 0 5px rgba(255, 215, 0, 0.5);
165
}
166
167
:root {
168
  /* Brand colors from logo */
169
  --magenta: #ff0066;
170
  --blue: #00a4ef;
171
  --orange: #f48022;
172
  --white: #ffffff;
173
  --dark-bg: #001427;
174
  
175
  /* Additional UI colors */
176
  --dark-blue: #051e3e;
177
  --light-blue: #2596be;
178
  --light-gray: #f5f5f7;
179
  --medium-gray: #86868b;
180
  --dark-gray: #333333;
181
  
182
  /* Functional colors */
183
  --success: #34c759;
184
  --warning: #ff9500;
185
  --error: #ff3b30;
186
  
187
  /* Typography */
188
  --font-heading: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
189
  --font-body: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
190
  --font-mono: 'IBM Plex Mono', monospace;
191
  
192
  /* Spacing */
193
  --space-xs: 0.25rem;
194
  --space-sm: 0.5rem;
195
  --space-md: 1rem;
196
  --space-lg: 1.5rem;
197
  --space-xl: 2rem;
198
  --space-xxl: 3rem;
199
  
200
  /* Border radius */
201
  --radius-sm: 4px;
202
  --radius-md: 8px;
203
  --radius-lg: 12px;
204
  --radius-xl: 20px;
205
  
206
  /* Shadows */
207
  --shadow-sm: 0 2px 5px rgba(0, 0, 0, 0.1);
208
  --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.15);
209
  --shadow-lg: 0 8px 20px rgba(0, 0, 0, 0.2);
210
  
211
  /* Transitions */
212
  --transition-fast: 0.2s ease;
213
  --transition-normal: 0.3s ease;
214
  --transition-slow: 0.5s ease;
215
  
216
  /* Z-index layers */
217
  --z-tooltip: 100;
218
  --z-navbar: 200;
219
  --z-modal: 300;
220
}
221
222
/* Reset & Base Styles */
223
*, 
224
*::before, 
225
*::after {
226
  box-sizing: border-box;
227
  margin: 0;
228
  padding: 0;
229
}
230
231
html {
232
  font-size: 16px;
233
  scroll-behavior: smooth;
234
}
235
236
body {
237
  font-family: var(--font-body);
238
  background-color: var(--dark-bg);
239
  color: var(--white);
240
  line-height: 1.6;
241
  overflow-x: hidden;
242
  min-height: 100vh;
243
  display: flex;
244
  flex-direction: column;
245
  -webkit-font-smoothing: antialiased;
246
  -moz-osx-font-smoothing: grayscale;
247
}
248
249
h1, h2, h3, h4, h5, h6 {
250
  font-family: var(--font-heading);
251
  line-height: 1.2;
252
  font-weight: 700;
253
  margin-bottom: var(--space-md);
254
}
255
256
h1 {
257
  font-size: 3.5rem;
258
  margin-bottom: var(--space-lg);
259
}
260
261
h2 {
262
  font-size: 2.5rem;
263
  margin-bottom: var(--space-lg);
264
}
265
266
h3 {
267
  font-size: 1.75rem;
268
}
269
270
h4 {
271
  font-size: 1.375rem;
272
}
273
274
p {
275
  margin-bottom: var(--space-md);
276
  color: rgba(255, 255, 255, 0.85);
277
}
278
279
a {
280
  color: var(--blue);
281
  text-decoration: none;
282
  transition: color var(--transition-fast);
283
}
284
285
a:hover {
286
  color: var(--light-blue);
287
}
288
289
img {
290
  max-width: 100%;
291
  height: auto;
292
}
293
294
button {
295
  font-family: var(--font-body);
296
  cursor: pointer;
297
}
298
299
code, pre {
300
  font-family: var(--font-mono);
301
}
302
303
ul, ol {
304
  padding-left: var(--space-lg);
305
  margin-bottom: var(--space-md);
306
}
307
308
/* Container */
309
.container {
310
  width: 100%;
311
  max-width: 1200px;
312
  margin: 0 auto;
313
  padding: 0 var(--space-lg);
314
}
315
316
.container-sm {
317
  max-width: 800px;
318
}
319
320
.container-lg {
321
  max-width: 1400px;
322
}
323
324
/* Navbar */
325
.navbar {
326
  position: fixed;
327
  top: var(--notification-height, 0);
328
  left: 0;
329
  right: 0;
330
  background: var(--dark-bg);
331
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
332
  z-index: var(--z-navbar);
333
  padding: var(--space-md) 0;
334
  transition: all var(--transition-normal), top 0.3s ease-in-out;
335
}
336
337
.navbar.scrolled {
338
  background: var(--dark-blue);
339
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
340
  padding: var(--space-sm) 0;
341
}
342
343
.navbar-container {
344
  display: flex;
345
  align-items: center;
346
  justify-content: space-between;
347
}
348
349
.logo {
350
  display: flex;
351
  align-items: center;
352
}
353
354
.logo img {
355
  height: 36px;
356
  margin-right: var(--space-sm);
357
}
358
359
.logo-text {
360
  font-size: 1.25rem;
361
  font-weight: 700;
362
  color: var(--white);
363
}
364
365
.nav-links {
366
  display: flex;
367
  align-items: center;
368
  list-style: none;
369
  margin: 0;
370
  padding: 0;
371
}
372
373
.nav-links li {
374
  margin: 0 var(--space-md);
375
}
376
377
.nav-links a {
378
  color: var(--white);
379
  font-weight: 500;
380
  position: relative;
381
  padding: var(--space-xs) 0;
382
}
383
384
.nav-links a::after {
385
  content: '';
386
  position: absolute;
387
  width: 0;
388
  height: 2px;
389
  bottom: 0;
390
  left: 0;
391
  background: linear-gradient(90deg, var(--magenta), var(--blue));
392
  transition: width var(--transition-normal);
393
}
394
395
.nav-links a:hover::after,
396
.nav-links a.active::after {
397
  width: 100%;
398
}
399
400
.nav-buttons {
401
  display: flex;
402
  align-items: center;
403
}
404
405
.mobile-toggle {
406
  display: none;
407
  background: none;
408
  border: none;
409
  color: var(--white);
410
  font-size: 1.5rem;
411
}
412
413
/* Buttons */
414
.btn {
415
  display: inline-flex;
416
  align-items: center;
417
  justify-content: center;
418
  padding: 0.75rem 1.5rem;
419
  border-radius: var(--radius-md);
420
  font-weight: 600;
421
  transition: all var(--transition-fast);
422
  border: none;
423
  text-align: center;
424
  cursor: pointer;
425
}
426
427
.btn-primary {
428
  background: linear-gradient(135deg, #FF7B00, #FFB347);
429
  color: var(--white);
430
}
431
432
.btn-primary:hover {
433
  transform: translateY(-2px);
434
  box-shadow: 0 5px 15px rgba(0, 164, 239, 0.4);
435
  color: var(--white);
436
}
437
438
.btn-secondary {
439
  background: rgba(255, 255, 255, 0.1);
440
  color: var(--white);
441
  border: 1px solid rgba(255, 255, 255, 0.2);
442
}
443
444
.btn-secondary:hover {
445
  background: rgba(255, 255, 255, 0.15);
446
  transform: translateY(-2px);
447
  color: var(--white);
448
}
449
450
.btn-sm {
451
  padding: 0.5rem 1rem;
452
  font-size: 0.875rem;
453
}
454
455
.btn-lg {
456
  padding: 1rem 2rem;
457
  font-size: 1.125rem;
458
}
459
460
.btn-icon {
461
  margin-right: var(--space-xs);
462
}
463
464
.btn-github {
465
  background: #24292e;
466
  color: var(--white);
467
}
468
469
.btn-github:hover {
470
  background: #2c3440;
471
  color: var(--white);
472
}
473
474
.btn-discord {
475
  background: #5865F2;
476
  color: var(--white);
477
}
478
479
.btn-discord:hover {
480
  background: #4752c4;
481
  color: var(--white);
482
}
483
484
/* Hero section */
485
.hero {
486
  padding: 160px 0 100px;
487
  position: relative;
488
  overflow: hidden;
489
}
490
491
.hero-content {
492
  display: grid;
493
  grid-template-columns: 1fr 1fr;
494
  gap: var(--space-xxl);
495
  align-items: center;
496
}
497
498
.hero-headings {
499
  position: relative;
500
  z-index: 2;
501
}
502
503
.hero h1 {
504
  margin-bottom: var(--space-md);
505
  letter-spacing: -0.02em;
506
  line-height: 1.1;
507
}
508
509
.hero h1 span {
510
  background: linear-gradient(135deg, var(--magenta), var(--blue));
511
  -webkit-background-clip: text;
512
  background-clip: text;
513
  -webkit-text-fill-color: transparent;
514
}
515
516
.hero-subtitle {
517
  font-size: 1.25rem;
518
  margin-bottom: var(--space-xl);
519
  color: rgba(255, 255, 255, 0.85);
520
  max-width: 500px;
521
}
522
523
.hero-buttons {
524
  display: flex;
525
  gap: var(--space-md);
526
  margin-bottom: var(--space-xl);
527
}
528
529
.hero-animation {
530
  position: relative;
531
  width: 100%;
532
  height: 500px;
533
  display: flex;
534
  align-items: center;
535
  justify-content: center;
536
}
537
538
/* DNA Helix Animation */
539
.dna-helix {
540
  position: relative;
541
  width: 100%;
542
  height: 100%;
543
  transform-style: preserve-3d;
544
  perspective: 1200px;
545
}
546
547
.base-pair {
548
  position: absolute;
549
  width: 100%;
550
  height: 30px;
551
  display: flex;
552
  justify-content: center;
553
  align-items: center;
554
  animation: rotate3D 12s linear infinite;
555
}
556
557
@keyframes rotate3D {
558
  0% { transform: rotateY(0deg); }
559
  100% { transform: rotateY(360deg); }
560
}
561
562
.base {
563
  width: 35px;
564
  height: 35px;
565
  border-radius: 50%;
566
  display: flex;
567
  align-items: center;
568
  justify-content: center;
569
  font-weight: bold;
570
  color: white;
571
  position: absolute;
572
  box-shadow: 0 0 20px rgba(0, 0, 0, 0.3);
573
}
574
575
.left-base {
576
  background: var(--magenta);
577
  left: calc(50% - 120px);
578
  animation: moveLeft 6s ease-in-out infinite;
579
}
580
581
.right-base {
582
  background: var(--blue);
583
  right: calc(50% - 120px);
584
  animation: moveRight 6s ease-in-out infinite;
585
}
586
587
.base-connector {
588
  width: 200px;
589
  height: 3px;
590
  background: linear-gradient(90deg, var(--magenta), var(--blue));
591
  position: absolute;
592
  animation: stretch 6s ease-in-out infinite;
593
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
594
}
595
596
@keyframes moveLeft {
597
  0%, 100% { transform: translateX(-12px); }
598
  50% { transform: translateX(12px); }
599
}
600
601
@keyframes moveRight {
602
  0%, 100% { transform: translateX(12px); }
603
  50% { transform: translateX(-12px); }
604
}
605
606
@keyframes stretch {
607
  0%, 100% { width: 200px; }
608
  50% { width: 220px; }
609
}
610
611
/* Section styling */
612
.section {
613
  padding: var(--space-xxl) 0;
614
  position: relative;
615
}
616
617
.section-title {
618
  text-align: center;
619
  margin-bottom: var(--space-xxl);
620
}
621
622
.section-title h2 {
623
  margin-bottom: var(--space-md);
624
}
625
626
.section-title p {
627
  max-width: 700px;
628
  margin: 0 auto;
629
  font-size: 1.1rem;
630
}
631
632
.section-bg-dark {
633
  background-color: var(--dark-blue);
634
}
635
636
.section-bg-gradient {
637
  background: linear-gradient(135deg, rgba(5, 30, 62, 0.7), rgba(0, 20, 39, 0.7));
638
}
639
640
/* Cards */
641
.card {
642
  background: rgba(255, 255, 255, 0.05);
643
  border-radius: var(--radius-lg);
644
  padding: var(--space-xl);
645
  transition: all var(--transition-normal);
646
  border: 1px solid rgba(255, 255, 255, 0.1);
647
}
648
649
.card:hover {
650
  transform: translateY(-5px);
651
  background: rgba(255, 255, 255, 0.08);
652
  box-shadow: var(--shadow-md);
653
  border-color: rgba(255, 255, 255, 0.15);
654
}
655
656
.card-title {
657
  font-size: 1.3rem;
658
  margin-bottom: var(--space-md);
659
}
660
661
.card-icon {
662
  width: 60px;
663
  height: 60px;
664
  background: linear-gradient(135deg, var(--magenta), var(--blue));
665
  border-radius: var(--radius-md);
666
  display: flex;
667
  align-items: center;
668
  justify-content: center;
669
  font-size: 1.5rem;
670
  color: var(--white);
671
  margin-bottom: var(--space-md);
672
}
673
674
.card-grid {
675
  display: grid;
676
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
677
  gap: var(--space-xl);
678
}
679
680
/* Feature cards */
681
.feature-card {
682
  display: flex;
683
  align-items: flex-start;
684
  gap: var(--space-lg);
685
  padding: var(--space-xl);
686
  background: rgba(255, 255, 255, 0.05);
687
  border-radius: var(--radius-lg);
688
  transition: all var(--transition-normal);
689
  border: 1px solid rgba(255, 255, 255, 0.1);
690
  margin-bottom: var(--space-xl);
691
}
692
693
.feature-card:hover {
694
  transform: translateY(-5px);
695
  background: rgba(255, 255, 255, 0.08);
696
  box-shadow: var(--shadow-md);
697
  border-color: rgba(255, 255, 255, 0.15);
698
}
699
700
.feature-icon {
701
  min-width: 60px;
702
  height: 60px;
703
  border-radius: var(--radius-md);
704
  display: flex;
705
  align-items: center;
706
  justify-content: center;
707
  font-size: 1.5rem;
708
}
709
710
.feature-icon-blue {
711
  background: rgba(0, 164, 239, 0.15);
712
  color: var(--blue);
713
  border: 1px solid rgba(0, 164, 239, 0.3);
714
}
715
716
.feature-icon-magenta {
717
  background: rgba(255, 0, 102, 0.15);
718
  color: var(--magenta);
719
  border: 1px solid rgba(255, 0, 102, 0.3);
720
}
721
722
.feature-icon-orange {
723
  background: rgba(244, 128, 34, 0.15);
724
  color: var(--orange);
725
  border: 1px solid rgba(244, 128, 34, 0.3);
726
}
727
728
.feature-content h3 {
729
  margin-bottom: var(--space-sm);
730
}
731
732
/* Stats */
733
.stats-section {
734
  padding: var(--space-xxl) 0;
735
  text-align: center;
736
  position: relative;
737
  background: linear-gradient(135deg, rgba(5, 30, 62, 0.7), rgba(0, 20, 39, 0.7));
738
  border-top: 1px solid rgba(255, 255, 255, 0.05);
739
  border-bottom: 1px solid rgba(255, 255, 255, 0.05);
740
}
741
742
.stats-grid {
743
  display: grid;
744
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
745
  gap: var(--space-xl);
746
  text-align: center;
747
  max-width: 1000px;
748
  margin: 0 auto;
749
}
750
751
.stat-item {
752
  padding: var(--space-md);
753
}
754
755
.stat-number {
756
  font-size: 3rem;
757
  font-weight: 700;
758
  margin-bottom: var(--space-xs);
759
  background: linear-gradient(135deg, var(--magenta), var(--blue));
760
  -webkit-background-clip: text;
761
  background-clip: text;
762
  -webkit-text-fill-color: transparent;
763
}
764
765
.stat-label {
766
  color: rgba(255, 255, 255, 0.8);
767
  font-size: 1rem;
768
  font-weight: 500;
769
}
770
771
/* Steps */
772
.steps-container {
773
  counter-reset: step;
774
  position: relative;
775
}
776
777
.step-item {
778
  position: relative;
779
  padding-left: 70px;
780
  margin-bottom: var(--space-xl);
781
}
782
783
.step-item::before {
784
  counter-increment: step;
785
  content: counter(step);
786
  position: absolute;
787
  left: 0;
788
  top: 0;
789
  width: 50px;
790
  height: 50px;
791
  background: linear-gradient(135deg, var(--magenta), var(--blue));
792
  border-radius: 50%;
793
  display: flex;
794
  align-items: center;
795
  justify-content: center;
796
  font-weight: 700;
797
  font-size: 1.25rem;
798
  color: var(--white);
799
}
800
801
.step-item:not(:last-child)::after {
802
  content: '';
803
  position: absolute;
804
  left: 25px;
805
  top: 50px;
806
  bottom: -40px;
807
  width: 2px;
808
  background: linear-gradient(to bottom, var(--blue), transparent);
809
}
810
811
.step-content h3 {
812
  margin-bottom: var(--space-sm);
813
}
814
815
/* Footer */
816
.footer {
817
  background: var(--dark-blue);
818
  padding: var(--space-xxl) 0 var(--space-md);
819
  border-top: 1px solid rgba(255, 255, 255, 0.1);
820
}
821
822
.footer-grid {
823
  display: grid;
824
  grid-template-columns: 2fr 1fr 1fr 1fr;
825
  gap: var(--space-xl);
826
}
827
828
.footer-brand {
829
  display: flex;
830
  flex-direction: column;
831
}
832
833
.footer-brand img {
834
  height: 40px;
835
  margin-bottom: var(--space-md);
836
}
837
838
.footer-brand p {
839
  margin-bottom: var(--space-lg);
840
  color: rgba(255, 255, 255, 0.7);
841
}
842
843
.footer-social {
844
  display: flex;
845
  gap: var(--space-md);
846
}
847
848
.social-link {
849
  width: 36px;
850
  height: 36px;
851
  border-radius: 50%;
852
  background: rgba(255, 255, 255, 0.1);
853
  display: flex;
854
  align-items: center;
855
  justify-content: center;
856
  color: var(--white);
857
  transition: all var(--transition-fast);
858
}
859
860
.social-link:hover {
861
  background: rgba(255, 255, 255, 0.2);
862
  transform: translateY(-2px);
863
  color: var(--white);
864
}
865
866
.footer-nav h4 {
867
  margin-bottom: var(--space-lg);
868
  color: var(--white);
869
  font-size: 1.1rem;
870
}
871
872
.footer-nav ul {
873
  list-style: none;
874
  padding: 0;
875
  margin: 0;
876
}
877
878
.footer-nav li {
879
  margin-bottom: var(--space-sm);
880
}
881
882
.footer-nav a {
883
  color: rgba(255, 255, 255, 0.7);
884
  transition: color var(--transition-fast);
885
}
886
887
.footer-nav a:hover {
888
  color: var(--white);
889
}
890
891
.footer-bottom {
892
  margin-top: var(--space-xxl);
893
  padding-top: var(--space-md);
894
  border-top: 1px solid rgba(255, 255, 255, 0.1);
895
  display: flex;
896
  justify-content: space-between;
897
  align-items: center;
898
  flex-wrap: wrap;
899
  gap: var(--space-md);
900
}
901
902
.footer-copyright {
903
  color: rgba(255, 255, 255, 0.6);
904
  font-size: 0.875rem;
905
}
906
907
.footer-links {
908
  display: flex;
909
  gap: var(--space-lg);
910
}
911
912
.footer-links a {
913
  color: rgba(255, 255, 255, 0.6);
914
  font-size: 0.875rem;
915
}
916
917
.footer-links a:hover {
918
  color: var(--white);
919
}
920
921
/* Background effects */
922
.bg-gradient {
923
  position: absolute;
924
  top: 0;
925
  left: 0;
926
  width: 100%;
927
  height: 100%;
928
  overflow: hidden;
929
  z-index: -1;
930
}
931
932
.bg-blob {
933
  position: absolute;
934
  border-radius: 50%;
935
  filter: blur(60px);
936
  opacity: 0.5;
937
}
938
939
.bg-blob-1 {
940
  top: -200px;
941
  right: -100px;
942
  width: 600px;
943
  height: 600px;
944
  background: linear-gradient(135deg, rgba(255, 0, 102, 0.2), rgba(0, 0, 0, 0));
945
  animation: float 20s ease-in-out infinite alternate;
946
}
947
948
.bg-blob-2 {
949
  bottom: -150px;
950
  left: -100px;
951
  width: 500px;
952
  height: 500px;
953
  background: linear-gradient(135deg, rgba(0, 164, 239, 0.2), rgba(0, 0, 0, 0));
954
  animation: float 15s ease-in-out infinite alternate-reverse;
955
}
956
957
@keyframes float {
958
  0% { transform: translate(0, 0) rotate(0deg); }
959
  100% { transform: translate(40px, 40px) rotate(15deg); }
960
}
961
962
/* Utilities */
963
.text-center {
964
  text-align: center;
965
}
966
967
.mb-sm {
968
  margin-bottom: var(--space-sm);
969
}
970
971
.mb-md {
972
  margin-bottom: var(--space-md);
973
}
974
975
.mb-lg {
976
  margin-bottom: var(--space-lg);
977
}
978
979
.mb-xl {
980
  margin-bottom: var(--space-xl);
981
}
982
983
.mt-sm {
984
  margin-top: var(--space-sm);
985
}
986
987
.mt-md {
988
  margin-top: var(--space-md);
989
}
990
991
.mt-lg {
992
  margin-top: var(--space-lg);
993
}
994
995
.mt-xl {
996
  margin-top: var(--space-xl);
997
}
998
999
.gradient-text {
1000
  background: linear-gradient(135deg, var(--magenta), var(--blue));
1001
  -webkit-background-clip: text;
1002
  background-clip: text;
1003
  -webkit-text-fill-color: transparent;
1004
}
1005
1006
/* Responsive styles */
1007
@media screen and (max-width: 1024px) {
1008
  h1 {
1009
    font-size: 3rem;
1010
  }
1011
  
1012
  h2 {
1013
    font-size: 2.25rem;
1014
  }
1015
  
1016
  .hero-content {
1017
    grid-template-columns: 1fr;
1018
    text-align: center;
1019
  }
1020
  
1021
  .hero-subtitle {
1022
    margin-left: auto;
1023
    margin-right: auto;
1024
  }
1025
  
1026
  .hero-buttons {
1027
    justify-content: center;
1028
  }
1029
  
1030
  .hero-animation {
1031
    margin-top: var(--space-xl);
1032
  }
1033
  
1034
  .footer-grid {
1035
    grid-template-columns: 1fr 1fr;
1036
    gap: var(--space-xl) var(--space-xxl);
1037
  }
1038
}
1039
1040
@media screen and (max-width: 768px) {
1041
  h1 {
1042
    font-size: 2.5rem;
1043
  }
1044
  
1045
  h2 {
1046
    font-size: 2rem;
1047
  }
1048
  
1049
  .navbar-container {
1050
    position: relative;
1051
  }
1052
  
1053
  .nav-links {
1054
    position: absolute;
1055
    top: 100%;
1056
    left: 0;
1057
    right: 0;
1058
    flex-direction: column;
1059
    background: var(--dark-bg);
1060
    padding: var(--space-lg);
1061
    transform: translateY(-100%);
1062
    opacity: 0;
1063
    visibility: hidden;
1064
    transition: all var(--transition-normal);
1065
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
1066
  }
1067
  
1068
  .nav-links.active {
1069
    transform: translateY(0);
1070
    opacity: 1;
1071
    visibility: visible;
1072
  }
1073
  
1074
  .nav-links li {
1075
    margin: var(--space-sm) 0;
1076
  }
1077
  
1078
  .mobile-toggle {
1079
    display: block;
1080
  }
1081
  
1082
  .hero-buttons {
1083
    flex-direction: column;
1084
    width: 100%;
1085
    max-width: 300px;
1086
    margin-left: auto;
1087
    margin-right: auto;
1088
  }
1089
  
1090
  .feature-card {
1091
    flex-direction: column;
1092
  }
1093
  
1094
  .footer-grid {
1095
    grid-template-columns: 1fr;
1096
    gap: var(--space-xl);
1097
  }
1098
  
1099
  .footer-bottom {
1100
    flex-direction: column;
1101
    align-items: center;
1102
    text-align: center;
1103
  }
1104
}
1105
1106
@media screen and (max-width: 480px) {
1107
  .container {
1108
    padding: 0 var(--space-md);
1109
  }
1110
  
1111
  h1 {
1112
    font-size: 2rem;
1113
  }
1114
  
1115
  h2 {
1116
    font-size: 1.75rem;
1117
  }
1118
  
1119
  .stats-grid {
1120
    grid-template-columns: 1fr;
1121
  }
1122
}
1123
1124
@media screen and (max-width: 768px) {
1125
  .notification-banner {
1126
    padding: 0.5rem 2rem 0.5rem 0.5rem;
1127
    font-size: 0.9rem;
1128
  }
1129
  
1130
  .notification-banner span {
1131
    display: inline;
1132
  }
1133
  
1134
  .notification-banner .notification-link {
1135
    margin: 0 0.25rem;
1136
  }
1137
}
1138
1139
@media screen and (max-width: 480px) {
1140
  .notification-banner {
1141
    padding: 0.5rem 2rem 0.5rem 0.5rem;
1142
    font-size: 0.8rem;
1143
    line-height: 1.4;
1144
  }
1145
  
1146
  .notification-banner span {
1147
    display: inline;
1148
  }
1149
  
1150
  .notification-banner .notification-link {
1151
    margin: 0.25rem;
1152
    padding: 0.15rem 0.35rem;
1153
  }
1154
}
1155
1156
/* DNAnalyzer Disclaimer CSS Update */
1157
.disclaimer-section {
1158
padding: 1rem 0;
1159
background: transparent !important; /* Override any dark background */
1160
}
1161
1162
.disclaimer-content {
1163
max-width: 90%;
1164
margin: 0 auto;
1165
background-color: rgba(30, 30, 40, 0.4); /* Subtle dark background */
1166
border-radius: 8px;
1167
padding: 1rem;
1168
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
1169
border: 1px solid rgba(255, 255, 255, 0.1);
1170
}
1171
1172
.disclaimer-title {
1173
font-size: 0.85rem;
1174
margin-bottom: 0.75rem;
1175
opacity: 0.75;
1176
color: rgba(255, 255, 255, 0.8);
1177
font-weight: 500;
1178
text-transform: uppercase;
1179
letter-spacing: 0.5px;
1180
}
1181
1182
.disclaimer-text {
1183
font-size: 0.7rem;
1184
 opacity: 0.65;
1185
 line-height: 1.4;
1186
 color: rgba(255, 255, 255, 0.7);
1187
}
1188
1189
/* Futuristic Notification Effects */
1190
@keyframes notifPulse {
1191
  0% { box-shadow: 0 0 5px #FF9100; }
1192
  50% { box-shadow: 0 0 20px #FF9100; }
1193
  100% { box-shadow: 0 0 5px #FF9100; }
1194
}
1195
1196
/* JavaScript will add this class when scrolling down */
1197
.hide-notification {
1198
  transform: translateY(-100%);
1199
}
1200
1201
/* Scroll-based animations */
1202
.scroll-animate {
1203
opacity: 0;
1204
transform: translateY(30px);
1205
transition: opacity 0.8s ease, transform 0.8s ease;
1206
}
1207
1208
.scroll-animate.animate-in {
1209
opacity: 1;
1210
transform: translateY(0);
1211
}
1212
1213
.scroll-animate-delay-1 {
1214
transition-delay: 0.2s;
1215
}
1216
1217
.scroll-animate-delay-2 {
1218
transition-delay: 0.4s;
1219
}
1220
1221
.scroll-animate-delay-3 {
1222
transition-delay: 0.6s;
1223
}
1224
1225
.scroll-animate-right {
1226
opacity: 0;
1227
transform: translateX(50px);
1228
transition: opacity 0.8s ease, transform 0.8s ease;
1229
}
1230
1231
.scroll-animate-right.animate-in {
1232
opacity: 1;
1233
transform: translateX(0);
1234
}
1235
1236
.scroll-animate-left {
1237
opacity: 0;
1238
transform: translateX(-50px);
1239
transition: opacity 0.8s ease, transform 0.8s ease;
1240
}
1241
1242
.scroll-animate-left.animate-in {
1243
opacity: 1;
1244
transform: translateX(0);
1245
}
1246
1247
.scroll-animate-scale {
1248
opacity: 0;
1249
transform: scale(0.8);
1250
transition: opacity 0.8s ease, transform 0.8s ease;
1251
}
1252
1253
.scroll-animate-scale.animate-in {
1254
opacity: 1;
1255
transform: scale(1);
1256
}
1257
1258
/* Interactive particles */
1259
.particles-container {
1260
position: absolute;
1261
top: 0;
1262
left: 0;
1263
width: 100%;
1264
height: 100%;
1265
z-index: 0;
1266
overflow: hidden;
1267
pointer-events: none;
1268
}
1269
1270
.floating-particle {
1271
position: absolute;
1272
background: rgba(255, 255, 255, 0.1);
1273
border-radius: 50%;
1274
pointer-events: none;
1275
transition: transform 0.3s ease;
1276
}