Jerry20062016 commited on
Commit
b486fbd
·
1 Parent(s): c61c581

feat: US-005 - Set up Tailwind CSS and design tokens from Vercel/warm gold palette

Browse files

- Install tailwindcss and @tailwindcss/vite plugin
- Configure Tailwind v4 with @theme directive in style.css
- Add custom color tokens: gold, gold-deep, gold-light, gold-pale
- Add warm palette: page-bg, shell-bg, panel-bg, text-main, text-soft, text-muted
- Add card colors cycling through rose, amber, mint, sky, violet, peach
- Set Inter as primary font family
- Vite build verified: Tailwind CSS generates 6.15kB output

frontend/package-lock.json CHANGED
@@ -14,9 +14,11 @@
14
  "vue-router": "^4.6.4"
15
  },
16
  "devDependencies": {
 
17
  "@types/node": "^24.12.2",
18
  "@vitejs/plugin-vue": "^6.0.5",
19
  "@vue/tsconfig": "^0.9.1",
 
20
  "typescript": "~6.0.2",
21
  "vite": "^8.0.4",
22
  "vue-tsc": "^3.2.7"
@@ -102,12 +104,55 @@
102
  "tslib": "^2.4.0"
103
  }
104
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
105
  "node_modules/@jridgewell/sourcemap-codec": {
106
  "version": "1.5.5",
107
  "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
108
  "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
109
  "license": "MIT"
110
  },
 
 
 
 
 
 
 
 
 
 
 
111
  "node_modules/@napi-rs/wasm-runtime": {
112
  "version": "1.1.4",
113
  "resolved": "https://registry.npmmirror.com/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz",
@@ -401,6 +446,278 @@
401
  "dev": true,
402
  "license": "MIT"
403
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
404
  "node_modules/@tybys/wasm-util": {
405
  "version": "0.10.1",
406
  "resolved": "https://registry.npmmirror.com/@tybys/wasm-util/-/wasm-util-0.10.1.tgz",
@@ -748,6 +1065,20 @@
748
  "node": ">= 0.4"
749
  }
750
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
751
  "node_modules/entities": {
752
  "version": "7.0.1",
753
  "resolved": "https://registry.npmmirror.com/entities/-/entities-7.0.1.tgz",
@@ -938,6 +1269,13 @@
938
  "url": "https://github.com/sponsors/ljharb"
939
  }
940
  },
 
 
 
 
 
 
 
941
  "node_modules/has-symbols": {
942
  "version": "1.1.0",
943
  "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz",
@@ -995,6 +1333,16 @@
995
  "url": "https://github.com/sponsors/mesqueeb"
996
  }
997
  },
 
 
 
 
 
 
 
 
 
 
998
  "node_modules/lightningcss": {
999
  "version": "1.32.0",
1000
  "resolved": "https://registry.npmmirror.com/lightningcss/-/lightningcss-1.32.0.tgz",
@@ -1493,6 +1841,27 @@
1493
  "node": ">=16"
1494
  }
1495
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1496
  "node_modules/tinyglobby": {
1497
  "version": "0.2.16",
1498
  "resolved": "https://registry.npmmirror.com/tinyglobby/-/tinyglobby-0.2.16.tgz",
 
14
  "vue-router": "^4.6.4"
15
  },
16
  "devDependencies": {
17
+ "@tailwindcss/vite": "^4.2.2",
18
  "@types/node": "^24.12.2",
19
  "@vitejs/plugin-vue": "^6.0.5",
20
  "@vue/tsconfig": "^0.9.1",
21
+ "tailwindcss": "^4.2.2",
22
  "typescript": "~6.0.2",
23
  "vite": "^8.0.4",
24
  "vue-tsc": "^3.2.7"
 
104
  "tslib": "^2.4.0"
105
  }
106
  },
