mpasqua commited on
Commit
1452929
·
verified ·
1 Parent(s): 2a7fc34

Upload folder using huggingface_hub

Browse files
Files changed (1) hide show
  1. index.html +682 -19
index.html CHANGED
@@ -1,19 +1,682 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="it">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Marcos - La Lontra Spagnola</title>
7
+ <link href="https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,700;1,400&family=Lora:ital@0;1&family=Quicksand:wght@300;400;500;600&display=swap" rel="stylesheet">
8
+ <style>
9
+ :root {
10
+ --ocean-deep: #0a1628;
11
+ --ocean-mid: #1a3a5c;
12
+ --ocean-light: #2d5a87;
13
+ --seafoam: #7ec8e3;
14
+ --sand: #f4e4bc;
15
+ --coral: #ff6b6b;
16
+ --foam: rgba(255, 255, 255, 0.15);
17
+ --otter-brown: #8b5a2b;
18
+ --otter-light: #c4a77d;
19
+ }
20
+
21
+ * {
22
+ margin: 0;
23
+ padding: 0;
24
+ box-sizing: border-box;
25
+ }
26
+
27
+ body {
28
+ font-family: 'Quicksand', sans-serif;
29
+ background: linear-gradient(180deg, var(--ocean-deep) 0%, var(--ocean-mid) 50%, var(--ocean-light) 100%);
30
+ min-height: 100vh;
31
+ color: white;
32
+ overflow-x: hidden;
33
+ position: relative;
34
+ }
35
+
36
+ /* Animated Background */
37
+ .ocean-bg {
38
+ position: fixed;
39
+ top: 0;
40
+ left: 0;
41
+ width: 100%;
42
+ height: 100%;
43
+ z-index: -1;
44
+ overflow: hidden;
45
+ }
46
+
47
+ .wave {
48
+ position: absolute;
49
+ bottom: 0;
50
+ left: 0;
51
+ width: 200%;
52
+ height: 200px;
53
+ background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 120' preserveAspectRatio='none'%3E%3Cpath d='M0,60 C150,120 350,0 600,60 C850,120 1050,0 1200,60 L1200,120 L0,120 Z' fill='rgba(126,200,227,0.1)'/%3E%3C/svg%3E") repeat-x;
54
+ animation: wave 15s linear infinite;
55
+ }
56
+
57
+ .wave:nth-child(2) {
58
+ bottom: 10px;
59
+ opacity: 0.5;
60
+ animation: wave 25s linear infinite reverse;
61
+ }
62
+
63
+ .wave:nth-child(3) {
64
+ bottom: 20px;
65
+ opacity: 0.3;
66
+ animation: wave 35s linear infinite;
67
+ }
68
+
69
+ @keyframes wave {
70
+ 0% { transform: translateX(0); }
71
+ 100% { transform: translateX(-50%); }
72
+ }
73
+
74
+ /* Bubbles */
75
+ .bubble {
76
+ position: absolute;
77
+ border-radius: 50%;
78
+ background: radial-gradient(circle at 30% 30%, rgba(255,255,255,0.4), transparent);
79
+ animation: rise linear infinite;
80
+ pointer-events: none;
81
+ }
82
+
83
+ @keyframes rise {
84
+ 0% {
85
+ transform: translateY(100vh) scale(0);
86
+ opacity: 0;
87
+ }
88
+ 10% {
89
+ opacity: 1;
90
+ }
91
+ 90% {
92
+ opacity: 1;
93
+ }
94
+ 100% {
95
+ transform: translateY(-100px) scale(1);
96
+ opacity: 0;
97
+ }
98
+ }
99
+
100
+ /* Header */
101
+ header {
102
+ text-align: center;
103
+ padding: 60px 20px 40px;
104
+ position: relative;
105
+ }
106
+
107
+ .flag-badge {
108
+ display: inline-block;
109
+ background: linear-gradient(135deg, #aa151b 0%, #f1bf00 50%, #aa151b 100%);
110
+ padding: 8px 20px;
111
+ border-radius: 30px;
112
+ font-size: 0.9rem;
113
+ font-weight: 600;
114
+ letter-spacing: 1px;
115
+ margin-bottom: 20px;
116
+ box-shadow: 0 4px 15px rgba(0,0,0,0.3);
117
+ animation: pulse 3s ease-in-out infinite;
118
+ }
119
+
120
+ @keyframes pulse {
121
+ 0%, 100% { transform: scale(1); }
122
+ 50% { transform: scale(1.05); }
123
+ }
124
+
125
+ h1 {
126
+ font-family: 'Playfair Display', serif;
127
+ font-size: clamp(3rem, 10vw, 6rem);
128
+ font-weight: 700;
129
+ background: linear-gradient(135deg, var(--sand) 0%, var(--seafoam) 50%, var(--sand) 100%);
130
+ -webkit-background-clip: text;
131
+ -webkit-text-fill-color: transparent;
132
+ background-clip: text;
133
+ text-shadow: none;
134
+ margin-bottom: 10px;
135
+ animation: shimmer 3s ease-in-out infinite;
136
+ background-size: 200% auto;
137
+ }
138
+
139
+ @keyframes shimmer {
140
+ 0%, 100% { background-position: 0% center; }
141
+ 50% { background-position: 200% center; }
142
+ }
143
+
144
+ .subtitle {
145
+ font-family: 'Lora', serif;
146
+ font-style: italic;
147
+ font-size: clamp(1rem, 3vw, 1.5rem);
148
+ color: var(--seafoam);
149
+ opacity: 0.9;
150
+ }
151
+
152
+ /* Otter Illustration */
153
+ .otter-container {
154
+ display: flex;
155
+ justify-content: center;
156
+ align-items: center;
157
+ padding: 20px;
158
+ position: relative;
159
+ }
160
+
161
+ .otter {
162
+ width: clamp(200px, 40vw, 350px);
163
+ height: clamp(200px, 40vw, 350px);
164
+ position: relative;
165
+ animation: float 6s ease-in-out infinite;
166
+ }
167
+
168
+ @keyframes float {
169
+ 0%, 100% { transform: translateY(0); }
170
+ 50% { transform: translateY(-20px); }
171
+ }
172
+
173
+ .otter-body {
174
+ width: 100%;
175
+ height: 100%;
176
+ background: radial-gradient(ellipse at 50% 30%, var(--otter-light), var(--otter-brown) 70%);
177
+ border-radius: 50% 50% 45% 45%;
178
+ position: relative;
179
+ box-shadow:
180
+ inset -20px -20px 40px rgba(0,0,0,0.3),
181
+ inset 10px 10px 30px rgba(255,255,255,0.1),
182
+ 0 20px 60px rgba(0,0,0,0.4);
183
+ }
184
+
185
+ .otter-face {
186
+ position: absolute;
187
+ top: 25%;
188
+ left: 50%;
189
+ transform: translateX(-50%);
190
+ width: 70%;
191
+ height: 50%;
192
+ }
193
+
194
+ .otter-eye {
195
+ position: absolute;
196
+ width: 18px;
197
+ height: 22px;
198
+ background: #1a1a1a;
199
+ border-radius: 50%;
200
+ top: 30%;
201
+ animation: blink 4s ease-in-out infinite;
202
+ }
203
+
204
+ .otter-eye::after {
205
+ content: '';
206
+ position: absolute;
207
+ width: 6px;
208
+ height: 6px;
209
+ background: white;
210
+ border-radius: 50%;
211
+ top: 3px;
212
+ left: 3px;
213
+ }
214
+
215
+ .otter-eye.left { left: 20%; }
216
+ .otter-eye.right { right: 20%; }
217
+
218
+ @keyframes blink {
219
+ 0%, 90%, 100% { transform: scaleY(1); }
220
+ 95% { transform: scaleY(0.1); }
221
+ }
222
+
223
+ .otter-nose {
224
+ position: absolute;
225
+ width: 25px;
226
+ height: 18px;
227
+ background: #2a2a2a;
228
+ border-radius: 50% 50% 40% 40%;
229
+ top: 55%;
230
+ left: 50%;
231
+ transform: translateX(-50%);
232
+ }
233
+
234
+ .otter-nose::after {
235
+ content: '';
236
+ position: absolute;
237
+ width: 8px;
238
+ height: 4px;
239
+ background: #3a3a3a;
240
+ border-radius: 50%;
241
+ top: 60%;
242
+ left: 50%;
243
+ transform: translateX(-50%);
244
+ }
245
+
246
+ .otter-whiskers {
247
+ position: absolute;
248
+ top: 52%;
249
+ width: 100%;
250
+ }
251
+
252
+ .whisker {
253
+ position: absolute;
254
+ width: 40px;
255
+ height: 2px;
256
+ background: rgba(0,0,0,0.3);
257
+ border-radius: 2px;
258
+ }
259
+
260
+ .whisker.left-1 { left: 5%; top: 0; transform: rotate(-10deg); }
261
+ .whisker.left-2 { left: 10%; top: 8px; transform: rotate(-5deg); }
262
+ .whisker.right-1 { right: 5%; top: 0; transform: rotate(10deg); }
263
+ .whisker.right-2 { right: 10%; top: 8px; transform: rotate(5deg); }
264
+
265
+ .otter-ears {
266
+ position: absolute;
267
+ top: 10%;
268
+ width: 100%;
269
+ }
270
+
271
+ .ear {
272
+ position: absolute;
273
+ width: 25px;
274
+ height: 30px;
275
+ background: var(--otter-brown);
276
+ border-radius: 50% 50% 40% 40%;
277
+ }
278
+
279
+ .ear.left { left: 15%; }
280
+ .ear.right { right: 15%; }
281
+
282
+ .ear::after {
283
+ content: '';
284
+ position: absolute;
285
+ width: 12px;
286
+ height: 15px;
287
+ background: #d4a574;
288
+ border-radius: 50%;
289
+ top: 50%;
290
+ left: 50%;
291
+ transform: translate(-50%, -50%);
292
+ }
293
+
294
+ /* Water ripples around otter */
295
+ .water-ring {
296
+ position: absolute;
297
+ border: 2px solid rgba(126, 200, 227, 0.3);
298
+ border-radius: 50%;
299
+ animation: ripple 4s ease-out infinite;
300
+ }
301
+
302
+ .water-ring:nth-child(1) {
303
+ width: 120%;
304
+ height: 120%;
305
+ top: -10%;
306
+ left: -10%;
307
+ animation-delay: 0s;
308
+ }
309
+
310
+ .water-ring:nth-child(2) {
311
+ width: 140%;
312
+ height: 140%;
313
+ top: -20%;
314
+ left: -20%;
315
+ animation-delay: 1.5s;
316
+ }
317
+
318
+ .water-ring:nth-child(3) {
319
+ width: 160%;
320
+ height: 160%;
321
+ top: -30%;
322
+ left: -30%;
323
+ animation-delay: 3s;
324
+ }
325
+
326
+ @keyframes ripple {
327
+ 0% {
328
+ transform: scale(0.8);
329
+ opacity: 0.8;
330
+ }
331
+ 100% {
332
+ transform: scale(1.2);
333
+ opacity: 0;
334
+ }
335
+ }
336
+
337
+ /* Poem Section */
338
+ .poem-section {
339
+ max-width: 800px;
340
+ margin: 0 auto;
341
+ padding: 40px 20px;
342
+ position: relative;
343
+ }
344
+
345
+ .poem-container {
346
+ background: linear-gradient(135deg, rgba(255,255,255,0.1) 0%, rgba(255,255,255,0.05) 100%);
347
+ backdrop-filter: blur(10px);
348
+ border-radius: 30px;
349
+ padding: 50px 40px;
350
+ border: 1px solid rgba(255,255,255,0.1);
351
+ box-shadow:
352
+ 0 20px 60px rgba(0,0,0,0.3),
353
+ inset 0 1px 0 rgba(255,255,255,0.1);
354
+ position: relative;
355
+ overflow: hidden;
356
+ }
357
+
358
+ .poem-container::before {
359
+ content: '🌊';
360
+ position: absolute;
361
+ top: 20px;
362
+ left: 30px;
363
+ font-size: 2rem;
364
+ opacity: 0.5;
365
+ }
366
+
367
+ .poem-container::after {
368
+ content: '🌊';
369
+ position: absolute;
370
+ bottom: 20px;
371
+ right: 30px;
372
+ font-size: 2rem;
373
+ opacity: 0.5;
374
+ transform: rotate(180deg);
375
+ }
376
+
377
+ .poem-title {
378
+ font-family: 'Playfair Display', serif;
379
+ font-size: clamp(1.5rem, 4vw, 2.2rem);
380
+ text-align: center;
381
+ margin-bottom: 30px;
382
+ color: var(--sand);
383
+ position: relative;
384
+ }
385
+
386
+ .poem-title::after {
387
+ content: '';
388
+ display: block;
389
+ width: 100px;
390
+ height: 2px;
391
+ background: linear-gradient(90deg, transparent, var(--seafoam), transparent);
392
+ margin: 15px auto 0;
393
+ }
394
+
395
+ .poem-content {
396
+ font-family: 'Lora', serif;
397
+ font-size: clamp(1rem, 2.5vw, 1.3rem);
398
+ line-height: 2;
399
+ text-align: center;
400
+ color: rgba(255,255,255,0.9);
401
+ }
402
+
403
+ .poem-content p {
404
+ margin-bottom: 25px;
405
+ opacity: 0;
406
+ animation: fadeInUp 1s ease forwards;
407
+ }
408
+
409
+ .poem-content p:nth-child(1) { animation-delay: 0.3s; }
410
+ .poem-content p:nth-child(2) { animation-delay: 0.6s; }
411
+ .poem-content p:nth-child(3) { animation-delay: 0.9s; }
412
+ .poem-content p:nth-child(4) { animation-delay: 1.2s; }
413
+ .poem-content p:nth-child(5) { animation-delay: 1.5s; }
414
+
415
+ @keyframes fadeInUp {
416
+ from {
417
+ opacity: 0;
418
+ transform: translateY(20px);
419
+ }
420
+ to {
421
+ opacity: 1;
422
+ transform: translateY(0);
423
+ }
424
+ }
425
+
426
+ .poem-signature {
427
+ text-align: right;
428
+ margin-top: 30px;
429
+ font-style: italic;
430
+ color: var(--seafoam);
431
+ opacity: 0;
432
+ animation: fadeIn 1s ease forwards 2s;
433
+ }
434
+
435
+ @keyframes fadeIn {
436
+ to { opacity: 0.8; }
437
+ }
438
+
439
+ /* Interactive Elements */
440
+ .heart-float {
441
+ position: fixed;
442
+ font-size: 2rem;
443
+ pointer-events: none;
444
+ animation: heartFloat 4s ease-out forwards;
445
+ z-index: 100;
446
+ }
447
+
448
+ @keyframes heartFloat {
449
+ 0% {
450
+ opacity: 1;
451
+ transform: translateY(0) scale(1);
452
+ }
453
+ 100% {
454
+ opacity: 0;
455
+ transform: translateY(-200px) scale(0.5);
456
+ }
457
+ }
458
+
459
+ .click-hint {
460
+ text-align: center;
461
+ padding: 20px;
462
+ color: var(--seafoam);
463
+ font-size: 0.9rem;
464
+ opacity: 0.7;
465
+ animation: bounce 2s ease-in-out infinite;
466
+ }
467
+
468
+ @keyframes bounce {
469
+ 0%, 100% { transform: translateY(0); }
470
+ 50% { transform: translateY(-5px); }
471
+ }
472
+
473
+ /* Footer */
474
+ footer {
475
+ text-align: center;
476
+ padding: 40px 20px;
477
+ color: var(--seafoam);
478
+ opacity: 0.6;
479
+ font-size: 0.9rem;
480
+ }
481
+
482
+ .anycoder-link {
483
+ display: inline-block;
484
+ margin-top: 10px;
485
+ color: var(--sand);
486
+ text-decoration: none;
487
+ font-weight: 600;
488
+ transition: all 0.3s ease;
489
+ border-bottom: 1px solid transparent;
490
+ }
491
+
492
+ .anycoder-link:hover {
493
+ border-bottom-color: var(--seafoam);
494
+ transform: scale(1.05);
495
+ }
496
+
497
+ /* Responsive */
498
+ @media (max-width: 600px) {
499
+ header {
500
+ padding: 40px 15px 20px;
501
+ }
502
+
503
+ .poem-container {
504
+ padding: 30px 20px;
505
+ }
506
+
507
+ .otter {
508
+ width: clamp(150px, 50vw, 250px);
509
+ height: clamp(150px, 50vw, 250px);
510
+ }
511
+ }
512
+ </style>
513
+ </head>
514
+ <body>
515
+ <div class="ocean-bg" id="oceanBg">
516
+ <div class="wave"></div>
517
+ <div class="wave"></div>
518
+ <div class="wave"></div>
519
+ </div>
520
+
521
+ <header>
522
+ <div class="flag-badge">🇪🇸 España</div>
523
+ <h1>Marcos</h1>
524
+ <p class="subtitle">La lontra spagnola che ha conquistato il mare</p>
525
+ </header>
526
+
527
+ <div class="otter-container">
528
+ <div class="water-ring"></div>
529
+ <div class="water-ring"></div>
530
+ <div class="water-ring"></div>
531
+
532
+ <div class="otter">
533
+ <div class="otter-body">
534
+ <div class="otter-ears">
535
+ <div class="ear left"></div>
536
+ <div class="ear right"></div>
537
+ </div>
538
+ <div class="otter-face">
539
+ <div class="otter-eye left"></div>
540
+ <div class="otter-eye right"></div>
541
+ <div class="otter-whiskers">
542
+ <div class="whisker left-1"></div>
543
+ <div class="whisker left-2"></div>
544
+ <div class="whisker right-1"></div>
545
+ <div class="whisker right-2"></div>
546
+ </div>
547
+ <div class="otter-nose"></div>
548
+ </div>
549
+ </div>
550
+ </div>
551
+ </div>
552
+
553
+ <div class="click-hint">✨ Clicca intorno per creare magia ✨</div>
554
+
555
+ <section class="poem-section">
556
+ <div class="poem-container">
557
+ <h2 class="poem-title">Sussurri d'Acqua - Per Marcos</h2>
558
+ <div class="poem-content">
559
+ <p>Tra le acque cristalline del mare spagnolo,<br>
560
+ nuota libero e felice il nostro caro Marcos,<br>
561
+ con pelo lucido come seta bagnata,<br>
562
+ e occhi profondi che raccontano storie antiche.</p>
563
+
564
+ <p>Gioca tra le onde con grazia infinita,<br>
565
+ il suo sorriso dolce conquista chi lo osserva,<br>
566
+ è il re delle acque, splendido e fiero,<br>
567
+ il piccolo marinaio dal cuore sincero.</p>
568
+
569
+ <p>Marcos, Marcos, nome che risuona<br>
570
+ come il battito delle onde al vento,<br>
571
+ sei gioia pura, sei pace e allegria,<br>
572
+ la lontra che illumina questa terra spagnola.</p>
573
+
574
+ <p>Che la tua vita sia sempre serena,<br>
575
+ tra pesciolini e schiuma marina,<br>
576
+ tu sei tesoro, sei magia vivente,<br>
577
+ Marcos, la lontra più bella della regione.</p>
578
+
579
+ <p>E quando il sole tramonta sul mare,<br>
580
+ le stelle riflettono sulla superficie,<br>
581
+ Marcos nuota ancora felice nel blu,<br>
582
+ simbolo eterno di libertà e di virtù.</p>
583
+ </div>
584
+ <div class="poem-signature">
585
+ — Con amore, dalla Italia 🇮🇹
586
+ </div>
587
+ </div>
588
+ </section>
589
+
590
+ <footer>
591
+ <p>🐾 Un tribute alla meravigliosa fauna spagnola 🐾</p>
592
+ <a href="https://huggingface.co/spaces/akhaliq/anycoder" target="_blank" class="anycoder-link">
593
+ Built with anycoder
594
+ </a>
595
+ </footer>
596
+
597
+ <script>
598
+ // Create bubbles
599
+ function createBubble() {
600
+ const bubble = document.createElement('div');
601
+ bubble.className = 'bubble';
602
+
603
+ const size = Math.random() * 20 + 10;
604
+ bubble.style.width = size + 'px';
605
+ bubble.style.height = size + 'px';
606
+ bubble.style.left = Math.random() * 100 + '%';
607
+ bubble.style.animationDuration = (Math.random() * 10 + 10) + 's';
608
+ bubble.style.animationDelay = (Math.random() * 5) + 's';
609
+
610
+ document.getElementById('oceanBg').appendChild(bubble);
611
+
612
+ setTimeout(() => {
613
+ bubble.remove();
614
+ }, 15000);
615
+ }
616
+
617
+ // Create initial bubbles
618
+ for (let i = 0; i < 15; i++) {
619
+ setTimeout(createBubble, i * 300);
620
+ }
621
+
622
+ // Continuous bubble creation
623
+ setInterval(createBubble, 2000);
624
+
625
+ // Click effect - create hearts
626
+ document.addEventListener('click', (e) => {
627
+ const heart = document.createElement('div');
628
+ heart.className = 'heart-float';
629
+ heart.innerHTML = ['💙', '💜', '🧡', '💛', '🤍'][Math.floor(Math.random() * 5)];
630
+ heart.style.left = e.clientX - 15 + 'px';
631
+ heart.style.top = e.clientY - 15 + 'px';
632
+
633
+ document.body.appendChild(heart);
634
+
635
+ setTimeout(() => {
636
+ heart.remove();
637
+ }, 4000);
638
+ });
639
+
640
+ // Add some random sparkle effects
641
+ function createSparkle(x, y) {
642
+ const sparkle = document.createElement('div');
643
+ sparkle.style.cssText = `
644
+ position: fixed;
645
+ left: ${x}px;
646
+ top: ${y}px;
647
+ width: 10px;
648
+ height: 10px;
649
+ background: radial-gradient(circle, white, transparent);
650
+ border-radius: 50%;
651
+ pointer-events: none;
652
+ animation: sparkle 1s ease-out forwards;
653
+ z-index: 1000;
654
+ `;
655
+
656
+ document.body.appendChild(sparkle);
657
+
658
+ setTimeout(() => sparkle.remove(), 1000);
659
+ }
660
+
661
+ // Add sparkle animation
662
+ const style = document.createElement('style');
663
+ style.textContent = `
664
+ @keyframes sparkle {
665
+ 0% { transform: scale(0); opacity: 1; }
666
+ 50% { transform: scale(2); opacity: 0.8; }
667
+ 100% { transform: scale(0); opacity: 0; }
668
+ }
669
+ `;
670
+ document.head.appendChild(style);
671
+
672
+ // Random sparkles around the otter
673
+ setInterval(() => {
674
+ const otter = document.querySelector('.otter-container');
675
+ const rect = otter.getBoundingClientRect();
676
+ const x = rect.left + Math.random() * rect.width;
677
+ const y = rect.top + Math.random() * rect.height;
678
+ createSparkle(x, y);
679
+ }, 500);
680
+ </script>
681
+ </body>
682
+ </html>