cosimotaiuti commited on
Commit
2a6d2b0
·
verified ·
1 Parent(s): 08ade65

Upload 70 files

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +1 -0
  2. static/.DS_Store +0 -0
  3. static/assets/.DS_Store +0 -0
  4. static/assets/css/game-style.css +564 -0
  5. static/assets/css/index-style.css +446 -0
  6. static/assets/fonts/horrorbrush.ttf +0 -0
  7. static/assets/img/.DS_Store +0 -0
  8. static/assets/img/appartment/.DS_Store +0 -0
  9. static/assets/img/appartment/BaseMap.PNG +0 -0
  10. static/assets/img/appartment/BedroomDoorLocked.PNG +0 -0
  11. static/assets/img/appartment/BedroomDoorUnlocked.PNG +0 -0
  12. static/assets/img/appartment/BookcaseSearchable.PNG +0 -0
  13. static/assets/img/appartment/BookcaseUnusuable.PNG +0 -0
  14. static/assets/img/appartment/BookcaseUsable.PNG +0 -0
  15. static/assets/img/appartment/CabinetSearchable.PNG +0 -0
  16. static/assets/img/appartment/CabinetUnsearchable.PNG +0 -0
  17. static/assets/img/appartment/CoffeeTableUnusable.PNG +0 -0
  18. static/assets/img/appartment/CoffeeTableUsable.PNG +0 -0
  19. static/assets/img/appartment/DeadBodyUnusable.PNG +0 -0
  20. static/assets/img/appartment/DeadBodyUsable.PNG +0 -0
  21. static/assets/img/appartment/DeskSearchable.PNG +0 -0
  22. static/assets/img/appartment/DeskUnsearchable.PNG +0 -0
  23. static/assets/img/appartment/DresserSearchable.PNG +0 -0
  24. static/assets/img/appartment/DresserUnsearchable.PNG +0 -0
  25. static/assets/img/appartment/FinalMap.PNG +0 -0
  26. static/assets/img/appartment/FridgeSearchable.PNG +0 -0
  27. static/assets/img/appartment/FridgeUnsearchable.PNG +0 -0
  28. static/assets/img/appartment/GeneratorOff.PNG +0 -0
  29. static/assets/img/appartment/GeneratorOn.PNG +0 -0
  30. static/assets/img/appartment/MainEntranceOpen.PNG +0 -0
  31. static/assets/img/appartment/StorageLocked.png +0 -0
  32. static/assets/img/appartment/StorageUnlocked.png +0 -0
  33. static/assets/img/appartment/StoveSearchable.PNG +0 -0
  34. static/assets/img/appartment/StoveUnsearchable.PNG +0 -0
  35. static/assets/img/appartment/TVUnused.PNG +0 -0
  36. static/assets/img/appartment/TVUsed.PNG +0 -0
  37. static/assets/img/appartment/TheExit.png +0 -0
  38. static/assets/img/blood-2.png +0 -0
  39. static/assets/img/clown.PNG +0 -0
  40. static/assets/img/gf.png +0 -0
  41. static/assets/img/hand.png +0 -0
  42. static/assets/img/help.png +0 -0
  43. static/assets/img/logo.png +0 -0
  44. static/assets/img/perso.png +0 -0
  45. static/assets/img/phone.png +0 -0
  46. static/assets/img/sondon.png +0 -0
  47. static/assets/img/soundoff.png +0 -0
  48. static/assets/img/splatter.png +0 -0
  49. static/assets/img/vite.svg +1 -0
  50. static/assets/sounds/message.wav +0 -0
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ static/assets/sounds/music.mp3 filter=lfs diff=lfs merge=lfs -text
static/.DS_Store ADDED
Binary file (6.15 kB). View file
 
static/assets/.DS_Store ADDED
Binary file (8.2 kB). View file
 
