BinKhoaLe1812 commited on
Commit
1a8a8bc
·
verified ·
1 Parent(s): 7881b0f

Upload 6 files

Browse files
Files changed (3) hide show
  1. assets/app.js +7 -0
  2. assets/styles.css +273 -4
  3. index.html +56 -22
assets/app.js CHANGED
@@ -96,6 +96,13 @@ const animateCount = (el, to, duration = 1200) => {
96
  const isLargeNumber = to > 1000;
97
  const easing = isLargeNumber ? easeOutQuart : easeOutCubic;
98
 
 
 
 
 
 
 
 
99
  const step = (now) => {
100
  const p = Math.min(1, (now - start) / duration);
101
  const v = Math.floor(from + (to - from) * easing(p));
 
96
  const isLargeNumber = to > 1000;
97
  const easing = isLargeNumber ? easeOutQuart : easeOutCubic;
98
 
99
+ // Ensure the element has proper positioning
100
+ el.style.position = 'relative';
101
+ el.style.zIndex = '2';
102
+ el.style.width = '100%';
103
+ el.style.textAlign = 'center';
104
+ el.style.display = 'block';
105
+
106
  const step = (now) => {
107
  const p = Math.min(1, (now - start) / duration);
108
  const v = Math.floor(from + (to - from) * easing(p));
assets/styles.css CHANGED
@@ -4,6 +4,196 @@
4
  --shadow-glow: 0 0 20px rgba(99,102,241,0.3), 0 0 40px rgba(99,102,241,0.2);
5
  }
6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  /* Base link styles */
8
  .link {
9
  color: rgb(165 180 252);
@@ -215,6 +405,16 @@ pre.mermaid:hover {
215
  transition: all 0.3s ease;
216
  position: relative;
217
  overflow: hidden;
 
 
 
 
 
 
 
 
 
 
218
  }
219
 
220
  .metric::before {
@@ -234,17 +434,66 @@ pre.mermaid:hover {
234
  }
235
 
236
  .metric:hover {
237
- transform: translateY(-2px);
238
- border-color: rgba(99, 102, 241, 0.3);
 
 
239
  }
240
 
241
  .metric-value {
242
  transition: all 0.3s ease;
 
 
 
 
 
 
 
 
 
243
  }
244
 
245
  .metric:hover .metric-value {
246
- color: rgb(129, 140, 248);
247
- transform: scale(1.05);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
248
  }
249
 
250
  /* Enhanced avatar styling */
@@ -276,6 +525,26 @@ pre.mermaid:hover {
276
  background: rgba(99, 102, 241, 0.05);
277
  }
278
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
279
  /* Enhanced responsive improvements */
280
  @media (max-width: 1024px) {
281
  .container {
 
4
  --shadow-glow: 0 0 20px rgba(99,102,241,0.3), 0 0 40px rgba(99,102,241,0.2);
5
  }
6
 
7
+ /* Fallback styles in case Tailwind doesn't load */
8
+ body {
9
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
10
+ background-color: #0f172a;
11
+ color: #f1f5f9;
12
+ line-height: 1.6;
13
+ margin: 0;
14
+ padding: 0;
15
+ }
16
+
17
+ /* Global text justification */
18
+ p, li, div {
19
+ text-align: justify;
20
+ text-justify: inter-word;
21
+ }
22
+
23
+ /* Override for specific elements that should be left-aligned */
24
+ h1, h2, h3, h4, h5, h6,
25
+ .btn-primary, .btn-secondary, .btn-ghost,
26
+ .tab, .chip, .metric-value, .metric-label {
27
+ text-align: left;
28
+ }
29
+
30
+ /* Add proper margins to main content */
31
+ .container {
32
+ margin-left: auto;
33
+ margin-right: auto;
34
+ padding-left: 2rem;
35
+ padding-right: 2rem;
36
+ }
37
+
38
+ @media (max-width: 768px) {
39
+ .container {
40
+ padding-left: 1rem;
41
+ padding-right: 1rem;
42
+ }
43
+ }
44
+
45
+ h1, h2, h3, h4, h5, h6 {
46
+ font-weight: 700;
47
+ line-height: 1.2;
48
+ margin: 0 0 1rem 0;
49
+ }
50
+
51
+ h1 { font-size: 2.5rem; }
52
+ h2 { font-size: 2rem; }
53
+ h3 { font-size: 1.5rem; }
54
+
55
+ section {
56
+ padding: 4rem 0;
57
+ }
58
+
59
+ .container {
60
+ max-width: 80rem;
61
+ margin: 0 auto;
62
+ padding: 0 1rem;
63
+ }
64
+
65
+ .grid {
66
+ display: grid;
67
+ gap: 1.5rem;
68
+ }
69
+
70
+ .grid.lg\\:grid-cols-2 {
71
+ grid-template-columns: 1fr;
72
+ }
73
+
74
+ @media (min-width: 1024px) {
75
+ .grid.lg\\:grid-cols-2 {
76
+ grid-template-columns: repeat(2, 1fr);
77
+ }
78
+ }
79
+
80
+ .grid.md\\:grid-cols-3 {
81
+ grid-template-columns: 1fr;
82
+ }
83
+
84
+ @media (min-width: 768px) {
85
+ .grid.md\\:grid-cols-3 {
86
+ grid-template-columns: repeat(3, 1fr);
87
+ }
88
+ }
89
+
90
+ .flex {
91
+ display: flex;
92
+ }
93
+
94
+ .items-center {
95
+ align-items: center;
96
+ }
97
+
98
+ .justify-between {
99
+ justify-content: space-between;
100
+ }
101
+
102
+ .gap-3 {
103
+ gap: 0.75rem;
104
+ }
105
+
106
+ .gap-6 {
107
+ gap: 1.5rem;
108
+ }
109
+
110
+ .gap-12 {
111
+ gap: 3rem;
112
+ }
113
+
114
+ .text-4xl {
115
+ font-size: 2.25rem;
116
+ }
117
+
118
+ .text-6xl {
119
+ font-size: 3.75rem;
120
+ }
121
+
122
+ .font-extrabold {
123
+ font-weight: 800;
124
+ }
125
+
126
+ .leading-tight {
127
+ line-height: 1.25;
128
+ }
129
+
130
+ .mt-5 {
131
+ margin-top: 1.25rem;
132
+ }
133
+
134
+ .mt-8 {
135
+ margin-top: 2rem;
136
+ }
137
+
138
+ .mt-6 {
139
+ margin-top: 1.5rem;
140
+ }
141
+
142
+ .text-slate-300 {
143
+ color: #cbd5e1;
144
+ }
145
+
146
+ .text-slate-400 {
147
+ color: #94a3b8;
148
+ }
149
+
150
+ .text-indigo-400 {
151
+ color: #818cf8;
152
+ }
153
+
154
+ .max-w-2xl {
155
+ max-width: 42rem;
156
+ }
157
+
158
+ .text-lg {
159
+ font-size: 1.125rem;
160
+ }
161
+
162
+ .text-sm {
163
+ font-size: 0.875rem;
164
+ }
165
+
166
+ .text-xs {
167
+ font-size: 0.75rem;
168
+ }
169
+
170
+ .hidden {
171
+ display: none;
172
+ }
173
+
174
+ @media (min-width: 640px) {
175
+ .sm\\:inline {
176
+ display: inline;
177
+ }
178
+ }
179
+
180
+ @media (min-width: 768px) {
181
+ .md\\:flex {
182
+ display: flex;
183
+ }
184
+ }
185
+
186
+ @media (min-width: 1024px) {
187
+ .lg\\:py-24 {
188
+ padding-top: 6rem;
189
+ padding-bottom: 6rem;
190
+ }
191
+
192
+ .lg\\:text-6xl {
193
+ font-size: 3.75rem;
194
+ }
195
+ }
196
+
197
  /* Base link styles */
198
  .link {
199
  color: rgb(165 180 252);
 
405
  transition: all 0.3s ease;
406
  position: relative;
407
  overflow: hidden;
408
+ background: rgba(15, 23, 42, 0.6);
409
+ border: 1px solid rgba(255, 255, 255, 0.1);
410
+ border-radius: 1rem;
411
+ padding: 1.5rem;
412
+ text-align: center;
413
+ min-height: 120px;
414
+ display: flex;
415
+ flex-direction: column;
416
+ justify-content: center;
417
+ align-items: center;
418
  }
419
 
420
  .metric::before {
 
434
  }
435
 
436
  .metric:hover {
437
+ transform: translateY(-4px);
438
+ border-color: rgba(99, 102, 241, 0.4);
439
+ background: rgba(15, 23, 42, 0.8);
440
+ box-shadow: 0 10px 30px rgba(99, 102, 241, 0.2);
441
  }
442
 
443
  .metric-value {
444
  transition: all 0.3s ease;
445
+ font-size: 2.5rem;
446
+ font-weight: 800;
447
+ color: rgb(129, 140, 248);
448
+ margin: 0;
449
+ text-align: center;
450
+ width: 100%;
451
+ display: block;
452
+ position: relative;
453
+ z-index: 2;
454
  }
455
 
456
  .metric:hover .metric-value {
457
+ color: rgb(99, 102, 241);
458
+ transform: scale(1.1);
459
+ text-shadow: 0 0 20px rgba(99, 102, 241, 0.5);
460
+ }
461
+
462
+ .metric-label {
463
+ transition: all 0.3s ease;
464
+ color: rgb(148, 163, 184);
465
+ font-size: 0.875rem;
466
+ font-weight: 500;
467
+ margin-top: 0.5rem;
468
+ text-align: center;
469
+ width: 100%;
470
+ position: relative;
471
+ z-index: 2;
472
+ }
473
+
474
+ .metric:hover .metric-label {
475
+ color: rgb(203, 213, 225);
476
+ transform: translateY(-2px);
477
+ }
478
+
479
+ /* Add a subtle glow effect on hover */
480
+ .metric::after {
481
+ content: '';
482
+ position: absolute;
483
+ top: 50%;
484
+ left: 50%;
485
+ width: 0;
486
+ height: 0;
487
+ background: radial-gradient(circle, rgba(99, 102, 241, 0.1) 0%, transparent 70%);
488
+ border-radius: 50%;
489
+ transform: translate(-50%, -50%);
490
+ transition: all 0.3s ease;
491
+ z-index: 1;
492
+ }
493
+
494
+ .metric:hover::after {
495
+ width: 200px;
496
+ height: 200px;
497
  }
498
 
499
  /* Enhanced avatar styling */
 
525
  background: rgba(99, 102, 241, 0.05);
526
  }
527
 
528
+ /* Enhanced text justification and spacing */
529
+ .section p, .section li, .section div:not(.btn-primary):not(.btn-secondary):not(.btn-ghost):not(.tab):not(.chip):not(.metric-value):not(.metric-label) {
530
+ text-align: justify;
531
+ text-justify: inter-word;
532
+ hyphens: auto;
533
+ }
534
+
535
+ /* Ensure proper margins for all sections */
536
+ .section {
537
+ margin-left: 2rem;
538
+ margin-right: 2rem;
539
+ }
540
+
541
+ @media (max-width: 768px) {
542
+ .section {
543
+ margin-left: 1rem;
544
+ margin-right: 1rem;
545
+ }
546
+ }
547
+
548
  /* Enhanced responsive improvements */
549
  @media (max-width: 1024px) {
550
  .container {
index.html CHANGED
@@ -9,19 +9,28 @@
9
  <!-- Tailwind (CDN) -->
10
  <script src="https://cdn.tailwindcss.com"></script>
11
  <script>
12
- tailwind.config = {
13
- darkMode: 'class',
14
- theme: {
15
- extend: {
16
- fontFamily: { inter: ['Inter', 'ui-sans-serif', 'system-ui'] },
17
- boxShadow: {
18
- glow: '0 0 20px rgba(99,102,241,0.3), 0 0 40px rgba(99,102,241,0.2)'
19
- },
20
- backgroundImage: {
21
- 'grid': 'linear-gradient(to right, rgba(255,255,255,0.06) 1px, transparent 1px), linear-gradient(to bottom, rgba(255,255,255,0.06) 1px, transparent 1px)'
 
 
 
 
 
 
 
22
  }
23
  }
24
- }
 
 
25
  }
26
  </script>
27
  <!-- AOS (Animate On Scroll) -->
@@ -31,8 +40,21 @@
31
  <script src="https://unpkg.com/lucide@latest"></script>
32
  <!-- Mermaid -->
33
  <script type="module">
34
- import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs';
35
- mermaid.initialize({ startOnLoad: true, theme: 'dark', securityLevel: 'loose' });
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  </script>
37
  <link rel="preconnect" href="https://fonts.googleapis.com">
38
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
@@ -358,13 +380,6 @@
358
  <h2>Team</h2>
359
  <p>Swinburne COS30018 — Liam · Henry · Hai · Dylan · Vinh</p>
360
  </div>
361
- <div class="grid md:grid-cols-5 gap-4">
362
- <div class="avatar">Liam</div>
363
- <div class="avatar">Henry</div>
364
- <div class="avatar">Hai</div>
365
- <div class="avatar">Dylan</div>
366
- <div class="avatar">Vinh</div>
367
- </div>
368
  </div>
369
  </section>
370
 
@@ -383,8 +398,27 @@
383
  <script src="https://unpkg.com/vanilla-tilt@1.8.1/dist/vanilla-tilt.min.js"></script>
384
  <script src="assets/app.js"></script>
385
  <script>
386
- AOS.init({ duration: 700, once: true });
387
- lucide.createIcons();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
388
  </script>
389
  </body>
390
  </html>
 
9
  <!-- Tailwind (CDN) -->
10
  <script src="https://cdn.tailwindcss.com"></script>
11
  <script>
12
+ // Ensure Tailwind is loaded before configuring
13
+ if (typeof tailwind !== 'undefined') {
14
+ tailwind.config = {
15
+ darkMode: 'class',
16
+ theme: {
17
+ extend: {
18
+ fontFamily: { inter: ['Inter', 'ui-sans-serif', 'system-ui'] },
19
+ boxShadow: {
20
+ glow: '0 0 20px rgba(99,102,241,0.3), 0 0 40px rgba(99,102,241,0.2)'
21
+ },
22
+ backgroundImage: {
23
+ 'grid': 'linear-gradient(to right, rgba(255,255,255,0.06) 1px, transparent 1px), linear-gradient(to bottom, rgba(255,255,255,0.06) 1px, transparent 1px)'
24
+ },
25
+ spacing: {
26
+ '18': '4.5rem',
27
+ '88': '22rem'
28
+ }
29
  }
30
  }
31
+ };
32
+ } else {
33
+ console.warn('Tailwind CSS not loaded');
34
  }
35
  </script>
36
  <!-- AOS (Animate On Scroll) -->
 
40
  <script src="https://unpkg.com/lucide@latest"></script>
41
  <!-- Mermaid -->
42
  <script type="module">
43
+ try {
44
+ import('https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs').then(mermaid => {
45
+ mermaid.default.initialize({
46
+ startOnLoad: true,
47
+ theme: 'dark',
48
+ securityLevel: 'loose',
49
+ fontFamily: 'Inter, sans-serif'
50
+ });
51
+ console.log('Mermaid initialized successfully');
52
+ }).catch(error => {
53
+ console.warn('Mermaid failed to load:', error);
54
+ });
55
+ } catch (error) {
56
+ console.warn('Mermaid import failed:', error);
57
+ }
58
  </script>
59
  <link rel="preconnect" href="https://fonts.googleapis.com">
60
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
 
380
  <h2>Team</h2>
381
  <p>Swinburne COS30018 — Liam · Henry · Hai · Dylan · Vinh</p>
382
  </div>
 
 
 
 
 
 
 
383
  </div>
384
  </section>
385
 
 
398
  <script src="https://unpkg.com/vanilla-tilt@1.8.1/dist/vanilla-tilt.min.js"></script>
399
  <script src="assets/app.js"></script>
400
  <script>
401
+ // Wait for all resources to load before initializing
402
+ window.addEventListener('load', () => {
403
+ // Initialize AOS if available
404
+ if (typeof AOS !== 'undefined') {
405
+ AOS.init({
406
+ duration: 700,
407
+ once: true,
408
+ offset: 100,
409
+ easing: 'ease-in-out'
410
+ });
411
+ } else {
412
+ console.warn('AOS library not loaded');
413
+ }
414
+
415
+ // Initialize Lucide icons if available
416
+ if (typeof lucide !== 'undefined') {
417
+ lucide.createIcons();
418
+ } else {
419
+ console.warn('Lucide library not loaded');
420
+ }
421
+ });
422
  </script>
423
  </body>
424
  </html>