107
+ "node_modules/@jridgewell/gen-mapping": {
108
+ "version": "0.3.13",
109
+ "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
110
+ "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
111
+ "dev": true,
112
+ "license": "MIT",
113
+ "dependencies": {
114
+ "@jridgewell/sourcemap-codec": "^1.5.0",
115
+ "@jridgewell/trace-mapping": "^0.3.24"
116
+ }
117
+ },
118
+ "node_modules/@jridgewell/remapping": {
119
+ "version": "2.3.5",
120
+ "resolved": "https://registry.npmmirror.com/@jridgewell/remapping/-/remapping-2.3.5.tgz",
121
+ "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
122
+ "dev": true,
123
+ "license": "MIT",
124
+ "dependencies": {
125
+ "@jridgewell/gen-mapping": "^0.3.5",
126
+ "@jridgewell/trace-mapping": "^0.3.24"
127
+ }
128
+ },
129
+ "node_modules/@jridgewell/resolve-uri": {
130
+ "version": "3.1.2",
131
+ "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
132
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
133
+ "dev": true,
134
+ "license": "MIT",
135
+ "engines": {
136
+ "node": ">=6.0.0"
137
+ }
138
+ },
139
  "node_modules/@jridgewell/sourcemap-codec": {
140
  "version": "1.5.5",
141
  "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
142
  "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
143
  "license": "MIT"
144
  },
145
+ "node_modules/@jridgewell/trace-mapping": {
146
+ "version": "0.3.31",
147
+ "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
148
+ "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
149
+ "dev": true,
150
+ "license": "MIT",
151
+ "dependencies": {
152
+ "@jridgewell/resolve-uri": "^3.1.0",
153
+ "@jridgewell/sourcemap-codec": "^1.4.14"
154
+ }
155
+ },
156
  "node_modules/@napi-rs/wasm-runtime": {
157
  "version": "1.1.4",
158
  "resolved": "https://registry.npmmirror.com/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz",
 
446
  "dev": true,
447
  "license": "MIT"
448
  },
