diff --git a/package-lock.json b/package-lock.json
index 5f4a9da..369a143 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -16,7 +16,7 @@
"autoprefixer": "^10.4.21",
"framer-motion": "^11.15.0",
"langchain": "^0.3.7",
- "next": "15.4.10",
+ "next": "^15.5.15",
"openai": "^4.77.3",
"react": "^19.0.0",
"react-dom": "^19.0.0",
@@ -695,9 +695,9 @@
}
},
"node_modules/@langchain/core": {
- "version": "0.3.79",
- "resolved": "https://registry.npmjs.org/@langchain/core/-/core-0.3.79.tgz",
- "integrity": "sha512-ZLAs5YMM5N2UXN3kExMglltJrKKoW7hs3KMZFlXUnD7a5DFKBYxPFMeXA4rT+uvTxuJRZPCYX0JKI5BhyAWx4A==",
+ "version": "0.3.80",
+ "resolved": "https://registry.npmjs.org/@langchain/core/-/core-0.3.80.tgz",
+ "integrity": "sha512-vcJDV2vk1AlCwSh3aBm/urQ1ZrlXFFBocv11bz/NBUfLWD5/UDNMzwPdaAd2dKvNmTWa9FM2lirLU3+JCf4cRA==",
"license": "MIT",
"dependencies": {
"@cfworker/json-schema": "^4.0.2",
@@ -764,9 +764,9 @@
}
},
"node_modules/@next/env": {
- "version": "15.4.10",
- "resolved": "https://registry.npmjs.org/@next/env/-/env-15.4.10.tgz",
- "integrity": "sha512-knhmoJ0Vv7VRf6pZEPSnciUG1S4bIhWx+qTYBW/AjxEtlzsiNORPk8sFDCEvqLfmKuey56UB9FL1UdHEV3uBrg==",
+ "version": "15.5.15",
+ "resolved": "https://registry.npmjs.org/@next/env/-/env-15.5.15.tgz",
+ "integrity": "sha512-vcmyu5/MyFzN7CdqRHO3uHO44p/QPCZkuTUXroeUmhNP8bL5PHFEhik22JUazt+CDDoD6EpBYRCaS2pISL+/hg==",
"license": "MIT"
},
"node_modules/@next/eslint-plugin-next": {
@@ -780,9 +780,9 @@
}
},
"node_modules/@next/swc-darwin-arm64": {
- "version": "15.4.8",
- "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.4.8.tgz",
- "integrity": "sha512-Pf6zXp7yyQEn7sqMxur6+kYcywx5up1J849psyET7/8pG2gQTVMjU3NzgIt8SeEP5to3If/SaWmaA6H6ysBr1A==",
+ "version": "15.5.15",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.5.15.tgz",
+ "integrity": "sha512-6PvFO2Tzt10GFK2Ro9tAVEtacMqRmTarYMFKAnV2vYMdwWc73xzmDQyAV7SwEdMhzmiRoo7+m88DuiXlJlGeaw==",
"cpu": [
"arm64"
],
@@ -796,9 +796,9 @@
}
},
"node_modules/@next/swc-darwin-x64": {
- "version": "15.4.8",
- "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.4.8.tgz",
- "integrity": "sha512-xla6AOfz68a6kq3gRQccWEvFC/VRGJmA/QuSLENSO7CZX5WIEkSz7r1FdXUjtGCQ1c2M+ndUAH7opdfLK1PQbw==",
+ "version": "15.5.15",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.5.15.tgz",
+ "integrity": "sha512-G+YNV+z6FDZTp/+IdGyIMFqalBTaQSnvAA+X/hrt+eaTRFSznRMz9K7rTmzvM6tDmKegNtyzgufZW0HwVzEqaQ==",
"cpu": [
"x64"
],
@@ -812,12 +812,15 @@
}
},
"node_modules/@next/swc-linux-arm64-gnu": {
- "version": "15.4.8",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.4.8.tgz",
- "integrity": "sha512-y3fmp+1Px/SJD+5ntve5QLZnGLycsxsVPkTzAc3zUiXYSOlTPqT8ynfmt6tt4fSo1tAhDPmryXpYKEAcoAPDJw==",
+ "version": "15.5.15",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.5.15.tgz",
+ "integrity": "sha512-eVkrMcVIBqGfXB+QUC7jjZ94Z6uX/dNStbQFabewAnk13Uy18Igd1YZ/GtPRzdhtm7QwC0e6o7zOQecul4iC1w==",
"cpu": [
"arm64"
],
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -828,12 +831,15 @@
}
},
"node_modules/@next/swc-linux-arm64-musl": {
- "version": "15.4.8",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.4.8.tgz",
- "integrity": "sha512-DX/L8VHzrr1CfwaVjBQr3GWCqNNFgyWJbeQ10Lx/phzbQo3JNAxUok1DZ8JHRGcL6PgMRgj6HylnLNndxn4Z6A==",
+ "version": "15.5.15",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.5.15.tgz",
+ "integrity": "sha512-RwSHKMQ7InLy5GfkY2/n5PcFycKA08qI1VST78n09nN36nUPqCvGSMiLXlfUmzmpQpF6XeBYP2KRWHi0UW3uNg==",
"cpu": [
"arm64"
],
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -844,12 +850,15 @@
}
},
"node_modules/@next/swc-linux-x64-gnu": {
- "version": "15.4.8",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.4.8.tgz",
- "integrity": "sha512-9fLAAXKAL3xEIFdKdzG5rUSvSiZTLLTCc6JKq1z04DR4zY7DbAPcRvNm3K1inVhTiQCs19ZRAgUerHiVKMZZIA==",
+ "version": "15.5.15",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.5.15.tgz",
+ "integrity": "sha512-nplqvY86LakS+eeiuWsNWvfmK8pFcOEW7ZtVRt4QH70lL+0x6LG/m1OpJ/tvrbwjmR8HH9/fH2jzW1GlL03TIg==",
"cpu": [
"x64"
],
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -860,12 +869,15 @@
}
},
"node_modules/@next/swc-linux-x64-musl": {
- "version": "15.4.8",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.4.8.tgz",
- "integrity": "sha512-s45V7nfb5g7dbS7JK6XZDcapicVrMMvX2uYgOHP16QuKH/JA285oy6HcxlKqwUNaFY/UC6EvQ8QZUOo19cBKSA==",
+ "version": "15.5.15",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.5.15.tgz",
+ "integrity": "sha512-eAgl9NKQ84/sww0v81DQINl/vL2IBxD7sMybd0cWRw6wqgouVI53brVRBrggqBRP/NWeIAE1dm5cbKYoiMlqDQ==",
"cpu": [
"x64"
],
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -876,9 +888,9 @@
}
},
"node_modules/@next/swc-win32-arm64-msvc": {
- "version": "15.4.8",
- "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.4.8.tgz",
- "integrity": "sha512-KjgeQyOAq7t/HzAJcWPGA8X+4WY03uSCZ2Ekk98S9OgCFsb6lfBE3dbUzUuEQAN2THbwYgFfxX2yFTCMm8Kehw==",
+ "version": "15.5.15",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.5.15.tgz",
+ "integrity": "sha512-GJVZC86lzSquh0MtvZT+L7G8+jMnJcldloOjA8Kf3wXvBrvb6OGe2MzPuALxFshSm/IpwUtD2mIoof39ymf52A==",
"cpu": [
"arm64"
],
@@ -892,9 +904,9 @@
}
},
"node_modules/@next/swc-win32-x64-msvc": {
- "version": "15.4.8",
- "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.4.8.tgz",
- "integrity": "sha512-Exsmf/+42fWVnLMaZHzshukTBxZrSwuuLKFvqhGHJ+mC1AokqieLY/XzAl3jc/CqhXLqLY3RRjkKJ9YnLPcRWg==",
+ "version": "15.5.15",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.5.15.tgz",
+ "integrity": "sha512-nFucjVdwlFqxh/JG3hWSJ4p8+YJV7Ii8aPDuBQULB6DzUF4UNZETXLfEUk+oI2zEznWWULPt7MeuTE6xtK1HSA==",
"cpu": [
"x64"
],
@@ -1364,9 +1376,9 @@
}
},
"node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
- "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz",
+ "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1374,13 +1386,13 @@
}
},
"node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
- "version": "9.0.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
- "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "version": "9.0.9",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
+ "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
"dev": true,
"license": "ISC",
"dependencies": {
- "brace-expansion": "^2.0.1"
+ "brace-expansion": "^2.0.2"
},
"engines": {
"node": ">=16 || 14 >=14.17"
@@ -1768,9 +1780,9 @@
}
},
"node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "version": "6.14.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz",
+ "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2155,9 +2167,9 @@
}
},
"node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz",
+ "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3503,16 +3515,16 @@
}
},
"node_modules/flatted": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
- "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz",
+ "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==",
"dev": true,
"license": "ISC"
},
"node_modules/follow-redirects": {
- "version": "1.15.11",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz",
- "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==",
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz",
+ "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==",
"funding": [
{
"type": "individual",
@@ -4895,9 +4907,9 @@
}
},
"node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -5001,12 +5013,12 @@
"license": "MIT"
},
"node_modules/next": {
- "version": "15.4.10",
- "resolved": "https://registry.npmjs.org/next/-/next-15.4.10.tgz",
- "integrity": "sha512-itVlc79QjpKMFMRhP+kbGKaSG/gZM6RCvwhEbwmCNF06CdDiNaoHcbeg0PqkEa2GOcn8KJ0nnc7+yL7EjoYLHQ==",
+ "version": "15.5.15",
+ "resolved": "https://registry.npmjs.org/next/-/next-15.5.15.tgz",
+ "integrity": "sha512-VSqCrJwtLVGwAVE0Sb/yikrQfkwkZW9p+lL/J4+xe+G3ZA+QnWPqgcfH1tDUEuk9y+pthzzVFp4L/U8JerMfMQ==",
"license": "MIT",
"dependencies": {
- "@next/env": "15.4.10",
+ "@next/env": "15.5.15",
"@swc/helpers": "0.5.15",
"caniuse-lite": "^1.0.30001579",
"postcss": "8.4.31",
@@ -5019,14 +5031,14 @@
"node": "^18.18.0 || ^19.8.0 || >= 20.0.0"
},
"optionalDependencies": {
- "@next/swc-darwin-arm64": "15.4.8",
- "@next/swc-darwin-x64": "15.4.8",
- "@next/swc-linux-arm64-gnu": "15.4.8",
- "@next/swc-linux-arm64-musl": "15.4.8",
- "@next/swc-linux-x64-gnu": "15.4.8",
- "@next/swc-linux-x64-musl": "15.4.8",
- "@next/swc-win32-arm64-msvc": "15.4.8",
- "@next/swc-win32-x64-msvc": "15.4.8",
+ "@next/swc-darwin-arm64": "15.5.15",
+ "@next/swc-darwin-x64": "15.5.15",
+ "@next/swc-linux-arm64-gnu": "15.5.15",
+ "@next/swc-linux-arm64-musl": "15.5.15",
+ "@next/swc-linux-x64-gnu": "15.5.15",
+ "@next/swc-linux-x64-musl": "15.5.15",
+ "@next/swc-win32-arm64-msvc": "15.5.15",
+ "@next/swc-win32-x64-msvc": "15.5.15",
"sharp": "^0.34.3"
},
"peerDependencies": {
@@ -5505,9 +5517,9 @@
"license": "ISC"
},
"node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -6696,9 +6708,9 @@
}
},
"node_modules/tinyglobby/node_modules/picomatch": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
- "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
+ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
"dev": true,
"license": "MIT",
"engines": {
@@ -7169,9 +7181,9 @@
"license": "ISC"
},
"node_modules/yaml": {
- "version": "2.8.2",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz",
- "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==",
+ "version": "2.8.3",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz",
+ "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==",
"license": "ISC",
"bin": {
"yaml": "bin.mjs"
diff --git a/package.json b/package.json
index 15c9272..91de611 100644
--- a/package.json
+++ b/package.json
@@ -18,7 +18,7 @@
"autoprefixer": "^10.4.21",
"framer-motion": "^11.15.0",
"langchain": "^0.3.7",
- "next": "15.4.10",
+ "next": "^15.5.15",
"openai": "^4.77.3",
"react": "^19.0.0",
"react-dom": "^19.0.0",
diff --git a/src/app/globals.css b/src/app/globals.css
index 0d587b7..a175136 100644
--- a/src/app/globals.css
+++ b/src/app/globals.css
@@ -8,60 +8,94 @@
box-sizing: border-box;
}
-html {
+html, body {
scroll-behavior: smooth;
+ width: 100%;
+ overflow-x: hidden;
+ margin: 0 !important;
+ padding: 0 !important;
}
body {
- font-family: 'JetBrains Mono', monospace;
- cursor: crosshair;
+ font-family: 'Comic Sans MS', 'Comic Sans', 'Chalkboard SE', cursive !important;
+ background-color: #ffffff;
+ background-image:
+ repeating-linear-gradient(45deg, #fffde7 0px, #fffde7 2px, #fff 2px, #fff 12px);
+ color: #000000 !important;
+ cursor: default !important;
}
-.terminal-border {
- border-color: rgba(128, 128, 128, 0.2);
+html.dark body {
+ background-color: #000000 !important;
+ background-image: none !important;
+ color: #00ff00 !important;
}
-/* Scanline effect */
-.scanline {
+/* Marquee */
+.marquee-wrapper {
width: 100%;
- height: 2px;
- z-index: 100;
- background: rgba(74, 222, 128, 0.02);
- opacity: 0.1;
- position: fixed;
- pointer-events: none;
- animation: scanline 8s linear infinite;
+ overflow: hidden;
+ background: linear-gradient(90deg, #000080, #0000cc, #000080);
+ color: #ffff00;
+ padding: 5px 0;
+ font-family: 'Comic Sans MS', cursive;
+ font-size: 13px;
+ font-weight: bold;
+ white-space: nowrap;
+ border-bottom: 3px solid #ff0000;
}
-@keyframes scanline {
- 0% { top: 0; }
- 100% { top: 100%; }
+.marquee-content {
+ display: inline-block;
+ padding-left: 100%;
+ animation: marquee-scroll 30s linear infinite;
}
-::selection {
- background: #4ade80;
- color: #000;
+@keyframes marquee-scroll {
+ from { transform: translateX(0); }
+ to { transform: translateX(-100%); }
+}
+
+/* Blink */
+.blink {
+ animation: blink-anim 0.7s step-end infinite;
+}
+
+@keyframes blink-anim {
+ 0%, 100% { opacity: 1; }
+ 50% { opacity: 0; }
}
-/* Custom Animations */
-@keyframes fadeInUp {
- from {
- opacity: 0;
- transform: translateY(30px);
- }
- to {
- opacity: 1;
- transform: translateY(0);
- }
+/* Rainbow text */
+.rainbow-text {
+ animation: rainbow-colors 2.5s linear infinite;
}
-@keyframes blink {
- 50% {
- opacity: 0;
- }
+@keyframes rainbow-colors {
+ 0% { color: #ff0000; }
+ 16% { color: #ff8800; }
+ 33% { color: #cccc00; }
+ 50% { color: #00aa00; }
+ 66% { color: #0044ff; }
+ 83% { color: #aa00ff; }
+ 100% { color: #ff0000; }
}
-/* Animation utility classes */
-.animate-fade-in-up {
- animation: fadeInUp 0.8s ease-out;
+/* Global link styles */
+a {
+ color: #0000cc;
+ text-decoration: underline;
+}
+a:visited {
+ color: #800080;
+}
+a:hover {
+ color: #ff0000;
+ text-decoration: underline;
+}
+
+/* Selection */
+::selection {
+ background: #000080;
+ color: #ffff00;
}
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index f7ecc58..d4025c6 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -23,9 +23,9 @@ export default function RootLayout({
children: React.ReactNode;
}>) {
return (
-
+
{children}
{/* */}
diff --git a/src/components/BlogSection.tsx b/src/components/BlogSection.tsx
index cb3ed9e..2713395 100644
--- a/src/components/BlogSection.tsx
+++ b/src/components/BlogSection.tsx
@@ -1,7 +1,6 @@
'use client';
import React, { useEffect, useState } from 'react';
-import { FaArrowRight } from 'react-icons/fa';
import Link from 'next/link';
import { BlogPost } from '@/lib/sanity';
@@ -29,70 +28,92 @@ const BlogSection = () => {
year: 'numeric',
month: 'short',
day: 'numeric'
- }).toLowerCase();
+ });
};
- if (loading) {
- return (
-
- //blog
-
- {[1, 2, 3].map((i) => (
-
- ))}
-
-
- );
- }
-
return (
-
- //blog
-
- sharing insights from talks, projects, and learnings in AI/ML.
-
+
+
+
+
+
+ ๐ MY SUPER COOL BLOG POSTS!!! ๐
+
- {posts.length > 0 ? (
-
- {posts.map((post) => (
-
-
-
-
{formatDate(post.publishedAt)}
-
- {post.title}
-
-
- {post.excerpt}
-
-
-
+ {loading ? (
+
+ โณ Loading posts... please wait!!!
-
- ))}
-
-
-
- view all posts โ
-
-
-
- ) : (
-
- no posts found. check back soon!
-
- )}
-
+ ) : posts.length > 0 ? (
+
+
+ {posts.map((post, idx) => (
+
+
+
+ ๐
{formatDate(post.publishedAt)}
+
+
+ {post.title}
+
+
+ {post.excerpt}
+
+
+
+ READ MORE ยปยปยป
+
+
+
+
+ ))}
+
+
+
+ ๐ VIEW ALL POSTS!!!
+
+
+
+
+
+ ) : (
+
+ ๐ข No posts found yet... check back soon!!!
+
+ )}
+
+
+
+
);
};
diff --git a/src/components/ContactSection.tsx b/src/components/ContactSection.tsx
index ec1ebd2..8834738 100644
--- a/src/components/ContactSection.tsx
+++ b/src/components/ContactSection.tsx
@@ -1,53 +1,99 @@
'use client';
import React from 'react';
-import { FaEnvelope, FaGithub, FaLinkedin } from 'react-icons/fa';
const ContactSection = () => {
return (
-
- //contact
-
- have a project in mind? i'd love to hear about it.
-
+
);
};
diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx
index 571ef5e..e30902f 100644
--- a/src/components/Footer.tsx
+++ b/src/components/Footer.tsx
@@ -4,16 +4,48 @@ import React from 'react';
const Footer = () => {
return (
-
+
+
+ {/* Rainbow bar */}
+
+
+
+
+
+
+
+
+
+
+
+ ยฉ 2026 CYRUS MANTE โ BUILT WITH โค๏ธ AND WAY TOO MUCH COFFEE โ
+
+
+ This site best viewed in Netscape Navigator 4.0 or Internet Explorer 5.5+
+
+
+
+ ๐ง PAGE LAST UPDATED: WHENEVER I FELT LIKE IT ๐ง
+
+
+
+
+
+
+
+
+ {/* Bottom rainbow bar */}
+
+
+
+
+
+
+
);
};
diff --git a/src/components/HeroSection.tsx b/src/components/HeroSection.tsx
index 43289f3..132c76d 100644
--- a/src/components/HeroSection.tsx
+++ b/src/components/HeroSection.tsx
@@ -1,6 +1,6 @@
'use client';
-import React, { useEffect, useState, useRef } from 'react';
+import React, { useEffect, useState } from 'react';
import Footer from './Footer';
interface HeroSectionProps {
@@ -8,10 +8,9 @@ interface HeroSectionProps {
}
const HeroSection = ({ children }: HeroSectionProps) => {
- const [time, setTime] = useState('');
- const [isDark, setIsDark] = useState(true);
- const nameRef = useRef(null);
- const [nameVisible, setNameVisible] = useState(false);
+ const [time, setTime] = useState('--:--:-- --');
+ const [isDark, setIsDark] = useState(false);
+ const [visitorCount] = useState(() => Math.floor(Math.random() * 90000) + 10000);
useEffect(() => {
const updateTime = () => {
@@ -28,10 +27,6 @@ const HeroSection = ({ children }: HeroSectionProps) => {
updateTime();
const interval = setInterval(updateTime, 1000);
-
- // Trigger name animation after mount
- setTimeout(() => setNameVisible(true), 300);
-
return () => clearInterval(interval);
}, []);
@@ -42,162 +37,333 @@ const HeroSection = ({ children }: HeroSectionProps) => {
return (
<>
- {/* Scanline effect */}
-
-
- {/* Theme toggle button */}
-
- [TOGGLE_THEME]
-
-
-
- {/* Header */}
-
-
-
-
-
-
//location
-
- Philippines
- {time}
-
-
-
-
- {/* Main content */}
-
- {/* Hero - Profile + Name */}
-
-
-
-
-
-
-
- <Cyrus Mante>
-
-
- //ai engineer & data scientist
-
-
-
-
- {/* Sections container */}
-
- {/* About */}
-
- //about
-
-
- hi, i'm Cyrus, my friends call me cy. i enjoy building
- dynamic, creative products from start to finish, focused on
- developing intuitive experiences that constantly grow and improve
- based on your satisfaction.
-
-
-
-
- {/* Work Experience */}
-
- //work experience
-
- {/* Job 1 */}
-
-
- oct 2025 - present
-
-
-
- Cambridge University Press
- //ai software developer
-
-
-
-
- collaborate with design teams to implement various complex user interfaces to prioritize features for the product releases.
-
-
-
- migrated endpoints architecture from monolith to microservices for efficient scaling.
-
-
-
-
-
- {/* Job 2 */}
-
-
- sept 2024 - sept 2025
-
-
-
- Accenture
- //ai/ml computational science analyst
-
-
-
-
-
-
- {/* Technologies */}
-
- //technologies
-
-
-
AI/ML
-
Python, TensorFlow, PyTorch, Scikit-learn
-
-
-
Frontend
-
React, Next.js, TypeScript, TailwindCSS
-
-
-
Backend
-
Node.js, Django, FastAPI, PostgreSQL
-
-
-
Cloud
-
AWS, Docker, GCP, Azure
-
-
-
-
- {/* Child sections (Projects, Blog, Contact) */}
- {children}
-
-
-
-
+ {/* Marquee ticker */}
+
+
+ โ
โ
โ
WELCOME TO CYRUS MANTE'S AWESOME WEBSITE!!! โ
โ
โ
BEST VIEWED IN 800x600 RESOLUTION โ
โ
โ
AI ENGINEER & DATA SCIENTIST FROM THE PHILIPPINES!!! โ
โ
โ
CLICK THE LINKS BELOW FOR COOL STUFF!!! โ
โ
โ
THIS SITE IS UNDER CONSTRUCTION ๐ง COME BACK LATER FOR MORE!!!! โ
โ
โ
YOU ARE VISITOR NUMBER {visitorCount.toLocaleString()}
+
+
+ {/* Outer page table layout */}
+
+
+
+
+ {/* Main header banner */}
+
+
+
+
+
+
+
+
+ โ
CYRUS MANTE โ
+
+
+ ~*~ AI Engineer & Data Scientist ~*~
+
+
+ ๐ด ONLINE NOW |
+ Manila Time: {time}
+
+
+
+
+
+
+
+
+
+ {/* Navigation bar */}
+
+
+
+
+
+ {[
+ { label: 'HOME', href: '#top' },
+ { label: 'ABOUT ME', href: '#about' },
+ { label: 'MY PROJECTS!!!', href: '#projects' },
+ { label: 'BLOG', href: '#blog' },
+ { label: 'CONTACT ME', href: '#contact' },
+ ].map(({ label, href }) => (
+
+ {label}
+
+ ))}
+
+ ๐ก {isDark ? 'LIGHT MODE' : 'DARK MODE'}
+
+
+
+
+
+
+
+ {/* Main 2-column layout */}
+
+
+
+ {/* LEFT SIDEBAR */}
+
+ {/* Visitor counter box */}
+
+
+
+
+ YOU ARE VISITOR:
+
+ {String(visitorCount).split('').map((d, i) => (
+ {d}
+ ))}
+
+
+
+
+
+
+ {/* Under construction */}
+
+
+
+
+ ๐ง
+
+ UNDER CONSTRUCTION!
+
+
+
+
+
+
+ {/* Links box */}
+
+
+
+
+
+ ๐ COOL LINKS!!!
+
+
+
+
+
+
+
+ {/* Availability badge */}
+
+
+
+
+ โ
+
+ AVAILABLE FOR WORK!!!
+
+
+
+
+
+
+ {/* Philippines flag */}
+
+
+
+
+ ๐ต๐ญ
+ PHILIPPINES
+ Representing!!! ๐
+
+
+
+
+
+ {/* Best viewed notice */}
+
+
+
+
+
+ ๐ฅ๏ธ BEST VIEWED IN
+ INTERNET EXPLORER 6
+ 800ร600 RESOLUTION
+ (or any modern browser lol)
+
+
+
+
+
+
+
+ {/* MAIN CONTENT AREA */}
+
+ {/* About section */}
+
+
+
+
+
+ โ
ABOUT ME โ
+
+
+ Hi!!!! I'm Cyrus , my friends call me cy ๐
+ I enjoy building SUPER DYNAMIC AND CREATIVE products
+ from start to finish!!! I focus on developing intuitive experiences
+ that constantly grow and improve. If you wanna collab, EMAIL ME!!! ๐
+
+
+
+
+
+
+ {/* Work Experience */}
+
+
+
+
+
+ ๐ผ WORK EXPERIENCE!!!
+
+
+ {/* Job 1 */}
+
+
+
+
+
+ ๐ Cambridge University Press
+ Oct 2025 - Present
+
+ AI Software Developer ๐ค
+
+ Collaborating with design teams on complex UIs ๐จ
+ Migrating monolith โ microservices architecture โก
+
+
+
+
+
+
+ {/* Job 2 */}
+
+
+
+
+
+ ๐ข Accenture
+ Sept 2024 - Sept 2025
+
+ AI/ML Computational Science Analyst ๐งฎ
+
+ ML models for predictive analytics and NLP ๐ง
+ Built data pipelines and automated workflows ๐ง
+
+
+
+
+
+
+
+
+
+
+ {/* Technologies */}
+
+
+
+
+
+ ๐พ MY AWESOME TECH STACK!!!
+
+
+
+
+ {[
+ { label: '๐ค AI/ML', techs: 'Python โข TensorFlow โข PyTorch โข Scikit-learn' },
+ { label: '๐ Frontend', techs: 'React โข Next.js โข TypeScript โข TailwindCSS' },
+ { label: 'โ๏ธ Backend', techs: 'Node.js โข Django โข FastAPI โข PostgreSQL' },
+ { label: 'โ๏ธ Cloud', techs: 'AWS โข Docker โข GCP โข Azure' },
+ ].map((cat) => (
+
+ {cat.label}
+ {cat.techs}
+
+ ))}
+
+
+
+
+
+
+
+
+ {/* Child sections (Projects, Blog, Contact) */}
+ {children}
+
+
+
+
+
+
+
+
+
+
>
);
};
diff --git a/src/components/ProjectsSection.tsx b/src/components/ProjectsSection.tsx
index 1d23714..5694a49 100644
--- a/src/components/ProjectsSection.tsx
+++ b/src/components/ProjectsSection.tsx
@@ -1,7 +1,6 @@
'use client';
import React from 'react';
-import { FaGithub } from 'react-icons/fa';
const ProjectsSection = () => {
const projects = [
@@ -11,6 +10,7 @@ const ProjectsSection = () => {
description: "A modern portfolio website showcasing my projects and skills as a Machine Learning Engineer.",
tech: ["Next.js", "TypeScript", "Tailwind CSS"],
githubUrl: "https://github.com/mattekudacy/kudacy",
+ emoji: "๐",
},
{
id: 2,
@@ -18,6 +18,7 @@ const ProjectsSection = () => {
description: "Django-based web app for creating professional online portfolios with NFC card integration support.",
tech: ["Python", "Django", "PostgreSQL"],
githubUrl: "https://github.com/mattekudacy/tapix",
+ emoji: "๐ณ",
},
{
id: 3,
@@ -25,6 +26,7 @@ const ProjectsSection = () => {
description: "Mobile app for classifying Philippine banknotes for visually impaired users using computer vision.",
tech: ["Python", "TensorFlow", "Android Studio"],
githubUrl: "https://github.com/mattekudacy/notevision-app",
+ emoji: "๐๏ธ",
},
{
id: 4,
@@ -32,6 +34,7 @@ const ProjectsSection = () => {
description: "OCR application that extracts business details from receipt images using LLMs.",
tech: ["Python", "OpenCV", "Flet"],
githubUrl: "https://github.com/mattekudacy/extractify",
+ emoji: "๐งพ",
},
{
id: 5,
@@ -39,47 +42,86 @@ const ProjectsSection = () => {
description: "NLP analysis of YouTube Rewind 2018 comments using sentiment analysis techniques.",
tech: ["Python", "NLTK", "Transformers"],
githubUrl: "https://github.com/mattekudacy/sentiment-analysis-nltk",
+ emoji: "๐",
},
];
return (
-