diff --git a/src/App.tsx b/src/App.tsx
index 6fb2953..0b62b08 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -11,6 +11,7 @@ import TracyPage from './pages/TracyPage'
import SystemsPage from './pages/SystemsPage'
import ResilienceGamePage from './pages/ResilienceGamePage'
import MetricsPage from './pages/MetricsPage'
+import NotFoundPage from './pages/NotFoundPage'
function App() {
return (
@@ -29,6 +30,7 @@ function App() {
} />
} />
} />
+ } />
)
}
diff --git a/src/pages/NotFoundPage.module.css b/src/pages/NotFoundPage.module.css
new file mode 100644
index 0000000..1450c63
--- /dev/null
+++ b/src/pages/NotFoundPage.module.css
@@ -0,0 +1,92 @@
+.notFoundPage {
+ position: relative;
+ min-height: 100vh;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ overflow: hidden;
+}
+
+.content {
+ position: relative;
+ z-index: 2;
+ text-align: center;
+ padding: 2rem;
+}
+
+.errorContainer {
+ background: rgba(0, 0, 0, 0.8);
+ backdrop-filter: blur(10px);
+ border-radius: 16px;
+ padding: 3rem 2rem;
+ border: 1px solid rgba(255, 255, 255, 0.1);
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
+ max-width: 500px;
+ margin: 0 auto;
+}
+
+.errorCode {
+ font-size: 6rem;
+ font-weight: bold;
+ margin: 0;
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+ -webkit-background-clip: text;
+ background-clip: text;
+ -webkit-text-fill-color: transparent;
+ line-height: 1;
+ margin-bottom: 1rem;
+}
+
+.errorMessage {
+ font-size: 2rem;
+ margin: 0 0 1rem 0;
+ color: #ffffff;
+ font-weight: 600;
+}
+
+.errorDescription {
+ font-size: 1.1rem;
+ color: #cccccc;
+ margin-bottom: 2.5rem;
+ line-height: 1.5;
+}
+
+.homeButton {
+ display: inline-block;
+ padding: 12px 32px;
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+ color: white;
+ text-decoration: none;
+ border-radius: 25px;
+ font-weight: 600;
+ font-size: 1rem;
+ transition: all 0.3s ease;
+ border: none;
+ cursor: pointer;
+ box-shadow: 0 4px 15px rgba(102, 126, 234, 0.4);
+}
+
+.homeButton:hover {
+ transform: translateY(-2px);
+ box-shadow: 0 6px 20px rgba(102, 126, 234, 0.6);
+ filter: brightness(1.1);
+}
+
+.homeButton:active {
+ transform: translateY(0);
+}
+
+@media (max-width: 768px) {
+ .errorCode {
+ font-size: 4rem;
+ }
+
+ .errorMessage {
+ font-size: 1.5rem;
+ }
+
+ .errorContainer {
+ padding: 2rem 1.5rem;
+ margin: 1rem;
+ }
+}
\ No newline at end of file
diff --git a/src/pages/NotFoundPage.tsx b/src/pages/NotFoundPage.tsx
new file mode 100644
index 0000000..2ca3266
--- /dev/null
+++ b/src/pages/NotFoundPage.tsx
@@ -0,0 +1,25 @@
+import { Link } from 'react-router-dom'
+import JuliaSetBackground from '@/components/JuliaSetBackground'
+import styles from './NotFoundPage.module.css'
+
+const NotFoundPage = () => {
+ return (
+
+
+
+
+
404
+
Page Not Found
+
+ The page you're looking for doesn't exist or has been moved.
+
+
+ Return Home
+
+
+
+
+ )
+}
+
+export default NotFoundPage
\ No newline at end of file