peek-carousel 1.0.2

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.
Files changed (47) hide show
  1. package/LICENSE +21 -0
  2. package/README.en.md +238 -0
  3. package/README.md +234 -0
  4. package/dist/peek-carousel.css +1 -0
  5. package/dist/peek-carousel.esm.js +1368 -0
  6. package/dist/peek-carousel.esm.js.map +1 -0
  7. package/dist/peek-carousel.esm.min.js +8 -0
  8. package/dist/peek-carousel.esm.min.js.map +1 -0
  9. package/dist/peek-carousel.js +1376 -0
  10. package/dist/peek-carousel.js.map +1 -0
  11. package/dist/peek-carousel.min.css +1 -0
  12. package/dist/peek-carousel.min.js +8 -0
  13. package/dist/peek-carousel.min.js.map +1 -0
  14. package/examples/example-built.html +367 -0
  15. package/examples/example.css +2216 -0
  16. package/examples/example.js +404 -0
  17. package/examples/example.min.css +1 -0
  18. package/examples/example.min.js +1 -0
  19. package/package.json +92 -0
  20. package/src/core/PeekCarousel.js +294 -0
  21. package/src/core/config.js +49 -0
  22. package/src/core/constants.js +73 -0
  23. package/src/modules/Animator.js +244 -0
  24. package/src/modules/AutoRotate.js +43 -0
  25. package/src/modules/EventHandler.js +390 -0
  26. package/src/modules/Navigator.js +116 -0
  27. package/src/modules/UIManager.js +170 -0
  28. package/src/peek-carousel.d.ts +34 -0
  29. package/src/styles/base/_accessibility.scss +16 -0
  30. package/src/styles/base/_mixins.scss +7 -0
  31. package/src/styles/base/_variables.scss +75 -0
  32. package/src/styles/components/_carousel.scss +5 -0
  33. package/src/styles/components/_counter.scss +109 -0
  34. package/src/styles/components/_indicators.scss +154 -0
  35. package/src/styles/components/_navigation.scss +193 -0
  36. package/src/styles/components/carousel/_carousel-base.scss +99 -0
  37. package/src/styles/components/carousel/_carousel-classic.scss +76 -0
  38. package/src/styles/components/carousel/_carousel-mixins.scss +18 -0
  39. package/src/styles/components/carousel/_carousel-radial.scss +72 -0
  40. package/src/styles/components/carousel/_carousel-stack.scss +84 -0
  41. package/src/styles/components/carousel/_carousel-variables.scss +118 -0
  42. package/src/styles/peek-carousel.scss +11 -0
  43. package/src/utils/dom.js +53 -0
  44. package/src/utils/helpers.js +46 -0
  45. package/src/utils/icons.js +92 -0
  46. package/src/utils/preloader.js +69 -0
  47. package/types/index.d.ts +34 -0
