3636 } ) ( ) ;
3737 </ script >
3838 < link rel ="icon " type ="image/png " href ="/images/Lavc.png ">
39- < link rel ="stylesheet " href ="/css/global.css ">
40- < link rel ="stylesheet " href ="/css/index.css ">
41- < link rel ="stylesheet " href ="/css/404.css ">
42- < script src ="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.2.6/gsap.min.js " defer > </ script >
39+ < style >
40+ : root {
41+ --clr-primary : # 00d1ff ;
42+ --bg : # 101114 ;
43+ --bg-elev : # 171a20 ;
44+ --text : # f3f7fb ;
45+ --text-muted : # c7d2df ;
46+ --line : rgba (0 , 209 , 255 , 0.22 );
47+ }
48+
49+ * {
50+ box-sizing : border-box;
51+ margin : 0 ;
52+ padding : 0 ;
53+ }
54+
55+ html ,
56+ body {
57+ min-height : 100% ;
58+ }
59+
60+ body {
61+ font-family : "Inter" , "Poppins" , "Segoe UI" , sans-serif;
62+ background : radial-gradient (1200px 700px at 80% -10% , rgba (0 , 209 , 255 , 0.12 ), transparent 60% ), var (--bg );
63+ color : var (--text );
64+ overflow-x : hidden;
65+ }
66+
67+ # all {
68+ min-height : 100vh ;
69+ position : relative;
70+ }
71+
72+ # navigation-content {
73+ position : fixed;
74+ inset : 0 ;
75+ z-index : 1000 ;
76+ display : flex;
77+ align-items : center;
78+ justify-content : center;
79+ flex-direction : column;
80+ background : rgba (5 , 8 , 12 , 0.96 );
81+ transform : translateY (-100% );
82+ transition : transform 0.24s ease;
83+ pointer-events : none;
84+ }
85+
86+ # navigation-content .is-open {
87+ transform : translateY (0 );
88+ pointer-events : auto;
89+ }
90+
91+ .navigation-links {
92+ display : flex;
93+ flex-direction : column;
94+ gap : 16px ;
95+ align-items : center;
96+ }
97+
98+ .navigation-links a {
99+ color : # e8f8ff ;
100+ text-decoration : none;
101+ letter-spacing : 0.04em ;
102+ font-size : clamp (1.35rem , 2.3vw , 1.9rem );
103+ opacity : 0.88 ;
104+ transition : opacity 0.2s ease, color 0.2s ease;
105+ }
106+
107+ .navigation-links a : hover {
108+ opacity : 1 ;
109+ color : var (--clr-primary );
110+ }
111+
112+ # navigation-bar {
113+ position : fixed;
114+ top : 0 ;
115+ left : 0 ;
116+ width : 100% ;
117+ height : 84px ;
118+ z-index : 1100 ;
119+ }
120+
121+ .menubar {
122+ position : absolute;
123+ top : 24px ;
124+ right : 26px ;
125+ cursor : pointer;
126+ padding : 8px ;
127+ opacity : 0.9 ;
128+ }
129+
130+ .menubar span {
131+ display : block;
132+ width : 38px ;
133+ height : 2px ;
134+ margin : 8px 0 ;
135+ border-radius : 2px ;
136+ background : transparent;
137+ position : relative;
138+ }
139+
140+ .menubar span ::before {
141+ content : "" ;
142+ position : absolute;
143+ top : 0 ;
144+ right : 0 ;
145+ height : 100% ;
146+ background : var (--clr-primary );
147+ border-radius : 2px ;
148+ }
149+
150+ .menubar .first-span ::before { width : 52% ; }
151+ .menubar .second-span ::before { width : 76% ; }
152+ .menubar .third-span ::before { width : 100% ; }
153+
154+ .menubar : hover .first-span ::before ,
155+ .menubar : hover .second-span ::before {
156+ width : 100% ;
157+ }
158+
159+ .error-page-main {
160+ min-height : 100vh ;
161+ display : flex;
162+ align-items : center;
163+ justify-content : center;
164+ padding : 100px 20px 40px ;
165+ }
166+
167+ .error-page-card {
168+ width : min (860px , 100% );
169+ text-align : center;
170+ padding : 40px 28px ;
171+ border : 1px solid var (--line );
172+ border-radius : 18px ;
173+ background : linear-gradient (180deg , rgba (255 , 255 , 255 , 0.03 ), rgba (255 , 255 , 255 , 0.01 )), var (--bg-elev );
174+ box-shadow : 0 20px 60px rgba (0 , 0 , 0 , 0.35 );
175+ }
176+
177+ .error-page-code {
178+ font-size : clamp (3.2rem , 8vw , 5.1rem );
179+ line-height : 1 ;
180+ color : var (--clr-primary );
181+ margin-bottom : 10px ;
182+ }
183+
184+ .error-page-title {
185+ font-size : clamp (1.6rem , 4.5vw , 2.5rem );
186+ margin-bottom : 14px ;
187+ }
188+
189+ .error-page-description {
190+ font-size : clamp (1rem , 2.5vw , 1.17rem );
191+ color : var (--text-muted );
192+ line-height : 1.7 ;
193+ margin-bottom : 24px ;
194+ }
195+
196+ .error-page-actions {
197+ display : flex;
198+ flex-wrap : wrap;
199+ gap : 12px ;
200+ justify-content : center;
201+ margin-bottom : 16px ;
202+ }
203+
204+ .error-page-link {
205+ display : inline-flex;
206+ align-items : center;
207+ justify-content : center;
208+ border-radius : 9px ;
209+ text-decoration : none;
210+ font-weight : 600 ;
211+ padding : 11px 18px ;
212+ transition : transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
213+ }
214+
215+ .error-page-link-primary {
216+ background : var (--clr-primary );
217+ color : # 04202a ;
218+ }
219+
220+ .error-page-link-secondary {
221+ border : 1px solid var (--clr-primary );
222+ color : var (--clr-primary );
223+ background : rgba (0 , 209 , 255 , 0.08 );
224+ }
225+
226+ .error-page-link : hover {
227+ transform : translateY (-1px );
228+ box-shadow : 0 8px 22px rgba (0 , 209 , 255 , 0.18 );
229+ }
230+
231+ .error-page-help {
232+ color : # 99a9bb ;
233+ font-size : 0.96rem ;
234+ }
235+
236+ .error-page-social {
237+ display : flex;
238+ flex-wrap : wrap;
239+ justify-content : center;
240+ gap : 10px ;
241+ margin : 4px 0 18px ;
242+ }
243+
244+ .error-page-social-link {
245+ display : inline-flex;
246+ align-items : center;
247+ justify-content : center;
248+ min-width : 110px ;
249+ padding : 9px 12px ;
250+ border : 1px solid rgba (0 , 209 , 255 , 0.45 );
251+ border-radius : 8px ;
252+ color : # cfefff ;
253+ text-decoration : none;
254+ font-weight : 600 ;
255+ font-size : 0.93rem ;
256+ background : rgba (0 , 209 , 255 , 0.08 );
257+ transition : transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
258+ }
259+
260+ .error-page-social-link : hover {
261+ transform : translateY (-1px );
262+ border-color : # 00d1ff ;
263+ box-shadow : 0 8px 20px rgba (0 , 209 , 255 , 0.18 );
264+ }
265+
266+ @media (max-width : 600px ) {
267+ .error-page-card {
268+ padding : 28px 18px ;
269+ }
270+
271+ .menubar {
272+ right : 14px ;
273+ top : 15px ;
274+ }
275+ }
276+ </ style >
43277</ head >
44278< body >
45279 < div id ="all ">
@@ -65,13 +299,51 @@ <h2 class="error-page-title">Page Not Found</h2>
65299 < p class ="error-page-description "> The page you are looking for may have been removed, had its name changed, or is temporarily unavailable. Return to the portfolio to explore systems architecture, API integration, and intelligent automation solutions.</ p >
66300 < div class ="error-page-actions ">
67301 < a href ="/index.html " class ="error-page-link error-page-link-primary "> Back to Home</ a >
302+ < a href ="/about/ " class ="error-page-link error-page-link-secondary "> About</ a >
68303 < a href ="/projects/ " class ="error-page-link error-page-link-secondary "> View Projects</ a >
69304 </ div >
305+ < div class ="error-page-social " aria-label ="Contact links ">
306+ < a class ="error-page-social-link " href ="https://github.com/PkLavc " target ="_blank " rel ="noopener noreferrer "> GitHub</ a >
307+ < a class ="error-page-social-link " href ="https://www.linkedin.com/in/patrickajm/ " target ="_blank " rel ="noopener noreferrer "> LinkedIn</ a >
308+ < a class ="error-page-social-link " href ="mailto:patrickajm@gmail.com "> Email</ a >
309+ </ div >
70310 < p class ="error-page-help "> If you entered the URL manually, please check the spelling and try again.</ p >
71311 </ section >
72312 </ main >
73313 </ div >
74- < script src ="/js/jquery.min.js " defer > </ script >
75- < script src ="/js/index.js " defer > </ script >
314+ < script >
315+ ( function ( ) {
316+ var nav = document . getElementById ( 'navigation-content' ) ;
317+ var menu = document . querySelector ( '.menubar' ) ;
318+
319+ if ( ! nav || ! menu ) {
320+ return ;
321+ }
322+
323+ function closeMenu ( ) {
324+ nav . classList . remove ( 'is-open' ) ;
325+ }
326+
327+ menu . addEventListener ( 'click' , function ( event ) {
328+ event . preventDefault ( ) ;
329+ event . stopPropagation ( ) ;
330+ nav . classList . toggle ( 'is-open' ) ;
331+ } ) ;
332+
333+ document . addEventListener ( 'click' , function ( event ) {
334+ if ( ! nav . classList . contains ( 'is-open' ) ) {
335+ return ;
336+ }
337+
338+ if ( ! nav . contains ( event . target ) && ! menu . contains ( event . target ) ) {
339+ closeMenu ( ) ;
340+ }
341+ } ) ;
342+
343+ nav . querySelectorAll ( 'a' ) . forEach ( function ( link ) {
344+ link . addEventListener ( 'click' , closeMenu ) ;
345+ } ) ;
346+ } ) ( ) ;
347+ </ script >
76348</ body >
77349</ html >
0 commit comments