|
1 | | -"use client"; |
| 1 | +'use client'; |
2 | 2 |
|
3 | | -import Link from "next/link"; |
4 | | -import { motion } from "framer-motion"; |
5 | | -import { MoveLeft, Ghost, AlertCircle } from "lucide-react"; |
| 3 | +import Link from 'next/link'; |
| 4 | +import { motion } from 'framer-motion'; |
| 5 | +import { SectionContainer } from '../components/layout/SectionContainer'; |
| 6 | +import { Rocket, MoveLeft, AlertCircle } from 'lucide-react'; |
6 | 7 |
|
7 | 8 | export default function NotFound() { |
8 | 9 | return ( |
9 | | - <main className="relative flex min-h-screen flex-col items-center justify-center overflow-hidden bg-[#0a0a0a] font-sans text-white"> |
10 | | - {/* Background "Noise" Grid - Very Gen-Z/Brutalist */} |
11 | | - <div className="absolute inset-0 z-0 opacity-20 [background-image:linear-gradient(#333_1px,transparent_1px),linear-gradient(90deg,#333_1px,transparent_1px)] [background-size:40px_40px]"></div> |
12 | | - |
13 | | - {/* Floating Aesthetic Elements */} |
14 | | - <motion.div |
15 | | - animate={{ |
16 | | - y: [0, -20, 0], |
| 10 | + <main className="min-h-screen bg-[#030303] flex items-center justify-center overflow-hidden relative"> |
| 11 | + <div className="fixed inset-0 grid-bg opacity-10 pointer-events-none" /> |
| 12 | + |
| 13 | + <SectionContainer className="text-center relative z-10"> |
| 14 | + <div className="flex justify-center mb-12"> |
| 15 | + <motion.div |
| 16 | + animate={{ |
| 17 | + y: [0, -20, 0], |
| 18 | + rotate: [0, 5, -5, 0] |
| 19 | + }} |
| 20 | + transition={{ duration: 4, repeat: Infinity, ease: "easeInOut" }} |
| 21 | + className="relative w-24 h-24 flex items-center justify-center rounded-3xl bg-purple-500/10 border border-purple-500/20 shadow-2xl" |
| 22 | + > |
| 23 | + <Rocket className="text-purple-500 fill-purple-500/20" size={48} /> |
17 | 24 | </motion.div> |
18 | 25 | </div> |
19 | 26 |
|
20 | | - {/* Slang-heavy Copy */} |
21 | | - <motion.div |
22 | | - initial={{ y: 20, opacity: 0 }} |
23 | | - animate={{ y: 0, opacity: 1 }} |
24 | | - transition={{ delay: 0.2 }} |
25 | | - className="mt-4 space-y-2" |
26 | | - > |
27 | | - <h2 className="text-2xl font-bold uppercase tracking-widest text-yellow-400 md:text-4xl"> |
28 | | - Vibe Check: Failed. |
29 | | - </h2> |
30 | | - <p className="max-w-md text-sm font-medium text-zinc-400 md:text-lg"> |
31 | | - This page is <span className="text-zinc-100 italic">cooked</span>. Either it never existed, or it's currently touching grass. |
32 | | - </p> |
33 | | - </motion.div> |
34 | | - |
35 | | - {/* Interactive "Back" Button - Neo-Brutalist Style */} |
36 | | - <motion.div |
37 | | - whileHover={{ scale: 1.05 }} |
38 | | - whileTap={{ scale: 0.95 }} |
39 | | - className="mt-12" |
40 | | - > |
41 | | - <Link |
42 | | - href="/" |
43 | | - className="group relative flex items-center gap-3 border-2 border-white bg-white px-8 py-4 font-black text-black transition-colors hover:bg-transparent hover:text-white" |
44 | | - > |
45 | | - <MoveLeft className="transition-transform group-hover:-translate-x-2" /> |
46 | | - GO HOME OR WHATEVER |
47 | | - {/* Box Shadow "Pop" - Signature Neo-Brutalist look */} |
48 | | - <div className="absolute -right-2 -bottom-2 -z-10 h-full w-full border-2 border-purple-500 bg-purple-500 transition-transform group-hover:translate-x-1 group-hover:translate-y-1"></div> |
49 | | - </Link> |
50 | | - </motion.div> |
| 27 | + <div className="relative"> |
| 28 | + <h1 className="hero-title mb-6 text-8xl font-black italic tracking-tighter md:text-[12rem] leading-none uppercase text-white opacity-10 select-none"> |
| 29 | + 404 |
| 30 | + </h1> |
| 31 | + |
| 32 | + <div className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-full"> |
| 33 | + <h2 className="text-4xl md:text-6xl font-black uppercase italic tracking-tighter text-white mb-8"> |
| 34 | + LOST IN THE <br /> <span className="text-purple-600">SIMULATION.</span> |
| 35 | + </h2> |
| 36 | + <p className="mx-auto max-w-md text-sm md:text-lg font-bold uppercase tracking-widest text-zinc-500 mb-12"> |
| 37 | + THE PAGE YOU'RE LOOKING FOR HAS BEEN DE-RESSED. RETURN TO BASE. |
| 38 | + </p> |
| 39 | + |
| 40 | + <Link |
| 41 | + href="/" |
| 42 | + className="inline-flex items-center gap-3 px-10 py-5 bg-white text-black font-black uppercase tracking-widest rounded-2xl transition-all hover:scale-105 shadow-2xl shadow-white/10" |
| 43 | + > |
| 44 | + <MoveLeft size={20} /> RETURN HOME |
| 45 | + </Link> |
| 46 | + </div> |
| 47 | + </div> |
51 | 48 |
|
52 | | - {/* Bottom "Status" Bar */} |
53 | | - <div className="mt-24 flex items-center gap-4 text-xs font-mono uppercase tracking-tighter text-zinc-500"> |
54 | | - <span className="flex items-center gap-1"> |
55 | | - <AlertCircle size={14} /> status: delulu |
| 49 | + {/* Status bar */} |
| 50 | + <div className="mt-32 flex items-center justify-center gap-6 text-[10px] font-black uppercase tracking-[0.2em] text-zinc-700"> |
| 51 | + <span className="flex items-center gap-2"> |
| 52 | + <AlertCircle size={14} /> STATUS: UNKNOWN_VOID |
56 | 53 | </span> |
57 | | - <span className="h-1 w-1 rounded-full bg-zinc-700"></span> |
58 | | - <span>loc: unknown_void</span> |
59 | | - <span className="h-1 w-1 rounded-full bg-zinc-700"></span> |
60 | | - <span>rizz: 0</span> |
| 54 | + <div className="w-1 h-1 rounded-full bg-zinc-800" /> |
| 55 | + <span>FREQ: 404.0 MHZ</span> |
61 | 56 | </div> |
62 | | - </div> |
| 57 | + </SectionContainer> |
63 | 58 | </main> |
64 | 59 | ); |
65 | 60 | } |
0 commit comments