@@ -0,0 +1,2216 @@
1
+ :root {
2
+ --color-primary: #667eea;
3
+ --color-secondary: #764ba2;
4
+ --color-bg-dark: #1a1a2e;
5
+ --color-bg-black: #000000;
6
+ --color-white: #ffffff;
7
+ --color-overlay: rgba(0, 0, 0, 0.7);
8
+ --color-overlay-hover: rgba(0, 0, 0, 0.8);
9
+ --color-border: rgba(255, 255, 255, 0.2);
10
+ --color-border-hover: rgba(255, 255, 255, 0.35);
11
+ --color-bg-item: rgba(255, 255, 255, 0.05);
12
+ --color-bg-item-hover: rgba(255, 255, 255, 0.1);
13
+ --color-bg-item-light: rgba(255, 255, 255, 0.08);
14
+ --spacing-xs: 8px;
15
+ --spacing-sm: 10px;
16
+ --spacing-md: 12px;
17
+ --spacing-lg: 20px;
18
+ --border-radius: 8px;
19
+ --border-radius-lg: 12px;
20
+ --button-size: 48px;
21
+ --button-size-mobile: 40px;
22
+ --transition: all 0.3s ease;
23
+ --transition-fast: all 0.2s ease;
24
+ }
25
+
26
+ * {
27
+ margin: 0;
28
+ padding: 0;
29
+ box-sizing: border-box;
30
+ }
31
+
32
+ html {
33
+ height: 100%;
34
+ }
35
+
36
+ body {
37
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
38
+ background: radial-gradient(ellipse at center, var(--color-bg-dark) 0%, var(--color-bg-black) 100%);
39
+ background-attachment: fixed;
40
+ min-height: 100vh;
41
+ position: relative;
42
+ width: 100%;
43
+ }
44
+
45
+ body::before {
46
+ content: '';
47
+ position: absolute;
48
+ inset: 0;
49
+ background-image:
50
+ linear-gradient(rgba(102, 126, 234, 0.03) 1px, transparent 1px),
51
+ linear-gradient(90deg, rgba(102, 126, 234, 0.03) 1px, transparent 1px),
52
+ linear-gradient(rgba(102, 126, 234, 0.05) 1px, transparent 1px),
53
+ linear-gradient(90deg, rgba(102, 126, 234, 0.05) 1px, transparent 1px);
54
+ background-size:
55
+ 20px 20px,
56
+ 20px 20px,
57
+ 100px 100px,
58
+ 100px 100px;
59
+ background-position:
60
+ 0 0,
61
+ 0 0,
62
+ 0 0,
63
+ 0 0;
64
+ animation: gridMove 20s linear infinite;
65
+ z-index: -1;
66
+ }
67
+
68
+ @keyframes gridMove {
69
+ 0% {
70
+ background-position:
71
+ 0 0,
72
+ 0 0,
73
+ 0 0,
74
+ 0 0;
75
+ }
76
+ 100% {
77
+ background-position:
78
+ 20px 20px,
79
+ 20px 20px,
80
+ 100px 100px,
81
+ 100px 100px;
82
+ }
83
+ }
84
+
85
+ .wrapper {
86
+ position: relative;
87
+ width: 100vw;
88
+ display: flex;
89
+ flex-direction: column;
90
+ }
91
+
92
+ .wrapper > .intro__text {
93
+ flex: 0 0 auto;
94
+ position: relative;
95
+ top: auto;
96
+ left: auto;
97
+ transform: none;
98
+ padding: 4rem 2rem 1rem;
99
+ margin: 0 auto;
100
+ max-width: 800px;
101
+ }
102
+
103
+ .wrapper > .peek-carousel {
104
+ flex: 1;
105
+ min-height: calc(100vh - 200px);
106
+ display: flex;
107
+ align-items: center;
108
+ justify-content: center;
109
+ padding: 3rem 2rem 8rem;
110
+ position: relative;
111
+ overflow: visible;
112
+ }
113
+
114
+ .wrapper > .peek-carousel::after {
115
+ content: '';
116
+ position: absolute;
117
+ bottom: 0;
118
+ left: 50%;
119
+ transform: translateX(-50%);
120
+ width: 80%;
121
+ height: 180px;
122
+ background:
123
+ radial-gradient(
124
+ ellipse at center,
125
+ rgba(17, 24, 39, 0.6) 0%,
126
+ rgba(17, 24, 39, 0.3) 50%,
127
+ transparent 100%
128
+ );
129
+ pointer-events: none;
130
+ filter: blur(30px);
131
+ z-index: 0;
132
+ }
133
+
134
+ .circle__button {
135
+ width: var(--button-size);
136
+ height: var(--button-size);
137
+ display: flex;
138
+ align-items: center;
139
+ justify-content: center;
140
+ background: var(--color-overlay);
141
+ backdrop-filter: blur(12px);
142
+ border: 1px solid var(--color-border);
143
+ border-radius: 50%;
144
+ color: var(--color-white);
145
+ transition: var(--transition);
146
+ }
147
+
148
+ .circle__button:hover {
149
+ background: var(--color-overlay-hover);
150
+ border-color: var(--color-border-hover);
151
+ }
152
+
153
+ .github__link {
154
+ position: absolute;
155
+ top: var(--spacing-lg);
156
+ left: var(--spacing-lg);
157
+ z-index: 200;
158
+ text-decoration: none;
159
+ }
160
+
161
+ .github__link svg {
162
+ transition: transform 0.3s ease;
163
+ }
164
+
165
+ .github__link:hover svg {
166
+ animation: octocat-wave 0.6s ease-in-out;
167
+ }
168
+
169
+ .tooltip {
170
+ position: absolute;
171
+ left: 100%;
172
+ top: 50%;
173
+ transform: translateY(-50%);
174
+ margin-left: var(--spacing-md);
175
+ padding: 0.5rem 0.75rem;
176
+ background: var(--color-overlay-hover);
177
+ backdrop-filter: blur(12px);
178
+ border: 1px solid var(--color-border);
179
+ border-radius: 6px;
180
+ color: var(--color-white);
181
+ font-size: 0.875rem;
182
+ white-space: nowrap;
183
+ opacity: 0;
184
+ pointer-events: none;
185
+ transition: var(--transition-fast);
186
+ }
187
+
188
+ .tooltip::before {
189
+ content: '';
190
+ position: absolute;
191
+ right: 100%;
192
+ top: 50%;
193
+ transform: translateY(-50%);
194
+ border: 6px solid transparent;
195
+ border-right-color: var(--color-border);
196
+ }
197
+
198
+ .tooltip::after {
199
+ content: '';
200
+ position: absolute;
201
+ right: 100%;
202
+ top: 50%;
203
+ transform: translateY(-50%);
204
+ border: 5px solid transparent;
205
+ border-right-color: var(--color-overlay-hover);
206
+ margin-right: -1px;
207
+ }
208
+
209
+ .github__link:hover .tooltip {
210
+ opacity: 1;
211
+ transform: translateY(-50%) translateX(4px);
212
+ }
213
+
214
+ @keyframes octocat-wave {
215
+ 0%, 100% {
216
+ transform: rotate(0deg);
217
+ }
218
+ 20% {
219
+ transform: rotate(-15deg);
220
+ }
221
+ 40% {
222
+ transform: rotate(10deg);
223
+ }
224
+ 60% {
225
+ transform: rotate(-10deg);
226
+ }
227
+ 80% {
228
+ transform: rotate(5deg);
229
+ }
230
+ }
231
+
232
+ .intro__text {
233
+ color: white;
234
+ text-align: center;
235
+ z-index: 10;
236
+ pointer-events: none;
237
+ animation: fadeInUp 0.8s ease-out;
238
+ }
239
+
240
+ @keyframes fadeInUp {
241
+ from {
242
+ opacity: 0;
243
+ transform: translateY(30px);
244
+ }
245
+ to {
246
+ opacity: 1;
247
+ transform: translateY(0);
248
+ }
249
+ }
250
+
251
+ .intro__text h1 {
252
+ font-size: clamp(2.5rem, 6vw, 4rem);
253
+ font-weight: 800;
254
+ margin-bottom: 1.25rem;
255
+ background: linear-gradient(
256
+ 135deg,
257
+ var(--color-primary) 0%,
258
+ var(--color-secondary) 50%,
259
+ var(--color-primary) 100%
260
+ );
261
+ background-size: 200% 200%;
262
+ -webkit-background-clip: text;
263
+ -webkit-text-fill-color: transparent;
264
+ background-clip: text;
265
+ letter-spacing: -0.03em;
266
+ line-height: 1.1;
267
+ animation: gradientShift 8s ease infinite;
268
+ text-shadow: 0 0 40px rgba(102, 126, 234, 0.3);
269
+ }
270
+
271
+ @keyframes gradientShift {
272
+ 0%, 100% {
273
+ background-position: 0% 50%;
274
+ }
275
+ 50% {
276
+ background-position: 100% 50%;
277
+ }
278
+ }
279
+
280
+ .intro__text p {
281
+ font-size: clamp(1.125rem, 2.5vw, 1.375rem);
282
+ color: rgba(255, 255, 255, 0.85);
283
+ max-width: 600px;
284
+ margin: 0 auto;
285
+ line-height: 1.7;
286
+ font-weight: 400;
287
+ letter-spacing: 0.01em;
288
+ }
289
+
290
+ .top__controls {
291
+ position: absolute;
292
+ top: var(--spacing-lg);
293
+ right: var(--spacing-lg);
294
+ z-index: 250;
295
+ display: flex;
296
+ gap: var(--spacing-sm);
297
+ }
298
+
299
+ .controls__toggle,
300
+ .keyboard__toggle,
301
+ .mouse__toggle,
302
+ .api__toggle {
303
+ cursor: pointer;
304
+ }
305
+
306
+ .controls__toggle:hover,
307
+ .keyboard__toggle:hover,
308
+ .mouse__toggle:hover,
309
+ .api__toggle:hover {
310
+ background: var(--color-overlay-hover);
311
+ border-color: var(--color-border-hover);
312
+ }
313
+
314
+ .controls__toggle:hover .tooltip,
315
+ .keyboard__toggle:hover .tooltip,
316
+ .mouse__toggle:hover .tooltip,
317
+ .api__toggle:hover .tooltip {
318
+ opacity: 1;
319
+ transform: translateY(-50%) translateX(-4px);
320
+ }
321
+
322
+ .controls__toggle[aria-expanded="true"],
323
+ .keyboard__toggle[aria-expanded="true"],
324
+ .mouse__toggle[aria-expanded="true"],
325
+ .api__toggle[aria-expanded="true"] {
326
+ background: var(--color-overlay-hover);
327
+ border-color: var(--color-primary);
328
+ }
329
+
330
+ .controls__toggle svg {
331
+ transition: transform 0.3s ease;
332
+ }
333
+
334
+ .controls__toggle[aria-expanded="true"] svg {
335
+ transform: rotate(90deg);
336
+ }
337
+
338
+ .controls__toggle .tooltip,
339
+ .keyboard__toggle .tooltip,
340
+ .mouse__toggle .tooltip,
341
+ .api__toggle .tooltip {
342
+ left: auto;
343
+ right: 100%;
344
+ margin-right: var(--spacing-md);
345
+ margin-left: 0;
346
+ transform: translateY(-50%);
347
+ }
348
+
349
+ .controls__toggle .tooltip::before,
350
+ .keyboard__toggle .tooltip::before,
351
+ .mouse__toggle .tooltip::before,
352
+ .api__toggle .tooltip::before {
353
+ right: auto;
354
+ left: 100%;
355
+ border-right-color: transparent;
356
+ border-left-color: var(--color-border);
357
+ }
358
+
359
+ .controls__toggle .tooltip::after,
360
+ .keyboard__toggle .tooltip::after,
361
+ .mouse__toggle .tooltip::after,
362
+ .api__toggle .tooltip::after {
363
+ right: auto;
364
+ left: 100%;
365
+ margin-right: 0;
366
+ margin-left: -1px;
367
+ border-right-color: transparent;
368
+ border-left-color: var(--color-overlay-hover);
369
+ }
370
+
371
+ .controls__panel,
372
+ .keyboard__panel,
373
+ .mouse__panel,
374
+ .api__panel {
375
+ position: absolute;
376
+ top: calc(var(--spacing-lg) + var(--button-size) + var(--spacing-sm));
377
+ right: var(--spacing-lg);
378
+ z-index: 200;
379
+ width: 300px;
380
+ max-height: calc(100vh - var(--spacing-lg) - var(--button-size) - var(--spacing-sm) - var(--spacing-lg));
381
+ overflow-y: auto;
382
+ background: var(--color-overlay);
383
+ backdrop-filter: blur(16px);
384
+ border: 1px solid var(--color-border);
385
+ border-radius: var(--border-radius-lg);
386
+ padding: 1.25rem;
387
+ transform: translateY(-10px);
388
+ opacity: 0;
389
+ visibility: hidden;
390
+ pointer-events: none;
391
+ transition: transform 0.25s ease, opacity 0.25s ease, visibility 0.25s;
392
+ }
393
+
394
+ .api__panel {
395
+ right: calc(var(--spacing-lg) + (var(--button-size) + var(--spacing-sm)) * 3);
396
+ }
397
+
398
+ .keyboard__panel {
399
+ right: calc(var(--spacing-lg) + (var(--button-size) + var(--spacing-sm)) * 2);
400
+ }
401
+
402
+ .mouse__panel {
403
+ right: calc(var(--spacing-lg) + var(--button-size) + var(--spacing-sm));
404
+ }
405
+
406
+ .controls__panel::before,
407
+ .keyboard__panel::before,
408
+ .mouse__panel::before,
409
+ .api__panel::before {
410
+ content: '';
411
+ position: absolute;
412
+ top: -8px;
413
+ right: 14px;
414
+ width: 0;
415
+ height: 0;
416
+ border-left: 8px solid transparent;
417
+ border-right: 8px solid transparent;
418
+ border-bottom: 8px solid var(--color-border);
419
+ }
420
+
421
+ .controls__panel::after,
422
+ .keyboard__panel::after,
423
+ .mouse__panel::after,
424
+ .api__panel::after {
425
+ content: '';
426
+ position: absolute;
427
+ top: -6px;
428
+ right: 15px;
429
+ width: 0;
430
+ height: 0;
431
+ border-left: 7px solid transparent;
432
+ border-right: 7px solid transparent;
433
+ border-bottom: 7px solid var(--color-overlay);
434
+ }
435
+
436
+ .controls__panel--active,
437
+ .keyboard__panel--active,
438
+ .mouse__panel--active,
439
+ .api__panel--active {
440
+ transform: translateY(0);
441
+ opacity: 1;
442
+ visibility: visible;
443
+ pointer-events: auto;
444
+ }
445
+
446
+ .controls__header,
447
+ .keyboard__header,
448
+ .mouse__header,
449
+ .api__header {
450
+ margin-bottom: 1.25rem;
451
+ padding-bottom: 1rem;
452
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
453
+ }
454
+
455
+ .controls__header h3,
456
+ .keyboard__header h3,
457
+ .mouse__header h3,
458
+ .api__header h3 {
459
+ color: var(--color-white);
460
+ font-size: 1.125rem;
461
+ font-weight: 600;
462
+ margin: 0;
463
+ }
464
+
465
+ /* API Panel Specific Styles */
466
+ .api__content {
467
+ max-height: calc(100vh - 200px);
468
+ overflow-y: auto;
469
+ }
470
+
471
+ .api__section {
472
+ margin-bottom: 1.5rem;
473
+ }
474
+
475
+ .api__section:last-child {
476
+ margin-bottom: 0;
477
+ }
478
+
479
+ .api__section-title {
480
+ color: var(--color-primary);
481
+ font-size: 0.9375rem;
482
+ font-weight: 600;
483
+ margin-bottom: 0.875rem;
484
+ text-transform: uppercase;
485
+ letter-spacing: 0.05em;
486
+ }
487
+
488
+ .api__code-block {
489
+ background: rgba(0, 0, 0, 0.3);
490
+ border: 1px solid rgba(102, 126, 234, 0.3);
491
+ border-radius: 6px;
492
+ padding: 0.875rem;
493
+ margin-bottom: 0.75rem;
494
+ }
495
+
496
+ .api__code-block code {
497
+ color: #a5b4fc;
498
+ font-family: 'Fira Code', 'Monaco', 'Menlo', monospace;
499
+ font-size: 0.8125rem;
500
+ line-height: 1.5;
501
+ white-space: pre-wrap;
502
+ word-break: break-all;
503
+ }
504
+
505
+ .api__method {
506
+ background: rgba(255, 255, 255, 0.03);
507
+ border: 1px solid var(--color-border);
508
+ border-radius: var(--border-radius);
509
+ padding: 0.75rem;
510
+ margin-bottom: 0.5rem;
511
+ transition: var(--transition-fast);
512
+ }
513
+
514
+ .api__method:hover {
515
+ background: rgba(255, 255, 255, 0.05);
516
+ border-color: var(--color-border-hover);
517
+ }
518
+
519
+ .api__method-name {
520
+ background: rgba(102, 126, 234, 0.1);
521
+ border: 1px solid rgba(102, 126, 234, 0.3);
522
+ border-radius: 4px;
523
+ color: var(--color-primary);
524
+ font-family: 'Fira Code', 'Monaco', 'Menlo', monospace;
525
+ font-size: 0.8125rem;
526
+ padding: 0.25rem 0.5rem;
527
+ display: block;
528
+ margin-bottom: 0.375rem;
529
+ word-break: break-word;
530
+ }
531
+
532
+ .api__method-desc {
533
+ color: rgba(255, 255, 255, 0.75);
534
+ font-size: 0.8125rem;
535
+ line-height: 1.4;
536
+ }
537
+
538
+ .api__options {
539
+ display: flex;
540
+ flex-direction: column;
541
+ gap: 0.5rem;
542
+ }
543
+
544
+ .api__option {
545
+ background: rgba(255, 255, 255, 0.03);
546
+ border: 1px solid var(--color-border);
547
+ border-radius: var(--border-radius);
548
+ padding: 0.625rem;
549
+ display: flex;
550
+ flex-direction: column;
551
+ gap: 0.25rem;
552
+ transition: var(--transition-fast);
553
+ }
554
+
555
+ .api__option:hover {
556
+ background: rgba(255, 255, 255, 0.05);
557
+ border-color: var(--color-border-hover);
558
+ }
559
+
560
+ .api__option code {
561
+ color: var(--color-primary);
562
+ font-family: 'Fira Code', 'Monaco', 'Menlo', monospace;
563
+ font-size: 0.8125rem;
564
+ font-weight: 600;
565
+ }
566
+
567
+ .api__option span {
568
+ color: rgba(255, 255, 255, 0.65);
569
+ font-size: 0.75rem;
570
+ }
571
+
572
+ .control__section {
573
+ margin-bottom: 1.25rem;
574
+ }
575
+
576
+ .control__section:last-child {
577
+ margin-bottom: 0;
578
+ }
579
+
580
+ .section__label {
581
+ display: block;
582
+ color: var(--color-white);
583
+ font-size: 0.8125rem;
584
+ font-weight: 600;
585
+ text-transform: uppercase;
586
+ letter-spacing: 0.05em;
587
+ margin-bottom: 0.75rem;
588
+ opacity: 0.7;
589
+ }
590
+
591
+ .button__group {
592
+ display: grid;
593
+ grid-template-columns: repeat(3, 1fr);
594
+ gap: 0.5rem;
595
+ }
596
+
597
+ .button__group-item {
598
+ display: flex;
599
+ flex-direction: column;
600
+ align-items: center;
601
+ gap: 0.375rem;
602
+ padding: 0.75rem 0.5rem;
603
+ background: var(--color-bg-item);
604
+ border: 1px solid var(--color-border);
605
+ border-radius: var(--border-radius);
606
+ color: var(--color-white);
607
+ font-size: 0.75rem;
608
+ font-weight: 500;
609
+ cursor: pointer;
610
+ transition: var(--transition);
611
+ }
612
+
613
+ .button__group-item:hover {
614
+ background: var(--color-bg-item-hover);
615
+ border-color: var(--color-border-hover);
616
+ }
617
+
618
+ .button__group-item--active {
619
+ background: var(--color-primary);
620
+ border-color: var(--color-primary);
621
+ }
622
+
623
+ .button__group-item svg {
624
+ opacity: 0.8;
625
+ }
626
+
627
+ .button__group-item--active svg {
628
+ opacity: 1;
629
+ }
630
+
631
+ .switch__group {
632
+ display: flex;
633
+ flex-direction: column;
634
+ gap: 0.75rem;
635
+ }
636
+
637
+ .switch__item {
638
+ display: flex;
639
+ align-items: center;
640
+ justify-content: space-between;
641
+ padding: 0.75rem;
642
+ background: var(--color-bg-item);
643
+ border: 1px solid var(--color-border);
644
+ border-radius: var(--border-radius);
645
+ cursor: pointer;
646
+ transition: var(--transition);
647
+ position: relative;
648
+ }
649
+
650
+ .switch__item:hover {
651
+ background: var(--color-bg-item-light);
652
+ border-color: var(--color-border-hover);
653
+ }
654
+
655
+ .switch__label {
656
+ display: flex;
657
+ align-items: center;
658
+ gap: 0.5rem;
659
+ color: var(--color-white);
660
+ font-size: 0.875rem;
661
+ font-weight: 500;
662
+ user-select: none;
663
+ }
664
+
665
+ .switch__label svg {
666
+ opacity: 0.8;
667
+ }
668
+
669
+ .switch__item input[type="checkbox"] {
670
+ position: absolute;
671
+ opacity: 0;
672
+ width: 0;
673
+ height: 0;
674
+ }
675
+
676
+ .switch__slider {
677
+ position: relative;
678
+ width: 44px;
679
+ height: 24px;
680
+ background: rgba(255, 255, 255, 0.2);
681
+ border-radius: 12px;
682
+ transition: var(--transition);
683
+ }
684
+
685
+ .switch__slider::before {
686
+ content: '';
687
+ position: absolute;
688
+ top: 2px;
689
+ left: 2px;
690
+ width: 20px;
691
+ height: 20px;
692
+ background: var(--color-white);
693
+ border-radius: 50%;
694
+ transition: var(--transition);
695
+ }
696
+
697
+ .switch__item input[type="checkbox"]:checked ~ .switch__slider {
698
+ background: var(--color-primary);
699
+ }
700
+
701
+ .switch__item input[type="checkbox"]:checked ~ .switch__slider::before {
702
+ transform: translateX(20px);
703
+ }
704
+
705
+ .keyboard__shortcuts {
706
+ display: flex;
707
+ flex-direction: column;
708
+ gap: 0.75rem;
709
+ }
710
+
711
+ .shortcut__item {
712
+ display: flex;
713
+ align-items: center;
714
+ justify-content: space-between;
715
+ padding: 0.75rem;
716
+ background: var(--color-bg-item);
717
+ border: 1px solid var(--color-border);
718
+ border-radius: var(--border-radius);
719
+ transition: var(--transition);
720
+ }
721
+
722
+ .shortcut__item:hover {
723
+ background: var(--color-bg-item-light);
724
+ border-color: var(--color-border-hover);
725
+ }
726
+
727
+ .shortcut__key {
728
+ display: inline-flex;
729
+ align-items: center;
730
+ justify-content: center;
731
+ min-width: 2.5rem;
732
+ padding: 0.375rem 0.625rem;
733
+ background: var(--color-bg-item-light);
734
+ border: 1px solid var(--color-border);
735
+ border-radius: 4px;
736
+ color: var(--color-white);
737
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, monospace;
738
+ font-size: 0.8125rem;
739
+ font-weight: 600;
740
+ box-shadow: 0 2px 0 rgba(0, 0, 0, 0.2);
741
+ }
742
+
743
+ .shortcut__key--range {
744
+ min-width: 3.5rem;
745
+ letter-spacing: 0.05em;
746
+ }
747
+
748
+ .shortcut__description {
749
+ color: var(--color-white);
750
+ font-size: 0.875rem;
751
+ font-weight: 500;
752
+ }
753
+
754
+ .mouse__controls {
755
+ display: flex;
756
+ flex-direction: column;
757
+ gap: 0.75rem;
758
+ }
759
+
760
+ .control__item {
761
+ display: flex;
762
+ align-items: flex-start;
763
+ gap: 0.875rem;
764
+ padding: 0.875rem;
765
+ background: var(--color-bg-item);
766
+ border: 1px solid var(--color-border);
767
+ border-radius: var(--border-radius);
768
+ transition: var(--transition);
769
+ }
770
+
771
+ .control__item:hover {
772
+ background: var(--color-bg-item-light);
773
+ border-color: var(--color-border-hover);
774
+ }
775
+
776
+ .control__icon {
777
+ display: flex;
778
+ align-items: center;
779
+ justify-content: center;
780
+ flex-shrink: 0;
781
+ width: 2.5rem;
782
+ height: 2.5rem;
783
+ background: var(--color-bg-item-light);
784
+ border: 1px solid var(--color-border);
785
+ border-radius: 6px;
786
+ color: var(--color-primary);
787
+ }
788
+
789
+ .control__content {
790
+ display: flex;
791
+ flex-direction: column;
792
+ gap: 0.25rem;
793
+ flex: 1;
794
+ min-width: 0;
795
+ }
796
+
797
+ .control__title {
798
+ color: var(--color-white);
799
+ font-size: 0.875rem;
800
+ font-weight: 600;
801
+ line-height: 1.3;
802
+ }
803
+
804
+ .control__description {
805
+ color: rgba(255, 255, 255, 0.65);
806
+ font-size: 0.75rem;
807
+ font-weight: 400;
808
+ line-height: 1.4;
809
+ }
810
+
811
+ /* Carousel Item Enhancements */
812
+ .peek-carousel__item {
813
+ transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
814
+ }
815
+
816
+ .peek-carousel__figure {
817
+ position: relative;
818
+ overflow: hidden;
819
+ border-radius: 16px;
820
+ box-shadow:
821
+ 0 20px 60px rgba(0, 0, 0, 0.4),
822
+ 0 10px 30px rgba(0, 0, 0, 0.3),
823
+ 0 0 0 1px rgba(255, 255, 255, 0.1);
824
+ transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
825
+ }
826
+
827
+ .peek-carousel__figure::before {
828
+ content: '';
829
+ position: absolute;
830
+ inset: 0;
831
+ background: linear-gradient(
832
+ 135deg,
833
+ rgba(102, 126, 234, 0.1) 0%,
834
+ transparent 50%,
835
+ rgba(118, 75, 162, 0.1) 100%
836
+ );
837
+ opacity: 0;
838
+ transition: opacity 0.4s ease;
839
+ pointer-events: none;
840
+ z-index: 1;
841
+ }
842
+
843
+ .peek-carousel__item--active .peek-carousel__figure::before {
844
+ opacity: 1;
845
+ }
846
+
847
+ .peek-carousel__item--active .peek-carousel__figure {
848
+ box-shadow:
849
+ 0 30px 80px rgba(102, 126, 234, 0.3),
850
+ 0 20px 50px rgba(0, 0, 0, 0.4),
851
+ 0 0 0 1px rgba(102, 126, 234, 0.3),
852
+ 0 0 60px rgba(102, 126, 234, 0.2);
853
+ transform: translateY(-5px);
854
+ }
855
+
856
+ .peek-carousel__image {
857
+ display: block;
858
+ width: 100%;
859
+ height: auto;
860
+ transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1);
861
+ }
862
+
863
+ .peek-carousel__item--active .peek-carousel__image {
864
+ transform: scale(1.02);
865
+ }
866
+
867
+ .peek-carousel__caption {
868
+ position: absolute;
869
+ bottom: 0;
870
+ left: 0;
871
+ right: 0;
872
+ padding: 2.5rem 2rem;
873
+ background: linear-gradient(
874
+ to top,
875
+ rgba(0, 0, 0, 0.95) 0%,
876
+ rgba(0, 0, 0, 0.85) 50%,
877
+ rgba(0, 0, 0, 0.3) 90%,
878
+ transparent 100%
879
+ );
880
+ backdrop-filter: blur(10px);
881
+ transform: translateY(0);
882
+ transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
883
+ z-index: 2;
884
+ }
885
+
886
+ .peek-carousel__item:not(.peek-carousel__item--active) .peek-carousel__caption {
887
+ opacity: 0.7;
888
+ transform: translateY(10px);
889
+ }
890
+
891
+ .peek-carousel__caption-title {
892
+ display: block;
893
+ font-weight: 700;
894
+ font-size: 2rem;
895
+ margin-bottom: 0.625rem;
896
+ line-height: 1.2;
897
+ letter-spacing: -0.02em;
898
+ background: linear-gradient(
899
+ 135deg,
900
+ #ffffff 0%,
901
+ rgba(255, 255, 255, 0.95) 100%
902
+ );
903
+ -webkit-background-clip: text;
904
+ -webkit-text-fill-color: transparent;
905
+ background-clip: text;
906
+ text-shadow: 0 2px 10px rgba(0, 0, 0, 0.3);
907
+ animation: titleShimmer 3s ease-in-out infinite;
908
+ }
909
+
910
+ @keyframes titleShimmer {
911
+ 0%, 100% {
912
+ background-position: 0% 50%;
913
+ }
914
+ 50% {
915
+ background-position: 100% 50%;
916
+ }
917
+ }
918
+
919
+ .peek-carousel__caption-subtitle {
920
+ color: rgba(255, 255, 255, 0.85);
921
+ font-size: 1.15rem;
922
+ line-height: 1.5;
923
+ font-weight: 400;
924
+ letter-spacing: 0.01em;
925
+ text-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);
926
+ }
927
+
928
+ /* Navigation Enhancements */
929
+ .peek-carousel__nav {
930
+ display: flex;
931
+ gap: 1rem;
932
+ align-items: center;
933
+ position: absolute;
934
+ bottom: 8rem;
935
+ left: 50%;
936
+ transform: translateX(-50%);
937
+ z-index: 10;
938
+ }
939
+
940
+ .peek-carousel__btn {
941
+ width: 56px;
942
+ height: 56px;
943
+ background: rgba(0, 0, 0, 0.6);
944
+ backdrop-filter: blur(20px);
945
+ border: 2px solid rgba(255, 255, 255, 0.15);
946
+ border-radius: 50%;
947
+ color: var(--color-white);
948
+ display: flex;
949
+ align-items: center;
950
+ justify-content: center;
951
+ cursor: pointer;
952
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
953
+ position: relative;
954
+ overflow: hidden;
955
+ }
956
+
957
+ .peek-carousel__btn::before {
958
+ content: '';
959
+ position: absolute;
960
+ inset: -50%;
961
+ background: linear-gradient(
962
+ 135deg,
963
+ transparent 30%,
964
+ rgba(102, 126, 234, 0.3) 50%,
965
+ transparent 70%
966
+ );
967
+ transform: translateX(-100%);
968
+ transition: transform 0.6s ease;
969
+ }
970
+
971
+ .peek-carousel__btn:hover {
972
+ background: rgba(102, 126, 234, 0.8);
973
+ border-color: rgba(102, 126, 234, 0.6);
974
+ transform: scale(1.1) translateY(-2px);
975
+ box-shadow:
976
+ 0 8px 24px rgba(102, 126, 234, 0.4),
977
+ 0 0 0 4px rgba(102, 126, 234, 0.1);
978
+ }
979
+
980
+ .peek-carousel__btn:hover::before {
981
+ transform: translateX(100%);
982
+ }
983
+
984
+ .peek-carousel__btn:active {
985
+ transform: scale(1.05) translateY(-1px);
986
+ }
987
+
988
+ .peek-carousel__btn svg {
989
+ width: 24px;
990
+ height: 24px;
991
+ filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.3));
992
+ }
993
+
994
+ /* Counter Enhancements */
995
+ .peek-carousel__counter {
996
+ position: static !important;
997
+ transform: none !important;
998
+ margin: 0;
999
+ }
1000
+
1001
+ .peek-carousel > .peek-carousel__counter {
1002
+ position: absolute !important;
1003
+ bottom: 12rem;
1004
+ left: 50%;
1005
+ transform: translateX(-50%) !important;
1006
+ background: rgba(0, 0, 0, 0.6);
1007
+ backdrop-filter: blur(20px);
1008
+ border: 2px solid rgba(102, 126, 234, 0.3);
1009
+ border-radius: 24px;
1010
+ padding: 0.625rem 1.5rem;
1011
+ color: var(--color-white);
1012
+ font-size: 0.9375rem;
1013
+ font-weight: 600;
1014
+ line-height: 1;
1015
+ display: flex;
1016
+ align-items: center;
1017
+ justify-content: center;
1018
+ height: max-content;
1019
+ box-shadow:
1020
+ 0 8px 24px rgba(0, 0, 0, 0.3),
1021
+ 0 0 0 1px rgba(255, 255, 255, 0.1);
1022
+ letter-spacing: 0.02em;
1023
+ animation: counterPulse 2s ease-in-out infinite;
1024
+ }
1025
+
1026
+ @keyframes counterPulse {
1027
+ 0%, 100% {
1028
+ box-shadow:
1029
+ 0 8px 24px rgba(0, 0, 0, 0.3),
1030
+ 0 0 0 1px rgba(255, 255, 255, 0.1);
1031
+ }
1032
+ 50% {
1033
+ box-shadow:
1034
+ 0 8px 32px rgba(102, 126, 234, 0.4),
1035
+ 0 0 0 2px rgba(102, 126, 234, 0.3);
1036
+ }
1037
+ }
1038
+
1039
+ /* Controls Enhancements */
1040
+ .peek-carousel__controls {
1041
+ bottom: 3rem;
1042
+ display: flex;
1043
+ gap: 1rem;
1044
+ position: absolute;
1045
+ left: 50%;
1046
+ transform: translateX(-50%);
1047
+ z-index: 10;
1048
+ }
1049
+
1050
+ .peek-carousel__indicators {
1051
+ display: flex;
1052
+ gap: 0.625rem;
1053
+ align-items: center;
1054
+ }
1055
+
1056
+ .peek-carousel__indicator {
1057
+ width: 10px;
1058
+ height: 10px;
1059
+ background: rgba(255, 255, 255, 0.3);
1060
+ border: 2px solid rgba(255, 255, 255, 0.5);
1061
+ border-radius: 50%;
1062
+ cursor: pointer;
1063
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1064
+ position: relative;
1065
+ }
1066
+
1067
+ .peek-carousel__indicator::before {
1068
+ content: '';
1069
+ position: absolute;
1070
+ inset: -4px;
1071
+ border: 2px solid transparent;
1072
+ border-radius: 50%;
1073
+ transition: all 0.3s ease;
1074
+ }
1075
+
1076
+ .peek-carousel__indicator:hover {
1077
+ background: rgba(255, 255, 255, 0.6);
1078
+ transform: scale(1.2);
1079
+ }
1080
+
1081
+ .peek-carousel__indicator--active {
1082
+ background: var(--color-primary);
1083
+ border-color: var(--color-primary);
1084
+ width: 32px;
1085
+ border-radius: 12px;
1086
+ box-shadow: 0 0 12px rgba(102, 126, 234, 0.6);
1087
+ }
1088
+
1089
+ .peek-carousel__indicator--active::before {
1090
+ border-color: rgba(102, 126, 234, 0.3);
1091
+ animation: indicatorRipple 2s ease-out infinite;
1092
+ }
1093
+
1094
+ @keyframes indicatorRipple {
1095
+ 0% {
1096
+ transform: scale(1);
1097
+ opacity: 1;
1098
+ }
1099
+ 100% {
1100
+ transform: scale(2);
1101
+ opacity: 0;
1102
+ }
1103
+ }
1104
+
1105
+ /* Auto-rotate Button Enhancements */
1106
+ .peek-carousel__auto-rotate-btn {
1107
+ width: 48px;
1108
+ height: 48px;
1109
+ background: rgba(0, 0, 0, 0.6);
1110
+ backdrop-filter: blur(20px);
1111
+ border: 2px solid rgba(255, 255, 255, 0.15);
1112
+ border-radius: 50%;
1113
+ color: var(--color-white);
1114
+ cursor: pointer;
1115
+ display: flex;
1116
+ align-items: center;
1117
+ justify-content: center;
1118
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1119
+ }
1120
+
1121
+ .peek-carousel__auto-rotate-btn:hover {
1122
+ background: rgba(118, 75, 162, 0.8);
1123
+ border-color: rgba(118, 75, 162, 0.6);
1124
+ transform: scale(1.1);
1125
+ box-shadow: 0 4px 16px rgba(118, 75, 162, 0.4);
1126
+ }
1127
+
1128
+ .peek-carousel__auto-rotate-btn--active {
1129
+ background: rgba(118, 75, 162, 0.8);
1130
+ border-color: rgba(118, 75, 162, 0.6);
1131
+ animation: rotate 2s linear infinite;
1132
+ }
1133
+
1134
+ @keyframes rotate {
1135
+ from {
1136
+ transform: rotate(0deg);
1137
+ }
1138
+ to {
1139
+ transform: rotate(360deg);
1140
+ }
1141
+ }
1142
+
1143
+ /* SNS 공유 패널 */
1144
+ .share__panel {
1145
+ backdrop-filter: blur(16px);
1146
+ background: var(--color-overlay);
1147
+ border: 1px solid var(--color-border);
1148
+ border-radius: var(--border-radius-lg);
1149
+ max-height: calc(100vh - var(--spacing-lg) - var(--button-size) - var(--spacing-sm) - var(--spacing-lg));
1150
+ opacity: 0;
1151
+ overflow-y: auto;
1152
+ padding: 1.25rem;
1153
+ pointer-events: none;
1154
+ position: absolute;
1155
+ right: var(--spacing-lg);
1156
+ top: calc(var(--spacing-lg) + var(--button-size) + var(--spacing-sm));
1157
+ transform: translateY(-10px);
1158
+ transition: transform .25s ease, opacity .25s ease, visibility .25s;
1159
+ visibility: hidden;
1160
+ width: 300px;
1161
+ z-index: 200;
1162
+ }
1163
+
1164
+ .share__panel:before {
1165
+ border-bottom: 8px solid var(--color-border);
1166
+ border-left: 8px solid transparent;
1167
+ border-right: 8px solid transparent;
1168
+ content: "";
1169
+ height: 0;
1170
+ position: absolute;
1171
+ right: calc(14px + (var(--button-size) + var(--spacing-sm)) * 0);
1172
+ top: -8px;
1173
+ width: 0;
1174
+ }
1175
+
1176
+ .share__panel:after {
1177
+ border-bottom: 7px solid var(--color-overlay);
1178
+ border-left: 7px solid transparent;
1179
+ border-right: 7px solid transparent;
1180
+ content: "";
1181
+ height: 0;
1182
+ position: absolute;
1183
+ right: calc(15px + (var(--button-size) + var(--spacing-sm)) * 0);
1184
+ top: -6px;
1185
+ width: 0;
1186
+ }
1187
+
1188
+ .share__panel--active {
1189
+ opacity: 1;
1190
+ pointer-events: auto;
1191
+ transform: translateY(0);
1192
+ visibility: visible;
1193
+ }
1194
+
1195
+ .share__header {
1196
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
1197
+ margin-bottom: 1.25rem;
1198
+ padding-bottom: 1rem;
1199
+ }
1200
+
1201
+ .share__header h3 {
1202
+ color: var(--color-white);
1203
+ font-size: 1.125rem;
1204
+ font-weight: 600;
1205
+ margin: 0;
1206
+ }
1207
+
1208
+ .share__buttons {
1209
+ display: flex;
1210
+ flex-direction: column;
1211
+ gap: 0.75rem;
1212
+ }
1213
+
1214
+ .share__item {
1215
+ align-items: flex-start;
1216
+ background: var(--color-bg-item);
1217
+ border: 1px solid var(--color-border);
1218
+ border-radius: var(--border-radius);
1219
+ display: flex;
1220
+ gap: 0.875rem;
1221
+ padding: 0.875rem;
1222
+ text-decoration: none;
1223
+ transition: var(--transition);
1224
+ }
1225
+
1226
+ .share__item:hover {
1227
+ background: var(--color-bg-item-light);
1228
+ border-color: var(--color-border-hover);
1229
+ }
1230
+
1231
+ .share__icon {
1232
+ align-items: center;
1233
+ background: var(--color-bg-item-light);
1234
+ border: 1px solid var(--color-border);
1235
+ border-radius: 6px;
1236
+ color: var(--color-primary);
1237
+ display: flex;
1238
+ flex-shrink: 0;
1239
+ height: 2.5rem;
1240
+ justify-content: center;
1241
+ width: 2.5rem;
1242
+ transition: var(--transition);
1243
+ }
1244
+
1245
+ .share__item--twitter:hover .share__icon {
1246
+ background: #000000;
1247
+ border-color: #000000;
1248
+ color: var(--color-white);
1249
+ }
1250
+
1251
+ .share__item--facebook:hover .share__icon {
1252
+ background: #1877F2;
1253
+ border-color: #1877F2;
1254
+ color: var(--color-white);
1255
+ }
1256
+
1257
+ .share__item--linkedin:hover .share__icon {
1258
+ background: #0A66C2;
1259
+ border-color: #0A66C2;
1260
+ color: var(--color-white);
1261
+ }
1262
+
1263
+ .share__item--reddit:hover .share__icon {
1264
+ background: #FF4500;
1265
+ border-color: #FF4500;
1266
+ color: var(--color-white);
1267
+ }
1268
+
1269
+ .share__content {
1270
+ display: flex;
1271
+ flex: 1;
1272
+ flex-direction: column;
1273
+ gap: 0.25rem;
1274
+ min-width: 0;
1275
+ }
1276
+
1277
+ .share__title {
1278
+ color: var(--color-white);
1279
+ font-size: 0.875rem;
1280
+ font-weight: 600;
1281
+ line-height: 1.3;
1282
+ }
1283
+
1284
+ .share__description {
1285
+ color: rgba(255, 255, 255, 0.65);
1286
+ font-size: 0.75rem;
1287
+ font-weight: 400;
1288
+ line-height: 1.4;
1289
+ }
1290
+
1291
+ .share__toggle {
1292
+ cursor: pointer;
1293
+ }
1294
+
1295
+ .share__toggle:hover {
1296
+ background: var(--color-overlay-hover);
1297
+ border-color: var(--color-border-hover);
1298
+ }
1299
+
1300
+ .share__toggle:hover .tooltip {
1301
+ opacity: 1;
1302
+ transform: translateY(-50%) translateX(-4px);
1303
+ }
1304
+
1305
+ .share__toggle[aria-expanded="true"] {
1306
+ background: var(--color-overlay-hover);
1307
+ border-color: var(--color-primary);
1308
+ }
1309
+
1310
+ .share__toggle .tooltip {
1311
+ left: auto;
1312
+ margin-left: 0;
1313
+ margin-right: var(--spacing-md);
1314
+ right: 100%;
1315
+ transform: translateY(-50%);
1316
+ }
1317
+
1318
+ .share__toggle .tooltip:before {
1319
+ border-left-color: var(--color-border);
1320
+ border-right-color: transparent;
1321
+ left: 100%;
1322
+ right: auto;
1323
+ }
1324
+
1325
+ .share__toggle .tooltip:after {
1326
+ border-left-color: var(--color-overlay-hover);
1327
+ border-right-color: transparent;
1328
+ left: 100%;
1329
+ margin-left: -1px;
1330
+ margin-right: 0;
1331
+ right: auto;
1332
+ }
1333
+
1334
+ @media (max-width: 768px) {
1335
+ .circle__button {
1336
+ width: var(--button-size-mobile);
1337
+ height: var(--button-size-mobile);
1338
+ }
1339
+
1340
+ .github__link {
1341
+ top: var(--spacing-sm);
1342
+ left: var(--spacing-sm);
1343
+ }
1344
+
1345
+ .github__link svg {
1346
+ width: 24px;
1347
+ height: 24px;
1348
+ }
1349
+
1350
+ .tooltip {
1351
+ display: none;
1352
+ }
1353
+
1354
+ .wrapper > .intro__text {
1355
+ padding: 3rem 1.5rem 0.5rem;
1356
+ max-width: calc(100vw - 2rem);
1357
+ }
1358
+
1359
+ .intro__text h1 {
1360
+ font-size: 2rem;
1361
+ margin-bottom: 0.75rem;
1362
+ }
1363
+
1364
+ .intro__text p {
1365
+ font-size: 1rem;
1366
+ }
1367
+
1368
+ .controls__toggle {
1369
+ top: var(--spacing-sm);
1370
+ right: var(--spacing-sm);
1371
+ }
1372
+
1373
+ .top__controls {
1374
+ top: var(--spacing-sm);
1375
+ right: var(--spacing-sm);
1376
+ }
1377
+
1378
+ .controls__toggle svg,
1379
+ .keyboard__toggle svg,
1380
+ .mouse__toggle svg,
1381
+ .api__toggle svg {
1382
+ width: 20px;
1383
+ height: 20px;
1384
+ }
1385
+
1386
+ .controls__panel,
1387
+ .keyboard__panel,
1388
+ .mouse__panel,
1389
+ .api__panel {
1390
+ top: calc(var(--spacing-sm) + var(--button-size-mobile) + var(--spacing-xs));
1391
+ right: var(--spacing-sm);
1392
+ left: var(--spacing-sm);
1393
+ width: auto;
1394
+ max-width: none;
1395
+ padding: 1rem;
1396
+ max-height: calc(100vh - var(--spacing-sm) - var(--button-size-mobile) - var(--spacing-xs) - var(--spacing-sm) - 2rem);
1397
+ }
1398
+
1399
+ .keyboard__panel,
1400
+ .mouse__panel,
1401
+ .api__panel {
1402
+ right: var(--spacing-sm);
1403
+ left: var(--spacing-sm);
1404
+ }
1405
+
1406
+ .controls__panel::before,
1407
+ .keyboard__panel::before,
1408
+ .mouse__panel::before,
1409
+ .api__panel::before {
1410
+ right: auto;
1411
+ left: 50%;
1412
+ transform: translateX(-50%);
1413
+ }
1414
+
1415
+ .controls__panel::after,
1416
+ .keyboard__panel::after,
1417
+ .mouse__panel::after,
1418
+ .api__panel::after {
1419
+ right: auto;
1420
+ left: 50%;
1421
+ transform: translateX(-50%);
1422
+ }
1423
+
1424
+ .controls__header,
1425
+ .keyboard__header,
1426
+ .mouse__header,
1427
+ .api__header {
1428
+ margin-bottom: 1rem;
1429
+ padding-bottom: 0.75rem;
1430
+ }
1431
+
1432
+ .controls__header h3,
1433
+ .keyboard__header h3,
1434
+ .mouse__header h3,
1435
+ .api__header h3 {
1436
+ font-size: 1rem;
1437
+ }
1438
+
1439
+ .control__section {
1440
+ margin-bottom: 1rem;
1441
+ }
1442
+
1443
+ .section__label {
1444
+ font-size: 0.8125rem;
1445
+ }
1446
+
1447
+ .button__group-item {
1448
+ padding: 0.625rem 0.375rem;
1449
+ font-size: 0.6875rem;
1450
+ }
1451
+
1452
+ .button__group-item svg {
1453
+ width: 14px;
1454
+ height: 14px;
1455
+ }
1456
+
1457
+ .switch__item {
1458
+ padding: 0.625rem;
1459
+ }
1460
+
1461
+ .switch__label {
1462
+ font-size: 0.8125rem;
1463
+ }
1464
+
1465
+ .switch__label svg {
1466
+ width: 14px;
1467
+ height: 14px;
1468
+ }
1469
+
1470
+ .switch__slider {
1471
+ width: 40px;
1472
+ height: 22px;
1473
+ }
1474
+
1475
+ .switch__slider::before {
1476
+ width: 18px;
1477
+ height: 18px;
1478
+ }
1479
+
1480
+ .switch__item input[type="checkbox"]:checked ~ .switch__slider::before {
1481
+ transform: translateX(18px);
1482
+ }
1483
+
1484
+ .wrapper > .peek-carousel {
1485
+ min-height: calc(100vh - 150px);
1486
+ padding: 2rem 1rem 6rem;
1487
+ }
1488
+
1489
+ .wrapper > .peek-carousel::after {
1490
+ height: 120px;
1491
+ width: 90%;
1492
+ }
1493
+
1494
+ .peek-carousel__figure {
1495
+ border-radius: 12px;
1496
+ }
1497
+
1498
+ .peek-carousel__caption {
1499
+ padding: 1.5rem 1.25rem;
1500
+ }
1501
+
1502
+ .peek-carousel__caption-title {
1503
+ font-size: 1.5rem;
1504
+ }
1505
+
1506
+ .peek-carousel__caption-subtitle {
1507
+ font-size: 0.95rem;
1508
+ }
1509
+
1510
+ .peek-carousel__btn {
1511
+ width: 48px;
1512
+ height: 48px;
1513
+ }
1514
+
1515
+ .peek-carousel__btn svg {
1516
+ width: 20px;
1517
+ height: 20px;
1518
+ }
1519
+
1520
+ .peek-carousel__nav {
1521
+ bottom: 10rem;
1522
+ gap: 0.75rem;
1523
+ }
1524
+
1525
+ .peek-carousel > .peek-carousel__counter {
1526
+ bottom: 15rem;
1527
+ padding: 0.5rem 1rem;
1528
+ font-size: 0.8125rem;
1529
+ }
1530
+
1531
+ .peek-carousel__controls {
1532
+ bottom: 6rem;
1533
+ }
1534
+
1535
+ .peek-carousel__indicators {
1536
+ gap: 0.5rem;
1537
+ }
1538
+
1539
+ .peek-carousel__indicator {
1540
+ width: 8px;
1541
+ height: 8px;
1542
+ }
1543
+
1544
+ .peek-carousel__indicator--active {
1545
+ width: 24px;
1546
+ }
1547
+
1548
+ .peek-carousel__auto-rotate-btn {
1549
+ width: 40px;
1550
+ height: 40px;
1551
+ }
1552
+
1553
+ .share__panel {
1554
+ left: var(--spacing-sm);
1555
+ right: var(--spacing-sm);
1556
+ max-width: none;
1557
+ width: auto;
1558
+ padding: 1rem;
1559
+ max-height: calc(100vh - var(--spacing-sm) - var(--button-size-mobile) - var(--spacing-xs) - var(--spacing-sm) - 2rem);
1560
+ top: calc(var(--spacing-sm) + var(--button-size-mobile) + var(--spacing-xs));
1561
+ }
1562
+
1563
+ .share__panel:before,
1564
+ .share__panel:after {
1565
+ left: 50%;
1566
+ right: auto;
1567
+ transform: translateX(-50%);
1568
+ }
1569
+
1570
+ .share__header {
1571
+ margin-bottom: 1rem;
1572
+ padding-bottom: 0.75rem;
1573
+ }
1574
+
1575
+ .share__header h3 {
1576
+ font-size: 1rem;
1577
+ }
1578
+
1579
+ .share__item {
1580
+ padding: 0.75rem;
1581
+ }
1582
+
1583
+ .share__icon {
1584
+ width: 2.25rem;
1585
+ height: 2.25rem;
1586
+ }
1587
+
1588
+ .share__icon svg {
1589
+ width: 18px;
1590
+ height: 18px;
1591
+ }
1592
+ }
1593
+
1594
+ /* Scroll Indicator */
1595
+ .scroll-indicator {
1596
+ display: flex;
1597
+ justify-content: center;
1598
+ padding: 3rem 0;
1599
+ animation: fadeInUp 1s ease-out 1s both;
1600
+ }
1601
+
1602
+ @keyframes fadeInUp {
1603
+ from {
1604
+ opacity: 0;
1605
+ transform: translateY(20px);
1606
+ }
1607
+ to {
1608
+ opacity: 1;
1609
+ transform: translateY(0);
1610
+ }
1611
+ }
1612
+
1613
+ .scroll-indicator__button {
1614
+ display: flex;
1615
+ flex-direction: column;
1616
+ align-items: center;
1617
+ gap: 0.5rem;
1618
+ padding: 1rem 2rem;
1619
+ background: rgba(102, 126, 234, 0.1);
1620
+ border: 2px solid rgba(102, 126, 234, 0.3);
1621
+ border-radius: var(--border-radius-lg);
1622
+ color: var(--color-white);
1623
+ text-decoration: none;
1624
+ transition: all 0.3s ease;
1625
+ cursor: pointer;
1626
+ }
1627
+
1628
+ .scroll-indicator__button:hover {
1629
+ background: rgba(102, 126, 234, 0.2);
1630
+ border-color: var(--color-primary);
1631
+ transform: translateY(-4px);
1632
+ box-shadow: 0 8px 24px rgba(102, 126, 234, 0.3);
1633
+ }
1634
+
1635
+ .scroll-indicator__text {
1636
+ font-size: 0.9375rem;
1637
+ font-weight: 600;
1638
+ letter-spacing: 0.02em;
1639
+ }
1640
+
1641
+ .scroll-indicator__arrow {
1642
+ font-size: 1.5rem;
1643
+ animation: bounce 2s infinite;
1644
+ }
1645
+
1646
+ @keyframes bounce {
1647
+ 0%, 20%, 50%, 80%, 100% {
1648
+ transform: translateY(0);
1649
+ }
1650
+ 40% {
1651
+ transform: translateY(-8px);
1652
+ }
1653
+ 60% {
1654
+ transform: translateY(-4px);
1655
+ }
1656
+ }
1657
+
1658
+ /* API Section */
1659
+ .api-section {
1660
+ background: linear-gradient(180deg, rgba(17, 24, 39, 0) 0%, rgba(17, 24, 39, 0.5) 50%, rgba(17, 24, 39, 0.8) 100%);
1661
+ padding: 4rem 2rem 6rem;
1662
+ scroll-behavior: smooth;
1663
+ scroll-margin-top: 2rem;
1664
+ }
1665
+
1666
+ .api-container {
1667
+ max-width: 1200px;
1668
+ margin: 0 auto;
1669
+ }
1670
+
1671
+ .api-section__title {
1672
+ color: var(--color-white);
1673
+ font-size: 2.5rem;
1674
+ font-weight: 700;
1675
+ margin-bottom: 2rem;
1676
+ text-align: center;
1677
+ letter-spacing: -0.02em;
1678
+ }
1679
+
1680
+ /* API Controls (Search & Filter) */
1681
+ .api-controls {
1682
+ margin-bottom: 2rem;
1683
+ display: flex;
1684
+ flex-direction: column;
1685
+ gap: 1rem;
1686
+ }
1687
+
1688
+ .api-search {
1689
+ position: relative;
1690
+ max-width: 600px;
1691
+ margin: 0 auto;
1692
+ width: 100%;
1693
+ }
1694
+
1695
+ .api-search__input {
1696
+ width: 100%;
1697
+ padding: 1rem;
1698
+ background: rgba(0, 0, 0, 0.3);
1699
+ border: 1px solid var(--color-border);
1700
+ border-radius: var(--border-radius-md);
1701
+ color: var(--color-white);
1702
+ font-size: 0.9375rem;
1703
+ transition: all 0.2s ease;
1704
+ }
1705
+
1706
+ .api-search__input:focus {
1707
+ outline: none;
1708
+ border-color: var(--color-primary);
1709
+ background: rgba(0, 0, 0, 0.4);
1710
+ box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
1711
+ }
1712
+
1713
+ .api-search__input::placeholder {
1714
+ color: rgba(255, 255, 255, 0.5);
1715
+ }
1716
+
1717
+ .api-filter {
1718
+ display: flex;
1719
+ justify-content: center;
1720
+ gap: 0.75rem;
1721
+ flex-wrap: wrap;
1722
+ }
1723
+
1724
+ .api-filter__btn {
1725
+ background: rgba(102, 126, 234, 0.1);
1726
+ border: 1px solid rgba(102, 126, 234, 0.3);
1727
+ border-radius: 20px;
1728
+ color: rgba(255, 255, 255, 0.8);
1729
+ padding: 0.5rem 1rem;
1730
+ font-size: 0.875rem;
1731
+ font-weight: 500;
1732
+ cursor: pointer;
1733
+ transition: all 0.2s ease;
1734
+ }
1735
+
1736
+ .api-filter__btn:hover {
1737
+ background: rgba(102, 126, 234, 0.15);
1738
+ border-color: rgba(102, 126, 234, 0.4);
1739
+ color: var(--color-white);
1740
+ }
1741
+
1742
+ .api-filter__btn.active {
1743
+ background: var(--color-primary);
1744
+ border-color: var(--color-primary);
1745
+ color: var(--color-white);
1746
+ font-weight: 600;
1747
+ }
1748
+
1749
+ /* Quick Links */
1750
+ .api-quicklinks {
1751
+ display: flex;
1752
+ justify-content: center;
1753
+ gap: 1rem;
1754
+ margin-bottom: 3rem;
1755
+ flex-wrap: wrap;
1756
+ }
1757
+
1758
+ .api-quicklink {
1759
+ display: flex;
1760
+ align-items: center;
1761
+ gap: 0.5rem;
1762
+ background: rgba(102, 126, 234, 0.1);
1763
+ border: 1px solid rgba(102, 126, 234, 0.3);
1764
+ border-radius: var(--border-radius-md);
1765
+ padding: 0.75rem 1.5rem;
1766
+ color: var(--color-white);
1767
+ text-decoration: none;
1768
+ transition: all 0.2s ease;
1769
+ font-weight: 500;
1770
+ font-size: 0.9375rem;
1771
+ }
1772
+
1773
+ .api-quicklink:hover {
1774
+ background: rgba(102, 126, 234, 0.2);
1775
+ border-color: var(--color-primary);
1776
+ transform: translateY(-2px);
1777
+ box-shadow: 0 4px 12px rgba(102, 126, 234, 0.2);
1778
+ }
1779
+
1780
+ /* API Demo */
1781
+ .api-demo {
1782
+ background: var(--color-overlay);
1783
+ border: 1px solid var(--color-border);
1784
+ border-radius: var(--border-radius-lg);
1785
+ padding: 2rem;
1786
+ margin-bottom: 3rem;
1787
+ backdrop-filter: blur(16px);
1788
+ }
1789
+
1790
+ .api-demo__header {
1791
+ margin-bottom: 2rem;
1792
+ }
1793
+
1794
+ .api-demo__title {
1795
+ color: var(--color-white);
1796
+ font-size: 1.5rem;
1797
+ font-weight: 600;
1798
+ margin-bottom: 0.5rem;
1799
+ display: flex;
1800
+ align-items: center;
1801
+ gap: 0.5rem;
1802
+ }
1803
+
1804
+ .api-demo__description {
1805
+ color: rgba(255, 255, 255, 0.7);
1806
+ font-size: 0.9375rem;
1807
+ margin: 0;
1808
+ }
1809
+
1810
+ .api-demo__controls {
1811
+ display: grid;
1812
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
1813
+ gap: 2rem;
1814
+ margin-bottom: 2rem;
1815
+ }
1816
+
1817
+ .api-demo__group-title {
1818
+ color: var(--color-white);
1819
+ font-size: 0.875rem;
1820
+ font-weight: 600;
1821
+ margin-bottom: 1rem;
1822
+ text-transform: uppercase;
1823
+ letter-spacing: 0.05em;
1824
+ opacity: 0.8;
1825
+ }
1826
+
1827
+ .api-demo__group {
1828
+ display: flex;
1829
+ flex-direction: column;
1830
+ gap: 0.75rem;
1831
+ }
1832
+
1833
+ .api-btn {
1834
+ background: rgba(102, 126, 234, 0.1);
1835
+ border: 1px solid rgba(102, 126, 234, 0.3);
1836
+ border-radius: var(--border-radius-md);
1837
+ color: var(--color-white);
1838
+ padding: 1rem;
1839
+ font-family: 'Fira Code', monospace;
1840
+ font-size: 0.875rem;
1841
+ cursor: pointer;
1842
+ transition: all 0.2s ease;
1843
+ text-align: left;
1844
+ display: flex;
1845
+ flex-direction: column;
1846
+ gap: 0.25rem;
1847
+ }
1848
+
1849
+ .api-btn__label {
1850
+ color: var(--color-white);
1851
+ font-weight: 600;
1852
+ }
1853
+
1854
+ .api-btn__desc {
1855
+ color: rgba(255, 255, 255, 0.6);
1856
+ font-size: 0.75rem;
1857
+ font-family: system-ui, -apple-system, sans-serif;
1858
+ }
1859
+
1860
+ .api-btn:hover {
1861
+ background: rgba(102, 126, 234, 0.2);
1862
+ border-color: var(--color-primary);
1863
+ transform: translateY(-1px);
1864
+ }
1865
+
1866
+ .api-btn:active {
1867
+ transform: translateY(0);
1868
+ }
1869
+
1870
+ .api-demo__output {
1871
+ background: rgba(0, 0, 0, 0.3);
1872
+ border: 1px solid var(--color-border);
1873
+ border-radius: var(--border-radius-md);
1874
+ padding: 1.5rem;
1875
+ }
1876
+
1877
+ .api-demo__output-header {
1878
+ display: flex;
1879
+ justify-content: space-between;
1880
+ align-items: center;
1881
+ margin-bottom: 0.75rem;
1882
+ }
1883
+
1884
+ .api-demo__output-label {
1885
+ color: rgba(255, 255, 255, 0.6);
1886
+ font-size: 0.75rem;
1887
+ font-weight: 600;
1888
+ text-transform: uppercase;
1889
+ letter-spacing: 0.05em;
1890
+ }
1891
+
1892
+ .api-demo__output-clear {
1893
+ background: rgba(239, 68, 68, 0.1);
1894
+ border: 1px solid rgba(239, 68, 68, 0.3);
1895
+ border-radius: 4px;
1896
+ color: rgba(239, 68, 68, 0.9);
1897
+ padding: 0.25rem 0.75rem;
1898
+ font-size: 0.75rem;
1899
+ font-weight: 500;
1900
+ cursor: pointer;
1901
+ transition: all 0.2s ease;
1902
+ }
1903
+
1904
+ .api-demo__output-clear:hover {
1905
+ background: rgba(239, 68, 68, 0.2);
1906
+ border-color: rgba(239, 68, 68, 0.5);
1907
+ }
1908
+
1909
+ .api-demo__output-content {
1910
+ color: var(--color-white);
1911
+ font-family: 'Fira Code', monospace;
1912
+ font-size: 0.9375rem;
1913
+ margin: 0;
1914
+ white-space: pre-wrap;
1915
+ word-wrap: break-word;
1916
+ }
1917
+
1918
+ /* API Documentation */
1919
+ .api-docs {
1920
+ background: var(--color-overlay);
1921
+ border: 1px solid var(--color-border);
1922
+ border-radius: var(--border-radius-lg);
1923
+ padding: 2.5rem;
1924
+ backdrop-filter: blur(16px);
1925
+ }
1926
+
1927
+ .api-docs__section {
1928
+ margin-bottom: 3rem;
1929
+ }
1930
+
1931
+ .api-docs__section:last-child {
1932
+ margin-bottom: 0;
1933
+ }
1934
+
1935
+ .api-docs__title {
1936
+ color: var(--color-white);
1937
+ font-size: 1.75rem;
1938
+ font-weight: 600;
1939
+ margin-bottom: 2rem;
1940
+ display: flex;
1941
+ align-items: center;
1942
+ gap: 0.75rem;
1943
+ flex-wrap: wrap;
1944
+ }
1945
+
1946
+ .api-docs__badge {
1947
+ background: rgba(102, 126, 234, 0.15);
1948
+ border: 1px solid rgba(102, 126, 234, 0.3);
1949
+ border-radius: 12px;
1950
+ color: var(--color-primary);
1951
+ font-size: 0.75rem;
1952
+ font-weight: 600;
1953
+ padding: 0.25rem 0.75rem;
1954
+ text-transform: uppercase;
1955
+ letter-spacing: 0.05em;
1956
+ }
1957
+
1958
+ .api-docs__grid {
1959
+ display: grid;
1960
+ grid-template-columns: repeat(auto-fill, minmax(350px, 1fr));
1961
+ gap: 1.5rem;
1962
+ }
1963
+
1964
+ .api-docs__grid--properties {
1965
+ grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
1966
+ }
1967
+
1968
+ .api-method,
1969
+ .api-property {
1970
+ background: rgba(0, 0, 0, 0.2);
1971
+ border: 1px solid var(--color-border);
1972
+ border-radius: var(--border-radius-md);
1973
+ padding: 1.5rem;
1974
+ transition: all 0.2s ease;
1975
+ }
1976
+
1977
+ .api-method:hover,
1978
+ .api-property:hover {
1979
+ background: rgba(0, 0, 0, 0.3);
1980
+ border-color: rgba(102, 126, 234, 0.4);
1981
+ transform: translateY(-2px);
1982
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
1983
+ }
1984
+
1985
+ .api-method__header,
1986
+ .api-property__header {
1987
+ display: flex;
1988
+ justify-content: space-between;
1989
+ align-items: flex-start;
1990
+ gap: 1rem;
1991
+ margin-bottom: 0.75rem;
1992
+ }
1993
+
1994
+ .api-method__signature,
1995
+ .api-property__signature {
1996
+ flex: 1;
1997
+ }
1998
+
1999
+ .api-method__signature code,
2000
+ .api-property__signature code {
2001
+ background: rgba(102, 126, 234, 0.1);
2002
+ border: 1px solid rgba(102, 126, 234, 0.3);
2003
+ border-radius: 6px;
2004
+ color: var(--color-primary);
2005
+ font-family: 'Fira Code', monospace;
2006
+ font-size: 0.875rem;
2007
+ padding: 0.5rem 0.75rem;
2008
+ display: inline-block;
2009
+ word-break: break-word;
2010
+ }
2011
+
2012
+ .api-method__badge,
2013
+ .api-property__badge {
2014
+ background: rgba(34, 197, 94, 0.15);
2015
+ border: 1px solid rgba(34, 197, 94, 0.3);
2016
+ border-radius: 8px;
2017
+ color: rgba(34, 197, 94, 0.9);
2018
+ font-size: 0.6875rem;
2019
+ font-weight: 600;
2020
+ padding: 0.25rem 0.5rem;
2021
+ text-transform: uppercase;
2022
+ letter-spacing: 0.05em;
2023
+ white-space: nowrap;
2024
+ }
2025
+
2026
+ .api-method__badge--auto {
2027
+ background: rgba(251, 191, 36, 0.15);
2028
+ border-color: rgba(251, 191, 36, 0.3);
2029
+ color: rgba(251, 191, 36, 0.9);
2030
+ }
2031
+
2032
+ .api-method__badge--lifecycle {
2033
+ background: rgba(239, 68, 68, 0.15);
2034
+ border-color: rgba(239, 68, 68, 0.3);
2035
+ color: rgba(239, 68, 68, 0.9);
2036
+ }
2037
+
2038
+ .api-property__badge-label {
2039
+ color: rgba(102, 126, 234, 0.9);
2040
+ }
2041
+
2042
+ .api-method__description,
2043
+ .api-property__description {
2044
+ color: rgba(255, 255, 255, 0.8);
2045
+ font-size: 0.9375rem;
2046
+ line-height: 1.6;
2047
+ margin-bottom: 0.75rem;
2048
+ }
2049
+
2050
+ .api-method__params,
2051
+ .api-property__type {
2052
+ margin-top: 1rem;
2053
+ }
2054
+
2055
+ .api-method__params strong,
2056
+ .api-property__type strong {
2057
+ color: rgba(255, 255, 255, 0.9);
2058
+ font-size: 0.875rem;
2059
+ font-weight: 600;
2060
+ }
2061
+
2062
+ .api-method__params ul {
2063
+ list-style: none;
2064
+ padding: 0;
2065
+ margin: 0.5rem 0 0 0;
2066
+ }
2067
+
2068
+ .api-method__params li {
2069
+ color: rgba(255, 255, 255, 0.7);
2070
+ font-size: 0.9375rem;
2071
+ padding: 0.375rem 0;
2072
+ padding-left: 1.5rem;
2073
+ position: relative;
2074
+ }
2075
+
2076
+ .api-method__params li:before {
2077
+ content: "•";
2078
+ position: absolute;
2079
+ left: 0.5rem;
2080
+ color: var(--color-primary);
2081
+ }
2082
+
2083
+ .api-method__params code,
2084
+ .api-property__type code {
2085
+ background: rgba(0, 0, 0, 0.3);
2086
+ border-radius: 4px;
2087
+ color: #a5b4fc;
2088
+ font-family: 'Fira Code', monospace;
2089
+ font-size: 0.875rem;
2090
+ padding: 0.125rem 0.375rem;
2091
+ }
2092
+
2093
+ .api-method__param-type {
2094
+ color: rgba(34, 197, 94, 0.9);
2095
+ font-weight: 600;
2096
+ }
2097
+
2098
+ .api-method__example,
2099
+ .api-property__example {
2100
+ margin-top: 1rem;
2101
+ background: rgba(0, 0, 0, 0.3);
2102
+ border: 1px solid rgba(102, 126, 234, 0.2);
2103
+ border-radius: 6px;
2104
+ padding: 0.75rem;
2105
+ }
2106
+
2107
+ .api-method__example-label,
2108
+ .api-property__example-label {
2109
+ color: rgba(255, 255, 255, 0.6);
2110
+ font-size: 0.75rem;
2111
+ font-weight: 600;
2112
+ text-transform: uppercase;
2113
+ letter-spacing: 0.05em;
2114
+ margin-bottom: 0.5rem;
2115
+ display: block;
2116
+ }
2117
+
2118
+ .api-method__example-code,
2119
+ .api-property__example-code {
2120
+ color: #a5b4fc;
2121
+ font-family: 'Fira Code', monospace;
2122
+ font-size: 0.8125rem;
2123
+ display: block;
2124
+ background: none;
2125
+ border: none;
2126
+ padding: 0;
2127
+ }
2128
+
2129
+ @media (max-width: 768px) {
2130
+ .scroll-indicator {
2131
+ padding: 2rem 0;
2132
+ }
2133
+
2134
+ .scroll-indicator__button {
2135
+ padding: 0.875rem 1.5rem;
2136
+ }
2137
+
2138
+ .scroll-indicator__text {
2139
+ font-size: 0.875rem;
2140
+ }
2141
+
2142
+ .api-section {
2143
+ padding: 3rem 1rem 4rem;
2144
+ }
2145
+
2146
+ .api-section__title {
2147
+ font-size: 2rem;
2148
+ margin-bottom: 1.5rem;
2149
+ }
2150
+
2151
+ .api-search {
2152
+ max-width: 100%;
2153
+ }
2154
+
2155
+ .api-search__input {
2156
+ padding: 0.875rem;
2157
+ font-size: 0.875rem;
2158
+ }
2159
+
2160
+ .api-filter__btn {
2161
+ font-size: 0.8125rem;
2162
+ padding: 0.4rem 0.875rem;
2163
+ }
2164
+
2165
+ .api-quicklinks {
2166
+ gap: 0.75rem;
2167
+ }
2168
+
2169
+ .api-quicklink {
2170
+ font-size: 0.875rem;
2171
+ padding: 0.625rem 1rem;
2172
+ }
2173
+
2174
+ .api-demo,
2175
+ .api-docs {
2176
+ padding: 1.5rem;
2177
+ }
2178
+
2179
+ .api-demo__title {
2180
+ font-size: 1.25rem;
2181
+ }
2182
+
2183
+ .api-docs__title {
2184
+ font-size: 1.5rem;
2185
+ }
2186
+
2187
+ .api-demo__controls {
2188
+ grid-template-columns: 1fr;
2189
+ gap: 1.5rem;
2190
+ }
2191
+
2192
+ .api-docs__grid {
2193
+ grid-template-columns: 1fr;
2194
+ }
2195
+
2196
+ .api-docs__grid--properties {
2197
+ grid-template-columns: 1fr;
2198
+ }
2199
+
2200
+ .api-method,
2201
+ .api-property {
2202
+ padding: 1.25rem;
2203
+ }
2204
+
2205
+ .api-method__signature code,
2206
+ .api-property__signature code {
2207
+ font-size: 0.8125rem;
2208
+ padding: 0.375rem 0.5rem;
2209
+ }
2210
+
2211
+ .api-method__badge,
2212
+ .api-property__badge {
2213
+ font-size: 0.625rem;
2214
+ padding: 0.2rem 0.4rem;
2215
+ }
2216
+ }