@lucasmod/pokemon.js 2.1.2 → 2.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/docs/styles.css CHANGED
@@ -1,173 +1,828 @@
1
- /* ANIMATIONS */
2
- .project-detail>* {
3
- opacity: 0;
4
- transform: translateY(-20px);
5
- animation: fadeInUp 0.8s ease forwards;
1
+ /* ============================================
2
+ VARIÁVEIS E CORES POKÉMON
3
+ ============================================ */
4
+ :root {
5
+ --primary: #FF6B6B;
6
+ --secondary: #4ECDC4;
7
+ --accent: #FFE66D;
8
+ --dark: #2C3E50;
9
+ --light: #ECF0F1;
10
+ --glass-bg: rgba(255, 255, 255, 0.1);
11
+ --glass-border: rgba(255, 255, 255, 0.2);
12
+ --shadow: 0 8px 32px rgba(31, 38, 135, 0.15);
13
+ --shadow-lg: 0 20px 60px rgba(31, 38, 135, 0.25);
14
+ --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
6
15
  }
7
16
 
8
- .project-header {
9
- animation-delay: 0.1s;
17
+ /* ============================================
18
+ RESET E ESTILOS GLOBAIS
19
+ ============================================ */
20
+ * {
21
+ margin: 0;
22
+ padding: 0;
23
+ box-sizing: border-box;
10
24
  }
11
25
 
26
+ body {
27
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
28
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
29
+ color: var(--dark);
30
+ line-height: 1.6;
31
+ min-height: 100vh;
32
+ padding-bottom: 2rem;
33
+ }
34
+
35
+ .content {
36
+ max-width: 900px;
37
+ margin: 0 auto;
38
+ padding: 2rem;
39
+ }
40
+
41
+ /* ============================================
42
+ TIPOGRAFIA
43
+ ============================================ */
44
+ h1, h2, h3, h4, h5, h6 {
45
+ font-weight: 700;
46
+ line-height: 1.2;
47
+ margin-bottom: 1rem;
48
+ color: var(--dark);
49
+ }
50
+
51
+ h1 {
52
+ font-size: 3.5rem;
53
+ letter-spacing: -1px;
54
+ }
55
+
56
+ h2 {
57
+ font-size: 2.2rem;
58
+ margin-top: 2rem;
59
+ display: flex;
60
+ align-items: center;
61
+ gap: 0.5rem;
62
+ }
63
+
64
+ h3 {
65
+ font-size: 1.4rem;
66
+ }
67
+
68
+ h4 {
69
+ font-size: 1.1rem;
70
+ }
71
+
72
+ p {
73
+ margin-bottom: 1rem;
74
+ font-size: 1.05rem;
75
+ }
76
+
77
+ a {
78
+ color: var(--primary);
79
+ text-decoration: none;
80
+ transition: var(--transition);
81
+ }
82
+
83
+ a:hover {
84
+ opacity: 0.8;
85
+ text-decoration: underline;
86
+ }
87
+
88
+ code {
89
+ background: rgba(0, 0, 0, 0.05);
90
+ padding: 0.2em 0.4em;
91
+ border-radius: 4px;
92
+ font-family: 'Courier New', monospace;
93
+ font-size: 0.9em;
94
+ }
95
+
96
+ /* ============================================
97
+ HERO SECTION
98
+ ============================================ */
99
+ .hero-section {
100
+ background: var(--glass-bg);
101
+ backdrop-filter: blur(10px);
102
+ border: 1px solid var(--glass-border);
103
+ border-radius: 20px;
104
+ padding: 4rem 2rem;
105
+ margin-bottom: 3rem;
106
+ box-shadow: var(--shadow-lg);
107
+ text-align: center;
108
+ animation: slideInDown 0.8s ease-out;
109
+ }
110
+
111
+ .hero-badge {
112
+ display: inline-block;
113
+ background: linear-gradient(135deg, var(--primary), var(--secondary));
114
+ color: white;
115
+ padding: 0.5rem 1.5rem;
116
+ border-radius: 50px;
117
+ font-size: 0.9rem;
118
+ font-weight: 600;
119
+ margin-bottom: 1rem;
120
+ animation: pulse 2s ease-in-out infinite;
121
+ }
122
+
123
+ .hero-title {
124
+ font-size: 4rem;
125
+ background: linear-gradient(135deg, var(--primary), var(--secondary));
126
+ -webkit-background-clip: text;
127
+ -webkit-text-fill-color: transparent;
128
+ background-clip: text;
129
+ margin-bottom: 0.5rem;
130
+ animation: slideInUp 0.8s ease-out 0.1s both;
131
+ }
132
+
133
+ .hero-subtitle {
134
+ font-size: 1.3rem;
135
+ color: #555;
136
+ margin-bottom: 2rem;
137
+ animation: slideInUp 0.8s ease-out 0.2s both;
138
+ }
139
+
140
+ .hero-content {
141
+ margin-bottom: 2rem;
142
+ }
143
+
144
+ .hero-cta {
145
+ display: flex;
146
+ gap: 1rem;
147
+ justify-content: center;
148
+ flex-wrap: wrap;
149
+ animation: slideInUp 0.8s ease-out 0.3s both;
150
+ }
151
+
152
+ .project-meta {
153
+ display: flex;
154
+ justify-content: center;
155
+ gap: 2rem;
156
+ flex-wrap: wrap;
157
+ font-size: 0.95rem;
158
+ color: #666;
159
+ padding-top: 2rem;
160
+ border-top: 1px solid rgba(0, 0, 0, 0.1);
161
+ animation: fadeIn 0.8s ease-out 0.4s both;
162
+ }
163
+
164
+ .meta-item {
165
+ display: flex;
166
+ align-items: center;
167
+ gap: 0.5rem;
168
+ }
169
+
170
+ /* ============================================
171
+ BOTÕES
172
+ ============================================ */
173
+ .btn {
174
+ display: inline-block;
175
+ padding: 0.9rem 2rem;
176
+ border-radius: 50px;
177
+ font-weight: 600;
178
+ font-size: 1rem;
179
+ border: none;
180
+ cursor: pointer;
181
+ transition: var(--transition);
182
+ text-decoration: none;
183
+ box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
184
+ }
185
+
186
+ .btn-primary {
187
+ background: linear-gradient(135deg, var(--primary), #FF5252);
188
+ color: white;
189
+ }
190
+
191
+ .btn-primary:hover {
192
+ transform: translateY(-2px);
193
+ box-shadow: 0 6px 20px rgba(255, 107, 107, 0.4);
194
+ }
195
+
196
+ .btn-secondary {
197
+ background: var(--glass-bg);
198
+ border: 2px solid var(--primary);
199
+ color: var(--primary);
200
+ }
201
+
202
+ .btn-secondary:hover {
203
+ background: var(--primary);
204
+ color: white;
205
+ transform: translateY(-2px);
206
+ }
207
+
208
+ /* ============================================
209
+ BADGES
210
+ ============================================ */
12
211
  .project-badges {
13
- animation-delay: 0.2s;
212
+ display: flex;
213
+ justify-content: center;
214
+ gap: 2rem;
215
+ margin-bottom: 3rem;
216
+ flex-wrap: wrap;
217
+ animation: fadeIn 0.8s ease-out 0.5s both;
14
218
  }
15
219
 
16
- .project-toc {
17
- animation-delay: 0.3s;
220
+ .badge-link {
221
+ display: inline-block;
222
+ transition: var(--transition);
18
223
  }
19
224
 
20
- #about {
21
- animation-delay: 0.4s;
225
+ .badge-link img {
226
+ max-height: 35px;
227
+ filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.1));
228
+ transition: var(--transition);
22
229
  }
23
230
 
24
- #installation {
25
- animation-delay: 0.5s;
231
+ .badge-link:hover img {
232
+ transform: scale(1.1);
233
+ filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.2));
26
234
  }
