diff --git a/frontend/src/pages/LandingPage.tsx b/frontend/src/pages/LandingPage.tsx
index baede37..2faac51 100644
--- a/frontend/src/pages/LandingPage.tsx
+++ b/frontend/src/pages/LandingPage.tsx
@@ -1,3 +1,4 @@
+import { useState } from 'react'
import { Link } from 'react-router-dom'
import {
Scissors,
@@ -14,6 +15,8 @@ import {
Gem,
Pen,
FileOutput,
+ Menu,
+ X,
} from 'lucide-react'
const tools = [
@@ -34,6 +37,8 @@ const steps = [
]
export default function LandingPage() {
+ const [mobileMenuOpen, setMobileMenuOpen] = useState(false)
+
return (
{/* ── CSS ─────────────────────────────────────────────── */}
@@ -52,6 +57,10 @@ export default function LandingPage() {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
+ @keyframes slideDown {
+ from { opacity: 0; transform: translateY(-8px); }
+ to { opacity: 1; transform: translateY(0); }
+ }
.anim-reveal { animation: reveal .8s cubic-bezier(.16,1,.3,1) both; }
.anim-d1 { animation-delay: .08s; }
@@ -59,6 +68,7 @@ export default function LandingPage() {
.anim-d3 { animation-delay: .24s; }
.anim-d4 { animation-delay: .36s; }
.anim-fade { animation: fade .6s ease both; }
+ .anim-slide-down { animation: slideDown .2s ease both; }
/* Dot grid texture */
.dot-grid {
@@ -66,12 +76,15 @@ export default function LandingPage() {
background-size: 24px 24px;
}
- /* Crystal prism */
+ /* Crystal prism – scales down on mobile */
.prism {
- width: 340px;
- height: 340px;
+ width: 220px;
+ height: 220px;
position: relative;
}
+ @media (min-width: 768px) {
+ .prism { width: 340px; height: 340px; }
+ }
.prism::before {
content: '';
position: absolute;
@@ -117,98 +130,138 @@ export default function LandingPage() {
box-shadow: 0 16px 48px -12px rgba(0,0,0,.5), 0 0 0 1px rgba(96,165,250,.08);
}
- /* Step connector dash */
- .step-connector {
- width: 100%;
- height: 1px;
- background: repeating-linear-gradient(
- 90deg,
- rgba(96,165,250,.2) 0px,
- rgba(96,165,250,.2) 6px,
- transparent 6px,
- transparent 12px
- );
+ /* Mobile nav links */
+ .mobile-nav-link {
+ display: block;
+ padding: 0.875rem 1.5rem;
+ font-size: 1rem;
+ font-weight: 500;
+ color: rgba(148,163,184,1);
+ border-bottom: 1px solid rgba(255,255,255,.04);
+ transition: color .15s ease, background .15s ease;
+ }
+ .mobile-nav-link:hover {
+ color: #fff;
+ background: rgba(255,255,255,.03);
}
`}
{/* ── Ambient glow ───────────────────────────────────── */}
{/* ── Nav ────────────────────────────────────────────── */}
-