static/assets/css/game-style.css ADDED
@@ -0,0 +1,564 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Layout */
2
+ body {
3
+ margin: 0;
4
+ font-family: Arial, sans-serif;
5
+ display: flex;
6
+ background-color: #220a0a;
7
+ height: 100vh;
8
+ position: relative;
9
+ overflow: hidden;
10
+ }
11
+
12
+ #gameContainer {
13
+ display: flex;
14
+ width: 100%;
15
+ height: 100vh;
16
+ overflow: auto;
17
+ position: relative;
18
+ z-index: 1;
19
+ align-items: center;
20
+ }
21
+
22
+ #mapSection {
23
+ flex: 1;
24
+ min-width: 600px;
25
+ width: fit-content;
26
+ position: relative;
27
+ display: flex;
28
+ flex-direction: column;
29
+ justify-content: center;
30
+ align-items: center;
31
+ overflow: auto;
32
+ z-index: 2;
33
+ padding: 20px;
34
+ }
35
+
36
+ /* We'll place the P5 canvas in here */
37
+ .map-wrapper {
38
+ margin: 20px;
39
+ transform-origin: center center;
40
+ min-width: min-content;
41
+ }
42
+
43
+ #chatSection {
44
+ width: 100%;
45
+ height: 100%;
46
+ display: flex;
47
+ flex-direction: column;
48
+ background: #000000;
49
+ border-radius: 38px;
50
+ overflow: hidden;
51
+ }
52
+
53
+ #chatHistory {
54
+ flex: 1;
55
+ overflow-y: auto;
56
+ padding: 16px;
57
+ background: #f8f8fa;
58
+ }
59
+
60
+ /* Style moderne pour la barre de scroll */
61
+ #chatHistory::-webkit-scrollbar {
62
+ width: 6px;
63
+ }
64
+
65
+ #chatHistory::-webkit-scrollbar-track {
66
+ background: transparent;
67
+ }
68
+
69
+ #chatHistory::-webkit-scrollbar-thumb {
70
+ background: #d1d1d6;
71
+ border-radius: 3px;
72
+ }
73
+
74
+ #chatControls {
75
+ padding: 16px;
76
+ background: #ffffff;
77
+ display: flex;
78
+ gap: 12px;
79
+ border-top: 1px solid #f1f1f5;
80
+ }
81
+
82
+ .chat-message {
83
+ padding: 12px 16px;
84
+ margin: 6px 0;
85
+ border-radius: 20px;
86
+ max-width: 75%;
87
+ font-size: 0.95em;
88
+ line-height: 1.4;
89
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
90
+ }
91
+
92
+ .user-message {
93
+ background: #007aff;
94
+ color: white;
95
+ margin-left: auto;
96
+ border-radius: 20px 20px 4px 20px;
97
+ }
98
+
99
+ .assistant-message {
100
+ background: #f1f1f5;
101
+ color: #000000;
102
+ margin-right: auto;
103
+ border-radius: 20px 20px 20px 4px;
104
+ }
105
+
106
+ input {
107
+ flex: 1;
108
+ padding: 12px 16px;
109
+ border: none;
110
+ border-radius: 20px;
111
+ font-family: inherit;
112
+ font-size: 0.95em;
113
+ background: #f1f1f5;
114
+ transition: background 0.2s;
115
+ }
116
+
117
+ input:focus {
118
+ outline: none;
119
+ background: #e5e5ea;
120
+ }
121
+
122
+ input::placeholder {
123
+ color: #8e8e93;
124
+ }
125
+
126
+ button {
127
+ padding: 8px;
128
+ width: 40px;
129
+ height: 40px;
130
+ background: #007aff;
131
+ color: white;
132
+ border: none;
133
+ border-radius: 20px;
134
+ cursor: pointer;
135
+ display: flex;
136
+ align-items: center;
137
+ justify-content: center;
138
+ transition: transform 0.2s, background 0.2s;
139
+ }
140
+
141
+ button:hover {
142
+ background: #0056b3;
143
+ transform: scale(1.05);
144
+ }
145
+
146
+ /* Style moderne pour l'indicateur de chargement */
147
+ .loading-dots {
148
+ display: inline-flex;
149
+ gap: 4px;
150
+ padding: 8px 12px;
151
+ background: #f1f1f5;
152
+ border-radius: 16px;
153
+ }
154
+
155
+ .dot {
156
+ width: 6px;
157
+ height: 6px;
158
+ background: #8e8e93;
159
+ border-radius: 50%;
160
+ animation: bounce 1.4s infinite ease-in-out;
161
+ }
162
+
163
+ .dot:nth-child(1) {
164
+ animation-delay: -0.32s;
165
+ }
166
+
167
+ .dot:nth-child(2) {
168
+ animation-delay: -0.16s;
169
+ }
170
+
171
+ @keyframes bounce {
172
+
173
+ 0%,
174
+ 80%,
175
+ 100% {
176
+ transform: scale(0);
177
+ }
178
+
179
+ 40% {
180
+ transform: scale(1);
181
+ }
182
+ }
183
+
184
+ /* Modal for API key (if needed) */
185
+ #apiKeyModal {
186
+ display: none;
187
+ position: fixed;
188
+ top: 0;
189
+ left: 0;
190
+ width: 100%;
191
+ height: 100%;
192
+ background: rgba(0, 0, 0, 0.5);
193
+ justify-content: center;
194
+ align-items: center;
195
+ }
196
+
197
+ .modal-content {
198
+ background: white;
199
+ padding: 20px;
200
+ border-radius: 8px;
201
+ width: 300px;
202
+ }
203
+
204
+ #apiKey {
205
+ width: 100%;
206
+ margin: 10px 0;
207
+ padding: 8px;
208
+ }
209
+
210
+ /* Modifier les styles du chat et du mockup */
211
+ .phone-mockup {
212
+ position: relative;
213
+ width: 400px;
214
+ height: 800px;
215
+ background: url("/static/assets/img/phone.png") no-repeat center;
216
+ background-size: contain;
217
+ display: flex;
218
+ justify-content: center;
219
+ align-items: center;
220
+ margin: auto;
221
+ padding: 35px 0;
222
+ flex-shrink: 0;
223
+ z-index: 2;
224
+ }
225
+
226
+ .phone-screen {
227
+ width: 90%;
228
+ height: 96.5%;
229
+ position: relative;
230
+ overflow: hidden;
231
+ margin: 0;
232
+ border-radius: 40px;
233
+ display: flex;
234
+ flex-direction: column;
235
+ }
236
+
237
+ /* Update media queries for better responsiveness */
238
+ @media (max-height: 900px) {
239
+ .phone-mockup {
240
+ width: 350px;
241
+ height: 700px;
242
+ }
243
+ }
244
+
245
+ @media (max-height: 700px) {
246
+ .phone-mockup {
247
+ width: 300px;
248
+ height: 600px;
249
+ }
250
+ }
251
+
252
+ @media (max-width: 1200px) {
253
+ #mapSection {
254
+ flex: none;
255
+ width: fit-content;
256
+ }
257
+ }
258
+
259
+ @media (max-width: 900px) {
260
+ #mapSection {
261
+ flex: none;
262
+ width: fit-content;
263
+ }
264
+ .phone-mockup {
265
+ min-width: 280px;
266
+ }
267
+ }
268
+
269
+ /* Ajouter les nouveaux styles pour l'en-tête du chat */
270
+ #chatHeader {
271
+ padding: 16px;
272
+ justify-content: center;
273
+ background: #ffffff;
274
+ border-bottom: 1px solid #f1f1f5;
275
+ display: flex;
276
+ align-items: center;
277
+ gap: 12px;
278
+ }
279
+
280
+ .profile-picture {
281
+ width: 40px;
282
+ height: 40px;
283
+ border-radius: 50%;
284
+ background: #f1f1f5;
285
+ display: flex;
286
+ align-items: center;
287
+ justify-content: center;
288
+ }
289
+
290
+ .chat-name {
291
+ font-size: 1.1em;
292
+ font-weight: 600;
293
+ color: #000000;
294
+ }
295
+
296
+ /* LED Bar */
297
+ .led-bar {
298
+ position: fixed;
299
+ top: 0;
300
+ left: 0;
301
+ width: 100%;
302
+ height: 2px;
303
+ background: linear-gradient(90deg,
304
+ transparent 0%,
305
+ rgba(255, 0, 0, 0.4) 20%,
306
+ rgba(255, 0, 0, 0.8) 35%,
307
+ rgba(255, 50, 50, 1) 50%,
308
+ rgba(255, 0, 0, 0.8) 65%,
309
+ rgba(255, 0, 0, 0.4) 80%,
310
+ transparent 100%);
311
+ z-index: 100;
312
+ animation: ledFlicker 4s infinite, ledPulse 10s infinite;
313
+ box-shadow: 0 0 20px rgba(255, 0, 0, 0.7),
314
+ 0 0 35px rgba(255, 0, 0, 0.5),
315
+ 0 0 50px rgba(255, 0, 0, 0.4),
316
+ 0 0 70px rgba(155, 0, 0, 0.3);
317
+ filter: blur(0.6px);
318
+ }
319
+
320
+ .light-beam {
321
+ position: absolute;
322
+ top: 0;
323
+ left: 0;
324
+ width: 100%;
325
+ height: 250px;
326
+ background: linear-gradient(180deg,
327
+ rgba(255, 0, 0, 0.3) 0%,
328
+ rgba(255, 0, 0, 0.2) 20%,
329
+ rgba(255, 0, 0, 0.15) 30%,
330
+ rgba(155, 0, 0, 0.08) 60%,
331
+ transparent 100%);
332
+ animation: beamFlicker 4s infinite;
333
+ pointer-events: none;
334
+ filter: blur(2px);
335
+ }
336
+
337
+ @keyframes ledFlicker {
338
+ 0% {
339
+ opacity: 1;
340
+ }
341
+
342
+ 95% {
343
+ opacity: 1;
344
+ }
345
+
346
+ 96% {
347
+ opacity: 0.3;
348
+ }
349
+
350
+ 97% {
351
+ opacity: 1;
352
+ }
353
+
354
+ 98% {
355
+ opacity: 0.2;
356
+ }
357
+
358
+ 99% {
359
+ opacity: 0.9;
360
+ }
361
+
362
+ 100% {
363
+ opacity: 1;
364
+ }
365
+ }
366
+
367
+ @keyframes ledPulse {
368
+ 0% {
369
+ filter: brightness(1) blur(0.6px);
370
+ }
371
+
372
+ 50% {
373
+ filter: brightness(1.3) blur(0.4px);
374
+ }
375
+
376
+ 100% {
377
+ filter: brightness(1) blur(0.6px);
378
+ }
379
+ }
380
+
381
+ @keyframes beamFlicker {
382
+ 0% {
383
+ opacity: 0.7;
384
+ }
385
+
386
+ 95% {
387
+ opacity: 0.7;
388
+ }
389
+
390
+ 96% {
391
+ opacity: 0.2;
392
+ }
393
+
394
+ 97% {
395
+ opacity: 0.7;
396
+ }
397
+
398
+ 98% {
399
+ opacity: 0.1;
400
+ }
401
+
402
+ 99% {
403
+ opacity: 0.6;
404
+ }
405
+
406
+ 100% {
407
+ opacity: 0.7;
408
+ }
409
+ }
410
+
411
+ /* Background Elements */
412
+ .background-elements {
413
+ position: fixed;
414
+ top: 0;
415
+ left: 0;
416
+ width: 100%;
417
+ height: 100%;
418
+ pointer-events: none;
419
+ z-index: 1;
420
+ }
421
+
422
+ .blood {
423
+ position: absolute;
424
+ top: 94%;
425
+ opacity: 0.6;
426
+ transform: rotate(20deg);
427
+ right: 10%;
428
+ }
429
+
430
+ .blood-top-left {
431
+ top: 0;
432
+ left: 0;
433
+ width: 300px;
434
+ }
435
+
436
+ .blood-top-right {
437
+ top: 0;
438
+ right: 0;
439
+ width: 200px;
440
+ transform: rotate(20deg);
441
+ }
442
+
443
+ .splatter {
444
+ bottom: 20%;
445
+ left: 10%;
446
+ width: 200px;
447
+ }
448
+
449
+ .blood-bottom-right {
450
+ bottom: 0;
451
+ right: 0;
452
+ position: absolute;
453
+ top: 90%;
454
+ left: 90%;
455
+ width: 200px;
456
+ }
457
+
458
+ /* Sound button styles */
459
+ .sound-button {
460
+ position: fixed;
461
+ bottom: 20px;
462
+ left: 20px;
463
+ width: 100px;
464
+ height: 100px;
465
+ cursor: pointer;
466
+ z-index: 1000;
467
+ transition: transform 0.2s ease;
468
+ }
469
+
470
+ .sound-button:hover {
471
+ transform: scale(1.1);
472
+ }
473
+
474
+ .sound-button img {
475
+ width: 100%;
476
+ height: 100%;
477
+ object-fit: contain;
478
+ }
479
+
480
+ /* Update button styles */
481
+ button {
482
+ padding: 8px;
483
+ width: 40px;
484
+ height: 40px;
485
+ background: #007aff;
486
+ color: white;
487
+ border: none;
488
+ border-radius: 10px;
489
+ cursor: pointer;
490
+ display: flex;
491
+ align-items: center;
492
+ justify-content: center;
493
+ transition: transform 0.2s, background 0.2s;
494
+ }
495
+
496
+ button img {
497
+ width: 15px;
498
+ height: 15px;
499
+ color: #ffffff;
500
+ }
501
+
502
+ .numpad-overlay {
503
+ position: fixed;
504
+ top: 50%;
505
+ right: 52%;
506
+ transform: translateY(-50%);
507
+ background: rgba(0, 0, 0, 0.9);
508
+ padding: 20px;
509
+ border-radius: 10px;
510
+ z-index: 1000;
511
+ }
512
+
513
+ .hidden {
514
+ display: none;
515
+ }
516
+
517
+ .toggle-numpad {
518
+ position: fixed;
519
+ top: 20px;
520
+ right: 20px;
521
+ padding: 10px 15px;
522
+ font-size: 20px;
523
+ background: #333;
524
+ color: white;
525
+ border: none;
526
+ border-radius: 5px;
527
+ cursor: pointer;
528
+ z-index: 1001;
529
+ }
530
+
531
+ .numpad-grid {
532
+ display: grid;
533
+ grid-template-columns: repeat(3, 1fr);
534
+ gap: 8px;
535
+ max-width: 300px;
536
+ margin: 10px auto;
537
+ }
538
+
539
+ .numpad-key {
540
+ padding: 25px;
541
+ font-size: 27px;
542
+ border: 1px solid #444;
543
+ background: #333;
544
+ color: white;
545
+ cursor: pointer;
546
+ border-radius: 5px;
547
+ }
548
+
549
+ .numpad-key:hover {
550
+ background: #444;
551
+ }
552
+
553
+ .numpad-display {
554
+ text-align: center;
555
+ font-size: 24px;
556
+ margin: 10px;
557
+ letter-spacing: 5px;
558
+ color: white;
559
+ }
560
+
561
+ /* Update input styles */
562
+ input {
563
+ border-radius: 10px;
564
+ }
static/assets/css/index-style.css ADDED
@@ -0,0 +1,446 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @font-face {
2
+ font-family: "HorrorBrush";
3
+ src: url("/static/assets/fonts/horrorbrush.ttf") format("truetype");
4
+ }
5
+
6
+ * {
7
+ margin: 0;
8
+ padding: 0;
9
+ box-sizing: border-box;
10
+ }
11
+
12
+ body {
13
+ background-color: #000000;
14
+ min-height: 100vh;
15
+ display: flex;
16
+ flex-direction: column;
17
+ align-items: center;
18
+ position: relative;
19
+ overflow: hidden;
20
+ }
21
+
22
+ .background-elements {
23
+ position: absolute;
24
+ width: 100%;
25
+ height: 100%;
26
+ pointer-events: none;
27
+ }
28
+
29
+ .blood {
30
+ position: absolute;
31
+ }
32
+
33
+ .blood-top-left {
34
+ top: 0;
35
+ left: 0;
36
+ width: 350px;
37
+ opacity: 50%;
38
+ }
39
+
40
+ .blood-bottom-right {
41
+ bottom: 0;
42
+ right: 0;
43
+ width: 250px;
44
+ position: absolute;
45
+ bottom: -120px;
46
+ right: -50px;
47
+ opacity: 40%;
48
+ }
49
+
50
+ .blood-top-right {
51
+ position: absolute;
52
+ top: 0;
53
+ right: 0;
54
+ width: 250px;
55
+ margin: 20px 20px 0px 0px;
56
+ transform: rotate(30deg);
57
+ }
58
+
59
+ .splatter {
60
+ position: absolute;
61
+ opacity: 60%;
62
+ bottom: 240px;
63
+ left: 30%;
64
+ transform: translateX(-50%);
65
+ transform: rotate(20deg);
66
+ width: 400px;
67
+ }
68
+
69
+ main {
70
+ display: flex;
71
+ flex-direction: column;
72
+ align-items: center;
73
+ gap: 100px;
74
+ z-index: 1;
75
+ margin-top: 200px;
76
+ }
77
+
78
+ .logo {
79
+ position: absolute;
80
+ top: 40px;
81
+ left: 50%;
82
+ transform: translateX(-50%);
83
+ animation: flicker 4s linear infinite;
84
+ }
85
+
86
+ .logo img {
87
+ width: 230px;
88
+ height: auto;
89
+ }
90
+
91
+ .menu {
92
+ display: flex;
93
+ flex-direction: column;
94
+ gap: 30px;
95
+ align-items: center;
96
+ position: relative;
97
+ }
98
+
99
+ .menu::after {
100
+ content: "";
101
+ position: absolute;
102
+ width: 800px;
103
+ height: 800px;
104
+ background: radial-gradient(
105
+ circle,
106
+ rgba(155, 0, 0, 0.35) 0%,
107
+ rgba(0, 0, 0, 0) 70%
108
+ );
109
+ z-index: -1;
110
+ top: 50%;
111
+ left: 50%;
112
+ transform: translate(-50%, -50%);
113
+ }
114
+
115
+ .menu-item {
116
+ font-family: "HorrorBrush", cursive;
117
+ font-size: 48px;
118
+ color: #fff;
119
+ text-decoration: none;
120
+ transition: color 0.3s ease;
121
+ letter-spacing: 4px;
122
+ text-transform: uppercase;
123
+ }
124
+
125
+ .new-game {
126
+ color: #9b0000;
127
+ }
128
+
129
+ .menu-item:hover {
130
+ color: #9b0000;
131
+ }
132
+
133
+ .how-to-play:hover {
134
+ color: #9b0000;
135
+ }
136
+
137
+ .level-maker:hover {
138
+ color: #9b0000;
139
+ }
140
+
141
+ @keyframes flicker {
142
+ 0% {
143
+ opacity: 1;
144
+ }
145
+ 5% {
146
+ opacity: 0.9;
147
+ }
148
+ 10% {
149
+ opacity: 1;
150
+ }
151
+ 15% {
152
+ opacity: 0.4;
153
+ }
154
+ 16% {
155
+ opacity: 1;
156
+ }
157
+ 17% {
158
+ opacity: 0.4;
159
+ }
160
+ 18% {
161
+ opacity: 1;
162
+ }
163
+ 35% {
164
+ opacity: 1;
165
+ }
166
+ 36% {
167
+ opacity: 0.3;
168
+ }
169
+ 37% {
170
+ opacity: 1;
171
+ }
172
+ 38% {
173
+ opacity: 0.5;
174
+ }
175
+ 39% {
176
+ opacity: 1;
177
+ }
178
+ 50% {
179
+ opacity: 1;
180
+ }
181
+ 51% {
182
+ opacity: 0.7;
183
+ }
184
+ 52% {
185
+ opacity: 1;
186
+ }
187
+ 53% {
188
+ opacity: 0.4;
189
+ }
190
+ 54% {
191
+ opacity: 1;
192
+ }
193
+ 85% {
194
+ opacity: 1;
195
+ }
196
+ 86% {
197
+ opacity: 0.6;
198
+ }
199
+ 87% {
200
+ opacity: 1;
201
+ }
202
+ 88% {
203
+ opacity: 0.4;
204
+ }
205
+ 89% {
206
+ opacity: 1;
207
+ }
208
+ 100% {
209
+ opacity: 1;
210
+ }
211
+ }
212
+
213
+ .led-bar {
214
+ position: fixed;
215
+ top: 0;
216
+ left: 0;
217
+ width: 100%;
218
+ height: 2px;
219
+ background: linear-gradient(
220
+ 90deg,
221
+ transparent 0%,
222
+ rgba(255, 0, 0, 0.4) 20%,
223
+ rgba(255, 0, 0, 0.8) 35%,
224
+ rgba(255, 50, 50, 1) 50%,
225
+ rgba(255, 0, 0, 0.8) 65%,
226
+ rgba(255, 0, 0, 0.4) 80%,
227
+ transparent 100%
228
+ );
229
+ z-index: 100;
230
+ animation: ledFlicker 4s infinite, ledPulse 10s infinite;
231
+ box-shadow: 0 0 20px rgba(255, 0, 0, 0.7), 0 0 35px rgba(255, 0, 0, 0.5),
232
+ 0 0 50px rgba(255, 0, 0, 0.4), 0 0 70px rgba(155, 0, 0, 0.3);
233
+ filter: blur(0.6px);
234
+ }
235
+
236
+ .light-beam {
237
+ position: absolute;
238
+ top: 0;
239
+ left: 0;
240
+ width: 100%;
241
+ height: 250px;
242
+ background: linear-gradient(
243
+ 180deg,
244
+ rgba(255, 0, 0, 0.3) 0%,
245
+ rgba(255, 0, 0, 0.2) 20%,
246
+ rgba(255, 0, 0, 0.15) 30%,
247
+ rgba(155, 0, 0, 0.08) 60%,
248
+ transparent 100%
249
+ );
250
+ animation: beamFlicker 4s infinite;
251
+ pointer-events: none;
252
+ filter: blur(2px);
253
+ }
254
+
255
+ @keyframes ledFlicker {
256
+ 0% {
257
+ opacity: 1;
258
+ }
259
+ 95% {
260
+ opacity: 1;
261
+ }
262
+ 96% {
263
+ opacity: 0.3;
264
+ }
265
+ 97% {
266
+ opacity: 1;
267
+ }
268
+ 98% {
269
+ opacity: 0.2;
270
+ }
271
+ 99% {
272
+ opacity: 0.9;
273
+ }
274
+ 100% {
275
+ opacity: 1;
276
+ }
277
+ }
278
+
279
+ @keyframes ledPulse {
280
+ 0% {
281
+ filter: brightness(1) blur(0.6px);
282
+ }
283
+ 50% {
284
+ filter: brightness(1.3) blur(0.4px);
285
+ }
286
+ 100% {
287
+ filter: brightness(1) blur(0.6px);
288
+ }
289
+ }
290
+
291
+ @keyframes beamFlicker {
292
+ 0% {
293
+ opacity: 0.7;
294
+ }
295
+ 95% {
296
+ opacity: 0.7;
297
+ }
298
+ 96% {
299
+ opacity: 0.2;
300
+ }
301
+ 97% {
302
+ opacity: 0.7;
303
+ }
304
+ 98% {
305
+ opacity: 0.1;
306
+ }
307
+ 99% {
308
+ opacity: 0.6;
309
+ }
310
+ 100% {
311
+ opacity: 0.7;
312
+ }
313
+ }
314
+
315
+ /* How to Play Page Styles */
316
+ .content {
317
+ color: #fff;
318
+ text-align: center;
319
+ max-width: 800px;
320
+ margin: 40px auto;
321
+ padding: 20px;
322
+ }
323
+
324
+ .content h1 {
325
+ font-family: "HorrorBrush", cursive;
326
+ font-size: 64px;
327
+ color: #9b0000;
328
+ position: absolute;
329
+ top: 40px;
330
+ left: 50%;
331
+ transform: translateX(-50%);
332
+ letter-spacing: 4px;
333
+ }
334
+
335
+ .back-button {
336
+ font-family: "HorrorBrush", cursive;
337
+ font-size: 36px;
338
+ color: #fff;
339
+ text-decoration: none;
340
+ transition: color 0.3s ease;
341
+ letter-spacing: 4px;
342
+ text-transform: uppercase;
343
+ position: absolute;
344
+ bottom: 40px;
345
+ left: 50%;
346
+ transform: translateX(-50%);
347
+ }
348
+
349
+ .back-button:hover {
350
+ color: #9b0000;
351
+ }
352
+
353
+ .character {
354
+ position: absolute;
355
+ bottom: -30px;
356
+ left: 50%;
357
+ transform: translateX(-50%);
358
+ z-index: 2;
359
+ animation: characterFlicker 6s infinite;
360
+ }
361
+
362
+ .character img {
363
+ width: 550px;
364
+ height: auto;
365
+ }
366
+
367
+ @keyframes characterFlicker {
368
+ 0% {
369
+ opacity: 1;
370
+ filter: brightness(1);
371
+ }
372
+ 42% {
373
+ opacity: 1;
374
+ filter: brightness(1);
375
+ }
376
+ 43% {
377
+ opacity: 0.8;
378
+ filter: brightness(1.2);
379
+ }
380
+ 44% {
381
+ opacity: 1;
382
+ filter: brightness(1);
383
+ }
384
+ 45% {
385
+ opacity: 0.6;
386
+ filter: brightness(1.3);
387
+ }
388
+ 46% {
389
+ opacity: 1;
390
+ filter: brightness(1);
391
+ }
392
+ 47% {
393
+ opacity: 0.2;
394
+ filter: brightness(1.5);
395
+ }
396
+ 48% {
397
+ opacity: 1;
398
+ filter: brightness(1);
399
+ }
400
+ 49% {
401
+ opacity: 0.4;
402
+ filter: brightness(1.2);
403
+ }
404
+ 50% {
405
+ opacity: 1;
406
+ filter: brightness(1);
407
+ }
408
+ 80% {
409
+ opacity: 1;
410
+ filter: brightness(1);
411
+ }
412
+ 81% {
413
+ opacity: 0.5;
414
+ filter: brightness(1.3);
415
+ }
416
+ 82% {
417
+ opacity: 1;
418
+ filter: brightness(1);
419
+ }
420
+ 100% {
421
+ opacity: 1;
422
+ filter: brightness(1);
423
+ }
424
+ }
425
+
426
+ /* Modifier les styles pour le bouton son */
427
+ .sound-button {
428
+ position: fixed;
429
+ bottom: 20px;
430
+ left: 20px;
431
+ width: 100px;
432
+ height: 100px;
433
+ cursor: pointer;
434
+ z-index: 1000;
435
+ transition: transform 0.2s ease;
436
+ }
437
+
438
+ .sound-button:hover {
439
+ transform: scale(1.1);
440
+ }
441
+
442
+ .sound-button img {
443
+ width: 100%;
444
+ height: 100%;
445
+ object-fit: contain;
446
+ }
static/assets/fonts/horrorbrush.ttf ADDED
Binary file (286 kB). View file
 