27
235
 
28
- #example-usage {
29
- animation-delay: 0.6s;
236
+ /* ============================================
237
+ TABLE OF CONTENTS
238
+ ============================================ */
239
+ .toc-section {
240
+ background: var(--glass-bg);
241
+ backdrop-filter: blur(10px);
242
+ border: 1px solid var(--glass-border);
243
+ border-radius: 15px;
244
+ padding: 2rem;
245
+ margin-bottom: 3rem;
246
+ box-shadow: var(--shadow);
247
+ animation: slideInUp 0.8s ease-out 0.6s both;
30
248
  }
31
249
 
32
- #methods {
33
- animation-delay: 0.7s;
250
+ .toc-section h3 {
251
+ margin-bottom: 1.5rem;
252
+ color: var(--primary);
34
253
  }
35
254
 
36
- #links {
37
- animation-delay: 0.8s;
255
+ .toc-list {
256
+ list-style: none;
257
+ display: grid;
258
+ grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
259
+ gap: 1rem;
38
260
  }
39
261
 
40
- /* Badge animations */
41
- .project-badges img {
42
- display: inline-block;
43
- animation: badgeBounce 0.8s ease 0.3s forwards;
44
- opacity: 0;
45
- transform: scale(0.8);
262
+ .toc-list li a {
263
+ display: block;
264
+ padding: 0.8rem 1rem;
265
+ background: rgba(255, 255, 255, 0.5);
266
+ border-radius: 8px;
267
+ color: var(--dark);
268
+ font-weight: 500;
269
+ text-decoration: none;
270
+ transition: var(--transition);
271
+ border-left: 3px solid transparent;
46
272
  }
47
273
 
48
- .project-badges a:nth-child(1) img {
49
- animation-delay: 0.3s;
274
+ .toc-list li a:hover {
275
+ background: var(--primary);
276
+ color: white;
277
+ border-left-color: var(--accent);
278
+ transform: translateX(5px);
50
279
  }
51
280
 
52
- .project-badges a:nth-child(2) img {
53
- animation-delay: 0.4s;
281
+ /* ============================================
282
+ SEÇÕES
283
+ ============================================ */
284
+ .project-section {
285
+ background: white;
286
+ border-radius: 15px;
287
+ padding: 2.5rem;
288
+ margin-bottom: 2.5rem;
289
+ box-shadow: var(--shadow);
290
+ animation: fadeInUp 0.8s ease-out both;
54
291
  }
55
292
 
56
- .project-badges a:nth-child(3) img {
57
- animation-delay: 0.5s;
293
+ .project-section:nth-child(n+5) {
294
+ animation-delay: calc(0.1s * (var(--index, 0) + 1));
58
295
  }
59
296
 
60
- /* Link tags */
61
- .links li a {
62
- opacity: 0;
63
- transform: scale(0.8);
64
- animation: evolveIn 0.5s ease forwards;
297
+ .section-content {
298
+ animation: fadeIn 0.6s ease-out 0.3s both;
65
299
  }
66
300
 
67
- .links li:nth-child(1) a {
68
- animation-delay: 0.8s;
301
+ /* ============================================
302
+ FEATURES GRID
303
+ ============================================ */
304
+ .features-grid {
305
+ display: grid;
306
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
307
+ gap: 1.5rem;
308
+ margin-top: 2rem;
69
309
  }
70
310
 
71
- .links li:nth-child(2) a {
72
- animation-delay: 0.85s;
311
+ .feature-card {
312
+ background: linear-gradient(135deg, rgba(255, 107, 107, 0.1), rgba(78, 205, 196, 0.1));
313
+ border: 1px solid rgba(255, 107, 107, 0.2);
314
+ border-radius: 12px;
315
+ padding: 1.5rem;
316
+ text-align: center;
317
+ transition: var(--transition);
318
+ animation: scaleIn 0.6s ease-out both;
73
319
  }
74
320
 
75
- .links li:nth-child(3) a {
76
- animation-delay: 0.9s;
321
+ .feature-card:nth-child(1) { animation-delay: 0.1s; }
322
+ .feature-card:nth-child(2) { animation-delay: 0.2s; }
323
+ .feature-card:nth-child(3) { animation-delay: 0.3s; }
324
+ .feature-card:nth-child(4) { animation-delay: 0.4s; }
325
+
326
+ .feature-card:hover {
327
+ transform: translateY(-8px);
328
+ box-shadow: 0 12px 24px rgba(255, 107, 107, 0.2);
329
+ border-color: var(--primary);
77
330
  }
78
331
 
79
- /* Keyframes */
80
- @keyframes fadeInUp {
81
- to {
82
- opacity: 1;
83
- transform: translateY(0);
84
- }
332
+ .feature-icon {
333
+ font-size: 2.5rem;
334
+ margin-bottom: 1rem;
335
+ display: inline-block;
336
+ animation: bounce 2s ease-in-out infinite;
337
+ }
338
+
339
+ .feature-card h4 {
340
+ color: var(--primary);
341
+ margin-bottom: 0.5rem;
85
342
  }
86
343
 
87
- @keyframes badgeBounce {
88
- 0% {
89
- opacity: 0;
90
- transform: scale(0.8) translateY(-20px);
91
- }
344
+ .feature-card p {
345
+ font-size: 0.95rem;
346
+ color: #666;
347
+ margin: 0;
348
+ }
92
349
 
93
- 60% {
94
- transform: scale(1.1) translateY(5px);
95
- }
350
+ /* ============================================
351
+ INSTALAÇÃO
352
+ ============================================ */
353
+ .install-box {
354
+ background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
355
+ border-radius: 12px;
356
+ padding: 1.5rem;
357
+ margin: 2rem 0;
358
+ display: flex;
359
+ align-items: center;
360
+ gap: 1rem;
361
+ flex-wrap: wrap;
362
+ animation: slideInUp 0.6s ease-out 0.2s both;
363
+ }
96
364
 
97
- 100% {
98
- opacity: 1;
99
- transform: scale(1) translateY(0);
100
- }
365
+ .install-command {
366
+ flex: 1;
367
+ min-width: 250px;
368
+ padding: 1rem;
369
+ background: white;
370
+ border-radius: 8px;
371
+ font-family: 'Courier New', monospace;
372
+ font-size: 1rem;
373
+ color: var(--dark);
374
+ word-break: break-all;
375
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.05);
101
376
  }
102
377
 
103
- @keyframes evolveIn {
104
- to {
105
- opacity: 1;
106
- transform: scale(1);
107
- }
378
+ .copy-btn {
379
+ padding: 0.8rem 1.5rem;
380
+ background: var(--primary);
381
+ color: white;
382
+ border: none;
383
+ border-radius: 8px;
384
+ font-weight: 600;
385
+ cursor: pointer;
386
+ transition: var(--transition);
387
+ white-space: nowrap;
108
388
  }
109
389
 
110
- body {
111
- padding-bottom: 1.5em;
390
+ .copy-btn:hover {
391
+ background: #FF5252;
392
+ transform: scale(1.05);
112
393
  }
113
394
 
395
+ /* ============================================
396
+ CODE BLOCKS
397
+ ============================================ */
114
398
  .code-block {
115
- background: var(--code);
116
- padding: 1.5em;
117
- border-radius: 8px;
118
- border-left: 4px solid var(--color-accent);
119
- overflow-x: auto;
120
- line-height: 1.4;
399
+ background: linear-gradient(135deg, #2c3e50 0%, #34495e 100%);
400
+ color: #ecf0f1;
401
+ padding: 1.5rem;
402
+ border-radius: 12px;
403
+ border-left: 4px solid var(--primary);
404
+ overflow-x: auto;
405
+ line-height: 1.5;
406
+ font-size: 0.95rem;
407
+ margin: 1.5rem 0;
408
+ box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
409
+ animation: slideInUp 0.6s ease-out 0.2s both;
121
410
  }
122
411
 
123
- .install-command {
124
- padding: 0.25em 0.5em;
125
- display: inline-block;
126
- font-size: 1.1em;
412
+ .code-block code {
413
+ background: none;
414
+ padding: 0;
415
+ color: inherit;
127
416
  }
128
417
 
418
+ /* ============================================
419
+ MÉTODOS
420
+ ============================================ */
129
421
  .method-list {
130
- display: flex;
131
- flex-direction: column;
132
- gap: 1.5em;
422
+ display: grid;
423
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
424
+ gap: 1.5rem;
425
+ margin-top: 2rem;
133
426
  }
134
427
 
135
428
  .method {
136
- padding: 1.5em 1em 0.5em 1em;
137
- border-radius: 8px;
138
- border-left: 3px solid var(--color-accent);
139
- border-right: 1px solid var(--card-border);
140
- border-top: 1px solid var(--card-border);
141
- border-bottom: 1px solid var(--card-border);
142
- transition: all 0.2s ease;
429
+ background: linear-gradient(135deg, rgba(255, 107, 107, 0.05), rgba(78, 205, 196, 0.05));
430
+ border: 2px solid rgba(255, 107, 107, 0.2);
431
+ border-radius: 12px;
432
+ padding: 1.5rem;
433
+ transition: var(--transition);
434
+ animation: scaleIn 0.6s ease-out both;
435
+ position: relative;
436
+ overflow: hidden;
437
+ }
438
+
439
+ .method:nth-child(1) { animation-delay: 0.1s; }
440
+ .method:nth-child(2) { animation-delay: 0.15s; }
441
+ .method:nth-child(3) { animation-delay: 0.2s; }
442
+ .method:nth-child(4) { animation-delay: 0.25s; }
443
+ .method:nth-child(5) { animation-delay: 0.3s; }
444
+ .method:nth-child(6) { animation-delay: 0.35s; }
445
+ .method:nth-child(7) { animation-delay: 0.4s; }
446
+ .method:nth-child(8) { animation-delay: 0.45s; }
447
+ .method:nth-child(9) { animation-delay: 0.5s; }
448
+ .method:nth-child(10) { animation-delay: 0.55s; }
449
+
450
+ .method::before {
451
+ content: '';
452
+ position: absolute;
453
+ top: 0;
454
+ left: 0;
455
+ right: 0;
456
+ height: 3px;
457
+ background: linear-gradient(90deg, var(--primary), var(--secondary));
458
+ transform: scaleX(0);
459
+ transform-origin: left;
460
+ transition: transform 0.3s ease;
461
+ }
462
+
463
+ .method:hover::before {
464
+ transform: scaleX(1);
465
+ }
466
+
467
+ .method:hover {
468
+ transform: translateY(-8px);
469
+ border-color: var(--primary);
470
+ box-shadow: 0 12px 24px rgba(255, 107, 107, 0.15);
471
+ }
472
+
473
+ .method-icon {
474
+ font-size: 2rem;
475
+ margin-bottom: 0.5rem;
476
+ display: inline-block;
143
477
  }
144
478
 
145
479
  .method h3 {
146
- margin: 0 0 0.5em 0;
147
- font-size: 1.1em;
480
+ margin: 0.5rem 0 1rem 0;
481
+ font-size: 1.1rem;
482
+ color: var(--dark);
148
483
  }
149
484
 
150
- .method code {
151
- padding: 0.5em;
152
- font-size: 0.9em;
485
+ .method h3 code {
486
+ background: rgba(255, 107, 107, 0.1);
487
+ padding: 0.3em 0.6em;
488
+ border-radius: 4px;
489
+ color: var(--primary);
153
490
  }
154
491
 
492
+ .method p {
493
+ margin: 0;
494
+ font-size: 0.95rem;
495
+ color: #666;
496
+ line-height: 1.5;
497
+ }
498
+
499
+ /* ============================================
500
+ LINKS
501
+ ============================================ */
155
502
  .links {
156
- display: flex;
157
- flex-wrap: wrap;
158
- gap: 0.7em;
159
- list-style: none;
160
- padding: 0;
503
+ list-style: none;
504
+ display: flex;
505
+ flex-wrap: wrap;
506
+ gap: 1rem;
507
+ margin-top: 1.5rem;
161
508
  }
162
509
 
163
510
  .links li a {
164
- margin: 0;
165
- font-weight: 500;
166
- text-decoration: none;
167
- transition: all 0.2s ease;
511
+ display: inline-block;
512
+ padding: 0.8rem 1.5rem;
513
+ border-radius: 8px;
514
+ font-weight: 600;
515
+ text-decoration: none;
516
+ transition: var(--transition);
517
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
518
+ animation: slideInUp 0.6s ease-out both;
519
+ }
520
+
521
+ .links li:nth-child(1) a { animation-delay: 0.1s; }
522
+ .links li:nth-child(2) a { animation-delay: 0.2s; }
523
+ .links li:nth-child(3) a { animation-delay: 0.3s; }
524
+
525
+ .tag-npm {
526
+ background: linear-gradient(135deg, #CB3837, #E74C3C);
527
+ color: white;
168
528
  }
169
529
 
170
- .links li a:hover {
171
- background: var(--tag-hover);
172
- color: white;
173
- }
530
+ .tag-npm:hover {
531
+ transform: translateY(-3px);
532
+ box-shadow: 0 6px 20px rgba(203, 56, 55, 0.4);
533
+ }
534
+
535
+ .tag-github {
536
+ background: linear-gradient(135deg, #24292E, #2C3E50);
537
+ color: white;
538
+ }
539
+
540
+ .tag-github:hover {
541
+ transform: translateY(-3px);
542
+ box-shadow: 0 6px 20px rgba(36, 41, 46, 0.4);
543
+ }
544
+
545
+ .tag-api {
546
+ background: linear-gradient(135deg, var(--secondary), #45B7AA);
547
+ color: white;
548
+ }
549
+
550
+ .tag-api:hover {
551
+ transform: translateY(-3px);
552
+ box-shadow: 0 6px 20px rgba(78, 205, 196, 0.4);
553
+ }
554
+
555
+ /* ============================================
556
+ FOOTER
557
+ ============================================ */
558
+ .project-footer {
559
+ text-align: center;
560
+ padding: 2rem;
561
+ margin-top: 3rem;
562
+ border-top: 2px solid rgba(0, 0, 0, 0.1);
563
+ color: #666;
564
+ font-size: 0.95rem;
565
+ animation: fadeIn 0.8s ease-out 0.8s both;
566
+ }
567
+
568
+ .project-footer a {
569
+ color: var(--primary);
570
+ font-weight: 600;
571
+ }
572
+
573
+ .project-footer a:hover {
574
+ text-decoration: underline;
575
+ }
576
+
577
+ /* ============================================
578
+ LINK HIGHLIGHT
579
+ ============================================ */
580
+ .link-highlight {
581
+ position: relative;
582
+ color: var(--primary);
583
+ font-weight: 600;
584
+ }
585
+
586
+ .link-highlight::after {
587
+ content: '';
588
+ position: absolute;
589
+ bottom: -2px;
590
+ left: 0;
591
+ right: 0;
592
+ height: 2px;
593
+ background: linear-gradient(90deg, var(--primary), var(--secondary));
594
+ transform: scaleX(0);
595
+ transform-origin: right;
596
+ transition: transform 0.3s ease;
597
+ }
598
+
599
+ .link-highlight:hover::after {
600
+ transform: scaleX(1);
601
+ transform-origin: left;
602
+ }
603
+
604
+ /* ============================================
605
+ ANIMAÇÕES
606
+ ============================================ */
607
+ @keyframes slideInDown {
608
+ from {
609
+ opacity: 0;
610
+ transform: translateY(-30px);
611
+ }
612
+ to {
613
+ opacity: 1;
614
+ transform: translateY(0);
615
+ }
616
+ }
617
+
618
+ @keyframes slideInUp {
619
+ from {
620
+ opacity: 0;
621
+ transform: translateY(30px);
622
+ }
623
+ to {
624
+ opacity: 1;
625
+ transform: translateY(0);
626
+ }
627
+ }
628
+
629
+ @keyframes fadeIn {
630
+ from {
631
+ opacity: 0;
632
+ }
633
+ to {
634
+ opacity: 1;
635
+ }
636
+ }
637
+
638
+ @keyframes fadeInUp {
639
+ from {
640
+ opacity: 0;
641
+ transform: translateY(20px);
642
+ }
643
+ to {
644
+ opacity: 1;
645
+ transform: translateY(0);
646
+ }
647
+ }
648
+
649
+ @keyframes scaleIn {
650
+ from {
651
+ opacity: 0;
652
+ transform: scale(0.9);
653
+ }
654
+ to {
655
+ opacity: 1;
656
+ transform: scale(1);
657
+ }
658
+ }
659
+
660
+ @keyframes pulse {
661
+ 0%, 100% {
662
+ box-shadow: 0 0 0 0 rgba(255, 107, 107, 0.7);
663
+ }
664
+ 50% {
665
+ box-shadow: 0 0 0 10px rgba(255, 107, 107, 0);
666
+ }
667
+ }
668
+
669
+ @keyframes bounce {
670
+ 0%, 100% {
671
+ transform: translateY(0);
672
+ }
673
+ 50% {
674
+ transform: translateY(-10px);
675
+ }
676
+ }
677
+
678
+ /* ============================================
679
+ RESPONSIVIDADE
680
+ ============================================ */
681
+ @media (max-width: 768px) {
682
+ .content {
683
+ padding: 1rem;
684
+ }
685
+
686
+ .hero-section {
687
+ padding: 2rem 1.5rem;
688
+ }
689
+
690
+ .hero-title {
691
+ font-size: 2.5rem;
692
+ }
693
+
694
+ .hero-subtitle {
695
+ font-size: 1.1rem;
696
+ }
697
+
698
+ h1 {
699
+ font-size: 2.5rem;
700
+ }
701
+
702
+ h2 {
703
+ font-size: 1.8rem;
704
+ }
705
+
706
+ .hero-cta {
707
+ flex-direction: column;
708
+ align-items: center;
709
+ }
710
+
711
+ .btn {
712
+ width: 100%;
713
+ max-width: 300px;
714
+ }
715
+
716
+ .project-meta {
717
+ flex-direction: column;
718
+ gap: 1rem;
719
+ }
720
+
721
+ .toc-list {
722
+ grid-template-columns: 1fr;
723
+ }
724
+
725
+ .method-list {
726
+ grid-template-columns: 1fr;
727
+ }
728
+
729
+ .features-grid {
730
+ grid-template-columns: repeat(2, 1fr);
731
+ }
732
+
733
+ .install-box {
734
+ flex-direction: column;
735
+ }
736
+
737
+ .install-command {
738
+ width: 100%;
739
+ }
740
+
741
+ .copy-btn {
742
+ width: 100%;
743
+ }
744
+
745
+ .links {
746
+ flex-direction: column;
747
+ }
748
+
749
+ .links li a {
750
+ width: 100%;
751
+ text-align: center;
752
+ }
753
+ }
754
+
755
+ @media (max-width: 480px) {
756
+ .hero-title {
757
+ font-size: 2rem;
758
+ }
759
+
760
+ h1 {
761
+ font-size: 1.8rem;
762
+ }
763
+
764
+ h2 {
765
+ font-size: 1.4rem;
766
+ }
767
+
768
+ .project-section {
769
+ padding: 1.5rem 1rem;
770
+ }
771
+
772
+ .features-grid {
773
+ grid-template-columns: 1fr;
774
+ }
775
+
776
+ .project-badges {
777
+ gap: 1rem;
778
+ }
779
+
780
+ .badge-link img {
781
+ max-height: 30px;
782
+ }
783
+ }
784
+
785
+ /* ============================================
786
+ MODO ESCURO (OPCIONAL)
787
+ ============================================ */
788
+ @media (prefers-color-scheme: dark) {
789
+ body {
790
+ background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
791
+ }
792
+
793
+ .project-section,
794
+ .hero-section,
795
+ .toc-section {
796
+ background: rgba(255, 255, 255, 0.05);
797
+ color: #ecf0f1;
798
+ }
799
+
800
+ h1, h2, h3, h4, h5, h6 {
801
+ color: #ecf0f1;
802
+ }
803
+
804
+ p {
805
+ color: #bdc3c7;
806
+ }
807
+
808
+ .method h3 code {
809
+ background: rgba(255, 107, 107, 0.2);
810
+ }
811
+
812
+ .feature-card {
813
+ background: rgba(255, 107, 107, 0.05);
814
+ }
815
+
816
+ .feature-card p {
817
+ color: #bdc3c7;
818
+ }
819
+
820
+ .method p {
821
+ color: #bdc3c7;
822
+ }
823
+
824
+ .project-footer {
825
+ border-top-color: rgba(255, 255, 255, 0.1);
826
+ color: #bdc3c7;
827
+ }
828
+ }