449
+ "node_modules/@tailwindcss/node": {
450
+ "version": "4.2.2",
451
+ "resolved": "https://registry.npmmirror.com/@tailwindcss/node/-/node-4.2.2.tgz",
452
+ "integrity": "sha512-pXS+wJ2gZpVXqFaUEjojq7jzMpTGf8rU6ipJz5ovJV6PUGmlJ+jvIwGrzdHdQ80Sg+wmQxUFuoW1UAAwHNEdFA==",
453
+ "dev": true,
454
+ "license": "MIT",
455
+ "dependencies": {
456
+ "@jridgewell/remapping": "^2.3.5",
457
+ "enhanced-resolve": "^5.19.0",
458
+ "jiti": "^2.6.1",
459
+ "lightningcss": "1.32.0",
460
+ "magic-string": "^0.30.21",
461
+ "source-map-js": "^1.2.1",
462
+ "tailwindcss": "4.2.2"
463
+ }
464
+ },
465
+ "node_modules/@tailwindcss/oxide": {
466
+ "version": "4.2.2",
467
+ "resolved": "https://registry.npmmirror.com/@tailwindcss/oxide/-/oxide-4.2.2.tgz",
468
+ "integrity": "sha512-qEUA07+E5kehxYp9BVMpq9E8vnJuBHfJEC0vPC5e7iL/hw7HR61aDKoVoKzrG+QKp56vhNZe4qwkRmMC0zDLvg==",
469
+ "dev": true,
470
+ "license": "MIT",
471
+ "engines": {
472
+ "node": ">= 20"
473
+ },
474
+ "optionalDependencies": {
475
+ "@tailwindcss/oxide-android-arm64": "4.2.2",
476
+ "@tailwindcss/oxide-darwin-arm64": "4.2.2",
477
+ "@tailwindcss/oxide-darwin-x64": "4.2.2",
478
+ "@tailwindcss/oxide-freebsd-x64": "4.2.2",
479
+ "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.2",
480
+ "@tailwindcss/oxide-linux-arm64-gnu": "4.2.2",
481
+ "@tailwindcss/oxide-linux-arm64-musl": "4.2.2",
482
+ "@tailwindcss/oxide-linux-x64-gnu": "4.2.2",
483
+ "@tailwindcss/oxide-linux-x64-musl": "4.2.2",
484
+ "@tailwindcss/oxide-wasm32-wasi": "4.2.2",
485
+ "@tailwindcss/oxide-win32-arm64-msvc": "4.2.2",
486
+ "@tailwindcss/oxide-win32-x64-msvc": "4.2.2"
487
+ }
488
+ },
489
+ "node_modules/@tailwindcss/oxide-android-arm64": {
490
+ "version": "4.2.2",
491
+ "resolved": "https://registry.npmmirror.com/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.2.2.tgz",
492
+ "integrity": "sha512-dXGR1n+P3B6748jZO/SvHZq7qBOqqzQ+yFrXpoOWWALWndF9MoSKAT3Q0fYgAzYzGhxNYOoysRvYlpixRBBoDg==",
493
+ "cpu": [
494
+ "arm64"
495
+ ],
496
+ "dev": true,
497
+ "license": "MIT",
498
+ "optional": true,
499
+ "os": [
500
+ "android"
501
+ ],
502
+ "engines": {
503
+ "node": ">= 20"
504
+ }
505
+ },
506
+ "node_modules/@tailwindcss/oxide-darwin-arm64": {
507
+ "version": "4.2.2",
508
+ "resolved": "https://registry.npmmirror.com/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.2.2.tgz",
509
+ "integrity": "sha512-iq9Qjr6knfMpZHj55/37ouZeykwbDqF21gPFtfnhCCKGDcPI/21FKC9XdMO/XyBM7qKORx6UIhGgg6jLl7BZlg==",
510
+ "cpu": [
511
+ "arm64"
512
+ ],
513
+ "dev": true,
514
+ "license": "MIT",
515
+ "optional": true,
516
+ "os": [
517
+ "darwin"
518
+ ],
519
+ "engines": {
520
+ "node": ">= 20"
521
+ }
522
+ },
523
+ "node_modules/@tailwindcss/oxide-darwin-x64": {
524
+ "version": "4.2.2",
525
+ "resolved": "https://registry.npmmirror.com/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.2.2.tgz",
526
+ "integrity": "sha512-BlR+2c3nzc8f2G639LpL89YY4bdcIdUmiOOkv2GQv4/4M0vJlpXEa0JXNHhCHU7VWOKWT/CjqHdTP8aUuDJkuw==",
527
+ "cpu": [
528
+ "x64"
529
+ ],
530
+ "dev": true,
531
+ "license": "MIT",
532
+ "optional": true,
533
+ "os": [
534
+ "darwin"
535
+ ],
536
+ "engines": {
537
+ "node": ">= 20"
538
+ }
539
+ },
540
+ "node_modules/@tailwindcss/oxide-freebsd-x64": {
541
+ "version": "4.2.2",
542
+ "resolved": "https://registry.npmmirror.com/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.2.2.tgz",
543
+ "integrity": "sha512-YUqUgrGMSu2CDO82hzlQ5qSb5xmx3RUrke/QgnoEx7KvmRJHQuZHZmZTLSuuHwFf0DJPybFMXMYf+WJdxHy/nQ==",
544
+ "cpu": [
545
+ "x64"
546
+ ],
547
+ "dev": true,
548
+ "license": "MIT",
549
+ "optional": true,
550
+ "os": [
551
+ "freebsd"
552
+ ],
553
+ "engines": {
554
+ "node": ">= 20"
555
+ }
556
+ },
557
+ "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": {
558
+ "version": "4.2.2",
559
+ "resolved": "https://registry.npmmirror.com/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.2.2.tgz",
560
+ "integrity": "sha512-FPdhvsW6g06T9BWT0qTwiVZYE2WIFo2dY5aCSpjG/S/u1tby+wXoslXS0kl3/KXnULlLr1E3NPRRw0g7t2kgaQ==",
561
+ "cpu": [
562
+ "arm"
563
+ ],
564
+ "dev": true,
565
+ "license": "MIT",
566
+ "optional": true,
567
+ "os": [
568
+ "linux"
569
+ ],
570
+ "engines": {
571
+ "node": ">= 20"
572
+ }
573
+ },
574
+ "node_modules/@tailwindcss/oxide-linux-arm64-gnu": {
575
+ "version": "4.2.2",
576
+ "resolved": "https://registry.npmmirror.com/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.2.2.tgz",
577
+ "integrity": "sha512-4og1V+ftEPXGttOO7eCmW7VICmzzJWgMx+QXAJRAhjrSjumCwWqMfkDrNu1LXEQzNAwz28NCUpucgQPrR4S2yw==",
578
+ "cpu": [
579
+ "arm64"
580
+ ],
581
+ "dev": true,
582
+ "license": "MIT",
583
+ "optional": true,
584
+ "os": [
585
+ "linux"
586
+ ],
587
+ "engines": {
588
+ "node": ">= 20"
589
+ }
590
+ },
591
+ "node_modules/@tailwindcss/oxide-linux-arm64-musl": {
592
+ "version": "4.2.2",
593
+ "resolved": "https://registry.npmmirror.com/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.2.2.tgz",
594
+ "integrity": "sha512-oCfG/mS+/+XRlwNjnsNLVwnMWYH7tn/kYPsNPh+JSOMlnt93mYNCKHYzylRhI51X+TbR+ufNhhKKzm6QkqX8ag==",
595
+ "cpu": [
596
+ "arm64"
597
+ ],
598
+ "dev": true,
599
+ "license": "MIT",
600
+ "optional": true,
601
+ "os": [
602
+ "linux"
603
+ ],
604
+ "engines": {
605
+ "node": ">= 20"
606
+ }
607
+ },
608
+ "node_modules/@tailwindcss/oxide-linux-x64-gnu": {
609
+ "version": "4.2.2",
610
+ "resolved": "https://registry.npmmirror.com/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.2.2.tgz",
611
+ "integrity": "sha512-rTAGAkDgqbXHNp/xW0iugLVmX62wOp2PoE39BTCGKjv3Iocf6AFbRP/wZT/kuCxC9QBh9Pu8XPkv/zCZB2mcMg==",
612
+ "cpu": [
613
+ "x64"
614
+ ],
615
+ "dev": true,
616
+ "license": "MIT",
617
+ "optional": true,
618
+ "os": [
619
+ "linux"
620
+ ],
621
+ "engines": {
622
+ "node": ">= 20"
623
+ }
624
+ },
625
+ "node_modules/@tailwindcss/oxide-linux-x64-musl": {
626
+ "version": "4.2.2",
627
+ "resolved": "https://registry.npmmirror.com/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.2.2.tgz",
628
+ "integrity": "sha512-XW3t3qwbIwiSyRCggeO2zxe3KWaEbM0/kW9e8+0XpBgyKU4ATYzcVSMKteZJ1iukJ3HgHBjbg9P5YPRCVUxlnQ==",
629
+ "cpu": [
630
+ "x64"
631
+ ],
632
+ "dev": true,
633
+ "license": "MIT",
634
+ "optional": true,
635
+ "os": [
636
+ "linux"
637
+ ],
638
+ "engines": {
639
+ "node": ">= 20"
640
+ }
641
+ },
642
+ "node_modules/@tailwindcss/oxide-wasm32-wasi": {
643
+ "version": "4.2.2",
644
+ "resolved": "https://registry.npmmirror.com/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.2.2.tgz",
645
+ "integrity": "sha512-eKSztKsmEsn1O5lJ4ZAfyn41NfG7vzCg496YiGtMDV86jz1q/irhms5O0VrY6ZwTUkFy/EKG3RfWgxSI3VbZ8Q==",
646
+ "bundleDependencies": [
647
+ "@napi-rs/wasm-runtime",
648
+ "@emnapi/core",
649
+ "@emnapi/runtime",
650
+ "@tybys/wasm-util",
651
+ "@emnapi/wasi-threads",
652
+ "tslib"
653
+ ],
654
+ "cpu": [
655
+ "wasm32"
656
+ ],
657
+ "dev": true,
658
+ "license": "MIT",
659
+ "optional": true,
660
+ "dependencies": {
661
+ "@emnapi/core": "^1.8.1",
662
+ "@emnapi/runtime": "^1.8.1",
663
+ "@emnapi/wasi-threads": "^1.1.0",
664
+ "@napi-rs/wasm-runtime": "^1.1.1",
665
+ "@tybys/wasm-util": "^0.10.1",
666
+ "tslib": "^2.8.1"
667
+ },
668
+ "engines": {
669
+ "node": ">=14.0.0"
670
+ }
671
+ },
672
+ "node_modules/@tailwindcss/oxide-win32-arm64-msvc": {
673
+ "version": "4.2.2",
674
+ "resolved": "https://registry.npmmirror.com/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.2.2.tgz",
675
+ "integrity": "sha512-qPmaQM4iKu5mxpsrWZMOZRgZv1tOZpUm+zdhhQP0VhJfyGGO3aUKdbh3gDZc/dPLQwW4eSqWGrrcWNBZWUWaXQ==",
676
+ "cpu": [
677
+ "arm64"
678
+ ],
679
+ "dev": true,
680
+ "license": "MIT",
681
+ "optional": true,
682
+ "os": [
683
+ "win32"
684
+ ],
685
+ "engines": {
686
+ "node": ">= 20"
687
+ }
688
+ },
689
+ "node_modules/@tailwindcss/oxide-win32-x64-msvc": {
690
+ "version": "4.2.2",
691
+ "resolved": "https://registry.npmmirror.com/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.2.2.tgz",
692
+ "integrity": "sha512-1T/37VvI7WyH66b+vqHj/cLwnCxt7Qt3WFu5Q8hk65aOvlwAhs7rAp1VkulBJw/N4tMirXjVnylTR72uI0HGcA==",
693
+ "cpu": [
694
+ "x64"
695
+ ],
696
+ "dev": true,
697
+ "license": "MIT",
698
+ "optional": true,
699
+ "os": [
700
+ "win32"
701
+ ],
702
+ "engines": {
703
+ "node": ">= 20"
704
+ }
705
+ },
706
+ "node_modules/@tailwindcss/vite": {
707
+ "version": "4.2.2",
708
+ "resolved": "https://registry.npmmirror.com/@tailwindcss/vite/-/vite-4.2.2.tgz",
709
+ "integrity": "sha512-mEiF5HO1QqCLXoNEfXVA1Tzo+cYsrqV7w9Juj2wdUFyW07JRenqMG225MvPwr3ZD9N1bFQj46X7r33iHxLUW0w==",
710
+ "dev": true,
711
+ "license": "MIT",
712
+ "dependencies": {
713
+ "@tailwindcss/node": "4.2.2",
714
+ "@tailwindcss/oxide": "4.2.2",
715
+ "tailwindcss": "4.2.2"
716
+ },
717
+ "peerDependencies": {
718
+ "vite": "^5.2.0 || ^6 || ^7 || ^8"
719
+ }
720
+ },
721
  "node_modules/@tybys/wasm-util": {
722
  "version": "0.10.1",
723
  "resolved": "https://registry.npmmirror.com/@tybys/wasm-util/-/wasm-util-0.10.1.tgz",
 
1065
  "node": ">= 0.4"
1066
  }
