1@import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@400;700;900&family=Press+Start+2P&family=Inter:wght@400;600;700&display=swap');
2
3:root {
4 --bg-dark: #060713;
5 --panel-bg: rgba(12, 14, 33, 0.85);
6 --cyan: #00f3ff;
7 --pink: #ff007f;
8 --purple: #b500ff;
9 --yellow: #ffe600;
10 --green: #00ff66;
11 --orange: #ff6600;
12 --text-main: #f0f4ff;
13 --text-muted: #8a99b5;
14
15 --glow-cyan: 0 0 15px rgba(0, 243, 255, 0.5);
16 --glow-pink: 0 0 15px rgba(255, 0, 127, 0.5);
17 --glow-purple: 0 0 15px rgba(181, 0, 255, 0.5);
18 --glow-yellow: 0 0 15px rgba(255, 230, 0, 0.5);
19}
20
21* {
22 box-sizing: border-box;
23 margin: 0;
24 padding: 0;
25 user-select: none;
26}
27
28body {
29 background-color: var(--bg-dark);
30 background-image:
31 radial-gradient(circle at 50% 20%, rgba(181, 0, 255, 0.15) 0%, transparent 60%),
32 radial-gradient(circle at 80% 80%, rgba(0, 243, 255, 0.1) 0%, transparent 50%),
33 radial-gradient(circle at 10% 70%, rgba(255, 0, 127, 0.1) 0%, transparent 50%);
34 color: var(--text-main);
35 font-family: 'Inter', sans-serif;
36 min-height: 100vh;
37 display: flex;
38 flex-direction: column;
39 align-items: center;
40 justify-content: center;
41 padding: 1.5rem 1rem;
42 overflow-x: hidden;
43}
44
45
46body::before {
47 content: " ";
48 display: block;
49 position: fixed;
50 top: 0; left: 0; bottom: 0; right: 0;
51 background: linear-gradient(rgba(18, 16, 16, 0) 50%, rgba(0, 0, 0, 0.25) 50%);
52 background-size: 100% 4px;
53 z-index: 99;
54 pointer-events: none;
55 opacity: 0.6;
56}
57
58.game-wrapper {
59 display: flex;
60 flex-direction: column;
61 align-items: center;
62 width: 100%;
63 max-width: 860px;
64}
65
66
67header {
68 width: 100%;
69 display: flex;
70 justify-content: space-between;
71 align-items: center;
72 margin-bottom: 0.8rem;
73}
74
75.title-badge {
76 font-family: 'Press Start 2P', monospace;
77 font-size: 1.2rem;
78 color: var(--cyan);
79 text-shadow: var(--glow-cyan);
80 letter-spacing: 2px;
81 display: flex;
82 align-items: center;
83 gap: 0.5rem;
84}
85
86.title-badge span {
87 color: var(--pink);
88 text-shadow: var(--glow-pink);
89}
90
91.hud-panel {
92 width: 100%;
93 background: var(--panel-bg);
94 backdrop-filter: blur(12px);
95 border: 1px solid rgba(0, 243, 255, 0.25);
96 box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4), var(--glow-cyan);
97 border-radius: 12px;
98 padding: 0.75rem 1.25rem;
99 display: flex;
100 justify-content: space-between;
101 align-items: center;
102 margin-bottom: 0.8rem;
103}
104
105.hud-item {
106 display: flex;
107 flex-direction: column;
108 align-items: center;
109}
110
111.hud-label {
112 font-family: 'Orbitron', sans-serif;
113 font-size: 0.65rem;
114 letter-spacing: 1.5px;
115 color: var(--text-muted);
116 text-transform: uppercase;
117 margin-bottom: 2px;
118}
119
120.hud-value {
121 font-family: 'Press Start 2P', monospace;
122 font-size: 1.1rem;
123 color: var(--cyan);
124 text-shadow: var(--glow-cyan);
125}
126
127.hud-value.highlight {
128 color: var(--yellow);
129 text-shadow: var(--glow-yellow);
130}
131
132.lives-box {
133 display: flex;
134 gap: 0.4rem;
135}
136
137.life-icon {
138 font-size: 1.2rem;
139 transition: transform 0.2s ease, filter 0.2s ease;
140}
141
142.life-icon.active {
143 color: var(--yellow);
144 filter: drop-shadow(0 0 6px rgba(255, 230, 0, 0.8));
145}
146
147.life-icon.lost {
148 color: rgba(255, 255, 255, 0.15);
149 filter: none;
150}
151
152
153.btn-toggle {
154 background: rgba(0, 243, 255, 0.1);
155 border: 1px solid var(--cyan);
156 color: var(--cyan);
157 font-family: 'Orbitron', sans-serif;
158 font-size: 0.75rem;
159 font-weight: 700;
160 padding: 0.4rem 0.8rem;
161 border-radius: 6px;
162 cursor: pointer;
163 transition: all 0.2s ease;
164 box-shadow: 0 0 8px rgba(0, 243, 255, 0.2);
165}
166
167.btn-toggle:hover {
168 background: var(--cyan);
169 color: var(--bg-dark);
170 box-shadow: var(--glow-cyan);
171 transform: translateY(-1px);
172}
173
174.btn-toggle.muted {
175 border-color: var(--pink);
176 color: var(--pink);
177 background: rgba(255, 0, 127, 0.1);
178 box-shadow: 0 0 8px rgba(255, 0, 127, 0.2);
179}
180
181.btn-toggle.muted:hover {
182 background: var(--pink);
183 color: var(--bg-dark);
184 box-shadow: var(--glow-pink);
185}
186
187
188.canvas-container {
189 position: relative;
190 width: 800px;
191 height: 600px;
192 border-radius: 14px;
193 overflow: hidden;
194 border: 2px solid rgba(0, 243, 255, 0.4);
195 box-shadow: 0 10px 40px rgba(0, 0, 0, 0.6), 0 0 25px rgba(0, 243, 255, 0.25);
196 background: #08091a;
197}
198
199canvas {
200 width: 100%;
201 height: 100%;
202 display: block;
203}
204
205
206.overlay {
207 position: absolute;
208 top: 0; left: 0; right: 0; bottom: 0;
209 background: rgba(6, 7, 19, 0.85);
210 backdrop-filter: blur(10px);
211 display: flex;
212 flex-direction: column;
213 align-items: center;
214 justify-content: center;
215 padding: 2rem;
216 z-index: 10;
217 transition: opacity 0.3s ease, visibility 0.3s ease;
218}
219
220.overlay.hidden {
221 opacity: 0;
222 visibility: hidden;
223 pointer-events: none;
224}
225
226.overlay-title {
227 font-family: 'Press Start 2P', monospace;
228 font-size: 2.2rem;
229 color: var(--pink);
230 text-shadow: 0 0 20px rgba(255, 0, 127, 0.8);
231 margin-bottom: 1.5rem;
232 text-align: center;
233 animation: neonPulse 2s infinite alternate;
234}
235
236.overlay-title.cyan {
237 color: var(--cyan);
238 text-shadow: 0 0 20px rgba(0, 243, 255, 0.8);
239}
240
241@keyframes neonPulse {
242 0% { transform: scale(1); filter: brightness(1); }
243 100% { transform: scale(1.02); filter: brightness(1.2); }
244}
245
246.overlay-card {
247 background: rgba(18, 20, 48, 0.9);
248 border: 1px solid rgba(0, 243, 255, 0.3);
249 border-radius: 12px;
250 padding: 1.5rem;
251 width: 100%;
252 max-width: 480px;
253 box-shadow: 0 8px 30px rgba(0, 0, 0, 0.5);
254 margin-bottom: 1.5rem;
255}
256
257.stats-row {
258 display: flex;
259 justify-content: space-around;
260 margin-bottom: 1rem;
261}
262
263.stat-box {
264 display: flex;
265 flex-direction: column;
266 align-items: center;
267}
268
269.stat-label {
270 font-family: 'Orbitron', sans-serif;
271 font-size: 0.75rem;
272 color: var(--text-muted);
273 letter-spacing: 1px;
274}
275
276.stat-val {
277 font-family: 'Press Start 2P', monospace;
278 font-size: 1.4rem;
279 color: var(--cyan);
280 margin-top: 0.4rem;
281}
282
283.record-badge {
284 background: linear-gradient(135deg, var(--yellow), var(--orange));
285 color: #000;
286 font-family: 'Orbitron', sans-serif;
287 font-weight: 900;
288 font-size: 0.8rem;
289 letter-spacing: 1px;
290 padding: 0.3rem 0.8rem;
291 border-radius: 20px;
292 box-shadow: var(--glow-yellow);
293 text-align: center;
294 margin: 0.5rem auto;
295 display: inline-block;
296 animation: pulse 1s infinite alternate;
297}
298
299@keyframes pulse {
300 from { transform: scale(0.95); }
301 to { transform: scale(1.05); }
302}
303
304.controls-guide {
305 display: grid;
306 grid-template-columns: 1fr 1fr;
307 gap: 0.8rem;
308 font-size: 0.85rem;
309 color: var(--text-main);
310}
311
312.control-item {
313 display: flex;
314 align-items: center;
315 gap: 0.6rem;
316}
317
318.key-cap {
319 background: rgba(255, 255, 255, 0.1);
320 border: 1px solid rgba(255, 255, 255, 0.3);
321 box-shadow: 0 2px 0 rgba(255, 255, 255, 0.2);
322 border-radius: 4px;
323 padding: 0.2rem 0.5rem;
324 font-family: 'Orbitron', sans-serif;
325 font-size: 0.75rem;
326 font-weight: 700;
327 color: var(--cyan);
328}
329
330
331.btn-primary {
332 background: linear-gradient(135deg, var(--pink), var(--purple));
333 color: #fff;
334 border: none;
335 font-family: 'Press Start 2P', monospace;
336 font-size: 0.9rem;
337 padding: 0.9rem 2rem;
338 border-radius: 8px;
339 cursor: pointer;
340 transition: all 0.2s ease;
341 box-shadow: 0 4px 15px rgba(255, 0, 127, 0.4);
342 letter-spacing: 1px;
343}
344
345.btn-primary:hover {
346 transform: translateY(-2px) scale(1.03);
347 box-shadow: 0 6px 25px rgba(255, 0, 127, 0.7);
348}
349
350.btn-primary:active {
351 transform: translateY(1px);
352}
353
354
355footer {
356 margin-top: 1rem;
357 font-size: 0.8rem;
358 color: var(--text-muted);
359 text-align: center;
360 display: flex;
361 gap: 1.5rem;
362}
363
Discussion
No comments yet. Start the discussion. Recorded by @patrick-toulme.