1+ @import url ('https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;700;900&display=swap' );
2+
3+ html ,
4+ body {
5+ height : 100% ;
6+ }
7+
8+ body {
9+ font-family : 'Outfit' , sans-serif;
10+ background : var (--color-bg );
11+ color : var (--color-text );
12+ display : grid;
13+ place-items : center;
14+ margin : 0 ;
15+ min-height : 100dvh ;
16+ overflow-x : hidden;
17+ }
18+
19+ body ::before ,
20+ body ::after {
21+ content : '' ;
22+ position : fixed;
23+ inset : auto;
24+ width : 60vmin ;
25+ height : 60vmin ;
26+ border-radius : 50% ;
27+ filter : blur (80px );
28+ opacity : 0.25 ;
29+ pointer-events : none;
30+ z-index : 0 ;
31+ }
32+
33+ body ::before {
34+ top : -10vmin ;
35+ left : -10vmin ;
36+ background : radial-gradient (closest-side, rgba (220 , 38 , 38 , 0.35 ), transparent 70% );
37+ animation : float-a 18s ease-in-out infinite;
38+ }
39+
40+ body ::after {
41+ bottom : -12vmin ;
42+ right : -12vmin ;
43+ background : radial-gradient (closest-side, rgba (220 , 38 , 38 , 0.25 ), transparent 70% );
44+ animation : float-b 22s ease-in-out infinite;
45+ }
46+
47+ @keyframes float-a {
48+
49+ 0% ,
50+ 100% {
51+ transform : translate (0 , 0 ) scale (1 );
52+ }
53+
54+ 50% {
55+ transform : translate (30px , -30px ) scale (1.08 );
56+ }
57+ }
58+
59+ @keyframes float-b {
60+
61+ 0% ,
62+ 100% {
63+ transform : translate (0 , 0 ) scale (1 );
64+ }
65+
66+ 50% {
67+ transform : translate (-35px , 25px ) scale (1.06 );
68+ }
69+ }
70+
71+ .container {
72+ position : relative;
73+ z-index : 1 ;
74+ width : min (92vw , 680px );
75+ padding : 3rem 2rem ;
76+ text-align : center;
77+ background : var (--glass-bg );
78+ backdrop-filter : blur (var (--glass-blur ));
79+ -webkit-backdrop-filter : blur (var (--glass-blur ));
80+ border : 1px solid var (--glass-border );
81+ box-shadow : var (--glass-shadow );
82+ border-radius : 1.25rem ;
83+ animation : fadeInUp 0.7s ease-out both;
84+ }
85+
86+ @keyframes fadeInUp {
87+ from {
88+ opacity : 0 ;
89+ transform : translateY (16px );
90+ }
91+
92+ to {
93+ opacity : 1 ;
94+ transform : translateY (0 );
95+ }
96+ }
97+
98+ .logo {
99+ width : 96px ;
100+ height : 96px ;
101+ object-fit : contain;
102+ display : block;
103+ margin : 0 auto 1.25rem auto;
104+ filter : drop-shadow (0 0 12px rgba (220 , 38 , 38 , 0.35 ));
105+ }
106+
107+ h1 + .error-message ,
108+ .code-badge + h1 {
109+ margin-top : 0.5rem ;
110+ }
111+
112+ .code-badge {
113+ display : inline-block;
114+ margin : 0.25rem auto 0.25rem auto;
115+ padding : 0.35rem 0.65rem ;
116+ border-radius : 999px ;
117+ font-size : 0.75rem ;
118+ font-weight : 900 ;
119+ text-transform : uppercase;
120+ letter-spacing : 0.12em ;
121+ color : # fff ;
122+ background : rgba (220 , 38 , 38 , 0.15 );
123+ border : 1px solid var (--glass-border );
124+ box-shadow : 0 10px 25px rgba (220 , 38 , 38 , 0.15 );
125+ }
126+
127+ h1 {
128+ margin : 0 0 0.75rem 0 ;
129+ font-size : clamp (2rem , 4.5vw , 3rem );
130+ line-height : 1.05 ;
131+ font-weight : 900 ;
132+ letter-spacing : -0.02em ;
133+ background : linear-gradient (135deg , # fff, # c7c7c7 60% );
134+ -webkit-background-clip : text;
135+ background-clip : text;
136+ color : transparent;
137+ }
138+
139+ .error-message {
140+ margin : 0 auto 1.5rem auto;
141+ max-width : 48ch ;
142+ color : var (--color-text-muted );
143+ font-size : 1rem ;
144+ line-height : 1.6 ;
145+ }
146+
147+ .back-btn {
148+ display : inline-flex;
149+ align-items : center;
150+ justify-content : center;
151+ gap : 0.5rem ;
152+ padding : 0.9rem 1.35rem ;
153+ border-radius : 0.9rem ;
154+ font-weight : 800 ;
155+ letter-spacing : 0.02em ;
156+ text-decoration : none;
157+ background : # ffffff ;
158+ color : # 000000 ;
159+ border : 1px solid rgba (255 , 255 , 255 , 0.08 );
160+ box-shadow : 0 0 30px rgba (255 , 255 , 255 , 0.08 );
161+ transition : transform 0.2s ease, background-color 0.25s ease, color 0.25s ease, box-shadow 0.25s ease;
162+ }
163+
164+ .back-btn : hover {
165+ background : var (--color-primary );
166+ color : # ffffff ;
167+ transform : translateY (-2px ) scale (1.02 );
168+ box-shadow : 0 10px 30px rgba (220 , 38 , 38 , 0.35 );
169+ }
170+
171+ .back-btn : active {
172+ transform : translateY (0 ) scale (0.99 );
173+ }
174+
175+ @media (max-width : 480px ) {
176+ .container {
177+ padding : 2.25rem 1.5rem ;
178+ }
179+
180+ .logo {
181+ width : 84px ;
182+ height : 84px ;
183+ }
184+ }
0 commit comments