1067
  },
1068
+ "node_modules/enhanced-resolve": {
1069
+ "version": "5.20.1",
1070
+ "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz",
1071
+ "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==",
1072
+ "dev": true,
1073
+ "license": "MIT",
1074
+ "dependencies": {
1075
+ "graceful-fs": "^4.2.4",
1076
+ "tapable": "^2.3.0"
1077
+ },
1078
+ "engines": {
1079
+ "node": ">=10.13.0"
1080
+ }
1081
+ },
1082
  "node_modules/entities": {
1083
  "version": "7.0.1",
1084
  "resolved": "https://registry.npmmirror.com/entities/-/entities-7.0.1.tgz",
 
1269
  "url": "https://github.com/sponsors/ljharb"
1270
  }
1271
  },
1272
+ "node_modules/graceful-fs": {
1273
+ "version": "4.2.11",
1274
+ "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz",
1275
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
1276
+ "dev": true,
1277
+ "license": "ISC"
1278
+ },
1279
  "node_modules/has-symbols": {
1280
  "version": "1.1.0",
1281
  "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz",
 
1333
  "url": "https://github.com/sponsors/mesqueeb"
1334
  }
1335
  },
1336
+ "node_modules/jiti": {
1337
+ "version": "2.6.1",
1338
+ "resolved": "https://registry.npmmirror.com/jiti/-/jiti-2.6.1.tgz",
1339
+ "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==",
1340
+ "dev": true,
1341
+ "license": "MIT",
1342
+ "bin": {
1343
+ "jiti": "lib/jiti-cli.mjs"
1344
+ }
1345
+ },
1346
  "node_modules/lightningcss": {
1347
  "version": "1.32.0",
1348
  "resolved": "https://registry.npmmirror.com/lightningcss/-/lightningcss-1.32.0.tgz",
 
1841
  "node": ">=16"
1842
  }
