@prosophia/personal-portfolio 0.0.4 → 0.0.5

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.
package/dist/index.css DELETED
@@ -1,795 +0,0 @@
1
- /* src/components/Divider.module.css */
2
- .divider {
3
- border: none;
4
- border-top: 1px solid var(--border);
5
- margin: 4rem 0;
6
- }
7
- @media (min-width: 768px) {
8
- .divider {
9
- margin: 6rem 0;
10
- }
11
- }
12
-
13
- /* src/components/Experience.module.css */
14
- .section {
15
- scroll-margin-top: 7rem;
16
- }
17
- .header {
18
- display: flex;
19
- flex-direction: column;
20
- gap: 1rem;
21
- margin-bottom: 2.5rem;
22
- }
23
- @media (min-width: 768px) {
24
- .header {
25
- flex-direction: row;
26
- align-items: center;
27
- justify-content: space-between;
28
- }
29
- }
30
- .title {
31
- font-size: 1.875rem;
32
- font-weight: 700;
33
- color: var(--text-primary);
34
- letter-spacing: -0.025em;
35
- }
36
- .downloadButton {
37
- display: flex;
38
- align-items: center;
39
- justify-content: center;
40
- gap: 0.5rem;
41
- padding: 0.625rem 1.5rem;
42
- background-color: var(--text-primary);
43
- color: var(--background);
44
- border-radius: var(--border-radius-lg);
45
- font-weight: 700;
46
- font-size: 0.875rem;
47
- width: 100%;
48
- transition: background-color var(--timing-quick) var(--ease-out-expo);
49
- }
50
- @media (min-width: 768px) {
51
- .downloadButton {
52
- width: auto;
53
- }
54
- }
55
- .downloadButton:hover {
56
- opacity: 0.9;
57
- }
58
- .timeline {
59
- position: relative;
60
- border-left: 1px solid var(--border-highlight);
61
- margin-left: 0.75rem;
62
- }
63
- .timelineItem {
64
- position: relative;
65
- padding-left: 2.5rem;
66
- padding-bottom: 2.5rem;
67
- }
68
- .timelineItem:last-child {
69
- padding-bottom: 0;
70
- }
71
- .timelineDot {
72
- position: absolute;
73
- left: -5px;
74
- top: 0.5rem;
75
- width: 10px;
76
- height: 10px;
77
- border-radius: 50%;
78
- background-color: var(--text-muted);
79
- border: 4px solid var(--background);
80
- }
81
- .timelineDotCurrent {
82
- background-color: var(--primary);
83
- }
84
- .timelineHeader {
85
- display: flex;
86
- flex-direction: column;
87
- gap: 0.25rem;
88
- margin-bottom: 0.25rem;
89
- }
90
- @media (min-width: 640px) {
91
- .timelineHeader {
92
- flex-direction: row;
93
- align-items: baseline;
94
- justify-content: space-between;
95
- }
96
- }
97
- .timelineTitle {
98
- font-size: 1.125rem;
99
- font-weight: 700;
100
- color: var(--text-primary);
101
- }
102
- .timelinePeriod {
103
- font-size: 0.75rem;
104
- font-family: monospace;
105
- color: var(--text-muted);
106
- }
107
- .timelineOrg {
108
- color: var(--primary);
109
- font-size: 0.875rem;
110
- font-weight: 500;
111
- margin-bottom: 0.5rem;
112
- }
113
- .timelineDescription {
114
- color: var(--text-secondary);
115
- font-size: 0.875rem;
116
- line-height: 1.625;
117
- max-width: 42rem;
118
- }
119
-
120
- /* src/components/Footer.module.css */
121
- .footer {
122
- padding: 0 0 3rem;
123
- display: flex;
124
- flex-direction: column;
125
- gap: 1rem;
126
- align-items: center;
127
- font-size: 0.75rem;
128
- color: var(--text-muted);
129
- }
130
- @media (min-width: 768px) {
131
- .footer {
132
- flex-direction: row;
133
- justify-content: space-between;
134
- }
135
- }
136
- .copyright {
137
- text-align: center;
138
- }
139
- @media (min-width: 768px) {
140
- .copyright {
141
- text-align: left;
142
- }
143
- }
144
- .updated {
145
- text-align: center;
146
- }
147
- @media (min-width: 768px) {
148
- .updated {
149
- text-align: right;
150
- }
151
- }
152
-
153
- /* src/components/Header.module.css */
154
- .header {
155
- position: sticky;
156
- top: 0;
157
- z-index: 50;
158
- width: 100%;
159
- background-color: rgba(var(--surface-rgb, 22, 27, 38), 0.9);
160
- backdrop-filter: blur(12px);
161
- -webkit-backdrop-filter: blur(12px);
162
- border-bottom: 1px solid var(--border);
163
- transition: background-color var(--timing-standard) var(--ease-out-expo), border-color var(--timing-standard) var(--ease-out-expo);
164
- }
165
- [data-theme=light] .header {
166
- background-color: rgba(255, 255, 255, 0.9);
167
- }
168
- [data-theme=dark] .header {
169
- background-color: rgba(26, 22, 37, 0.9);
170
- }
171
- .container {
172
- max-width: 1152px;
173
- margin: 0 auto;
174
- padding: 0 1.5rem;
175
- height: 5rem;
176
- display: flex;
177
- align-items: center;
178
- justify-content: space-between;
179
- }
180
- .logo {
181
- display: flex;
182
- flex-direction: column;
183
- }
184
- .logoName {
185
- color: var(--text-primary);
186
- font-weight: 700;
187
- font-size: 1.125rem;
188
- line-height: 1.25;
189
- transition: color var(--timing-quick) var(--ease-out-expo);
190
- }
191
- .logo:hover .logoName {
192
- color: var(--primary);
193
- }
194
- .logoTitle {
195
- color: var(--text-muted);
196
- font-size: 0.75rem;
197
- font-weight: 400;
198
- }
199
- .nav {
200
- display: none;
201
- align-items: center;
202
- gap: 2rem;
203
- }
204
- @media (min-width: 768px) {
205
- .nav {
206
- display: flex;
207
- }
208
- }
209
- .navLink {
210
- font-size: 0.875rem;
211
- font-weight: 500;
212
- color: var(--text-secondary);
213
- position: relative;
214
- transition: color var(--timing-quick) var(--ease-out-expo);
215
- }
216
- .navLink:hover {
217
- color: var(--text-primary);
218
- }
219
- .navLinkUnderline {
220
- position: absolute;
221
- bottom: -4px;
222
- left: 0;
223
- width: 0;
224
- height: 2px;
225
- background-color: var(--primary);
226
- transition: width var(--timing-standard) var(--ease-out-expo);
227
- }
228
- .navLink:hover .navLinkUnderline {
229
- width: 100%;
230
- }
231
- .actions {
232
- display: flex;
233
- align-items: center;
234
- gap: 1.25rem;
235
- }
236
- .socialLinks {
237
- display: none;
238
- align-items: center;
239
- gap: 0.75rem;
240
- padding-right: 1.25rem;
241
- border-right: 1px solid var(--border-highlight);
242
- }
243
- @media (min-width: 640px) {
244
- .socialLinks {
245
- display: flex;
246
- }
247
- }
248
- .socialLink {
249
- color: var(--text-muted);
250
- transition: color var(--timing-quick) var(--ease-out-expo);
251
- display: flex;
252
- align-items: center;
253
- justify-content: center;
254
- }
255
- .socialLink:hover {
256
- color: var(--text-primary);
257
- }
258
- .socialLink svg {
259
- width: 1.25rem;
260
- height: 1.25rem;
261
- }
262
- .themeToggle {
263
- display: flex;
264
- align-items: center;
265
- justify-content: center;
266
- width: 2.5rem;
267
- height: 2.5rem;
268
- border-radius: var(--border-radius-lg);
269
- color: var(--text-muted);
270
- transition: color var(--timing-quick) var(--ease-out-expo), background-color var(--timing-quick) var(--ease-out-expo);
271
- }
272
- .themeToggle:hover {
273
- color: var(--text-primary);
274
- background-color: var(--surface-highlight);
275
- }
276
- .contactButton {
277
- display: flex;
278
- align-items: center;
279
- gap: 0.5rem;
280
- padding: 0.5rem 1.25rem;
281
- background-color: var(--primary);
282
- color: white;
283
- font-size: 0.875rem;
284
- font-weight: 700;
285
- border-radius: var(--border-radius-lg);
286
- letter-spacing: 0.025em;
287
- box-shadow: 0 10px 15px -3px var(--shadow);
288
- transition: background-color var(--timing-quick) var(--ease-out-expo), transform var(--timing-quick) var(--ease-out-expo);
289
- }
290
- .contactButton:hover {
291
- background-color: var(--primary-hover);
292
- }
293
- .contactButton:active {
294
- transform: scale(0.95);
295
- }
296
- .contactButtonIcon {
297
- font-size: 1.125rem;
298
- }
299
- .contactButtonText {
300
- display: none;
301
- }
302
- @media (min-width: 640px) {
303
- .contactButtonText {
304
- display: inline;
305
- }
306
- }
307
- .mobileMenuButton {
308
- display: flex;
309
- align-items: center;
310
- justify-content: center;
311
- width: 2.5rem;
312
- height: 2.5rem;
313
- color: var(--text-secondary);
314
- border-radius: var(--border-radius-lg);
315
- transition: color var(--timing-quick) var(--ease-out-expo), background-color var(--timing-quick) var(--ease-out-expo);
316
- }
317
- .mobileMenuButton:hover {
318
- color: var(--text-primary);
319
- background-color: var(--surface-highlight);
320
- }
321
- @media (min-width: 768px) {
322
- .mobileMenuButton {
323
- display: none;
324
- }
325
- }
326
- .mobileNav {
327
- position: fixed;
328
- top: 5rem;
329
- left: 0;
330
- right: 0;
331
- background-color: var(--surface);
332
- border-bottom: 1px solid var(--border);
333
- padding: 1rem 1.5rem;
334
- display: flex;
335
- flex-direction: column;
336
- gap: 0.5rem;
337
- z-index: 40;
338
- }
339
- @media (min-width: 768px) {
340
- .mobileNav {
341
- display: none;
342
- }
343
- }
344
- .mobileNavLink {
345
- display: block;
346
- padding: 0.75rem 1rem;
347
- font-size: 0.875rem;
348
- font-weight: 500;
349
- color: var(--text-secondary);
350
- border-radius: var(--border-radius-lg);
351
- transition: color var(--timing-quick) var(--ease-out-expo), background-color var(--timing-quick) var(--ease-out-expo);
352
- }
353
- .mobileNavLink:hover {
354
- color: var(--text-primary);
355
- background-color: var(--surface-highlight);
356
- }
357
-
358
- /* src/components/Hero.module.css */
359
- .hero {
360
- display: flex;
361
- flex-direction: column;
362
- gap: 3rem;
363
- scroll-margin-top: 7rem;
364
- }
365
- .content {
366
- display: flex;
367
- flex-direction: column;
368
- gap: 2.5rem;
369
- }
370
- @media (min-width: 768px) {
371
- .content {
372
- flex-direction: row;
373
- gap: 2.5rem;
374
- }
375
- }
376
- @media (min-width: 1024px) {
377
- .content {
378
- gap: 4rem;
379
- }
380
- }
381
- .imageWrapper {
382
- flex-shrink: 0;
383
- width: 100%;
384
- display: flex;
385
- align-items: center;
386
- gap: 1.5rem;
387
- }
388
- @media (min-width: 768px) {
389
- .imageWrapper {
390
- width: auto;
391
- flex-direction: column;
392
- align-items: flex-start;
393
- }
394
- }
395
- .profileImage {
396
- width: 8rem;
397
- height: 8rem;
398
- border-radius: var(--border-radius-2xl);
399
- background-size: cover;
400
- background-position: center;
401
- background-repeat: no-repeat;
402
- box-shadow: 0 25px 50px -12px var(--shadow);
403
- border: 4px solid var(--border-highlight);
404
- }
405
- @media (min-width: 768px) {
406
- .profileImage {
407
- width: 14rem;
408
- height: 14rem;
409
- }
410
- }
411
- .mobileInfo {
412
- display: block;
413
- text-align: left;
414
- }
415
- @media (min-width: 768px) {
416
- .mobileInfo {
417
- display: none;
418
- }
419
- }
420
- .mobileInfoName {
421
- color: var(--text-primary);
422
- font-size: 1.5rem;
423
- font-weight: 700;
424
- line-height: 1.25;
425
- }
426
- .mobileInfoTitle {
427
- color: var(--text-muted);
428
- font-weight: 500;
429
- margin-top: 0.25rem;
430
- }
431
- .textContent {
432
- flex: 1;
433
- display: flex;
434
- flex-direction: column;
435
- gap: 2rem;
436
- }
437
- .badge {
438
- display: inline-flex;
439
- align-items: center;
440
- border-radius: var(--border-radius-full);
441
- background-color: var(--tag-bg);
442
- padding: 0.25rem 0.75rem;
443
- font-size: 0.75rem;
444
- font-weight: 500;
445
- color: var(--primary);
446
- width: fit-content;
447
- border: 1px solid var(--border-highlight);
448
- margin-bottom: 1.5rem;
449
- }
450
- .headline {
451
- font-size: 2.25rem;
452
- font-weight: 700;
453
- color: var(--text-primary);
454
- line-height: 1.1;
455
- letter-spacing: -0.025em;
456
- }
457
- @media (min-width: 768px) {
458
- .headline {
459
- font-size: 3rem;
460
- }
461
- }
462
- @media (min-width: 1024px) {
463
- .headline {
464
- font-size: 3.75rem;
465
- }
466
- }
467
- .highlight {
468
- color: var(--primary);
469
- }
470
- .description {
471
- max-width: 48rem;
472
- color: var(--text-secondary);
473
- font-size: 1.125rem;
474
- line-height: 1.75;
475
- }
476
- .description p {
477
- margin-bottom: 1rem;
478
- }
479
- .description p:last-child {
480
- margin-bottom: 0;
481
- }
482
- .description strong {
483
- color: var(--text-primary);
484
- font-weight: 600;
485
- }
486
- .underline {
487
- color: var(--text-primary);
488
- text-decoration: underline;
489
- text-decoration-color: var(--primary);
490
- text-underline-offset: 4px;
491
- }
492
- .links {
493
- display: flex;
494
- flex-wrap: wrap;
495
- gap: 1rem;
496
- }
497
- .link {
498
- display: inline-flex;
499
- align-items: center;
500
- gap: 0.5rem;
501
- font-size: 0.875rem;
502
- font-weight: 500;
503
- color: var(--text-primary);
504
- transition: color var(--timing-quick) var(--ease-out-expo);
505
- }
506
- .link:hover {
507
- color: var(--primary);
508
- }
509
- .linkIcon {
510
- font-size: 1.25rem;
511
- }
512
- .updates {
513
- border-radius: var(--border-radius-xl);
514
- padding: 1.5rem;
515
- }
516
- @media (min-width: 768px) {
517
- .updates {
518
- padding: 2rem;
519
- }
520
- }
521
- .updatesHeader {
522
- display: flex;
523
- align-items: center;
524
- gap: 0.5rem;
525
- font-size: 1.125rem;
526
- font-weight: 700;
527
- color: var(--text-primary);
528
- margin-bottom: 1.5rem;
529
- }
530
- .updatesIcon {
531
- color: var(--primary);
532
- }
533
- .updatesList {
534
- display: flex;
535
- flex-direction: column;
536
- gap: 1.5rem;
537
- }
538
- .updateItem {
539
- display: flex;
540
- gap: 1rem;
541
- align-items: flex-start;
542
- }
543
- .updateDate {
544
- margin-top: 0.25rem;
545
- font-size: 0.75rem;
546
- font-weight: 500;
547
- color: var(--text-muted);
548
- text-transform: uppercase;
549
- letter-spacing: 0.05em;
550
- flex-shrink: 0;
551
- width: 6rem;
552
- }
553
- .updateContent h4 {
554
- color: var(--text-primary);
555
- font-weight: 500;
556
- }
557
- .updateContent p {
558
- color: var(--text-secondary);
559
- font-size: 0.875rem;
560
- margin-top: 0.25rem;
561
- }
562
-
563
- /* src/components/Projects.module.css */
564
- .section {
565
- scroll-margin-top: 7rem;
566
- }
567
- .title {
568
- font-size: 1.875rem;
569
- font-weight: 700;
570
- color: var(--text-primary);
571
- letter-spacing: -0.025em;
572
- margin-bottom: 2.5rem;
573
- }
574
- .grid {
575
- display: grid;
576
- grid-template-columns: 1fr;
577
- gap: 1.5rem;
578
- }
579
- @media (min-width: 768px) {
580
- .grid {
581
- grid-template-columns: repeat(2, 1fr);
582
- }
583
- }
584
- .card {
585
- display: flex;
586
- flex-direction: column;
587
- background-color: var(--surface);
588
- border: 1px solid var(--border);
589
- border-radius: var(--border-radius-xl);
590
- overflow: hidden;
591
- transition: border-color var(--timing-standard) var(--ease-out-expo), transform var(--timing-standard) var(--ease-out-expo);
592
- text-decoration: none;
593
- }
594
- .card:hover {
595
- border-color: var(--border-highlight);
596
- transform: translateY(-4px);
597
- }
598
- .cardImage {
599
- aspect-ratio: 16 / 9;
600
- background-size: cover;
601
- background-position: center;
602
- position: relative;
603
- }
604
- .cardImageOverlay {
605
- position: absolute;
606
- inset: 0;
607
- background:
608
- linear-gradient(
609
- to top,
610
- var(--surface),
611
- transparent);
612
- opacity: 0.8;
613
- }
614
- .cardContent {
615
- padding: 1.5rem;
616
- display: flex;
617
- flex-direction: column;
618
- flex: 1;
619
- }
620
- .cardHeader {
621
- display: flex;
622
- justify-content: space-between;
623
- align-items: flex-start;
624
- margin-bottom: 0.5rem;
625
- }
626
- .cardTitle {
627
- font-size: 1.125rem;
628
- font-weight: 700;
629
- color: var(--text-primary);
630
- transition: color var(--timing-quick) var(--ease-out-expo);
631
- }
632
- .card:hover .cardTitle {
633
- color: var(--primary);
634
- }
635
- .cardLink {
636
- color: var(--text-muted);
637
- transition: color var(--timing-quick) var(--ease-out-expo);
638
- }
639
- .cardLink:hover {
640
- color: var(--text-primary);
641
- }
642
- .cardDescription {
643
- color: var(--text-secondary);
644
- font-size: 0.875rem;
645
- margin-bottom: 1rem;
646
- flex: 1;
647
- line-height: 1.6;
648
- }
649
- .cardTags {
650
- display: flex;
651
- flex-wrap: wrap;
652
- gap: 0.5rem;
653
- }
654
- .tag {
655
- padding: 0.25rem 0.5rem;
656
- font-size: 0.625rem;
657
- text-transform: uppercase;
658
- font-weight: 700;
659
- letter-spacing: 0.05em;
660
- border-radius: var(--border-radius);
661
- background-color: var(--tag-bg);
662
- color: var(--primary);
663
- }
664
-
665
- /* src/components/Publications.module.css */
666
- .section {
667
- scroll-margin-top: 7rem;
668
- }
669
- .header {
670
- display: flex;
671
- align-items: center;
672
- justify-content: space-between;
673
- margin-bottom: 2.5rem;
674
- }
675
- .title {
676
- font-size: 1.875rem;
677
- font-weight: 700;
678
- color: var(--text-primary);
679
- letter-spacing: -0.025em;
680
- }
681
- .scholarLink {
682
- font-size: 0.875rem;
683
- color: var(--primary);
684
- font-weight: 500;
685
- transition: opacity var(--timing-quick) var(--ease-out-expo);
686
- }
687
- .scholarLink:hover {
688
- opacity: 0.8;
689
- }
690
- .list {
691
- display: flex;
692
- flex-direction: column;
693
- gap: 1.5rem;
694
- }
695
- .card {
696
- position: relative;
697
- background-color: var(--surface);
698
- border: 1px solid var(--border);
699
- border-radius: var(--border-radius-xl);
700
- padding: 1.5rem;
701
- transition: border-color var(--timing-standard) var(--ease-out-expo), box-shadow var(--timing-standard) var(--ease-out-expo);
702
- }
703
- .card:hover {
704
- border-color: var(--border-highlight);
705
- box-shadow: 0 10px 15px -3px var(--shadow);
706
- }
707
- .cardContent {
708
- display: flex;
709
- flex-direction: column;
710
- gap: 1.5rem;
711
- }
712
- @media (min-width: 768px) {
713
- .cardContent {
714
- flex-direction: row;
715
- align-items: flex-start;
716
- justify-content: space-between;
717
- }
718
- }
719
- .cardInfo {
720
- flex: 1;
721
- display: flex;
722
- flex-direction: column;
723
- gap: 0.75rem;
724
- }
725
- .cardTitle {
726
- font-size: 1.25rem;
727
- font-weight: 700;
728
- color: var(--text-primary);
729
- transition: color var(--timing-quick) var(--ease-out-expo);
730
- }
731
- .card:hover .cardTitle {
732
- color: var(--primary);
733
- }
734
- .cardAuthors {
735
- color: var(--text-secondary);
736
- font-size: 0.875rem;
737
- }
738
- .cardAuthorHighlight {
739
- color: var(--text-primary);
740
- font-weight: 500;
741
- border-bottom: 1px solid var(--primary);
742
- }
743
- .cardMeta {
744
- display: flex;
745
- align-items: center;
746
- gap: 0.75rem;
747
- font-size: 0.75rem;
748
- font-weight: 500;
749
- color: var(--text-muted);
750
- }
751
- .cardVenue {
752
- padding: 0.25rem 0.5rem;
753
- border-radius: var(--border-radius);
754
- background-color: var(--surface-highlight);
755
- color: var(--text-secondary);
756
- }
757
- .cardHighlight {
758
- display: flex;
759
- align-items: center;
760
- gap: 0.25rem;
761
- color: var(--green-accent);
762
- }
763
- .cardHighlightIcon {
764
- font-size: 0.875rem;
765
- }
766
- .cardActions {
767
- display: flex;
768
- flex-direction: row;
769
- gap: 0.5rem;
770
- flex-shrink: 0;
771
- }
772
- @media (min-width: 768px) {
773
- .cardActions {
774
- flex-direction: column;
775
- }
776
- }
777
- .actionButton {
778
- display: flex;
779
- align-items: center;
780
- gap: 0.5rem;
781
- padding: 0.375rem 0.75rem;
782
- border-radius: var(--border-radius);
783
- background-color: var(--surface-highlight);
784
- border: 1px solid var(--border-highlight);
785
- font-size: 0.75rem;
786
- font-weight: 500;
787
- color: var(--text-primary);
788
- transition: border-color var(--timing-quick) var(--ease-out-expo);
789
- }
790
- .actionButton:hover {
791
- border-color: var(--text-muted);
792
- }
793
- .actionIcon {
794
- font-size: 1rem;
795
- }