peek-carousel 1.0.2 → 1.0.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.
@@ -1,2216 +0,0 @@
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
- }