1843
  },
1844
+ "node_modules/tailwindcss": {
1845
+ "version": "4.2.2",
1846
+ "resolved": "https://registry.npmmirror.com/tailwindcss/-/tailwindcss-4.2.2.tgz",
1847
+ "integrity": "sha512-KWBIxs1Xb6NoLdMVqhbhgwZf2PGBpPEiwOqgI4pFIYbNTfBXiKYyWoTsXgBQ9WFg/OlhnvHaY+AEpW7wSmFo2Q==",
1848
+ "dev": true,
1849
+ "license": "MIT"
1850
+ },
1851
+ "node_modules/tapable": {
1852
+ "version": "2.3.2",
1853
+ "resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.3.2.tgz",
1854
+ "integrity": "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==",
1855
+ "dev": true,
1856
+ "license": "MIT",
1857
+ "engines": {
1858
+ "node": ">=6"
1859
+ },
1860
+ "funding": {
1861
+ "type": "opencollective",
1862
+ "url": "https://opencollective.com/webpack"
1863
+ }
1864
+ },
1865
  "node_modules/tinyglobby": {
1866
  "version": "0.2.16",
1867
  "resolved": "https://registry.npmmirror.com/tinyglobby/-/tinyglobby-0.2.16.tgz",
frontend/package.json CHANGED
@@ -15,9 +15,11 @@
15
  "vue-router": "^4.6.4"
16
  },
