Repository navigation
Expand file tree
/
Copy path404.html
More file actions
129 lines (126 loc) · 4.64 KB
/
Copy path404.html
File metadata and controls
129 lines (126 loc) · 4.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
<title>Page Not Found — Tommy Hoang Portfolio</title>
<meta name="description" content="The page you're looking for doesn't exist. Return to Tommy Hoang's portfolio to explore his work in quality engineering, mobile development, and published books.">
<meta name="robots" content="noindex, nofollow">
<link rel="canonical" href="https://thoangdev.github.io/">
<link rel="icon" type="image/x-icon" href="assets/favicon.ico">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700;800&display=swap" rel="stylesheet">
<style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
background: linear-gradient(135deg, #1e3a8a 0%, #2563eb 50%, #3b82f6 100%);
color: white;
margin: 0;
padding: 0;
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
-webkit-font-smoothing: antialiased;
}
.container {
max-width: 580px;
padding: 2rem 2rem calc(2rem + env(safe-area-inset-bottom, 0px));
}
.error-code {
font-size: clamp(5rem, 20vw, 8rem);
font-weight: 800;
letter-spacing: -4px;
line-height: 1;
opacity: 0.25;
margin-bottom: 0.5rem;
}
h1 {
font-size: clamp(1.5rem, 5vw, 2rem);
font-weight: 700;
margin-bottom: 1rem;
}
p {
font-size: 1rem;
line-height: 1.65;
opacity: 0.85;
margin-bottom: 2rem;
max-width: 440px;
margin-inline: auto;
}
.links {
display: flex;
flex-wrap: wrap;
gap: 0.75rem;
justify-content: center;
margin-bottom: 2.5rem;
}
.btn {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 10px 22px;
background: rgba(255, 255, 255, 0.15);
color: white;
text-decoration: none;
border-radius: 9999px;
font-size: 0.9rem;
font-weight: 600;
border: 1.5px solid rgba(255, 255, 255, 0.3);
transition: background 0.2s, border-color 0.2s, transform 0.2s;
}
.btn:hover {
background: rgba(255, 255, 255, 0.25);
border-color: rgba(255, 255, 255, 0.5);
transform: translateY(-2px);
}
.btn-primary {
background: rgba(255, 255, 255, 0.95);
color: #1e3a8a;
border-color: transparent;
}
.btn-primary:hover {
background: #fff;
color: #1e3a8a;
}
.contact-hint {
font-size: 0.85rem;
opacity: 0.65;
}
.contact-hint a {
color: white;
text-decoration: underline;
text-underline-offset: 3px;
}
.contact-hint a:hover { opacity: 1; }
</style>
</head>
<body>
<main class="container" id="main-content">
<div class="error-code" aria-hidden="true">404</div>
<h1>Page Not Found</h1>
<p>The page you're looking for doesn't exist or has been moved. Let's get you back to exploring quality engineering, mobile apps, and published books.</p>
<div class="links">
<a href="https://thoangdev.github.io/" class="btn btn-primary">← Back to Portfolio</a>
<a href="https://thoangdev.github.io/#projects" class="btn">View Projects</a>
<a href="https://thoangdev.github.io/#books" class="btn">Read My Books</a>
<a href="https://apercallc.com" class="btn" target="_blank" rel="noopener noreferrer">Aperca LLC ↗</a>
</div>
<p class="contact-hint">
Need help? Email <a href="mailto:hoangtommyquoc@gmail.com">hoangtommyquoc@gmail.com</a>
</p>
</main>
<script>
// Track 404 in GA4 if loaded
if (typeof gtag === 'function') {
gtag('event', 'page_view', {
page_title: '404 - Page Not Found',
page_location: window.location.href
});
}
</script>
</body>
</html>