@whykusanagi/corrupted-theme 0.1.0

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.
@@ -0,0 +1,1441 @@
1
+ /* components.css — Reusable component styles (buttons, cards, badges, etc) */
2
+
3
+ /* ========== CARDS & CONTAINERS ========== */
4
+
5
+ .card {
6
+ padding: 2rem;
7
+ background: var(--glass);
8
+ border: 1px solid var(--border);
9
+ border-radius: var(--radius-xl);
10
+ backdrop-filter: blur(15px);
11
+ box-shadow: 0 8px 32px rgba(217, 79, 144, 0.15), inset 0 0 20px rgba(217, 79, 144, 0.05);
12
+ transition: all var(--transition-normal) var(--transition-easing);
13
+ }
14
+
15
+ .card:hover {
16
+ transform: translateY(-4px);
17
+ box-shadow: 0 12px 48px rgba(217, 79, 144, 0.25);
18
+ border-color: var(--border-light);
19
+ }
20
+
21
+ /* Card size variants */
22
+ .card.sm {
23
+ padding: 1.5rem;
24
+ border-radius: var(--radius-lg);
25
+ }
26
+
27
+ .card.lg {
28
+ padding: 2.5rem;
29
+ }
30
+
31
+ /* ========== BUTTONS ========== */
32
+
33
+ .btn {
34
+ display: inline-flex;
35
+ align-items: center;
36
+ gap: 0.5rem;
37
+ padding: 0.875rem 1.75rem;
38
+ background: var(--gradient-accent);
39
+ color: #fff;
40
+ text-decoration: none;
41
+ border-radius: var(--radius-lg);
42
+ font-weight: 600;
43
+ letter-spacing: 0.3px;
44
+ transition: all var(--transition-normal) var(--transition-easing);
45
+ border: 1px solid rgba(217, 79, 144, 0.3);
46
+ font-size: 0.95rem;
47
+ cursor: pointer;
48
+ white-space: nowrap;
49
+ }
50
+
51
+ .btn:hover {
52
+ transform: translateY(-3px);
53
+ box-shadow: 0 8px 24px rgba(217, 79, 144, 0.4);
54
+ border-color: rgba(217, 79, 144, 0.6);
55
+ }
56
+
57
+ .btn:active {
58
+ transform: translateY(-1px);
59
+ }
60
+
61
+ /* Button size variants */
62
+ .btn.sm {
63
+ padding: 0.6rem 1.2rem;
64
+ font-size: 0.85rem;
65
+ }
66
+
67
+ .btn.lg {
68
+ padding: 1rem 2rem;
69
+ font-size: 1rem;
70
+ }
71
+
72
+ .btn.block {
73
+ width: 100%;
74
+ justify-content: center;
75
+ }
76
+
77
+ /* Button style variants */
78
+ .btn.secondary {
79
+ background: transparent;
80
+ color: var(--text-secondary);
81
+ border: 1px solid var(--border);
82
+ }
83
+
84
+ .btn.secondary:hover {
85
+ color: var(--accent);
86
+ border-color: var(--accent);
87
+ background: rgba(217, 79, 144, 0.08);
88
+ }
89
+
90
+ .btn.ghost {
91
+ background: transparent;
92
+ color: var(--accent);
93
+ border: none;
94
+ }
95
+
96
+ .btn.ghost:hover {
97
+ background: rgba(217, 79, 144, 0.1);
98
+ }
99
+
100
+ /* Button disabled state */
101
+ .btn:disabled,
102
+ .btn[disabled] {
103
+ opacity: 0.5;
104
+ cursor: not-allowed;
105
+ pointer-events: none;
106
+ }
107
+
108
+ /* ========== BADGES ========== */
109
+
110
+ .badge {
111
+ display: inline-block;
112
+ padding: 0.4rem 0.8rem;
113
+ background: rgba(217, 79, 144, 0.15);
114
+ border: 1px solid rgba(217, 79, 144, 0.3);
115
+ border-radius: 20px;
116
+ font-size: 0.85rem;
117
+ font-weight: 600;
118
+ color: var(--accent-light);
119
+ letter-spacing: 0.3px;
120
+ white-space: nowrap;
121
+ }
122
+
123
+ /* Badge variants */
124
+ .badge.primary {
125
+ background: rgba(217, 79, 144, 0.2);
126
+ border-color: var(--accent);
127
+ color: var(--accent);
128
+ }
129
+
130
+ .badge.secondary {
131
+ background: rgba(184, 175, 200, 0.15);
132
+ border-color: rgba(184, 175, 200, 0.3);
133
+ color: var(--text-secondary);
134
+ }
135
+
136
+ .badge.success {
137
+ background: rgba(34, 197, 94, 0.15);
138
+ border-color: rgba(34, 197, 94, 0.3);
139
+ color: #22c55e;
140
+ }
141
+
142
+ .badge.warning {
143
+ background: rgba(234, 179, 8, 0.15);
144
+ border-color: rgba(234, 179, 8, 0.3);
145
+ color: #eab308;
146
+ }
147
+
148
+ .badge.error {
149
+ background: rgba(239, 68, 68, 0.15);
150
+ border-color: rgba(239, 68, 68, 0.3);
151
+ color: #ef4444;
152
+ }
153
+
154
+ /* ========== LINKS ========== */
155
+
156
+ .link {
157
+ color: var(--accent);
158
+ text-decoration: none;
159
+ font-weight: 600;
160
+ position: relative;
161
+ display: inline-block;
162
+ transition: color var(--transition-normal);
163
+ }
164
+
165
+ .link::after {
166
+ content: '';
167
+ position: absolute;
168
+ bottom: -2px;
169
+ left: 0;
170
+ width: 0;
171
+ height: 2px;
172
+ background: var(--accent);
173
+ transition: width var(--transition-normal);
174
+ }
175
+
176
+ .link:hover {
177
+ color: var(--accent-light);
178
+ }
179
+
180
+ .link:hover::after {
181
+ width: 100%;
182
+ }
183
+
184
+ /* ========== INPUTS & FORMS ========== */
185
+
186
+ input,
187
+ textarea,
188
+ select {
189
+ background: rgba(20, 12, 40, 0.5);
190
+ border: 1px solid var(--border);
191
+ border-radius: var(--radius-lg);
192
+ padding: 0.75rem 1rem;
193
+ color: var(--text);
194
+ font-family: inherit;
195
+ transition: all var(--transition-normal);
196
+ }
197
+
198
+ input::placeholder,
199
+ textarea::placeholder {
200
+ color: var(--text-muted);
201
+ }
202
+
203
+ input:focus,
204
+ textarea:focus,
205
+ select:focus {
206
+ outline: none;
207
+ border-color: var(--accent);
208
+ box-shadow: 0 0 0 2px rgba(217, 79, 144, 0.2);
209
+ }
210
+
211
+ textarea {
212
+ resize: vertical;
213
+ min-height: 120px;
214
+ }
215
+
216
+ /* ========== DIVIDER ========== */
217
+
218
+ .divider {
219
+ height: 1px;
220
+ background: linear-gradient(90deg, transparent, var(--border), transparent);
221
+ margin: 2rem 0;
222
+ }
223
+
224
+ .divider.sm {
225
+ margin: 1rem 0;
226
+ }
227
+
228
+ .divider.lg {
229
+ margin: 3rem 0;
230
+ }
231
+
232
+ /* ========== CODE BLOCK ========== */
233
+
234
+ .code-block {
235
+ background: rgba(20, 12, 40, 0.8);
236
+ border: 1px solid var(--border);
237
+ border-radius: var(--radius-lg);
238
+ padding: 1.5rem;
239
+ overflow-x: auto;
240
+ }
241
+
242
+ /* ========== TEXT HIGHLIGHTING (Code-like) ========== */
243
+ /* Inline text highlighting similar to code blocks */
244
+
245
+ .text-highlight {
246
+ background: rgba(217, 79, 144, 0.15);
247
+ border: 1px solid rgba(217, 79, 144, 0.3);
248
+ border-radius: var(--radius-sm);
249
+ padding: 0.125rem 0.375rem;
250
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
251
+ font-size: 0.9em;
252
+ color: var(--accent-light);
253
+ display: inline-block;
254
+ line-height: 1.5;
255
+ }
256
+
257
+ .text-highlight.code {
258
+ background: var(--glass-darker);
259
+ border-color: var(--border);
260
+ color: var(--text-secondary);
261
+ padding: 0.2rem 0.5rem;
262
+ }
263
+
264
+ .text-highlight.accent {
265
+ background: rgba(217, 79, 144, 0.2);
266
+ border-color: var(--accent);
267
+ color: var(--accent);
268
+ }
269
+
270
+ .text-highlight.success {
271
+ background: rgba(34, 197, 94, 0.15);
272
+ border-color: rgba(34, 197, 94, 0.3);
273
+ color: #22c55e;
274
+ }
275
+
276
+ .text-highlight.warning {
277
+ background: rgba(234, 179, 8, 0.15);
278
+ border-color: rgba(234, 179, 8, 0.3);
279
+ color: #eab308;
280
+ }
281
+
282
+ .text-highlight.error {
283
+ background: rgba(239, 68, 68, 0.15);
284
+ border-color: rgba(239, 68, 68, 0.3);
285
+ color: #ef4444;
286
+ }
287
+
288
+ /* Code-like inline text with syntax highlighting appearance */
289
+ code,
290
+ .code-inline {
291
+ background: var(--glass-darker);
292
+ border: 1px solid var(--border);
293
+ border-radius: var(--radius-sm);
294
+ padding: 0.2rem 0.5rem;
295
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
296
+ font-size: 0.9em;
297
+ color: var(--text-secondary);
298
+ display: inline-block;
299
+ line-height: 1.5;
300
+ }
301
+
302
+ /* Enhanced code block with highlighting */
303
+ pre code,
304
+ pre .code-inline {
305
+ background: transparent;
306
+ border: none;
307
+ padding: 0;
308
+ color: inherit;
309
+ display: inline;
310
+ }
311
+
312
+ /* Syntax-like highlighting classes */
313
+ .hljs-keyword,
314
+ .code-keyword {
315
+ color: #c792ea;
316
+ }
317
+
318
+ .hljs-string,
319
+ .code-string {
320
+ color: #c3e88d;
321
+ }
322
+
323
+ .hljs-number,
324
+ .code-number {
325
+ color: #f78c6c;
326
+ }
327
+
328
+ .hljs-comment,
329
+ .code-comment {
330
+ color: var(--text-muted);
331
+ font-style: italic;
332
+ }
333
+
334
+ .hljs-function,
335
+ .code-function {
336
+ color: #82aaff;
337
+ }
338
+
339
+ .hljs-variable,
340
+ .code-variable {
341
+ color: var(--accent-light);
342
+ }
343
+
344
+ /* ========== ALERT BOX ========== */
345
+
346
+ .alert {
347
+ padding: 1rem 1.5rem;
348
+ border-radius: var(--radius-lg);
349
+ border-left: 4px solid var(--accent);
350
+ background: rgba(217, 79, 144, 0.1);
351
+ color: var(--text);
352
+ margin-bottom: 1rem;
353
+ }
354
+
355
+ .alert.success {
356
+ border-left-color: #22c55e;
357
+ background: rgba(34, 197, 94, 0.1);
358
+ }
359
+
360
+ .alert.warning {
361
+ border-left-color: #eab308;
362
+ background: rgba(234, 179, 8, 0.1);
363
+ }
364
+
365
+ .alert.error {
366
+ border-left-color: #ef4444;
367
+ background: rgba(239, 68, 68, 0.1);
368
+ }
369
+
370
+ .alert.info {
371
+ border-left-color: #3b82f6;
372
+ background: rgba(59, 130, 246, 0.1);
373
+ }
374
+
375
+ /* ========== TAG/LABEL ========== */
376
+
377
+ .tag {
378
+ display: inline-block;
379
+ padding: 0.3rem 0.8rem;
380
+ background: rgba(217, 79, 144, 0.15);
381
+ border-radius: var(--radius-md);
382
+ font-size: 0.8rem;
383
+ color: var(--text-secondary);
384
+ border: 1px solid rgba(217, 79, 144, 0.2);
385
+ white-space: nowrap;
386
+ }
387
+
388
+ .tag:hover {
389
+ background: rgba(217, 79, 144, 0.25);
390
+ cursor: pointer;
391
+ }
392
+
393
+ /* ========== GLASS COMPONENTS (Reusable API Components) ========== */
394
+ /* These components follow the design system from extra_details.md */
395
+
396
+ /* Glass Card - Primary container component */
397
+ .glass-card {
398
+ background: var(--glass);
399
+ border: 1px solid var(--border);
400
+ border-radius: var(--radius-lg);
401
+ backdrop-filter: blur(10px);
402
+ box-shadow: 0 8px 32px rgba(217, 79, 144, 0.15),
403
+ inset 0 0 20px rgba(217, 79, 144, 0.05);
404
+ transition: all var(--transition);
405
+ }
406
+
407
+ .glass-card:hover {
408
+ border-color: var(--border-light);
409
+ box-shadow: 0 12px 48px rgba(217, 79, 144, 0.25),
410
+ inset 0 0 20px rgba(217, 79, 144, 0.08);
411
+ }
412
+
413
+ /* Glass Input - Form input component */
414
+ .glass-input {
415
+ background: var(--glass-light);
416
+ border: 1px solid var(--border);
417
+ border-radius: var(--radius-md);
418
+ color: var(--text);
419
+ padding: 10px 12px;
420
+ font-size: 0.95em;
421
+ transition: all var(--transition-fast);
422
+ backdrop-filter: blur(5px);
423
+ font-family: inherit;
424
+ }
425
+
426
+ .glass-input::placeholder {
427
+ color: var(--text-muted);
428
+ }
429
+
430
+ .glass-input:focus {
431
+ outline: none;
432
+ border-color: var(--accent);
433
+ box-shadow: 0 0 0 2px rgba(217, 79, 144, 0.2);
434
+ }
435
+
436
+ /* Glass Button - Action button component */
437
+ .glass-button {
438
+ background: linear-gradient(135deg, var(--accent) 0%, var(--accent-dark) 100%);
439
+ color: white;
440
+ border: 1px solid var(--accent-light);
441
+ border-radius: var(--radius-md);
442
+ padding: 10px 16px;
443
+ font-weight: 600;
444
+ cursor: pointer;
445
+ transition: all var(--transition-fast);
446
+ backdrop-filter: blur(10px);
447
+ box-shadow: 0 8px 20px rgba(217, 79, 144, 0.2);
448
+ font-size: 0.95rem;
449
+ text-decoration: none;
450
+ display: inline-block;
451
+ }
452
+
453
+ .glass-button:hover {
454
+ transform: translateY(-2px);
455
+ box-shadow: 0 12px 30px rgba(217, 79, 144, 0.4);
456
+ border-color: var(--accent);
457
+ }
458
+
459
+ .glass-button:active {
460
+ transform: translateY(0);
461
+ }
462
+
463
+ .glass-button:disabled {
464
+ opacity: 0.5;
465
+ cursor: not-allowed;
466
+ pointer-events: none;
467
+ }
468
+
469
+ /* Glass Code - Code block display component */
470
+ .glass-code {
471
+ background: var(--glass-darker);
472
+ border: 1px solid var(--border);
473
+ border-radius: var(--radius-sm);
474
+ padding: 12px;
475
+ color: var(--text-secondary);
476
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
477
+ font-size: 0.85em;
478
+ line-height: 1.5;
479
+ overflow-x: auto;
480
+ backdrop-filter: blur(5px);
481
+ }
482
+
483
+ /* Badge variants for API documentation */
484
+ .badge-method {
485
+ background: rgba(217, 79, 144, 0.15);
486
+ color: var(--accent);
487
+ border-color: var(--accent);
488
+ }
489
+
490
+ .badge-get {
491
+ background: rgba(0, 102, 204, 0.15);
492
+ color: #0066cc;
493
+ border-color: #0066cc;
494
+ }
495
+
496
+ .badge-post {
497
+ background: rgba(34, 197, 94, 0.15);
498
+ color: #22c55e;
499
+ border-color: #22c55e;
500
+ }
501
+
502
+ /* ========== MODALS ========== */
503
+
504
+ .modal-overlay {
505
+ position: fixed;
506
+ inset: 0;
507
+ background: rgba(0, 0, 0, 0.75);
508
+ backdrop-filter: blur(4px);
509
+ z-index: calc(var(--z-modal) - 1);
510
+ display: flex;
511
+ align-items: center;
512
+ justify-content: center;
513
+ padding: var(--spacing-lg);
514
+ opacity: 0;
515
+ visibility: hidden;
516
+ transition: all var(--transition-normal);
517
+ }
518
+
519
+ .modal-overlay.active {
520
+ opacity: 1;
521
+ visibility: visible;
522
+ }
523
+
524
+ .modal {
525
+ background: var(--glass);
526
+ border: 1px solid var(--border);
527
+ border-radius: var(--radius-xl);
528
+ backdrop-filter: blur(15px);
529
+ box-shadow: 0 20px 60px rgba(217, 79, 144, 0.35),
530
+ inset 0 0 40px rgba(217, 79, 144, 0.1);
531
+ max-width: 600px;
532
+ width: 100%;
533
+ max-height: 90vh;
534
+ overflow-y: auto;
535
+ transform: scale(0.9) translateY(20px);
536
+ transition: all var(--transition-normal);
537
+ position: relative;
538
+ z-index: var(--z-modal);
539
+ }
540
+
541
+ .modal-overlay.active .modal {
542
+ transform: scale(1) translateY(0);
543
+ }
544
+
545
+ .modal-header {
546
+ padding: var(--spacing-lg);
547
+ border-bottom: 1px solid var(--border);
548
+ display: flex;
549
+ align-items: center;
550
+ justify-content: space-between;
551
+ }
552
+
553
+ .modal-title {
554
+ font-size: 1.5rem;
555
+ font-weight: 700;
556
+ color: var(--text);
557
+ margin: 0;
558
+ }
559
+
560
+ .modal-close {
561
+ background: transparent;
562
+ border: none;
563
+ color: var(--text-secondary);
564
+ font-size: 1.5rem;
565
+ cursor: pointer;
566
+ padding: var(--spacing-xs);
567
+ line-height: 1;
568
+ transition: color var(--transition-fast);
569
+ width: 32px;
570
+ height: 32px;
571
+ display: flex;
572
+ align-items: center;
573
+ justify-content: center;
574
+ border-radius: var(--radius-md);
575
+ }
576
+
577
+ .modal-close:hover {
578
+ color: var(--accent);
579
+ background: rgba(217, 79, 144, 0.1);
580
+ }
581
+
582
+ .modal-body {
583
+ padding: var(--spacing-lg);
584
+ }
585
+
586
+ .modal-footer {
587
+ padding: var(--spacing-lg);
588
+ border-top: 1px solid var(--border);
589
+ display: flex;
590
+ gap: var(--spacing-md);
591
+ justify-content: flex-end;
592
+ }
593
+
594
+ /* ========== LOADING & PROGRESS ========== */
595
+
596
+ /* Spinner */
597
+ .spinner {
598
+ display: inline-block;
599
+ width: 40px;
600
+ height: 40px;
601
+ border: 3px solid rgba(217, 79, 144, 0.2);
602
+ border-top-color: var(--accent);
603
+ border-radius: 50%;
604
+ animation: spin 0.8s linear infinite;
605
+ }
606
+
607
+ .spinner.sm {
608
+ width: 20px;
609
+ height: 20px;
610
+ border-width: 2px;
611
+ }
612
+
613
+ .spinner.lg {
614
+ width: 60px;
615
+ height: 60px;
616
+ border-width: 4px;
617
+ }
618
+
619
+ @keyframes spin {
620
+ to { transform: rotate(360deg); }
621
+ }
622
+
623
+ /* Loading Bar */
624
+ .loading-bar {
625
+ width: 100%;
626
+ height: 4px;
627
+ background: var(--glass);
628
+ border-radius: var(--radius-sm);
629
+ overflow: hidden;
630
+ position: relative;
631
+ }
632
+
633
+ .loading-bar-fill {
634
+ height: 100%;
635
+ background: var(--gradient-accent);
636
+ border-radius: var(--radius-sm);
637
+ animation: loading 1.5s ease-in-out infinite;
638
+ position: relative;
639
+ }
640
+
641
+ .loading-bar-fill::after {
642
+ content: '';
643
+ position: absolute;
644
+ top: 0;
645
+ left: 0;
646
+ bottom: 0;
647
+ right: 0;
648
+ background: linear-gradient(
649
+ 90deg,
650
+ transparent,
651
+ rgba(255, 255, 255, 0.3),
652
+ transparent
653
+ );
654
+ animation: shimmer 1.5s infinite;
655
+ }
656
+
657
+ @keyframes loading {
658
+ 0% { width: 0%; }
659
+ 50% { width: 70%; }
660
+ 100% { width: 100%; }
661
+ }
662
+
663
+ @keyframes shimmer {
664
+ 0% { transform: translateX(-100%); }
665
+ 100% { transform: translateX(100%); }
666
+ }
667
+
668
+ /* Progress Bar */
669
+ .progress {
670
+ width: 100%;
671
+ height: 8px;
672
+ background: var(--glass);
673
+ border-radius: var(--radius-sm);
674
+ overflow: hidden;
675
+ }
676
+
677
+ .progress-bar {
678
+ height: 100%;
679
+ background: var(--gradient-accent);
680
+ border-radius: var(--radius-sm);
681
+ transition: width var(--transition-normal);
682
+ display: flex;
683
+ align-items: center;
684
+ justify-content: flex-end;
685
+ padding-right: var(--spacing-xs);
686
+ color: white;
687
+ font-size: 0.7rem;
688
+ font-weight: 600;
689
+ }
690
+
691
+ .progress-bar.success {
692
+ background: linear-gradient(135deg, #22c55e 0%, #16a34a 100%);
693
+ }
694
+
695
+ .progress-bar.warning {
696
+ background: linear-gradient(135deg, #eab308 0%, #ca8a04 100%);
697
+ }
698
+
699
+ .progress-bar.error {
700
+ background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);
701
+ }
702
+
703
+ /* ========== TOOLTIPS ========== */
704
+
705
+ .tooltip {
706
+ position: relative;
707
+ display: inline-block;
708
+ }
709
+
710
+ .tooltip-content {
711
+ position: absolute;
712
+ background: var(--glass-darker);
713
+ color: var(--text);
714
+ padding: var(--spacing-xs) var(--spacing-sm);
715
+ border-radius: var(--radius-md);
716
+ font-size: 0.875rem;
717
+ white-space: nowrap;
718
+ z-index: 1000;
719
+ opacity: 0;
720
+ visibility: hidden;
721
+ transform: translateY(-4px);
722
+ transition: all var(--transition-fast);
723
+ pointer-events: none;
724
+ border: 1px solid var(--border);
725
+ backdrop-filter: blur(10px);
726
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
727
+ }
728
+
729
+ .tooltip:hover .tooltip-content,
730
+ .tooltip.active .tooltip-content {
731
+ opacity: 1;
732
+ visibility: visible;
733
+ transform: translateY(0);
734
+ }
735
+
736
+ .tooltip-content.top {
737
+ bottom: 100%;
738
+ left: 50%;
739
+ transform: translateX(-50%) translateY(4px);
740
+ margin-bottom: var(--spacing-xs);
741
+ }
742
+
743
+ .tooltip:hover .tooltip-content.top,
744
+ .tooltip.active .tooltip-content.top {
745
+ transform: translateX(-50%) translateY(0);
746
+ }
747
+
748
+ .tooltip-content.bottom {
749
+ top: 100%;
750
+ left: 50%;
751
+ transform: translateX(-50%) translateY(-4px);
752
+ margin-top: var(--spacing-xs);
753
+ }
754
+
755
+ .tooltip:hover .tooltip-content.bottom,
756
+ .tooltip.active .tooltip-content.bottom {
757
+ transform: translateX(-50%) translateY(0);
758
+ }
759
+
760
+ .tooltip-content.left {
761
+ right: 100%;
762
+ top: 50%;
763
+ transform: translateY(-50%) translateX(4px);
764
+ margin-right: var(--spacing-xs);
765
+ }
766
+
767
+ .tooltip:hover .tooltip-content.left,
768
+ .tooltip.active .tooltip-content.left {
769
+ transform: translateY(-50%) translateX(0);
770
+ }
771
+
772
+ .tooltip-content.right {
773
+ left: 100%;
774
+ top: 50%;
775
+ transform: translateY(-50%) translateX(-4px);
776
+ margin-left: var(--spacing-xs);
777
+ }
778
+
779
+ .tooltip:hover .tooltip-content.right,
780
+ .tooltip.active .tooltip-content.right {
781
+ transform: translateY(-50%) translateX(0);
782
+ }
783
+
784
+ /* ========== NAVIGATION MENUS ========== */
785
+
786
+ /* Navbar - Already defined in theme.css, but adding explicit menu variants */
787
+
788
+ /* Mobile Menu Toggle */
789
+ .navbar-toggle {
790
+ display: none;
791
+ background: transparent;
792
+ border: 1px solid var(--border);
793
+ border-radius: var(--radius-md);
794
+ padding: var(--spacing-sm);
795
+ color: var(--text);
796
+ cursor: pointer;
797
+ transition: all var(--transition-fast);
798
+ }
799
+
800
+ .navbar-toggle:hover {
801
+ border-color: var(--accent);
802
+ background: rgba(217, 79, 144, 0.1);
803
+ }
804
+
805
+ .navbar-toggle .icon {
806
+ display: block;
807
+ width: 24px;
808
+ height: 24px;
809
+ position: relative;
810
+ }
811
+
812
+ .navbar-toggle .icon span {
813
+ display: block;
814
+ position: absolute;
815
+ height: 2px;
816
+ width: 100%;
817
+ background: currentColor;
818
+ border-radius: 2px;
819
+ transition: all var(--transition-fast);
820
+ }
821
+
822
+ .navbar-toggle .icon span:nth-child(1) { top: 4px; }
823
+ .navbar-toggle .icon span:nth-child(2) { top: 11px; }
824
+ .navbar-toggle .icon span:nth-child(3) { top: 18px; }
825
+
826
+ .navbar-toggle.active .icon span:nth-child(1) {
827
+ transform: rotate(45deg) translate(5px, 5px);
828
+ }
829
+
830
+ .navbar-toggle.active .icon span:nth-child(2) {
831
+ opacity: 0;
832
+ }
833
+
834
+ .navbar-toggle.active .icon span:nth-child(3) {
835
+ transform: rotate(-45deg) translate(7px, -7px);
836
+ }
837
+
838
+ /* Menu Item with Icon */
839
+ .navbar-links a i,
840
+ .navbar-links a .icon {
841
+ margin-right: var(--spacing-xs);
842
+ }
843
+
844
+ /* Nested Menu (Submenu) */
845
+ .navbar-links .has-submenu {
846
+ position: relative;
847
+ }
848
+
849
+ .navbar-links .submenu {
850
+ position: absolute;
851
+ top: 100%;
852
+ left: 0;
853
+ margin-top: var(--spacing-xs);
854
+ background: var(--glass);
855
+ border: 1px solid var(--border);
856
+ border-radius: var(--radius-md);
857
+ backdrop-filter: blur(15px);
858
+ box-shadow: 0 8px 32px rgba(217, 79, 144, 0.25);
859
+ min-width: 200px;
860
+ opacity: 0;
861
+ visibility: hidden;
862
+ transform: translateY(-8px);
863
+ transition: all var(--transition-fast);
864
+ z-index: 1000;
865
+ padding: var(--spacing-xs) 0;
866
+ }
867
+
868
+ .navbar-links .has-submenu:hover .submenu {
869
+ opacity: 1;
870
+ visibility: visible;
871
+ transform: translateY(0);
872
+ }
873
+
874
+ .navbar-links .submenu a {
875
+ display: block;
876
+ padding: var(--spacing-sm) var(--spacing-md);
877
+ color: var(--text);
878
+ text-decoration: none;
879
+ transition: all var(--transition-fast);
880
+ }
881
+
882
+ .navbar-links .submenu a:hover {
883
+ background: rgba(217, 79, 144, 0.1);
884
+ color: var(--accent);
885
+ }
886
+
887
+ /* ========== DROPDOWNS ========== */
888
+
889
+ .dropdown {
890
+ position: relative;
891
+ display: inline-block;
892
+ }
893
+
894
+ .dropdown-toggle {
895
+ background: var(--glass);
896
+ border: 1px solid var(--border);
897
+ border-radius: var(--radius-md);
898
+ padding: var(--spacing-sm) var(--spacing-md);
899
+ color: var(--text);
900
+ cursor: pointer;
901
+ transition: all var(--transition-fast);
902
+ display: flex;
903
+ align-items: center;
904
+ gap: var(--spacing-sm);
905
+ }
906
+
907
+ .dropdown-toggle:hover {
908
+ border-color: var(--border-light);
909
+ background: var(--glass-light);
910
+ }
911
+
912
+ .dropdown-toggle.active {
913
+ border-color: var(--accent);
914
+ }
915
+
916
+ .dropdown-menu {
917
+ position: absolute;
918
+ top: 100%;
919
+ left: 0;
920
+ margin-top: var(--spacing-xs);
921
+ background: var(--glass);
922
+ border: 1px solid var(--border);
923
+ border-radius: var(--radius-md);
924
+ backdrop-filter: blur(15px);
925
+ box-shadow: 0 8px 32px rgba(217, 79, 144, 0.25);
926
+ min-width: 200px;
927
+ opacity: 0;
928
+ visibility: hidden;
929
+ transform: translateY(-8px);
930
+ transition: all var(--transition-fast);
931
+ z-index: 1000;
932
+ overflow: hidden;
933
+ }
934
+
935
+ .dropdown-menu.active {
936
+ opacity: 1;
937
+ visibility: visible;
938
+ transform: translateY(0);
939
+ }
940
+
941
+ .dropdown-item {
942
+ display: block;
943
+ padding: var(--spacing-sm) var(--spacing-md);
944
+ color: var(--text);
945
+ text-decoration: none;
946
+ transition: all var(--transition-fast);
947
+ border: none;
948
+ background: transparent;
949
+ width: 100%;
950
+ text-align: left;
951
+ cursor: pointer;
952
+ }
953
+
954
+ .dropdown-item:hover {
955
+ background: rgba(217, 79, 144, 0.1);
956
+ color: var(--accent);
957
+ }
958
+
959
+ .dropdown-item:first-child {
960
+ border-top-left-radius: var(--radius-md);
961
+ border-top-right-radius: var(--radius-md);
962
+ }
963
+
964
+ .dropdown-item:last-child {
965
+ border-bottom-left-radius: var(--radius-md);
966
+ border-bottom-right-radius: var(--radius-md);
967
+ }
968
+
969
+ .dropdown-divider {
970
+ height: 1px;
971
+ background: var(--border);
972
+ margin: var(--spacing-xs) 0;
973
+ }
974
+
975
+ /* ========== TABS ========== */
976
+
977
+ .tabs {
978
+ border-bottom: 2px solid var(--border);
979
+ display: flex;
980
+ gap: var(--spacing-md);
981
+ margin-bottom: var(--spacing-lg);
982
+ }
983
+
984
+ .tab {
985
+ padding: var(--spacing-md) var(--spacing-lg);
986
+ background: transparent;
987
+ border: none;
988
+ border-bottom: 2px solid transparent;
989
+ color: var(--text-secondary);
990
+ cursor: pointer;
991
+ font-weight: 500;
992
+ transition: all var(--transition-fast);
993
+ margin-bottom: -2px;
994
+ position: relative;
995
+ }
996
+
997
+ .tab:hover {
998
+ color: var(--text);
999
+ background: rgba(217, 79, 144, 0.05);
1000
+ }
1001
+
1002
+ .tab.active {
1003
+ color: var(--accent);
1004
+ border-bottom-color: var(--accent);
1005
+ }
1006
+
1007
+ .tab-content {
1008
+ display: none;
1009
+ }
1010
+
1011
+ .tab-content.active {
1012
+ display: block;
1013
+ animation: fadeIn var(--transition-normal);
1014
+ }
1015
+
1016
+ /* ========== TABLES ========== */
1017
+
1018
+ .table {
1019
+ width: 100%;
1020
+ border-collapse: collapse;
1021
+ background: var(--glass);
1022
+ border-radius: var(--radius-lg);
1023
+ overflow: hidden;
1024
+ }
1025
+
1026
+ .table th,
1027
+ .table td {
1028
+ padding: var(--spacing-md);
1029
+ text-align: left;
1030
+ border-bottom: 1px solid var(--border);
1031
+ }
1032
+
1033
+ .table th {
1034
+ background: rgba(217, 79, 144, 0.1);
1035
+ color: var(--accent);
1036
+ font-weight: 600;
1037
+ text-transform: uppercase;
1038
+ font-size: 0.875rem;
1039
+ letter-spacing: 0.5px;
1040
+ }
1041
+
1042
+ .table tbody tr:hover {
1043
+ background: rgba(217, 79, 144, 0.05);
1044
+ }
1045
+
1046
+ .table tbody tr:last-child td {
1047
+ border-bottom: none;
1048
+ }
1049
+
1050
+ .table-striped tbody tr:nth-child(even) {
1051
+ background: rgba(217, 79, 144, 0.03);
1052
+ }
1053
+
1054
+ .table-striped tbody tr:nth-child(even):hover {
1055
+ background: rgba(217, 79, 144, 0.08);
1056
+ }
1057
+
1058
+ /* ========== PAGINATION ========== */
1059
+
1060
+ .pagination {
1061
+ display: flex;
1062
+ gap: var(--spacing-xs);
1063
+ align-items: center;
1064
+ justify-content: center;
1065
+ flex-wrap: wrap;
1066
+ }
1067
+
1068
+ .page-item {
1069
+ list-style: none;
1070
+ }
1071
+
1072
+ .page-link {
1073
+ display: flex;
1074
+ align-items: center;
1075
+ justify-content: center;
1076
+ min-width: 40px;
1077
+ height: 40px;
1078
+ padding: var(--spacing-sm) var(--spacing-md);
1079
+ background: var(--glass);
1080
+ border: 1px solid var(--border);
1081
+ border-radius: var(--radius-md);
1082
+ color: var(--text);
1083
+ text-decoration: none;
1084
+ transition: all var(--transition-fast);
1085
+ cursor: pointer;
1086
+ }
1087
+
1088
+ .page-link:hover {
1089
+ border-color: var(--accent);
1090
+ background: rgba(217, 79, 144, 0.1);
1091
+ color: var(--accent);
1092
+ }
1093
+
1094
+ .page-item.active .page-link {
1095
+ background: var(--gradient-accent);
1096
+ border-color: var(--accent);
1097
+ color: white;
1098
+ }
1099
+
1100
+ .page-item.disabled .page-link {
1101
+ opacity: 0.5;
1102
+ cursor: not-allowed;
1103
+ pointer-events: none;
1104
+ }
1105
+
1106
+ /* ========== BREADCRUMBS ========== */
1107
+
1108
+ .breadcrumb {
1109
+ display: flex;
1110
+ align-items: center;
1111
+ gap: var(--spacing-sm);
1112
+ flex-wrap: wrap;
1113
+ padding: var(--spacing-md) 0;
1114
+ }
1115
+
1116
+ .breadcrumb-item {
1117
+ display: flex;
1118
+ align-items: center;
1119
+ gap: var(--spacing-sm);
1120
+ color: var(--text-secondary);
1121
+ font-size: 0.9rem;
1122
+ }
1123
+
1124
+ .breadcrumb-item:not(:last-child)::after {
1125
+ content: '/';
1126
+ color: var(--text-muted);
1127
+ margin-left: var(--spacing-sm);
1128
+ }
1129
+
1130
+ .breadcrumb-item a {
1131
+ color: var(--text-secondary);
1132
+ text-decoration: none;
1133
+ transition: color var(--transition-fast);
1134
+ }
1135
+
1136
+ .breadcrumb-item a:hover {
1137
+ color: var(--accent);
1138
+ }
1139
+
1140
+ .breadcrumb-item.active {
1141
+ color: var(--text);
1142
+ font-weight: 600;
1143
+ }
1144
+
1145
+ /* ========== LIST GROUPS ========== */
1146
+
1147
+ .list-group {
1148
+ background: var(--glass);
1149
+ border: 1px solid var(--border);
1150
+ border-radius: var(--radius-lg);
1151
+ overflow: hidden;
1152
+ }
1153
+
1154
+ .list-group-item {
1155
+ padding: var(--spacing-md);
1156
+ border-bottom: 1px solid var(--border);
1157
+ background: transparent;
1158
+ transition: all var(--transition-fast);
1159
+ }
1160
+
1161
+ .list-group-item:last-child {
1162
+ border-bottom: none;
1163
+ }
1164
+
1165
+ .list-group-item:hover {
1166
+ background: rgba(217, 79, 144, 0.05);
1167
+ }
1168
+
1169
+ .list-group-item.active {
1170
+ background: rgba(217, 79, 144, 0.15);
1171
+ color: var(--accent);
1172
+ font-weight: 600;
1173
+ }
1174
+
1175
+ .list-group-item.disabled {
1176
+ opacity: 0.5;
1177
+ cursor: not-allowed;
1178
+ }
1179
+
1180
+ /* ========== API DOCUMENTATION COMPONENTS ========== */
1181
+
1182
+ .api-endpoint {
1183
+ background: var(--glass);
1184
+ border: 1px solid var(--border);
1185
+ border-radius: var(--radius-lg);
1186
+ padding: var(--spacing-lg);
1187
+ margin-bottom: var(--spacing-lg);
1188
+ transition: all var(--transition-normal);
1189
+ }
1190
+
1191
+ .api-endpoint:hover {
1192
+ border-color: var(--border-light);
1193
+ box-shadow: 0 4px 12px rgba(217, 79, 144, 0.15);
1194
+ }
1195
+
1196
+ .api-method {
1197
+ display: inline-flex;
1198
+ align-items: center;
1199
+ gap: var(--spacing-xs);
1200
+ padding: var(--spacing-xs) var(--spacing-sm);
1201
+ border-radius: var(--radius-sm);
1202
+ font-size: 0.8rem;
1203
+ font-weight: 700;
1204
+ text-transform: uppercase;
1205
+ letter-spacing: 0.5px;
1206
+ margin-right: var(--spacing-md);
1207
+ }
1208
+
1209
+ .api-method.get {
1210
+ background: rgba(0, 102, 204, 0.15);
1211
+ color: #0066cc;
1212
+ border: 1px solid #0066cc;
1213
+ }
1214
+
1215
+ .api-method.post {
1216
+ background: rgba(34, 197, 94, 0.15);
1217
+ color: #22c55e;
1218
+ border: 1px solid #22c55e;
1219
+ }
1220
+
1221
+ .api-method.put {
1222
+ background: rgba(234, 179, 8, 0.15);
1223
+ color: #eab308;
1224
+ border: 1px solid #eab308;
1225
+ }
1226
+
1227
+ .api-method.delete {
1228
+ background: rgba(239, 68, 68, 0.15);
1229
+ color: #ef4444;
1230
+ border: 1px solid #ef4444;
1231
+ }
1232
+
1233
+ .api-method.patch {
1234
+ background: rgba(168, 85, 247, 0.15);
1235
+ color: #a855f7;
1236
+ border: 1px solid #a855f7;
1237
+ }
1238
+
1239
+ .api-path {
1240
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
1241
+ color: var(--text);
1242
+ font-size: 1rem;
1243
+ font-weight: 600;
1244
+ }
1245
+
1246
+ .api-description {
1247
+ color: var(--text-secondary);
1248
+ margin-top: var(--spacing-md);
1249
+ margin-bottom: var(--spacing-md);
1250
+ line-height: 1.6;
1251
+ }
1252
+
1253
+ .api-params {
1254
+ margin-top: var(--spacing-lg);
1255
+ }
1256
+
1257
+ .api-param {
1258
+ padding: var(--spacing-md);
1259
+ background: var(--glass-darker);
1260
+ border: 1px solid var(--border);
1261
+ border-radius: var(--radius-md);
1262
+ margin-bottom: var(--spacing-sm);
1263
+ }
1264
+
1265
+ .api-param-name {
1266
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
1267
+ color: var(--accent);
1268
+ font-weight: 600;
1269
+ margin-right: var(--spacing-sm);
1270
+ }
1271
+
1272
+ .api-param-type {
1273
+ color: var(--text-muted);
1274
+ font-size: 0.875rem;
1275
+ font-style: italic;
1276
+ }
1277
+
1278
+ .api-param-required {
1279
+ color: #ef4444;
1280
+ font-size: 0.75rem;
1281
+ font-weight: 600;
1282
+ margin-left: var(--spacing-xs);
1283
+ }
1284
+
1285
+ .api-param-description {
1286
+ color: var(--text-secondary);
1287
+ margin-top: var(--spacing-xs);
1288
+ font-size: 0.9rem;
1289
+ }
1290
+
1291
+ .api-response {
1292
+ margin-top: var(--spacing-lg);
1293
+ padding: var(--spacing-md);
1294
+ background: var(--glass-darker);
1295
+ border: 1px solid var(--border);
1296
+ border-radius: var(--radius-md);
1297
+ }
1298
+
1299
+ .api-response-title {
1300
+ color: var(--accent);
1301
+ font-weight: 600;
1302
+ margin-bottom: var(--spacing-sm);
1303
+ }
1304
+
1305
+ .api-response-code {
1306
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
1307
+ color: var(--text-secondary);
1308
+ font-size: 0.875rem;
1309
+ white-space: pre-wrap;
1310
+ overflow-x: auto;
1311
+ }
1312
+
1313
+ /* ========== BACKGROUND IMAGE UTILITIES ========== */
1314
+
1315
+ .bg-image {
1316
+ background-size: cover;
1317
+ background-position: center;
1318
+ background-repeat: no-repeat;
1319
+ position: relative;
1320
+ }
1321
+
1322
+ .bg-image::before {
1323
+ content: '';
1324
+ position: absolute;
1325
+ inset: 0;
1326
+ background: linear-gradient(
1327
+ 180deg,
1328
+ rgba(10, 10, 10, 0.8) 0%,
1329
+ rgba(10, 10, 10, 0.6) 50%,
1330
+ rgba(10, 10, 10, 0.9) 100%
1331
+ );
1332
+ z-index: 0;
1333
+ }
1334
+
1335
+ .bg-image > * {
1336
+ position: relative;
1337
+ z-index: 1;
1338
+ }
1339
+
1340
+ .bg-overlay {
1341
+ position: relative;
1342
+ }
1343
+
1344
+ .bg-overlay::before {
1345
+ content: '';
1346
+ position: absolute;
1347
+ inset: 0;
1348
+ background: rgba(10, 10, 10, 0.7);
1349
+ backdrop-filter: blur(2px);
1350
+ z-index: 0;
1351
+ }
1352
+
1353
+ .bg-overlay > * {
1354
+ position: relative;
1355
+ z-index: 1;
1356
+ }
1357
+
1358
+ .bg-overlay-light::before {
1359
+ background: rgba(10, 10, 10, 0.4);
1360
+ }
1361
+
1362
+ .bg-overlay-dark::before {
1363
+ background: rgba(10, 10, 10, 0.85);
1364
+ }
1365
+
1366
+ /* ========== RESPONSIVE ========== */
1367
+
1368
+ @media screen and (max-width: 768px) {
1369
+ .card {
1370
+ padding: 1.5rem;
1371
+ }
1372
+
1373
+ .btn {
1374
+ padding: 0.75rem 1.5rem;
1375
+ font-size: 0.9rem;
1376
+ }
1377
+
1378
+ .btn.lg {
1379
+ padding: 0.875rem 1.75rem;
1380
+ }
1381
+
1382
+ .modal {
1383
+ margin: var(--spacing-md);
1384
+ max-width: calc(100% - 2rem);
1385
+ }
1386
+
1387
+ .dropdown-menu {
1388
+ left: auto;
1389
+ right: 0;
1390
+ }
1391
+
1392
+ .navbar-toggle {
1393
+ display: block;
1394
+ }
1395
+
1396
+ .navbar-links {
1397
+ position: absolute;
1398
+ top: 100%;
1399
+ left: 0;
1400
+ right: 0;
1401
+ background: var(--glass);
1402
+ border: 1px solid var(--border);
1403
+ border-radius: var(--radius-md);
1404
+ margin-top: var(--spacing-sm);
1405
+ padding: var(--spacing-md);
1406
+ flex-direction: column;
1407
+ display: none;
1408
+ }
1409
+
1410
+ .navbar-links.active {
1411
+ display: flex;
1412
+ }
1413
+
1414
+ .navbar-links .submenu {
1415
+ position: static;
1416
+ margin-top: 0;
1417
+ margin-left: var(--spacing-md);
1418
+ box-shadow: none;
1419
+ border: none;
1420
+ border-left: 1px solid var(--border);
1421
+ }
1422
+
1423
+ .tabs {
1424
+ flex-wrap: wrap;
1425
+ gap: var(--spacing-sm);
1426
+ }
1427
+
1428
+ .tab {
1429
+ padding: var(--spacing-sm) var(--spacing-md);
1430
+ font-size: 0.9rem;
1431
+ }
1432
+
1433
+ .table {
1434
+ font-size: 0.875rem;
1435
+ }
1436
+
1437
+ .table th,
1438
+ .table td {
1439
+ padding: var(--spacing-sm);
1440
+ }
1441
+ }