static/assets/img/.DS_Store ADDED
Binary file (10.2 kB). View file
 
static/assets/img/appartment/.DS_Store ADDED
Binary file (8.2 kB). View file
 
static/assets/img/appartment/BaseMap.PNG ADDED
static/assets/img/appartment/BedroomDoorLocked.PNG ADDED
static/assets/img/appartment/BedroomDoorUnlocked.PNG ADDED
static/assets/img/appartment/BookcaseSearchable.PNG ADDED
static/assets/img/appartment/BookcaseUnusuable.PNG ADDED
static/assets/img/appartment/BookcaseUsable.PNG ADDED
static/assets/img/appartment/CabinetSearchable.PNG ADDED
static/assets/img/appartment/CabinetUnsearchable.PNG ADDED
static/assets/img/appartment/CoffeeTableUnusable.PNG ADDED
static/assets/img/appartment/CoffeeTableUsable.PNG ADDED
static/assets/img/appartment/DeadBodyUnusable.PNG ADDED
static/assets/img/appartment/DeadBodyUsable.PNG ADDED
static/assets/img/appartment/DeskSearchable.PNG ADDED
static/assets/img/appartment/DeskUnsearchable.PNG ADDED
static/assets/img/appartment/DresserSearchable.PNG ADDED
static/assets/img/appartment/DresserUnsearchable.PNG ADDED
static/assets/img/appartment/FinalMap.PNG ADDED
static/assets/img/appartment/FridgeSearchable.PNG ADDED
static/assets/img/appartment/FridgeUnsearchable.PNG ADDED
static/assets/img/appartment/GeneratorOff.PNG ADDED
static/assets/img/appartment/GeneratorOn.PNG ADDED
static/assets/img/appartment/MainEntranceOpen.PNG ADDED
static/assets/img/appartment/StorageLocked.png ADDED
static/assets/img/appartment/StorageUnlocked.png ADDED
static/assets/img/appartment/StoveSearchable.PNG ADDED
static/assets/img/appartment/StoveUnsearchable.PNG ADDED
static/assets/img/appartment/TVUnused.PNG ADDED
static/assets/img/appartment/TVUsed.PNG ADDED
static/assets/img/appartment/TheExit.png ADDED
static/assets/img/blood-2.png ADDED
static/assets/img/clown.PNG ADDED
static/assets/img/gf.png ADDED
static/assets/img/hand.png ADDED
static/assets/img/help.png ADDED
static/assets/img/logo.png ADDED
static/assets/img/perso.png ADDED
static/assets/img/phone.png ADDED
static/assets/img/sondon.png ADDED
static/assets/img/soundoff.png ADDED
static/assets/img/splatter.png ADDED
static/assets/img/vite.svg ADDED
static/assets/sounds/message.wav ADDED
Binary file (113 kB). View file