17
  "devDependencies": {
 
18
  "@types/node": "^24.12.2",
19
  "@vitejs/plugin-vue": "^6.0.5",
20
  "@vue/tsconfig": "^0.9.1",
 
21
  "typescript": "~6.0.2",
22
  "vite": "^8.0.4",
23
  "vue-tsc": "^3.2.7"
 
15
  "vue-router": "^4.6.4"
16
  },
17
  "devDependencies": {
18
+ "@tailwindcss/vite": "^4.2.2",
19
  "@types/node": "^24.12.2",
20
  "@vitejs/plugin-vue": "^6.0.5",
21
  "@vue/tsconfig": "^0.9.1",
22
+ "tailwindcss": "^4.2.2",
23
  "typescript": "~6.0.2",
24
  "vite": "^8.0.4",
25
  "vue-tsc": "^3.2.7"
frontend/src/style.css CHANGED
@@ -1,9 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  :root {
2
- font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
3
- line-height: 1.5;
4
- font-weight: 400;
5
- color: #2f261d;
6
- background-color: #fff;
7
  font-synthesis: none;
8
  text-rendering: optimizeLegibility;
9
  -webkit-font-smoothing: antialiased;
@@ -12,4 +33,5 @@
12
 
13
  body {
14
  margin: 0;
 
15
  }
 
1
+ @import "tailwindcss";
2
+
3
+ @theme {
4
+ --color-gold: #b57a27;
5
+ --color-gold-deep: #8d5b17;
6
+ --color-gold-light: #d4a04a;
7
+ --color-gold-pale: #fff7e8;
8
+
9
+ --color-page-bg: #fffaf1;
10
+ --color-shell-bg: rgba(255, 250, 241, 0.76);
11
+ --color-panel-bg: rgba(255, 253, 247, 0.88);
12
+
13
+ --color-text-main: #2f261d;
14
+ --color-text-soft: #706251;
15
+ --color-text-muted: #a89880;
16
+
17
+ --color-card-rose: #fce4ec;
18
+ --color-card-amber: #fff8e1;
19
+ --color-card-mint: #e0f2f1;
20
+ --color-card-sky: #e1f5fe;
21
+ --color-card-violet: #f3e5f5;
22
+ --color-card-peach: #fff3e0;
23
+
24
+ --font-family-sans: 'Inter', system-ui, -apple-system, sans-serif;
25
+ }
26
+
27
  :root {
 
 
 
 
 
28
  font-synthesis: none;
29
  text-rendering: optimizeLegibility;
30
  -webkit-font-smoothing: antialiased;
 
33
 
34
  body {
35
  margin: 0;
36
+ font-family: var(--font-family-sans);
37
  }
frontend/vite.config.ts CHANGED
@@ -1,9 +1,10 @@
1
  import { defineConfig } from 'vite'
2
  import vue from '@vitejs/plugin-vue'
 
3
  import { fileURLToPath, URL } from 'node:url'
4
 
5
  export default defineConfig({
6
- plugins: [vue()],
7
  resolve: {
8
  alias: {
9
  '@': fileURLToPath(new URL('./src', import.meta.url)),
 
1
  import { defineConfig } from 'vite'
2
  import vue from '@vitejs/plugin-vue'
3
+ import tailwindcss from '@tailwindcss/vite'
4
  import { fileURLToPath, URL } from 'node:url'
5
 
6
  export default defineConfig({
7
+ plugins: [vue(), tailwindcss()],
8
  resolve: {
9
  alias: {
10
  '@': fileURLToPath(new URL('./src', import.meta.url)),